Home » Archives for January 2010

Month: January 2010

Thoughts about Java and Python.

In my Computer Science course I was asked to write a program, in Java, that would compute the powers of 2 from 2^1 to 2^20 using only a while statement. At first I tried, with just the basics that we had learned so far, to create the program. Things did not go well because I couldn’t get the powers to work correctly using pre or post decrements. After I looked through the extensive Java Math library here is the solution I came up with:

Coming from a completely Python world, I wondered how I would have implemented the same program in Python. This solution is probably not the most elegant solution but Java was very heavy on the brain while I wrote it.

A couple of things I really missed from Java when coming back to writing Python were:

  1. Post and pre increment, I understand why Python doesn’t have them but damn are they useful
  2. Brackets for the while statement, I know brackets are horrible and messy but it really makes the start/stop of a code block easy to follow…fuck Ruby and its “end” command that is just ugly.

I really like the way Python’s “print” values work. It is much nicer to use %s inside the code and then add % (count, multiplier**count) at the end of the statement rather than using the “+” and variable names.

In the Python world Java gets a lot of shit from a lot of people. Granted, Java does have its share of problems and oddities but it is an extremely powerful, well backed language. Oracle’s support of Java after their acquisition of Sun Microsystems has dramatically increased since a great number of their products are built on Java. Probably the strongest piece of the Java programming language is the Java Virtual Machine. The JVM is so versatile, that, practically, every language can be run on it. There are implementations for Ruby (JRuby), Python (Jython)[1], and even, my favorite web framework, Django (Django-Jython)[2].

With Django and Python gaining traction in the Enterprise world Django-Jython and Jython are perfect building blocks for organizations that *have* to run Java for some of their applications or middleware but want the ease of use that comes with Django and Python for their internal or even external web teams. I like where things are going and I am on the bandwagon with both languages.

[1]: http://www.jython.org/

[2]: http://code.google.com/p/django-jython/

Meta and random musings.

Shorter (read: less content) blog post this week because life has been overly strenuous this week. School has become, almost overwhelmingly, full of homework and reading assignments as well as programming assignments. Besides that, work has been extremely tiring because of the workload and being short handed (for completely valid reasons –  I don’t blame any one for being where they are, under the same circumstances I would do the exact same things). Life at home has also been stressful because of all of the other factors.

Perhaps the most amusing thing I have seen today is http://www.michaelv.org/ which is a Javascript rendition of Windows 3.1 (the third operating system I ever used the first being DOS the second Apple something). This is where the meta part of this post comes in. Inside of the Javascript Windows 3.1 you are allowed to open a browser and because the browser runs Javascript you can once again open the same web page (Windows 3.1) over and over again, currently I am at 10 windows open but the screen shot only shows 2:

This can go on, I am assuming, indefinitely as long as you correctly format your window sizes. This  project gets 5/5 pyl0ns from me.

More amusing software that I found today, because of Jeff Croft (http://twitter.com/jcroft/status/81415197100) is exactly what I was looking for to make my transition from work, where I use Firefox as the default browser, to my regular browser (Chrome|Safari) much easier. I had looked for AppleScripts and tutorials to see if I could find some way of programmatically setting which browser was my default but my Google-Fu failed me. Now I can simply create 2 “programs” that can be launched from LaunchBar that will set my default browser without all of the extraneous clicking, plus it runs on Jython which is just cool since at this point in my life Java and Python are the only things I am focusing on. I highly suggest checking Project Sikuli out, there has to be something in your life that you can automate.

“The Book of Eli” – don’t waste your money. *spoilers*

I normally don’t go to the theatre to watch movies (I have a nice size TV and a good surround system) but, occasionally, it is nice to go to the theatre and watch a movie. This was not one of those times.

Watching the trailers for “The Book of Eli” had me believe 3 things:

1. Denzel is a badass

2. He has a magic book

3.  Gary Oldman wants to take it from him

The first half of the movie is spent on establishing my number 1 assumption with Denzel fighting and killing dozens of people with a sword, gun, hands, and what ever else he could use. At the end of everyday he spends time reading assumption number 2. After he reaches the town that Gary Oldman runs the movie starts to go down hill as we learn that this book is “The Bible” not just any old magic book. (queue boredom) Gary Oldman wants to use the words of “The Bible” to make un-educated people follow him, tricking them into believing it, and thus set himself up as king of the world (how early Christian of him).

*More spoilers*

From there the movie gets boring and predictable, the only reason I didn’t leave (I’ve never walked out on a movie before) is that I wanted to find out what was out “west”. Turns out that “west” was Alcatraz where Alex (from “A Clockwork Orange) is a crazed looking old man who prints books to give back to the world. The only real plot twists from the middle to the end of the movie was:

1. The book is in braille

2. Denzel was blind the whole move (but God let him see so that the book could make it “west”, yay God!)

The book doesn’t make it “west” but luckily Denzel memorized the entire book so he could repeat it word for word when he got there (I know, right?).

Summary:

The movie, from the middle on, is shit. The first half is good for action. If you are going to watch it, wait until there is a decent torrent – there is no point wasting your money.

My Battle of Twitter Clients.

Recently (after upgrading to Snow Leopard) I have been forced to find other twitter clients than the one I had been using for almost a year, Nambu. As a part of the MacHeist offering I got a copy of Twitterrific which I tried for a couple weeks…I hated it. Here they are with their pros and cons:

Nambu (10.5 version):

Pros:

  • Multi-account setup is easy
  • Good layout

Cons:

  • On Snow Leopard, if left running will use 2.0GB of RAM

Nambu (Snow Leopard version):

Pros:

  • Smaller RAM usage
  • Free

Cons:

  • New UI is awful
  • The break outs of retweets
  • Resizing window doesn’t resize tweet field

Twitterific:

Pros:

  • None, simply awful

Cons:

  • Always on top
  • Horrible UI
  • It costs money

TweetDeck:

Pros:

  • Multi-column so you can see all of the info you want

Cons:

  • Ugly – even if the color scheme is changed
  • Adobe AIR
  • Multi-column

Tweetie:

Pros:

  • Beautiful UI
  • Wonderful multi-account setup
  • Overall, very enjoyable

Cons:

  • Pop out compose field
  • Search setup is odd and clunky
  • Dock icon doesn’t show number of tweets
  • Number of tweets isn’t shown anywhere

Echofon:

Pros:

  • Simple, clean interface
  • Number of tweets is clearly visible
  • Search is quick/easy to use
  • Compose bar is built in
  • Slide out drawer info is helpful

Cons:

  • Multi-user accounts are clunky

After my full evaluation of these clients I’ve found the perfect twitter client for me would be Echofon and Tweetie smashed together, giving me the in app compose bar with the left sidebar and the slick interface that Tweetie has.

I’m still unable to decide between Tweetie and Echofon so I am currently using both. (side note: leaving 4 twitter clients open at a time quickly reaches the API limit.)

TextMate to VIM and back, why I made the switch.

About 6 months ago I made the switch from TextMate to MacVim because of a couple things:

  • TextMate is kinda, not really being developed anymore
  • Many other options are out there
  • TONs of Python developers post about their editors all the time
  • VIM is hardcore and installed by default on many Linux systems (which I work with all day)
  • I wanted to take a side in the holy war (Emacs vs. VIM)

After doing a lot of research on the editors that were available I tried out Aquamacs and played around with it for a while. Emacs is powerful, as long as you install the right plugins…and know LISP(ugh!). Emacs is just too much pressing of the control button and shift and other modifier keys, I have carpal tunnel  and pressing Control + (modifier key) is too much if I have to do it repeatedly.

I switched to MacVim, fewer modifier keys, much simpler to use and no knowledge of LISP is required. VIM syntax is much better, but still coding to be able to code isn’t really ideal for me. Luckily I found the right plugins and the right tutorials and got everything working, I even switched to MacVim as the default editor for everything. I spent the next 5 months learning how to use MacVim and since, I got a new job, doing support for the best hosting company in the world, using VIM was very helpful.

Recently on Twitter I saw this: http://justinlilly.com/blog/editor-stats/ After looking through the screenshots of all of the different editors that are out there I began to miss using TextMate with its Cocoa-ness and modern feel, VIM is very archaic and keyboard dependent, while being ideal for some people is not idea for me). I installed all of the bundles that I wanted, and, there was a bundle for everything that I wanted. IMO, using “svn co …” is much easier than downloading, unzipping, and copying the files to the right directories and editing vimrc to make sure that the new modules are being used when they are supposed to be.

So now I am back to using TextMate as my default editor and I am enjoying it tremendously. There is no coding involved to change the background color, no command to invoke to have the sidebar open, no navigating with the keyboard only when using NERDTree, no more having to type NERDTree, and most of all bundles are so much better, faster to install and modify than with VIM.

I am still, eagerly, awaiting the release of TextMate 2 but for now I am happy to be able to change things without code so that I can spend my coding time doing something productive instead of configuring my editor.