Archive for the ‘Technology’ Category

WordPress Rocks at Updates

Tuesday, July 15th, 2008

I feel I owe it to my friends who put up with my senseless Python fanboying to admit WordPress is not only a great blog engine, but rocks at updates.

I just upgraded from 2.5 to 2.6 by doing a simple svn switch http://... and then logging into the web admin interface. It took about 30 seconds to complete.

Now compare that to my last experience upgrading Trac from 0.10 to 0.11… ugh.

I love you Trac. Python just lacks an easy and efficient web app deployment method.

JavaScript Collation Fail

Monday, July 14th, 2008

In JavaScript, the localeCompare method on Strings seems like a great way to properly sort strings, but its not:
localeCompare Javasript method in 4 browsers
Hint: The last line should all look the same. At least I expect Firefox and Opera to agree. You can’t expect much from IE6.

For kicks try out other browsers and post the final sorted list in the comments (hopefully my blog supports unicode).

Thunderbird Import Fail

Monday, July 7th, 2008

Do I really need to see this?
Thunderbird screenshot with only 1 option: Don't import anything

Summer of Hacks

Tuesday, May 13th, 2008

My Linode has been experiencing a huge number of brute force login attempts in the past week. I don’t keep detailed statistics, but I would guess there have been 300 attempts in the past week as opposed to the usual rate of about 500 attempts over 200 days (2-3 attempts per day).

Denyhosts has been doing its job perfectly. It should be illegal to run a Internet exposed SSH server without it or a similar tool.*

Thanks to HoopyCat in #linode for pointing me to a SANS Internet Storm Center article explaining the Summer of Hacks phenomenon.

* Unless of course you only accept key based logins.

Tim Bray’s Multi-Inflection-Point Alert

Saturday, April 26th, 2008

While lots of people wiser than I have already commented on Tim Bray’s excellent Multi-Inflection-Point Alert post, I’m eager to avoid housework today. ;)

…we’re simultaneously at inflection points in programming languages and databases and network programming and processor architectures and Web development and IT business models and desktop environments. Did I miss anything?

Ugh, I feel like I’m drowning in all of these areas. I’ve basically given up on keeping up with networking administration and technology (just give me HTTP and I’m happy).

I’m happy with my vanilla Gnome desktop environment, but I still have to be proficient with Microsoft Windows in order to survive. I’d love to be proficient with OSX, but I don’t have the money for Apple hardware (or the desire to learn yet-another-desktop-environment for that matter).

This is why documentation is so important and should often assume nothing about its reader’s knowledge. I’m sure there of lots of people jumping directly into TurboGears and Django development without knowing the basics of Python development like the interactive console and easy_setup.

CORBA is dead. DCOM is dead. WS-* is coughing its way down the slope to dusty death. REST, they say, is the way to go.

Thank God! As a web developer I find myself preaching the gospel of REST+HTTP+JSON over XML based technologies like SOAP and XMLRPC. Tim Bray actually had a great post about JSON vs. XML a couple of years ago to which I’d only add: “Use XML only if you absolutely have to.” ;)

…I think that SQL’s brain-lock on the development community for the past couple of decades has been actively harmful, and I’m glad that it’s now OK to look at alternatives.

I’ve been doing a very poor job of evangelizing this very point to a couple of my friends who develop primarily on PHP and MySQL. SQL is really really great for certain use cases, but forcing yourself to always have to think of object persistence in terms of SQL tables is just masochistic.

…it’s increasingly starting to look like threading is a bad idea; don’t go there.

As a pro-GIL Python developer, I obviously couldn’t agree more! The venerable Donald Knuth recently chastised hardware manufacturers as well for pushing software developers toward ubiquitous parallelism.

That being said, I think threads definitely have good uses. I just disagree with some people’s Code Parallel or Die mentality.

I think someone at PyCon this year basically summed up my feelings on threading for server applications: “If it needs to scale to multiple cores, it probably needs to scale to multiple machines which threading doesn’t help with at all.”

(I haven’t written a non-trivial desktop app in years, so perhaps threading is more useful there.)

Now all of a sudden it’s PHP and then Rails and a bunch of other frameworks…

No mention of Python… ouch. I think once Django hits 1.0 that will change though.

Go read the Business Models and Desktops sections for yourself. They’re fantastic. :)

History Meme

Friday, April 11th, 2008

For some reason I find this meme interesting… I don’t know why I find it interesting, but at least its brief.

Home Office Computer (Debian Unstable)

$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s\n",a[i],i}}'|sort -rn|head
   99	sudo
   80	cd
   59	ssh
   52	vi
   47	ls
   19	cat
   17	ipython2.5
   12	svn
   12	man
    8	host

Server I do most of my work on these days… (Ubuntu 6.10)

$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s\n",a[i],i}}'|sort -rn|head
  288	vi
  108	svn
   59	cd
   15	ls
    8	screen
    4	grep
    2	sudo
    2	mv
    2	make
    2	cat

I haven’t seen ipython on anyone else’s yet. I’m constantly hopping in & out of ipython to test things.

On the GUI side of things I use Gnome, Firefox, Epiphany, Gnome-Terminal, Banshee, Pidgin, and NetworkManager every day.