Computer Books, Hecl, Skype

Henri Yandell comments on Addison Wesley being prominent in his book list. I noticed the same thing myself recently (my list is on this page, towards the bottom: http://www.dedasys.com/freesoftware). Perhaps the surpise is that O’Reilly is less prominent than one might think given their high visibility in the portion of the tech world that I deal with. O’Reilly, however, tends more towards documenting current technology well rather than having many books that are timeless classics. I hope they keep focusing on putting out good books that do at least that rather than trying to create their own trends like “Web 2.0” (bleagh!). In any case, we’ll have to wait a while to see if any of their books stand the test of time – a lot of the Addison Wesley and Prentice Hall books are from ten, fifteen, years ago or more (The C Programming Language, Knuth’s books, Design Patterns, etc…).

Hecl

I’m currently working on making it very easy to write and create Hecl applications for J2ME. I’m pleased with how things are going from the community point of view as well – a couple of people have show interest in using Hecl commercially, and I’ve been asked to write an article about it for a European Linux/software magazine, which is something I’d started doing anyway…

Skype

My parents got around to installing Skype and buying a microphone. Free voice calls from Italy to Oregon! The quality is really good, although there are some echo issues that probably come from my use of a cheap microphone.

It sort of bugs me to buy into the network effects of a proprietary system, but on the other hand, anything that keeps my money out of the hands of Telecom Italia makes me happy.

Web Hosting – A Market for Lemons

I wrote an article, here:

http://www.dedasys.com/articles/webhosting_market_lemons.html

about why I think the market for web hosting is a “market for lemons” – the fact that you can’t really tell ahead of time what the quality of service will be like causes it to be a problematic market in some ways, both for service providers and consumers.

It’s a work in progress, so ideas, comments and suggestions are welcome!

Open source economics – the conundrum

I think I agree with Ian Holsman’s analysis of this article on “How to make money from open source” – actually I would go a bit further. Ian says that you don’t need to be a committer to make money from open source. Indeed, in some ways the big question in terms of “open source economics” has been how to more tightly couple the people doing the valuable work with some percentage of the rewards – at least enough to let them keep hacking.

While it’s evident that open source works, and that there are big economic benefits involved, it’s a tough nut to crack in terms of renumeration for people working on stuff. Selling software is, if nothing else, a really simple mental model that is very easy to grasp – you write software, you sell it. If it’s good, people buy it and you can either reinvest that money, or take it as profit.

Open source software that scratches an itch has immediate benefits to the author, especially if the author manages to get other people on board to help out.

But the category that’s not really covered is the group of people writing something “out of the blue” because they think it’s a cool idea. If it is, and it takes off, they really aren’t guaranteed anything at all for their troubles.

I don’t see too many ways around this while still playing by the rules of the game. There are some clever ideas like dual licensing, but they aren’t applicable everywhere. I suppose you could declare software a public good and get the government involved in its production, but I’m not very enthusiastic about that…

In any case, it’s an interesting topic, and perhaps some day clever entrepreneurs will find better ways of financing the production of open source software.

Reading material

Via Ugo Cei I found this reading list:
http://www.joelonsoftware.com/articles/FogCreekMBACurriculum.html, some of which looks to be interesting, but I’m not convinced that it’s a selection where each book is a 9 or a 10. Books like the Mythical Man Month stand the test of time, and some of the books there are good ones by that measure, others look less convincing, at least judging by their contents (too focused on the 90ies, the bubble, a particular company), or some of the reviews on Amazon. Perhaps those aren’t always worthwhile, but the real winners don’t seem to have much flack thrown at them. I’d enjoy hearing why Joel et al. recommend them.

I’ve read these:

in addition to
Microeconomics (6th Edition) as a textbook on Economics.

What are your recommendations?

All things considered, though, I have a hunch that it would be better to be out trying to do rather than reading books about doing…

Mysql ranting

I found this to be entertaining:

http://www.andrewsavory.com/blog/archives/000967.html

especially after having had a rough day myself with Mysql. Basically, I need to take one big gob of data, and mix it in with some other data. I’m ok with SQL – not great – but know exactly how to accomplish what I need to do with SQL (PostgreSQL, in particular). Unfortunately, the Mysql version that I’m dealing with is old, out of date, and is some kind of ugly inbred cousing of SQL. No subqueries, no unions, intersections… blocked every way I turn! Ok, you have joins, but it’s not exactly what I wanted. I got a query that looked good, launched it and… poof, an error! Well, ok, I’ll try again. NO YOU WON’T, because the guy who put this house of cards together used MyISAM tables and so the big insert failed halfway through and didn’t ROLLBACK, like real databases do. So I had to find a way to reverse it myself, and then try again.

I hope I can sheperd this operation along long enough to migrate to PostgreSQL without having a nervous breakdown first.

When you need to get something done quick…

I went to the local Java Users Group meeting last Saturday to check it out. I hope to give a presentation on Hecl sometime soon, so I figured it was fair to go once or twice before showing up to recount about what I’ve been hacking on.

The meeting started off with presentations on first Java Server Faces, then Tapestery. Lots of “then include this, configure that XML file, add these”. The final presentation was two guys who had volunteered to redo the user group web site. After poking around at a few different things, they built it with Ruby on Rails, and gave a presentation on their experience. I was once again surprised at the uptake of that system in the Java world. The response amongst the people with whom I chatted afterwards was that it’s really Rails itself that’s so attractive.

I see Tcl and Tk as being a lot faster than Java for GUI work, but perhaps Java folks are used to using some kind of GUI builder for that, so the difference is less pronounced… and Java’s uptake has probably been greatest in the web world, so it stands to reason that something like Rails would really garner a lot of attention.

Ruby the Rival, Tk, “mini-lang”

I saw Ruby the Rival via an article on Lambda the Ultimate, and of course it tickled my interest in the diffusion, rise, and decline of programming languages. The guys they picked to interview have pretty good commentary – I found it thoughtful and insightful.

Robert Cooper’s comments to the effect that you should do the easy things first and make the complex stuff available are spot on. Simple stuff has got to be simple in order for the language and its libraries and applications to scale down, and without scaling down, you leave yourself vulnerable to someone who is willing and able to get people started with something easier than what you’re offering.

Bill Venners points out that the Rails folks have done a very good job of marketing what they’ve done. Agreed. It’s been hard to see the opposite effect in the Tcl community, which has some really good technology that has been sold very poorly.

Speaking of which, James Duncan Davidson says Ruby doesn’t have a “compelling” gui toolkit. It has Tk though, and if they do their homework, will soon have Tile. And that’s not bad… maybe it’s not the glitziest thing out there, so I could see why it might not appeal to a Mac guy, but on the other hand, there are countless very compelling desktop apps waiting to be written that are interesting to people for what they do, not just because they are slick looking. And frankly, it’s not like Java is that hot in the gui space in any case…

Mini-Language

Only tangentially related to the above, I found this while looking at ofbiz, which looks to be a pretty good system for what it does. However, the “scripting language” doesn’t really make sense to my way of doing things. Look at the example towards the end:

http://www.ofbiz.org/docs/minilang.html

That seems like an awful lot of verbosity for something that doesn’t absolutely need to be edited by a computer.

Licensing and standards

Idle thought of the day:

How does licensing interact with standards – how does the presence of a standard affect which license you should choose for an open source project?

We know how the GPL and BSD licenses work, and how the differ… how each can work in different situations with different community and business goals.

But… let’s throw another factor in – an open specification/standard that is well defined and doesn’t have a lot of “wiggle room” for real innovation. Should you choose the maximum amount of openness (BSD) because a proprietary implementation doesn’t have that much room between you and the “ceiling” (100% spec compliance), so there is no real reason to make a proprietary fork? Or is the whole thing a moot point because most specs are usually big things that leave a lot of room underneath for innovation. It would be ridiculous to reduce Linux or FreeBSD to “just an implementation of POSIX and a few other Unixy specs”, for example.

The uptake of the standard probably weighs on the equation too. If it’s something you just want to see as widely used as possible (say, TCP and IP), the BSD license is a good one to get the code into a lot of people’s hands.

An already adopted standard in wide use with no free implementation might have other implications, depending on what your goals are – if you did a nice implementation, perhaps you could corner some licensing fees by dual-licensing the code as GPL/proprietary.

Perhaps it’s not that important a factor in the mix… what are your thoughts?

j2me + web shopping list

Hecl is for the moment mostly a fun project, but I wanted to see if I could build something real with it, as that’s always a good way of working out the kinks.

The result is a web + j2me shopping list application. You create the shopping list online, then enter the generated code in the phone’s java app. It fetches the list via http and creates a checklist. Simple stuff, but it seems to work ok, although of course there is room for improvement:

http://shoplist.dedasys.com

Late to the party

Something I’m really curious about is why the Java folks suddenly stood up and took notice of Ruby. Is it just Rails? Did Rails arrive in the right place at the right time? It’s not a rhetorical question – I don’t have a lot of insight into the Java world, so I’m genuinely curious as to what sparked this interest in “beyond Java”.

Python’s been around for a long time, and isn’t that different from Ruby. Tcl with Tk runs circles around Java for cross platform GUI development. PHP, even if it’s not the cleanest or most glamorous thing out there, makes whipping up small web tools easy. (I’ll concede that Perl has a culture that is too far removed from a lot of the things Java tries to do). And all those have been under everyone’s noses for years.

So why all of a sudden is Ruby the “hot new thing” that is to be embraced, rather “defended against”, as we often see in such programming language “willy waving contests”. Was this something that was just waiting to happen, and all it took was something to coalesce around? Were people in that world starting to get wrist injuries from typing out so much stuff, and on the lookout for “something else”?

Joking aside, I really am curious, because over the years, I’ve developed an interest in how these things work. I talk about it some in The Economics of Programming Languages, but that’s clearly not the whole story.

Java and its human resources requirements

Another thing I’ve been idly wondering about is whether perhaps Java got pushed a lot (perhaps unconsciously) by big companies, because 1) it is a good solution for big teams 2) some aspects of it are so big and unweildy that only companies that can muster the manpower to throw at it are going to do well with it, meaning that smaller shops would either have to not compete in that market, or compete poorly.

Obviously, it’s not strictly necessary to use Java – more often than not, you could accomplish the same thing in less time with some other system, however, the “other pincer” is the marketing out there that Java is the “serious, corporate, enterprise” solution, and that anything “less” just won’t do. This gives firms an incentive to use Java even when it might not be the best solution, and helps create a market where it’s a given that the solution is some Java system, and the bigger company, being able to bring more people to bear, may have an edge.

Anyway, just some idle speculation – what do you think?