« archives

July 2008
S M T W T F S
« Jun    
 12345
6789101112
13141516171819
20212223242526
2728293031  

recently

news from around the web

» view all

Archive for the 'Technical' Category


Linux, take 14 (Ubuntu 7.10 Review)

Friday, February 15th, 2008

I’ve had an on-and-off relationship with Linux for the past 10 years. It all started with RedHat 5.2, which I got on a CD that came with a book (because it would have taken 3 days to download on the old 56k modem, and I thought the book was a good way to start). Now, just to clarify, I was thirteen at the time.

Read the rest of this entry »


Static vs. Dynamic Typing

Friday, January 25th, 2008

Every good programmer probably has to write about their opinion on this subject once in their lifetime, so here’s my take

As part of my consulting gig I work on “Enterprise Java” code. I just had to write this line after receiving two separate exceptions on the matter (types obfuscated to protect the guilty (and they are oh so guilty… I won’t get into that)):

String somenumber = (String) ((TypeAttribute) TypeCache.getTypeFromCache("Thingie") .getAttribute("someNumber")).getValue((Thingie) object);

You’re a freaking computer! Figure it out for me!

Also, xkcd, as always, says it the best.

It’s revealing to be a Java programmer every 2 weeks, and a Ruby and Flex developer the next 2 weeks, with PHP and JavaScript by night. I understand everything about why static typing is good and proper, but today, when computers (and compilers especially) are powerful and intelligent, I think the computer should do what a computer is great for, namely figuring out extremely complex yet orderly relationships between types of things, leaving the programmer to focus on much more important stuff.

When I’m coding in Java, it takes me 50 lines of rudimentary logic and typecasting muck in a new inline comparator class to do something as simple as sorting custom objects.

In Ruby it’s a one-liner. I don’t care how much less efficient that is for the computer (and it’s not), that is worth its weight in gold in programmer time and code elegance.

I enjoy dynamically typed languages, and any good programmer knows that it’s programmers having fun that makes good software, not programmers spending 50% of their time dealing with code that gets in their way. What kills me most is that computers are really good at automatically doing the stuff that’s not fun—that is in fact what they’re designed to do—and there are people who have fun making that stuff fast, so why don’t we just let them?

New camera! Olympus E-510

Thursday, August 9th, 2007

Flowers with nice background

I was waiting for the UPS truck all day today, and it finally came at 6 PM with my new camera. I was jumping around like a little kid on Christmas, which was probably scary for my roommate and his girlfriend to watch, but I couldn’t help it.

My previous camera was an Olympus E-300, but it was sadly stolen from my (accidentally) unlocked car about a year and a half ago. I never saw it again. Since then I’ve used my dad’s Olympus E-500, and it’s served me very well.

After Olympus released their new model E-510, I was pretty convinced it was the next step for me. It has 10 MP of resolution (not that anyone ever needs that), Sensor-shift Image Stabilization (works with all lenses), and Live View. In addition, it pretty much does away with noise concerns at high ISO, which was a problem with the E-500 and below. In fact, noise at ISO 1600 (the highest sensitivity) looks an awful lot like nice film grain, as you can see in this shot.

It came with two lenses, and while you can get the camera with just the wide-angle 14-42mm f/3.5-5.6, it’d be dumb to pass up a 40-150mm f/4-5.6 (80-300mm in 35mm equivalent terms) telephoto for only $100 more. Both are excellent lenses, despite the fact that they’re a little more plastic than their previous models, and the telephoto is a slightly slower (the clean high-ISO and Image Stabilization makes up for it). They’re sharp, have surprisingly nice bokeh, and are darn small and light (hence the plastic). You’ve never seen a 300mm equivalent telephoto zoom that’s as small as this one. A very portable package all in all.

Other than all that technical stuff, it takes beautiful photos! You can see them above, and if you view the whole post, and in this zenphoto album here. I’m going to Yosemite next week for a family camping trip, and I plan to take lots more. I’ll be sure to post them afterward.

Read the rest of this entry »


Ubuntu 7.04 Feisty Fawn

Thursday, April 19th, 2007

I’ve recently gone back to booting Linux every other day or so when I don’t have any pressing graphical or… er… “gaming work” to do. It’s been really slick, especially on my new hardware (nVidia graphics cards are SO much easier than ATi/AMD, sadly. C’mon AMD, open-source those drivers).

Ubuntu 7.04, Feisty Fawn was released today right on schedule, and it’s the closest thing yet to a usable desktop Linux OS. It’s still in the nerd camp for some reasons, but I’d go so far as to say my mom could use it (hi mom!) without too much trouble, and that’s saying a lot. ;-)

There’s a great review up here, and also great news that Java EE5 and the Java 6 JDK will be included in the main Ubuntu repositories! I’m glad to see Java integrating cleanly with Linux and under an open-source license. I remember just a few years ago when it was hard to even run a Java app on Linux, and now it’s just an apt-get away.

And if you want to impress your friends, check out Beryl, also newly in the main repository. It allows for insanely cool 3D effects and multiple desktops on a spinning cube, which is surprisingly useful and a helpful visualization concept as well as being an absolutely SWEET effect. I’ll post some screenshots a little later.

What are you waiting for? If you’ve interested in Linux and what it can do (a lot, now), grab an Ubuntu live-cd and see if you like it. [Note: if you can’t get into the main Ubuntu site because their servers are swamped, try this list of torrents]

Google Calendar and Mozilla Thunderbird

Sunday, April 15th, 2007

It seems there’s finally a way to integrate Thunderbird/Sunbird/Lightning (the Mozilla Calendar project) with Google Calendar in both directions, using the Provider plugin. There’s a great tutorial on it here that worked perfectly for me.

The Calendar project (Lightning) still has a ways to go before it can compete with Google Calendar in usability and user interface quality—a canonical example might be the “Add task” pane, which scared me to death when I opened it…

Adding a task in Mozilla Sunbird

It’s a generic form interface of course, but man is it cluttered and complex. Adding a task is usually needs only one line of text—“File my taxes by April 16th” (a reminder for all you Americans ;-), or “Go to the store and get milk.”

Less often you add a deadline or date, and even that could be extracted from one line of text, making the interface both simple and powerful. Google does this for adding calendar events and it works marvelously.

Rarely do I complexify my tasks beyond that, so I don’t want to always be forced to look through all these options! Even clicking the “<< Less” button (you might have noticed) leaves all the fields above the description box, and the dual date fields are enough opportunity for confusion.

Obviously there’s a lot of power once an interface like this is learned, but I believe it’s possible to keep all the power of a complex interface while simplifying it following principles of good interface design. On this screen, if the title field was larger than the rest and bolded to signify it’s the most important bit of information, I would be much happier, as my eye would be led to where it needs to go most often and for the best reason. Suddenly the purpose of the interface becomes obvious, all the secondary options get a secondary appearance and thought, and it becomes much less confusing. Simple. And there are dozens more simplifications and improvements that could be made to every interface that looks like this.

I only care now because the Google Calendar link means I’ll be trying to use Thunderbird/Lightning for my main calendar now, so the interface better be on the same level or I’m going back to the web!

Any thoughts? What would you do to this screen?

Athlon X2 Prices cut! Go buy some AMD!

Monday, April 9th, 2007

I just bought an X2 5200, and now it’s $50 less! How disappointing. Prices were cut sometimes almost in half today as AMD struggles to compete against Intel’s Core 2 Duo, arguably the better processor by a small margin.

I said this in my review of my new processor on Newegg—no one will ever notice a difference between the Athlon X2 and the Core 2 Duo in even the most strenuous computing tasks. Games will still play wonderfully (that mostly depends on the graphics card anyway), any OS will love the blazingly fast dual cores, and the biggest performance bottleneck will still be the quantity and speed of your memory!

Whether the processor is AMD or Intel makes only a slight unnoticeable difference, so I see a great advantage in supporting the underdog. Here’s why.

Competition from AMD very likely caused the C2D’s existence: the Athlon and Athlon XP’s lead in the market for several years and made Intel basically abandon the megahertz race (and NetBurst’s idiotic long pipelines in the process), then AMD was first to the punch with dual cores, which Intel had to counter and do better. The competition probably made all that development much faster and much stronger, and we have more powerful computers than ever because of it.

As a consumer, and not a microprocessor engineer, the best thing I can do to support this competition and the ensuing innovation is to help keep AMD alive and be proud of it. They’ve always given me quality stable systems, from my K6-2 (333MHz), to my K6-3 (550MHz), to my Athlon XP’s (first 1.4 GHz 1700+, then 2GHz 2600+), and now my Athlon 64 X2 5200. Even this very server is powered by four 2GHz Opteron 270 cores (thanks Slicehost!).

I see no reason to add a measly 10% of performance to any system if it only supports monopoly and stifles competition. Intel will always survive, trust me, but if you want to force them to make even better processors, support AMD. The lowered prices are in, and it should be a no-brainer when the top-of-the-line dual-core chip is only $249. Jump on it.

My Aversion to Java Explained

Tuesday, March 27th, 2007

I work on Java software for my day job, and now for my night job as well (don’t worry, that’s not Zenphoto). I learned Java in college, I’ve used it for years, I know it well, but I’ve never really liked it as a general rule; as in, I’ve never ever thought “Wow, Java would be really great for this project!” with any enthusiasm. Java has been the choice because of other reasons in every case—on one project, my team chose it because it was the one common language we all knew, so there was no learning curve. At work, I’m stuck with it because that’s what the “enterprise” software I customize is written in. Now in a new project I’m getting into, we’ve decided on it for scalability and a new web application framework called JSF, and it’s actually looking pretty good so far. But as I sit here learning JSF and the component framework I’m going to be working in, I came to a clear realization:

Nothing in Java is simple.

That’s the bad taste in my mouth. That’s the main thing that makes me dread opening NetBeans or Eclipse. The reason is stupid: I am a designer at heart, not a programmer. Programming is more visual for me; I try to see organization and elegance in the end user interface as well as in the code behind it, and Java pretty much obscures that notion of beautiful code entirely. It’s just not simple enough to be called that.

So what programming languages do I like? Well I’m a PHP programmer by preference, because very little gets in the way between me and the HTML. It’s inherently simple, because it gives you pretty much nothing to start with. Next on the list is JavaScript, which I like a lot, for many reasons. And after that, ironically, I guess it’s Java.

So I have a love-hate relationship with Java. On the one hand, it helps you do stuff you couldn’t ever do in a simpler language, it’s automatically cross-platform, it’s generally fast these days, and it’s easy to work with in the right IDE. On the other hand, it’s complex. So what? I can live with complex. It just annoys the heck out of me sometimes that I have to jump through so many hoops just to build an interface component. Sigh… in the long run, though, it’ll work better for it.

But one thing you can be darned sure of: Zenphoto will never be a Java application.

Built me a new system!

Monday, March 19th, 2007

New Computer case insides.

I decided to go to Fry’s today and pick up parts for a new computer, mainly because of the RAM upgrade problems I’ve been having with the old one (I couldn’t put more than 512MB in it, any more would crash the system for some unknown reason).

I went all out, but didn’t break the bank too badly. Here are the specs:

  • AMD Athlon 64 X2 5200+ (2.6 GHz) Dual-Core processor
  • Gigabyte M55 NForce4 Socket AM2 motherboard
  • 2 GB OCZ 800MHz DDR2 RAM
  • Nvidia GeForce 7300GS 256MB Video card (so I’m not a hardcore gamer…)
  • Thermaltake Matrix case, Thermaltake 400W Power supply
  • And to top it off, a new wireless mouse, because it was on sale.
  • (Plus existing hardware: Ethernet card, SB Live sound card (for MIDI keyboard support), 250GB/40GB hard drives, DVD±RW/DVD drives, etc.)

New Computer case front

Basically the only reason this is a “new computer” and not a “CPU upgrade” is because I got a new case, in hopes that it would be quieter than the old vacuum cleaner. It is, so I’m happy. That and the RAM and CPU upgrade make it a workstation worth developing on, and the upgrade process (moving the drives) was fairly painless, with ye olde “move hard drive during XP upgrade install” method.

I have to say, the speed improvement going from the old system to this is very noticeable. It’s probably the RAM mostly, followed by the extra multitasking ability afforded by the dual-core processor. That boggles my mind, to have an actual dual-core in my own computer… my dream systems always had dual processors, and now here it is, nicely consolidated. Blows me away.

Okay, now to clean up all the packaging that’s strewn across my room… Whew!