Relativity

Chris:
the fix process is probably two-fold
i need to do a COUNT(*) GROUP BY work_order HAVING COUNT(*) > 1
to ascertain the frequency of similar issues
then look at the sync code to see what the issue is

jimmynash:
sounds like gangs of fun

Chris:
heh
other peoples databases make me cry

jimmynash:
can I help?

Chris:
yeah, jump in your time machine and go back to about this time last year and tell me to just deal with their developers denormalized and incomprehensible database because that way i could blame stuff on him rather than having to deal with trying to normalize it
:)

jimmynash:
here I go…

Chris:
lol

jimmynash:
WHOOOOOOOSH

Chris:
i doh’t think it worked because the prior conversation is still on my screen
your time machine suxors

jimmynash:
it was built in lasso

Development Software I Can’t Live Without

There are already just about a million “Top Ten” style software lists. Regardless, here is the software without which I could not conduct bidness:

1) Visual Studio 2005
Yes, I know…we write mostly PHP at my company, but Visual Studio happens to be the best IDE available. I have a copy of 2008 that I haven’t installed yet, mainly due to the fact that I’d have to re-buy a bunch of plug-ins such as…

2) VS.PHP by Jcx.Software
This little gem allows PHP development on Visual Studio. I mentioned this a million years ago when I’d first started using it and I’m pretty much convinced it’s the best thing since sliced bread for PHP developers and it’s only $99.

3) Visual SVN
Yet another brilliant Visual Studio plugin that integrates open-source brilliance with…Microsoft. It integrates Subversion, the remarkable source code management system, right into Visual Studio. Everything you’ll need is available from either a context menu or via the menu that appears in the, um, menu bar. For those of you already familiar with Tortoise SVN (upon which Visual SVN is built), basically this product shoehorns Tortoise into Visual Studio. It is worth the $49 per license several times over.

4) Visual SVN Server
This is a product by the same company, but it’s remarkable enough that I felt it deserved indivual mention. It makes the creation and management of Subversion repositories, users, and security as simple as navigating the very intuitive user interface.

5) FileZilla FTP Client / FileZilla FTP Server
Free FTP client, free FTP server. Each product is very very easy to use. I used to be a SmartFTP user but after that product started to decline in quality, RootCause steered me in this direction.

6) FoxIt PDF Reader
FoxIt is a free PDF viewer and printer that frees you from the shackles imposed by that horrid piece of bloatware known as Adobe Acrobat. I don’t even know how big the Acrobat is these days, probably around 45MB…just to read PDFs! The 2.44MB FoxIt download frees you from this stupidity.

7) Open Office
The Sun-backed productivity suite has almost completely obviated our need for Microsoft Office. I say “almost” because the only reason I have Excel is that I needed to run a regression analysis a while back and Open Office does not have a good statistics package. That one example aside, I haven’t used office since we opened our doors. This, however, would not be possible without…

8) Google Applications
Who needs the cruft commonly known as Microsoft Exchange when Google provides excellent (and constantly improving) web based applications? Not my company (and probably not yours, despite what your CTO tells you).

9) TredoSoft MutipleIEs
Any web developer has to contend with the steaming pile that is the world’s most popular browser, Internet Explorer. While IE 7 has fixed some of the stupidity, there’s a lot of the universe that is still on IE6 (and a few on 5.5), and web developers have no choice but to deal with this. This free download from TredoSoft makes this easy and it works much better than other solutions.

10) PuTTY
This SSH/telnet client is indispensable for anyone that deals with Linux servers. And there is even a version for WM6 phones!

Making MySQL Worse Than It Already Is

I like MySQL. I do. Much of the work that we do is based on MySQL. However, that usage is based out of necessity because many of the frameworks that we use (e.g. Drupal, Joomla, Wordpress) do not adequately support Microsoft SQL, which I would MUCH rather use.

MySQL has seen great improvement in version 5; the feature list has grown to include views, triggers, stored procedures. The implementation of these features leaves much to be desired (no indexed views, cursors in stored procedures are…quirky) but version 5 was a step in the right direction and has us eagerly anticipating version 6.

Yet along comes “Drizzle”, the brainchild (brainfart?) of MySQL’s director of architecture, Brian Aker.

Drizzle will have a micro-kernel architecture with code being removed from the Drizzle core and moved through interfaces into modules. Akers has already selected particular functionality for removal: modes, views, triggers, prepared statements, stored procedures, query cache, data conversion inserts, access control lists and some data types.

Source: Builders.au

Mmmm…WTF?

My Phone Rules

I mentioned the other day the impressive power that my Sprint Mogul (aka HTC 6800) puts at my fingertips anytime, anywhere.

This weekend provided a great example: my wife and I enjoyed a short getaway to Kansas City where we stayed at a nice hotel, did some shopping, and ate some great Indian food (don’t open this link if Firefox, it will crash your browser). But whilst walking through Banana Republic, I received an IM via Octrotalk that a server move was underway and that I needed to check in some code.

So I stood right in the middle of Banana Republic, connected to my network via VPN, remoted to my computer, and did a Subversion check-in. I then connected to the server via SSH, updated, and then IMed that everything was ready to go.

Obligatory jab: I couldn’t have done that with an iPhone.

Reality check: the demographic that needs to be able to VPN, SSH, and RDC from a mobile device is tiny. Apple would be foolish to care.

Honest truth: I sorta want an iPhone 3G. Or a Macbook Air. I just want to feel hip and informed, because that’s what owning an Apple does.

Using My Phone as a Wireless Router

I thought that it was pretty cool that I could used my Sprint Mogul superphone as a router by installing PDANet. It brought one-click simplicity to computing whilst traveling while also allowing my to circumvrent Sprint’s silly data charges.

But WMWifiRouter makes my Mogul even cooler! It quite literally makes my Mogul into a wireless router, so any computer close enough to my phone can connect to it just as they would any other wireless network.

Netstumbler indicates I’ve got a range of about 30 feet before the signals pretty much degrades exponentially. However, that’s a heck of a lot better than having use a wire to connect the thing to my laptop, plus now multiple computers can connect.

It’s powerful applications like this that make it easy for me to overlook the shortcomings of Windows Mobile.

The High Cost of Cheap Hosting

We have a number of clients who regularly ignore our advice, usually to their detriment. The latest debacle involves a client who sought our advice on hosting. We told them to just spend the money to get a Rackspace dedicated server. We also told them that under no circumstances should they use a GoDaddy solution.

Naturally the client chose to use a GoDaddy Virtual Dedicated Server. After all it only costs $50 a month! That’s $250 per month less than Rackspace! And besides, we don’t need all that horsepower!

So they signed with GoDaddy, but not before we told them that we washed our hands of any server related issues. If we were called in to deal with an issue that was determined to be server related, they would be obligated to pay our full ad-hoc rate.

You can imagine my (lack of) surprise when I opened up my Gmail this morning to find panicked emails from the client. The site was behaving strangely. After a bit of snooping, I found that both PHP and MySQL were running out of memory…no great surprise since this great GoDaddy deal only came with 256MB of RAM and since this web application involves some very complex queries on some decent sized tables.

The client called GoDaddy to see if they could upgrade their RAM allocation to 512MB, which they can…provided they move to a different server.

Let’s run the numbers on this deal: I’m dinging them for $125/hour, not excluding taxes. They’ve already used about 6 hours of time this month on server related issues, not counting the two hours I spent this morning. The server move will probably take another 6 hours, especially if they ignore my advice (again) and refused to spend the money and migrate to Rackspace. That brings us to 14 hours, or just under $1900 with taxes. I know for a fact that their guys have spent about 20 hours (not just on this issue) trying to get the server to play nice…say their guys make $35 an hour, that’s about $700. The annualized cost of the server is $600.

That comes to $3200 invested into this server, they’ve not yet been up two months, and it’s been one thing after another with this GoDaddy Virtual POS. Rackspace would have come to $3600 per year.

I have several other clients on equivalent Rackspace platforms and guess what we’ve had to deal with for server issue? Zip, nil, nada, null. Factor in the incredible customer service that Rackspace provides, the ridiculous connection speed, easy scalability, managed backup and it should be an easy decision.

(I don’t work for or have any affiliation with Rackspace other than being an extremely happy client).

Viva La Vida

The project about which I posted in March was a cluster learning experience and is the reason I’ve neglected this blog for so long.  At some point here I’ll pontificate about what went wrong and how I can (or have) learned from it.

In the meantime, I’m going to try to be more consistent with this thing.  I even went so far as to set a reminder in my Google Calendar.

In unrelated news, The Steampunk Workshop is a really cool website.  I’ve never really been into the steampunk thing, but I could see myself getting into it. I like working with my hands and it would be fun to engage in some less cerebral activity.

Taskix

I just stumbled across the most marvelous little utility. And by “stumbled across” I mean I read about it in PC Magazine and wondered why I’d never Googled for such a thing:

http://taskix.robustit.com/

It allows you to move taskbar items in Windows XP. For example, I like to have Visual Studio 2005 always running in the far left, Firefox to the immediate right of that, and then whatever else. Pretty cool.

Lasso: Hang Yourself With It

This current project has been one challenge after another. This is the case with every project, which is why I love developing software…never-ending challenges. However, the challenges in this project do not come from needing to find better/faster/cooler ways of accomplishing goals. No, the challenges come from the searing incompetence of the programmer who started the project but was fired before he could complete it.

Here’s a short list of grievances:

  1. No functions. The entire website, which contains some very complex functionality, is one gigantic if/then/else statement.
  2. No comments. Not a single one in what has to be 30,000 lines of very sloppy code.
  3. No foreign keys. He referenced discrete fields, like a user’s name, to create a relationship with another table.
  4. Three SQL datatypes were employed: integers (for the unused primary keys), datetime (for the odd occurrence when he actually decided to timestamp something) and varchars with a length of 255 for everything else, and I mean everything.
  5. Fulltext indexing on every single varchar field. Every. Single. One.
  6. Goofy character based flags. After all, why use a boolean or an tinyint 0/1 pattern when you can have flags like “enabled/disabled/Enabled” or “yes/no/NO.”

On top of it all, the legacy code is written in an absolute abortion of a language known as Lasso. Lasso is this…idiosyncratic, we’ll call it…language favored by “programmers” who favor Macs. Here are a few of the neat “features” of Lasso:

  1. Rather than following that boring old void function myFunc(args) pattern that every other language on the planet uses, Lasso eschews “functions” for “custom tags” with this sweet prototype syntax: define_tag: -myFunc, -required=’arg’;
  2. Passing variables to functions…I’m sorry, custom tags…by value as the default behavior must be passe to Lasso; variables are passed to functions (custom tags) by reference by default . You’ll need to root pretty deep into the language guide to discover documentation on this little gem of reality.
  3. It has its own middleware server and site administration tool that sits between the web server and the code. Every web language out there has a parser or JIT compiler that sits in the same place, but Lasso does it differently. Admins have to create sites, then create database connection entries, designate which tables can be accessed by which users, decide which filetypes can be accessed, etc. etc. ad naseum. It’s no wonder my predecessor was the worst coder in the galaxy: he didn’t have time to learn anything as he was to busy trying to get a new website set up in Lasso’s SiteAdmin tool so he could actually then start writing the damn thing.
  4. Nobody uses it outside of seven people in England. Therefore if you are looking for community help…you’re screwed, unless you’re willing to wait for someone to answer a question on the one Lasso forum that exists on the entire internet at Nabble.com.
  5. You can’t buy a book on it, since, you know, publishers exist to make money and you can’t make money selling books about a language that seven people use. Well, there is one book published on Lasso 5 (current rev is 8.5).

I need a gun with one bullet.

Taking the Plunge

This day has been years in the making. I started learning to write code as a kid when my Dad brought home an Apple //e. A few years later I graduated to a book on 8086 assembly language. I studied engineering in college. Seven years ago I left a very good job to focus on becoming a programmer. There have been a few detours along the way, turns off of the road caused by poor choices and some bad luck.

So here I am, 7:00 in the morning on the Friday following my last day in someone else’s formal employ and I cannot be more confident in my choice. I’ve saved as much money as I could afford. I’ve worked evenings and weekends for the last few years to develop the necessary connections, reputation, and skills. I’ve turned down investors offering relatively handsome sums of money because I’m not willing to give away equity that has little present value but massive future value.

I’m stoked, amped, jacked…insert the superlative synonym for excitement, it’ll fit. I open up my IDE and…