Tuesday, November 13, 2007

Yet another loss for client-side Sun

I've been doing a lot of reading about Android and all the hoopla. The first thing that confused me was the fact that the sample Android code looks exactly like Java, yet they don't call it Java. Here's why.

Let's examine how much Android completely effs Sun. Android uses the Java language, but not the Java VM. So technically it's not Java. In the mad rush to profit from the impending mobile Internet platform, Sun has placed it's bets on JavaFX to strengthen Java ME and Java SE on mobile gadgets. Unfortunately for them, the problem wasn't the difficulty of the programming language, but the fragmentation and incompatibilities between VM's which has hurt mobile Java. Android is designed from the ground up to create compatibility first, and that's a major factor in the success that it will enjoy. And since it all runs on the Dalvik virtual machine instead of the official Java VM, Sun gets a solid zero dollars out of it.

Monday, November 12, 2007

Today, Google released their Android SDK amidst massive hoopla. I was pretty excited about this too, but after reading some tutorials, it just looks like a slightly beefed-up Java ME. I guess the intent is to create better compatibility among different phones, but frankly, I don't see what all the hoopla is about, other than the fact that Google is behind it. What am I missing?

Update:
After more reading I've changed my mind. It seems to me that the iPhone is still way "cooler" than any gPhone (it better be for how much it costs), but I can see how much value the top-to-bottom stack of software that Android offers can really help compatibility between different phones.

Saturday, November 10, 2007

A Tale of Default Behavior

I built a new computer a couple months ago and, naturally enough, installed Windows XP (for games). Since XP comes with Internet Explorer 7 and I have only used Firefox for years, I figured I'd try IE7 just to see what it was like. The things I immediately noticed were that if IE7 is closed with multiple tabs open, when it is reopened, it will reopen all these tabs. I had never seen this feature before in Firefox and I really liked it. The second thing I noticed was IE7's a lack of "Undo Close Tab" like in Firefox, which I really miss. To make a long story short, IE7 started crashing fairly frequently, while Firefox never crashed - ever - so I switched back. But I missed the reopening of tabs when starting Firefox that I made the effort to see if it could be done (the effort turned out to be about 5 seconds of Googling it). Turns out there is an option to reopen tabs from the previous session under Tools->Options->When Firefox starts. Ahhhh, that's the ticket. I guess that just goes to show how important the default behavior for an application is, even it can be configured to behave differently.

Anyhoo, here is an in-depth analysis of the Excel floating point rendering bug.

Tuesday, November 6, 2007

Mainstream Consumer Linux?

Many have been claiming that "desktop Linux" is going to break into the mainstream this year (for the past decade). Until now, I would have say that has proved to be bunk. But in light of this and this, and other developments, it seems as if Linux is finally breaking through in the consumer market. At last!

Wednesday, October 31, 2007

I just can't miss an opportunity to promote Ron Paul:

Java Serialization Debugging

Today I had a fight with Java as I was inadvertently trying to serialize something that was not serializable. The object being serialized had a crapload of fields, which in turn, all had craploads of other fields so I pretty much had no idea what was causing the incredibly uninformative "Exception in thread "main" java.io.NotSerializableException." So after spending an hour trying to write a function to reflectively traverse the object tree in search of non-serializable fields, I found this helpful piece. The DebuggingObjectOutputStream is nice, but the comments have something even more simple and helpful: set the vm parameter sun.io.serialization.extendedDebugInfo=true, and voila, helpful stack traces to find what object is actually causing the serialization errors!

Monday, October 29, 2007

I apologize to all my die-hard readers out there yearning for my every word, as I was on vacation last week and was unable to post. To summarize: Washington DC is cool. You should go. In the meantime, I still have nothing meaningful to say, so a link to someone who does will do.

This is really only going to make any sense if you have done any programming, but if you have, it's hilarious.

Tuesday, October 16, 2007

Is it just me or does programming inspire foul language? The words I use to describe my computer have generally come to be laden with profanities. Anyone else experience this phenomenon?

Monday, October 15, 2007

Java SecureRandom weirdness

Ok, now I really lied two posts ago since I'm going to go off topic again. I clearly have no ability to focus. I would have posted something within focus this weekend, but Half Life 2: Episode 2 came out and I really had no choice except to play it all weekend.
So anyways, for my own and perhaps others' benefit, I'm going to document my experience with debugging some Java weirdness because it was one of the more interesting problems I've had to deal with. So I'll dive in:

We have a server-side process that runs on a Linux server and processes a lot of oracle database data and converts it into an H2 database (details are unimportant). On one particular machine, this process would hang forever. There were no errors, no exceptions, nothing; it just hung. Last Friday I was tasked with figuring out why, and it being Friday I wasted a couple hours trying to debug what turned out to be a completely unrelated process (my brain was obviously fried). So fresh this morning I had another go at it. I had telnet access to the server, so I made use of jstack, a nifty little utility. Here's the important output:

- java.io.FileInputStream.readBytes(byte[], int, int) @bci=0 (Compiled frame; information may be imprecise)- java.io.FileInputStream.read(byte[], int, int) @bci=4, line=199 (Compiled frame)- java.io.BufferedInputStream.fill () @bci=175, line=218 (Interpreted frame)- java.io.BufferedInputStream.read1(byte[], int, int) @bci=44, line=258 (Interpreted frame)- java.io.BufferedInputStream.read(byte[], int, int) @bci=49, line=317 (Interpreted frame) - sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedByte() @bci=12, line=453 (Interpreted frame)- sun.security.provider.SeedGenerator.getSeedBytes(byte[]) @bci=11, line=123 (Interpreted frame)- sun.security.provider.SeedGenerator.generateSeed (byte[]) @bci=4, line=118 (Interpreted frame)- sun.security.provider.SecureRandom.engineGenerateSeed(int) @bci=5, line=114 (Interpreted frame)- sun.security.provider.SecureRandom.engineNextBytes(byte[]) @bci=40, line=171 (Interpreted frame) - java.security.SecureRandom.nextBytes(byte[]) @bci=5, line=433 (Interpreted frame)- java.security.SecureRandom.next(int) @bci=17, line=455 (Interpreted frame)- java.util.Random.nextLong() @bci=3, line=284 (Interpreted frame)

The thread was stuck trying to read a file as a randomness source. After some digging, here's what I found. Basically class SecureRandom is reading a file that generates random bits so it can create a pseudo-random number. As the forum folks found, this file is specified in $JAVA_HOME/jre/lib/security/java.security under securerandom.source, and the default is /dev/random. Unfortunately reading /dev/random will block until the OS has entropy data (from typing on the keyboard or other somewhat random happenings in the computer). Here's some more detail.

So if you don't need really random randomness you can use /dev/urandom which will not block. That sounds easy enough, but when I checked this in java.security, it was already pointing at /dev/urandom. So what the heck was going on?

Apparently the H2 driver that we are using calls SecureRandom.getInstance("SHA1PRNG") to create the SecureRandom class. Inexplicably, this will end up using /dev/random no matter what the java.security file says. This bug report claims this is as designed. I'm sure there is a reason for this strangeness, but there is no explanation.

Here's a test program that shows the difference (pardon the lack of formatting):

import java.security.SecureRandom;

public class SeedTest {
public static void main(String args[]) {
try{
System.setProperty("java.security.debug","all");
System.out.println("I will try to instantiate SecureRandom now");
SecureRandom rand = SecureRandom.getInstance("SHA1PRNG");
//SecureRandom rand = new SecureRandom(); this makes all the difference
int dummy = rand.nextInt();
System.out.println (dummy);
System.out.println("FINISHED");
} catch (Exception e) {
e.printStackTrace();
}
}

Running this on the particular problematic machine hung with getInstance, but worked fine with new SecureRandom(). Yowza. After all this I'm not sure whose problem this is. Obviously the machine with /dev/random not working is at fault, but why is SecureRandom using /dev/random when I specifically tell it to use /dev/urandom? No idea.

Saturday, October 6, 2007

I lied

Ok, I lied in the last post. I'll continue on track next time. In the meantime, we've all seen plenty of these, but here's some more. They're funny.

Thursday, October 4, 2007

I'm going back to 1995

This will be my first in series of posts on one subject. Yes, that's correct. I will attempt to maintain some focus and stay on one topic instead of posting about whatever happens to be going on in my brain at the moment.

I have entered into the world of 1995 with the Win32 api and visual c++ for no reason other than to waste my extremely valuable time. This has been the site of my realization-that-everyone-else-realized-about-fifteen-years-ago. It dawned on me that despite the quirks and the crap throughout Windows, programming in it takes a lot of the guesswork out of things. For instance, if I were to make an application for Linux, there are many differences among the different distributions (filesystem layout comes to mind first) that I would have to account for manually within my application. Another example: say I want to capture the video from a webcam in my application. With Windows there is one function I can call, check for error, and go from there. With Linux, I have to make sure that libraries to handle low-level access to the webcam are installed properly and I have to know where they are for many distributions. Most likely I want to just support one api so I have to make sure it is installed. If I am writing an application with a wide variety of customers, it is easy to see why Windows is the easy choice here (ignoring the fact that it is already installed on 99% of personal computers to begin with). I guess I've seen the value of the Microsoft "platform," despite its many faults (and steep monetary cost).

Saturday, September 29, 2007

"Clinton said such an account program would help Americans get back to the tradition of savings that she remembers as a child, and has become harder to accomplish in the face of rising college and housing costs."

Yes, the good old America tradition of not saving your own money, but the government's money (which is, in essence, every taxpayer's money minus 50% because of government waste). What a brilliant idea. Now I wonder, maybe people should perhaps, this will sound crazy I know, save their OWN money? Clinton's response: "She argued that wealthy people get to have all kinds of tax incentives to save, but most people can't afford to do that.'" Well, this is going to even more crazy, but I wonder if the reason people can't afford to save is that they are blowing all their money on things that can't afford? Now I'm just going to jump off the deep end, so bear with me, but what if people lived within their means, didn't buy twice as much house as they can afford, didn't buy the latest and greatest car, and shudder, saved some money for the future? Whoaaaaa, that's just crazy talk.

Friday, September 28, 2007

Thursday, September 27, 2007

There's a reason why I chose the science/engineering/technology route for my life. In technology progress in inevitable; there may be periods when advancement is slower than it could be, but there is always a guarantee that it moves forward. I can guarantee you that in five years computers will be faster, phones will be smaller, materials will be lighter and stronger, and batteries will last longer. It feels good to know that we will always be moving forward.

As opposed to governments, which remain eternally stupid, and are guaranteed to make the same mistakes over, and over, and over, and over again. I'm not going to go into specifics because there are too many to mention. I'm sure you can think of a few.

In the meantime, one of my favorite quotes these days is from Benjamin Franklin:
"Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety."

Tuesday, September 25, 2007

In the recent tradition of posting links instead of actually writing something myself, check it out.

Monday, September 17, 2007

If you want to see the greatest blog post ever (you do), then you should definitely head over here.

Yes, that's right, that "Letterbox" feature is my amazing desk. And the "arms race" is happening in my aisle. Let the awe sink in.

Wednesday, September 12, 2007

Saturday, September 8, 2007

Wow

Ron Paul is the first politician in a looooong time that I can actually get behind enthusiastically. Fighting corruption, cutting the gigantic chunk of bureaucracy out of government, not going to war to solve every problem, and actually adhering to the Constitution? Right on.

Tuesday, September 4, 2007

This is what makes life worth living

Nuff said.

Definitely check out Mr. Silent Killer Gas Passer, it's one of my personal favorites.

Sunday, September 2, 2007

How not to apologize

Here is the one of the more pathetic apologies I have seen in a while. Let's examine a few snippets:

"How can you overreact when it's your children?” - Very easily, she demonstrated that overreaction pretty well.

"'I'm very sorry, but I'd do anything to protect my kids,' she said. 'If people want to put me down, that's their right.'" - For the idiot lady's future reference, "I'm sorry BUT..." is not an apology. News flash, most of the world isn't made up of reputable looking white people.

Google maps fun

Today I ran across my first bug in Google Maps. Look for the location of 1600 Feise Road, O'Fallon, MO. That doesn't seem quite right. Look closely at fEIse road on the right part of the map. Then look to the left at fIEse road. So then look at 1600 Fiese Road. This is the actual location. This a pretty newly developed area, but the road name changes which is obviously not right. This was the first time I've ever had an errorenous output on Google Maps.

Wednesday, August 29, 2007

Late night

Wowee. It is awfully late (for me) but I am so pumped that I felt obligated to post to declare my triumph. Last week I decided I was going to write a Win32 C program to play wav files for no reason other than I've never done anything like this. I did some simple C stuff in Linux in college with a smidgeon of Visual C++, but I've long forgotten most of that.

It took me a long evening last week to get Visual Studio installed and a simple Hello World program compiled and running with debug symbols. Since Visual Studio Express Edition is free and missing all sorts of functionality, I had to download a freeware resource file editor and a hex editor for examining the file format of wav files . Every single step of getting anything working required me to do an Internet search; basically I had (have?) no clue what I'm doing. Setting up a win32 development environment is obviously a whole lot different than a C environment on Linux (which is nearly always set up by default upon installation) or a Java environment.

As for general Visual Studio observations, maybe it's because I have the free edition or maybe because I'm blind and can't find it, but I am really missing refactoring support like in a current Java IDE. That's my main complaint at the moment.

But to finally get to my massive accomplishment of the night: I was able to finally get a wav file playing. My main problem was exactly this, most like resulting from the fact that I completely forgot about fundamental concepts like the stack and variable scope. That took me a good 3-4 hours to figure out; I've been spoiled by Java's garbage collecting. Now to get something other than an empty frame with random message boxes in my program...

Or maybe I'll just go to bed.

Monday, August 27, 2007

Neat pictures

I don't feel like writing anything meaningful (not that I ever do...), so instead here's the link to the photos of my Colorado trip. Enjoy. I certainly did.

FYI, pictures can't do justice to the view at the top, but they give you a little idea of how mindblowingly awesome it is up there.

Sunday, August 19, 2007

Vacation

Let me tell you a tale of men and mice, of victory and defeat, of rain and thirst...let me tell you a tale of my vacation...

Last week was my first vacation since I entered the real world (dang it) last May, my first loooong overdue vacation. The majority of it was spent doing a whole lot of nothing, but the story does not end there.

We (Dad and I) took a little trip to a place called Mt. Massive, Colorado; and there the story begins. To summarize, here are some travel tips for those readers who think they want to go climb a big mountain:

1. Don't use a tent manufactured circa 1975. It is pretty much guaranteed to not be waterproof.
2. Don't try to pitch said tent in the pouring rain, especially when the rain will stop in thirty minutes.
3. Do take enough water so that you don't run out in the middle of your trip and nearly die from dehydration.
4. Definitely do it again next year.

If you haven't figured out the highlights of the trip, I'll summarize:

We used a tent manufactured circa 1975. We pitched it during the pouring rain that stopped about a half hour later. The tent leaked and Dad woke up in a big damp spot in the middle of the night. Ironically, after all this rain, we didn't take enough water for our 9 hour hike and ran out before we got done; allow me to remind everyone that this is pretty much the stupidest thing one can do while on a hiking trip. Always bring plenty of water! Amidst all this fun stuff, we did, in fact, make it to the top of Mt Massive (14,421 grueling feet high) and it was pretty much the coolest experience ever. And by "coolest" I mean "most painful." We will definitely be doing this all over again next year.

My goal for this trip was to endure enough pain and terror (I'm scared of heights) to make me want to go back to work on Monday. Alas, I haven't reached that point, but I got close.

Saturday, August 11, 2007

Fashion or function?

Apple products are fashion accessories, which is why I will never buy them. I am a utilitarian when it comes to electronics: whatever works the fastest, the most reliably, and for the best cost is what I want to use. Apple makes products that look pretty slick and have nice user interfaces, but they absolutely gouge customers on price. I think the iPhone costs something like $250 to make, and they sell it for $500. The iMac costs $1500 or so, and you could definitely buy an equivalent desktop for half that. No, the desktop would not be 3 millimeters thick or whatever they are down to now, but I don't give a crap how thin my PC is. My cubicle at work and my desk at home definitely aren't gigantic, but they definitely have ample room for a desktop computer. So if you like to "look cool" while using your electronics, feel free to pay a premium for that experience. As for me, give me Linux and a big water-cooled case.

Wednesday, August 8, 2007

Palm in da house

So I spent the last couple days trying to set up a development environment for my new (and by "new" I mean "secondhand-approximately-3-years-old") Palm Zire 72. Given that my past experience with programming on anything except a PC is pretty much zilch (except for one brief escapade into J2ME with a Hello World program that ran on the slowest Nokia-something-or-other-handheld-emulator in existence), I have to say I have done pretty well. Yesterday I got a Hello World program compiled and running on the Palm OS simulator and today I finally got debugging to work. Congratulations to me!

You can get everything you need here; you have to register but all the downloads are free. They have a package you can download that includes the whole build toolchain, Eclipse IDE and plugins, and simulators/emulators, but since I hate Eclipse and I wanted to feel like a man, I set everything up manually with Cygwin. Yes, I do in fact derive my manhood from programming and debugging from a terminal; deal with it.

Hopefully I can actually get a useful program (or at least something more useful than a textbox displaying "Hello World" working in the next few days. We'll see what happens.

Thursday, August 2, 2007

Yowza

I normally think of theserverside.com as a pretty reputable site with fairly good articles. Then today I saw this article. Wowee. Of all the ridiculous things to say, and it was posted on theserverside? Who's in charge here? I demand accountability!

I'm fairly sure that there's a few problems slightly, just slightly, more significant than the package structure of Java, which took me, and I'm sure 99% of Java programmers about 3 seconds to understand. All would be fine and well if the post was about how the package structure doesn't make sense, but to say that it is the most significant problem in Java? Are you kidding me? Simply mind boggling.

This sort of thing probably convinced Eric to quit blogging.

Tuesday, July 31, 2007

Food and TV....mmmmmm....

Perhaps it's a testament to the fact that I watch too much TV (or maybe too much TV about food) that I have some observations about food and TV:

Am I the only one who sees Hell's Kitchen as the white trash Top Chef? Seems like all they do is take run of the mill cooks and see how much yelling they can endure. Maybe that's Fox's intent because it is somehow entertaining to watch a British guy yell at people. Or then again, maybe I should do something useful with my life other than watching TV. Or maybe not.

Wednesday, July 25, 2007

Of fear of outsourcing and stupidity

Yet again, too many times to count, John Carroll hits the nail on the head. If he ran for a political post I would be the first to move to California to vote for him; unfortunately he has sensible economic positions, which is why he would lose. In America we want protection from global competition because we "deserve" it! Because we're Americans! Because heaven forbid that someone who can do a job of the same or better quality for a fraction of the cost should take it from a lazy American who has a birthright to the best pay for the least effort!

I think I'm sweating sarcasm right now...

Tuesday, July 24, 2007

goodbye dual boot

I've been reading about how virtualization is going to be the next big thing in computing for a few years, but today was my first day of direct experience with it. I bought my first new computer since about 2001 (I was in dire need of an upgrade) and I'm starting to put it to good use; I downloaded VMWare the other day and I must admit that I was worried that it would be complicated to set up and run; I was dead wrong. VMWare is incredibly easy to use; I had an Ubuntu system running in 5 minutes with about 5 clicks. And it actually works! The previous decade of dual booting is finally over; good riddance.

Sunday, July 22, 2007

So I just spent the last approximately 10 hours (minus sleep) binge reading the last Harry Potter book. Holy crap. I won't spoil it for you; I'll just state one thing: it was worth the wait.

Friday, July 20, 2007

Whoa nelly!

What?? Could Congress actually be doing something constructive? Heaven forbid!

Saturday, July 7, 2007

Blind and stupid

I feel that. Let's all blindly follow Al Gore and his legion of actors and musicians who all clearly have well-informed scientific opinions.

Wednesday, July 4, 2007

Humankind

Humankind has advanced so far...

Monday, July 2, 2007

Netbeans 6

I downloaded Netbeans 6 the other day and my initial impressions are very positive. I can't stand Eclipse: I really dislike the look and feel, the code completion isn't as nice as IDEA, the perspectives are annoying to use, and I don't find it nearly as intuitive as IDEA (which is my main IDE for work). Netbeans 6 was comparable to IDEA for me in the short amount of time I have used it; check it out if you haven't already.

Sunday, July 1, 2007

Fairness is foolish

The Fairness Doctrine mandates "fair" talk radio broadcasts by requiring equal amounts of airtime for both sides of the issues. Last time I checked, we lived in a capitalistic economy where "fairness" has no place. If you want "fairness" in your economy go to Europe where the economy is sluggish at best, the tax rate is astronomical, and the unemployment rate is at least double the rate it is here. Capitalism centers around efficiency, not fairness. It makes no difference to me who has more presence in talk radio; unprofitable businesses go bankrupt; that is the way capitalism works and that's the best system ever developed in the history of mankind.

For a wonderful example of how successful government supported media can be, check out PBS sometime; what an entertaining channel.

Thursday, June 28, 2007

Whatever happened to Xen? Oh, and the iPhone is dumb

If you've ever wondered like I did, here's you answer.

Since everyone's talking about the iPhone, I'll jump on that train for the moment with my opinion: it's a huge ripoff. Tons of other phones have many more features and cost half or less than the iPhone but don't have all the hype so aren't as popular. The deal killer for me is the glacially slow Internet connection - I've heard many sites taking a minute or two to load. Why would you pay $2000 over 2 years for that? I guess if you want to be "hip" then go ahead; seems pretty foolish to me.

Tuesday, June 26, 2007

Linux in da house

I finally got the Internet working in my apartment after a lot of fiddling; in the end I don't know exactly what I did to get it working, but the fact that it does work is all I care about for the moment.

The first thing I did was install the newest Ubuntu. Wooooooow. Installation was incredibly seamless and I am very happy with everything so far. I was living in the ancient days of Breezy Badger with no internet connection before (and Windows at work), so this is quite an adjustment for me. If you haven't used Linux on your PC before, I highly, HIGHLY, recommend Ubuntu, even if you don't know much about computers. I'll say it right now, and I'll say it again: Linux blows the pants off Windows any day of the week. The worst problem is that most businesses write their programs for Windows so there isn't nearly the selection of software in Linux. But for personal use, Linux can't be beat (I'd say OS X is comparable, maybe even better, but it's waaay overpriced so I'll still stick with Linux).

Friday, June 22, 2007

Of spreadsheets and thank you notes

Unless you happen to be a programmer, you may not have noticed, but spreadsheets are incredibly hard to code. Of all the implementations I have ever seen, I would say one, Microsoft Excel, actually works likes its supposed to (most of the time). Almost all the other ones are littered with focus and paint issues.

In other news, I received a thank you note for a wedding I attended about one year ago. I do believe that is the longest time I have ever experienced between a gift and a thank you note. Way to go Justin H. You are the man. The best part was the contents of the note, which was highlighted with this:

"Thank you for the concrete dish you gave us for our wedding. It is neat and we use it a lot." Touching words for anyone to hear.

Tuesday, June 19, 2007

Java grid computing

Here is one of the better discussions from some of the developers of GigaSpaces, Terracotta, and Coherence about the merits of these different products.

Friday, June 15, 2007

More on open source...

Ok, I've done some deep reflecting on the merit of open source in general and here my incredibly insightful conclusions that you should be impressed with:

Obviously a software project does not magically become "better" because of an open source license. But what underlying cause is there for the success of projects that I mentioned previously?

I’ll posit that it is the collaboration of businesses that allows for the creation of the "best" software in a given market (it doesn’t guarantee it, just allows for it). For example, Linux is one of the best operating systems because it has ample support from programmers at IBM, Novell, Red Hat, Oracle, etc. Think about many of the popular open source projects: OSGi, Spring, Apache... there are all sorts of companies that make use of these projects, and many that actively contribute resources to them. Some big businesses have the people and money available to develop their own software that would accomplish the same goals as these projects, but why do that when using an open source project will cost less to develop and work just as well or better than a completely in-house solution?

Is this the only possible source of open source success? Of course not, but it seems to be a significant and common cause of success.

Wednesday, June 13, 2007

Clarification

Apparently, Eric takes issue with my last post.

That last post wasn't really about my opinion of open source and quality, or if it was I didn't intend it to be, so I wasn't really thinking about my specific words as I wrote them and I won't try to defend them. Instead I will revise/clarify/completely-change-what-I-said: Open source can lead to higher quality software than proprietary competitor software in certain circumstances. That pretty much takes all the bite (and click bait) out of what I said and leaves us with a pretty much completely ambiguous, meaningless over-generalization to argue about. Oh well.

This is inherently not something that can be proved or disproved so there is no point in making the attempt. The best way to talk about it is in terms of examples, and the best example is (you knew it was coming): Linux vs Windows.
Some other very "high quality" software is Spring, Apache, Tomcat, MySQL, JBoss, and Subversion. Direct comparisons are often pointless since software is so often chosen based on specific requirements, but I think that many would agree that these examples are "better" than many proprietary counterparts. Better than all of them? Who can say? What does "better" even mean in the first place? "Better" can mean "cheaper" or "faster" or any number of things, but probably the best meaning in the business context (since open source doesn't have much success in the consumer market) would be "cost effective." And once we move to cost effectiveness, quality can start to matter a whole lot more or a whole lot less depending on the specific case and what the word "quality" means.

There's a lot more that could be said about this, but I don't care to do so now, so you'll just have to live with that lingering desperate longing you have for my amazing opinions.

Ahhh, naivety

Apparently not everyone is so excited about Sun's open source effort. Sun's CEO responds here. I am no software freedom fighter, but I do like open source in general for two simple reasons:

1) Curiosity. If I want to see how the code works, I can look at it.
2) Open source leads to higher quality software (in certain cases that I don't care to elaborate on at the moment, but Linux serves as a good example).

Sun is "going open source" because they want to make money, plain and simple; they are a company and they exist to make a profit. All this "we want to hold hands and work together" crap is BS; I have nothing against Sun, because capitalism works through competition and profit. However, anyone who thinks that Sun wants to work with the Linux community or any other open source community and have everyone contribute to a common cause out of the goodness of their hearts is completely naive. If I owned stock in Sun I would be wanting them to crush Linux into the ground unless there was money to be made by not doing so (I don't own any Sun stock, or any other stock for that matter).
This gives hope to all single Java programmers out there.

Thursday, June 7, 2007

Ok, this is just plain sweet.

Wednesday, June 6, 2007

iTunes watermarks

For those of you who follow such things, you may have noticed that Apple is selling DRM-free songs on iTunes in response to the widespread hatred of DRM in general (widespread could be exaggeration, but I do certainly have a passionate hatred for it). It has come to be known that these new songs have a "watermark" that contains the buyer's username and email (or some similar identification, not sure on specifics) within the file itself so that a song file can easily identify the original purchaser. There has been some outcry over this watermark from some folks, but I think it really isn't that bad. Now I hate DRM more than most folks, but even I have to say that a watermark is 100 times better than the old DRM crap. If I buy a song on iTunes with this watermark, I can play it on any music player I own with no restrictions; I'm no longer paying for the right to play a song on one (or a very few) players, but the right to play a song on whatever the heck I want. The only possible downside (aside from the 30 cent extra cost on iTunes) is that I can't share my songs on bittorrent, and there really isn't ever a legitimate reason to do that in the first place. So I for one am much more happy with watermarks.

Friday, June 1, 2007

blaaaaaaaa

Allow me to express exactly how motivated I have been this week to do anything other than watch crappy TV movies: I have not been motivated this week to do anything other than watch crappy TV movies. It must have been that Memorial Day holiday; 6 months with no holidays and I was fine, but one three day weekend has killed my motivation.

Anyways, here's an interesting link since I don't feel like posting anything that requires much effort:

Some new ideas for the future of operating systems. Interesting, but I think it will be quite a while before any radical new designs such as this reach production on a significant scale.

Friday, May 25, 2007

Winner

Yesterday I really established how much of a winner I am when I came to work with my shirt accidentally turned inside out. When someone told me right before lunch after I had gone to a couple meetings, I was feeling pretty good about myself, I must say.

In other news, for some reason IDEA, which I spend at least 3/4 of my day in, has a modal dialog for the Subversion diff dialog. That is incredibly annoying when I'm trying to look at two diffs, especially when it would take a one line fix to change it. Dah! So annoying!

Wednesday, May 23, 2007

In continuing this week's tradition of posting random links, here's my links for the day related to O/R mapping:

Vietnam of Computer Science
More on that
One possible solution

Completely unrelated is this performance comparison of JBossCache and Terracotta.

I would comment on these articles, but at the moment time is lacking...

It would seem as if this blog is becoming more of a browser favorites storage engine than anything...oh well.

Tuesday, May 22, 2007

Snap

Oh snap: this should be good.

Monday, May 21, 2007

Good article on the near future of Java.

Friday, May 18, 2007

Random Friday Thoughts

This new look is much better. Mucch better. Anyways: here's a good post about why JavaSpaces isn't as big as it could be.

I went to a presentation on JGroups today. The presentation was an hour long but had about five minutes of actual code, which on the one hand implies that JGroups is easy to use, but on the other side implies that the presentation was boring because the presenter didn't talk about the actual JGroups code very much (which I think was his intention but I was still disappointed).

I've been spending some spare time (always wish there was more of that, sigh...) looking at distributed computing/algorithms and trying to figure out a fun project to work on that would be more than just a toy program. I'm looking to write something that requires using technologies I haven't been exposed to much but are pretty popular such as Spring, JGroups, and Flex/Apollo. A few ideas have been distributed build system, CRM app, or some sort of distributed simulation system. The problem is my attention span is so short for spare time projects that I move on to new things before I can actually accomplish anything significant. Oh well, we'll see what happens this time.

On a completely unrelated note, this is pretty hilarious.

Monday, May 14, 2007

"Well excuuuuse me for having enormous flaws that I don't work on!" - Homer Simpson, from that episode where he pimps his milk truck and Marge builds popsicle stick people. Now that 's just funny. The Simpson's still have a few good lines left - though not many...

Friday, May 11, 2007

Since everyone else is talking about it...

Here's some random excerpts from an email conversation I had about Flash/Silverlight/JavaFX:

The Java kernel sounds all fine and dandy, but it does not exist now and it won't be released until Java 7 (maybe, delays seem inevitable) and 3MB seems like a bit of a stretch for a first release if you look at Ethan Nicholas's blog (of course that's just speculation, I admit). On mobile devices I can concede that it will probably be pretty popular because of the popularity of JavaME.

The main problem is one of economics: JavaFX makes Sun either no money or makes it so indirectly that they can't significantly profit from its success. Apollo/Flex's success will directly and unambiguously profit Adobe because they charge for developer tools; same with Microsoft. It all comes down to incentives: whoever can become most profitable in a given market will make the best product. Client side Java does not profit Sun in a significant way, especially when compared to competitors. Now believe me, I am rooting for Java because I prefer all the open standards/open source/FREE stuff, but that is the only possible advantage for JavaFX at the moment. And even the cost argument for Java can be up for debate if you consider the opportunity cost of not using something like Flash or Silverlight. If I had the next week to decide what client platform I would use for a new webtop app (probably a good thing that I don't have such authority) I would look at Adobe or Microsoft much more seriously than Sun. In a year or two things could change, but I don't foresee any dramatic changes by Sun/the Java community that can't be matched or exceeded by the competition. If history is any guide (and it is so often) new features and innovation will come much faster from companies who can profit from their products.

I couldn't help but think about this some more from articles/blogs I keep seeing about JavaFX: Everyone keeps saying that it will deliver a "Flash-like experience", but Flash has been delivering that experience for years! If Java is just now catching up to where Flash was 3 years ago, who do you think will be ahead in another 3 years? Granted, you have to use ActionScript or whatever they use to program Flash, but if it's like JavaScript it can't be overwhelmingly difficult to learn pretty quickly. If one argues for the "unified development environment" that comes with Java, then I would have to point out that .NET, despite all its faults, is ONE environment that can be used to program pretty much everything that Microsoft has touched (which isn't everything, but a gigantic section of all sorts of markets)

I'm not arguing for .NET, but if I was running a business I would definitely have to consider it seriously unless it was clear that cross-platform considerations outweighed all other advantages - which is often not the case I think.

I would guess the "blasting" of JavaFX in the blogging community at large stems from the comparisons it keeps getting to Flash and Silverlight, which seems somewhat ridiculous from what I have seen.

Wednesday, May 9, 2007

The past comes back to bite me

So some code I wrote about nine months ago when I clearly (today, not nine months ago - hindsight is 20/20) had no clue what I was doing has come back to bite me in the arse. I think I was taking stupid pills because that was some darn crappy code and it is starting cause a bit of havoc that I am have to fix with somewhat hacky techniques, since the old code is not conducive to adding good new code. Oh that I not be so ignorant last year! Perhaps a code review would have been a good idea...At least I can say that I don't write that same crap anymore (my opinion on that may differ in another year). It is amazing what one can learn in a year.

Saturday, May 5, 2007

I'm a conduit

Apparently I'm a conduit of deep discussion (actually I just wanted to use the word 'conduit') - see the comments on my last post. Here's another post from my hero John about immigration that you may find interesting.

Doc, I tried reading your comment, but it was too deep for me to grasp in one reading, though I'm pretty sure I completely disagree with whatever you are saying. I'll have to read it again to see if I can figure out what the heck you're saying.

In other news, I've been dropped into the world of SOA of late. I must say that I always thought it was just another buzzword of the year for the architecture astronauts. I have been made aware that maybe it may actually be useful. In one of our current projects at work we are using OSGi for a pretty slick new program and I must say that after working for a year on a traditional Swing/J2EE backend program, SOA has blown my mind. OSGi has provided such a clean way to modularize our software, it's just amazing. Heck, this code may actually be somewhat, dare I say it, reusable, heaven forbid.

I've also been messing around a bit with Jini and JavaSpaces in my spare time (which has been somewhat lacking of late) after stumbling across an article on GigaSpaces, which, if their white papers aren't all marketing fluff, sounds like it is a pretty darn powerful replacement for J2EE in large cluster environments. I read somewhere that OSGi is basically SOA within the VM while Jini is SOA among distributed VM's. Pretty cool stuff. So I'll let all you who are dying to hear my experiences with this stuff know what I think over the next few days/weeks.

Friday, April 6, 2007

Tuesday, April 3, 2007

To everyone who has been wondering how to debug the java jdk classes, here's your answer:

The default rt.jar doesn't have all debug symbols (it only has local variables or only fields or something), so you can either build your own with debug symbols (download source ) or I think you can download rt.jar with debug symbols somewhere on java.net (can't find it at the moment).

After I found all this out, I figured I might as well figure out my problems without debugging in the jdk...

Thursday, March 29, 2007

Does this whole Iran situation with the UK sailors not make anyone else furious? Apparently the UK sailors were not even in Iranian territory when they were arrested (though obviously Iran disputes that). Then Iran shows the detainees on national TV. Holy crap, how pompous and inappropriate is that? It's pretty obvious that Iran is looking for confrontation (though not war); they are attempting to show the world their power through this whole mess, that they are a force to reckon with. In the end, I'm sure it won't warm up existing relations with Europe and Iran, which is stupid for Iran, since they are so economically tied to Europe.

Tuesday, March 27, 2007

Monday, March 26, 2007

Practically in the front door already...

I found out that a guy I know (in real life), http://stuffthathappens.com/blog/, knows this guy, http://crazybob.org/ (in real life), who works at Google.

Annnnnnd, I'm reading this book: Java Concurrency in Practice, one of whose authors works at Google.

I'm pretty much dizzy from all this newfound power. I'm practically at Google already...

Saturday, March 24, 2007

"average" weather

Has anyone ever noticed that the "average" temperatures that they always talk about on the weather forecast are completely pointless? For instance, "it is 20 degrees the average temperature for this time of year." Anyone who has been in the Midwest longer than 3 minutes knows that the "average" means nothing since there's so much fluctuation in temperature. If you have 50 years where the temperature for a given day is 100 degrees and 50 where it is 20 degrees, does the average of 60 degrees really mean anything?

More importantly, does this post mean anything? Fortunately, I don't care whether it does or not.

Friday, March 2, 2007

The Inaugural Post

This is my first ever post on a blog ever. I bet you are amazed. Because this post is meaningful and neat. When I get time I will post things that I care about. Don't you feel as if the time you have wasted to read this is completely worth it? Because I do.

Be seeing you,
No. 34

If you didn't catch the reference "The Prisoner", the greatest TV series of the modern era, you need to watch it. Nooooooow.