Should I Be Excited Yet?

September 15th, 2005

I'm with Geek News - PDC has been a big build up for an average set of announcements.  I've got to stop reading Scoble's blog, he over hypes everything and then the actual announcements disappoint.  Here's Scoble's summary of the announcements:

  1. Office 12 demonstrated publicly for the first time. Tons of new features and new UI.
  2. Windows Vista features demonstrated publicly, including search integration, new performance enhancements, new sidebar.
  3. LINQ (Language INtegrated Query). Cool database stuff for .NET developers.
  4. Windows Presentation Foundation/E. "E" for everywhere.
  5. Start.com updates released.
  6. Atlas (our AJAX Web development toolkit) demoed for first time.
  7. Microsoft Max. A new photo sharing and display application.
  8. Digital Locker. A new place to find, try, and buy software.
  9. New sidebar and gadgets and new Microsoft gadget Site.
  10. Coming later today? Sparkle. A new way to build Windows applications.
  11. Coming later today? Lots of server stuff.
  12. Coming later today? More Office stuff.
  13. Coming later today? Workflow stuff.

All in all a pretty nice set of announcements but definitely nothing revolutionary.  There are a couple of things that could have been really excited but got slaughtered by the Microsoft, gotta maintain the monopoly policy.  In particular Windows Presentation Foundation/E - cool, cross platform support that includes all the major browser that's awesome.  Wait, what's that?  It's a subset?  So when I develop my application I have to have two versions - a Windows only with all the cool stuff version and a other suckers version.  That's great, for Microsoft at least.

It doesn't seem to have made Scoble's list but the MSN Messenger SDK could have been really cool, except that when you read the intro to the SDK you discover you have to get Microsoft approval to ship anything you develop, and it can't do anything similar to what the MSN message client already does.

Your MSN Messenger Activity must not contain any functionality that would normally be controlled by the MSN Messenger client. This includes (but is not limited to) the following items:

  • Instant messaging
  • File transfer (for example, digital photos or sound files)
  • Audio conversation capabilities
  • Control of a Web camera or use of a video conferencing session
  • Application sharing
  • Creation of a white board space

That's really supporting developers and encouraging them to play around with cool stuff that is.  I couldn't say for sure but it sounds like a major opportunity for security holes as well.  Shame they couldn't have embraced openness on this one as it could have resulted in some really cool stuff.

Oh and Microsoft Max?  Did that immediately conjure up thoughts of Microsoft Bob and make anyone else think clippy was making a comeback?  I was certainly petrified.  Fortunately it's just yet another photo manager. What's with the sharing anyway?  Isn't outputting a web site simpler for everyone involved? I'm clearly missing something.

Start.com updates?  Yeah great, still just a search box.

Workflow - yawn, everyone else already had it, about time Microsoft caught up.  Of course everyone else is starting to loosen up and remove workflow again - wikis are the current fad, keep playing catch up Microsoft!

Oh and don't even get me started on the Office 12 interface. People used to know 10% of Office, now? 0%.  Good work.  Not only that but the whole interface is based around modes which are one of the most frustrating things for users to deal with - if you've ever tried using Maya you'll understand how frustrating modes can be. Maybe the interface will work out okay for them, but I think it's much too radical a departure from the norm and I'm very curious how they expect people to learn keyboard short cuts now that they don't appear in the menu. I can see even more people taking the slow path of switching tabs, finding the button they want then going back to their work instead of just hitting a keyboard shortcut. I think the most interesting thing about this new interface is to see how Microsoft manage to back away from it again when businesses refuse to upgrade because of the massive retraining costs. Is this an opening for OpenOffice?

LINQ looks cool, bit too SQLish from the quick look at it I took but it's definitely not revolutionary.  People have been playing with different ways to integrate languages and databases for ages with varying degrees of success.

Gadgets surprisingly are the one thing that could prove cool or could just be a rip off of Konfabulator and Dashboard. What's got me interested is the distributed nature, but it sounds a lot like cross site scripting exploits and besides that, it's not like people aren't already doing that kind of thing when it makes sense (Technorati, BlogPulse and a bunch of others instruct you to insert a JavaScript tag pointing to their server and they provide JavaScript that adds their functionality to your site). We'll see.

I really haven't looked at any of this stuff in detail because I just haven't had time this week so maybe there's some ultra-cool stuff hidden in there that I'm missing, but overall I'm very disappointed.  There just hasn't been anything particularly exciting come out of PDC despite all the hype.

Job Opening At Ephox

September 12th, 2005

If you're looking for a job in sunny Brisbane, Australia, and the job description below sounds appealing, send me a resume at adrian@ephox.com.

Position Description

Title

Senior Software Engineer

Description

Ephox, a world-leading, content-authoring software provider seeks to employ a Senior Software Engineer for its Paddington office in Brisbane. The position responsibilities include writing technical specifications, collaborate in design/architectural recommendations of overall systems, implement software QA practices and be the technical lead in the Ephox development team. The position offers the opportunity to work with leading technologies and software vendors including content management providers.  The successful applicant may be expected to provide professional services directly to customers or partners both on and off site. They will also be expected to actively participate in other areas of the business including requirements gathering for new and existing products, mentoring and pre-sales support.  

Knowledge, Skills and Abilities

Key Technical Requirements

Required

  • Bachelor of Engineering or Computer Science
  • 5+ years commercial software engineering experience 
  • Advanced Java capabilities with experience in Swing
  • Experience and advanced knowledge of Internet and Web technologies including HTTP, XML, HTML, CSS, JavaScript, XSLT and one or more server-side scripting languages (e.g. ASP, PHP, JSP)
  • A thorough understanding of design principles and techniques
  • Strong client focus and sense of urgency in meeting client requirements
  • Excellent verbal and written communications skills, including presentation skills
  • Ability to operate independently and without direct supervision
  • Effective analytical, problem solving and decision making skills 
  • Applicants must have an Australian work visa
  • Limited travel may be required 

Desirable

  • Strong background in server-side Java development
  • Familiar with competitive landscape in the content authoring and management industries
  • Experience with supervision and mentoring of junior engineers.

 

Key Business Requirements

  • Experience in commercial software product development and releases desirable
  • Ability to write clear and concise Functional and Technical Design specifications in accordance with the relevant company standards
  • Ability to effectively communicate technical strategy (presentations and tech writing)
  • Ability to effectively liaise with management and team personnel
  • Ability to influence the quality and performance of other team members
  • Knowledge of software quality assurance practices
  • Proven interest in developing and mentoring others

 

The roles and responsibilities listed are intended to describe the essential functions of person assigned to this job.  They are not intended as an exhaustive list of all job duties, responsibilities, and requirements.

ANTLR Is Not As Cool As I’d Hoped

September 11th, 2005

About 5 years ago while I was doing some part time work for my university one of my lecturers walked by, looked at the program I was developing and asked: "You're using antlr or something like it to generate your parser aren't you?".  I wasn't, I'd written the parser by hand in an hour or two and it worked exactly as I wanted so I saw no need to go back and rewrite it.

Since then every time I've wound up writing a parser I've thought, "I probably should use antlr for this" but then decided to just take 10 minutes and write it myself instead of introducing another dependency and having to muck around with the build system etc.  I've had to support these over multi-year periods without problems.

Finally today I hit a case where I needed to write a reasonably complex parser that was likely to see a lot of updates in it's life time.  So I went off and took the time to add antlr as a dependency and learn how to use it etc.  Now it's worth noting that I'd already written a perfectly working first iteration of this parser by hand in about an hour.

I now finally have an antlr parser working after about 1-2 hours of reading up on ANTLR and about 3 hours of actually working on tweaking the grammar.  It's very brittle (otherwise known as strict) which in this case is a major problem so I've had to add in Java code to perform recovery when unexpected input arises. I'm now much more concerned that I'll wind up with an unmaintainable mess than I was with my hand written parser.

The worst part of it is that more people would be able to understand and work with the hand written, plain Java parser than could understand the antlr grammar files.  Not to mention the fact that the generated source code (2 files, a lexer and a parser) generate 27 warnings in eclipse - so much for a nice clean warning free code base.

It's great that things like antlr are available for when you have a very clearly defined grammar (particularly for large or complex grammars) and you want the strict checking it provides but I'm not sure I'll feel so bad about writing my own parsers in future.

Why Microsoft Gets A Hard Time

September 11th, 2005

Brian McCallister gives a brief synopsis of Microsoft's 2005 financial statement. I think it pretty clearly shows why people dislike Microsoft:

Regarding Windows sales and profits:

Well, we see a pretty nice top line revenue of $12.2 billion. The fun part of that is that the operating income (profit before taxes and interest) is a tidy $9.4 billion. It is awfully nice to pull a 77% operating margin (profit before taxes, hereafter referred to as "profit").

Regarding Office sales and profits:

This one has slightly slimmer profit margins, only 71.8% profit on $11 billion revenue.

See that's called price gouging.  

It is of course nice to look at the non-monopoly business divisions as well. MSN is squeaking out a pretty respectable (20%) profit, with $2.2 billion in revenue and $405 million in profit. Servers have a very respectable margin as well, about 33% on $9.9 billion revenue. Both are very nice from a profit perspective

It would be interesting to see what other company's profit margins on software are, but I suspect they would be closer to the 20% or 33% from the non-monopoly products than the 70-80% of the monopoly products.  Of course, Microsoft isn't the only ones pulling this kind of stunt - I'd be surprised to find that Apple wasn't making a very large profit margin on off-the-shelf copies of OS X either, however Microsoft is making 80% of it's Windows profit from the discounted prices given to OEMs.  Yikes!

Somehow though I don't think we'll see Microsoft giving its customers a price cut any time soon though. Then again, I probably wouldn't if I were them either.

Getting Groovy With Ant

September 10th, 2005

In the comments for my post Ant Is Cool, Erik Hatcher points out that Groovy has ant support (see http://groovy.codehaus.org/Ant+Scripting).  While that's cool and all, I really don't want to add a new language into the mix just to call out to Ant so not a great option for my case, but useful to know.  What is more useful however is knowing that you can embed Groovy in ant scripts using the Groovy ant task (also via the ant script task since 1.5 or 1.6 I think).

In fact about the time that Erik was posting his comment, I was playing around with the Groovy ant task to extract commit messages out of subversion to build change logs (complete with which build the commit was first put into and filtering stuff etc).  With the power of Groovy and the SVNClientAdapter Java classes it all came together quite nicely.

The killer feature of Groovy is definitely the clean integration of existing Java classes.  The biggest problem was making ant's classpath and classloaders play nice.