Flex/AIR

I’ve been spending the past few weeks learning Flex and Air. It’s so similar to WinForms that it’s more an exercise in learning the syntax differances than the big picture.

Generally I’m finding it really fun and easy and if only I had more time I’d be done with the alpha launch of my product.

Adobe has done an excellent job of supporting and promoting these technologies and I’m finding it significantly easier to learn Flex and Air than it was to learn C# when it first came out.

Computer Science Degree in a Blog Post

In anticipation of my MacBook Pro arriving I’ve been scouring the web for the software I’ll need to make it useful and usable. I’ve used SFTPDrive for a while on my Windows boxes and when Magnetk came out with ExpanDrive I bought before I even got the MBP.

I love reading blogs of other developers and the really good developers always have highly informative postings. As someone charged with developing plug-ins for Excel to work around firm imposed constraints and the shortcomings of Excel I’m highly interested in finding better ways of dealing with VB6 and its lack of robustness.

In the latest post on the Magnetk blog they make a good case for circumventing WIN32 and using a high level, cross platform language like Python because it’s fun AND it makes good business sense.

As a person who hires developers and contractors I’d like to recommend blog reading as a requirement to obtain a Computer Science degree. Coding in a vacuum and without exposure to the realities of business have given us decades of craptastic solutions to basic business needs (64K line limit in Excel anybody?).

A Day of Frustrating Software Usage

Last night I purchased a product to convert a ton of .xls files to .txt files. It mostly worked but even though I could change the delimiter from a comma to a tab, I still couldn’t save the files as .txt files. Kinda retarded but the developer who sells the product was quick to add the option. I was super impressed until I wasn’t able to convert about half my files due to a pointer operation error. The developer said he was able to convert them and left it at that. WTF?

Second on the list of complaints is the need for a decent omni-editor on WinDoze. I’ve used TextPad forever. It’s rock solid but pretty basic. How about some code folding or keyboard commands or something better than the less than useful workspaces?

I’ve tried and am currently in hate with e-text editor. It really really wants to be good but the lack of bookmarks, consistent bug regression (CTRL + SHIFT + T is supposed to open a “go to file” dialogue but closes the editor every other release), bundle wackiness and lack of bracket matching is dragging me down. On the plus side Textmate bundles do rock and some of the keyboard commands are very useful. I hope this thing gets more stable as time goes on.

I’ve even payed (well my firm did) for Komodo IDE but it spikes my CPU to nearly 100% every time I add a tab in my 18,850 line XML document or 2,400 line Perl script rendering it nearly useless for day to day use.

I’m seriously considering switching to VIM on the desktop. I’ve played with it a bit on my laptop and it seems good to excellent with a steep learning curve.

The best application I’ve used all day was donation ware called RenameMaster.

I can’t wait until my MacBook Pro gets here so I can have some salvation at the end of the day and use Textmate.

PyCon Tutorial Day

After a long day of travel (it took nearly 90 minutes to get from O’Hare to the Westin in downtown Chicago after a 3.5 hour flight) and not much sleep I’m glad to report in from PyCon 2008.

I’m tired but excited to be in the last of three informative tutorials at PyCon 2008.

I’m still on the fence about my choice of first tutorial. I did the Python 101 which didn’t really teach me much new. I’ve learned most of the hard lessons already. I was torn between that class and the Introduction to SQLAlchemy. I’ve always pretty much hated SQL even though I’m fairly proficient at it. The idea of using something simpler to do Adjacency List Relationships is enticing even though I’m sure there’s a relatively steep learning curve. I’m scheduled to check out “Database development with Jython, SQLAlchemy, and Hibernate” tomorrow even though I have no intention of trying to use either Jython or Hibernate.

The Django Tutorial that Jacob was great. I knew much of what he went over but the opportunity to ask him about how Django deals with linking tables (Many-to-many relationships via an intermediary table) was worth the trip alone. I’ve spent hours digging for solutions to solved problems while learning Django.

As I type I’m digesting four huge pieces of pizza and waiting for Jacob, Adrian and James to start the Code Lab.

A few quick observations before the code lab starts:

1) The WiFi network has been spotty at best. The one absolute requirement for any software conference is working WiFi. Apparently the issues have been caused by people accidentally setting up ad hoc networks.
2) The food is edible but pretty heavy. Some lighter options for dinner may be helpful.

I just heard that they’re calling us up there to get based on while they deal with our code.

Django Code Lab == American Idol
Jacob == Randy
Adrian == Paula
James == Simon

UPDATE:

Jacob posted the slides at http://toys.jacobian.org/presentations/2008/pycon/codelab/. I’m sure they’d be more valuable in context so I’ll try to find the video of the session and add it up here.

One of the most interesting things I took from the session is a really good link which explains Entity Attribute Value modelling. I’ve done this before but only muddled through it. This well documented Wikipedia article should help many people with more complex modelling. http://en.wikipedia.org/wiki/Entity-Attribute-Value_model Thanks Adrian

PyCon Soul

So I got my employer to pay for PyCon. I’d have gone anyway but going on someone else’s dime only sweetens the deal.

What I’m most looking forward to (other than not munging stock trade data in Perl all day) is the Django Code Lab. It’s on Thursday before the official start of the conference. It’s pretty uncommon to be able to have one to one interaction with the developers of any major piece of software much less something as broad reaching and widely adopted as Django. I’m pretty sure DHH isn’t doing this sort of thing at the RailsConf.

It’s this kind of flat organization structure and lack of rock star attitude that drew me to Django in the first place.

Thanks to Jacob Kaplan-Moss, Adrian Holovaty and James Bennett for doing this.

I’m Knackered and other Words to Live By from the Geek Who Can Speak

Weeks of burning the candle at both ends have finally caught up with me. I’m just BEAT. That said, I still have enough energy to belt out one more rant before I go under the covers with my wife and one or two dogs.

1) Every website with sequential pages should have a keyboard shortcut to navigate the pages. A really good example of this is Wordpress. I should be able to hit “n” to go to the next article or “p” to go to the previous article. CTRL + T should take me to the top of the listings and g + h should take me to the root of the site. In this day and age that’s not too hard to accomplish. Google Reader does it pretty well. Other sites do some subset of this sort of keystroke navigation. Most if not all desktop applications have been doing this for years. If enterprise is ever to take a liking to web applications this sort of basic functionality needs to be the standard, not the exception.

2) Macros!!! OK, so I know it’s a HUGE security risk to enable some sort of macro language for web applications but again I think that web applications will eventually need to add this functionality to compete with desktop applications. How hard would it be to include some version of Selenium into basic MS Office-like applications to give them the added boost that macros on the desktop affords power users.

3) And then there was true compatibility… Yesterday I tried to upload several long and heavily formated MS-Word documents to Google Documents. Most of the pictures, table and formatting were lost. I figured (as I always do) I did something wrong so I uploaded them again. Same shitty import. These documents had boxes, pictures and some styling attached. If Almighty Google can’t get this working then I see no long term hope for web applications replacing desktop applications. To me that’s a sad, sad thing to ponder.

Usually I’m about a month late in posting my rants. By the time I blog about my peeves, Google or someone has already addressed it. Apparently this time I’m not so far behind the demand curve with my rantings.

NOT EXISTS != EXCEPT

Postgres question: Why do these two queries produce such different results?

SELECT certificate_number FROM businesses EXCEPT SELECT businesses_import.certificate_number FROM businesses, businesses_import WHERE businesses.certificate_number = businesses_import.certificate_number

SELECT certificate_number FROM businesses WHERE NOT EXISTS (SELECT businesses_import.certificate_number FROM businesses, businesses_import WHERE businesses.certificate_number = businesses_import.certificate_number)

And suddenly, Dash is updated

My Ego at Work
As if by magic, no sooner did I post that I was pissed off at Dash Command than they posted an update.

The list of enhancements is available at http://www.trydash.com/home/updates/dash-command-version-095/

Regression Testing Needed
I’ve downloaded and installed and the very first thing I’ve noticed is that I cannot re-assign the hotkey that I had in a previous version which was the windows key + space. I get the following error:

Warning
Win+Space couldn’t be assigned to a hotkey.

I had this issue a few revisions ago. It went away with the very buggy version .94x but apparently it’s back.

Dash does have more system keywords like “task manager” than Launchy so that’s a plus for Dash.

Since both Dash and Launchy allow you to add keywords I’m less interested in the built in stuff than the stability and speed. I’ll keep testing both for a bit and add comments here.

First two resolutions for 2008

These are two quick resolutions I’m implementing before the first day of the year is over:

1) Get rid of as many Microsoft products as possible
2) Get rid of any and all applications that only sorta work but need some compromising (see #1 above for the theme)

So, starting right off, I’m uninstalling Dash Command and re-installing Launchy 2.0, installing EverNote to replace OneNote, uninstalling Windows Desktop Search and re-installing Google Desktop search.

I’m pissed off at Dash Command which hasn’t fixed any bugs in months even after I paid them. What can I say, I’m a sucker for anything that may improve my computing life if it’s under $40. I paid, I installed and I was disappointed repeatedly.

I’ve had OneNote on my computer since it was in Beta. But as far as I’m concerned, if I have to install Microsoft’s shitty desktop search to in order to dig through my OneNote notebooks. Windows desktop search is utter crap compared to Google desktop search so OneNote is being phased out in favor of a JotSpot wiki for personal notes and items and EverNote for work items. Eventually I’ll make a decision on one or the other system until I switch to a mac at which time I’ll probably re-evaluate.

Happy New Year!

Innaugural Usability Hall of Shame Entries

Bluehour Restaurant Home PageBluehour Restaurant is a flash based site which presents the requirements of using its site before it displays any content. The content is sparse and the link to “Enter (the) website takes you to an 800 x 600 flash site with sound. The links to things you may consider interesting like, say, the menu are grayed out and should you find the link you’re then required to download a PDF of the menu. Very annoying.

Pure Witless1The gym I go to, Pure Fitness, is also on my list of unusable sites. It’s another flash based site with little to no useful information Try finding the hours of operation or for a real taste of patchwork web design go the classes page and enjoy the consistent look and feel.

Pure Mess

I don’t know about you but I’m strongly considering sending these companies a copy of either Don’t Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition or User Interface Design for Programmers