March 10, 2010
I believe that successful application development today is about ’tweaks and sub-features’, not major functionality. But my thought process for this post was kicked off by an interesting post by Mike Taylor: ‘Whatever happened to programming?’ Mike laments the evolution of programming. He is nostalgic for the day when writing a program was about creating something from scratch, instead of assembling the various pieces.
I think his assessment of the transition is fairly accurate. The number of frameworks and libraries in projects today far exceeds the number used in projects 5, 10, or 20 years ago. This is especially true in the Java world, where build tools like Maven gained traction because they handled the dependency management. And now, a non-trivial Java project can easily incorporate 100 or more jar files, while a trivial ‘boiler plate’ web application can easily have 20 jars.
Read More
March 4, 2010
I hate file extensions on websites. It is an unnecessary leaky abstraction, and is discouraged by the W3C. All file extensions are not necessarily bad, but any file extension that exposes the underlying technology implementation is. Any .pl, .php, .asp, .aspx, .jsp, .do, *.struts, etc extensions are B A D.
I’ve talked about this before, and come up with some workarounds to build extension-less java web applications before.
However, I’ve come across what I think is a better way, thanks to a post a couple years ago by Matt Raible.
Read More
March 3, 2010
If you want to develop a Google App Engine (GAE) application using Maven, you can either use the Maven plugin maven-gae-plugin, which requires non-trivial hacking on your pom.xml, or you can keep your pom clean and create a simple Ant script.
My pom is a simple web application pom, with no specific GAE configuration. I then created a build.xml in my project root that looks like this:
<project>
<property name="sdk.dir" location="/opt/appengine-java-sdk-1.3.1" />
<import file="${sdk.dir}/config/user/ant-macros.xml" />
<target name="runserver" depends=""
description="Starts the development server.">
<dev_appserver war="target/yourappname-1.0-SNAPSHOT" />
</target>
</project>
Using this, you can run your application in the GAE sandbox without having it take over your pom.
Read More
February 24, 2010
I have my house wired so that every television can access a shared set of sources (mostly). I wanted this solution because everything I watch is recorded. Therefore, I wanted to access each of my three DVRs on every television in the house. Here is how I accomplished it.
First, I located all of the DVRs in the basement. They are each run to every television in the house using different transmission mechanisms. Here is a general overview of my system layout:
Read More
February 23, 2010
In my previous post, I discussed the trend toward computing appliances (ie DVRs, Kindles, etc.) instead of general purpose computers. On the recommendation of Merlin Mann on MacBreak Weekly, I downloaded the Siri iPhone application and gave it a try. Wow.
The Siri application attempts to be the ubiquitous Star Trek computer. Just ask it a question and it will give you the answer. It provides both voice and text interaction modes, and an easy user interface that exposes common feature easily.
Read More
February 22, 2010
The iPad is an appliance, and it will be successful. But before we get to that, we need to start at the beginning.
When I was a kid I ran a dial-up BBS service (The Outhouse) on a computer cobbled together from old donated computers and a few new parts I’d purchased. I would take apart old computers (donated by my friends parents after their companies discarded them) and test the various parts for something I could scavenge. I spent hours pouring over the massive Computer Shopper magazine to find the best deal on a new hard drive or modem. This was the very definition of an (economy) do-it-yourself general purpose computer.
Read More
February 18, 2010
I use a ReadyNAS NV+ as my backup drive and bulk storage. Although the newer firmware directly supports TimeMachine, I’ve never been able to get that to work. (This probably has something to do with the fact that I was upgrading and downgrading my NV+ Firmware quite a bit to debug a separate issue).
However, I did find a great tool to create SparseBundles that you can use on a NAS (or any external disk).
Read More
February 18, 2010
I’ve been getting a lot of spam recenctly. But this isn’t normal spam, it is actually ’legitimate’ bulk, although I didn’t sign up for it. What is going on?
Someone out there, apparently with the name Emily Daugherty, thinks that my gmail address is actually her gmail address. She’s been signing up for all sorts of websites using her (really my) email address in the past few months. That results all sorts of useless email for me that is not caught by normal spam filters.
Read More
February 16, 2010
Yes, and No.
Write Once, Run Anywhere, a slogan created by Sun to evangelize the virtues of the Java Platform, is a controversial approach to software development.
Write Once, Run Anywhere (WORA) is accomplished through an abstraction layer between the ‘compiled code’ and the operating system and processor. This abstraction usually takes the form of a Virtual Machine or Runtime, such as the Java Virtual Machine (JVM), Microsoft’s Common Language Runtime (CLR), Flash Player (or Air runtime), or one of the many interpreted language runtimes (Perl, PHP, Ruby, etc.). These runtimes convert the intermediate language into device specific code that can execute on the local operating system and processor. While this overhead introduces extra steps, which slow down execution, they also provide features not (easily) available in native code, such as garbage collection and Just In Time (JIT) compilers which can optimize the code while it executes, as opposed to at compilation time.
Read More
February 12, 2010
iTunes Export exports playlists defined in your iTunes Music Library to standard .m3u, .wpl (Windows Media), .zpl (Zune), or .mpl (Centrafuse) playlists. iTunes Export also supports copying the original music files with the playlist to facilitate exporting to other devices. iTunes Export is open source and freely available for use.
The 2.2.1 release features updates and bug fixes to the console and GUI versions
In both versions:
Archive ·
Subscribe (RSS)