Archive

Archive for the ‘Software Development’ Category

Joyent Slingshot: a smart product idea

March 24th, 2007

Joyent Slingshot uses Ruby on Rails to create webapps that you run on your desktop that can sync up with the server side. It’s designed to provide an easily installable program for Windows and Mac. This is a good idea and it’s good timing for this product, because it’s coming out head-to-head against Adobe’s Apollo. Apollo could be huge, but it’s just getting going.

For those who have been following my blog, TurboGears was actually extracted from a desktop webapp. I didn’t have a need for the sync part of the equation, but I did indeed create an easy way for me to build Windows and Mac double-clickable apps (with little bits of platform-specific GUI to make it nice).

Good luck to Joyent with the new product! Spiffy stuff!

Software Development

Adobe Apollo is in alpha

March 19th, 2007

Though there are some people who are concerned about handing over a monopoly to Adobe (which is a fair concern), Adobe Apollo is now out in alpha and is certainly technology to watch. It’s a system for creating cross-platform desktop apps using webesque technologies (HTML/JavaScript/CSS/Flash). Unfortunately, cross-platform at this time only means Windows and Mac, though Apollo could undoubtedly be brought to Linux if the demand is there.

I heard a rumor at one point that Adobe is considering bundling in sqlite, which I think would be killer. Looking at the FAQ, it would appear that sqlite is still on the table but is not in this release. It seems like having sqlite as a local data store is a no brainer… having to come up with your own formats for all offline data you want to store seems like a drag. At least, it would be for any moderately sizeable amount of data.

Software Development

Great job, CodeMash organizers!

January 18th, 2007

This year was the first CodeMash conference, and I hope it’s not the last. Unfortunately, I could only stay for one of the two conference days.

What makes CodeMash great is that it’s a software developer conference that covers all the bases. There were lots of Python talks. There were .NET people all about. Lots of Ruby love. Many Java folks. (There were many well known folks there as well.) It was a great theme for a conference and it was really nice to have it in the midwest.

The organizers did an excellent job. From a speaker/attendee’s perspective, everything seemed very smooth. The Kalahari hotel (and indoor waterpark) was very nice, and I’m only disappointed that I didn’t have a chance to go into the waterpark while I was there.

Software Development

Bruce Eckel’s CodeMash keynote on a dynamic world

January 18th, 2007

Bruce Eckel is no longer a fan of “eyes forward” talks, where you sit and listen to someone give a talk. He points out that we can do that on the web. When we get together at a conference, we should do the things that we can’t do when we’re separate. That’s why Bruce is a fan of open spaces discussions.

He makes a very good point, and I know that I’ve gained a lot through hallway talk at every conference I’ve been to.

He went on to talk about the Burning Man festival and all of the compressed creativity of the event. He talked about how he built his shade structure and the things he learned by doing that. The only way that he could learn what he needed to know was through experimentation.

Bruce brought up DeMarco and Lister (Peopleware, Waltzing with Bears) and how “project estimation is a dynamic statistical process”. I saw Tim Lister speak at GLSEC, and I really agree with the principals here. Thinking in terms of probabilities will help you be more accurate in estimation.

Dynamic languages let you experiment and fail faster. Bruce talks about how good designers rapidly throw out ideas that clearly won’t fit the constraints.

This talk was wide ranging, non-technical and yet engaging. Bruce has a good storyteller style. The overall theme of failing quickly and being open to changing things to really meet the requirements came through quite clearly. Bruce is worth seeing, if you have a chance.

Software Development

Neal Ford on DSLs at CodeMash

January 18th, 2007

Neal Ford, from Thoughtworks, did the opening keynote session at CodeMash. His talk was about language oriented programming and domain specific languages as the next evolutionary step for programming. (LOP and DSL were both terms coined by Martin Fowler, also of Thoughtworks). Neal traced through the history of programming languages to determine how we got to the languages we have today. Then he started in on DSLs and had some compelling examples of DSLs in the real world (Starbucks, Waffle House hash browns, etc.).

He used log4j configuration (which also applies to Python logging) as an example of something that is just begging to be turned into a DSL. (Which he does in Java for log4j… yes, you can make DSLs of a sort with Java.) One area where this has been picked up in the static language world is in the mock object libraries, where expectations are described using something more like a DSL.

Neal talks about all of the XML configuration files we have today as DSLs and also contends that Unix, if it was invented today, would have XML configuration files all over the place. Ick. I’m of the opinion that XML makes for painful and verbose DSLs, and would rather have much more pleasant DSLs.

He cited Martin Fowler’s strategy pattern DSL example where he talks about a reader for positional record files of the type you often get from mainframes. He made a Ruby version of that same example that was quite nice and readable, and I thought this was the perfect example of why you wouldn’t want to create such DSLs with XML. XML would have been far harder to read.

The last part of the talk went into the notion of “Language Workbenches”, a new category of tool that puts the abstract representation of code at the center of the universe (rather than your source) and then puts different kinds of projections on top of the abstract representation. JetBrain’s Meta Programming System lets you create DSLs with their own highlighting editors that support pull downs and context sensitive error displays.

None of the language workbenches are ready for prime time yet. It’s something to watch for, but nothing prevents us from making DSLs in our existing languages where it makes sense to do so.

I think it will be interesting to see how DSLs evolve over time (literally: when you make a DSL, how well do you maintain backwards compatibility?)

Neal’s talk was thought provoking in that designing around the vocabulary of a domain is not the main way most of us design.

Software Development

Programming languges panel at CodeMash

January 17th, 2007

This was an interesting panel cover a range of programming topics. It was a relaxed, informal way to get into the conference. These notes are very sketchy and miss quite a bit of the discussion…

No one really seemed to be a fan of Java. Ted Neward wasn’t able to make it, and I’m sure that he would have been a better defender. The panel was definitely into the dynamic languages.

The panel included people representing PHP (someone from MySQL, though I forget his name, sorry!), Neal Ford (who likes Ruby best, but also does Java and C#), David Stanek (representing Python), Bill Wagner (representing C#, C++) and James Ward (Adobe Flex evangelist, standing in for Java). Bruce Eckel moderated and also generally spoke out in favor of Python.

The language warts discussion was interesting: everyone was in agreement that Java Generics are horrible. People generally seemed to not be hung up on Python’s whitespace (in fact, a number of folks spoke out in favor of it).

There was a bit of talk about Web Services. The general consensus was what you’d expect (if you’ve worked on web services at all): avoid them if you can. If you *need* to distribute your services, SOAP is a very complex, verbose protocol. James favored binary protocols (AMF, anyone?), with JSON, POX (the acronym that Neal Ford used for plain old HTTP+XML) and SOAP as a last resort. I’m with James on that one.

The question came up about good first languages. Python and Ruby were floated as good choices. Others include Smalltalk, because of the purity of its OO model. SQL, because of its prevalence today. Lisp/Scheme, because of the way everything is built from fundamental blocks. Lastly, Assembly language was brought up because it teaches you how the machine is actually working.

This is just the first night of the conference, and it’s already off to an interesting start. We’re heading into open space discussions now. The formal talks begin in the morning.

Software Development

CodeMash early registration ending on the 18th

December 12th, 2006

If you can be in Sandusky, Ohio next month, check out CodeMash - January 18 & 19, 2007. It’s a software development conference for people using just about any toolset to develop software. Early registration (ending on the 18th!) is $99, and the event is at an indoor waterpark. Java, .NET, Python, Ruby, PHP and more are all represented, and there’s a good lineup of speakers.

Software Development

MochiKit.Animator: fancy new animations for MochiKit

November 7th, 2006

So, we’ve got this book coming out this week, and it features 80+ pages on MochiKit 1.4, including the powerful Scriptaculous effects port. Karl Guertin’s new MochiKit.Animator makes the Scriptaculous port a much harder sell. I always appreciate beauty in an API, and this is a very attractive API indeed. It’s based on Bernard Sumption’s work, and this really looks like a solid choice if you’re using MochiKit.

Software Development

CodeMash - January 18 & 19, 2007

October 30th, 2006

New, groovy-sounding non-denominational conference coming in Sandusky, Ohio: CodeMash - January 18 & 19, 2007

Software Development

Algorithms book

September 6th, 2006

Free Algorithms textbook - because you never know when you’ll need a different algorithm.

Linkage, Software Development