Thursday, March 27, 2008

LD_LIBRARY_PATH in Mac OS X

I keep forgetting, so I thought I would drop a quick blog posting to remind me forever.  For those of you who are moving from Linux to Mac OS, you might be interested:

The equivalent of $LD_LIBRARY_PATH in Linux, is (drum roll please): DYLD_LIBRARY_PATH.

$ export DYLD_LIBRARY_PATH=`pwd`/mydebugpath

And now your application will resolve the shared objects (.dynlib) files at runtime.

For all the glory details you can also man dyld: 

$man dyld

Labels: , ,

High Performance Web Pages

This week I've been slowly revamping and revising the corporate web site as well as my own personal web site.  As a result, I've been looking for pointers on web design, scalability, and performance. 

I found an informative presentation by Stoyan Stefanov (Yahoo!) that was given at the PHP Quebec, March 13, 2008 conference (see below).  Stoyan points out that when it comes to Google page rank, server response speed factors into your score.  More interesting tidbits inside:

I also found a much earlier and much longer (97 slides) slide deck from two other Yahoo employees:

Wednesday, March 26, 2008

Painless Schedules Revisited

"If it takes one woman nine months to make a baby, all we need is nine women and we will have a baby in one month." -- anonymous project manager.

This is a preview only. Click Download Now to download the template.After being sick and unproductive for the last few weeks, I decided to refocus on getting a shrink wrapped product out the door.  What I needed was a list of tasks, or better yet a schedule to keep me motivated (and maybe I could see tasks I could farm out to other coders).

Of course, I reached for the biggest time management hammer I could find -- Microsoft Project.  I quickly downloaded the Microsoft Solutions Framework (MSF) application development project plan template-- a project template that contains outlines Microsoft's heavyweight process in detail.  When I adjusted the start date to today, the entire project stretched out into the second week of May 2009

The BossThe pointy haired manager in my head shrieked, "No. No. No. That won't do. We must ship sooner."  I sighed and started editing to make the schedule more sane.  At that moment, I became acutely aware of how much more productive a solitary developer can be when isolated from corporate bureaucracies and six sigma philosophies.

  • Project Kick-Off?  Deleted.  I don't need to define project rolls or form a team.  No donuts or bagels for the team.  (-6 days).
  • The Envisioning Phase?  I know exactly what I am going to build and I don't need 44 days to define, review, and collaborate on a vision/scope document (-44 Days).

Now, that pulled the end date into to January. 

I'm feeling the kind of elation that comes from warping the laws of the universe and bending time to my will.  I pause and imagine the possibilities.  I briefly envision myself as a tyrannical project manager, except I hate meetings more than I love telling people what to do.   I press onwards.

  • Planing.  36 days for "User Education?"  Nah, my users are the smartest in the world.  After a few deletes, planning is down to 2 days -- I need a functional spec after all (it is basically written so this is just padding). 

After cutting out the endless meetings and collaboration milestones, I ended up with a schedule that still didn't make sense.  Clearly there had to be a better way...

Now for the Hard Part...

Developers have advocated many different approaches to software guestimation.  Joel Spolsky originally recommended "Painless Software Schedules," (a simple schedule with lots of small tasks in Excel) but has since changed his recommendation to follow, "Evidence Based Scheduling."  Mix in development methodologies such as Agile and the picture gets murkier.

I chose to merge various scheduling/development methodologies into a set of rules I could afford to live with, based around a sliding two week window:

  • Since I'm not good at estimating software tasks down to the minute, I've decided to schedule firm commitments four weeks out (this iteration, plus the next), where I will enter estimates down to the hour.   Past the four week window, I will simply schedule features and milestones. 
  • Firm 2-week iteration schedule.  Every two weeks I have an internal release milestone.  Version 0.0.1 is scheduled for release this Sunday, March 30th.  Version 0.0.2 is scheduled fro April 13, 2008.  Each milestone has specific features associated with it.  According to my schedule, Release version 1.0 will ship the week of May 25, 2008.
  • I've decided to use FogBugz to track my four week estimate window.  I'm basically pulling things off my Project generated Gantt chart and adding them to FogBugz.  I am curious to see how well I do against my timed estimates.

The only unknowns at this point are distribution and marketing, but those will be resolved in time.

Labels: ,

Saturday, March 22, 2008

Google Analytics 101

Today, I'm concentrating on fixing some deficiencies on my web sites.  I've decided to add the new tracking script to all of my web pages (rather than just my blog).

Google Analytics is a free measurement tool that has over 80 report.  I found two solid presentation slide decks that are a fantastic introduction:

... and another one:

Labels: , , ,

Safari Books Online

Safari Books OnlineAs a consultant, I am constantly called on to reach out and expand my technical horizons and I try to keep up on the technology treadmill.  As a result, I am a voracious reader, picking up books on whatever I am interested in learning at moment.  I have boxes of books on everything from assembly language to Perl to advanced C++ stored in two states.  

Well, not any more.

Earlier this month, I purchased a corporate (tax deductible) all-you-can-eat library subscription of Safari O'Reilly Online.  For one modest per-seat subscription fee, I get searchable access to electronic copies of technical books published by O'Reilly, Addison-Wesley, Sams, Prentice Hall, Que, Cisco, Microsoft, Peachpit, John Wiley & Sons, and more. 

Although I generally shy away from leases or subscriptions, a quick check at my amazon purchases showed me that I would be better off purchasing a subscription (Amazon Prime is $79 per year alone).  And I'm glad I did.  It has turned out to be one of the most useful purchases I have made this year.  

As an added benefit, I will no longer have to deal with the added headache of generating expense reports because I used a personal credit card to purchase a technical book, or the reconciling the transactions on a credit statement, or figuring out where to put the book when I am done with it.

For example, this month a client handed down an edict that all script development (build scripts, testing scripts, etc.,) must be in Python because of cross platform compatibility issues.  No problem, except I needed to write a test application that would query a remote web service, parse XML, and test for expected and exceptional data.  Normally, I would have coded up a quick and dirty application that leveraged C/C++ and libcurl, or Perl. 

However, the client wanted to be able to run the test code under windows and Linux without compiling various libraries -- only Python.  As a result, I need to quickly learn just enough Python to be dangerous.  Within minutes I was reading through various Python books and was able to quickly cobble together a simple application to do what I needed.  

Further, I was able to search into Python Cookbook by Alex Martelli, and cut and paste a simple yet elegant script that would search and replace text in a file making a simple application that would generate classes, XML files from template files.

Within the scope of a few hours I had wrapped up the task.   

Free would have been better

Some libraries (such as San Francisco Library) offer Safari Online access for free.  Most of these offer a web interface (library card required) that you can connect to via the Internet.  Unfortunately, I don't reside in an area that has a library with a subscription. 

Labels:

Sunday, March 16, 2008

Changing Registered Agents

When you form a corporation (or qualify a corporation to do business within a state), you are often required to have a registered agent in that state. 

While the laws vary from state to state, a registered agent is basically someone who provides a legal address within the state during normal business hours to facilitate legal service of process in the event of legal action or lawsuit.  In reality, they will charge you an excessive amount of money to simply forward a tax notice once or twice a year. 

Quite frankly, these incorporation/registered agent services really don't add much value.  Mostly, they charge for services you would otherwise get for free.  Furthermore, contrary to what they would have you believe, you can act as your own registered agent (provided you reside in the jurisdiction). 

When I originally incorporated my corporation, in Delaware, I used the services of the Company Corporation.  In hindsight, I could have registered online directly with the state of Delaware and saved a pile of money.  At the time I submitted my order to incorporate with them, I was to receive one year of registered free agent service.   

However, six months after incorporation, I received a bill from the Company Corporation for a whopping $215 to act as my statutory representation in Delaware.  After double checking my incorporation date, I fired off an email to the Company Corporation and received the following e-mail in response: 

Mr. Turner,
That is correct.  We do bill four months in advance to give you ample time to make changes if need be.   We actually send out a series of ten invoices, it is not technically due until May.  Sorry for the confusion.
Have a great day.

This week, I received another invoice prefaced with an important day-glow yellow "Payment Reminder," attached to an invoice which stated I was now 1-30 DAYS past due in forking over $215 (even though my service is free until May).  

Had their rates been competitive, I would have simply paid the invoice.  However, as you will see below, they are significantly more expensive than anyone else in the industry (that I could find), and as a matter of principle I won't allow myself to get ambushed that badly.

Shopping for a Registered Agent

The process of changing your registered agent is extremely simple: you pay a fee to the government and submit a simple form.  Not surprisingly, most of the registered agents online will do everything for you and some will even pay for the fee themselves.

Below is a quick list of statutory representation that I was able to find online, with their rates.  If a firm had a "fill in this form and we will call you back" quote sheet, I moved on.  Those types of businesses tend to be brokers who are reselling the services of other statutory agents.  It is best to simply ignore them.

 

Registered Agent Fee
Harvard Business Services $50/year ($125 first year, which covers transfer fee).
BizFilings $129/year (including first year fees).
Company Corporation $215/year
InCorp $99/year
incnow.com $90/year ($194.00 first year)
MyCorporation $159/year

 

The question I have to ask myself is-- given that all registered agents provide exactly the same service, why is there such a wide discrepancy in the pricing ($50-$320)?  Some of the registered agents try to distinguish themselves by providing "compliance" solutions, which are basically a passive web site with a calendar.  They are essentially totally worthless -- you are better off researching the dates and adding them to your outlook/Google calendar.  

Labels: ,

Friday, March 14, 2008

The Nicest Rejection Letter Ever

Last week I signed up for the iPhone Developers program. Today (almost a week later), I received a an email from Apple regarding the status of my enrollment. It has to be the nicest rejection letter I have ever received:
Dear Registered iPhone Developer,

Thank you for expressing interest in the iPhone Developer Program. We have received your enrollment request. As this time, the iPhone Developer Program is available to a limited number of developers and we plan to expand during the beta period. We will contact you again regarding your enrollment status at the appropriate time.

Thank you for applying.

Best regards,

iPhone Developer Program

Labels: ,

Tuesday, March 11, 2008

WSJ: Larger Monitors Make you More Productive

Now in from the I-told-you-so department: According to the Wall Street Journal, workers who have larger monitors complete tasks much faster. 

Researchers at the University of Utah tested how quickly computer users completed tasks and found that for users on 24-inch monitors vs. those on 18-inch monitors; those using the larger monitors completed their tasks 52% faster.

The study went on to say that someone using a larger monitor could save in upwards of 2.5 hours a day. 

Monday, March 10, 2008

A First Look at the iPhone SDK

This weekend I downloaded the iPhone SDK, viewed the getting started videos, and enthusiastically started gnawing through the documentation.  I also purchased an iPod touch for development.  I was able to get a hello world application running in short order.

Here are my observations:

  • You don't need to purchase an iPhone.  The only difference between the iPhone and iPod Touch in terms of development are: location services, network connectivity and the camera.  Your native application will work on both.  I chose to develop my applications on the iPod Touch primarily because I didn't want to be charged an extra $65 a month from AT&T.
  • Objective C/C++. You must use Apple's bastardized version of C/C++ for the development.  You can however, mix it with standard C++, but you are forced to use Cocoa Touch.   
  • You will need an Intel-based Mac.  The SDK plugs seamlessly into a newer version of XCode (Apple's free development IDE).  However, you will need to purchase a newer Intel-based Mac to get it up and running.
  • No background applications.  Only one iPhone application can run at a time, and third-party applications never run in the background. If the user switches to another application, check their email, your application quits.
  • The App Store.  The app store will be unveiled with the iPhone 2.0 release, which is slated for June.  By the way the software update will be a free update for iPhone users and a fee upgrade for iPod touch users.  ISVs will get a 70% cut of the sale price of a piece of software (checks will be cut monthly).
  • The SDK is free, but if you want your application distributed through Apple, you must pay a $99 fee to join the new iPhone Developer Program.

However, what is missing from the documentation is any mention of how to distribute trialware or shareware for the iPhone.  While we are a ways off from June, it is a big question on many developers.

Labels:

Thursday, March 6, 2008

Out Sick

I've been out sick for the last three days; I came down with a walking pneumonia.  I am taking today off today as well.

I apologize to those who emailed me, who haven't received an response.  I will be trying to catch up on my email today so I can hit the ground running tomorrow. 

Saturday, March 1, 2008

MSDN Lockout Day Has Arrived

imageToday, Microsoft rolled out the new MSDN web site and I'm effectively locked out. 

I received an email two weeks ago forewarning me of the upcoming changes, and stepping me through the process of delegating myself as my company's primary technical resource.  I did it, and got an error. 

I submitted the issue to Microsoft technical support and so far I have gotten three emails telling me that my ticket was being assigned and reassigned, but no resolution. 

This morning, I reformatted and reinstalled XP on my laptop and started installing the tools (office, visio, visual studio, etc).  I confirmed that I'm effectively locked out of my MSDN subscription.

I get a nice web page that simply states, "An Error has Occurred."

Nice.