'Software Development' Archive

Joel tears MS another new one

May 1st, 2008

Wow, I can’t say I disagree with much here but for a former employee Joel really goes after MS. Who cares if you agree, the writing is enough to make it worth the read. He takes a bit of a glancing pass at google as well. Make sure you stick around for the last paragraph. I will add that I agree for the most part, however, the problem they’re solving’s already been solved, the astronauts just want to compete for the over complicated version of the solution.

When I read David’s post on livemesh, I really did try to stay interested but it quickly sounded like, well exactly what Joel’s describing, something built by architecture astronauts that I would never contemplate using.

Bottom line, I know nothing about livemesh beyond what David’s written about but in any case ‘controversial Joel’ is good reading.

“Windows Live Mesh is not just a way to synchronize files. That’s just the sample app. It’s a whole goddamned architecture, with an API and developer tools and in insane diagram showing all the nifty layers of acronyms, and it seems like the chief astronauts at Microsoft literally expect this to be their gigantic platform in the sky which will take over when Windows becomes irrelevant on the desktop.”

“It’s Groove, rewritten from scratch, one more time. Ray Ozzie just can’t stop rewriting this damn app, again and again and again, and taking 5-7 years each time.

And the fact that customers never asked for this feature and none of the earlier versions really took off as huge platforms doesn’t stop him.”

“It sort of bothers me, intellectually, that there are these people running around acting like they’re building the next great thing who keep serving us the same exact TV dinner that I didn’t want on Sunday night, and I didn’t want it when you tried to serve it again Monday night, and you crunched it up and mixed in some cheese and I didn’t eat that Tuesday night, and here it is Wednesday and you’ve rebuilt the whole goddamn TV dinner industry from the ground up and you’re giving me 1955 salisbury steak that I just DON’T WANT.”

Building Smart Software

April 22nd, 2008

The trick to building smart software can be counter-intuitive. It requires that you have the utmost respect for human intelligence NOT software intelligence. Look at wikipedia as an example. Smart software right? Well not quite.

smart.jpgWikipedia is a great example of a small group of smart humans piloting a massive group of humans using software. “All these people, thousands of people, there must be no rules! But there is a very ornate and well-defined structure of participation.”, link. It doesn’t work because of machine intelligence, it works because of human intelligence. The same applies to highly successful foss projects such as bsd, ubuntu, etc:

“The FreeBSD Core Team is the nine-member elected management body of the FreeBSD Project”, link.

As a designer/developer, you can’t get lost in technological hubris. You must respect and leverage human intelligence. Failing to do so will lead you into the dark sad corner. Actually it’s a busy corner so you’ll meet a lot of similar minded folks, which could be nice?

Conferences

March 26th, 2008

I average less than one conference a year so I’m no expert. Basically I can’t stand most of them. I did, however, attend Neil’s Business of Software conference in San Jose last year and decided half way through it that I wouldn’t miss the next one, if there was another. Well there is, and this year Joel Spolsky is helping Neil organize it and it’s being held in Boston. The lineup is already impressive including Joel, Seth Godin, Eric Sink, Richard Stallman, and Jason Fried.

I’ve already purchased my ticket as last year’s attendees got early dibs. The rumour is that the remaining tickets will be publicly available soon so get on the mailing list and seriously consider making the trip.

The other conference is an easy commute to Mesh in Toronto. I missed last year’s due to client meeting conflicts but I was at the first. I found it to be less technical and more marketing focused but regardless it’s a chance to meet and hang out with people in our own backyard.

Licensing and frameworks

March 26th, 2008

Writing javascript is right up there on my list of things I enjoy with smashing my face on large bits on concrete and listening to Ben’s mom sing. Based on the lovely demo’s I recently saw at DemoCampGuelph (shameless plug, April 9th, why won’t you be there…) I tried out extjs and yui for brainpark.

There was no real differentiator for what we needed on brainpark. They would both accomplish what we need to do today. I started with extjs and had that up and running in no time. Upon further inspection I gave yui a cursory test drive and was equally impressed. For the time being, yui has won out. The difference maker? Licensing. All things equal, I’ll run for a bsd license over some dodgy commercial one I don’t even understand.

Does that mean I won’t pay for software or will only use open source? No way. If, at any point, it becomes clear that extjs will save us developer time over yui then we’ll assess the license and go from there. Absolute minimum, yui comes with a community filled with yahoo’s developers and a license that effectively says “Take it down to the copy center and make as many copies as you want.” That’s an active community I have faith in and I’ll take that anyday over a commercial community staffed primarily, or entirely, with developers paid for by licensing revenue.

web versus desktop clients

March 8th, 2008

Of late I seem to find myself ranting about the return of desktop applications. It certainly wasn’t intentional. Maybe I’m just bored of building applications for such a mess of a medium known as the web. In any case I’m excited about desktop applications which seems so 1980’s of me.

Moving applications to the web browser certainly fixed some things, however, it broke a bunch as well. First, let’s dispense with the notion of the web browser being web-based and traditional client applications being non-web-based. Upon closer inspection it seems that web browsers themselves exhibit most, or all, of the attributes of a traditional application. My point is, every trad application can access and do things ‘in the cloud’ so they’re web based.

A good example is the trad application I’m using to write this very entry. Drivel is a Gnome client “for working with online journals”. I no longer write web posts in a web browser. I was sick of losing posts by accidentally closing a browser, not being able to write or edit while offline like being on a plane among other annoyances. I now enjoy the rich features of a trad application, save posts locally etc, as well as being able to post directly ‘to the cloud’. As well, I use drivel to post to multiple blog applications which gives me a consistent writing experience regardless of the blog software I choose to run the blog on.

Further complicating this issue is that two giants are on either side of this. Microsoft owns the desktop, google owns the ‘cloud’. My 2 cents is that google will do everything they can to get you and your applications on the web as they don’t own your OS. The more you take off your desktop and put entirely on the cloud then the more of you they have.

Mozilla’s prism is now trying to help you “split web applications out of their browser and run them directly on their desktop”. I’m only getting more confused. Mozilla claims that the problem with trad apps versus web apps fixed was that they had slow installation, a verbose update process, and they didn’t have ‘data in the cloud’.

We’re already mentioned that the ‘data in the cloud’ no longer differentiates. So that leaves us with install and update. I believe I’m biased in that I’m an ubuntu user and therefore have access to synaptic. That means I’ve installed virtually every application by typing one line in bash or using the synaptic client. Once an application is installed I forget about it for the most part and synaptic handles all updates for me.

“Synaptic maintains a database of packages on your system in order to keep track of installed software. This list is checked against the software repositories to inform you of new packages or updates. Synaptic checks for new software packages when you launch Synaptic.”

This means I no longer suffer from a cumbersome install or update process for trad apps. Should we not just take the synaptic path and fix the real problem, making trad apps dirt simple to install and keep up to date? Cripes, I’m starting to feel old..

Building multi-OS python apps

March 4th, 2008

Caveat, I’ve never built and distributed a multi-os python application. I was asked recently if a python application would naturally be multi-os. Here’s my modified for public consumption answer.

It depends. Until I’ve done it, I don’t know. I believe it’s relatively painless to do it though. Python itself comes ‘out of the box’ with every major OS except windows so that’s a good start. As well, if you build your client application using dabo which is built on top of wxPython which is built on top of wxWidgets then you’re in great shape. Not to mention your apps look native to all Os’s which is handy.

“Dabo applications are known to run on all flavors of Windows, all recent flavors of Linux, and Macintosh OS X 10.2 or higher. Because Dabo is currently built on top of *wxPython*, which is built on top of wxWidgets, it probably runs elsewhere, too. It also suffers from the same display limitations on some platforms (most notably OS X), but these should improve as the underlying toolkits improve.

You can develop Dabo applications on all three supported platforms, and you can run your Dabo applications on all three supported platforms. Flexibility is a really good thing.”

There’s also pyGTK which promises your applications will be “truly multiplatform and they’re able to run, unmodified, on Linux, Windows, MacOS X and other platforms.” I believe that choosing between pyGTK and wxWidgets starts to get into questions of mobile device delivery etc. In terms of major OS’s I think you’re covered completely with either.

Business of Software Conference

January 23rd, 2008

I’d concur with Joel that the Business of Software conference, organized by Neil Davidson from Red Gate, was the best conference I attended last year. I’m not much for conferences so it was also the only real conference I attended so that’s not saying much. I’d go so far as to say it was the best software conference I’ve attended to date.

They are running it again this year and apparently Joel’s taking over. It’ll be in Boston in fall 2008 and I’m planning to hit it up. If you are interested in attending, and know me personally, then contact me as Neil’s graciously offering a reduced rate to people who attended last year. I’m curious to see what natural disaster they have planned for us this year.

User Experience gaining momentum

January 15th, 2008

Some examples poached directly from Mark Hurst of business success that has come directly from creating a good experience:

An example of how Mark Hurst has pulled off something similar? They had a small outage with their gootodo application last year, small meaning a few hours I believe. Their response was to email their user base offering a 6 months credit to any user who was interrupted by this outage.

high level what?

January 8th, 2008

It’s a sad fact that I spent most of my “holidays” rewriting the blueTurbine client in python which is my first real experience with the language. Python is described as a “high-level language“:

“In a high-level language, complex elements can be broken up into simpler, though still fairly complex, elements for which the language provides abstractions, keeping programmers from having to ‘reinvent the wheel.’ For this reason, code which needs to run particularly quickly and efficiently may be written in a lower-level language, even if a higher-level language would make the coding easier.”

snake.jpgI have to agree with the above in that I find it significantly simpler to develop complex concepts into python code as compared to any other language I’ve used. The catch, however, is the “though still fairly complex” part. Being able to translate complex concepts into simpler code does NOT mean it’s simpler to work with complex concepts.

If you happen to be struggling with complex software concepts, or have yet to be exposed to them, then don’t expect python to teach them to you. If anything it’s the exact opposite in that it puts the burden squarely on the developer to completely understand those complex concepts in the first place. Python allows you to code them with less code which means they’re more subtle and less explicit.

That’s amazing for developers who already grasp those concepts. They can be more productive both in reading and writing code. If you’re trying to learn them, however, then I’m not sure how that helps. If anything you may want to spend more time wading through more verbose (less simple) code first? Wow that sounds backwards…

Having said that Bruce Eckel makes a great point about using python as a learning language so what do I know? He doesn’t, however, speak to the idea of learning complex concepts by working on codebases where they exist which is more what I’m speaking to.

“Python would make an even better first language to teach programming. It’s such a gentle learning curve. You can start with scripts, and of course some people dismiss Python as a scripting language, because you can script with it. You start teaching scripts. You can teach functions. Then later you can add classes. Then you can go onto things like metaclasses. Python has many more of these powerful constructs that you can learn when you’re ready. And I think that’s very impressive, because it doesn’t say you should only be an object-oriented programmer.”

Coworking?

December 16th, 2007

Is it just me or is Paul describing coworking?

“If companies want hackers to be productive, they should look at what they do at home. At home, hackers can arrange things themselves so they can get the most done. And when they work at home, hackers don’t work in noisy, open spaces; they work in rooms with doors. They work in cosy, neighborhoody places with people around and somewhere to walk when they need to mull something over, instead of in glass boxes set in acres of parking lots. They have a sofa they can take a nap on when they feel tired, instead of sitting in a coma at their desk, pretending to work. There’s no crew of people with vacuum cleaners that roars through every evening during the prime hacking hours. There are no meetings or, God forbid, corporate retreats or team-building exercises. And when you look at what they’re doing on that computer, you’ll find it reinforces what I said earlier about tools. They may have to use Java and Windows at work, but at home, where they can choose for themselves, you’re more likely to find them using Perl and Linux.”