<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>benjismith.net</title>
	<atom:link href="http://benjismith.net/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://benjismith.net</link>
	<description>Benji Smith, Software Research</description>
	<lastBuildDate>Tue, 13 Jan 2009 08:32:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Calamity!</title>
		<link>http://benjismith.net/index.php/2009/01/13/calamity/</link>
		<comments>http://benjismith.net/index.php/2009/01/13/calamity/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 07:25:17 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2009/01/13/calamity/</guid>
		<description><![CDATA[I&#8217;ve been around long enough&#8211;and seen enough disastrous computer crashes&#8211;that I have a pretty careful backup strategy. I&#8217;ve been the nagging voice of nagginess when my friends have lost data due to hardware failures.
&#8220;You should ALWAYS make backups of your data. You never know when you computer will take a permanent siesta.&#8221;
I commit all of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been around long enough&#8211;and seen enough disastrous computer crashes&#8211;that I have a pretty careful backup strategy. I&#8217;ve been the nagging voice of nagginess when my friends have lost data due to hardware failures.</p>
<p>&#8220;You should ALWAYS make backups of your data. You never know when you computer will take a permanent siesta.&#8221;</p>
<p>I commit all of my source code to a subversion repository on my local machine, and I regularly take snapshots of that development machine, which I keep on an external hard drive. In case of a failure I&#8217;d suffer two or three days of lost data. A week, tops.</p>
<p>Lately, my computer&#8217;s primary hard drive has been making funny noises, like a tiny helicopter flying into a narrow fjord, deep within my laptop. So I&#8217;ve been extra diligent about backups.</p>
<p>On Friday, it finally died.</p>
<p>During the boot-up process, it went into a ten-minute chkdisk loop before ultimately succumbing to a horrible BSOD.</p>
<p>After that&#8230; nada.</p>
<p>No problem. I bought a new drive and prepared to transfer everything over. After installing the operating system onto the new drive, I connected the backup drive (in its own external USB enclosure) and listened, horrified, as it made a few pathetic clicks and whirring noises.</p>
<p>Dead.</p>
<p>Huh. That&#8217;s weird.</p>
<p>This drive had been chugging along without complaint just a few hours beforehand, and suddenly, it&#8217;s a complete brick. The operating system doesn&#8217;t recognize it at all. It may as well be a can of sardines.</p>
<p>I fiddled with the connections, finally taking apart the enclosure, swapping the cables. Still nothing. The drive is definitely kaput.</p>
<p>Keep in mind, this is not just my source code. This is my entire life. Software projects, art projects, letters, stories, email archives, proposals, invoices, tax documents, from the last seven or eight years.</p>
<p>I felt like my house had burned down.</p>
<p>Panicked now, I connected the old laptop disk, to see what I could salvage.</p>
<p>As it turns out, there was still a lot there.</p>
<p>Even though the operating system wouldn&#8217;t boot, and some entire directory hierarchies had vanished in a puff of corruption, I was able to salvage nearly all of my personal documents (in fact, as far as I can tell, all of my photos and documents survived).</p>
<p>But the source code is riddled with holes. Entire projects are just completely gone. (And about a third of my MP3 collection. The horror!)</p>
<p>The application analytics project&#8211;which <a href="http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/">I&#8217;ve</a> <a href="http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/">been</a> <a href="http://benjismith.net/index.php/2008/06/15/client-platform-server-platform/">working</a> <a href="http://benjismith.net/index.php/2008/06/19/desktop-analytics-platforms-version-1/">on</a> <a href="http://benjismith.net/index.php/2008/12/17/desktop-analytics-platform-still-alive/">since</a> <a href="http://benjismith.net/index.php/2009/01/05/desktop-analytics-the-embeddable-library/">June</a>&#8211;is particularly decimated. From a total of probably 30,000 lines of code, I&#8217;d say about 25% has vanished. The entire server project is nowhere to be found. (The entire embeddable library project and about 90% of the reporting client GUI survived.)</p>
<p>I was able to recover an old, crusty snapshot of the server code (from September) by manually slogging around in the raw subversion data files.</p>
<p>Also completely gone: a set of ActionScript support libraries, with data structures and algorithms for the charts &#038; graphs in the reporting client. Luckily, at the end of December, I started the process of moving my source code&#8211;starting with this particular library&#8211;to a repository on a remotely hosted (and independently managed) server.</p>
<p>Thank God for small miracles, right? At least if I could recover that code, I&#8217;d save myself the trouble of reimplementing about three or four thousand lines of code.</p>
<p>So I tried doing a check-out, but guess what!</p>
<p>There&#8217;s nothing there.</p>
<p>Browsing remotely with Tortoise SVN, the server happily responds that the repository is empty. And the web SVN interface says that I don&#8217;t have access to the repository. Which is odd&#8230; since it also lists a record of my most recent check-ins.</p>
<p>Wouldn&#8217;t it be funny if that repository had somehow evaporated?</p>
<p>Is someone playing a joke on me? Am I being punk&#8217;d?</p>
<p>I&#8217;m going to send my (two!!) failed hard drives to a data recovery company tomorrow. Maybe they can do better than me at recovering some of this lost files. Yikes.</p>
<p>Anybody want to make a small wager that the data recovery facility will burn to the ground the moment my FedEx package arrives?</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2009/01/13/calamity/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Desktop Analytics: The Embeddable Library</title>
		<link>http://benjismith.net/index.php/2009/01/05/desktop-analytics-the-embeddable-library/</link>
		<comments>http://benjismith.net/index.php/2009/01/05/desktop-analytics-the-embeddable-library/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 04:45:35 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2009/01/05/desktop-analytics-the-embeddable-library/</guid>
		<description><![CDATA[In the spirit of me actually spending the bulk of my time writing code, I&#8217;m going to dispense with the meandering long-winded stories and just show a few details of the upcoming implementation of the Desktop Analytics platform.
Within the next couple of months, I&#8217;m going to release the full product suite. The server is written [...]]]></description>
			<content:encoded><![CDATA[<p>In the spirit of me actually spending the bulk of my time writing code, I&#8217;m going to dispense with the meandering long-winded stories and just show a few details of the upcoming implementation of the <a href="http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/">Desktop Analytics</a> platform.</p>
<p>Within the next couple of months, I&#8217;m going to release the full product suite. The server is written in Java and the <a href="http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/">reporting GUI</a> will be deployed as an Adobe AIR application, but those aren&#8217;t what I want to talk about today. Today I just want to provide a sneak-peek into the embeddable library that developers will link into their own applications to enable statistical reporting.</p>
<p><span id="more-92"></span>The embeddable library is written in the <a href="http://digitalmars.com/d">D programming language</a>, which compiles to native code and exposes C linkage. (DLLs on Windows and SOs on Linux; the OSX compiler is a little out of date and has some bugs, but rumor has it that it&#8217;s going to get a major overhaul in the near future.) Initially, I&#8217;m only going to support C/C++ deployment on Windows and Linux. But shortly thereafter, I&#8217;m going to write wrappers for Java and .NET. And hopefully the OSX compiler will be up to snuff by this summer.</p>
<p>I&#8217;m shooting for maximum compatibility with the most in-demand development platforms, so I&#8217;m going to let users tell me which wrappers they&#8217;re most interested in seeing. (Chances are very good that I&#8217;ll also write a Flash/Flex/ActionScript implementation, to support analytics on RIA applications. My recent development experience in Flex has been exceptionally pleasant. Stay tuned!)</p>
<p>Another one of my goals is to make it absolutely dirt-simple for developers to use the library. In the most basic cases, it should take fewer than five lines of code.</p>
<p>Here&#8217;s a simple case:</p>
<div style="background-color:#efefef;font-family:Courier New,Courier;size:12px;padding-top:5px;padding-bottom:5px;">
<pre>
#include &lt;AnalyticsLib.h&gt;

void main() {

  char* sessionId = AnalyticsLib.createSession(
     "https://stats.mydomain.com:8080/",
     "MyDeveloperId", "MyApplicationId", "MyApp Version 1.0.6"
  );

  /* ...application logic goes here... */

  AnalyticsLIb.closeSession(sessionId);
}
</pre>
</div>
<p>Aaaaaand that&#8217;s it!</p>
<p>Easy like Sunday morning!</p>
<p>The analytics library starts a background thread that handles all the nitty-gritty details. It caches all of its data locally (on disk), periodically communicating with the server (over HTTPS, if you like) and flushing its local cache. If the application (or computer) crashes suddenly, the data is all recoverable. The next time the user starts your application the analytics library will flush the data from the previous session, along with a flag indicating that session terminated abnormally.</p>
<p>If the user disconnects form the internet, or if the server goes offline for whatever reason (upgrades, restarts, etc), no problem. The library will cache its data on disk and re-submit later, when the network is connected and server is online. If it can&#8217;t submit the data during the current session, it&#8217;ll submit the next time the user runs your application.</p>
<p>When the library finally does connect with the server, they exchange a series of one-time-only, one-way-hashed authentication tokens, to prevent casual mischief-makers from sending the server bogus data.</p>
<p>Every time a new session is created, the library inspects the local operating environment, collecting information about the current device:</p>
<ul>
<li>The operating system name and version.</li>
<li>The CPU name, speed, and number of cores.</li>
<li>The total amount of system RAM.</li>
<li>The number of local hard drives, and their total capacity and available space.</li>
<li>The number of screens, and their dimensions.</li>
<li>The presence (and versions) of the JVM and CLR.</li>
<li>The network bandwidth (bytes per second, downstream).</li>
</ul>
<p>If you need other information about the local environment (like maybe the installed version of some particular DLL) you can collect that info too. It&#8217;s part of the API, which we&#8217;ll get into later, but it&#8217;s not built into the default environment inspection process.</p>
<p><em><strong>NOTE: As a customer of this product, you&#8217;ll have to agree not to collect any personally-identifiable user information. It will be one of the terms of the license. You&#8217;ll also have to disclose to your users that you&#8217;re collecting anonymous usage data. The last decade has proven that it&#8217;s possible to collect anonymous statistical data on the web without breaching user privacy, and I stay within those bounds.</strong></em></p>
<p>Along with the environment data, the library will also automatically report some historical device-usage statistics:</p>
<ul>
<li>The start and end times of the session.</li>
<li>The currently-deployed version of the software.</li>
<li>The total cumulative number of sessions originating from this device.</li>
<li>The elapsed time since the previous session.</li>
<li>The elapsed time since installation.</li>
</ul>
<p>Beyond the automatically-collected device and session information, the analytics library also provides a simple API for reporting developer-configurable data, in four different categories: environment variables, benchmarks, events, and logs.</p>
<p>Once you&#8217;ve created a session, if you need to collect any environment variables not already included in the default installation, you can call a simple function in the analytics library to submit your own:</p>
<div style="background-color:#efefef;font-family:Courier New,Courier;size:12px;padding-top:5px;padding-bottom:5px;">
<pre>
AnalyticsLib.envNumeric("Workstation Uptime (Minutes)", 673.25);
AnalyticsLib.envText("Python Version", "2.5.2");
</pre>
</div>
<p>Environment variables are reported only once per session. Re-submitting a new value for a previously submitted environment variable will overwrite the old value with the new.</p>
<p>If you&#8217;re concerned about the performance characteristics of your code on your users&#8217; computers, you can run benchmarks locally and submit the results of those benchmarks for analysis later. Wouldn&#8217;t it be great to know the mean, median, and standard deviations of the execution time for some expensive function in your code? Do most of your users have blazing fast computers, or are most of them running pokey old-timer machines?</p>
<div style="background-color:#efefef;font-family:Courier New,Courier;size:12px;padding-top:5px;padding-bottom:5px;">
<pre>
double units = 10000; // The cross-referenced document contains 10,000 words.
AnalyticsLib.submitBenchmark("Document Cross-Reference", millis, units);
</pre>
</div>
<p>The benchmark API allows you to specify the number of work-units performed by your code as well as its execution time. Later, you can use this information to produce charts and graphs examining how your code&#8217;s execution time scales with its dataset. Do your algorithms have logarithmic or quadratic performance characteristics? If you submit benchmark data from within your application, you&#8217;ll be able to produce histograms reports for your entire user base.</p>
<p>And, of course, you&#8217;ll be able to compare the benchmarks of various different user groups. Is your application&#8217;s performance more sensitive to CPU speed or to the amount of system RAM?</p>
<p>The analytics library also provides an API for submitting arbitrary events. An event is an instantaneous moment in time, with an associated name, and optional textual and numeric values. Here are a few examples:</p>
<div style="background-color:#efefef;font-family:Courier New,Courier;size:12px;padding-top:5px;padding-bottom:5px;">
<pre>
// User disconnected from the network.
AnalyticsLib.event("NetworkDisconnect");

// User was idle for 1 hour.
AnalyticsLib.eventNumeric("BackFromIdleState", 60.0);

// User invoked the SpellCheck feature, from the Tools|Text hierarchy.
// You can report on any level of this hierarchy.
AnalyticsLib.eventText("FeatureInvoke", "Tools|Text|SpellCheck");

// User spent 6 minutes reading the 'Beginner Tutorial' page in the Help system.
AnalyticsLib.eventTextNumeric("HelpSystem", "Beginner Tutorial", 6.0);
</pre>
</div>
<p>With these events, you&#8217;ll be able to write complex reports to analyze the usage patterns of your users. How fully do your trial users explore the user interface? Do your &#8220;premium version&#8221; users actually use the premium features that they paid for? Although your users have long-running sessions (maybe they run your software all day long at work), how much time do they spend actively in the application, verses letting it sit idle in the background?</p>
<p>Finally, the analytics library provides a mechanism for submitting log data.</p>
<div style="background-color:#efefef;font-family:Courier New,Courier;size:12px;padding-top:5px;padding-bottom:5px;">
<pre>
try {
   doSomething();
} catch (const MyException&#038; e) {
   char* failureType = e.getFailureType();
   char* message = e.getMessage();
   AnalyticsLib.log("3D Rendering Subsystem", failureType, message);
}
</pre>
</div>
<p>In your ongoing effort to improve product quality, you can inspect those remote error logs to find the hard-to-reproduce faults that never seem to occur in your own development environment. You can even run statistical reports about the modules where the errors originated, the types of errors that occur, the types of devices where they occur most often, and the events immediately preceding the crash.</p>
<p>So those are the features! I hope you&#8217;re as excited as I am to see this stuff finally see the light of day in a few months.</p>
<p>Like I&#8217;ve said before, the embeddable library is about 90% complete (which is why I can describe it with such detail at this point). Currently, the lion&#8217;s share of my time is going into the GUI implementation. And boy is it going to be sexy. I couln&#8217;t be happier with the Adobe AIR platform. The Flex API is extremely well-designed, and the event-driven model is excellent. Also: the graphics are stunning. Pixel-perfection in a highly-functional GUI is finally possible, and I&#8217;m happy to say that the user interface is a near-verbatim recreation of my <a href="http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/">original mockup</a>.</p>
<p>ActionScript, as a programming language, leaves a *little* to be desired, but it&#8217;s pretty decent, and the development environment is very productive.</p>
<p>Anyhow, I&#8217;m still working my ass off to get a 1.0 version released by the end of Q1, but I wanted to provide you guys with some of the implementation details that I&#8217;m hammering out, so that you can start salivating for the release.</p>
<p>Anyone interested in beta testing?</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2009/01/05/desktop-analytics-the-embeddable-library/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Desktop Analytics Platform: Still Alive?</title>
		<link>http://benjismith.net/index.php/2008/12/17/desktop-analytics-platform-still-alive/</link>
		<comments>http://benjismith.net/index.php/2008/12/17/desktop-analytics-platform-still-alive/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 06:40:32 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2008/12/17/desktop-analytics-platform-still-alive/</guid>
		<description><![CDATA[The wooden doors of the saloon have long since fallen off their hinges.
A sun-bleached steer skull gleams under the hot desert sky.
And tumbleweed creeps across the road, bumping against the old hitching post.
It&#8217;s been a ghost town around here lately, since I posted my last message in June, and the lost signs of life have [...]]]></description>
			<content:encoded><![CDATA[<p>The wooden doors of the saloon have long since fallen off their hinges.</p>
<p>A sun-bleached steer skull gleams under the hot desert sky.</p>
<p>And tumbleweed creeps across the road, bumping against the old hitching post.</p>
<p>It&#8217;s been a ghost town around here lately, since I posted my last message in June, and the lost signs of life have not gone unnoticed a few of you out there.</p>
<p><img src="/images/steer_skull.png" alt="ghost town" /></p>
<p>Three or four times a month, I get an email from someone curious about my <a href="http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/">Desktop Analytics</a> project, who maybe saw the <a href="http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/">GUI mockup</a>, and wondered whether I was still around and still actively working on an implementation.</p>
<p>As it turns out, I&#8217;m still here. And I&#8217;m still working hard.</p>
<p>In fact, the ongoing emails from interested bystanders have really kept me motivated and have reaffirmed my confidence in the strength of the concept. As my way of saying thank you to the people who have sent me their questions, I&#8217;ll take a little time tonight to give you a long-overdue status report. Then, sometime within the next few days, I&#8217;ll post a sneak peak into the architecture I&#8217;m developing and some of the cool features that I hope to unleash on my users early next year.</p>
<p>I&#8217;m thinking&#8230;mid to late Q1&#8230;</p>
<p>First, a quick refresher, for those of you who might not have been around when I originally floated this idea.</p>
<p>I&#8217;m building an application analytics platform, analogous in many ways to Google Analytics or Omniture. But those solutions focus on analyzing web traffic to answer questions like &#8220;which search engine keywords provide me with the most traffic?&#8221; and &#8220;which of my content resources have the highest click-conversion ratio?&#8221; Those types of metrics were invented my the advertising industry for messuring consumer responses to ad campaigns. Long before Google emerged from the labs at Stanford, ad executives asked Nielsen analysts for their conversion numbers.</p>
<p>The web analytics software on the market today still reflects that mentality: the internet is a medium for delivering content. Some of that content attracts a lot of eyeballs. Some of those eyeballs tell their mouse-fingers to clicky on an ad. And some of ad-clickers buy hilarious cat calendars from Amazon.com.</p>
<p>Web analytics is all about maximizing throughput of the content/eyeball/mouse-finger/cat-calendar pipeline.</p>
<p>Developers of applications, rather than publishers of web content or cat calendars, get short shrift in the whole equation. Sure, we can get detailed statistics about which types of web surfers are more likely to download our products. But when the last byte finishes downloading, our visibility into that user&#8217;s behavior evaporates.</p>
<p>I want an analytics package that tells me how users actually interact with my software.</p>
<p>How many people are using that new spellcheck feature I spent so much time developing? How often do my users fire up the application? Every day? Once a week? Do they use the software all day long, or just for a few minutes in the morning? How many menu clicks does it take to find certain features? Are people getting lost in my user interface? Do they invoke the HELP system? Do the &#8220;Premium Edition&#8221; users actually use any of the premium features, or do their behavior patterns look just like the &#8220;Free Edition&#8221; users? How many people are still using a legacy version, and which features should I improve, to motivate an upgrade decision among those users?</p>
<p>Answering questions like that will help me develop better software.</p>
<p>And I like to think that &#8220;better software&#8221; is <em><strong>almost</strong></em> as important as &#8220;good keywords&#8221; in driving new revenue.</p>
<p>Anyhoo&#8230;I hope I&#8217;ve gotten you a little sweaty and breathless&#8230;</p>
<p>Now: status report. Tomorrow: architecture details.</p>
<p>The software comes in three pieces: an embeddable library, a server, and a reporting client.</p>
<p>The embeddable library is a tiny piece of code that developers will link into their own &#8220;host&#8221; applications. The code is written in a <a href="http://digitalmars.com/d">snazzy little programming language called D</a>, which compiles to native machine code, providing C linkage on Windows and on x86 Linux and OSX. No matter what language or platform you&#8217;ve used to write your application, as long as it provides some mechanism for linking with C libraries, you&#8217;ll be able to embed the analytics library in your code.</p>
<p>As of today, the Windows version of the embeddable library is about 95% complete (the OSX and Linux versions are about 75% done).</p>
<p>The server is implemented in Java, so you can run it pretty much anywhere (I personally recommend a &#8220;Mr Coffee&#8221; deployment environment). The server is about 85% finished, and can handle about 100 requests per second on my dinky little 2-year old laptop. It doesn&#8217;t use Tomcat or JBoss, and it doesn&#8217;t depend on a gazillion application frameworks. It&#8217;s a standalone HTTP server, talking to a MySQL backend, and you can get it up and running within minutes (hint: no XML configuration).</p>
<p>Finally, there&#8217;s the reporting client, with all the sexy charts and graphs. I&#8217;m only about 10% done here, after making a bold decision to switch my development environment. I started out working in C# with WPF/XAML, but I recently switched to Flash/Flex/AIR (for reasons that I&#8217;ll describe in more detail later) and now I&#8217;m playing catch-up.</p>
<p>That&#8217;s all for now :o)</p>
<p>I&#8217;ll be back soon with more details. But right now, I just wanted to check in with you guys, let you know that the project is still rolling forward, and that I&#8217;m anticipating a Q109 release.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2008/12/17/desktop-analytics-platform-still-alive/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Desktop Analytics Platforms: Version 1</title>
		<link>http://benjismith.net/index.php/2008/06/19/desktop-analytics-platforms-version-1/</link>
		<comments>http://benjismith.net/index.php/2008/06/19/desktop-analytics-platforms-version-1/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 18:50:09 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[30daysprint]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2008/06/19/desktop-analytics-platforms-version-1/</guid>
		<description><![CDATA[Thanks, everyone, for your feedback about the Desktop Analytics software.
I&#8217;ve made the following platform choices:
Initially, the embeddable client library will strictly provide a C interface for Windows. In future versions, I&#8217;ll also provide wrappers in popular high-level languages, starting with C# and Java. At some point, the library will also be available for Linux and [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks, everyone, for your <a href="http://benjismith.net/index.php/2008/06/15/client-platform-server-platform/">feedback</a> about the <a href="http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/">Desktop Analytics</a> software.</p>
<p>I&#8217;ve made the following platform choices:</p>
<p>Initially, the embeddable client library will strictly provide a C interface for Windows. In future versions, I&#8217;ll also provide wrappers in popular high-level languages, starting with C# and Java. At some point, the library will also be available for Linux and Mac OS X.</p>
<p>The server will be developed as a standalone Java server (i.e., without requiring Tomcat or JBoss or anything like that) with a MySQL backend. Future versions will enable more database choices (probably starting with SQL Server), though I won&#8217;t develop a non-Java version.</p>
<p>In a subsequent version, I&#8217;ll also release a &#8220;reflector&#8221; module in PHP/MySQL. The reflector will be a dumb server component that listens for events from the embedded client library and stuffs them into a database. Periodically, it will connect to the main server and send a batch of data. The purpose of the reflector module will be for developers who don&#8217;t want their users to see an outgoing HTTP request to an unfamiliar domain, but who don&#8217;t want to actually host the main server themselves. At some point, the reflector will probably also serve as a load-balancer and/or a failover mechanism.</p>
<p>The reporting client, with all the fancy charts, will be developed in C# using the .Net 3.5 framework, for maximum WPF goodness.</p>
<p>Thanks again for your help in choosing platforms!</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2008/06/19/desktop-analytics-platforms-version-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Client Platform? Server Platform?</title>
		<link>http://benjismith.net/index.php/2008/06/15/client-platform-server-platform/</link>
		<comments>http://benjismith.net/index.php/2008/06/15/client-platform-server-platform/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 19:20:06 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[30daysprint]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2008/06/15/client-platform-server-platform/</guid>
		<description><![CDATA[I know not everyone is interested in getting a truckload of business intelligence about the users of their software. But for those of you who think the Desktop Analytics project is pretty cool, tell me a little bit about your development platforms.
Do you use Java or .Net to develop your desktop software? Or are you [...]]]></description>
			<content:encoded><![CDATA[<p>I know not everyone is interested in getting a truckload of business intelligence about the users of their software. But for those of you who think the <a href="http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/">Desktop Analytics</a> project is pretty cool, tell me a little bit about your development platforms.</p>
<p>Do you use Java or .Net to develop your desktop software? Or are you maybe using C++ with MFC or WxWidgets? Anyone selling desktop software built with Ruby or Python?</p>
<p>Do you have a server? Is it Windows or Linux? Do you have your own server, or do you use a VPS account? Or just a shared web server, with PHP/MySQL? Do you have permission to install your own software into your server environment? Are you already running a Java app server? Tomcat, or something else?</p>
<p>Whatever platforms people seem interested in are the ones I&#8217;ll focus on in my development, so express you preferences here!</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2008/06/15/client-platform-server-platform/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Analytics GUI Mockup</title>
		<link>http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/</link>
		<comments>http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 11:54:04 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[30daysprint]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/</guid>
		<description><![CDATA[I&#8217;d like to solicit some feedback on a GUI mockup I&#8217;ve put together, for the deskop analytics project (click to enlarge):

Without any additional commentary on my part, what do you think of that design? I&#8217;ll answer questions in the comments section.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d like to solicit some feedback on a GUI mockup I&#8217;ve put together, for the deskop analytics project (click to enlarge):</p>
<p><a href="/index.php/gui-mockup-version-1/" border="none"><img src="/images/GuiMockup_thumb.png" /></a></p>
<p>Without any additional commentary on my part, what do you think of that design? I&#8217;ll answer questions in the comments section.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2008/06/13/analytics-gui-mockup/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Business Intelligence for Desktop Software</title>
		<link>http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/</link>
		<comments>http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 04:29:31 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[30daysprint]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/</guid>
		<description><![CDATA[First of all, let&#8217;s start by assuming that you love hilarious tee-shirts.
Something, perhaps, to express your knowledge of contemporary video-game pop culture, while simultaneously making an ironic commentary about being a complete social misfit. Not just a run-of-the-mill computer nerd. But maybe a former a member of an actual high school band. Brass section.
Maybe something [...]]]></description>
			<content:encoded><![CDATA[<p>First of all, let&#8217;s start by assuming that you love hilarious tee-shirts.</p>
<p>Something, perhaps, to express your knowledge of contemporary video-game pop culture, while simultaneously making an ironic commentary about being a complete social misfit. Not just a run-of-the-mill computer nerd. But maybe a former a member of an actual <strong><em>high school band</em></strong>. Brass section.</p>
<p>Maybe something like this&#8230;</p>
<p><span id="more-86"></span><a href="http://www.torsopants.com/store/product.php?productid=5083"><img src="/images/tuba_hero.png"></a></p>
<p>Oh yeah. That&#8217;s the stuff.</p>
<p>To buy that shirt, you&#8217;ll need to surf on over to the <a href="http://www.torsopants.com/store/product.php?productid=5083">Torso Pants</a> website, where you&#8217;ll find a truckload of other pithy outerwear. No matter what ironic outings you&#8217;ve planned with your friends this summer, you&#8217;ll find a breezy 100% cotton tee with the perfect one-liner somewhere on TorsoPants.com.</p>
<p>While you&#8217;re there, open up the HTML source in your favorite text editor and scroll waaaaay down to the bottom. There, you&#8217;ll notice a SCRIPT tag, linking to code from a <em><strong>google.com</strong></em> domain. And if you&#8217;ve been involved in web development <em>&#8211; in even the slightest capacity &#8211;</em> over the last two or three years, you&#8217;ll immediately recognize that ubiquitous little snippet of JavaScript as belonging to the embeddable Google Analytics library.</p>
<p>Anyone with a GA account can paste those two lines of JavaScript into her website&#8217;s design template and immediately start collecting a broad array of metrics about the site&#8217;s users, their browser environments, and how they interact with the website. Most importantly, the marketing department can see where their incoming links are coming from, which types of users tend to buy (or not buy) which types of products, and which advertising campaigns are most efficient at converting which eyeballs into dollar bills.</p>
<p>The Torso Pants people can actually quantify the hilariousity of their t-shirts by comparing the popularity of the product pages, even among people who don&#8217;t buy! For my money, <strong><em>Tuba Hero</em></strong> is at least 35% more hilarious than <a href="http://www.torsopants.com/store/product.php?productid=5044">Homeschool Valedictorian</a>.</p>
<p><img src="/images/google_analytics_thumbs.png" /></p>
<p>Right about now, given the vast scope of my readership, I assume the guys from the TorsoPants marketing department are looking at a blip on those charts, wondering what the hell is going on. The abnormal rate of traffic from this page will surely show up on their dashboard, and they&#8217;ll probably click on over here to investigate. (Hi guys!! I&#8217;m sure you don&#8217;t mind my <em><strong>borrowing</strong></em> one of your images, cuz of all the free advertising I&#8217;m sending over? <em>Right?</em>)</p>
<p>I picked the Torso Pants website for my little story to illustrate the fact that pretty much every company (small or large) doing business on the internet is currently using business intelligence, usually in the form of Google Analytics, to optimize every aspect of their online presence. Torso Pants is just one example out of millions of other small businesses with the same snippet of JavaScript on their pages. The few companies <em><strong>not</strong></em> using GA have &#8212; almost without fail &#8212; implemented the more sophisticated (and enterprisey (and therefore more complex (and significantly more expensive))) solutions from Omniture or WebTrends.</p>
<p>But the idea is the same.</p>
<p>From the placement of links to the wording of ad copy, every element of the interaction design can be studied and optimized using a web analytics platform, performing A/B testing about the effectiveness of different ads, different landing pages, different offers, different prices, and so on and so forth.</p>
<p>In fact, the existence of these analytic tools on the web provides one of the most substantial positive arguments for developing a new software application as a webapp, rather than on a desktop platform. Even if the web development process is more cumbersome. Even if it means additional IT staff to deploy and manage the online app. And even if the browser environment degrades the user experience.</p>
<p>Releasing your product on the web means you can easily incorporate a sophisticated statistics package, by just pasting two lines of code into a single template file.</p>
<p>It&#8217;s hard to argue with that.</p>
<p>But what if there was an analytics package for desktop applications? What if the integration process was as simple as linking to a library and pasting two lines of code into your own project? How would that change the equation? And why is the competitive landscape so crowded in the web analytics marketplace be so barren in the desktop analytics space?</p>
<p>I&#8217;ve spent the last few months thinking about just such a platform, wondering what kinds of things you could learn about your users. How could you use that intelligence to design and build better software? Here are a few of the ideas I came up with:</p>
<ul>
<li>First of all, how many people are actually using your application? You might know how many people downloaded it, but do you know how often they launch it? Do they use it every day? Maybe only once a week, or once a month? Is it used mostly Monday through Friday, during the day? Or primarily on evenings and weekends, implying the difference between corporate purchasing and leisure and hobby users? After using the application for a week or two, do most people uninstall it, or do they start using it even more?</li>
<li>Do your users have shiny new, high-powered machines running Vista with 4 gigs of RAM, or are they clunking along in Windows 98 on a Pentium II? Do they have Java? What version? Do they use multiple high-resolution monitors, or do they run mostly on laptops? You probably have more downloads from Windows users than from Mac users, but which population of downloaders is more likely to become a group of loyal users?</li>
<li>How long does it take your trial users to finally buy a license? If you offer a 30-day trial, do people use the software during the full trial period, or do they launch your software only once? Maybe those people who uninstall at the end of the trial would buy your software if the price was lower. Users who abandon the software long before the end of the trial probably used the software for one task and satisfied their need. Maybe you should offer a shorter trial. Or maybe you should offer a money-back guarantee and get rid of the trial altogether.</li>
<li>How many people are using pirated serial numbers? Do some of your licensed users install on both a desktop and laptop computer? Those users provide an excellent way of determining which features are more well-suited to each platform, since you can observe the same person&#8217;s behavior in two different contexts.</li>
<li>Maybe you offer a &#8220;Pro&#8221; or &#8220;Enterprise&#8221; edition, with a few extra features for a few extra dollars. Do people actually use those premium features? How often? Which features are the most valuable? If people don&#8217;t actually use those features, you might need to redesign the distribution of features among your product editions, to take best advantage of your pricing segmentation opportunities.</li>
<li>Do people get lost in the user interface? How often do they browse through the main menu before clicking on a menu item (indicating they&#8217;re having a hard time finding features)? When invoking commands, do people prefer keyboard shortcuts, context menus, toolbar buttons, or the main menu? Maybe you just implemented the vaunted &#8220;Office Ribbon&#8221; interface. Do people switch back and forth between ribbon panels without choosing an option (again, because they can&#8217;t find the right button)?</li>
<li>When you release a new version of your software, how long does it take your users to upgrade? Do some of your high-volume users resist upgrades, even across major versions? Maybe the features in the new version didn&#8217;t capture the interest of those long-time users. That&#8217;s a big problem, because in most businesses, your existing customer base is the richest source of new sales.</li>
<li>Do your users actually read the Help docs? Is it because they understand your software really well? Or is it because they don&#8217;t know how to find the Help system? Do they read the docs immediately after installation (maybe because of a confusing interface) or only after a few weeks or months of usage (maybe because the interface is easy to use at first, but the advanced features are hard to understand)? When people do read the docs, what topics tend to be most popular?</li>
<li>What if you could run a snippet of profiling code on every user computer, to get a baseline performance benchmark for all of your users? What if you could get stack-traces for exceptions thrown on remote machines? What if you could see which devices, platforms, and configurations contribute to the most errors? Should you spend a lot of time fixing those errors, or should you just tell people that Windows 95 is not supported?</li>
</ul>
<p>Those are the types of questions I hope to answer with my software. And so that&#8217;s the focus of my project for the month of June.</p>
<p>Of course, the product I&#8217;m describing here is more than a 30-day project. But I don&#8217;t intend to <strong><em>stop</em></strong> at the end of the month. In this article, I&#8217;m defining the long term vision, and over the course of this month (and, realistically, probably part of the next month) to restrict the scope to something a little more bite-sized for version 1.0.</p>
<p>I hope that sounds as exciting to you guys as it does to me. I&#8217;m completely psyched for this project.</p>
<p>At the moment, I&#8217;m about 60% finished designing the database schema. I&#8217;ve written a few bits and pieces of code (Java and .NET) for the embeddable libraries. And I&#8217;ve spent a lot of time (altogether, about a week) working on the user interface design sketches.</p>
<p>While the primary goal of the project is to provide a truckload of business intelligence about desktop software deployments, I also want to provide the most gorgeous, detailed charts ever seen in a BI platform. I&#8217;ve been reading a lot of <a href="http://www.edwardtufte.com">Edward Tufte</a> lately, and I&#8217;ve been absolutely <em><strong>slaving</strong></em> over the GUI. So far, I&#8217;m really happy with how it&#8217;s going.</p>
<p>But more about that later.</p>
<p>I&#8217;ll be back within the next day or two with more details. And pictures!</p>
<p>In the mean time, let me know if this is the type of thing you&#8217;d be interested in. Based on the bullet points above, are those the kinds of stats that would help you in the development and marketing of your software? What other kinds of stats would you like to collect? (Incidentally, my personal checklist is much longer than what I included above; I trimmed it substantially for publication.)</p>
<p>If this sounds like it&#8217;d provide value to your company, let me know some details about your development platform and process. (Either comment below or send an email to <a href="mailto:benji@benjismith.net">benji@benjismith.net</a>.)</p>
<p>What platform do you develop on? Java? .Net? Mac? Would you rather run the server component yourself, or would you prefer a hosted solution (knowing that the cost of the standalone version would probably be about the same as a year of the hosted subscription version)? If you&#8217;d rather host it yourself, what does your server environment look like? Windows or Linux? Do you run your own servers? Are you on a VPS? Do you (god forbid) use a shared-hosting provider? Depending on the size of your user population, it might be necessary to get dedicated hardware for a server like this. Would you be okay with that?</p>
<p>I&#8217;ll concentrate on producing embeddable libraries and server components that are compatible with the deployment requirements of the biggest segment of prospective customers. So if you&#8217;re even remotely interested, let me know!</p>
<p><img src="/wp-content/themes/benjismith/images/dot_d8d3b9.gif" style="margin-bottom:15px;" width="525" height="1"/></p>
<p><em>Holy crap! I&#8217;m currently in the process of <a href="http://benjismith.net/index.php/2008/06/01/concept-to-product-in-30-days/">designing and building a product in 30 days</a>. A whole bunch of other software developers are doing the same thing, at the same time, during June 2008. Everybody&#8217;s blogging about the process, and all of our RSS feeds are being aggregated into a single incredible feed. You can follow along <a href="http://feeds.feedburner.com/30dayers">here</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2008/06/02/business-intelligence-for-desktop-software/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Concept to Product in 30 Days!!</title>
		<link>http://benjismith.net/index.php/2008/06/01/concept-to-product-in-30-days/</link>
		<comments>http://benjismith.net/index.php/2008/06/01/concept-to-product-in-30-days/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 16:48:40 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[30daysprint]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2008/06/01/concept-to-product-in-30-days/</guid>
		<description><![CDATA[A handful of steadfast readers out there may remember that, a few years back, I challenged myself with developing a list of 30 unique business ideas in 30 days, with the goal of launching a product and building a business.
During that time, I did a lot of blogging (sometimes as late as 3am, to write [...]]]></description>
			<content:encoded><![CDATA[<p>A handful of steadfast readers out there may remember that, a few years back, I challenged myself with developing a list of <a href="http://benjismith.net/index.php/2006/06/08/30-days-30-ideas/">30 unique business ideas in 30 days</a>, with the goal of launching a product and building a business.</p>
<p>During that time, I did a lot of blogging (sometimes as late as 3am, to write a blog entry while on vacation, after everyone else had fallen asleep). The whole endeavor really got me into a mindset of wide-open possibilities, to the point where it was hard to <strong><em>stop</em></strong> thinking of new ideas and actually focus on just one.</p>
<p>(I&#8217;m going to make a bold statement: The people who complain about a lack of software ideas have never really spent a significant chunk of time going through a methodical brainstorming process.)</p>
<p>Now, after two years, I&#8217;m finally making good on the implied promise of that brainstorming month.</p>
<p>At the end of June, I&#8217;m going to release a new product.</p>
<p>Later this afternoon, I&#8217;m going to write my first line of code.</p>
<p><span id="more-85"></span>Before I get into all the details of the project, I&#8217;ll tell you a little bit of the back-story of how I got from there to here&#8230;</p>
<div style="font-style:italic;margin-left:25px;margin-right:25px;"><strong>DISCLAIMER</strong>: If you&#8217;re not the kind of person who enjoys long rambling stories about nothing, you can probably just skip the rest of this post and wait for the next one, where I&#8217;ll actually talk about the goals and architecture of the new product.</div>
<p>Anyhow, back when I finished that month of brainstorming, I made a decision about the best idea in the bunch and started working on an <a href="http://benjismith.net/index.php/2006/07/21/biz-okay-nine-more-ideas/">analytics application for the stock market</a>. I was a little nervous about competition from the big online brokerages, since E-Trade and AmeriTrade had already started offering advanced charting and analytics tools with their basic accounts. But I kept working on that project for about six months before finally crumbling under a few major obstacles.</p>
<p>Most importantly: I couldn&#8217;t find a data vendor who could provide the type of data I wanted to bundle with my application.</p>
<div style="font-style:italic;margin-left:25px;margin-right:25px;"><strong>TANGENT</strong>: To accurately back-test the stock market, you need the historic prices of all the companies that went out of business or were de-listed from the major stock exchanges, not just the ones still alive and kicking today. Ignoring all the defunct companies creates a survivorship bias in the data and invalidates the analysis. I talked to every vendor I could find, and they all offered twenty years of history for any company currently traded on the major exchanges. But <strong>nobody</strong> could provide a complete history including (for example) all the companies that died in the dot-com bust.</div>
<p>Since I didn&#8217;t think I could cobble together a satisfactory data feed, and since I had planned for the feed to be the work-horse of my revenue strategy, I scrapped the project.</p>
<p>At that point, I got an offer for a job in Boston, with the promise of a leadership role in the research department of a well-funded media startup. I moved across the country to accept the position, putting my entrepreneurial ambitions on the back-burner again for another year or so.</p>
<p>Last November, I left that job (on good terms, of course :) to start my own company, with the intention of using consulting projects to bootstrap my product development ambitions. The self-employment thing has worked out well. I really really enjoy the flexibility, the creative freedom, and the sense of strategic ownership (also: I have the coolest boss <strong><em>ever</em></strong>).</p>
<p>My biggest consulting project was vast and complex and researchy (I was working on a prototype of an agent-based collaborative decision-making simulation), so I didn&#8217;t actually have much time to spend on my own product.</p>
<div style="font-style:italic;margin-left:25px;margin-right:25px;"><strong>ANOTHER TANGENT</strong>: One of the things about research/prototype projects is that there&#8217;s literally no limit to the amount of time you can spend working on them. By working the weekend, or into the wee hours of the night, you can flesh out the prototype just a <strong>little bit more</strong>, making it slightly sexier to the client, who just <strong>might</strong> spend millions of dollars on a full implementation.</div>
<p>Anyhow, I wrapped up the big project a few weeks ago (the client decided to pass on the full implementation), and all of my other projects had already wound down over the previous month or two.</p>
<p>As I comb through my professional network looking for new projects, I nevertheless have a lot of time on my hands to finally do some solid product development. But within the next month or so, I expect to find a new client, and then I&#8217;ll be up to my eyeballs in consulting work again.</p>
<p>That means I only have about 30 days to get as much work done as is humanly possible. At the end of June, or potentially early in July, I need to be ready with a beta-stage product.</p>
<p>And, as the fates would have it, there&#8217;s a whole gaggle of other solo software entrepreneurs doing the same damn thing!! </p>
<p>They have a <a href="http://30dayproductchallenge.com/30day/FrontPage">website</a> and an <a href="http://feeds.feedburner.com/30dayers">RSS feed</a> and they&#8217;ve described the response from the one-man-software-company community as &#8220;<a href="http://kalzumeus.com/2008/05/27/incredible-interest-in-the-30-day-sprint/">incredible interest</a>&#8220;.</p>
<p>Looks like June is officially <em>&#8220;Get Down to Brass Tacks and Finally Build Your Damn Product Month&#8221;</em>. </p>
<p>Maybe in November we can all <a href="http://www.nanowrimo.org/">write novels together</a>&#8230;</p>
<p>So, everyone&#8217;s going to be blogging about their experiences, talking about their design and implementation and marketing processes. Looks like it&#8217;ll be a real hootenanny, and I thought it&#8217;d be fun to throw my hat into the ring as well.</p>
<p>I have a novel product idea (not one of the ideas from the 30-day brainstorming project, though). I have a few graphic design sketches. And I have the utmost confidence in the marketability of the product. It&#8217;s ambitiously big for one person (especially given the constrained time-frame), but if anyone can do it, I can.</p>
<p>Over the next 30 days, I&#8217;ll tell you all about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2008/06/01/concept-to-product-in-30-days/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Going Solo</title>
		<link>http://benjismith.net/index.php/2007/12/10/going-solo/</link>
		<comments>http://benjismith.net/index.php/2007/12/10/going-solo/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 21:54:47 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[biz]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[So, I finally bit the bullet and started my own company. I&#8217;ve been a free-agent for about three weeks now, and I love it.
Hooray for me!!
The new company is called Wry Research, and at least at first, I&#8217;m mostly just doing AI research consulting for a couple of clients. I&#8217;m trying to also fit in [...]]]></description>
			<content:encoded><![CDATA[<p>So, I finally bit the bullet and started my own company. I&#8217;ve been a free-agent for about three weeks now, and I love it.</p>
<p>Hooray for me!!</p>
<p>The new company is called Wry Research, and at least at first, I&#8217;m mostly just doing AI research consulting for a couple of clients. I&#8217;m trying to also fit in some original product development, when I have spare time. But I don&#8217;t have a whole hell of a lot of spare time, so I&#8217;m mostly just consulting right now.</p>
<p>But life is very good, and I&#8217;m enjoying the freedom and flexibility of being a solo software developer.</p>
<p>In the near future, I&#8217;ll talk about some of the work I&#8217;m doing as a consultant. I&#8217;ll also talk a little bit about a really cool research project that I&#8217;m doing, in conjunction with the Columbia Medical School Neurovascular Research Lab. Depending on the success of the research, it could lead me to developing a very cool product/service for the medical research community.</p>
<p>I&#8217;ll keep ya posted :)</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2007/12/10/going-solo/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Eternity II is here!!</title>
		<link>http://benjismith.net/index.php/2007/08/07/eternity-ii-is-here/</link>
		<comments>http://benjismith.net/index.php/2007/08/07/eternity-ii-is-here/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 16:47:22 +0000</pubDate>
		<dc:creator>benji</dc:creator>
				<category><![CDATA[eternityii]]></category>

		<guid isPermaLink="false">http://benjismith.net/index.php/2007/08/07/eternity-ii-is-here/</guid>
		<description><![CDATA[Last week, the Eternity II puzzle (which I&#8217;ve talked about here and here) went on sale. I can finally wipe up the drool-puddle-of-anticipation that&#8217;s been forming on my desk and get to work cracking this nut.
Unfortunately for those of us in the United States, the puzzle is not available here, and there are very few [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, the <a href="http://www.eternityii.com">Eternity II</a> puzzle (which I&#8217;ve talked about <a href="http://benjismith.net/index.php/2007/06/04/mit-puzzle-research">here</a> and <a href="http://benjismith.net/index.php/2007/01/27/solving-impossible-problems">here</a>) went on sale. I can finally wipe up the drool-puddle-of-anticipation that&#8217;s been forming on my desk and get to work cracking this nut.</p>
<p>Unfortunately for those of us in the United States, the puzzle is not available here, and there are very few online retailers willing to ship the puzzle to the USA.</p>
<p>But I did track down the puzzle at <a href="http://www.hamleys.com/invt/0000000897470">Hamley&#8217;s</a> and placed my order. Their online shopping cart is a little bit crappy (it got confused verifying my non-European billing address), so I had to call them on the phone ( (+44) 800 2802 444) and a very friendly girl with an Irish accent took my order.</p>
<p>I placed the order at noon last Wednesday, and the package was delivered (in Boston, MA) by about 2:00 pm on Friday.</p>
<p>Holy crap.</p>
<p>At first, I thought they must have used an American order-fulfillment location, but the package had international shipping stickers and a return address in the UK, so it seems to be an actual international delivery. Fulfilled in just two days. I&#8217;m very very impressed. I had no idea that it was even possible to ship something overseas so quickly.</p>
<p>The puzzle cost &pound;35, plus another &pound;25 for shipping. With today&#8217;s lousy exchange rates and the weak dollar, that&#8217;s a total of $120. Unfortunately, when I win the $2 million prize, that means I&#8217;ll really only be netting $119,999,880.</p>
<p>Bummer.</p>
<p>Anyhow, if any of you American algorithm enthusiasts have been sulking because you can&#8217;t get Eternity II here, sulk no more!!</p>
]]></content:encoded>
			<wfw:commentRss>http://benjismith.net/index.php/2007/08/07/eternity-ii-is-here/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
