Tuesday, July 31, 2007
Magik Dialog Designer now available
This tool essentially lets you create GUIs in SWAF using drag-and-drop and then creates all the relevant Magik code (including module structures and XML files) to include that GUI in your product. It also stubs out any of the action methods associated with buttons.
For now you will have to browse the Magik Components source code tree yourself and find the module. You can follow the CVS connection instructions to setup CVS on your machine to check out the latest Magik Components code. If you are not interested in installing CVS you could e-mail Graham at graham [at] ifactorconsulting [dot] com and ask him for the Dialog Designer zip file. Tell him Alfred sent you :)
(The module should eventually make its way into the Download Magik Components section.)
Since our time together at Navigant/Smallworld/GE, I have always been a fan of Graham and his creative innovations with Magik. In my opinion, this Magik Dialog Designer is one of his greatest Magik achievements. Although his Raster Calculator was pretty cool too. But I ramble on... so please go download the Dialog Designer yourself and have fun.
Tuesday, May 1, 2007
Magik Dialog Designer
Under the heading of “cool and useful Magik stuff”…
I recently had the opportunity to meet with a friend of mine who showed me his latest creation -- Dialog Designer
It is a tool that allows you to graphically layout your new Magik GUI with many of the commonly-used widgets, menubar, statusbar, and docks. Once you have layed out the GUI graphically and applied appropriate properties to the components, the Dialog Designer will stub out all the required Magik files, classes, methods, shared constants and XML config/gui files and place them in a new module directory structure.
While it will not write the Magik behaviour behind the widgets – you still need to write Magik code that does something when the button is clicked – it goes a very long way to building your :build_gui() method for you. And the nice thing is that tricky tasks like resizing rowcols or other widgets is now done automatically for you.
As a long-time Magik developer, I have never been too excited about GUI design because it can be a bit complicated (and time consuming) in Magik. Using the Dialog Designer will make the GUI design considerably easier and definitely save you a number of hours per GUI in development time.
The company that my friend works for has said that they will release the Dialog Designer to the SourceForge MagikComponents community. Until they have done that, I will keep the name of the developer and his company to myself. Stay tuned for a press release from them (hopefully soon) announcing the availability of this very cool and useful tool for Magik developers.
Tuesday, March 15, 2011
Dialog Designer now has a forum
If you are not familiar with Dialog Designer, you should try it out. It is a very slick tool that lets you build GUIs in Magik with a drag-and-drop interface. All the difficult GUI generation code is stubbed out for you and you can focus on building the engine/database behavior.
You can read sworldwatch blog posts about Dialog Designer here.
And it is open-sourced by iFactor Consulting so you have free access to the product! You can read more on the product page here.
Tuesday, October 23, 2007
Dialog Designer v1.3 available
This version has the following additional features
- added style selection widget (place a gui element for selecting a style)
- removed dependency on the path_select plugin
- added file/directory selection widget (place a button that launches the file/directory selection dialog)
- added plugin widget (embed an action from some other plugin or an entire other plugin)
- added auto-generation of supplementary gui/framework & plugin files so developers can expand/customize produced GUI functionality in a place that the Dialog Designer won’t overwrite if the GUI layout is tweaked and re-built.
- added FAQ section to the main documentation
- de_de messages updated
- fr_ca messages created
Saturday, January 2, 2010
Dialog Designer 2.0 now available
Friday, September 14, 2012
@iFactor Consulting Presents Money-Saving Solutions at #SWUC
When You Leave Two Magik Hacks In Charge of the @ifactor #swuc Booth, This is What You Get
The GE Energy Americas Smart Grid Software Summit (formerly known as Smallworld Americas User Conference) is starting on Monday and I wanted to write a bit about what my company (iFactor Consulting) will be doing there. Graham Garlick and I will be staffing the booth with a cameo appearance by Brad Sileo.
Come see us at the booth and talk to us about all your Smart Grid questions. We might even be able to talk about Smallworld while we are at it :)
Here are some of the cool things we want to share with you...
Dialog Designer (DD)
Dialog Designer is the best Magik GUI design tool in the world! No one, not even GE, offers a tool like this that allows you to create SWAF-based GUIs with drag-n-drop ease. Each year Graham Garlick adds new functionality and language support so if you have not seen the product recently, please ask for a demo and we can show you the latest and greatest. And did I mention that it's free, courtesy of iFactor Consulting?
You can find out more about Dialog Designer here. You can even download your free copy from that site.
Vector Rubber Sheeter (VRS)
When you are ready to conflate your data to match a more accurate landbase (see WMC below), you will need to start some kind of data conflation program. Come talk to Graham about how VRS can automate some of the tedious control point creation tasks you have to do using your current conflation tool. With VRS, your conflation work flow is also improved with support for merging conflated data in different alternatives. Graham's the man to see about your data conflation needs.
You can find out more about VRS here.
Version Viewer (VV)
If you are a Smallworld administrator or super user, you will often need to know what is different between alternatives and then based on that you might want to copy data between alternatives. Version Viewer (VV) is a great graphical tool that every Smallworld super user should have in her toolkit to take full advantage of Smallworld's powerful core difference stream functionality.
Use Version Viewer to:
- find out exactly what database changes your batch scripts are making
- review work done by users in an alternative
- recover "lost" data that has been deleted in an alternative but still exists behind an older alternative or checkpoint.
Google Charts API Magik client
The Google Charts API is a rich web-based API that allows you to create professional-looking charts, tables and other visualizations. With our Google Charts API Magik product, you can now embed those charts directly in a Magik canvas. But this is not just a simple image copy/paste. These charts in Magik also have hotspots enabled that allow a user to click on the various chart components and drill down to other detailed charts. It is some very cool Magik and you should take the time to see it at our booth this year.
Web Maps Connector (WMC)
WMC presents web-based tile and static maps as graphics layers in Smallworld. Our list of supported formats and functionality is growing every year.
- World Wide
- Bing Maps
- Google Maps
- OpenStreetMap Mapnik rendered tiles
- MapQuest Open data
- WeatherBug Lightning Strikes
- ESRI ArcGIS Data Appliance
- if your organization has an ArcGIS Data Appliance server within the firewall, we can configure WMC to let you view that data in a Smallworld client.
- South Korea
- Naver Maps
- Thailand
- Longdo Maps
- Japan
- NTT Geospace Imagery and Road Tile
- USA
- Digital Map Products showing lot parcel data nation-wide
- WeatherBug Doppler Radar with 3 hour history
We have customers that use the aerial/satellite imagery to digitize buildings and other facilities into their database.
We have customers that have permanently turned off their legacy landbase datasets and are using WMC exclusively to provide their land basemap.
WMC is product-agnostic and works equally well in PowerOn, PNI, Electric/Gas Office and all manner of custom CST environments.
Let WMC get you out of the landbase maintenance business and let you focus on your company's core business.
You can find out more about Web Maps Connector here.
Linking Smallworld With a True "Killer App"
At this conference you will likely see more than a few applications that show Smallworld maps on mobile devices. I think that is very cool. But what we would like to show you is how you can integrate your Smallworld data and processes with two of the all-time killer apps already out there: voice and SMS. It doesn't sound nearly as exciting as mobile apps, but when you have finished our interactive demo, you will see these true "killer apps" in a new light.
Scenario#1. Your field technician wants to attach a picture or a voice recording to an existing work order or service point in Smallworld, we can show you how he can do it without having any special software on his phone. And the image and voice attachments are available to the back-office Smallworld users within seconds of the technician sending them from the field. All without any complex configurations on your part.
Scenario#2. You have a storm situation and many out-of-state crews have arrived to help you restore power. You cannot deploy mobile data terminals to these crews but still want some type of automated tracking of crew statuses. See our demo for how you can use some paper and SMS/Voice-based technologies coupled with Smallworld applications to get the visiting crews hooked into your automated work flow with minimal cost.
Scenario#3. Your utility hasn't introduced automated meter reading yet and you are looking for a way to reduce meter reading costs. See our demo that shows how you can engage your customers using SMS text messages and have them assist you with some of the meter reads. Bring your phone with you and be part of the SMS/Voice demo.
HTML Rendering and JavaScript Support in Magik
Magik does not support HTML rendering or JavaScript support... but iFactor does! Based on some crazy skunk works R&D we are doing at iFactor Consulting, we can now show you an early release of our yet-to-be-named HTML rendering and JavaScript engine framework for Magik. Many years from now you can tell your children that you saw it here first!
FME Server Lite
I put this in here to see if the FME folks would read this far in the article :) There is no FME Server Lite. But I have been starting to dabble with node.js and various queuing technologies and it seems to me that it could be coupled with an existing FME Desktop session to give you a kind of poor man's FME Server. Come by to talk about new technologies and how you can use them to improve your Smallworld experience.
OK, now that I've written this post, I realize we have a ton of stuff to show you. So come early to get the best seats. And if you spend the entire day at our booth, that's OK.
Remember to tag your conference-related tweets with #swuc. I think Mark at FCSI might be offering some incentives for the person with the most #swuc tweets. I'm thinking we can exceed the 10+ tweets that were generated at last year's conference :)
Monday, October 19, 2009
Version Viewer
What could you use the Version Viewer for?
- recovering attributes/records from data that is available in an older view
- analysing your data BEFORE a merge/post. You could build this into a pre-emptive conflict avoidance process
- selective merge/post by attribute
- data quality checks to see the who/what/when of changes in your data. Very helpful for investigating the inevitable question: "How/why did that data get changed and in what context were the changes made".
Graham also is responsible for the Dialog Designer. He used the Dialog Designer to build the complex Version Viewer GUI. As part of the Version Viewer demo, he can show you how you can dynamically change the GUI layout of that application using Dialog Designer.\
Wednesday, February 6, 2008
Dialog Designer v1.5 now available
Here are the release notes:
- updated Documentation file.
- fixed issue with hanging plugin action selection gui when a raster image was missing in CORE.
- fixed issue with non-refresh of Magik/XML code when first going to the Magik/XML tab
- added input mechanism to add extra slots to dialog Base Class
- added input mechanism for setting pragma statement code settings
- added input mechanism for adding additional slots to the base gui class
- added input mechanism for setting the package for the dialog
- es_es language edited (thank you Alejandro CaƱas [alexcaas at gmail dot com])
- added unit_text_item widget
- fixed :select_directory (open_file_dir widget) incompatibility with SW4.
- fixed internationalization issue with the :top_dock,:bottom_dock (etc.) messages
- added date_time_input widget
Friday, October 23, 2009
Dialog Designer 1.9.5 now available

Here are the release notes for 1.9.5:
Tuesday, November 11, 2008
Dialog Designer v1.8 now available
- autosave a copy of current XML dialog description to the generated module.
- dt_dt language added (thank you Frank Wolff @ GE)
- added button to refresh of icon list, to capture newly loaded modules
- expose the double_click_notifier attribute for tabular_list and tree_list
Friday, December 14, 2007
Dialog Designer v1.4 available
This version has the following additional features
- bug fixes (tabular_list, element_editor, tree_list)
- modified button_item icons/cursor
- fr_ca language added (internet translation ... corrections likely)
- es_es language added (internet translation ... corrections likely)
- pt_pt language added (internet translation ... corrections likely)
- ko_kr language added (thank you Heewook Park [heewook.park@ge.com] )
Friday, May 16, 2008
Dialog Designer v1.6 now available
Here are the release notes:
- added outlookbar widget
- support progress_bar pane type in statusbar
- support dropdown image button groups within a toolbar
- click on rendered menubar or statusbar to jump to its editing tab
Wednesday, March 3, 2010
Smallworld EMEAI 2010
My main purpose here this week is to demonstrate the Web Maps Connector (the iFactor Consulting product that lets you view Bing Maps as a dataset in your Smallworld applications). I am fortunate to be hosted by the team from Realworld. You can see my demos at the Realworld booth starting at the reception this evening.
I also have interests in Smallworld/FME integration, visualization techniques, and any cool Magik code my colleague Graham has put together. (If you are a Magik GUI developer and you haven't tried his Dialog Designer you owe it to yourself to see a demo). Please stop by the booth and introduce yourself. I am very excited about being at this conference and look forward to meeting many of you.
Sunday, May 8, 2011
At Smallworld EMEAI 2011
I will be based at the Realworld booth and will be demonstrating some new Web Maps Connector features. Please come by to see how you can integrate Bing, OpenStreetMap, Google, DigitalGlobe, MapQuest, ArcGIS and various other region-specific data providers directly into your Smallworld environment.
If that doesn't interest you, my colleague Graham Garlick (author of the internationally popular Dialog Designer) has loaded me up with some of his latest cool products so ask about those and I can show you examples of how we are pushing Magik to the edge.
Finally, to all you tweeters out there, please tweet conference events on the hashtag #swuc.
Bis Dienstag!
Monday, September 8, 2008
Smallworld 2008 Americas Users Conference
Thursday, August 2, 2007
Magik HTTP requests; Open Source Magik; Reading RSS
I wanted to highlight one of the cool components that I have found in this package. The module is called :mclib_http_interface. It provides a Magik interface to making HTTP requests to a server and then return the results back to you as a simple_xml_document. You can then use the API on simple_xml_document to parse information out.
To highlight the ease and power of this capability, I quickly hacked together some code that allows you to connect to the Yahoo!Weather RSS feed and get a weather forecast for your location. This is a simple example and you can clearly extend it to your heart's content.
Download the Magik Components product and register the accompanying product.def file in your curent image.
Load the :mclib_http_interface module (eg., sw_module_manager.load_module(:mclib_http_interface)
Now run the following block of code. As written, it will give you a weather forecast for Boulder, CO, USA in degrees Celsius. The example also shows how you can glean lat/long information from a feed and convert it to a Magik coordinate.
_block
# see http://developer.yahoo.com/weather/ for more information
# about the Weather RSS feed
_constant BASE_URL << "http://weather.yahooapis.com/forecastrss"
_constant QUERY_CHAR << %?
_constant QUERY << "p=80305&u=c" # forecast for USA ZipCode 80305 in Celsius
_constant URL << write_string(BASE_URL,QUERY_CHAR,QUERY)
_local hr << mclib:http_request.new_for_url(_unset,_unset,URL)
_local response << hr.connect()
_local a_xml_doc << response.smart_result()
_local rss_channel << a_doc.top_element.element_matching_name(:channel)
_local item << rss_channel.element_matching_name(:item)
_local long << item.element_matching_name("geo:long").elements[1].as_number()
_local lat << item.element_matching_name("geo:lat").elements[1].as_number()
write()
write(item.element_matching_name(:title).elements[1]," at ",coordinate.new(long,lat))
_local forecast_attributes
_for a_forecast _over item.elements_matching_name("yweather:forecast")
_loop
forecast_attributes << a_forecast.attributes
write(forecast_attributes[:day]," (",forecast_attributes[:date],") ",forecast_attributes[:text]," low=",forecast_attributes[:low]," high=",forecast_attributes[:high]," ")
_endloop
_endblock
$
Incidentally, you can get more information about the Yahoo!Weather API at http://developer.yahoo.com/weather
Where I think this http_interface could come in really handy is for you to write GeoRSS parsers that would allow you to show location events on a Smallworld map (maybe as a SOM or a post_render_set). Have a look at Direction Magazine's Fun with GeoRSS article if you are interested in other ideas for interfacing with other data sources in real time from Smallworld.
Sunday, January 23, 2011
Temporal Imagery Comparison Technique
The imagery comparison technique was so compelling to me that I thought I would see if I could do it in Magik. My scenario was to use imagery available via Web Maps Connector to compare imagery supplied by Bing with imagery supplied by NearMap. What I came up with was a class called a canvas_comparer. It could be used to take two snapshots of the same canvas with different contents and then easily compare the two snapshots dynamically as sliding overlays.

