Tag projects (138)

New Windows Phone app: Bridge Scorer!
Posted on 2014-06-26 09:51:00
Tags: windowsphone projects
Words: 45



Bridge Scorer is a great way to keep score in your monthly bridge game! It's only available on Windows Phone 8.1, and is a free ap with ads that you can remove for a low low price.

Check out more details or download it now!

0 comments

FlightPredictor: a postmortem
Mood: nostalgic
Posted on 2014-06-06 23:32:00
Tags: palm essay palmpre projects
Words: 559


Postmortem
Two weeks ago I noticed that FlightCaster, the backend service that FlightPredictor uses for all its data, had disappeared. The API wasn't responding and the website was down. FlightCaster had been acquired by NextJump in January 2011, so the writing had been on the wall for a while.

I started working on the first version of FlightPredictor for webOS in March 2010. I like traveling and planes, and the fact that FlightCaster used machine learning to predict when flights would be late sounded both cool and useful. When I saw their API was free to use that cinched the deal. I'm still not sure what the business plan was for a free API (this is why I'm bad at business!), but many thanks to Jason Freedman for making that possible. Jonathan Chase was also very helpful in answering my API questions and helping me with problems.

I sold a decent number of copies, but that aside, FlightPredictor opened a lot of doors for me. It was featured on the Palm homepage (well, its icon was :-) ), it won in the Palm Hot Apps competition (which came with $1000), Palm gave away 5000 copies for the TouchPad (and paid me for them!), and it was featured in the short-lived webOS Pivot magazine. I also got to travel to Palm HQ in 2010, where webOS 2.0 was introduced (day 1, day 2, day 3) and 2011, to get engineering assistance for my TouchPad apps. (recap) And you can draw a pretty straight line to my involvement in the webOS community to my Nokia Developer Ambassador position after webOS was killed.

Back in 2011 I wrote about what I want to get out of app development, and that still rings true.

Stats
Unfortunately some of the webOS numbers are lost to the Palm reporting system change in 2012, but:

FlightPredictor for webOS Phones:
4.29 stars (24 ratings)
released May 2010 (started March 2010)
total copies sold: not sure, but probably in the 1000-2000 range
101 sold in 2011
28 sold in 2012
9 sold in 2013
1 sold in 2014

FlightPredictor HD (for the HP TouchPad):
3.22 stars (59 ratings)
- this had a lot of 0 star ratings - I wonder if this was from people who got the app for free and then didn't like it or something?
released July 2011 (started April 2011)
total copies sold: probably around 1000? plus 5000 that Palm gave away. See here and here for some raw numbers
16 sold in 2012
13 sold in 2013
0 sold in 2014

FlightPredictor for Android:
4.92 stars (13 ratings)
released November 2011 (started September 2011)
total copies sold: 466

FlightPredictor for Windows Phone:
4.0 stars (38 ratings)
released March 2012 (started December 2011)
total copies sold: 139
84 sold in 2012
44 sold in 2013
11 sold in 2014

FlightPredictor for Windows 8:
4.5 stars (4 ratings)
released August 2012 (started April 2012)
total copies sold: 201
24 sold in 2014 (can't get data for other years :-( )

What's Next
Well, I have this nice shell of a flight tracking app, and I would love to integrate it with Cortana on Windows Phone. It will be a fair amount of work, though, and I'm somewhat actively working on two other apps right now, and it looks like it's going to be a busy rest of 2014. So: we'll see!

0 comments

Windows Phone: adding a first run tutorial to your app
Mood: happy
Posted on 2014-02-05 21:33:00
Tags: windowsphone projects wpdev
Words: 512

In the Austin area? Come to the Austin Code-a-thon and have a chance to win a JBL Wireless Charging Speaker!

--

My Marriage Map app has gotten some bad reviews complaining about missing features that were actually present in the app. So, I decided to make a quick tutorial that would point out how to use the app the first time the user ran it. I did a quick search for some sample code but couldn't find any, so I rolled my own. (download the latest version of the app to try it out!) It features

None of these were particularly difficult, but adding them all took a bit of work. So I made a sample project with the same system to make it easier to add to your apps.

FirstRunTutorial.wp.zip

Some notes on the code:--

See all my Windows Phone development posts.

I'm planning on writing more posts about Windows Phone development - what would you like to hear about? Reply here, on twitter at @gregstoll, or by email at ext-greg.stoll@nokia.com.

--

Interested in developing for Windows Phone? I'm the Nokia Developer Ambassador for Austin - drop me a line at ext-greg.stoll@nokia.com!

0 comments

New Windows Phone app: Baseball Odds!
Posted on 2014-01-10 13:33:00
Tags: windowsphone projects
Words: 124

Baseball Odds is now available in the Windows Phone Store!

This free app will calculate the probability of a team winning from a given situation. (i.e. tie game, top of the 8th, 1 out, runners on 1st and 3rd) It will also give the expected runs that a team will score in an inning - for example, your expected runs are higher with a runner on first and no outs than with a runner on second and one out, so a sacrifice bunt isn't a great idea in general. (of course, if the batter is terrible, then it might be anyway...)

This was the first project that I used Blend extensively to design controls, and I'm pretty happy with the results: check out these screenshots!

0 comments

Windows Phone: performance of parsing different file types
Mood: chipper
Posted on 2014-01-09 22:26:00
Tags: windowsphone projects wpdev
Words: 1033

When I started to work on Baseball Odds I knew I was going to have to worry about performance - the data set I have for the win probability has right around 15000 records. So I thought it would be neat to compare different file formats and how long it took to read their data in. Each record had the inning number (with top or bottom), how many outs, what runners are on base, the score difference, and the number of situations and the number of times the current team won. Here's a brief description of each format and some sample code:


Text:
This was actually the format I already had the data in, as it matched Phil Birnbaum's data file format. A sample line looks like this:

"H",1,0,1,0,81186,47975
and there are 15000 lines in the file. The code to parse this looks something like this:

const bool USE_AWAIT = false;
const bool CONFIGURE_AWAIT = false;
var resource = System.Windows.Application.GetResourceStream(
new Uri(@"Data\winProbs.txt", UriKind.Relative));
using (StreamReader sr = new StreamReader(resource.Stream))
{
string line;
if (USE_AWAIT)
{
if (CONFIGURE_AWAIT)
{
line = await sr.ReadLineAsync().ConfigureAwait(false);
}
else
{
line = await sr.ReadLineAsync();
}
}
else
{
line = sr.ReadLine();
}
while (line != null)
{
var parts = line.Split(',');
bool isHome = (parts[0] == "\"H\"");
_fullData.Add(new Tuple<bool, byte, byte, byte, sbyte>(
isHome, byte.Parse(parts[1]), byte.Parse(parts[2]), byte.Parse(parts[3]),
sByte.Parse(parts[4])),
new Tuple<UInt32, UInt32>(UInt32.Parse(parts[5]), UInt32.Parse(parts[6])));

if (USE_AWAIT)
{
if (CONFIGURE_AWAIT)
{
line = await sr.ReadLineAsync().ConfigureAwait(false);
}
else
{
line = await sr.ReadLineAsync();
}
}
else
{
line = sr.ReadLine();
}
}
}


(what are USE_AWAIT and CONFIGURE_AWAIT all about? See the results below...)


JSON:

To avoid having to write my own parsing code, I decided to write the data in a JSON format and use Json.NET to parse it. One line of the data file looks like this:
{isHome:1,inning:1,outs:0,baserunners:1,runDiff:0,numSituations:81186,numWins:47975}

This is admittedly a bit verbose, and it makes the file over a megabyte. The parsing code is simple, though:

var resource = System.Windows.Application.GetResourceStream(
new Uri(@"Data\winProbs.json", UriKind.Relative));
using (StreamReader sr = new StreamReader(resource.Stream))
{
string allDataString = await sr.ReadToEndAsync();
JArray allDataArray = JArray.Parse(allDataString);
for (int i = 0; I < allDataArray.Count; ++i)
{
JObject dataObj = (JObject)(allDataArray[i]);
_fullData.Add(new Tuple<bool, byte, byte, byte, sbyte>(
(int)dataObj["isHome"] == 1, (byte)dataObj["inning"],
(byte)dataObj["outs"], (byte)dataObj["baserunners"], (sbyte)dataObj["runDiff"]),
new Tuple<UInt32, UInt32>((UInt32)dataObj["numSituations"],
(UInt32)dataObj["numWins"]));
}
}


After I posted this, Martin Suchan pointed out that using JsonConvert might be faster, and even wrote some code to try it out.

Binary:

To try to get the file to be as small as possible (which I suspected correlated with parsing time), I converted the file to a custom binary format. Here's my textual description of the format:
UInt32 = total num records
UInt32 = num of records that have UInt32 for num situations
(these come first)
each record is:
UInt8 = high bit = visitor=0, home=1
rest is inning (1-26)
UInt8 = high 2 bits = num outs (0-2)
rest is baserunners (1-8)
Int8 = score diff (-26 to 27)
UInt32/UInt16 = num situations
UInt16 = num of wins

To format the file this way, I had to write a Windows 8 app that read in the text file and wrote out the binary version using a BinaryWriter with the Write(Byte), etc. methods. Here's the parsing code:

var resource = System.Windows.Application.GetResourceStream(
new Uri([@"Data\winProbs.bin", UriKind.Relative));
using (var br = new System.IO.BinaryReader(resource.Stream))
{
UInt32 totalRecords = br.ReadUInt32();
UInt32 recordsWithUInt32 = br.ReadUInt32();
for (UInt32 i = 0; i < totalRecords; ++i)
{
byte inning = br.ReadByte();
byte outsRunners = br.ReadByte();
sbyte scoreDiff = br.ReadSByte();
UInt32 numSituations = (i < recordsWithUInt32) ? br.ReadUInt32() : br.ReadUInt16();
UInt16 numWins = br.ReadUInt16();
_compressedData.Add(new Tuple<byte, byte, sbyte>(inning, outsRunners, scoreDiff),
new Tuple<uint, ushort>(numSituations, numWins));
}
}



Results:

Without further ado, here are the file sizes and how long the files took to read and parse (running on my Lumia 1020):








TypeFile sizeTime to parse
Text (USE_AWAIT=true)
(CONFIGURE_AWAIT=false)
278K4.8 secs
Text (USE_AWAIT=true)
(CONFIGURE_AWAIT=true)
278K0.4 secs
Text (USE_AWAIT=false)278K0.4 secs
JSON (parsing one at a time)1200KB3.2 secs
JSON (using JsonConvert)1200KB1.3 secs
Binary103KB0.15 secs


A few observations:

So since I had already done all the work I went with the binary format, and Baseball Odds starts up lickety-split!

--

See all my Windows Phone development posts.

I'm planning on writing more posts about Windows Phone development - what would you like to hear about? Reply here, on twitter at @gregstoll, or by email at ext-greg.stoll@nokia.com.

--

Interested in developing for Windows Phone? I'm the Nokia Developer Ambassador for Austin - drop me a line at ext-greg.stoll@nokia.com!

0 comments

New Windows Phone app: Motivational Penguin!
Mood: proud
Posted on 2013-11-23 20:52:00
Tags: windowsphone projects
Words: 45

Motivational Penguin is now available in the Windows Phone Store!

This free app will give you all the motivational penguin goodness you could ever want on your Windows Phone, including updating your lock screen. Download it now!

Thanks to chibird, who drew the original image.

0 comments

Windows Phone: HospitalPrices released, how to show 3000+ markers on a Map
Mood: happy
Posted on 2013-06-12 21:38:00
Tags: windowsphone projects wpdev
Words: 500

I just released HospitalPrices for Windows Phone. One of the more interesting parts was figuring out how to put 3000+ markers on a Map control. My first attempt was putting all the markers on the Map, but that ran out of memory. After some more tinkering, here's what I ended up with. It runs pretty smoothly on my Lumia 920 - if it needed to run faster I could have implemented a quad tree to search for markers instead of checking all 3000+ of them every time.

Want to make your own app/website? Check out the SQLite database with all the data!

Prerequisites: I'm using the Windows Phone 8 Map control - MarkerMap is the Map control, and every time the center or zoom level changes we call UpdatePins().


using Microsoft.Phone.Maps.Controls;
using System.Device.Location;

GeoCoordinate _lastUpdatedTopLeft = null;
GeoCoordinate _lastUpdatedBottomRight = null;
MapLayer _pinLayer = new MapLayer();
private void Init()
{
MarkerMap.Layers.Add(_pinLayer);
}
public bool CoordInBounds(GeoCoordinate coord,
GeoCoordinate topLeft,
GeoCoordinate bottomRight)
{
return (coord.Longitude >= topLeft.Longitude &&
coord.Longitude <= bottomRight.Longitude &&
coord.Latitude <= topLeft.Latitude &&
coord.Latitude >= bottomRight.Latitude);
}
private void UpdatePins()
{
const double ZOOM_LEVEL_THRESHOLD = 9.0;
if (MarkerMap.ZoomLevel >= ZOOM_LEVEL_THRESHOLD)
{
const int MAP_MARKER_MARGIN = 150;
GeoCoordinate neededTopLeft =
MarkerMap.ConvertViewportPointToGeoCoordinate(
new Point(-1 * MAP_MARKER_MARGIN, -1 * MAP_MARKER_MARGIN));
GeoCoordinate neededBottomRight =
MarkerMap.ConvertViewportPointToGeoCoordinate(
new Point(MarkerMap.ActualWidth + MAP_MARKER_MARGIN,
MarkerMap.ActualHeight + MAP_MARKER_MARGIN));
// See if we already have all the necessary markers
if (_lastUpdatedTopLeft != null &&
CoordInBounds(neededTopLeft, _lastUpdatedTopLeft, _lastUpdatedBottomRight) &&
CoordInBounds(neededBottomRight, _lastUpdatedTopLeft, _lastUpdatedBottomRight))
{
return;
}
var existingIdsList = _pinLayer.Select(
(overlay) => (int)(((FrameworkElement)overlay.Content).Tag));
HashSet<int> existingIds = new HashSet<int>();

foreach (var id in existingIdsList)
{
existingIds.Add(id);
}
Collection<int> indicesToRemove = new Collection<int>();
Collection<MapOverlay> overlaysToAdd = new Collection<MapOverlay>();
// TODO - this is the entire collection of markers. Each has an integer
// Id and a Latitude and Longitude, as well as a PinBrush which is the
// color of their marker.
var datas = GetHospitalBasicData();
_lastUpdatedTopLeft = MarkerMap.ConvertViewportPointToGeoCoordinate(
new Point(-2 * MAP_MARKER_MARGIN, -2 * MAP_MARKER_MARGIN));
_lastUpdatedBottomRight = MarkerMap.ConvertViewportPointToGeoCoordinate(
new Point(MarkerMap.ActualWidth + 2 * MAP_MARKER_MARGIN,
MarkerMap.ActualHeight + 2 * MAP_MARKER_MARGIN));
// Check existing markers
for (int i = 0; i < _pinLayer.Count; ++i)
{
GeoCoordinate coord = _pinLayer[i].GeoCoordinate;
if (!CoordInBounds(coord, _lastUpdatedTopLeft, _lastUpdatedBottomRight))
{
indicesToRemove.Add(i);
}
}
foreach (var data in datas)
{
if (!existingIds.Contains(data.Id))
{
GeoCoordinate coord = data.Coordinate;
if (CoordInBounds(coord, _lastUpdatedTopLeft, _lastUpdatedBottomRight))
{
MapOverlay overlay = new MapOverlay();
Ellipse e = new Ellipse()
{
Fill = data.PinBrush,
Height = 35,
Width = 35,
Stroke = new SolidColorBrush(Colors.Black),
StrokeThickness = 3,
Tag = data.Id
};
overlay.Content = e;
overlay.GeoCoordinate = coord;
overlaysToAdd.Add(overlay);
}
}
}
// Now, switch them out.
int numToReplace = Math.Min(indicesToRemove.Count, overlaysToAdd.Count);
for (int i = 0; i < numToReplace; ++i)
{
_pinLayer[indicesToRemove[i]] = overlaysToAdd[i];
}
if (indicesToRemove.Count > numToReplace)
{
int offset = 0;
// We know that indicesToRemove is sorted
for (int i = numToReplace; i < indicesToRemove.Count; ++i)
{
_pinLayer.RemoveAt(indicesToRemove[i] - offset);
offset += 1;
}
}
else if (overlaysToAdd.Count > numToReplace)
{
for (int i = numToReplace; i < overlaysToAdd.Count; ++i)
{
_pinLayer.Add(overlaysToAdd[i]);
}
}
else
{
_pinLayer.Clear();
_lastUpdatedTopLeft = null;
_lastUpdatedBottomRight = null;
_lastPinColorType = null;
}
}


--

See all my Windows Phone development posts.

I'm planning on writing more posts about Windows Phone development - what would you like to hear about? Reply here, on twitter at @gregstoll, or by email at ext-greg.stoll@nokia.com.

--

Interested in developing for Windows Phone? I'm the Nokia Developer Ambassador for Austin - drop me a line at ext-greg.stoll@nokia.com!

0 comments

Hospital price data - now in a handy SQLite database!
Mood: excited
Posted on 2013-05-12 15:27:00
Tags: windowsphone projects wpdev
Words: 73

Well, I got so excited at the hospital prices data released by the government that I wanted to make it easier for people (myself included!) to write apps with it. So: here's the data in an SQLite database which includes geocoding data and some basic calculations.

I would love to see some cool apps based on this data. Let me know (ext-greg.stoll@nokia.com) if you're going to be working on something for Windows Phone!

0 comments

same-sex marriage map in a textbook!
Mood: excited
Posted on 2013-05-06 22:42:00
Tags: gay projects
Words: 49

My same-sex marriage map is in a print textbook! Here's "The Gendered Society" textbook by Michael Kimmel:

and on page 181, we find:


Thanks to the good people at Oxford University Press for sending me a copy!

(this is the real-life application that spawned the "red dot" problem, FWIW)

3 comments

Know Your States now available for Windows Phone!
Mood: happy
Posted on 2013-01-18 11:32:00
Tags: windowsphone projects
Words: 20

Know Your States, the non-award winning app from the AT&T Dev Hackathon, is now available on the Windows Phone Store!

0 comments

PhotoNotes now available in the Windows Phone Store!
Mood: proud
Posted on 2012-12-11 19:09:00
Tags: windowsphone projects
Words: 55

PhotoNotes is now available in the Windows Phone Store!

Formerly known as PictureNotes, here's a description from the official website:

Write notes on your saved pictures on the go! PhotoNotes is a great way to remind yourself of what you were taking a picture of. You can type a caption or record an audio note.



0 comments

PictureNotes: new Windows Phone app submitted! and on omitting features
Mood: accomplished
Posted on 2012-12-02 00:08:00
Tags: essay windowsphone projects
Words: 172

I just submitted the app I've been working on, PictureNotes, to the Windows Phone Store!

The idea is that if you're on vacation or somewhere you're taking a lot of photos, you can write captions or record voice notes right then. (I got the idea when we were on vacation and I took a lot of photos :-) )

I originally imagined the app as a Lens app (which is new in Windows Phone 8), but I ran into some issues with orientation changes - the live picture from the camera kept moving around. It mostly worked, but it was not a great user experience and since you can get most of the functionality by editing existing photos, I decided it wasn't worth making the app look bad by including the Lens part. (of course, now that I think about it I might have a way to fix it...maybe for the next version!)

Anyway, I don't think it'll be useful for that many people, but it will be useful for me, and that's good enough.

0 comments

Windows 8 and Windows Phone: what next?
Mood: thoughtful
Posted on 2012-09-04 22:42:00
Tags: windowsphone projects metro
Words: 137

I've ported my three "staple" apps to both Windows 8 and Windows Phone:




Windows 8Windows Phone
FlightPredictorFlightPredictor
Marriage MapMarriage Map
PasswordHashPasswordHash

I've also gone back and backported some new features from the Windows 8 versions of FlightPredictor and Marriage Map to the Windows Phone versions, although they're still in review.

So...now what?

I grappled with this in April and ended up starting Windows 8 development. One new option is "wait until tomorrow and see what Nokia/Microsoft announce for Windows Phone 8" - Windows Phone 7 apps should run on Windows Phone 8, but I'd like to make them nicer if possible. After that...well, I don't know. I'm definitely still in a Windows 8/Phone 8 mood, so maybe I'll wait a bit and see if there are niches to be filled.

(read: suggestions are welcome!)

1 comment

Marriage Map now available for Windows 8!
Mood: happy
Posted on 2012-08-29 10:38:00
Tags: windows projects
Words: 39

My same-sex marriage map is now available on the Windows Store!


This is my third app in the Windows Store, and given that there are now ~650 apps on the Windows Store, just under 0.5% of them are mine :-)

0 comments

Windows 8 - PasswordHash now available, getting excited!
Mood: hopeful
Posted on 2012-08-24 13:19:00
Tags: windows essay windowsphone projects
Words: 281

PasswordHash is now available on the Windows Store! This is particularly nice for me as I've been using Windows 8 more and now I don't need to keep a browser tab up to the PasswordHash homepage. The port was pretty quick since it does so little (and I like the brown :-) ) - one feature that I did add was auto-clearing of the master password and generated password field. Since state for apps tends to stick around in Windows 8, now you don't have to worry about explicitly clearing those fields or closing the app.

(there's also a new version of FlightPredictor which makes the text more readable and fixes a crash when you purchase the app - whoops!)

I'm starting to get more excited in Windows 8 the more I learn about it. (just yesterday I learned that Windows+X or right-clicking the space where the Start menu used to be brings up a bunch of useful shortcuts) It seems like apps are flowing into the store at a good rate - I saw an estimate of 50-100 per day somewhere.

The developer experience has been quite good over the last few months. The new app hub for Windows 8 is very functional (and they even upgraded the Windows Phone app hub, which fixed a bunch of my complaints), and the four times I've submitted apps they've gone through the entire review process in under 24 hours, which is pretty amazing.

I'm hoping downloads of FlightPredictor pick up - it would be nice to have a review or two when Windows 8 releases "for real" in late October. Until then, I'm working on porting the same-sex marriage map to Windows 8 - it's coming along quite nicely!

0 comments

FlightPredictor now available on the Windows Store for #win8!
Mood: exuberant
Posted on 2012-08-17 09:58:00
Tags: windows projects
Words: 135

I'm happy to announce that FlightPredictor is now available on the Windows Store! As usual, it has a ton of features, plus some new goodies like live tiles and beautiful city backgrounds.

I started working on the app in April, and since them I've poured a lot of time into it. The app has around 11K lines of C# (and 2.5K lines of XAML), and it took on the order of 150 Subversion commits.

Special thanks to Jared Bienz (@jbienz), Ryan Joy (@atxryan), and a bunch of other Microsoft people who helped me along the way. (also, thanks to whoever's working submission duty - it went from submitted to approved in about 12 hours!)

Next up: more improvements to the app and marketing, marketing, marketing! I'm also working on porting the marriage map to Windows 8.

0 comments

same-sex marriage map: now with pending actions!
Mood: cheerful
Posted on 2012-07-25 10:42:00
Tags: gay projects
Words: 192

My same-sex marriage map now has a list of "pending actions" at the top (i.e. upcoming votes, etc.).

I've been wanting to add something like this for a little while, but I had some trouble figuring out how to integrate it with a map. (should states be a different color if there's a pending action? Or should they...um, blink, or something?) You can see I've solved this Gordian knot by cutting through it, as it's not tied in to the map at all - it doesn't even go "back in time" with the rest of the map. I think this is about 95% good enough, since this keeps the current pending actions at the top always, and really, who cares about pending actions in the past that aren't pending anymore? (not to mention it would be a lot of work to add that data...)

Luckily the data file is flexible enough that I was able to add those entries without breaking the TouchPad or Windows Phone clients. Someday I'll go back and update them to include this info.

Suggestions, as always, are welcome. (like a less dorky name for "pending actions", for example...)

0 comments

personal stuff: FlightPredictor for windows 8, windows phone 7, and baking advice
Mood: cheerful
Posted on 2012-06-20 10:30:00
Tags: windows windowsphone projects
Words: 136

FlightPredictor for Windows Phone 7 now has 7 five star reviews! The latest one came in a few days ago, and there's little that motivates me more to keep working on apps. Hooray!

Speaking of which, I've been working hard on FlightPredictor for Windows 8. A few weeks ago I had the opportunity to show it off to some Microsoft folks...and it was a disaster. (many embarrassing bugs showed up, for reason that aren't interesting) Since then I've made a lot of progress, and I'm going to be showing it off again next week. The app is around 80% done, with only one big scary part left (push notifications). Wish me luck!

(and how about that Surface? I'd love to have FlightPredictor running on that :-) )

Finally, a word of advice: don't bake shirtless. That is all.

0 comments

FlightPredictor gets love as an "airport survival app"!
Mood: excited
Posted on 2012-05-30 10:15:00
Tags: windowsphone projects android
Words: 63

FlightPredictor is number 2 on this list of five airport survival apps! The blurb is nice and specifically calls out the airport maps, which I spent quite a bit of time on. It even lists all the platforms it's available on.

Based on my referer logs, a good number of people are reading the article and clicking through to the FlightPredictor page. Yay!

1 comment

Nokia Mobile Monday Austin: recap of demoing FlightPredictor
Mood: cheerful
Posted on 2012-05-01 16:29:00
Tags: windowsphone projects
Words: 358

As I mentioned last week, I got to demo FlightPredictor at Nokia's Mobile Monday Austin last night. It was fun!

I showed up early at Buffalo Billiards - pretty neat place! They have lots of pool tables, but also some arcade machines, shuffleboard, and a few skeeball machines. After hanging around for a bit I went upstairs and met the organizers as well as the Nokia person (John Kneeland! A pleasant surprise) and the Microsoft person, who was none other than Jared Bienz, who I had chatted with but never met in person.

After things got set up, I had some munchies and a free beer(!), and then the presentation started. John from Nokia went first, and talked for a bit about Nokia's commitment to Windows Phone and showed off some devices. Next it was my turn to show off FlightPredictor - I spent maybe 3-5 minutes going through the app and showing some of its cool features (inbound flight status! predictions! live tiles! airport maps!) and a little bit about what it was like to develop for Windows Phone. After I had finished, there were a lot of questions from the audience - it was pretty clear most of them weren't particularly familiar with Windows Phone, which is good for Nokia/Microsoft but a little less good for the purposes of selling apps :-) (still, I sold at least one!)

After me, the developer of the very impressive Blade Sports talked about his app, and then Jared from Microsoft talked about the Windows Phone platform and a little about Windows 8. Then we all got up on stage for questions, and then that was it.

Afterwards I chatted with a few people about my app and other Windows Phone things. I got a number of "cool app!" comments, and they felt like they were being more than just polite, which was nice. spamchang showed up and we chatted for a while, then the other presenters and I walked over to the W Hotel and chatted some more. Then it approached my bedtime so I left :-)

It was a great experience! I'm going to look into attending more Mobile Monday's in the future.

1 comment

Demoing FlightPredictor at Nokia's Mobile Monday Austin!
Mood: excited
Posted on 2012-04-27 17:13:00
Tags: windowsphone projects
Words: 45

I found out today I'm going to be demoing FlightPredictor at Nokia's Mobile Monday Austin! Very excited about the opportunity...and man I wish I had some Windows Phone business cards to hand out. Oh well!

(if you're in the area, come say hi on Monday!)

8 comments

playing with Windows 8, 80k steps last week!, cold fusion
Mood: chipper
Posted on 2012-04-23 10:38:00
Tags: windowsphone projects programming
Words: 374

3 comments

A little down about Windows Phone 7
Mood: disappointed
Posted on 2012-04-18 22:49:00
Tags: essay windowsphone projects
Words: 285

Been a little bummed out recently. Here's why:

- My brand new Lumia 900, while generally a pretty awesome phone, has a hardware problem that makes it shut off ~5 times a day. (and then it won't turn on for a few minutes) Hopefully I'll be able to exchange it tomorrow, but in the meantime it's been very irritating.

- FlightPredictor is not selling well, to put it mildly. Despite getting three 5 star reviews (yay!), being reviewed by wpcentral and AAWP, and being featured by AppDeals, so far it's sold a grand total of 14 copies over more than 3 weeks. And some of those were at a discount of 99 cents! Granted, over 100 trials have been downloaded, and it's possible those will convert to paid copies at some point since you get 6 flights for free, but I'm not holding my breath.

So, I'm not sure what I'm doing wrong. Maybe $2.99 is too expensive? Maybe I just need to get the word out more. (i.e. spam Twitter :-) ) I've submitted FlightPredictor to a few promotional things, so we'll see if Microsoft or Nokia bite. (attention Microsoft and Nokia: it's a good app!)

- After being unsure last time, I started work on a Goodreads client and made a bit of progress until the developer of the original app (Bookly) said he was bringing it back. I don't have any unique ideas to add to a client, so I put it on hold while I wait to check out the app. I'm guessing I won't work on it again.

So now I'm working on a financial calculator-type app. (thanks for the idea, brittongregory!) Meanwhile I'm considering playing around with Windows 8 and porting FlightPredictor to it.

3 comments

Marriage Map for #wp7 released! and a Windows Phone dev crossroads
Mood: thoughtful
Posted on 2012-04-05 13:26:00
Tags: essay windowsphone projects
Words: 504

First, the good news: a Windows Phone version of my same-sex marriage map is now available! (it's free and ad-free!)

It was tricky squeezing in all of the information on a phone-sized screen, but I'm pretty pleased with the results:

Countdown to the first inappropriate app rating in 3...2...1...
--

I'm at a loss for what to work on for Windows Phone development next; I was working on a side project but was thwarted by OS limitations last night (grrr!), so it's back to the drawing board. Here are my options, as I see them:


I'm going to be out of town this weekend, so maybe I'll let my subconscious think about what sounds the most interesting.

0 comments

Finishing up a project (is tough)
Mood: resigned
Posted on 2012-04-01 16:25:00
Tags: essay windowsphone projects
Words: 191

So I'm "almost done" porting the ol' marriage map to Windows Phone. Sadly, "almost done" means "I put off all the annoying stuff to the end that isn't hard, but is tedious". Here's a list of said things:

- Making sure the app works when coming out of tombstoning
- Adding an "About" page with links to the homepage, to review the app, tips, etc.
- Turning any constants into settings, and adding the UI to change them and persist them between runs
- Making icons for the app (I need four different sizes!)
- Adding Little Watson so I can get an email when the app crashes (although this seems less necessary now that I know you can get a list of crash stack traces from the App Hub...but it's still nice if I need to follow up or tell people that the crash has been fixed)
- Add links to my other Windows Phone apps
- ...

It's a good thing actually seeing the app available for download/purchase is so rewarding, because finishing the app is a big slog. I can tell because I'm much more distracted by Twitter/reddit/etc. than usual...hopefully there's not much more to go!

0 comments

links: FlightPredictor makes a list!, the penny is gone (in Canada), and some robots
Mood: tired
Posted on 2012-03-30 15:18:00
Tags: projects links
Words: 155

- FlightPredictor for WP7 is on a top app list in the Windows Marketplace!

Apparently this is by number of downloads as opposed to ratings. (and most of those downloads were trial, not paid. But still!)

- Making big decisions about money - wise words from Seth Godin. And I am particularly prone to this...

- Canada is getting ready of the penny - our neighbors to the north are wise! (although I'm glad to see that Canadian local news isn't immune to some terrible sentences to end a story)

- A day in the life of a warehouse robot - that company Kiva that Amazon bought (not the microlending Kiva) makes pretty awesome robots!

- More robots: Look how high this robot can jump! Spoiler alert: very high.

- An interview with Batman, or at least the Batman of Route 29 in Maryland.

- Finally, a good way to start your weekend: Drunk Man Sings Entire Queen’s Bohemian Rhapsody In Police Car - with video!

0 comments

programming: checking that downloaded maps are up-to-date
Mood: thoughtful
Posted on 2012-03-27 15:18:00
Tags: projects programming
Words: 531

I came across an interesting problem when working on FlightPredictor for Windows Phone: ensuring that downloaded airport maps are up-to-date.

This is the first time I've had to deal with this problem when porting FlightPredictor:


But neither of these options were viable for WP7 - there are limits on app sizes (if I included all the maps, it could only be downloaded over WiFi), and there's no Content Provider-type mechanism. So I decided to let the app download the maps from inside the app itself, if the user chooses to do so.

This created a new problem: how could I tell when new maps were available? Here were my criteria:
So, here's what I came up with:
And my process for updating maps is to publish them to S3 first, then submit a new version of the app with a new maps index hash. If old users manage to get the new version of the maps, no problem - they won't report as out of date (since the hash won't match anything), and when they get the new version of the app they won't report as out of date either.

1 comment

FlightPredictor for WP7 gets reviewed! (twice!)
Mood: happy
Posted on 2012-03-23 11:51:00
Tags: windowsphone projects
Words: 165

After releasing FlightPredictor for WP7 earlier this week, it's gotten some nice reviews!

All About Windows Phone reviewed it on Wednesday, and today I woke up to find a wpcentral review of it, including a video review where George Ponder had lots of nice things to say about it. Hooray!

If I had two wishes (and they had to be FlightPredictor-related), they would be:
- getting some good reviews on the Marketplace. Right now it doesn't have any ratings, and I'm always super anxious to get one good one. I think this is a big reason that FlightPredictor for Android is doing reasonably well - it now has 7 5-star ratings!
- getting chosen for the [Your App Here] advertising campaign with Nokia & Microsoft. Because the app is US-only, I think I have even longer odds of this than I would normally; but the Lumia 900 is supposed to be coming out next month and it sounds like Nokia will be promoting it extensively, so who knows?

0 comments

FlightPredictor for WP7 released!
Mood: proud
Posted on 2012-03-20 08:50:00
Tags: windowsphone projects
Words: 103

Flight information List of flights Live tiles (front) Live tiles (back)

I'm excited to announce that after almost 4 months of development, FlightPredictor for Windows Phone is now available on the Windows Phone Marketplace! Features include:

- uses advanced machine learning techniques from FlightCaster to detect probably delayed flights hours before the airlines tell you!
- Windows Live Tiles mean you'll always have the latest data at your fingertips.
- Airport terminal maps for over 30 major US airports help you find your gate quickly.
- free trial mode

and much more! Since it uses FlightCaster for its data, as usual it supports US domestic flights only. I'd be happy to answer any questions about the app here!

0 comments

FitCalendar - the Fitbit data you (I?) care about!
Mood: accomplished
Posted on 2012-03-17 19:55:00
Tags: projects
Words: 145

I've had a Fitbit for a while now, and it's been motivating me to get my 70,000 steps a week. Unfortunately the Fitbit dashboard page is nice, but it's not easy to tell how many steps I'm ahead/behind for the week, or if I've made my goal in previous weeks.

So I decided to roll together FitCalendar to fix that. Here's my report - a quick view of whether I'm ahead or behind this week (and by how much), and whether I made my goal or not previous weeks.

For now, it's just a Python script and it doesn't run automatically or anything. I'm considering whether to make a whole app out of this, but I'm not sure I'm going to bother - having a live tile with this data would be nice, but not that much nicer given the effort it takes to make an app...

0 comments

FlightPredictor for Windows Phone - looking for beta testers!
Mood: excited
Posted on 2012-03-07 10:04:00
Tags: windowsphone projects
Words: 71

FlightPredictor for Windows Phone is in beta! If you're interested in beta testing it, contact me (twitter/facebook/email me at greg.stoll@gmail.com/leave a comment here) with your Windows Live ID, which I need to give you access to the app. I'll email at that address with instructions on how to get up and going.

It's a good app and I'm proud of it, but with your help I can make it even better!

0 comments

Debugging Windows Phone scheduled tasks
Mood: accomplished
Posted on 2012-02-26 14:43:00
Tags: essay windowsphone projects programming
Words: 641

I was about ready to release a beta for FlightPredictor, and then I realized that the scheduled task that updated the flights that are pinned to live tiles (a key feature of the app) was horribly, horribly broken. The reasons I'd been putting off dealing with this are:
- I have a WiFi only device, and so whenever it wakes up from sleep it has to reconnect to the WiFi, and I assumed this was why the tiles didn't update very often. But this is a pretty poor excuse, and turned out to be a little true but didn't account for many of the problems.
- I had trouble finding good ways to debug the scheduled task to figure out what was going on.

So, here are the three things I did to make debugging scheduled tasks a snap! (or, at least, possible)

1. ScheduledActionService.LaunchForTest: One thing that makes dealing with scheduled tasks difficult is that they have pretty tight restrictions - the PeriodicTask that I'm using can't use more than 6 MB of memory, or take more time than 25 seconds, and it only runs every 30 minutes. This last point would make debugging unbelievably annoying - luckily, you can call ScheduledActionService.LaunchForTest in a debug build to make it launch in a minute, or however much time you want.

For some reason, after a while of debugging on an emulator instance this call seems to stop working for me, and I had kinda forgotten that it ever worked at all, so I used it early in development but not since then. But it really does work, and if it stops working, just close and relaunch the emulator! This is a great way when you absolutely, positively have to step through code and see what's going on.

2. Little Watson - Andy Pennell blogged about this, and I had had it recommended to me but hadn't bothered to include it until a week ago. If your application crashes, you can capture the call stack, and then the next time the app is launched you can give the option to email you the stack trace. This is awesome for hard-to-track-down crashes, although I wish the call stack had a little more information. What Andy didn't talk about is the fact you can use this to capture call stacks if your scheduled task crashes! I turned this on yesterday and have already tracked down a few crashes I didn't know were happening - I was hitting the memory limit and not even realizing it...

3. ScheduledTaskLogger - This is my own creation - it's basically a way to log a bunch of data while your scheduled task is running, and then view it later in the main app. This helped me to find a glaring error in my update code (note to self: always look up the return value of CompareTo(), as I've gotten it wrong at least five times now...), and I'm hoping it can help me catch any other issues that arise.

Here are the code files for ScheduledTaskLogger:
- ScheduledTaskLogger.cs - This logs data while the scheduled task is running. You can set how many logs to keep, and also whether it writes out to file after every log message - probably not a good idea for release, but useful if there's a problem that's causing a crash. I also try to save the log in ScheduledAgent_UnhandledException.
- ScheduledTaskLog.xaml and ScheduledTaskLog.xaml.cs - these are the views in the main app that you can use to view the logs. There's also a button to email a particular log to support, although I need to add one that emails of all logs.

Edit: I added this code to the Nokia Developer Wiki.

--

Anyhow, I've squished a bunch of bugs and am on the lookout for more. I was kind of dreading trying to figure out what was going wrong, but good tools make everything easier!

1 comment

FlightPredictor for Android was reviewed! (and I respond)
Mood: excited
Posted on 2012-02-15 20:06:00
Tags: projects android
Words: 839

Thanks to the magic of Google Alerts, I saw that FlightPredictor for Android was reviewed by Android Tapp! Excerpts and my comments below:

The app provides some of the basics you would expect, such as the ability to search for flights by either the flight number or by the route information, and you can search up to a day prior and six days ahead. It would be nice to be able to add flights booked further in advance so you have them entered and can forget about them until it’s time to travel, but that’s a minor complaint overall.
Interesting - you should be able to add them 90 days ahead. I noticed she tested it on a Galaxy Tab 10.1, while most of my development was on phone-sized screens, so I'm guessing either she didn't notice that you could scroll the spinner dropdown, or it's somehow broken on the Galaxy Tab.

I do like that you can access overall airport delays in a dedicated screen, so if you just want to take a quick look to get an overall picture of how on time the system is overall, or if there are any major issues you need to be aware of as a traveler, this is a quick and easy way to do it.
Yay! I added this feature mostly just because I thought it was cool.

Where this app separates itself from the flight tracking pack, however, is in the maps. When you travel, most of us will have to spend at least some time wandering around an airport waiting for boarding time. Having the full airport maps at your fingertips, without needing a Wi-Fi connection to access them, is a really, really nice thing. My only complaint is that right now, the maps are limited to a few of the major U.S. airports, although the developer has posted that more are going to be added in time.
Yay again! To be fair, there are more than 30 airports that have maps, so I think this hits almost all of the major US airports. (users: if there are airports you want to see, let me know!)

I did find that occasionally the maps themselves were a bit slow when moving between various sections, but the convenience of having them outweighed the wait.
Interesting - it's using a standard WebView to render the map images (easy way to get panning, zooming, etc.), so I guess it's not too surprising it can be on the slow side.

The app claims to use the Android notification system to let you know about delays, but to be honest, I found this part of the app a bit sketchy. This was the only thing that didn’t work well for me, with the app either not notifying me at all, or notifying me long past when the flight landed and the information was no longer relevant. I had a good network connection, but I can’t rule that out completely, so keep it in mind when you grab this one.
That makes me sad. I thought I tested the notification system a decent amount, but it's hard to test all situations...

Note that the free version allows for six flights before requiring an upgrade, so you should be able to get a good idea of whether it will work for you before you buy.
Woohoo. I'll probably do a similar thing for trial mode in the Windows Phone version.

The interface is very, very simple. It’s a dark background with lighter text, which was occasionally hard to read, especially for some of the links in blue. This is the one area where it feels like it could be a bit more polished and professional, instead of feeling almost like a “my first app” interface. Not to say it doesn’t work well, just that visually, it’s not the most compelling app out there. It does the basics, and that’s it.
Hah! No argument here, honestly. This area is the opposite of my strong suit.

AndroidTapp.com Rating

3.45 out of 5 stars

Should you Download FlightPredictor? Overall, this is a solid app that does what it says. I like the addition of the airport maps, but with all the real data coming from FlightCaster, which has an app of its own, I’m not sure this brings a whole lot of extra to the table. It’s a good app, but I wouldn’t call it the best of show, especially since you have to pay to track after six flights. If you’re a frequent traveler, however, this is worth trying out since it does do what it advertises with a minimum of fuss.
Wait - FlightCaster has an Android app of their own? I'm pretty sure that isn't the case, although there are a few other apps that use the FlightCaster API. But they all seemed pretty simple, and I think my app is considerably better than them :-)

Anyway, this whole thing has the feel of the Bluth family cheering over their stock being upgarded to "Risky", but I'm excited anyway!

0 comments

FlightPredictor for #WP7 - it's getting close!
Mood: excited
Posted on 2012-02-13 22:06:00
Tags: windowsphone projects
Words: 228

I've made a bunch of progress since I last posted about FlightPredictor for WP7. Here's the updated list of "stuff to do before release":

- make it tombstone-safe (i.e. save state when backgrounded) done!
- show airport delays done!
- show airport maps done!
  - will have to download these after app install - figure out how versioning will work! downloading's done, need to implement versioning (but I know how it's gonna work)
- about screen (attribution) mostly done, need to add more help
- settings screen (necessary?) yes, and done
- flight info - add when it was last updated, make sure nothing else is missing - done
- make live tile have an image with status/prediction for its background instead of text - done! and they look good!
- TODOs in code (down to 20 or so) down to ~8
- show airline contact info done
- make reloading flights on main page consistent meh, good enough
- send all flights (email/SMS) done
- make real icons for app nope
- decide what to do about trial version and do it nope, although I have an idea of what to do
- mutex in background agent for communicating? done
----
(new stuff)
- upload maps to Amazon S3
- prompt when update on Marketplace?
- make "Tap for more info" have accent color

I'm excited that the app is really coming together! Looking forward to starting some beta testing soon - handily, the Windows Phone Marketplace supports it nicely.

0 comments

FlightPredictor: Android milestone, WP7 progress
Mood: cheerful
Posted on 2012-01-24 18:06:00
Tags: windowsphone projects android
Words: 267

FlightPredictor for Android has reached a milestone - as of the end of December payment, I've now officially made money on it! It cost $25 to register an Android account and I've finally made more than that on sales. Sales seem to be picking up lately: obviously the raw numbers are still pretty uninspiring, but progress is progress. Perhaps it's because of the four 5 star reviews it's gotten on the Android Market. I also sold one (yes, one!) copy on the Amazon Appstore, and am up to 11 cents in ad money from FlightPredictor Lite.

For Windows Phone, I've been hitting the app pretty hard, and have implemented a lot of features - enough, in fact, that I can make a list of everything I want to do before release. It's on a sheet of paper, but in case it gets wet or something, here it is:

- make it tombstone-safe (i.e. save state when backgrounded)
- show airport delays
- show airport maps
- will have to download these after app install - figure out how versioning will work!
- about screen (attribution)
- settings screen (necessary?)
- flight info - add when it was last updated, make sure nothing else is missing
- make live tile have an image with status/prediction for its background instead of text
- TODOs in code (down to 20 or so)
- show airline contact info
- make reloading flights on main page consistent
- send all flights (email/SMS)
- make real icons for app
- decide what to do about trial version and do it
- mutex in background agent for communicating? (see EvenTiles discussion)

So...still a long list, but these are all pretty well-defined tasks. Onward!

2 comments

First Windows Phone 7 app published!
Mood: excited
Posted on 2012-01-14 11:11:00
Tags: windowsphone projects
Words: 29

My first Windows Phone app has hit the Marketplace! It's a port of PasswordHash for generating passwords from a master password and a domain, and here's the Marketplace page.

0 comments

taking joy in fixing a badly broken LJ app
Mood: cheerful
Posted on 2011-12-29 17:10:00
Tags: lj for webos essay palmpre projects programming
Words: 211

After the latest LJ release, I got a few emails saying LJ for WebOS was badly broken, and lo and behold they were right.

I was not excited about fixing the app, since I knew the code for parsing posts, which is most of what broke, was pretty brittle and terrible. (c.f. "don't parse HTML pages with hand-written state machines") And I don't even use the app much anymore, and it's certainly not going to sell many more copies since it only works on webOS phones, which are not exactly flying off the shelves, and new ones might not exist. So I toyed with the idea of dropping support entirely, but that just felt wrong, even though I'd rather be working on new shiny apps for Windows Phone 7.

Last night I took the first serious stab at fixing things, and it turned out to be much more fun than I had hoped. The app was so nonfunctional it felt like writing a whole new one, and it turns out the new page format is a bit nicer to parse to boot. So I've fixed maybe 60% of the issues already, and hopefully I can fix the rest by next week sometime (pending New Year's festivities) and get back to WP7.

2 comments

On a revenue basis, webOS >> Android
Mood: energetic
Posted on 2011-12-07 11:23:00
Tags: palmpre projects android
Words: 266

I worked for around 3 months on FlightPredictor for Android. It's not a particularly pretty app, but it is very functional, and I am proud of it.

Since I released it 3.5 weeks ago, I have sold a grand total of 20 copies. At $1.99 each, minus Google's cut and taxes, that amounts to around $20. (and I had to pay $25 to register in the Android Market, so I haven't even broken even) There's even FlightPredictor Lite, a free trial version with ads (that have made me 3 cents so far).

On webOS, a platform whose future has been very uncertain since August, and despite the fact that I haven't released any new apps in a while, and have only made minor updates to FlightPredictor HD (mostly adding airport maps at users' requests), and there's no free trial version, I'm still making $10 a day. Obviously there are a lot of factors helping me out there (TouchPad firesale, the fact that FlightPredictor HD is still a featured app and is in Pivot), but maaan. If I wanted to optimize for revenue, I should have doubled-down (ahem) on webOS.

I guess that makes FlightPredictor for Android somewhat of a labor of love, which is odd since I don't plan on getting an Android phone. It was fun to learn how to make an Android app, though, even if it was frustrating at times.

The Windows Phone version is coming along slowly (busy time of year), and I'm hoping playing around with a developer phone will give me more ideas of how apps generally work on WP7.

0 comments

FlightPredictor progress, a few links
Mood: determined
Posted on 2011-12-02 13:41:00
Tags: projects programming links
Words: 407

The sales of FlightPredictor for Android have still been pretty flat, but it did at least get 2 5 star ratings! And it looks like more people are downloading FlightPredictor Lite, which will hopefully translate into more sales down the line. (as for the ads, I have made a whopping 3 cents so far...so that's not looking too promising)

Having said that, I'm excited to jump into the Windows Phone version. Having just finished a port makes it easier to know how to start, although I'm trying to be careful to port it intelligently, using the nice features of C# and XAML, rather than just making it a direct port. I plan on working in Windows Phone for the foreseeable future so I'd like to take the time to learn how to do things right.

One of the big wins from the Android port was being able to test the updating in the background functionality relatively early. This is one of the riskiest parts, as it's done almost entirely differently on every platform, and it's also somewhat time-consuming to test. I've made a list of basic stuff I need to have ready before I can test that, and I'm just working down the list...there are a lot of parts to FlightPredictor and just sitting down with no plan can be overwhelming, which this helps with.

In the meantime I've been reading a lot about Silverlight and such, and I discovered this free ebook by Charles Petzold(!) about Windows Phone programming, which has been excellent so far. (ironically enough, it's been very handy to read on my TouchPad...) There's also the 31 Days of Mango covering features that are new (and less discussed elsewhere).


A few links:

- The Democrats are trying to extend the payroll tax cut, but the Republicans won't vote for it because they're paying for it by raising taxes on people that make more than one million dollars a year. People affected by the payroll tax: 160 million. People that make more than one million dollars a year: ~350K.

- News Corp (parent company of Fox News) made a gay marriage guide! I know corporations aren't people (ahem), but the cognitive dissonance level is still pretty high.

- Crazy story from the New York Times: apparently Ambien can help people in vegetative states become more responsive and, in some cases, recover to some extent. This makes the long-term prognosis for people in vegetative states even more uncertain...

0 comments

FlightPredictor for Android followup
Mood: hopeful
Posted on 2011-11-29 14:33:00
Tags: projects android
Words: 231

After my last post about FlightPredictor for Android (thanks for the feedback, everyone!), I've decided to take the following steps:

- Submit it on the Amazon Appstore - the terms aren't great, but the more exposure, the better. The app makes much more sense to me on smartphones than it does on tablets, but it's sold pretty well on the TouchPad so I want to give it a chance on the Kindle Fire. It's currently going through the approval process and will be available...well, at some point.

- Free version: Last night I finished up FlightPredictor Lite, a free version with ads and a limit of 6 flights to add. Hopefully this will give people the confidence to upgrade to the real one.

I'm going to wait a bit to let things settle in (and make sure there are no more major problems to fix), make a few improvements, and then go on the attack trying to market it. The "build it and they will come" approach isn't really working - I've sold around 16 so far, and two of those were to family members :-)

Speaking of which, it is kinda cool having an app that people I know in real life can use. (well, more than one person) I guess that's one advantage to writing apps for a more popular OS...

Probably going to move on to Windows Phone stuff soon, modulo holiday goings-on.

0 comments

FlightPredictor for Android sales: not good. Maybe Amazon App Store?
Mood: disappointed
Posted on 2011-11-23 14:54:00
Tags: projects android
Words: 228

I released FlightPredictor for Android on Saturday. Since then, I have sold a grand total of...6 copies. (although it did get a 5-star review!) This is *ahem* a bit disappointing, and I've been considering some options.

- Marketing: the Android market is such a big place I'm sure it's easy for apps to get lost. Android users: where do you go to hear about cool new apps?

- Free version: I've heard that Android users are much less likely to pay for apps than those on other platforms. Maybe I should make a free version that has ads. I'm not a huge fan of in-app ads, though, and I can't imagine they'd make that much money. Plus, that's potentially a bunch more users to support. And other flight-tracking apps aren't free...

- Amazon Market: I'm also deciding whether or not to submit to the Amazon App Store. The terms are not favorable to developers, as Amazon can set your app to be any price they want. (hopefully not less than 99 cents?) But it's the only way to get on the Kindle Fire, and while I didn't optimize FlightPredictor for that big a screen, a beta tester used it on a 7" tablet and said it worked fine.

Maybe part of the problem is neither Google nor Amazon care that much about app sales?

Anyway, I'm more than open to suggestions.

4 comments

FlightPredictor for Android published!
Mood: proud
Posted on 2011-11-19 16:00:00
Tags: projects android
Words: 43

FlightPredictor for Android is now available!

alt="Available in Android Market" />


Thanks a ton to my beta testers - caught a lot of bugs that way! If anyone downloads it (hint, hint! :-) ) and has problems or questions, don't hesitate to let me know.

0 comments

finishing Android, starting Windows Phone 7. And happy car milestone!
Mood: stressed
Posted on 2011-11-14 10:40:00
Tags: car windowsphone projects android
Words: 320

I'm basically done with FlightPredictor for Android. I started almost three months ago, so one major takeaway is that apps take a long time to write. It took a bit longer since I hadn't done any Android work before, but most of the design was just copying the existing apps, so maybe that balances out?

To set the record straight, some of my Android complaints were unfair, and once I got into the swing of things I got things working in fairly short order. (although some still stand) So it's not a terrible environment to develop in, although Java isn't my favorite language, but having to design for a ton of different screen sizes with a ton of different OS versions combined with the fact that there doesn't seem to be many standards for interaction really made it a drag.

Oh, and I tried filtering a list on David's phone and it was very fast. I'd estimate the emulator is something like 20x slower than running on a phone. Which worked out nicely since I didn't have to optimize anything further, but it sure does make testing on the emulator painful!

Next up is a Windows Phone 7 version, which I've just started. I'm guessing with the holidays it will take a bit longer than three months, but since I'm already moderately familiar with WPF/Silverlight/C#, perhaps it will go faster.

--

My Prius hit 100K miles last week! I've been pretty happy with it - since I bought it 7 years ago it's only had a few problems. It's averaged just under 43 MPG over that time. A quick comparison with a Camry (which gets ~28MPG):



PriusCamry
Gallons per 100K miles23253571
Price for gas (at $3/gallon)$6975$10713

So I've saved more than $3500 on gas already, which is a bit less than the premium I paid for the car, but it's pretty close. Here's to 100K more miles!

1 comment

pretty music video links, and FlightPredictor for Android beta testers!
Mood: busy
Posted on 2011-11-11 13:41:00
Tags: projects links
Words: 86

Busy week, so just a few links. But first:

Hey Android users! Want to beta-test FlightPredictor for Android? It should be ready some time next week - send me an email!

- An awesome music video made out of lots and lots of Jelly Bellies. The music is nice too. (thanks Adam!)

- A montage of classic video game deaths.

- A visualization of which words Republican presidential candidates used during debates, also broken down by policy. Neat idea but I wish there was more information here (quotes, or something)

0 comments

FlightPredictor HD featured in October webOS Pivot magazine!
Mood: pleased
Posted on 2011-10-26 19:55:00
Tags: palmpre projects
Words: 41

Well, this is a bit bittersweet since the October issue still hasn't been pushed to TouchPad's, but some clever folks at webOSRoundup found it anyway, and FlightPredictor HD is featured! I've posted the thumbnails below - click through for the full pages.

0 comments

a dream, Steve Jobs, and some armchair psychoanalysis
Mood: pensive
Posted on 2011-10-20 10:23:00
Tags: dreams essay projects
Words: 320

I spent most of last night working on FlightPredictor for Android. I was happy to be working on it (paying off some technical debt!) but a little dismayed as I looked through the code and realized how much there was left to do that I had conveniently forgotten about. It's coming along though, probably about 65% done. (pending any new issues that come up when I test on a real device)

--

Then I had a dream about Steve Jobs. (maybe brought on by the Apple tribute website I visited yesterday?) Jobs had already died, but I was back in time somehow the day before, and he was answering questions in a town meeting of sorts. I don't remember the other questions, but when he called on me I just said "Thank you", and he looked back at me with sadness on his face. He knew that he was going to die the next day.

I left the meeting (maybe it was the next day) and sat down outside, and was overcome with tears for a while. Then I woke up, feeling sad and being a little creeped out.

--

One of the reasons Steve Jobs was so good at what he did is that he was (from what I've read) is that he was insanely dedicated. I don't know about his family life, but he clearly devoted much of his time to Apple. I think last night I was feeling guilty that I don't have more time to work on my non-work programming projects, and there are definitely times where I have a very strong urge to create something. (actually, these days most of my non-work time I feel like "accomplishing something", whether it be finishing a book, writing a review, etc., etc.)

But I need to back off a bit, because I don't want my projects to consume my life. And I need to learn to be OK with that.

0 comments

sort of links, without many actual links
Mood: busy
Posted on 2011-09-02 15:07:00
Tags: projects programming links
Words: 477

I watched two excellent movies this week: The Hunt for Red October, and Clue. Both included Tim Curry. Make of that what you will. (I forgot he was in Red October!)

I also went to a podiatrist and got some orthotics which I've probably needed for the last 10 years or so. (thanks Dr. Newman!) Apparently my feet are as flat as a pancake. It amuses me when I stand barefoot in front of podiatrists and they flinch...

An iOS Developer Takes on Android - I haven't developed in iOS, but I am also new to Android development and sympathize sooo hard! Especially:

"You’re going to just hate Eclipse. You’re going to hate it with the heat of a thousand suns. It’s going to feel slow and bloated and it won’t taste like real food."
and
It takes the Android Emulator ~2 minutes to boot up on my perfectly-modern machine. But what really hurts is the edit/debug cycle. Every time I change a bit of Java and need to rerun the app, it takes about 30 seconds to redeploy and start up in the Emulator. Compare that to 5 seconds on the iOS Simulator. It may not sound like much but remember you’ll be doing this hundreds of times throughout your day.

Fortunately, it turns out to be much quicker to deploy and boot up your app on a physical device over USB.
and
But the reality is, it’s not HTML and CSS and so it’s another thick layer of stuff that you have to learn and understand and fight with when things don’t work like you expect.
and
So here’s the catch with the wonderful flexible layout system in Android: You must be very careful. If you animate certain kinds of properties, you can easily force the CPU to do all that fancy, expensive layout on each animation frame. And the CPU is very busy right now parsing some JSON from a web API or something, OK?
Anyway, I'm considering getting a real version of Eclipse and just installing the standard Android extensions. And maybe buying a Nexus S to get a better feel for the phone (and make debugging easier), but I haven't decided whether I'm that dedicated to finishing the FlightPredictor port yet.

Samsung basically says they're not going to use webOS (although they left the door a tiny bit open, I guess) - after HTC said a similar thing, this is very very bad news. Maybe someone will license webOS but the future is looking pretty grim. More likely (it seems to me) is that someone will buy the patents off of HP and call it a day. And then I will be sad.

Cool stop-motion ad, which made me eat at the place that made the ad. (stating obliquely so as not to "spoil" it...as much as you can spoil an ad, anyway. Nevermind.)

1 comment

What do I want out of app development?
Mood: pensive
Posted on 2011-08-30 23:10:00
Tags: essay palmpre projects
Words: 443

As I mentioned happily, FlightPredictor HD was chosen in the latest six-pack of free webOS apps. So when I looked at the sales reports for that day, the results were...impressive. I feel weird throwing out numbers, but the total I got from that promo is more than I've earned, total, since I started webOS app development in 2009. It's nowhere near life-changing money but it's more than I expected, especially since I didn't have an inkling on Sunday that it would be featured at all!

Anyway, it's a good opportunity to step back a little and remind myself why I'm doing app development and what my goals are.
- Money: Well, the money's definitely nice. I have no illusions about making enough to replace my day job - even on iOS it's tough to do, and requires a lot of luck (as I understand it). I'm pretty happy as long as I'm making enough to subsidize purchases of webOS hardware, accessories, and the occasional trip to meet webOS folks and learn stuff. With this latest boost, I'm set on that front for a good while.
- Satisfaction: I still get a jolt when I think about people deciding to spend their own money on one of my apps...especially if they like it afterwards! 5 star app reviews and especially emails are very very fulfilling to me. Obviously this promo didn't do a whole lot to further this since the purchases were on HP's dime, but I did get a few good reviews and nice emails.
- Craftsmanship: I like creating things that are high-quality, and that I enjoy using myself. Almost all of my apps fall into this category for me, and most of them were created to "scratch my own itch".
- Programming: Closely related: I like programming, as you can see by the list of random stuff I've done. Some days the high I get from creating something and turning an idea into reality is almost intoxicating.

I like my day job a lot, and I think writing apps full-time would be exciting at first, but after a while I'd be about as happy as I am now - certainly the novelty would wear off! (and not having a fixed salary would stress me out, I'd imagine)

Anyway, that's been on my mind, and I find that writing up my thoughts usually helps organize and clarify them. So...there you go!

(programming note: I actually have some links queued up, but it felt like that was all I posted to LJ, so I wanted to back off a bit. And then this webOS thing blew up and now _that's_ all I post about. So...links tomorrow, unless I forget :-) )

0 comments

FlightPredictor HD in the latest webOS app pack!
Mood: excited
Posted on 2011-08-29 13:52:00
Tags: palm palmpre projects
Words: 51

There's a new pack of free webOS apps, and I was pleasantly elated to find that FlightPredictor HD is one of them!

I somewhat jokingly suggested it after the last pack of free apps, but I had no idea they'd consider it and it would make the cut! happy happy happy

4 comments

Developing for webOS versus Android
Mood: determined
Posted on 2011-08-29 13:20:00
Tags: essay palmpre projects programming android
Words: 544

Over the weekend, I spent some time working on porting LJ for WebOS to Enyo, and after I got stuck there, I worked on porting FlightPredictor to Android. Since I was developing in both environments, I thought I'd give some more thoughts on Android (here's part 1):

I'm definitely learning more as I go, but there are still some areas (well, most areas) that developing for webOS is way easier than Android. I admit I'm biased in the matter since I've done a ton of webOS development, but sheesh:
- The Eclipse I'm using is decent in some ways and really frustrating in others. (I'm using MOTODEV Studio, because...well, I had an email from them and I just picked something) Keep in mind I'm used to developing in a text editor so the bar's pretty low here. It took me a while to realize that when you start debugging something you then have to switch to the "Debug" perspective to actually see what's going on. And 90% of the time when the app crashes, the only info I can see is that a RuntimeException was thrown, somewhere. (even when it's something easy, like a NullPointerException in my code!) Worse is when none of my code is on the call stack and I don't have the Android source code, so it gives me very little idea of where to start looking.

Honestly, the Intellisense is nice, but it just doesn't feel quite right, and often gets in my way. Hopefully as I get used to it I'll stop fighting with it so much. And the emulator is slow - it takes 15-20 seconds to get from pressing "Debug" to the app actually starting, and given the limited information I get back from the debugger it's almost not worth doing. (although if I know where the problem is, I can set breakpoints, etc., which is nice)

- To include a big list of structured data (i.e. a list of airlines), for webOS I just have to include a simple .js file assigning a big JSON array to a variable. For Android I have to generate an XML file (or a JSON file, I guess? Didn't try that...), and write initialization code to parse the XML file and store it.

- In webOS, doing an asynchronous web request is drop-dead simple - just use an XmlHttpRequest! Yay! In Android you have to spin up a new thread and post messages back and forth and such. Just reading that section of the book I'm borrowing depressed me, and I'm sure when I get to that it will suck.

- I wanted to have a Spinner (a list selector) that displayed a string and would return the associated value if it was selected. You know, like EVERY LIST SELECTOR EVER. Except, no - you can easily display a Spinner with a list of strings, but if you want to do something crazy like associate a value with it, you have to implement some interface and things generally get more complicated. What's so hard about a freaking templatized value type?? This makes me angry.

Anyway, nothing so terrible that I'm giving up, but a lot of annoyances and I really have to be in a tolerant frame of mind or I will start throwing things and cursing.

2 comments

Marriage Map: cartogram, more crazy reviews
Mood: cheerful
Posted on 2011-08-27 13:54:00
Tags: palmpre projects
Words: 207

I added a new feature to the same-sex marriage map (and corresponding webOS version) - a cartogram! It weights each state by population (roughly) so you have a better view as to what percentage of the population lives under what laws. (and it's easier to see what a big deal New York is!)

Since the last crazy webOS app review, I've gotten a few more! The first one is responding to that last reviewer:

To (the negative reviewer):I pray that you die in a fiery car crash. JUST KIDDING! I don't pray. But I'm hoping for that crash. :-)
and today I woke up to a new one star review:
Men who say they are gay are basically telling you they like another man's pen1s up their butt... That's freaking disgusting! Y wud I want to know tht?! How wud you like it if i came up to you and told you I liked to swallow d1cks? Don't you all get it? May the lord Jesus Christ have mercy on these wretched sinners, or may he smite them for their Satanous ways... I love God & he protects the holy, I am at peace.

Sigh. I think my next app is going to be about puppies; everyone likes puppies, right?

9 comments

webOS app sales: after the TouchPad firesale
Mood: busy
Posted on 2011-08-23 13:15:00
Tags: palm essay palmpre projects
Words: 137

Well, the last time I did one of these they announced no more webOS hardware from HP, so maybe if I do another one something really really good will happen?

Anyway, the fire sale basically started on Friday. Here are daily numbers for my most popular apps since then - two free, two paid:







ThuFriSatSunMon
FlightPredictor HD827192341
Simple Alarms615181228
Marriage Map162532162179
GAuth10463153


So things are still going strong! Interestingly, FlightPredictor HD sales are still driven strongly by HP's promo codes (36 of the 41 on Mon), while Simple Alarms is the opposite (only 6 of the 28 on Mon). So I'm curious to see if FlightPredictor HD sales drop off faster than Simple Alarms...

0 comments

webOS app sales: how are my apps doing?
Mood: cheerful
Posted on 2011-08-17 20:30:00
Tags: palm essay palmpre projects
Words: 541

After seeing this post about webOS app sales on PreCentral, I thought it would be a good time to look back at my apps' sales. And in this post, you get real numbers, because...why not? :-)

Summary: App sales since the TouchPad release have been impressive. My numbers are a little weird because my paid apps have separate versions for phones (i.e. Mojo) and the TouchPad (i.e. Enyo).

I have four paid apps for the TouchPad, and here are their approximate sales (by number - all apps are 99 cents except FlightPredictor HD, which is $1.99) in July and August:







JulyAugust (as of today)
FlightPredictor HD155180
Simple Alarms165130
We the People HD8565
Private Browser HD5535


A few interesting things:So obviously I find it impossible to say how well the TouchPad is selling, but people are definitely buying apps (myself included!), and for that I am thankful. Here's to webOS's continued success!

2 comments

crazy webOS app reviews: Marriage Map
Mood: amused
Posted on 2011-08-07 15:36:00
Tags: essay palmpre gay projects
Words: 260

Marriage Map (the webOS version of my same-sex marriage map) got a 1 star rating this morning, with the comment:

It is a shame that marriage is moving from the way God intended it to be. I pray for the souls of those who are blinded by their belief that same-sex marriage is right.

A few things spring to mind:
- Thanks for the prayers! (not intended sarcastically)
- I'm honestly confused about what would make this person happy. I'll presume that same-sex couples aren't going to be able to marry in this person's church anytime soon, so does he think they shouldn't be able to marry in anyone's church? Or is it just the fact that we're able to get hospital visitation rights and the like?
- I tried pretty hard to make the app "non-partisan", so I feel like he's kinda giving 1 star to reality. Although to be fair, I did make the states closer to allowing blue-greenish and the states that don't allow it reddish. (also, 0 of 3 people find the rating helpful, so yay!) I don't usually rate my own apps, but I made an exception in this case to balance it out a bit.

The webOS developer relations team has stated in the past that they're pretty resistant to deleting reviews/ratings unless they contain spam or profanity, so I'm not going to flag it. I guess it's not so bad, given that it's gotten 252 downloads (not great for a free app, but a decent number) and this is the first bad review that's still there.

4 comments

app reviews getting better!
Mood: cheerful
Posted on 2011-07-06 16:15:00
Tags: palmpre projects
Words: 125

As a followup to App reviews are a way to my heart: I released updates to the two apps in question that went live yesterday, and now they're up to 3.5 and 3 stars! Not as good as I would like, but I don't feel like a bad person for having made bad apps anymore.

On the flip side, the marriage map now has a rating of 2 stars (after 1 review), and as far as I can tell no comments were left. I guess I'll chalk that up to something mysterious, and hope that other people who have downloaded (there are 42 of you!) either rate it higher or let me know what's wrong with it.

Back to trying not to obsess over this...

5 comments

App reviews are a way to my heart
Mood: anxious
Posted on 2011-07-03 13:20:00
Tags: palmpre projects
Words: 148

The HP TouchPad released on Friday, and it is flippin' awesome and you should get one!

So all my apps are out for it. Here's a list:
FlightPredictor HD
Simple Alarms
Private Browser
We the People HD
Marriage Map
GAuth
PasswordHash

Anyway, most of these show up as new apps in the App Catalog, so they start back with no ratings. Which means I'm even more anxious than usual watching for when they get rated. And lo and behold, two of them are not doing well, which makes me very unhappy. One app I can fix (update already waiting to be reviewed!), but the other one I'm not even sure what people are complaining about...

I guess the moral is, if you want to make my day, rate my apps well, and vice versa. Hopefully I'll settle down after they all have a few ratings under their belt.

2 comments

LJ for WebOS: the saga ends!
Mood: surprised
Posted on 2011-03-15 13:06:00
Tags: lj for webos palmpre projects
Words: 64

After my last LJ for WebOS adventure, I was a bit down. But, I look at the App Catalog today, and the most recent review has been upgraded from 1 star to 3 with the text: "A recent update has greatly improved the readability of the themes, so is[sic] that's what put you off before I suggest taking another look."

Yay! Thanks, random person!

0 comments

Salvaging the looks of LJ for WebOS
Mood: sad
Posted on 2011-03-13 15:01:00
Tags: lj for webos palmpre projects
Words: 147

An excerpt from the most recent review of LJ for WebOS: "...most recent update has made it so ugly that it is unusable." This makes me sad!

So - here's my plan:
- the most recent update added themes, some of which are not terrible (I think). So I added a dialog box on first launch that points this out and makes it easy to try them.
- I also created a "plain" theme (see the first screenshot on the LJ for WebOS page, so if you really hate every one of the other themes, at least you can fall back to that one. I also made it the default theme, which made me a little sad but people can always change it if they want.

Here's hoping this will make people happy! Of course, people rarely go back and change their reviews so I'm probably stuck with that one...

2 comments

byte manipulation in Javascript = not fun
Mood: irritated
Posted on 2011-02-24 09:22:00
Tags: palmpre projects work programming
Words: 191

Google's two-factor authentication is a really good idea, so I'm trying to port the Google Authenticator to webOS. This involves calculating hash values, etc. in Javascript, which is a giant pain because Javascript knows nothing but signed 32-bit integers and 64-bit floating point datatypes. So every time I look at the sample Java code and it uses a byte[], that means I have to manually convert to the -128..127 range. And the sample code does some things like converting 4 bytes to an int, which is easy in Java but a pain in Javascript.

Anyway, finally I had the bright idea to actually compile the Java code so I could compare the results, because I generated at least twenty different codes trying various permutations of things, none of which were right.

Another thing I learned! If you return an error string from a constructor, this does essentially nothing. You still get a constructed object. So, if your library is doing this, there's a 99% chance that no one's going to notice without a lot of pain in suffering.

Adding to my troubles: I am involved in some heavy yak-shaving at work.

6 comments

Another new webOS app: Private Browser
Mood: happy
Posted on 2011-02-22 13:24:00
Tags: palmpre projects
Words: 50

As promised, I have another new webOS app, Private Browser, that's out today! It lets you keep your browsing history private and save bookmarks that are protected behind a password. Here's a short video overview - I did it on the first take, so forgive the awkward pause near the end...

0 comments

New webOS app: State Lines
Mood: excited
Posted on 2011-02-20 20:30:00
Tags: palmpre projects
Words: 93

FlightPredictor, my top-selling webOS app, just sold it's 1000th copy this weekend! To celebrate this milestone, I'm proud to announce:

State Lines, the popular iPhone app, is now available on the Palm App Catalog! An indispensable resource when traveling, it's also fun to browse nearby states and see how their laws differ from yours!

This port was made possible by the good people at Two Steps Beyond and my inability to sleep over the past few weeks. For more exciting developments brought on by the lack of sleep, stay tuned later this week!

1 comment

stock market returns project
Mood: okay
Posted on 2011-01-26 10:33:00
Tags: projects
Words: 171

Riffing off of this New York Times chart I mentioned a few weeks ago, I present: a chart of stock market returns! A few notes:

- Unfortunately, I didn't have any S&P 500 data before 1950, so that's when the chart begins. I'm not sure how the original chart went back to 1920, and I didn't feel comfortable just copying their raw data.

- The calculations for dollar-cost averaging are...a little confusing. Basically I considered it as if you had a lump sum but instead of investing it all at once, you invest it a little bit per month. Except then correcting for inflation gets very tricky. Anyway, there may be some problems but I think the message is the same - especially in the short run it reduces risk and return, but the more strongly the market trends off the better off you would have been investing it all at once.

- It was fun to throw this together but it also adds less information over the original than I had hoped. Oh well!

6 comments

bridge update (or: programming is hard)
Mood: worried
Posted on 2010-10-27 14:00:00
Tags: bridge projects programming
Words: 477

After vacation and traveling and such, I've been working on the bridge program again. I'm at the point in the webOS client where I can now play a complete hand, bidding and all. It even looks relatively nice with cards sliding around, things fading into view, etc. Ask me to show it off if you're interested sometime!

So the next task is adding the AI for playing cards. I've decided to go with a rule-based system, where there are a bunch of rules that can decide if they apply. So I have "second hand low" and "third hand high" rules that go near the end (since they're fairly generic).

Last night I tried to sit down and really hammer out the rule that applies if you can determine exactly what will be played. If you're the last player on the trick, this is relatively easy - see if your partner is winning, if not win as cheaply as you can, if so (or if you can't win) throw some trash.

Even this is a little vague - what card should I throw away? Well, if there's only one suit I can play it's easy, but if not then it's hard. So I put this off with a TODO.

The tricky part is if you're the third player on the trick and the fourth player is the dummy. Then it's something like: look at all dummy's cards and the declarer's card that was played (if it's currently winning), then see if I can beat all these. If so, play the cheapest. If not....well, we are in the third hand and we'd like to force dummy's best card if we can. So find dummy's second best card and see if we can at least beat that. If not...well, at least we should try to beat the current high card played by declarer. If we can't do that, then just toss something.

--

This took a while to code up, and I need to test it thoroughly because I'm very much not confident in it. And it still leaves a lot of details out - what if dummy has AK6 and I have the 57 - under the algorithm I'd play the 5 which is pretty clearly wrong. It seems like to handle this case I should have been keeping track of which cards are winners in their suit, which is another layer of complexity!

And all this is for a (all things considered) pretty simple case where I can see all the cards. I'd also like to keep track of how many cards of each suit each person has (based on the bidding), which would help but would also add enormous complexity.

Maybe the AI should cheat and see all the cards? Is there some better thing to keep track of?

It could be a long time before the game seems to play intelligently...

2 comments

minnesota, civ 5, bridge
Mood: busy
Posted on 2010-09-20 12:07:00
Tags: pictures bridge projects programming
Words: 208

I went to Minnesota last week on a recruiting trip and took a few pictures:

Civilization 5 is releasing tomorrow! The full manual is available online (warning: 233 page .pdf) and it look spretty good. I do miss having a paper manual, though.

I've been working on the bridge program for webOS. It's coming along nicely - the framework is all in place to bid and play, and I've done some of the graphical stuff so you can almost actually play a hand on the webOS emulator. The next big thing to do is the AI for bidding and playing, which will probably be big tasks. We're going to be fairly busy over the next month or two so I'm not expecting much progress for a while. (also, Civ 5 coming out certainly doesn't help :-) )

Happily, since webOS is Javascript-based it was pretty easy to make a webpage version of the game, which will make testing out AI algorithms, etc. much easier.

Eric Fischer took census data on race and mapped where people live in major cities. (here's Houston, Austin, and San Antonio) Some patterns definitely jump out at you, but if you zoom in you can see there's nowhere that's exclusively one race, which is a good thing.

1 comment

bridge it is!
Mood: thoughtful
Posted on 2010-09-07 15:10:00
Tags: palm projects programming
Words: 107

After some thought and some more research about what webOS app to work on next, it looks like the mystery option is going to be somewhere between difficult and impossible, and it's going to be a while before I can tell which.

So, bridge it is! It's going to be pretty tough, but a few people have volunteered to help, and it's better to aim high, right? So far it can deal out hands and count points...

I can't decide whether the hardest part will be the AI for bidding, playing, or just making the graphics look nice (with pictures of cards, etc). I guess we'll see!

2 comments

What webOS app to work on next?
Mood: curious
Posted on 2010-09-02 22:51:00
Tags: palm projects proandcon poll
Words: 347

Having finished We the People and done some small changes to earlier apps, I'm raring to work on a new webOS app for my Palm Pre. (partially feeling invigorated by the announced webOS 2.0 features)

So here are my ideas:

A client to easily browse Reddit.
- Pro: I've played around with it a little and gotten some stuff to work, which is promising.
- Pro: There's a real API which looks pretty easy to interact with.
- Pro/Con: There are already a few existing Reddit clients, although none of them are in the full App Catalog (one's in beta, I believe?)
- Con: It would be a lot of work to make pages look attractive, especially since I suck at it.
- Con: I'm not sure how much more useful it is than just going to the Reddit site in the browser.
- Con: I couldn't see charging more than $1.99 for it, and I'm not sure how many people would be interested in buying it.

A bridge game (probably single-player only, at least at first)
- Pro: There are no existing bridge games in the Catalog. Even in Apple's I only see two.
- Con: That's probably because it's a huge pain to write AI that bids well. And if it doesn't bid well, it's almost useless.
- Pro: I could see charging $5-$10 for it if I spent the time to do it well.
- Con: Bidding aside, it's still a lot of work to put in correct play, proper scoring, fancy card graphics, etc. I'm not convinced I won't give up or lose interest before I'm done.

Mystery option #3, which I just thought of
- Pro: Uses some exciting new features in webOS 2.0, like <redacted>!
- Con: It's not a very original idea, and I bet someone can beat me to it.
- Pro: But it would be kinda fun to write and play around with...and I would use it...
- Con: But I can't start working on it until webOS 2.0 releases, whenever that is.
- Pro/Con: Probably a 99 cent app, although a fairly wide audience.

What do you think? (open to other ideas!)

4 comments

catching up
Mood: cheerful
Posted on 2010-08-02 14:18:00
Tags: pictures asmc projects
Words: 93

The summer musical went well this weekend, although I was losing my voice by the end on account of doing the pirate accent. Happily, today begins 3 days of no rehearsals/performances, which hasn't happened since we started rehearsals just under a month ago. So, I've been catching up on a few things:

- Pictures from Jonathan and Sarah's wedding are finally up:


- My PasswordHash thing now has a Google Chrome version. Unfortunately right now there's no support for adding things to the right-click context menu, so it just copies the password to the clipboard.

1 comment

FlightPredictor wins! and a new life rule
Mood: happy
Posted on 2010-07-28 10:09:00
Tags: health asmc palmpre projects
Words: 83

Palm just posted the official results of the Hot Apps competition, and FlightPredictor made the list! Really looking forward to improving it and making some new apps once I have some free time...

Speaking of which, a new life rule: no sushi close to shows. Of course, the one time I get sick from it is during a rehearsal. (nothing overly dramatic, but I did feel pretty crappy and sat down a lot) Hopefully tonight is better - only 2 days until we open!

1 comment

FlightPredictor featured on palm homepage!
Mood: excited
Posted on 2010-07-15 12:50:00
Tags: palmpre projects
Words: 24

As with LJ for WebOS before it, FlightPredictor is now on the Palm homepage! Screenshot:


(it's the "plane with clock symbol" at the top)

2 comments

home energy usage - new shiny graphs!
Mood: geeky
Posted on 2010-07-06 11:09:00
Tags: projects
Words: 163

I've been wanting to play around with Tableau Public, so I decided to revamp my home energy usage graph.

Anyway, the new version is here, and I think it does a good job of showing the difference that having someone upstairs during the day makes, as well as the new A/C unit we bought a few months ago. I used a quadratic fit which seems to fit the data much better than the linear one I used before (you can mouseover the trend lines to see the equations!). Now I just need to wait to get some more data points!

You can click on points in either graph to see the corresponding one in the other, and Tableau makes it easy to download the raw data I used. If you select "True" for "Upstairs during day?" you can really see the effect of the new A/C. (green points vs. orange)

Thanks to Robert Morton for his help in getting it up and running!

3 comments

weekend pictures, my first ad!
Mood: nervous
Posted on 2010-06-07 10:52:00
Tags: pictures palmpre projects
Words: 146

We went down to Houston this weekend to see the Young Frankenstein musical (verdict: entertaining but not as good as the movie), and ended up seeing a nice backyard with some bees. Also: back in Austin we saw the original Batman movie at the Paramount with Adam West. Pictures of all the above:


The Palm Hot Apps competition will award cash prizes to the 221 most popular free and paid apps on June 30. I think FlightPredictor has a (very) outside shot at winning, so I bought an ad for it on webOSroundup. (it's one of the boxes on the right - doesn't show up every time so you might have to reload) Thanks to destroyerj and skimmerduk for design help!

One year and one day ago, the Palm Pre went on sale - PreCentral has a a good retrospective on what went wrong and what went right.

2 comments

FlightPredictor released!
Mood: excited
Posted on 2010-05-03 10:30:00
Tags: palmpre projects
Words: 61

FlightPredictor, the best way to know ahead of time whether your flight will be delayed, is now available on the Palm App Catalog! Here's the official homepage, and here's a video walkthrough of how FlightPredictor works.

It's powered by FlightCaster.com, a San Francisco-based startup. Many thanks to them for making their API available and responding to my questions and suggestions quickly!

2 comments

LJ for WebOS update
Mood: hopeful
Posted on 2010-04-16 10:11:00
Tags: lj for webos palmpre projects
Words: 297

The good news: Since my last update, I'm up to 132 copies sold. I've added some new features, including the heavily-requested thumbnails in posts, and I made a video walkthrough of the app that's linked to from the App Catalog. (which is a cool feature - thanks Palm!)

The bad news: The rate of sales is really slowing down - this last week I had three days in a row where no copies were sold, which is the first time that's happened since I've been tracking the daily numbers. Pushing the update helped a little, but I'm getting a feeling that the market may be somewhat saturated - the intersection of "people who own a Pre" and "people who use LiveJournal enough that they're willing to pay a few bucks for a good client" probably isn't that big to begin with. Or maybe it's just a blip; I suppose time will tell.

I was hoping that I might squeak in to the Palm Hot Apps competition, but looking at the leaderboard I'm a ways out from the #200 slot. Right now I'd have to sell 51 more copies to get on the list, and that's only going to go up over time. Oh well!

In any case, I've had a lot of fun working on LJ for WebOS and I'm glad that people seem to generally find it useful. I'm hoping to publish my next app (the FlightCaster-based one) within a few weeks - it's mostly ready to go but I'm waiting on some API changes before I call it done, and then I have to make a video, etc.

A post by someone on Palm's developer relations team sums up well why I like WebOS so much and why I'm going to be a sad panda if it goes away.

6 comments

new external HD, project, life
Mood: excited
Posted on 2010-04-05 13:51:00
Tags: palmpre projects programming
Words: 433

My backup strategy as of last week was to copy the really important stuff onto my 16GB USB thumbdrive relatively frequently, and more infrequently copy everything onto an external hard drive. Feeling rather clever at the time, I bought an enclosure like this, so I could buy a cheaper SATA hard drive and stick it in there and plug it into my computer via USB. Then when I wanted to upgrade drives I could just buy another SATA drive.

This sounded good in theory, and indeed kinda worked, but it was very slow for some reason - copying 200GB over to the drive and then untarring the 200GB file took around 3 days. Because of this I backed up way less often than I should have.

As luck would have it, the SATA drive seemed to die last week, and so after doing a little research I bought a Western Digital Elements USB Hard Drive with 1TB of space for $90. It was easy to get it to mount on Linux, and took less than 24 hours to do the same copying/untarring procedure. And it doesn't look totally cobbled together! So I'd recommended it if you're looking for an easy backup solution. You can also get a version with fancy software and an e-ink label on the outside that was actually kind of tempting.



I've been working for a little while now on my next WebOS app, which is called FlightPredictor. (unless I decide to change the name :-) ) It's an interface to FlightCaster.com, which can predict airline delays ahead of time and generally has lots of interesting data. (see a sample report) They already have iPhone and BlackBerry apps, so I'm happy to bring a third platform into the mix. (and before Android, even!) I'm just putting the finishing touches on it and incorporating some API changes, but right now the best part is that it does WebOS notifications to let you know when the information has changed so you can always keep on top of things.


The last few weeks have been quite busy, and I'm starting to wear down a bit. Between squeezing any time I can to work on FlightPredictor, plus a lot of yardwork we've been doing (planting a few new trees, making a rock garden), plus the usual weekend errands, plus volunteering at the tax center...it's getting to be a bit much. Hopefully things may quiet down soon but it's conceivable we/I'll start flaking on things to stay sane...

Baseball season has started! Here's a handy map to what parts of the country root for which teams. Go Astros!

2 comments

health care (basically) passed! and a local shoutout
Mood: ecstatic
Posted on 2010-03-22 14:28:00
Tags: lj for webos essay projects politics links
Words: 409

The health care bill passed the House! The plan is for the Senate to pass it this week and then Obama will sign it into law.

The bill: Here's some information on the final bill - it was confusing for a while with the House bill and the Senate bill, but this is the final one. It expands coverage to 32 million uninsured Americans. It prohibits lifetime limits on insurance coverage and denial of coverage due to preexisting conditions. Yes, it's not a perfect bill, and it's hard to predict how well the cost control measures will work, and there's no public option, but there's a lot of good stuff in the bill. And it will be easier to adjust this bill in the future than if we had started over or given up because it wasn't "good enough". As James Fallows said:


There are countless areas in which America does it one way and everyone else does it another, and I say: I prefer the American way. Our practice on medical coverage is not one of these. Despite everything that is wrong with this bill and the thousand adjustments that will be necessary in the years to come, this is a very important step.

The politics: A bunch of reactions. My thoughts: elections matter, and this is why. (why yes, there is a difference between the Republicans and Democrats!) It's certainly possible this will be a political loser for the Democrats (although I think it will be popular in the long term), but the point of having power isn't to maintain power, it's to get things like this done.

Other randomness:
After canvassing the house for my lost camera, I bought a new one today from Precision Camera and Video. I was happy there - they let me play with it a bit and even open a few cases to find one I liked, and I get a free basic photography class which I might actually take advantage of. Good service and good prices!

Today marks the 100th sale of LJ for WebOS - thanks to all who have purchased it! I have a few new features I'm planning on working on soon. Coincidentally, I just got my first PayPal deposit from Palm, so that's exciting :-) I put myself up on theymakeapps.com.

Capital MetroRail opened today! Finally, commuter rail in Austin. Unfortunately, turnout wasn't great this morning, but I'd give it at least a few months to see how it goes.

2 comments

One more LJ for WebOS sighting
Mood: happy
Posted on 2010-03-17 11:32:00
Tags: lj for webos palmpre projects
Words: 33

After it made the Palm homepage, Precentral reported on the new homepage and mentioned LJ for WebOS by name. Cool beans!

(and, yes, this will be the last of these for a while)

0 comments

LJ for WebOS featured on palm homepage!
Mood: excited
Posted on 2010-03-16 17:22:00
Tags: lj for webos palmpre projects
Words: 20

LJ for WebOS is currently being featured on the Palm homepage! (it's the lower right of the 3x3 grid)

Screenshot:

3 comments

links n' such
Mood: irritated
Posted on 2010-03-11 12:33:00
Tags: palmpre gay projects links
Words: 221

My Board Game Geek app for WebOS is now available in the Palm App Catalog!

What If Everybody in Canada Flushed At Once? - or, Canadians really like hockey.

A map of the most common fast food restaurants across the US, made by calculating the "burger force" (proportional to one over distance squared). McDonalds obviously reigns supreme, but Sonic makes a pretty good run in Texas!

LOST: Baywatch intro

The subscriber rates cable companies pay to carry each channel. ESPN and Fox Sports Net are by far the most expensive, and even the FOX Soccer Channel (which apparently exists) costs more than Comedy Central.

Florida (like many places) offers tax credits if you film a movie or TV show there. Now they're considering a bill that would deny these credits if the show has a gay character. (among other things)

As a Michigan fan, I'm not sure how to take the fact that Jim Tressel (the Ohio State football coach) answered questions from a local gay publication. (and said some very nice things) He's probably the first major coach to do so.

An interview with David Boies and Ted Olson about their Prop 8 case. Nothing earthshaking, but it's interesting to hear them talk about the trial and what they think their chances are. They're expecting a ruling by late April/early May.

4 comments

A close shave
Mood: bouncy
Posted on 2010-03-10 13:32:00
Tags: health palmpre projects house
Words: 728

Yesterday, we were driving home from work as usual on the onramp to North Mopac just south of Duval when the car in front of me started slowing down and then came to a complete stop. On the onramp.

Luckily, I was watching and was able to stop in time. Even more luckily, the car behind me was barely able to stop in time as well. (David says he could hear them slam on their brakes, but I was focused on stuff in front of me) Then the crazy honking began, both from the car behind me and me, and the car pulled off into the shoulder. I'm guessing they stopped because the sun was just at the right angle so that you couldn't see anything in the side view mirror, which made getting on the freeway from a dead stop rather challenging. Luckily no one hit me.

I was pretty amped up from this and my heart was definitely beating faster than normal. Unfortunately, this continued for quite a while. Apparently reflux can present this way, and taking some antacids seemed to help for a while, but it made me jumpy all evening and made it hard to sleep...

I worked on a new WebOS app last night - this one's a quick interface to BoardGameGeek. To submit it, I had to make the decision again about where to put it. To review:
- To put it on the App Catalog costs $50 (one time fee)
- Not doing that is free, but then it's a lot harder to find without a direct link
I prefer putting my apps on the App Catalog for the widest exposure, but then I feel like I have to charge something to make my $50 back. (and it's not that I really begrudge the $50, I understand it takes Palm time to review the apps, etc.) So I did that and am charging .99, the lowest allowable. We'll see what happens1

Good lost episode last night: At this point my favorite episodes are Locke, Ben, and Sawyer ones. Michael Emerson (actor who plays Ben) is amazing and really sold me on the whole Machiavellian teacher bit. Lots of sweetness when he says "Because no one else will have me" and Ilana replies "I'll have you". Awww!

The excessive "winking" at the audience is getting to be a bit much. I'm fine with Hurley acting as a fan of the show and asking a question about something every once and a while, but asking if Richard was a cyborg seemed kinda silly.


A Lost encyclopedia is coming out in August! I know it makes sense to release it after the end of the show since then it can be "complete", but it would have been helpful earlier. Still, I'll probably pick it up.

Random note: Like Greek food? Try Pars Deli at the corner of 183 and Burnet. Delicious gyros, and it's clearly a family run place. They left the door open today and it was soooo nice :-)

House stuff: We had solar screens installed by Josh Hobbs a few weeks ago. The process was pretty easy (we didn't have to be there any of the time), the prices were reasonable and the screens look nice. (need to take a picture at some point) Haven't really been able to measure their effectiveness yet, but it's definitely darker, so presumably that will keep out heat too.

Next week we're getting a high efficiency A/C unit put in, as well as making it "multi-zone" so we can control the upstairs and downstairs temperature independently. After crunching the numbers it's not going to quite pay for itself in reduced electricity bills, but it will get pretty close and we get a new unit out of the deal. (we spend a fortune on cooling in the summer!) The $1500 tax credit helps, and Austin Energy has some nice rebates too.

Bought the Heavy Rain soundtrack from iTunes. (yay for DRM-free music!) I might try to transcribe the really pretty piano music (Painful Memories), if I feel inspired enough.

Final Fantasy 13 was bought and played yesterday. Even after just playing Heavy Rain, whose visuals were pretty impressive, it looks fantastic - definitely using the PS3 to its full potential. Also, does anyone know if the characters have such ridiculous names in Japanese too, or is that just a translation thing?

3 comments

Palm and LJ for WebOS
Mood: thoughtful
Posted on 2010-03-04 13:14:00
Tags: lj for webos essay palmpre projects programming
Words: 747

I worry about Palm sometimes. They recently lowered their guidance for this quarter, analysts don't seem too upbeat, and their stock price for the last year looked promising when they released the Pre in July, but has dropped dramatically since then.

More concerning is the fact that, 9 months after releasing the first WebOS phone, Gartner estimates that 0.7% of smartphones are running WebOS. Hopefully this will improve now that they're on Verizon (and rumor is they'll be on AT&T sometime this year) and once they launch in more countries.

The good news is that the mobile phone market isn't quite like, say, the social networking website market, which has a very strong network effect. If all your friends are leaving Friendster for Facebook, then Friendster is less valuable to you, and you'll probably switch to Facebook. But I can still use the web just fine from my Palm Pre even if the rest of the world switches to iPhones and Droids and Nexus Ones. There is somewhat of a problem that if fewer people use WebOS, fewer people will write apps for it, but this is more of a slow process. Also, at least in the US, most people are under contract for their phones and so they only have an opportunity to switch cheaply every one or two years. I'm really hoping Palm can keep turning things around - just yesterday they released an update to the Facebook app that makes it much nicer.

Speaking of apps...

LJ for WebOS has been doing pretty well since my last update - as of this very moment I've sold 72 copies. It seems fairly random how many copies are sold a day - thanks to the new app My WebOS Apps I have a nifty graph on my phone with these totals for the last week: 5, 1, 1, 2, 4, 2, 0. So...who knows?

One of the frustrating parts has been seeing bad reviews indicating that it just isn't working for a few people. Most of these reviews came early and I'm pretty sure I've fixed the bugs since then, but most people don't go back and edit their review when problems get fixed, and I have no way of contacting them to ask them if it's working for them and to try to diagnose their problem if not. I've been trying to make it more and more obvious how to contact me to the point that if you can't load the posts a dialog comes up with a button to email me the problem. We'll see if this helps at all. Encouragingly, more of the recent reviews have been good than bad, bringing the average back up to 3.5/5 stars.

I spent a lot of last week working on a new feature that I really wanted to add: the ability to browse other people's journals. I even wrote the parsing code before I got stuck on a problem that I've gotten stuck on before - the inability to properly authenticate so that the client can load friends-only posts. The API way to do this is to call the sessiongenerate method - unfortunately LiveJournal's cookie scheme has changed because of some security holes, and no one's gone back and updated or added a new API.

Every time I run into this problem, I spent some time trying to "fake it" by POSTing the right thing to the login page, essentially pretending I'm a regular user signing in from a browser. As in the past, I can't get this to work and I'm not sure why, and it's really frustrating to try to debug because it's all guesswork.

So I was a little down about that, and the last release (made it to the App Catalog yesterday) only had a few small features like deleting posts. This week I took a stab at some random not-quite-featurey things that have been on my list for a while, and everything just kinda worked. The next release will use a lot less bandwidth on the initial request (66% less in my test case!), and it fixes a bug with comments not posting by showing the CAPTCHA dialog that LiveJournal was returning. I was amazed that both of these basically worked the first time, so that was a nice pick me up :-) I'll probably submit it to the App Catalog tonight after a bit more testing.

I'm running out of features to work on that are actually possible to do, so I'm very open to suggestions!

0 comments

LJ for WebOS: 2.5 weeks later
Mood: okay
Posted on 2010-02-17 10:55:00
Tags: lj for webos essay projects
Words: 577

It's been 2.5 weeks since LJ for WebOS was published on the Palm App Catalog, so I thought it would be nice to talk about how many copies have sold and whatnot.

As of this very moment (according to Palm's magic page that I reload far more often than I should), I've sold 44 copies. You can see a rough graph of the copies per day here, although this tracks downloads and not purchases, so for example when an update got published yesterday the download numbers spiked but the purchases did not.

I was actually expecting a little more of a bump from my app being near the top of the "Recent" list in the App Catalog, but I only sold 2 copies yesterday, which is around the same as most days. Which in retrospect makes sense, because already my app's appeal is fairly limited: only WebOS users who also use LiveJournal and use both enough that they'd be willing to pay to get a better interface to it. An impulse buy this is not.

This is part of the reason I priced it as $2.99, which is "high" in App Catalog terms - the number of people who would be interested in it is so artificially limited in the first place. Of course the other reason is that I think it provides at least that much value - it's much more pleasant to use than LiveJournal's mobile site, which is really the only alternative.

So how much money have I made? Well, let's do the math: 44 copies at $3 each is $132. My cut of that is 70%, which is $92.40. I had to pay $50 to get it on the App Catalog in the first place, so that's down to $42.40, and after taxes I end up with around $32.

On the one hand, hey, free money, right? Except I've spent a ton of time on this project. I've been working on it in my spare time since August, and I've written over 7000 lines of JavaScript code. I've definitely put at least 50 hours into it and probably closer to 100, so calculating the hourly rate is a little depressing. This is probably the project I've spent the second-most amount of time on. (I'm guessing top is whereslunch.org)

I think I put myself in a bad place here - when I work on projects for fun and release them "to the world" open source and all (see: almost everything on gregstoll.com) then I get the satisfaction of completing a project and the satisfaction whenever I see anyone use it, which is a pretty low bar. When I work on stuff for money, then, well, I get money for it, and the idea that someone cares enough about what I'm working on to pay for it.

But this model where I work on stuff in my spare time for fun and then try to make a little money off of it puts me in the mindset of working for the money, and then when the money fails to materialize I get depressed about it. Not to mention I've spent so much time on this in the last few weeks that I could feel myself burning out last night. So I think I'm going to back off a bit on new features and work on things that seem interesting or useful to me, not necessarily other people.

Anyway, this has been a bit meandering, so thanks for reading :-)

3 comments

Interested in LJ for WebOS?
Mood: cheerful
Posted on 2010-02-07 23:10:00
Tags: lj for webos projects
Words: 14

If you've interested in LJ for WebOS, why not sign up for our newsletter?

0 comments

LJ for WebOS mentioned!
Mood: happy
Posted on 2010-02-04 23:31:00
Tags: lj for webos projects programming
Words: 26

Yay! LJ for WebOS was mentioned in the latest news post. If anyone's interested, here's the homepage, and I'm happy to answer any questions about it.

2 comments

LJ for WebOS released!
Mood: accomplished
Posted on 2010-02-01 10:50:00
Tags: lj for webos projects programming
Words: 57

I'm happy to announce that my LiveJournal client for WebOS devices has just been released on the Palm App Catalog! It includes support for:
- viewing your friends post and own posts
- making posts with custom security, userpics, and tags
- uploading photos to imgur.com and including them in posts
- viewing cached posts offline

Here's the official home page.

0 comments

rethinking the plan
Mood: tired
Posted on 2009-11-24 10:30:00
Tags: palmpre projects programming
Words: 121

I signed up for the Houston Turkey Trot 5K with my family. Unfortunately, it starts at 8 AM (which is very early for me these days) and I'm not in great shape and it's going to be cold, which doesn't do so great on my lungs. Hopefully I survive!

Been working on WebOSJournal (the LiveJournal client for the Palm Pre/Pixi) - it's coming along decently but I'm running into some frustration trying to allow replying to posts/comments. The authorization scheme is tricky and of course you don't get useful feedback. I actually downloaded the LiveJournal source code to try to figure out what I'm doing wrong, but it's hard to find my way around...

Obama kicks off massive science education effort - yay!

2 comments

home energy usage vs. temperature
Mood: geeky
Posted on 2009-11-09 12:48:00
Tags: math projects
Words: 62

I couldn't sleep last night so I whipped up this analysis of our home energy usage vs. temperature. It turns out that (spoiler!) we use more energy when it's hot outside. But I got to run my first linear regression!

People who know about statistics: feel free to criticize/suggest improvements. (I'm not even sure I was looking at the right R-squared value...)

0 comments

colorerorer
Mood: hopeful
Posted on 2009-09-02 10:33:00
Tags: gay projects links
Words: 133

How many times have you had a log file with lots of pointer values and wanted to quickly see which values were equal, and even rename them with a meaningful name?

Wow. Really? Never? We lead very different lives.

Anyway, I wrote a little log colorer to do that, which has been helpful trying to track down a race condition. (and inserting a breakpoint tends to make it not happen) Also, colors!

Ben & Jerry's is celebrating that gay marriage is legal in Vermont effective yesterday (yay!) with Hubby Hubby ice cream.

In Maine, gay marriage is legal but it will be on the ballot in November. The Catholic Church, in a disappointing but not too surprising mood, is contributing $100,000 to try to repeal it even as they have to close local parishes.

0 comments

spilling links
Mood: nervous
Posted on 2009-08-17 09:52:00
Tags: pictures palmpre projects links
Words: 128

Pictures from New Mexico and Barbara & Alex's wedding are up. Note that the pictures from the wedding itself aren't that great...I did my best!

Published a Pre version of PasswordHash - it was relatively easy to port. A new feature (in the web and Firefox versions as well) lets you force a special character to appear in the password.

Apparently men who "strongly endorsed old-school notions of masculinity" were half as likely to get flu shots and other preventative medicine. Can't say I'm surprised.

Also, "for men, sexual boredom was correlated with variety in partners (or lack thereof), while for women, it was more related to variety in activity." Good to know? (the Coolidge effect description at Wikipedia is pretty funny)

Finally, an Obama protest I can get behind.

0 comments

slideshow comments
Mood: busy
Posted on 2009-08-11 14:15:00
Tags: palmpre projects
Words: 75

Did a quick project so that GLSlideshow (my screensaver), which currently shows random pictures from my gallery, would show the comment on the picture as well. Wrote it up here but there are no demos or anything so it's not very exciting :-)

Played around with the Palm Pre API last night, and I feel like I have my legs under me and can start making things that are actually neat rather than just toys. Exciting!

1 comment

Optimizing iTunesAnalysis: faster database access
Mood: tired
Posted on 2009-07-09 09:44:00
Tags: optimization essay projects programming
Words: 280

The second in an occasional series
Idea: Now I'm focusing on improving the time to insert the iTunes data into database. Where we left off last time, our script took 71 seconds to run, ~50 seconds of which was database operations. The idea I had to speed this up was to batch a bunch of queries together and thus make fewer calls to the database. It turns out this actually slowed things down.

So I did a little research and it turns out if you insert data with the same query structure over and over again (but with different bind variables), the database doesn't have to reparse the query which speeds things up a lot. I tried doing this with pyPgSql but couldn't find any documentation how it was supposed to work, so I switched to using psycopg2 and changed the query for inserting the playlist data. Just switching to a psycopg2 sped things up a lot, it seems. I tried switching to a similar sort of query for inserting track data, but that actually slowed things down.

Anyway, the new script runs in 25 seconds, and it looks like only around 9 seconds for database operations. This is a 400% speedup in the database time! Overall, this step improved performance by ~180%, and since we started at 114 seconds we've improved ~350%.

Conclusion: Another big success, and I'm not sure how much more I can squeeze out of the iTunesInfo.py script. Next time I'll focus on the analyzedb.py script, which does the analysis from the database - right now it's taking between 5 and 12 minutes to run on my library of 6400 tracks.

Source files:
- old script
- new script

0 comments

Optimizing iTunesAnalysis through smarter parsing
Mood: geeky
Posted on 2009-07-08 10:31:00
Tags: optimization essay projects programming
Words: 631

The first in an occasional series
Intro: A while back I wrote a script to analyze an iTunes library and find your favorite artists, albums, etc. It works pretty well and I regularly use it to update my own analysis. Unfortunately, it generally takes a long time to run, which is sort of OK for me (because I just start it running and go do something else) but less good for people who are running the analysis through the web site.

So I'd like to make it run faster, and I have a number of ideas to do so.

Idea: There are two main parts to the system - parsing the iTunes Music Library.xml file into a database, and running the analysis on the database. First I'm focusing on the parsing part.

The first version of the parsing script uses Python's xml.dom.minidom package to completely parse the library file.

After profiling the first version by running python -m cProfile -o profiledata.oldway iTunesInfo.py "iTunes Music Library.xml", I see that the whole parsing process takes 114 seconds. The major parts of this are 60 seconds for the xml.dom.minidom.parse method and 46 seconds for the database operations. Note that this only leaves ~8 seconds for figuring out the track information - clearly this is not the bottleneck!

So I'd like to improve parsing speed. There are two basic kinds of XML parsers - what we're using now is a DOM or Document Object Model-style parser, which means that the parser reads the entire file in and returns a parsed structure containing all the data. (I remember writing a simple XML parser that did this as a project in COMP 314. Ah, memories...) The advantage to this method is that after the parsing is done, it's easy to traverse the DOM tree and find the data that you're interested in. The downside is that, well, it's slow. Also, the entire document has to be read into memory which means that your memory usage is proportional to the size of the file you're processing, which adds to the slowness and can lead to out of memory problems on huge files (although we weren't seeing that here).

The other basic kind of XML parser is known as SAX, or Simple API for XML. You provide callback functions that are called whenever the parser runs across the start of a tag, end of a tag, character data, and...that's it. Whatever processing you want to do you have to do in those callback functions. So if you're just, say, counting the number of <key> tags in a document this works really well. It's also much faster than the DOM-style parser, since it doesn't have to generate a giant tree structure. But doing the sorts of processing we're doing on the library file seems a bit more tricky.

Anyway, I take a stab at it, and after a bit end up with version 2 of the script. Notice that the logic in the Handler class is a bit twisted - we have to keep track of where we are in the document (so if things get out of order we'll have problems) and use a state-based system which is a bit brittle and unclear.

But how does it perform? The old version of the script ran in 114 seconds, and this version runs in 71 seconds for a ~60% increase in speed. But really, it's better than that, because the database operations still take around 50 seconds - if we subtract that from both we get 64 seconds versus 21 seconds which is a ~200% increase in the speed of the parsing.

Conclusion: This was a big success! Most of the time is now in the database layer, which I have some ideas for speeding up next time.

Source files:
- old script
- new script

0 comments

Games database
Mood: cheerful
Posted on 2009-06-27 20:20:00
Tags: projects programming
Words: 58

Just got done working on a database of the games we own. Not everything we own is in there, but most of it is, and I'll try to get the rest added soon. You can search based on number of players and the length of the game. Give it a shot and let me know what you think!

7 comments

in the merry month of may
Mood: distracted
Posted on 2009-05-22 14:12:00
Tags: gay projects links
Words: 155

My same-sex marriage map got some link love from Metafilter (thanks kernelm!) and somethingawful, oddly enough. And twitter, come to think of it. This added up to 225 hits over the past 3 days, which is a lot for me.

I'm not sure why it makes me so excited to see people linking to my stuff - there are no ads on the page, and presumably most people click on it, take a look, think "Neat!" (or "What a piece of crap!") and move on with their day. I guess it's a measure of fame or prominence, however slight.

The government just released data.gov which is a collection of parseable data from various government agencies. Unfortunately, there isn't a lot of too interesting stuff there yet, but there is a a contest to write a cool app. (the first entrant is FBI Fugitive Concentration!)

The Dallas Cowboy's new stadium has the world's largest HD video screen.

0 comments

A pretty picture for a Friday night
Mood: happy
Posted on 2009-04-24 23:16:00
Tags: pretty projects
Words: 59



Created with Pretty Pictures with genotype:

(div-clip (colorperlin 1362710210 278847481 1402125762 (add-wrap (abs (num 0.031681362818044456)) (sub-clip (cos (ccrgb (sin (atan-clip (rd (add-clip (add-wrap x (num 0.578092059228798)) x)))) y (num 0.23646468718646263))) (colorperlin 1502179640 1316738189 454935563 (neg (div-wrap x y)) (num 0.5078184951973896)))) x) (bwperlin 880129745 (abs (add-clip (sin x) (ccrgb y (sub-wrap (cos x) (neg (log-clip (num 0.05318551299931629)))) (num 0.751250719855975)))) y))

3 comments

this week is over, this week is through!
Mood: groovy
Music: Garbage - "When I Grow Up"
Posted on 2009-04-24 11:19:00
Tags: health projects politics
Words: 60

I updated Pretty Pictures to include perlin noise, as copperwolf suggested, and added a tuning option. The pictures, they are prettier now.

On the tooth front, I only took one Advil yesterday...maaaaaybe it's getting better by itself?

I'm getting awfully tired of reading National Review editorials in my morning Austin American-Statesman, like this one saying torture really isn't so bad.

0 comments

faster pretty pictures
Mood: cheerful
Posted on 2009-04-22 11:05:00
Tags: projects programming
Words: 56

Just finished rewriting the backend to Pretty Pictures from Genetic Algorithms in C++ (it used to be in Python). It's easy to forget how much faster C++ can be than Python - I even turned on an option by default to make all images color, which made things unacceptably slow in Python. It's fun to play with!

2 comments

marriage map: now with flashing!
Mood: happy
Posted on 2009-04-11 00:04:00
Tags: gay projects
Words: 31

It's true! You can click on the legend to make states that have that status blink.

Note to self: using fractional RGB values makes things silently not work. Don't do that.

0 comments

Same-sex marriage map!
Mood: proud
Posted on 2009-03-31 17:28:00
Tags: gay projects
Words: 93

The latest project I've been working on is this same-sex marriage map which shows the status of same-sex marriage and civil unions in the United States. It has pretty colors, and you can animate it to see how things have gone over time, and click on states to see their specific history.

Did you know that same-sex marriage isn't against the constitution in Wyoming? Or that in Virginia and Michigan, not only is same-sex marriage or civil unions against the constitution, but private contracts between people that do the same thing are too?

1 comment

weighty thoughts
Mood: content
Posted on 2009-03-23 10:00:00
Tags: weight projects links
Words: 279

This weekend I was proud of myself as my weight hit its lowest level since I started tracking it this time. (since then it's bounced back up a little, but I'm going to ignore that for now) So I thought it would be a good time to look back at my previous attempts at weight loss to see how well I did.

And I had forgotten that (last very short attempt notwithstanding) I've done much better than this in the past. Right after college I was a full 15 pounds lighter than I am now, and even an attempt a few years later I got down to 5 pounds below my current weight. I really can't decide if this should be encouraging (it is possible for me to weigh less!) or discouraging (I've been trying for 2.5 months and only lost 7 pounds!).

On Friday I discovered that GnuCash (which we use to do our finances) stores its data in an XML format! So I wrote a script to generate a report on how much we spend on various categories each month (GnuCash has some builtin facilities to do this, but I couldn't quite get it to do what I wanted). The report looks pretty but I don't feel comfortable posting it to the web, so you'll have to take my word for it.

Related: I found this awesome ColorBrewer which helps you pick a set of colors for maps or graphs or whatever. This is great news since I suck at picking colors!

The British military put some of their troops on LSD to see how it would affect them. The results are amusing but not really surprising.

2 comments

adieu genetic Mona Lisa
Mood: chipper
Music: The Lonely Island - "I'm on a Boat"
Posted on 2009-03-09 10:58:00
Tags: projects
Words: 260

That project I was working on? Yeah, not so much. After running it overnight, here's what I got:
The target imageA bunch of colored polygons
Um, so it seems to have figured out the image is mostly pink. Hooray?

Things I did learn:
- I originally tried crossover for breeding (specifically cut and splice) and that was just terrible. I think the algorithm really needs lots and lots of new polygons to be tried, and the weakness of crossover is that you're just combining existing ones.
- Originally I had a generation size of 500, and I implemented the image difference calculation in Python. This took around 500 seconds, which is way way way too long. After some optimizing, I got it down to around 280 seconds.

I had planned to wait until I had things working to write a C module for Python to do the difference, but I figured I couldn't really make progress until I could actually do the difference in a reasonable amount of time. After writing it in C (not even with MMX or anything) the total time went down to 1 second. Win!
- The best results seem to come from having a very small generation size and randomly mutating, which is pretty much what the original guy did.

Wanna see something else cool? Virgil did these: Books that make you dumb and Music that makes you dumb by correlating popular books and music at universities (found on Facebook) with average SAT scores. Obviously correlation is not causation but it's still pretty interesting. Guster, Ben Folds, and Radiohead fans should feel good, I suppose :-)

9 comments

the advantages of living in a medium-sized city
Mood: determined
Music: Foo Fighters - "Let It Die"
Posted on 2009-03-06 14:15:00
Tags: car projects
Words: 92

2.5 years ago: My car's check engine light turns on, I have to drive 40 miles early Saturday morning to get it checked out.

Today: My car's check engine light turns on, I drive 3 miles to drop it off during the middle of the day. (and hitch a ride back with destroyerj) Life is good!


My next project: This guy genetic algorithmed his way to a Mona Lisa with translucent polygons, and then this guy did something similar. I like images and especially genetic algorithms. Hopefully will have pretty results soon!

7 comments

links for everyone!
Mood: busy
Music: Official Lost Podcast
Posted on 2009-03-02 12:11:00
Tags: projects programming politics links
Words: 212

So I won the code bounty! I've really been enjoying writing Firefox extensions - it's easy to get started and fast to see results, and I'm starting to understand XUL better. Anyway, Kate (who offered the bounty) is going to polish it up and release it, at which point I might consider using it - it's convenient and is a better solution to passwords than a tiered password scheme.

I also got the $100 Amazon gift card, which I'm not sure what to do with. Is this good because I'm less materialistic or bad because I'm not excited about anything in particular at the moment?

Links!

- Happy Texas Independence Day!

- If you like crazy Obama theories, you'll like this Daily Show segment! Sometimes I wonder where they find these people...

- The government is bailing out AIG some more, but the real story is that AIG lost $62 billion in 3 months!

- In a recent study, only 29% of people supported gay marriage, but this number went up to 43% if assurances were made that no church would be required to perform gay marriages. Which is kind of weird, because no church is required to perform particular kinds of marriages today.

- Obama frames things as people versus corporations and industries rather than Republican versus Democrat.

4 comments

PasswordHash firefox extension!
Mood: happy
Posted on 2009-02-27 22:09:00
Tags: projects
Words: 14

In response to this code bounty, I give you PasswordHash! Firefox extension = good times.

6 comments

benchmark analyzer!
Mood: proud
Posted on 2009-02-24 10:20:00
Tags: projects work
Words: 164

So I wrote this benchmark analyzer to analyze benchmarks that have many parameters and try to figure out what the important ones are. To that end, it creates a decision tree in R, and also generates lots of boxplots to visualize the different parameters. Here's a sample report (with boring data). It also (somewhat cleverly) saves the original .csv file with the web page it generates, so you can save the page and send it to a colleague who can play with the options and rerun the analysis.

It occurred to me as I was prettying this up that most benchmarks don't involve lots of parameters, and so the probability that anyone else is going to find this useful is pretty low. I'm OK with that because
- it's useful to me right this very moment for work stuff
- I had fun writing it and learned some more about R
- pretty graphs!
- it was good to work on something other than whereslunch.org for a while

6 comments

releasing whereslunch.org into the wild
Mood: proud
Posted on 2009-01-21 10:31:00
Tags: whereslunch projects
Words: 17

Well, I'm asking for feedback on whereslunch.org now. I guess that means I'm about done with it!

11 comments

ThumbnailCopy firefox extension
Mood: happy
Posted on 2009-01-03 12:19:00
Tags: pictures projects programming
Words: 38

So I wrote this ThumbnailCopy extension (see Kurt's post) and in order for it to go public people have to register for an account there and review it. So...anyone mind doing that? :-)

Also, Texas Bowl pictures are up.

0 comments

A week of happy recap, and ismydatasignificant.com
Mood: okay
Posted on 2008-12-19 10:50:00
Tags: health math projects happiness
Words: 307

So I started the week of happy a week or so ago, and I'm pretty...happy with the results. It turned out to be kind of a tough week, what with the root canal and the painful aftermath, but focusing on the little things that make you happy during the day is good. I'm pretty sure I read somewhere that big changes in lifestyle (new bigger house, etc.) don't generally affect one's happiness level in the long run, but little things can if you focus on them. Or something like that.

Dentistry - I gave in and called this morning to make sure it was normal for the pain to last all week. The person I talked to told me to come in, and they took an X-ray and thank goodness everything looks fine. (if I had had to have like another root canal or something I would have been seriously sad) She said the pain can last a while, and as long as it's getting better (it is!) it's OK, and she gave me another prescription for Zipac(sp?) to take in case there's a lingering infection or something. (and she told me to switch to Advil instead of Tylenol for the inflammation) So, yayish!

Last night when I got home quijax was watching Mythbusters, which I don't get to see much but I like! One of the myths they were busting was that buttered toast tends to land buttered side down, and long story short they ended up dropping toast off of a building and observing. Anyway, the results were slightly more in favor of the toast landing buttered side up, and Jamie had a physics explanation (when you butter toast it gets indented) but their numbers weren't convincing. Long story short, I created ismydatasignificant.com for an easy chi-squared test for significance. If only I understood more statistics...

11 comments

what's on my mind
Mood: okay
Posted on 2008-11-11 10:11:00
Tags: whereslunch math projects
Words: 209

11 comments

where's lunch rolls on
Mood: awake
Posted on 2008-10-28 11:07:00
Tags: whereslunch projects links
Words: 108

Finished the adding of restaurants last night! Now I just need to add an editing interface and do some more testing...

A long lipdub of Thriller - impressive camerawork! I wish I could keep the camera that steady while I walked. (obviously I should have combined all my Thriller links into one post, but oh well)

A federally funded group is sponsoring a contest to find an engaged couple who hasn't had sex yet. No takers yet...

Election data: lots of people have already voted early. Deadline in TX is Friday, and I'd recommend doing it today or tomorrow because I bet Thursday and Friday will be quite busy...

5 comments

life keeps rolling on
Mood: irritated
Posted on 2008-10-27 14:14:00
Tags: whereslunch projects links
Words: 192

Thanks for responding to my where's lunch poll! As I had hoped, it motivated me to code some more this weekend. I implemented the suggested restaurants (although it's pretty weak right now since there's not a lot of data) and am about halfway done with the adding new restaurants thing. Once I get that done and put it through another round of testing (haven't tested on IE for a while...*shudder*) I'll post it for real!

We voted this weekend, and while it was a little anticlimactic at the time, I'm still pretty excited by it. We went to the Randall's at 183 and Braker - happily it was during the UT game so there was no line. Voted against Prop 2, for Obama and Noriega and Larry Joe and most of (but not all) the other Democrats. Election Day is only 8 days away!

As a followup to Austin Mayor Will Wynn dancing to Thriller, this weekend Austinites shattered the Guinness World record for the largest synchronized Thriller dance. The previous record was 140 (only 140?) and we got 881(!). Here's a video of the whole thing although it's of disappointingly low quality.

0 comments

politics, whereslunch, magazines: an entry in three parts
Mood: awake
Posted on 2008-10-24 10:19:00
Tags: whereslunch projects poll politics links
Words: 410

Politics:
Will Ferrell was on SNL last night as George W. Bush and it was pretty good (although maybe not "one of the best skits ever"). It still looks like Obama is way ahead. It warms my heart that someone who wants to investigate all members of Congress to see whether they're pro-American or not (hello, Joe McCarthy!) can suddenly find that most people won't stand for that crap. Obama makes a good fantasy football partner. Also, politics has always been sleazy - this is not a recent phenomenon.

Where's lunch:
This is my project for a google map of lunch places in Austin. It's kinda stalled out, because I haven't had a lot of free time and I can't decide what to do next. Right now you can view restaurants, rate them, leave comments, color the markers based on rating and some other things, and filter which markers are shown. (if you're interested in trying it out, drop me a line and I'll hook you up) Things I want to add at some point:
- letting people add restaurants themselves. This is kind of a pain to do, and raises some security issues and means I have to police the data to some extent.
- suggesting restaurants you might like based on other people's ratings. This isn't too hard to do but since there are few ratings in the system it won't be interesting for a while.
- add user profiles where you store where you work and you can limit lunch places by their estimated time for lunch (2 * travel time + time it takes to get food).
- putting ads on the site to make $$$
So, how interested would you theoretically be in these features?


Time vs. Newsweek:
When I was a kid, I had a penchant for stupid rivalries. We got the Houston Chronicle, a friend got the Houston Post so I immediately assumed the Chronicle was better, "rooted" for it, and was not exactly happy when the Post folded but I felt victorious. Same thing for Newsweek and Time - we got Newsweek and it was clearly better for no particular reason.

But now I'm wondering - maybe Time is the better magazine? I like some of the columnists Newsweek has (Fareed Zakaria, Anna Quindlen) but Time has Joe Klein, and I read a copy randomly this week and it was pretty interesting. I barely get through the magazines we have, so getting both is not a reasonable option. Which should I get?

7 comments

not in a talkative mood
Mood: non-talkative
Posted on 2008-06-24 10:32:00
Tags: pictures whereslunch projects
Words: 19

Pictures from weekend before last

Making progress on whereslunch. Writing Django code to write javascript gets confusing at times!

0 comments

target probabilities - done!
Mood: proud
Posted on 2008-06-04 08:59:00
Tags: math projects
Words: 32

Check it out! Or, if you're in a hurry, at least check out the awesome graph! (I spent a while coming up with a decent algorithm for label placement...)

Onward to...something else!

0 comments

people like talking to people they don't like
Mood: awake
Posted on 2008-06-02 13:04:00
Tags: math projects politics
Words: 165

According to a new Gallup poll, 67% of Americans believe the president should meet with the leaders of enemy countries, and 59% of Americans believe the president should meet with the president of Iran. (I guess that means 8% of Americans don't think Iran is an enemy?) That seems like a pretty firm rebuttal of McCain's attacks on Obama for wanting to do just that.

The Target probability page is really filling out now. I think I'm going to give up on justifying the counts for a mixed straight (a 4 card straight including cards of all 4 suits) which seems really really tough to count, and maybe the 3 card and 4 card straight flush of any suit (which are only really tough to count, but still more than I'm up for). After I calculate the numbers I'll do a graph and try to figure out what the dividing line is of which targets are worth which points, and see if any are "misclassified".

6 comments

an early midlife crisis?
Mood: busy
Posted on 2008-05-27 12:41:00
Tags: whereslunch essay xkcd math projects
Words: 159

Lately I've been feeling a lack of...something. A desire to build something great, some awesome website or something. I don't know where it's coming from and maybe it'll just fade away. Drive isn't bad, but it's kinda inconvenient. I just don't have a whole lot of time to devote to stuff like that.

Although, keep your eyes open for whereslunch.org after I finish my current project!

Speaking of which, last night in bed I finally figured out how to use inclusion-exclusion to calculate the number of 3 card straights, etc. The key is to make your sets "hands that don't include a green 0", "hands that don't include a green 1", etc., figure out the number of hands in the union of those sets and then take the complement. I guess it's been a while since I've done this combinatorics stuff. I also filled out some more entries in the table with explanations.

xkcd story in the NY Times!

0 comments

mathing it up after dark
Mood: cheerful
Posted on 2008-05-20 09:37:00
Tags: music math projects
Words: 218

I couldn't sleep last night, so I worked on the Target probabilities project. It was annoying me that the old version of the generated HTML (which was generated by LaTeX2HTML) looked kinda ugly - look how jagged the math graphics are! (especially compared with the beauty that is the generated .dvi file) So I tried a few different packages and settled on TeX4ht, which produced this much nicer looking page. Ah, that's better. (although why is that table floating to the right? grr)

I've been making slow progress on actually figuring out the numbers (3 card straights and straight flushes are the worst!) but I'm getting there. Getting the right numbers is a little more challenging.

Before that, we watched Citizen Kane (still good even though we weren't paying full attention) and I played some GTA IV, including a little multiplayer with destroyerj. It was tough without a headset and sucking at the game :-) I managed to flip the cop car we were driving in, and another time destroyerj was driving and I was shooting at something and I saw him jump out of the car. Had just enough time to wonder "Huh?" before we slammed into a stopped car and caught on fire :-)

Finally downloaded The Slip by Nine Inch Nails. So far: very good.

Game night tonight!

4 comments

post-WoW doldrums
Mood: excited
Posted on 2008-05-13 10:09:00
Tags: math projects worldofwarcraft
Words: 147

seem nonexistent. (anyone know a good antonym for "doldrums"?) Last night we bought some exciting new books, I bought GTA IV, got a graduation present for my sister, and committed to working on my new project. (calculating the probability of satisfying target cards in the game of Target)

It seems that my computer is under attack from a botnet. I pretty frequently get ssh requests coming from wildly different IP addresses trying out a dictionary list of user names. I'm not too worried about them guessing a username/password combo but the fact that they're hitting my box in general is a little scary. I've started turning off ssh at night but I do use it occasionally during the day...

things younger than mccain

If you're in to electoral predictions (for the general election), fivethirtyeight.com is a godsend. Probabilities that each candidate will win each state, cartograms, graphs...

3 comments

rattling around in my brain
Mood: pleased
Music: Run Lola Run Soundtrack - "Running One"
Posted on 2008-04-15 13:54:00
Tags: projects programming
Words: 54

I like being around people. I like having people over/visiting people. I'm sorry if I don't give out that impression.

watchdog.net launched today and it looks pretty neat - I volunteered my services. One of the founders wrote this essay on how to be more productive.

jQuery is now my default choice of JavaScript library.

0 comments

weekend shenanigans
Mood: peaceful
Posted on 2008-04-14 09:18:00
Tags: projects worldofwarcraft links
Words: 185

This weekend we ripped through Zul'Aman - first time for downing the bear boss in 20 minutes, downing the dragonhawk boss, downing the gauntlet and eagle boss (one-shot!), and downing the lynx boss. (I got a nice new chestpiece - now my frostbolts cast in 2.45 seconds!)

I've also been working on a new design for my frost mage DPS calculator - here's the new version versus the old version.

We also went to a few birthday parties and bought a new bed from Austin Discount Mattress, and took a very few pictures of said events. I'm going to take my camera places from now on instead of relying on my cameraphone - while it works in a pinch, the pictures are blurry and the color is always a bit off. I also learned that alcohol + hot tub is bad news for me, even after just one glass of wine. I got extremely woozy and lightheaded after a little while, and it all happened very fast. Anyway.

We need a Wikipedia for data - as an avid consumer of data, I heartily agree!

Strong Bad's Cool Game for Attractive People

6 comments

RIP webmajig
Mood: peaceful
Posted on 2008-04-07 11:00:00
Tags: projects links
Words: 168

So I've been working on this startup in my spare time with some people, and it died Saturday night for reasons I'm not going to go into. The consequences are I'll have a little more free time and I'm looking for a new project! More work on the WoW Frost Mage DPS calculator is a possibility, but it doesn't honestly sound that interesting. I'm working on rewriting my gift list site in Django, but that's not really catching my fancy either.

We watched a lot of Battlestar Galactica this weekend, including the Season 4 premiere. Here's an primer to catch you up, or alternatively a video version called "What the frak?". Here's an old feature on what the heck Donnie Darko was about, which I found interesting.

And if you like people talking fast (long live ze frank!), check out Zero Punctuation, which is a 4-5 minute weekly review of video games. The gay jokes get a little annoying, but honestly it's worth it because it's pretty hilarious.

2 comments

fridays - meh
Mood: okay
Music: U2 - "Where The Streets Have No Name"
Posted on 2008-03-07 13:26:00
Tags: projects politics links
Words: 181

For some reason Fridays haven't been very exciting to me lately. I am excited about the weekend though (smash bros!). I'll feel better when house crap is taken care of (Time Warner is supposedly coming out this afternoon so hopefully we'll have internet there at least...).

Nixon's plan to end Vietnam was to make the Russians think he was crazy enough to bomb them. That is rather frightening.

Map of Starbucks and Walmarts per capita. Vermont has the lowest combined total by far.

Why is it taking so long to total TX caucus results? (short answer: they're being sent in by mail!) Right now Obama's ahead 56-44 with 41% reporting, so it looks like Obama will end up with more total delegates from TX.

Has anyone used Processing? Not that I need another project, but you can do some neat stuff with it (examples) and there are a number of books about it. Maybe I'll check one out next time I'm at a bookstore.

This is an excellent example of being so close to a good approach but just missing it!

1 comment

searchable government spending!
Mood: impressed
Posted on 2008-02-22 15:40:00
Tags: projects politics
Words: 47

One of the things Obama mentioned last night was the bill he and Tom Coburn passed to provide a "Google for government", a searchable database of government spending. Well, it exists! Check out usaspending.gov - and it even has an API! I bet there's a project in this...

0 comments

Super Mario Bros. (board game) probability
Mood: busy
Posted on 2008-01-24 13:23:00
Tags: projects
Words: 9

Here are the results, complete with somewhat pretty graphs.

0 comments

puzzle pictures
Mood: excited
Posted on 2008-01-23 14:55:00
Tags: phone pictures projects work
Words: 266

I took pictures of the latest puzzles we've completed, whereby "we" I mean "David, Miriam, and sometimes me". The last two were taken with my new phone, which is why the color is pretty messed up. (I tried to fix it in iPhoto but I may have just made things worse) So: having a camera with me at all times: pretty neat, but I'll stick to the real camera when it's available.

Speaking of the new phone, it's pretty neat! The screen is much nicer than my old one, and it's my first clamshell phone, which I think I like. It has pretty good web access, although my one big complaint is that it doesn't let apps access the network, which means that I have to use the kinda crappy web version of Google Maps instead of the super awesome one(*) that runs on the phone.

I got my car's oil changed today, which revealed that the rat that used to live(**) in our garage was gnawing on my air filter. Luckily it didn't gnaw all the way through; I don't know what implications that would have, but I can't imagine they're good.

Work is going really well today - between that and a new project at home(***), I am really peppy!


(*) - I've never seen or used said version so it may not be super awesome.
(**) - "used to" because we haven't seen any signs of it in a while, so it seems likely it's gone. We're moving out soon anyway. Whee!
(***) - which I will post of the results of hopefully tomorrow. Thanks to destroyerj for the idea...

3 comments

role reversal, music recommendations
Mood: calm
Music: Carly Comando - "Everyday"
Posted on 2008-01-17 10:18:00
Tags: getflix music projects work
Words: 485

This week I've been in the odd position of being really excited about work and not so excited about non-work projects. Work has been going really well - a lot of the setup for my big project is done so I'm getting into the fun part. The non-work project of pulling down Netflix ratings and analyzing them is pretty similar to what I've done in the past, but has enough different parts that just aren't interesting to leave me totally unenthusiastic about working on it. But I've already done enough that I feel like I should finish. I'll put it on hiatus for a while.

We've been catching up on Simpsons episodes from the last few months with people, and as a result I've seen "Eternal Moonshine of the Simpson Mind" twice in the last week or so. It's a pretty good episode, but the part that struck me both times was the montage-like scene where it shows lots of pictures of Homer throughout his life to some hauntingly beautiful piano music. Anyway, djedi found the song, which is called "Everyday" by Carly Comando and I bought it last night - yay for Amazon MP3! The scene itself is based on Noah takes a photo of himself every day for 6 years which is pretty creepy in itself, although the music really amplifies that. Good stuff all around, and I feel bad I missed this all the way back in 2006.

Yesterday at lunch I was really happy because of a problem I had just solved, so I went out to Pars Deli, a greek place at 183 and Burnet. Unfortunately, the parking spots are deceptively thin, and so as I was pulling in I heard a noise and realized I hit the car parked next to me. After I parked and got out, the car looked like a mess, but I could brush off most of it. (dust from my bumper or something?) There was still a scratch that was very narrow but kind of long, and I wasn't quite sure what to do, and I was mad for having done it, so I just walked away to the deli. It didn't take long for my conscience to get the better of me and realize that that was a pretty stupid/selfish/horrible thing to do, so after I ordered I went back out there and left a short note with some paper I found in the car. Not my finest hour - "doing the right thing...eventually" isn't exactly high praise.

I have a few Best Buy gift cards and kinda prompted by that I'm looking for some new music. Definitely getting the new Radiohead album, other options include "Year Zero" by Nine Inch Nails, "Distortion" by The Magnetic Fields, maybe something by LCD Soundsystem ("Sound of Silver"?), maybe something by Arcade Fire. I am open to suggestions! (surprisingly hip suggestions stolen from the AV Club's best of 2007)

2 comments

getflix revamped again!
Mood: okay
Posted on 2007-12-19 10:23:00
Tags: getflix projects work
Words: 85

So I spent some time updating this script to pull your Netflix ratings and after redesigning the database tables a bit (which was fun since it isn't something I usually do) I think it's about done. Now I need to add in some analysis or something :-)

We had our release party for the new NI smart camera (get yours today!) yesterday at 300, a bowling place that feels clubby. (there were music videos playing on screens in front of lanes and such) It was fun.

0 comments

of phones and data
Mood: happy
Posted on 2007-12-12 13:26:00
Tags: phone projects
Words: 136

Phones: Like before, my cell phone's alarm isn't going on again, except this time I can't figure out how to fix it. I was planning on getting a new phone pretty soon anyway, but this may expedite the plans. My current top choices are the Samsung t439, Motorola RAZR V3, and maybe the Nokia 6133 - anyone have any opinions on these?

I found this awesome script to get your Netflix ratings last night and it's pretty cool. I may improve it some, throw in some analysis and make it my next project.

Speaking of backing up your personal data stored at an online site, LiveJournal was bought by SUP. It sounds like nothing big's going to change, but it might be a good chance to backup your LiveJournal with LJBackup. Shameless plug transmission over and out!

2 comments

weekend update
Mood: okay
Posted on 2007-12-02 18:43:00
Tags: movies music projects house
Words: 332

Friday started pretty crappily (as I noted), then we went to see Beowulf 3D with people. It was better than I expected - I guess 3D technology has come a ways since I last saw it. The movie was pretty typical action fare, except it was all motion capture CGI-y. It was pretty well done - you could tell most of the time that the characters weren't real actors, and some of the emotions didn't come through as well as they could have, but not bad.

The music was also surprisingly good - the few themes they used are pretty catchy, and the "main" song was sung during the end credits by Idina Menzel! (the original Elphaba in Wicked)

Saturday was spent being cranky for a large part of the day for various reasons. We did get to start Super Mario Galaxy which is a lot of fun, and hang out with wildrice13 in the evening. I worked on my arena rating graph which is coming along nicely - got some statistics to show. (did you know we are much better against teams with 0 mages than teams with 1 mage?) Next step is making it so you can choose criteria (say, matches where the opponents had at least one hunter and paladin that we played in Blade's Edge) and show statistics based on that. Should be fun.

Today was church and then house-hunting. After talking for a while about the way things work (helpful if a bit long), we looked at 6 houses. Unsurprisingly, our top choice was one that looked kinda OK on paper, and our #1 choice on paper was OK but not great (and is under contract anyway so we can't buy it). I took a ton of pictures that hopefully will help us remember the one we liked. It was pretty good but not super amazing or anything. I guess in the future we'll just get more listings from our agent and periodically look at more houses. It's a bit anticlimactic.

3 comments

iTunes rating analysis! Portal, TexRenFest.
Mood: uncomfortable
Posted on 2007-11-19 09:58:00
Tags: pictures music itunesanalysis projects links
Words: 322

I'm "officially" releasing the iTunes Rating Analysis after making a few last minute tweaks. Unfortunately you have to be at your home computer (or whatever computer your iPod is synced to) to use it, but you can at least see see my analysis, complete with fancy charts! Not being able to use it at work means it'll probably be significantly less popular than the WoW Frost Mage DPS calculator (currently the most popular page on my site by a factor of 2 or 3 or so), but that is OK.

We bought and played through Portal this weekend, which is a first person puzzle game and pretty darn fun (and pretty short). The end credits song is extremely cute and catchy, and it's sung by the passive-aggressive computer who's talking to you for the whole game. The song was written by Jonathan Coulton (here's his blog post about writing the song) who happens to have lots of music available for download! So I'll probably check that out this week. Edit: live version of Jonathan Coulton performing "Still Alive" - there's cake!

wildrice13, abstractseaweed, quijax, djedi and I went to the Renaissance Festival on Saturday. David and I were going to see the Bolton's renewal of vows (here are the few pictures that I took - we participated in the ceremony so I didn't want to interrupt too much :-) ) which went well except for their not letting us do it at the festival proper (the words used were "unauthorized wedding" which I found amusing), so we went out to the parking lot and had a nice ceremony. The trip back wasn't so great - we got stuck in the parking lot as everyone else was leaving and then there was an accident 10-15 cars in front of us just as we were about to get to 290, so we didn't moved for half an hour or so. Ugh.

I slept on my neck funny. It hurts.

5 comments

arena rating graph
Mood: bouncy
Posted on 2007-11-09 14:51:00
Tags: netflixprize math projects worldofwarcraft
Words: 234

Went out to lunch today with WoW people and we talked about this neat idea for an Arena rating graph. So you start at a 1500 rating and every match you play you gain or lose 1-29 points, and it would be neat to see the progression of that as the season goes on. Also nice to see what composition of teams we're good against and which we're not, and the ratings of the teams we win or lose to. I'm having to try really hard not to just start writing down ideas here since it's not work-related :-)

My first thought was to do the graph in Flex, but I forgot that Flex Charting is a separate package that costs money. So I did some research and there are lots of options for this sort of thing (found this excellent article on interactive charts and graphs via del.icio.us). AmCharts looks like the best option, with FusionCharts Free close behind. I'll have to download and try them out at home; of course the hard part will be figuring out how to display all that data in a useful way.

Here's an excellent article on how Simon Fink's team got into the top 10 for the Netflix Prize - lots of juicy juicy math. Makes me want to get back into that sort of thing, which would make three active projects at once, which is too much.

2 comments

iTunes ratings analysis - what looks nicer?
Mood: loved
Posted on 2007-11-05 10:37:00
Tags: pictures itunesanalysis projects poll
Words: 81

quijax and Todd and djedi and I went to Enchanted Rock on Saturday - here are pictures. I am sore and out of shape, but it was a fun hike.

My next project will be smallish - sprucing up my iTunes ratings analysis and letting people do it on their iTunes libraries. I'm starting with the sprucing up part - here's version 1 and version 2 (for reference, here's version 3 which is the same as version 1 except with darker alternating background colors):

7 comments

clue solver done!
Mood: proud
Posted on 2007-10-28 16:59:00
Tags: projects cluesolver
Words: 185

So we played another game of Clue yesterday with wildrice13 and abstractseaweed and despite the fact that the clue solver declares it inconsistent, I'm going to be optimistic and assume I wrote something down. Also fixed a few bugs and added a special case for a weird situation that came up. (I knew David had Conservatory or Ms. White, and Andrew had Conservatory or Ms. White, so no one else can have either of those cards) Thinks like that would have made using first-order logic or propositional logic nicer (since it would have presumably taken care of them automatically), but oh well.

Thus, I am declaring the Clue Solver done! Put a few example games up so you can load them and see how they work. (and the pretty colors on the simulation tab!) Been working on it for a while so it's nice to have it done. I'll take a little while off (what with starting work and all) and see what I feel like doing next. I do feel like I got a decent handle on the Google Web Toolkit, so that's nice.

3 comments

clue solver!
Mood: nervous
Posted on 2007-08-21 13:36:00
Tags: projects cluesolver
Words: 448

When I was growing up1, I didn't play Clue much. There was that game where we drew three random cards for the solution and ended up with two weapons or something like that. We never played with the rule that if you suggested someone they moved into your room, or that your suggestion had to include the room you were in (I think). And I remember at least one game where everyone showed you a card instead of just one person. My strategy was always to simply mark off cards I had seen, which was not terribly successful when I started playing with friends who played with the "real" rules.

I finally figured out (or refigured out? maybe I knew this before? my memory - unreliable...) a better strategy on this last visit to Austin, which is to use the information about if other people have certain cards or not. So for every suggestion that someone makes, when someone passes I write down on each of those three cards that that person doesn't have them, and when someone shows a card I write down that they have one of those three cards, and using that information you can learn a lot. The last game I played I didn't win, but I was pretty close to knowing what the solution was.

So, I thought it would be a fun project to write a Clue solver - that is, something on which you indicate the information you see (Mary made the following suggestion and it got passed around until John showed a card) and it deduces everything it can from that.

My current approach is to specify rules in first-order logic and use some sample code from my old AI book (AIMA) to figure things out. Unfortunately, the rules don't lead to definite clauses, so I think forward chaining is out. I've been trying to use resolution, but it doesn't work right and is slow. Maybe I'll try backward-chaining instead. If I have to I'll break down and write Clue-specific code to figure things out but it would be really awesome if I can get it working just by specifying the correct rules.

If you're following along at home in your copy of AIMA, I've been reading a lot of Chapter 9. :-)

I found this class project to do something similar (here's the project description (pdf)) which has a good explanation of resolution and the rule-based approach, although they seem to be using propositional logic and not first-order logic. Which might be what it takes to make it work in a reasonable amount of time.

----
1 - I fully expect wonderjess to correct me here since my memory is pretty horrible. (back)

7 comments

Haskell wearing me down
Mood: worried
Posted on 2007-08-15 10:57:00
Tags: math haskell projects
Words: 344

but first, math!

From last time - the answer is that they're not symmetric. If a=10, b=11, c=20, then C enters A's stall at time 10 and you get to enter B's stall at time 11. However, if a=20, b=11, c=10, then C enters B's stall at time 11 and you have to hold it until time 20. More formally, the time you have to wait is

min(min(a,b) + c, max(a,b))

Using the formulas min(a,b) = (a+b-|a-b|)/2 and max(a,b) = (a+b+|a-b|)/2, this expression simplifies down to (a+b+c-|c-|a-b||)/2, which is clearly not symmetric in a and c. I'd be interested to see how this formula works for more people and stalls - it seems to blow up pretty quickly, although it would be easy to write a program to calculate it. I have a gut feeling that you want the fastest people earlier in the line (ideally if there are n stalls the n-1 slowest people will be all in their stalls when you get to go in, so you don't have to wait for them) but proving that seems rather tricky.

When will LJ get inline LaTeX?? :-)

Good article about risk management and terrorism (via schneier)

I'm making good progress rewriting the Pretty Pictures picture generator in Haskell - it spits out valid PPM images that look correct for simple cases, but it needs more testing. (and I need to see if browsers support PPM natively or if I have to convert to PNG which would be a pain) I'm not enjoying it a whole lot, though. The idea of learning Haskell was to expand my mind and change the way I programmed, and I guess it has done that some, but I always feel handcuffed when I sit down and try to do seemingly easy things, like write out a raw PNG file. (got about halfway there and said forget it)

To antidote this (yes, it's a verb!) I think my next project will be less challenging technically and more interesting, like involving lots of neat data (census? past wars?) and some sort of neat visualization. (R?) We'll see.

3 comments

"entreprenurial" is hard to spell
Mood: jealous
Posted on 2007-07-20 15:28:00
Tags: projects
Words: 99

A coworker of mine is leaving to Google, which has the unintended consequence of making me feel jealous. And I hate feeling jealous.

So I guess what that means is I want a new project. I could rewrite the image-generating part of Pretty Pictures in something faster than Python (C++? D?), but that's not really exciting. Things with collaborative filtering or genetic algorithms are neat. I have a list of ideas at home that I guess I'll look at.

Or I could deal with my emotions, but that sounds a lot harder.

Also, did everyone give up on twitter?

10 comments

new project: congress ratings
Mood: excited
Posted on 2007-03-19 18:48:00
Tags: haskell projects programming congressvotes
Words: 421

So my next project is fun and neat. I can't remember how exactly I got here, but I noticed that all roll-call votes in congress are accessable in a handy XML format (Here's an example vote - note that the page you see is that XML file after being processed with an XSLT stylesheet, so you'll have to hit View Source to see the raw data). My idea (a little vague at this point) is to take all of the votes, and then figure out which issues I care about and which way I would have voted, and then "rate" representatives as to how closely their votes align with mine. This is a little grand in scope.

Anyway, it took me a while to get HaXml (a Haskell XML parser) installed, because I kept not being able to compile it from source for various stupid reasons. Anyway, I finally figured out that it was in fact in Debian in the libghc6-haxml-dev package, which made my life about 5 times easier.

So I saved a sample vote and have it parsing and I'm extracting simple data from it, which is exciting! I have a few questions, though: does anyone know the answer to these?

- I have these two functions:

nothing :: Maybe a -> Bool
nothing Nothing = True
nothing (Just _) = False

findElementContent :: String -> Content -> Maybe Element
findElementContent target (CElem el) = findElement target el
findElementContent target _ = Nothing

findElementContents :: String -> [Content] -> Maybe Element
findElementContents _ [] = Nothing
findElementContents target (c:cs) = if (nothing (findElementContent target c))
then findElementContents target cs
else findElementContent target c

findElementContent takes in a target tag and some data (Content), and returns the element that has that tag name if it exists, and Nothing otherwise. (findElementContents is just a helper function to do the same thing with a list of Content) But findElementContents looks pretty ugly to me - what I want it to do is return findElementContent target c if that isn't Nothing, and otherwise recur on the rest of the list. The code is correct, but is it inefficient since I'm calling findElementContent target c twice? My limited understanding says no, since findElementContent is referentially transparent since it doesn't use monads (i.e. if you call it again with the same inputs it will return the same thing, always), but I'm not entirely clear on this.

- As I mentioned, findElementContents seems a little inelegant - is there a better way to do this? Is there some builtin nothing that I couldn't find?

Resources I've been using:
- HaXml reference
- standard library reference, including the Prelude

2 comments

project.begin()
Mood: excited
Posted on 2006-11-07 08:23:00
Tags: ljbackup projects
Words: 180

Vote today!!

Thanks a lot for y'all's comments on my post yesterday! I've decided to work on the LJ backup thing. For some reason I sorta half-started on it a while ago and was convinced that it was going to be really hard. Last night I spent most of the evening coding (djedi wanted to make sure I was actually enjoying myself and not just doing it because I felt I needed to be working, but I really do enjoy coding, especially at the beginning of a project!) and got to the point where I can fetch all comments to all of my posts and I can fetch my posts, so that's a lot of the hard part. I'm even displaying it decently, although I need to work on comment threading and prettification and such. I can even do neat statistics - 43 people have ever commented on my journal! (42 real users, 1 generic anonymous user)

Since I have to wait at home this afternoon for the cable people to come, I'm hoping on getting more stuff done as well :-)

0 comments

between projects
Mood: contemplative
Posted on 2006-11-06 08:59:00
Tags: netflixprize projects proandcon
Words: 666

Vote tomorrow!

(I've been kinda unhappy and antsy the last few days, so the below is as much for myself as for anyone else...)
So I'm generally happiest when I have a side project that I'm working on outside of work, especially when work stuff is boring (i.e. now). I have been working on the Netflix Prize, but as of this evening (when my last run finishes and produces the same unimpressive results) I'll be done. Things that made it a good project:

- I used C++, which I haven't used in a little while
- The whole contest framework gave me a way to quantify how well the project was going
- Using real data with real movies is always neat

Not so good things:
- Because there was so much data, the nature of the project was to work on something for a few minutes or an hour and then leave it running for days. This meant at any given point in time I probably couldn't work on the project, and my computer was tied up so doing other things was painful.
- I like projects that other people can use (vanity?), but there's not much one can use about this one. I'm thinking of putting up a related movies finder but that might violate the TOS of the contest.
- Because people are so good it became pretty darn hard to get on the leaderboard.
- It was fun to play around with algorithms, but apparently you need a good idea or to do a lot of research to find a good one, which I didn't have/do.

Anyway, so like I said I'm putting this project to bed this evening. My question is, what will I work on next? I have some ideas stored up but I'm not thrilled with any of them.

LiveJournal backup - provide some way to backup all LJ posts and comments to those posts.
Minus: There's already a decent way to do this, except for comments.
Plus: This would be potentially useful for myself and others.
Minus: I have a hard time figuring what outputs to produce: one giant page with tons of entries and comments? A zip file with pages for each month?
Minus: Because of friends-locked posts, you would only want to view it on your own computer (and not publish it or anything) unless I somehow tied LJ users in with viewers of the page, which is not going to happen.
Plus: Ooh, I could provide some interesting statistics on moods and such. Or even some kind of randomish text from your LJ posts. Maybe.

Some kind of World of Warcraft mod
Plus: I've already done this, so I have the basics down at least.
Minus: I've already done this so it wouldn't be as interesting.
Minus: I don't have an idea of what kind of mod would be useful - there are lots of them out there already.
Minus: Developing for WoW is kind of a pain, since you have to open WoW a lot and develop at the same time, which is kinda slow.
Minus: I'm already spending a lot of free time in WoW...on the one hand this means I might be using whatever mod I make a lot, but I'd also prefer a non-WoW-related project.

Adding annotations to the baseball Win Expectancy Finder graph.
Minus: This project already exists, so it's less interesting to add little features to it.
Minus: It's not baseball season anymore, making this seem less appealing.
Minus: The main problem is coming up with a placement algorithm for annotations so they don't run into each other or the graph, which sounds pretty hard.

Add some kind of Getting Things Done style tickler list to my todo list
Plus: I kinda use the todo list, and working on it might be more incentive for me to use it again.
Minus: ...but I don't really use Getting Things Done stuff anymore. Without that, the todo list is pretty good as it is.
Minus: Again, not a new project.

13 comments

This backup was done by LJBackup.