www.nickhodge.com

microsoft, munging and on being a mercurial iconoclastic professional geek.

Archive for the ‘programming’ Category

Practical Coding

without comments

Recently, in a meet­ing, someone stated that I had never been a pro­fes­sional pro­gram­mer. At the time I agreed, how­ever after some think­ing (aka: L’esprit_de_l’escalier) dis­agreed with that asses­ment. So, time to write some of the pro­jects I have com­pleted dur­ing many years in this industry.

To note: many of these sys­tems las­ted months through to years, and used tools at hand. The essence of Prac­tical Pro­gram­ming. All of these are writ­ten by myself, based on toolkits, SDKs and IDEs. Many no longer exist.

School sports day scor­ing sys­tem 1985. Mid 1985, writ­ten in Microsoft Basic for the Mac; this sys­tem recor­ded the win­ners and score for the annual sports day. I recall spend­ing about a week of after-school hours until 3am or so writ­ing this. I remem­ber this as the first pro­duc­tion sys­tem I wrote, that if it failed, I would look really silly. It worked on the day, and gen­er­ated the cor­rect prin­ted results.

Bespoke locked down museum dis­play sys­tem: writ­ten in late 1986, writ­ten in Microsoft Basic 2.0 on the Macin­tosh using floppy disk/text data files as source. Was locked down envir­on­ment per­mit­ting users to select a coun­try they ori­gin­ated from, and detailed the his­tory of migra­tion from that coun­try to South Aus­tralia. Was still oper­a­tional in the South Aus­tralian Migra­tion Museum 3 years later.

Bespoke, locked down com­pet­i­tion sys­tem: writ­ten in early 1987, writ­ten in C on the Macin­tosh using a B-tree engine. Was locked down envir­on­ment per­mit­ting com­pet­i­tion entrants to type in their name and phone num­ber. The data was stored to disk. Com­pet­i­tion win­ner picked randomly.

Chauf­feur: writ­ten dur­ing late 1987, using Hyper­card and C-written external func­tions for serial port access: a visual front-end to Com­puServe email and for­ums. Writ­ten for “Tricks of the Hyper­Talk Mas­ters” (Waite Group, 1988). I can­not recall the total num­ber of lines of code; it was essen­tially a clever state-based sys­tem that screen-scraped data from a serial con­nec­tion. Data was presen­ted visu­ally in Hypercard’s UI. I miss Hyper­Talk (Hypercard’s language)

Vari­ous Proof of Con­cepts: in 1990–1992, Apple pro­moted Hyper­Card as a visual front end for com­plex data. Using Apple’s DAL (Data Access Lan­guage) to Tan­dem, DEC and other SQL data sources. These PoC’s assisted Apple in win­ning enter­prise cus­tom­ers in Aus­tralia. I installed an alpha of Apple’s A/UX DAL con­nect­ing to an Ingres data­base. This base sys­tem was used to demon­strate data-querying from a data-warehouse along with Mike Sey­fang. This is the birth of the Munge Broth­ers.

Unix-based, SNMP AppleTalk mon­itor: in 1992: based on a col­lec­tion of com­plex bsh scripts, cron tasks and open source com­mand­line IETF SNMP tools. Does Any­one remem­ber ASN.1? At one stage I was sure I was the only one in South Aus­tralia who actu­ally read and used ASN.1 as SNMP was a reas­on­ably new pro­tocol. Execut­ing on a SunOS work­sta­tion, this sys­tem was used to mon­itor AppleTalk routers at a large cus­tomer, as a part of a migra­tion of their infra­struc­ture. Also mon­itored via TFTP booting/reboots for uptime man­age­ment. Email of out­ages and reports for net­work management.

Sher­lock: in late 1993: Unix-based, 3-tier, Front-end to an Oracle ERP. I was the primary per­son man­aging a single user to SunOS/Oracle/multi-user ERP. Using VICOM Pro, I cre­ated a front-end that com­mu­nic­ated via Tel­net pro­to­cols to SQL-Plus scripts on the server. Dis­played invoices, orders, pri­cing and other details. Cre­ate “alerts” on stock orders/shipments, plus per­mit­ted bar­code scan­ning of invent­ory. Cron tasks for the man­age­ment of man­age­ment report­ing. SQL-Plus Profit & Loss and Bal­ance Sheet gen­er­a­tion (the inbuilt tools sucked, so I wrote my own). Used in pro­duc­tion for at least 2 years. At the same time, Adam Stein­hardt wrote Bed­rock in File­Maker: quot­ing and con­tact man­age­ment sys­tem that was the basis for Next­Byte. Cre­ated export tools for integ­ra­tion. I miss VICOM’s lan­guage and devel­op­ment tools. Hello Brian Mor­ris and Darko Roje!

Net­work Mon­it­or­ing Tools: in 1994, vari­ous cus­tom­ers were want­ing to meas­ure end-user net­work per­form­ance of ter­minal based sys­tems. Wrote a front end in VICOM Pro to meas­ure screen-refresh times. Applic­a­tion was dis­trib­uted around the net­work and repor­ted back to a cent­ral server response times. Was used to con­tract com­pli­ance in large tenders, and to track down applic­a­tion per­form­ance bot­tle­necks. Also cre­ated front ends for login sys­tems for cus­tom­ers such as Com­care in Can­berra using VICOM Pro.

Web Pub­lish­ing Sys­tem: in 1996, for Fairfax@Atlanta web site. User­land Fron­tier based, with File­Maker backend. Run­ning on MacOS, get­ting data via FTP from Fairfax’s edit­or­ial sys­tem. Fron­tier cre­ated static pages from dynamic con­tent. Data edit­ing mul­tiple user in File­Maker. Static pages FTP’d to web server. 300,000 pages views a day in 1996.

sid­e­note: Dur­ing 1998, I trained as a WebOb­jects developer in Cuper­tino under the former NeXT train­ers. This involved form­ally learn­ing Java; and an intro­duc­tion to the Enter­prise Objects Frame­work. EOF is an early example of a relational-object map­per. Beauty before its time.

Adobe/Scripting Proof of Con­cepts: from 1999 to 2004, using a vari­ety of tools from Visual Basic, to AppleScript and Adobe InDes­ign and XMP toolkits to gen­er­ate con­tent man­age­ment and auto­ma­tion scen­arios. Used in selling “concepts” and ulti­mately selling products. Script­ing improve­ments in InDes­ign 1.5 and later from cus­tomer and my input dir­ect to product team. Still love InDes­ign. PoC’s are tough as they have to work a hand­ful of times but in a crit­ical demonstration.

A part of this bundle of code Included a data­base to SVG ren­der­ing sys­tem deployed in 2001 to demon­strate SVG. Before it was HTML5/Web cool. Adobe and the W3C really dropped the SVG ball in an attempt to out-run Macromedia’s Flash on mobile devices. What a waste of good resources and talent.

Mun­gen­eten­gine: 2000–2006: PHP, MySQL con­tent man­age­ment sys­tem; about 3000 lines of code. Written/Tested on Win­dows and deployed on Linux. Based on the Fairfax@Atlanta exper­i­ence, but using open source tools and pub­lic deploy­ment. Cre­ated vari­ous con­nec­tion points (XML-RPC and SOAP) with visual inter­faces in Python amongst oth­ers. Whilst the backend was for per­sonal use and not pub­lished, the code executed at least 3 mil­lion times whilst live. Parts of this engine still exist to redir­ect quer­ies from old search engine res­ults into Word­Press. Also cre­ated a small Word­Press plu­gin that assisted in transition.

The unerly­ing frame­work was used as the basis of 3 internal sys­tems cre­ated for Adobe. One of which was the basis of an MBA paper.

Dur­ing the family’s trip to Europe in 2004, I used a WxPy­thonSOAP based applic­a­tion to upload text and images to the mungenetengine.

Ran­dom Neil Finn Lyric Server: 2002-now, based on PHP, MySQL and SOAP. A very early, non-stock quote SOAP ser­vice on the inter­net and there­fore used in many places. Image manip­u­la­tion, and twitter-bots feed of the under­ly­ing system

Adobe-Internal Sales Reporting/CRM: 2004–2005: dur­ing my days as a Sales Man­ager, I could not res­ist the tempta­tion to cut some code. Two sys­tems were gen­er­ated: one in Microsoft Excel, SAP Busi­ness Ware­house and Mac­ros to cre­ate a one-page KPI sheet. Used daily as man­age­ment tool for 3 years. Added to this a CRM sys­tem that detailed part­ner rev­enue, con­tacts and email list/communication. This sys­tem was writ­ten in Python; spe­cific­ally Tur­boGears frame­work con­nec­ted to File­Maker, with some later addi­tions coded in Cold­fu­sion. This lat­ter sys­tem used a web front end.

In sum­mary, this account at least 13 sys­tems that ran in pro­duc­tion coded and tested by me. Now I have doc­u­mented them, I am ready armed for the next meet­ing where exper­i­ence is called out. You have been warned.

I think it’s time for more, right?

Written by Nick Hodge

January 22nd, 2009 at 3:11 pm

Posted in history,programming

Generating PDF via OpenXML, PowerShell…

with 2 comments

Col­league in crime, and fel­low Aus­sie (well, at least he’s nat­ur­al­ised now), Dave Glover has a post that crosses some old ter­rit­or­ies of mine.

Using Power­shell, .Net, OpenXML and some code that I barely under­stand because it’s not Python; he’s been able to gen­er­ate 60 to 70 doc­u­ments per second.

Link­ing it here as it inter­sects the Adobe / Microsoft world.

Written by Nick Hodge

June 28th, 2007 at 6:10 pm

More DLR

without comments

John Lam, why Dynamic Lan­guages from John Udell pod­cast:

express­ing my intent in the code.

Inter­est­ing inter­view between Tim Heuer and John Lam on Ruby as a part of the announce­ments yesterday.

The Ruby sup­port from Microsoft is more than just Sil­ver­light; it also crosses into the server and the cli­ent, out­side the browser.

21st Cen­tury Small­Talk: Iron­Py­thon 2.0 in a browser, per­form­ance and dynamic fun.

Written by Nick Hodge

May 2nd, 2007 at 12:15 pm

Second Channel 9 Interview: Compiler Geeks

with one comment

I loved doing this inter­view: two rock stars in the same room! Thanks to Joel Pobar and John Gough for their time last month.

John Gough is a world-respected expert on Com­pilers — a sor­cerer if you will; and Joel Pobar is one of his “apprentices” who went on to work on the .NET team in Redmond.

http://channel9.msdn.com/Showpost.aspx?postid=299901

If you are into com­put­ing his­tory, com­pilers, mul­tiple pro­cessors and other deep tech­nical things: you’ll love this interview.

If you have geek that have a story that needs to be told: I’m there. Any sug­ges­tions? All I need is an email!

Written by Nick Hodge

April 12th, 2007 at 9:31 am

Tired of the same old languages?

without comments

Tired of the same-old pro­gram­ming languages?

Sick of the Ruby vs Python, C# vs the world, dynamic vs static lan­guage arguments?

Time to learn a new lan­guage for the fans of Björk Guðmundsdóttir: Fjölnir

And fans of the Vos­tok pro­gram: Glagol

Now for the battle: which is bet­ter for web applic­a­tion devel­op­ment, and do they have web frame­works? Fight.

Written by Nick Hodge

April 10th, 2007 at 5:58 pm

Watching the Language Wars

without comments

Today, at least in the US, it is Programmer’s Day.

Maybe it should be called “Inter­na­tional Pro­gram­ming Lan­guage Peace Day”. The level of advocacy for vari­ous pro­gram­ming lan­guages reaches rhet­or­ical heights last seen dur­ing the one of the not-so-successful 18th cen­tury revolutions.

When not speak­ing to humans, other pro­gram­mers to read­ing the latest advocacy on their lan­guage of choice: pro­gram­mers stitch together the wild thoughts of oth­ers to munge data into inform­a­tion.

Pro­gram­mers are the people who use com­puter lan­guages, in their vari­ous forms, to get com­puters to do cool things. From bliken­lights to cool online maps: there are a pyr­amid of pro­gram­mers respons­ible for your com­puter exper­i­ence. A pro­gram­mer is behind the “ding” in the lift you used this morn­ing; and the soft­ware that val­id­ated your ticket on the bus ride to work.

The beauty of com­puter lan­guages is that they never seem to stag­nate: like mod­ern, spoken lan­guages: they evolve as the world changes. Except those that are aban­don­ware.

Microsoft has recently released my cur­rent favour­ite pro­gram­ming lan­guage, Python, as a CLR/.net lan­guage: Iron­Py­thon. This imple­ments Python as a dynamic lan­guage on the CLR engine.

C# is the lan­guage of imple­ment­a­tion for CLR, as is Sun’s Java is for the JVM. A# (Ada), B#, D# F# (OCaml), G# (Gen­er­at­ive lan­guage), J# (Jsharp), P# (Pro­log), L#. More sharps than Beeth­oven.

The lan­guage wars has returned to an old field: dynamic lan­guages. The grand-daddy of dynamic lan­guages, LISP, has received some recent pos­it­ive PR. One per­son, Paul Gra­ham, is the poster mil­lion­aire for LISP. Laz­arus of LISP.

This week, Sun Microsys­tems par­ried Microsoft’s Iron­Py­thon by hir­ing the team behind JRuby. The aim here is to imple­ment the Ruby dynamic lan­guage on the Java Vir­tual Machine (JVM). Some months ago, this team was able to get a Ruby on Rails work­ing on the JVM.

Whilst the big lan­guage guys battle it out, is Erlang the next Ruby, or is it just a vik­ing proto-language with the best non-pun name? The Erlang com­munity is start­ing to come out of their tele­phone exchanges.

No lan­guage has deemed to have arrived in the 21st Cen­tury until there is a web frame­work writ­ten around it. C# is ASP.NET, Python has Dyango, Ruby has Rails, Erlang has Jaws, Scheme has Magic… and so it goes on.

This broken thing called Javas­cript that has been reborn with AJAX, and is receiv­ing daily blood trans­fu­sions of new features.

All of these lan­guages just remind me of my per­sonal all­time favour­ite lan­guage love of my life: Hypercard’s Hyper­Talk. As Hyper­card is no longer sold, and “Clas­sic MacOS” is a battle to get going on my Mac­Book Pro — sadly it is a lan­guage as use­ful as Cornish.

So, for a short period of time it is back to one of HyperTalk’s chil­dren: Applescript. Bas­ketweav­ing for the mind.

Written by Nick Hodge

September 14th, 2006 at 8:47 am

Debugging the Spirit

without comments

Ima­gine debug­ging a sys­tem from a bazil­lion miles away? Flash RAM seems to be the root cause for the Spirit to go into mul­tiple rounds of rebooting.

Another rover on the ground, a stranger in a strange place.

Written by Nick Hodge

January 25th, 2004 at 12:00 am