Ruby is in top ten programming languages

2007/09/30

According to the TIOBE Programming Community index (which gives an indication of the popularity of programming languages), Ruby jumped 3 places and made it to top ten. Congratulations !

If you look closely on the trends down on the page, the dynamically languages popularity has risen over 3.6% during year period. Which is A Good Thing (TM).

Should I make my personal Top Ten of the programming languages, ordering languages by my degree of comfort of using the language, the language beauty (which is, in the eye of the beholder ;-)). Factoring in also how much I do enjoy reading/writing code in that language and it’s usefulness from both personal as well professional point of view, the index would look like this:

  1. Java
  2. C#
  3. Ruby
  4. SQL (both T/SQL and PL/SQL)
  5. Javascript
  6. Objective-C
  7. Python
  8. Shells (mostly BASH)
  9. Perl
  10. VB.NET

First place is practically tie – as the Java / C# are in reality more two dialects than two languages. They were very close at the beginning and with latest versions (C# 2.0, Java 5) they got even close. As it looks like, in the future they may diverge more with all the LINQ stuff coming in C# 3.0. I like Java portability, amazing variety of open source code available – and the development tools are IMHO still better on Java side (Eclipse, IDEA, Netbeans), but C# syntax of properties is nicer and there are slightly more commercial opportunities with Microsoft platform (at least during last 3-4 years).

The only “real” compiled language in my list is Objective-C, for which I have absolutely no commercial use for right now, but I hope that will change one day when the greatest of all cats finally arrives. Neither C or C++ made the list – the only encounters with C these days are during installations of Ruby GEM on Linux or Mac platform – which often comes with native part in C source – and the installer barfs at me with some gcc error :-). And despite using Mac for over a year now, I felt no need to write anything bigger than Hello World in AppleScript


Microsoft will ship MVC for ASP.NET ?

2007/09/27

From Scott Guthrie’s interview on .NET futures

SG: We’ve seen demand for an MVC framework on two fronts. One is for even more testability, having the ability to completely mock-up a request. We’ve also always seen with ASP.NET that some people like having the server control, postback model; some people say, “I just want absolute control.”

The MVC framework we’re coming up with is a fairly simple MVC model, it’s very clean, it’s a front controller model, and it integrates very well into ASP.NET so you can use ASP.NET forms authentication, session state, security, personalisation, caching, all the standard features, but with an alternative to the postback model where you have a more traditional controller-view separation and have complete control over your HTML.

The other thing is that for the view, you can use .aspx templates, master pages and all the Visual Studio tool features. It integrates nicely into ASP.NET and preserves everyone’s investment. You can have a single app that has both pages built with MVC and pages built with postback. People can choose.

See http://www.itwriting.com/blog/?page_id=329

Finally – if that happens, maybe next time when I will be crossing the platform boundaries going back from Java and Spring to ASP.NET on the next project, I will not have that old feeling as in 2005: yes, this ASP.NET thing works, one can build pretty decent application in it and is not really so bad after you get used to it – but is still sooo inflexible and limiting compared to the beauty and simplicity of Spring MVC, or Webmacro.

Looking forward 🙂


Adding week numbers to Google Calendar

2007/09/26

If you live on week cycles, it is quite nice to see the week number in your calendar. It is not (yet) provided as standard feature in the user settings for my calendar solution of choice.

An obvious solution is to run user script in the browser that will decorate the calendar page – using the fabulous Grease Monkey. The user script to install (after installing the plugin) is here.

It works, but … However I admire the power and possibilities of the user-scripts, it is fairly heavy tool for such simple thing. My Firefox install is pretty large thanks to variety of developer-oriented plugins, and I do not want to slow it down even more. Another issue with scripts is potential security implication – recently (as you will see on the script site) a malicious user started to upload scripts stealing cookies. What this means for slightly paranoid security-aware person like me, is to read and understand the source – and that is way too much trouble.

Fortunately, there is better solution using Google API’s – you just subscribe to a calendar that has the information :-). Simple, elegant and as secure as the calendar itself 🙂 – all you have to do is to click on this link (for weeks starting on Sunday).

The page for the non-greasy solution is http://recover89.googlepages.com/googlecalendarweeknumbers – it contains link for Monday based weeks as well.


Quote of the day

2007/09/25

Experience is what you get when you did not get what you wanted.

Brick walls are there for a reason: they let us prove how badly we want things.
They are there to stop the people who do not want it badly enough
They are there to stop “the other people”

Randy Pausch

If you want to watch and listen to a lecture by professor of CMU Computer Science that will teach you things way beyond realms of software engineering, check this video.

It is long – over 1:45 hour, but worth every minute. It will make you stop and think ….


Oracle 10g XE – nice surprise

2007/09/24

As part of current project I need to test some ORM frameworks and for that, you need a database. In this particular case, database equals Oracle. I need a local instance to be able to work outside of the customer’s location.

On my notebook, I have already installation of MySQL (for all the Rails stuff) and SQLServer (for ASP.NET). Plus few lightweight databases (meaning that they do not really need a server) such as sqlite3, Derby and HSQLDB). I was very hesitant to add another instance and for some time tried to do the work with MySQL – but differences in SQL and most importantly the way how the CLOBs and BLOBs are handled convinced me this is a bad idea.

So grudgingly I downloaded the Oracle 10g Express Edition – which is free and available for any use – including production deployment. Remembering my last installation was not very encouraging: the machine I installed the 9i suite (Windows 2000 back in 2002 or 2003) became close to unusable for development after install because of the memory consumption and CPU load of the database server – and after the installation I had to go and develop on different machine. I also remembered that it installed variety of services, two or three different instances of Apache (for no obvious reason) and lots of other stuff I had no need for.

I have to say that Oracle made a huge improvement since that time. The install went very smooth, did not mess up the notebook and everything actually works very nicely. It did not even ask the scary questions that one does not fully understand and later pay dearly for answering them wrong… The admin interface is web based and does not require you to read hundreds pages of documentation to make anything useful. It shows memory used and allows easily manage users, databases and pretty much everything what a developer (not a DBA) may want. If you need more or are an Oracle DBA, you have the dreaded command line based SQL tool available as well – so even Bob can feel at home with XE :-). The whole Oracle suite is now single service (more or less) and if you do not need it, you just stop single service (shortcut in Programs is provided) and claim the memory + CPU to where you need them.

Now I know that if you need a lightweight commercial grade database (backed with The Big Name), there is an alternative to SQL Server Express – very comparable with respect to footprint, resources, easy of use and limitations (from developer’s point of view unimportant such as 4 GB size limit on database). And as added benefit, you can install on Windows or Linux – which may come handy if you need to build a virtual database appliance without any licensing issues on the operating system side …


Book: Softwar – an intimate portrait of Larry Ellison and Oracle

2007/09/23

This is blog entry I wrote over a two years ago – before this blog has even started. Now I found it on the disk during cleanups and found out it is still valid. The iPod mentioned was my first, now long dead first generation Shuffle.

Here it comes:

Spent most of Friday night and part of Saturday reading this book. I did not really expect to finish it, considering the size (~ 500 pages) and the fact that I am not such a great fan of Oracle products – especially not the Oracle Apps. But it turned up to be way better that expected. I mean the book, albeit I partially improved my opinion about the 11i. Technologywise, it is still kind a dinosaur, but now I can more appreciate the sheer size of the problem these guys were trying to address. But back to the book.

The author IMHO did a pretty good job being fair observer. On almost each page, there are comments and notes written by Larry Ellison, which often provide a view from the alternate reality. That was the best part. All summed up, I learned a lot. I did not know before that many of the dot-com eBusiness big names such as Ariba, i2, Siebel were actually founded and run by ex-Oracle employees, usually senior sales folks (e.g. Tom Siebel). Understanding the history of Oracle, from first commercial non-mainframe relational, database through applications up to latest entrance into J2EE world with licensing Orion and making it OC4J, was very illuminating and I quite enjoyed it.

This guy (I mean LE, not the author) is really interesting and definitely smart. Not exactly that type of personality I would enjoy spending a lot of time with, but certainly somebody you will not forget. I did not know about the yachts, 40 acre house with artificial, earthquake-resistant 5 acre lake and a Zen garden. Some people indulge themselves with toys such as iPods and notebooks, some with 300 foot yachts and jet fighters. I hope that Larry enjoyed them as much as I my iPod :-).

Some of the Larry’s comments are really funny:

“People regularly mistake obedience for intelligence. That’s why we think that dogs are more intelligent than cats. .. A dog will fetch a stick every time you throw it. A cat will look at you and wonder: If you wanted the stick, why did you throw it away in a first place? Get it yourself, idiot.” (page 335)


BOTD: The Reader

2007/09/22

Today’s Blog of the Day is “The Reader”.

Everything about ebooks and readers – all the stuff I like. See at http://wowio.wordpress.com/

Here I discovered that Sony is assumably preparing new version of reader – PRS 505. From the changes that should be included, none is IMHO really so important. The memory capacity of the reader with SD cards (which are reaching 8GB these days) is much bigger than you ever will need. If I should pick some enhancements hat would make a huge difference, it would be:

1) price. Make it accessible, meaning ~ 150 USD (which is about 145 CAD 🙂 – just kidding)

2) content – price and availability of books. The fair price for eBook should not be more than 30-40% of the paperback. Without DRM, of course. Who would want any DRM from the company with 2 rootkit fiasco’s in last 2 years (first and second) ?

3) Software – Sony please stop trying to create these terrible slow knock-off of iTunes, and outsource it to somebody that will write decent client, preferably in Java, so that it runs everywhere. Considering Sony’s software history, making it opensource would help to restore the trust …

Speaking of software, it should provide an easy way how to download and format RSS feed and web pages for offline reading, ideally again something in the way how iTunes handles podcasts.

I do not think that adding WiFi (what many people call for) will work on the eInk device – speed and lack of interactivity would allow to read only very static Web pages, and user input handling would be a big challenge.


Webbits 2007-06

2007/09/21

Few nuggets from recent surfing and reading newsfeeds:

A very nice explanation of differences between Ruby Gem and Rails plugin in Arun Gupta’s blog

The community seems to be still fairly divided on the “Is Vista good or bad” ? For the laters, read the story from the corporate IT point of view. I still have not found any good reason to upgrade :-).
Good story of how the experience of joining a project should not look like

Good discussion on Flex, Flash

Long but interesting blogpost on ontology

MySQL seen from the point of view of experienced SQL Server user

Some news from the GooglePlex: everybody seems to notice that Google added the presentations to spreadsheets and documents, so you have now complete simple but functional replacements of the Word, Excel and Powerpoint for free. Google also stepped again into territory of social bookmarking – after Google bookmarks they are launching Shared Stuff. The news I personally liked the most is  writeable API to GData.

Listing of hundred tools for Semantic Web


Spring example Petclinic on Tomcat 6

2007/09/20

If you try to deploy one of the Spring 2 samples included in the Spring framework source distribution – Petclinic on Tomcat 6 (6.0.14), the web application does not get loaded and fails with errror. The cause is the ClassNotFound exception for the class org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader, more precisely:


SEVERE: LifecycleException
java.lang.ClassNotFoundException: org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

The message is a bit confusing, because after peeking into spring.jar you’ll find out that class in question is it is contained in the jar. What is happening is “classical” issue of classloaders and the who-loads-what problem.

Fortunately, solution is very easy: what helped was copying the spring-tomcat-weaver.jar from Spring distribution into TOMCAT_HOME/lib directory and restarting the container.

This thread was helpful to find out the cause. It may also be mentioned in the documentation, alas – I did not get to reading it yet :-).


Experiment with Sony Reader battery life

2007/09/19

After returning from holidays with completely drained PRS 500 (see field test blog entry), I have decided to test what is the battery life of the fully charged reader without any usage at all. It was easy as I was pretty busy after being away 3 weeks.

The reader was fully charged on 29th of August (24 hrs with wall charger). After that, I did not use it at all, only checked every 2-3 days the status (the reader was switched off except this brief check). As of Wednesday morning, September 19th the battery was drained and the reader switched itself off right away (it is being charged as I type this). This gives us about 3 weeks of available standby time, without any use from page turning, until the fully charged battery is completely drained.

This result allows new angle in looking into the “7500 pageturns story”. Let’s assume that the battery indeed lasts for 7500 turns and let’s factor in the consumption of standby. When the reader is off, every week will take away about one third of the charge – or in other words you will loose battery capacity equivalent to 2500 page turns a week regardless whether you switch it on or not.

If you would turn page every 2 secs, 30 pages a minute, 1800 pages an hour, chances are that you might get closer to the ideal capacity. But if you read a book with a speed of 200 pages per hour (these are small pages) and have have time to read 2 hours a day, during you will “spend” about 7 x 2 x 200 = 2800 page turns – plus the weekly standby tax of 2500 page turns. With this, you will have available about 2200 turns – or less than a week in standby and if you will continue to read, you will have to recharge in about 9-10 days. Which is quite consistent with what I have seen o vacation: the reader died after two and half week (~ 6000 turns) plus about 1500 real pages.

So, the 7500 turns may not be such an impossible number – if you can read 1000+ pages an hour :-).

With the size of the screen, depending on the font and real page count books are anywhere between 500 and 1500 turns long. That means, one full charge is realistically good for 3-4 books.