Monday, September 14, 2009

How to Upgrade From an iPhone 3G to 3GS for < $50 and Why to Do So

You can do a quick search online and find millions of iPhone 3G owners going on and on about how there's no reason to upgrade to the new 3GS phone if you already have a 3G. To borrow a quote, "Methinks thou doest protest too much". The 3GS only hold a couple real advantages over its older sibling, but for a number of people, those advantages are huge.

1. Speed - The 200Mhz speed bump doesn't tell the entire picture. This CPU/GPU combo is in another class. It's a full generation ahead and trounces the original especially in regards to 3D performance. And the additional RAM appears to be faster and allows for more programs running concurrently, a great thing for those of use who Jailbreak and use Backgrounder. So, maybe not a big deal for the casual user, but it can take the power user to the next level...

2. Camera
- Video. Yes, you can jailbreak and use Cycorder, and yes it does a decent job...as long as what you're recording stays very still. At 15fps max, any motion looks horrible. The 3GS video is pretty decent. Nothing spectacular indoors, but just about as good as the last cheapy camcorders I've owned. Obviously missing zoom, which makes it not as useful as a real camera but still nice.
-Still pictures. The iPhone 3G takes decent pictures for a phone. The 3GS takes decent pictures, period. Except for the notible absence of zoom, the new autofocus lens allows the 3 megapixel camera to take really nice looking pictures. Being able to direct the focus and set the white balance based on touching an area of the screen allows for a level of control that can't even be found in "real" cameras. Not to say that's it's perfect or anything, but quite impressive.

Item #2 is what prompted to go ahead and make the upgrade. I have started trying to take a "photo of the day" and the pictures I was getting on my 3G really left something to be desired. Plus I've really be wanting to have a decent video recorder available for little family trips... When a coworker showed me the quality of the video and mentioned how it was also noticeable faster that finally tipped me over the edge into implementing my 3G->3GS upgrade plan. It's actually quite simple, and somewhat economically sound.

However, once I got my 3GS, item #1 proved to be really nice to have. In general, everything just became snappier. Perhaps most people wouldn't even notice the difference, but to me it made a big difference it usability, especially when multitasking. And for you jailbreakers out there, perhaps the biggest thing is now Cydia is actually usable. Instead of a 10-15 second pause to refresh the database after each action, it's not 3-4 seconds. Massive difference...

Anyway, now back to the crux of the article. When I am eligible for a discounted upgrade from AT&T it would cost me $199 to move up to the 3GS. Even as much as I hold the 3GS in high regard, that's quite a bit of money. Now if I could cut that amount in half or less, then it would become a lot more attractive. Plus, I'm not actually eligible for a discounted upgrade until next June. So the only option is to buy it mid-contract for $399. That's definitely alot of coin. Strangly enough that is still with a subsidized price from AT&T and requires further contract renewel. If you want to get a 3GS with no obligations at all it costs close to $1000. Crazy right? Well that craziness is what drives this plan.

With the no obligation 3GS at an astronomical price still, a no oblication USED 3G still is also in quite a bit of demand, with the 16GB model bringing between $350 and $400 on ebay. There you go, plan revealed...

  • Sell 3G on ebay for $360
  • Buy 3GS for $399 from AT&T.
  • Have new phone for $40
That's worth it to me. Yes, I know it's not quite the same as buying one for $199 later since I don't actually have the 3G anymore, but at that point it wouldn't be worth as much either...so it works for me. And yes, after fees and whatnot it's actually closer to $60, but $50 sounds better. :) So for all you 3G owners saying how the 3GS isn't worth it...you know you want it. :)

Read more!

Wednesday, September 9, 2009

I...Can't Get No....Satisfaction

I have a problem. I'm hardly ever satisfied with software. I have a very difficult time with just "dealing with it" when it comes to the applications I frequently use. Fortunately, as a Software Developer, I can do something about it. Unfortunately, creating good, robust software is hard and time consuming.

My latest conflict revolves around Twitter. I've been searching for a client that I like ever since my first Tweet. Having groups to organize different friends into seems to be a must if I want to follow a decent number of folks and keep up with what's going on. So when the new version of Tweetdeck dropped with Facebook integration, I figured I'd give it a go. I had previously attempted to install in on a Linux virtual machine before and the performance was abysmal. That is when I started writing libtwitl and yatwitc, which are of course stalled out and not being worked on because as I mention it takes a lot of time and effort. Anyway, let's talk about Tweetdeck now...


Installed Adobe Air and Tweetdeck and it appears to run fine outside of the virtual machine. But the first thing I notice is that it taking up 150MB of memory. If you read my Songbird post, you know I consider this unacceptable. I know it's doing quite a bit, but that's still alot of memory. That fact alone will probably prompt me to start work on yatwitc again. Let's now examine some other issues I have with Tweetdeck:
  • No easy way to tell if a friend has already been added to a group or not. I would rather see the "All Friends" list be an "Ungrouped Friends" and as someone is added to a group they leave that group.
  • Scroll bars. Web Design 101 taught us that horizontal scrollbars are evil. The column concept pretty much depends heavily upon horizontal scrolling, making it a bit of a pain to move around to my different groups.
  • Adding to the scrollbar issue is that when I minimize the window and then restore it, the scrollbar is set to the far left and not where I left it. I want to have my most read columns in the center and just scroll a little left or a little right to check the other columns. Now, I have to scroll all the way over from the left to get past my most read columns.
See, those seem like they should be pretty minor issues, but they completely ruin my user experience. I just found an invite code to Mixero and it does the groups just as I mention and uses what amounts to a tab system to move between groups, which is also what I planned to do in my application. So Mixero is perfect for me right? Maybe? It doesn't have the facebook integration which is a nice to have since most of my real friend/family are actually there and not on Twitter. My tweets are synced to Facebook and so often that is where I will get comments on them from. Also it's using >100MB of memory and the Air UI has min/max buttons in a strange location an while admittedly somewhat cool, has alot going on....sometimes simple is good for a UI.

So what do I want? Why is it that I'm never happy? In general this is what I'm looking for in my software selection...
  • Speed. Must start quickly and interface must respond quickly.
  • Ease of use. Doesn't matter how fast it is if you can't accomplish the tasks that need accomplished. Make frequent tasks quick and easy to get to. Other tasks should be presented in an organized manner to be easily found also. A row of 15 icons that I have to mouse over each one to find out what they do is not "easy".
  • Be predictable. You're an application running in Windows, so act like it. There are certain actions that are expected.
  • Be resource friendly. Yes I have multiple GB of memory. But don't take up 150MB of memory if you don't need to. At most you need 20-30 tweets in memory from each category. Load additional ones dynamically if I need to go back further.
So although I will probably never have all the functionality these other clients have, to get what I want I guess it's time to start coding on Yet Another TWITter Client once more. See...never satisfied...


Read more!

Monday, September 7, 2009

Simple Animated Image with C++/SDL for the Non-Programmer

My friends and family often ask me what exactly I do at my job, so although they were probably only asking in a rhetorical sense, I thought I'd try to answer the question in a little example that also could serve as a basic programming instructional. This is some code taken from my open source music player daemon frontend, ommpc. While it isn't actually from "work", all the basics apply. So, for the non-technical, skip over anything that doesn't make sense and take a look at some of the things a "computer programmer" does and for the technical folks, treat this as a code review and let me know what I can improve. Now for some code.

The basics
This selection of code is actually a little bit more exciting than most of the stuff I do at work. Alot of my work consists of processing files and whatnot and so the only output is text to log files, and generally any user interface work is pretty high level, consisting of creating some dialog in a WYSIWYG editor and then just populating the contents. But with this gp2x I have to actually do all of the drawing of various elements on the screen manually. So without further ado, let's go...
bool ArtButton::draw(SDL_Surface* screen, SDL_Surface* bg, bool forceRefresh)
{
if(!m_artParms.doArtLoad && (m_refresh||forceRefresh)) {
//clear this portion of the screen
SDL_SetClipRect(screen, &m_clearRect);
SDL_BlitSurface(bg, &m_clearRect, screen, &m_clearRect );
if(m_showInfo || m_animate) {
//show info
}
if(!m_showInfo || m_animate) {
if(m_animate) {
if(!m_showInfo) {
if(m_moveRect.y <= 0)
m_animate = false;
else
m_moveRect.y -= 10;
} else {
if(m_moveRect.y >= 160)
m_animate = false;
else
m_moveRect.y += 10;
}
}

SDL_BlitSurface(m_artParms.artSurface, &m_moveRect, screen, &m_destRect );
}
m_artParms.doArtLoad = false;
m_refresh = false;
}
return m_refresh;
}
That is pretty much the entirity of the routine that draw the album art image on my Now Playing screen. You can click the image and it will change to show the id3 information for the song. This is my first little attempt at creating an animated transition when you click the image. So let's examine the pieces of this code.
bool ArtButton::draw(SDL_Surface* screen, SDL_Surface* bg, bool forceRefresh)
This line of code shows our function, what needs to be passed to it and what it will return. The "surfaces" are object we interact with to display things on the screen. The first parameter, "screen" is our main, overall area we draw to. For example, if your web browser was my program, "screen" would be everything contained within the borders of the browser window. In my case the program runs full screen all the time, so it's simply the entire viewable screen.

The parameter "bg" is a background image we loaded earlier, that we will need to basically cut a section from and display it. The last parameter tells us that this area of the screen needs to be forced to refresh because some other event in the program might have displayed over it or caused it to need to be changed. So, how do we now use those parameters in our drawing routine?
if(!m_artParms.doArtLoad && (m_refresh||forceRefresh)) {
//clear this portion of the screen
SDL_SetClipRect(screen, &m_clearRect);
SDL_BlitSurface(bg, &m_clearRect, screen, &m_clearRect );

Okay, now we have what is called a conditional statement with a few special characters. '!' = 'not', '&&' = 'and' , and '||' = 'or'. So we only will process the following code in the brackets 'if' doArtLoad is 'not' taking place 'and' we need to refresh 'or' force a refresh. The refresh variables cause us to only redraw the screen when we need to and the doArtLoad variable tells us not to try to draw anything while we are still loading an album art image. So once we get into this drawing code we use our SDL functions to actually start manipulating the screen.

SDL_SetClipRect defines the area of the screen we are going to draw to. The clearRect variable was loaded earlier from a configuration file with the size and position of our album art.

SDL_BlitSurface outputs to the screen. It takes our background image 'bg' and grabs the portion of it at the position outlined in clearRect and outputs it to the 'screen', also at the position from clearRect. Bascially this draws a portion of our background image for the area of the screen affected by our album art. We only draw the portions of the screen we need to so as not to waste time updating parts of the screen that are static. Moving on...
if(m_showInfo || m_animate) {
//show info
}
if(!m_showInfo || m_animate) {
We now have some more conditionals. We have two boolean(true or false) variables one which tells us if we are displaying the album art or the id3info and another to tell us if we need to be animating the transition. The first statement says to enter this block of code if either of those variables are true as we need to show the information both while drawing the animation and once it's over and we're just showing the info. I've left out the actual code because it's just a bunch of other draw function calls.

Next we have a block of code we enter if we are not showing the info(thus showing the art) or during animation.
if(m_animate) {
if(!m_showInfo) {
if(m_moveRect.y <= 0)
m_animate = false;
else
m_moveRect.y -= 10;
else {
if(m_moveRect.y >= 160)
m_animate = false;
else
m_moveRect.y += 10;
}
}

SDL_BlitSurface(m_artParms.artSurface, &m_moveRect, screen, &m_destRect );
We now have to check to see if we are indeed drawing the animation, then if we are we check if we're supposed to be drawing the info or the art image. The 'destRect' is loaded earlier with the same position/size as our clearRect as it dictacts where we are going to draw on the 'screen'. However, 'moveRect' is based on the size of our album art(currently 160 pixels) and its position is relative to that art image. So width and height are 160px and the x,y position are 0,0 indicating the top, left corner of our image.

Let's first examine the case where we are not drawing the animation. In that case, we will skip the entirity of the above code up until the SDL_BlitSurface call. And that call will take 'artSurface' which is just an album art image file loaded earlier and draw the entire image as given by 'moveRect' to 'screen' and position 'destRect'. Easy-peasy-lemon-squeezy.

Now, what happens if we are animating? As you see, depending on whether or not we are showing the art or the info, we are either increasing or decreasing the 'y' coordinate of 'moveRect' by 10 pixels. What this does is tells the blit function to only draw a portion of the image instead of the entire image. So instead of drawing starting at 0,0 it draws starting at 0,10...then 0,20. So each time it enters the routine it draw 10 pixels less of the top of the image(or 10 more if going the other way), thus creating the effect of the art image scrolling up and scrolling back down.

That's pretty much it. Some simple animation in a simple drawing routine. Each section of the screen, the buttons, the seek bar, the song title, etc get's it's own drawing function and we only redraw that particular section when we need to. I hope that was informative enough for the non-programmer and I would love to get feedback from coders out there on my approach to the problem. Thanks for reading.



Read more!

Sunday, September 6, 2009

In Google We Trust

Well, in Google I trust. I have to trust them as I've pretty much given over my entire digital identity to them. So, why am I drawn to Google services? What is it about them that makes them such a good fit for me? I decided to put together an article to run down those services I use including Gmail, Google Code, Google Docs, Picasa, and obviously Blogger now. Warning! This is purely an opinion piece for my own edification. There's not really any objective comparisons that will be made, but you might glean a bit of information that is interesting to you...or maybe not. So let's start with Gmail.

Gmail
Ah, the gateway drug for me. I avoided it for quite a while because of the embedded ads. Like many, I didn't like the privacy ramifications of them targetting ads based on the contents of my emails. I also tend to want to control things when I can, and since I had a web server already I figured I could just use that for email accounts. But then I wanted webmail. I grew tired of migrating my inbox when I reinstalled/moved between operation systems. At the time the only options from my hosting provider were Squirrelmail and something called Horde. Pretty basic stuff, fine for checking things occasionally, but not for day to day use. I tried running RoundCube locally and playing with my MX records to redirect mail, but then I had to worry about uptime and redundancy. And although RoundCube had the promise of Ajax coolness it wasn't that great either, so I decided to give gmail a try.

So I created my current codertimt account and had it fetch mail from my other account(s). It took a little bit to get used to the threaded model, but now I can't stand any other way. I find the inteface to be clean and simple(a recurring theme driving my Google-lust) and fast. Labels are easily applied and worked and best of all I don't have to worry about storing or moving any mail messages. I just have to trust Google to not screw anything up. The ads are actually quite low key and I just try not to think about the privacy stuff. :) Again, trust.
Of course this need for threaded Gmail has screwed me up a bit in regards to my iphone mail usage. I can't stand to use the native mail app and since Google won't build anything but a web app, my iphone usage has been a little cumbersome. The iphone mobile web site is quite functional, but a bit on the slow side of the cellular network, I think a native app would be better in this regard since it wouldn't have to download any web page layout cruft and also wouldn't have to render in Safari. It's not too bad, but a pain and takes a while to login and check for new messages. I had considered setting up the mail app to check for new messages so I could be alerted, but never went to the trouble. I didn't want the repeated account and I wasn't sure if it would automatically update when I read new messages on the web or if I would have to open up the mail app and mark as read. I think it would over IMAP, but I never really made the attempt. Then with OS 3.0, Apple gave us Push alerts. And someone created a push app for gmail, so now I have an icon with overlay and notifications showing me new messages and I only have to open Safari to get them if I desire. Makes the iphone/gmail experiece much more pleasant.

The last thing that is very nice about having Google deal with your mail is when you need to find something, the search work great. I don't know if you're aware, but Google does search pretty well, and that carries over into Gmail. It's so much quicker/easier to find something on my Gmail account than when I have to dig up an old email from Outlook at work.

So, I'm sold on Gmail as being the best email service, but what else does Google have to offer? How about code repositories and document storage/editing?


Google Code
A few years ago I started development on a music player for an open source handheld gaming device called the GP2X. As any developer know, the worst feeling in the world is to lose source code after spending hours working on a project. And after having lost a local cvs repository by not backing it up, I decided I was going to use an off site code repository for this project. So I was immediately drawn to the big daddy of open source repos, Sourceforge. I created a sourceforge project late on Friday and at the end of the process discovered it had to be approved. After waiting a few hours into Saturday I decided to check out an alternative from Google I remembered hearing about. A quick signup and automatic approval process later I had secured http://code.google.com/p/ommpc.

It's probably not as feature rich as sourceforge, but aside for my desire to be able to organize downloads it fits the bill nicely. The no frills presentation is clean and simple and makes it easy to find what your looking for. It has a small issue tracker which I don't use much, a wiki for documentation and most importantly a subversion repository to keep all of my code safe...I just have to trust Google once again not to lose anything.

Google Docs
Now, I'm not a big Office program user. I don't create large Excel spreadsheets or fancy Powerpoint presentations. I occasionally need to type up a document, that's about it. Long ago I stopped worrying about having a copy of MS Office at home, a download of OpenOffice more than meets my needs, but wouldn't it be nice if I could get to my little documents on whatever machine, without emailing them to myself.

Enter Google Docs. It works great for my simple purposes. I can start something while I'm at work and then just bring it up and finish at home. Or quickly type something up at home to print out at work. And I don't have to worry about it getting lost during a drive format now. Again, the uncluttered interface is easy to get around in, but all your basic functionality is there. It's useful also as a holding area for docs and pdfs. Although it's still not my promised Gdrive.



Google Docs are obviously not gohing to unseat Office anytime soon, but there are already some things such as document sharing, the architecture easily allow for and thus by default trumps the MS offering. Look for seamless collaborative editing once Google Wave hits and there might be cause for companies to take note. At least small companies, big coorporations will be stuck protecting their IP while the rest of the world takes to the clouds for teir computing... Anyway, enough of that, lets talk about something cool...like image manipulation.

Picasa
One area of normal, everyday life where technology has majorly changed is photography. Gone are the days of having film developed for the everyman and enter the time of digital photo storage. We personally have images dating back to our first 0.8MP Digital Camera in 1999. So obviously we need a way to organize and share them.

My first decent digital camera was an HP Photosmart 812 and thus my first photo software was the HP software. Generally I only used it for printing though(which it did very well, to this day it's the only software I've found that realizes you can fit 3 4x6 photos on one piece of paper), I just used Windows Explorer to view thumbnails and did my simple editing(crop, resize, red-eye reduction) with the GIMP. As the photo collection has grown and my wife has become more involved with the process, this no longer was going to cut it.

A couple years ago, my wife bought a Kodak camera and installed the Easyshare software that came with it. She though it was nice and easy to use, I thought it was bloated, slow to load, slow to use and generally an unusable piece of crap. Unfortunately, the camera driver was tied to the software and when I tried to remove it the camera was no longer recognized. So I left it installed and tried to ignore it. I installed Picasa alongside it, but never really used it too much and couldn't convince her to work with it...now enter Windows 7.

After installing Windows 7 I plugged in our Kodak Z1012 and it was immediately recognized by the OS. Here was my chance to break away from the Easyshare software. I installed Picasa again and so far am loving it. It has a very slick interface and is very fast. Things such as cropping and red-eye reduction are much easier than working in the GIMP and everything should be intuitive enough for the wife to transition. I think once she starts using it, she will realize how much better it truly is. And plugins like picasa2facebook which allows easy uploading to facebook albums will definitely help sway opinion in favor of Picasa. Speaking of uploading pics, that leads us to Picasa Web Albums.
From Screen Captures

Picasa Web Albums
Once we have our massive photo collection under control, we probably want to share some of these with the world right...or at least friends and families. Once I started organizing photos again, I realized I really need to make sure all of our memories are backed up somewhere. Well, I already knew this as in the past a rough Linux distro decided to format a partition I had asked it not to and for a 4 hour period or so, I though I had lost all my photos. Managed to recover them.

Anyway, I started looking for an online service to backup photos, plus share them. I thought I had found a good solution with flickr as they will store your pics in full resolution and you can get them back in full resolution with a Pro account. So I made an impulse purchase of a Pro account...turns out it's not that easy to get the pics back and their terms of service don't really guarantee they won't just delete your account if they see fit. In other words, they aren't really a backup service. Plus getting the 20GB of images would take awhile. I may try some other online backup service at some point, but for now I decided to just make copies on multiple drives...that should be pretty safe...

That brings us back to sharing our pics. I have a flickr Pro account now, so that seems like a good choice. I find a plugin to allow uploading from Picasa and all is well...right? Well as much as I want to use the account I paid for, I just don't find the flickr process/site compelling. I decide to try out Picasa Web Albums as they should have the best integration for Picasa anyway and quickly fell in love. Again, simple and clean interface. The pictures load tons faster than flickr. Easy to have a private album and send viewing invitations... So I'll be ready for our next family vacation... In the meantime, I'm just blogging about it...
Blogger
Hey, what a lead-in. Obviously I'm using Blogger for this blog. I don't really have much to say about it. It's not an original Google product, so it doesn't have quite the same clean and simple feeling to it, although it's not too bad. I hate WYSIWYG editors and the code they create, but as long as I don't view the HTML too much it's not too bad. It integrates into Google quite well, setting up Adsense was quite simple. Otherwise it's just kind of a means to an end.

Chrome
I'll finish up this little(hah) article with one of my newest favorite toys. Google Chrome. I am a long time Firefox proponent and it took me quite a while to even consider using Chrome. My experience with Nokia tablets, the iPhone Safari and playing with OSX Safari a little made me realize that Webkit based browsers can be quite nice. So I decided to give Chrome a try on the new Windows 7 install. The integrated Google search/url bar make so much sense and it make great use of screen space. Seems to be more memory efficient than Mozilla based browsers. Once again, I'm hooked. I'll still have to keep Firefox around for some web development stuff, but Chrome is now here for day to day.

That about wraps it up. I've pretty much trusted Google for all of my online activities. And it's mostly because their idea of UI design meshes well with mine. Keep it simple, and work well. It's the very same reason Google took over web search and the reason I stay with Google search over new options such a Bing. You may give me the best results in the world, but if your interface gets in they way, you still lose. Anyway, if you made it this far, thanks for reading.... Now go Google something.





Read more!

Saturday, September 5, 2009

Music, Memory, and Madness

Well, mostly just music and memory, but I needed another M. A tweet last night from @brewern got me thinking once again about my music solution...or lack thereof. I have a brand new Windows 7 install which I can setup just like I want it, so that begs the question of what do I want and why. I have a few normal dependencies that I'm sure quite a few other do(such as needing iphone support) and a few oddball ones that might be just for me.

The Setup
As previously stated I have an iphone I would like to sync some music to. The obvious answer to this problem is just use iTunes, right. Unfortunetly, here lies one of those odd issues I have. My wife also has an iphone that is synced to this machine. Dealing with music wouldn't be a big deal, but we both also have iphone apps synced, and while possible to keep seperate it's a bit of a pain especially when itunes wants to completely remove everything from someones phone to start with... So the plan is to sync my apps with my work laptop and find some other way to get music on the phone. Also before anyone mentions the fact that you can sync just certain items from one machine(such as calendar/contacts) and other items from another machine(music/vids/etc) it turns out all app store items(music/videos/apps) are tied to one machine and can't be split up. I tried really hard. :)

So back to the issue. I need a non-itunes way to get songs on my OS 3.0 iphone. I used Media Monkey pre-3.0, not sure if they have their ipod plugin updated yet or not, but I've never really like Media Monkey. Way too much stuff going on, too many icons, etc... Dug a little bit and found some beta build of SharePod with iphone 3.0 support. It crashed on 64bit Windows 7, but I got it to run in XP Compatibility Mode and actually put some songs on the device. An extra hoop to jump through, but workable. Now I needed an easy way to get files in a folder to sync. @brewern's tweet prompted me to research Songbird some more and it turns out there was finally an Add-On to do just that. I had looked for this in the past to try and sync to my gp2x to use for my player there and it was nice to see it had been added. So I loaded it up with the plan to do the following...
  • Organize in Songbird
  • Sync to folder
  • Sync folder to iphone with SharePod.
So, I started playing with Songbird a little, unfortunatly I happened to glace at the Task Manager and saw that SongBird was taking up almost 200MB of memory. Now, I have plenty of RAM, but I just find it ridiculous for a music player to be taking that much. I know Songbird does more than just simply play music, but still... So I closed it down and from a cold start playing one song, it was using around 130MB. So it was purged, along with my hopes and dreams of my above plan. Then I remembered foobar2000 also had an ipod sync plugic.

A quick search revealed beta support for OS 3.0 also. So I installed it along with the Columns UI and ended up with what you see below. A very usable media player, that as configured is only taking up 30MB or so of RAM and syncs perfectly with my iphone. At least it did with my quick test, we'll have to see how it works out going forward. But thusfar I'm quite happy, no extra hoops to jump through and it meets my requirement exactly.




Read more!

When 140 characters aren't enough...

Well, I don't generally have too much to say but sometimes I want to write down some of the random thoughts in my head that just won't fit in a tweet. I've also thought it would be nice to have somewhere to post about some of my software developement work, so in keeping with the idea that I might as well help Google take over the world, I created this blogger...um...blog.

This is just a first post to get things going. I'm @codertimt on twitter, thus the blog title...which pretty much only makes sense to Perl programmers. Well programmers of other languages also probably get it since the array syntax is pretty ubiquitous, but the @/$ nomenclature is a bit perl-ish.

Anyway, I'm off to figure out this Google Friend Connect thing and see if it can be linked to Twitter.


Read more!

Thursday, April 16, 2009

The Passage of Time

Well, it's been quite some time since I've posted to this site. We're coming up on a year since I first purchased "Project Fisher" and unfortunately it's not really seen any progress since my last update. I'm still somewhat undecided about what I'm going to be doing with it. On one hand, it's paid for and if finished would be a great little fishing boat. On the other hand, I'm not really an avid fisherman. I could probably get $1000 out of it, enough to finance most of plans for "Project Durango", but it would be something I could use in the future with the kids... Anyway, it's still in the yard, awaiting it's fate...currently I'm in the keep it frame of mind...
Read more!