Building a Better Budgee #1 – The Beginning

Budgee was a simple personal finance application I wrote for the first iPhone. It went live in October 2008. It was one of the first 10,000 apps1 in the Apple App Store.

Budgee v1.0

Budgee v1.0 App Icon & Slogan

The premise was simple. First, you defined a list of budget categories. Then, you set a target budget amount for those categories. After that, you entered your actual expenses as they happened.

As you depleted the money in a category, it let you know how much you had left in your budget. It also supported exporting transactions2, used regional currency formats, and many simultaneous budgets.

Budgee v1.0's Main Screen

Budgee v1.0’s Main Screen

Scratching an Itch

Budgee was an app I wanted since I bought my first iPhone. When I saw the WWDC keynote announcing the “real” app store3, I knew I had to build it.

I bought my first Mac, a black MacBook, and got to work. It took a while to build. Objective-C was surprisingly different from any language I had used before. After a few months, I finished the app, submitted it to the App Store, and away things went.

Budgee was a big success to me. It didn’t make a ton of money, but it did more than pay for my MacBook. On top of that, it was a great experience building & supporting my app. It was fantastic to get emails from people who loved the app.

After 11 updates over 2 years, app usage trailed off as the app store grew. The amount of money I made from the app wasn’t enough to justify the effort to keep maintaining it. It cost $1.99 and it was just a one time charge.

If it sold a ton, the story would be different, but in the end, it only sold around 1500 copies. The app needed more time for development & support than I had.

In July 2010, the last update went live in the store. Even though it didn’t look modern anymore, the app was still used, so I wanted to leave the app as long as I could. It reached a point that iOS had advanced so far, that the app simply didn’t work on new devices.

The effort required to update it was monumental, so I pulled the app from the store in September 2013.

A New Beginning

In the years since, I’ve learned a lot. I know more about software development, personal finance, and business. I’ve also started a family. All these things brought new thoughts & perspectives that didn’t exist for me back in the early days.

I’ve also tried nearly every budgeting/personal finance tool out there. The problem is, none of them help me manage my money the way I want it managed. There are plenty of great apps4 that may or may not work for you, but at the end of the day, they just don’t work for me.

Building a new, more modern Budgee has been on my mind since 2010. I’ve had so many things going on in my personal and professional life that it just didn’t happen. I finally have enough time, resources, perspective, and desire. It’s time to begin the process of building the Budgee system I’ve always wanted.

My plan is to create a series of blog posts documenting my progress as I go. I enjoy reading dev blogs of programmers I admire. I thought this will be a nice way to give back while also creating some level of accountability. Even if no one else ever reads this, I know I’ll enjoy looking back on it one day.

It’s going to take some time, but this will be worth it!

UPDATE: 1/31/2016

Not too long after I posted this, I discovered that the app I’ve been using for the last several years (YNAB) was going to be updated with a web based version and lots of new features. The new version of YNAB launched about a month ago and it includes nearly all the features I wanted for a new version of Budgee. One of the features the desktop YNAB didn’t have that I really wanted was the ability to schedule transactions and then see those future transaction totals for a given category while budgeting for a given month. The schedule transactions do show in the budget view in the new YNAB and everything else works very similarly to what I envisioned for Budgee.

Due to this, I have decided not to continue Budgee development at this time. If it turns out that YNAB won’t work for me longer term, I’ll revisit this decision. So far, the new YNAB seems like a winner.


  1. For reference, there are now about 1.5 million apps in the App Store. 
  2. It used a very crude built-in HTTP server that generated a CSV file for download. Apple supports much better approaches these days. 
  3. The original plan was for everyone to simply build web apps that can install an icon on the device’s home screen and the only native apps you’d have on the phone were from Apple. 
  4. You Need A Budget (YNAB) and EveryDollar are two in particular that are excellent choices. YNAB is as I’ve found to my “perfect” app, but it’s still missing a lot. 

My Thoughts on the Surface Pro

Now that I’ve had a week and a half of real world use with the Surface Pro, I thought I’d share my observations.

The TL;DR version is that I feel like The Verge’s review was spot on and at the end of the day, the device had too many compromises for me to justify the price tag. It’s a well made device with lots of potential, but that potential isn’t realized today.

My Priorities

I had (and loved) my Acer convertible TabletPC back in 2004/2005. It was perfect for college when combined with OneNote. I really want something just as useful today for taking notes, doing some diagraming/whiteboarding, basic sketching, and photo editing. The pen was great back then, but multi touch was missing. A pen combined with multi touch technology seems like it would make an excellent note taking device and that was my main driver with the Surface Pro.

As a secondary benefit, it would be nice to have a Windows development machine that is portable, yet powerful enough to handle any tasks I need. I have a Windows 8 desktop and I have a 17” MacBook Pro that has a Windows 8 boot camp partition, but neither of those are really as portable as I would want. I’m mostly an iOS developer these days, so this feature isn’t critical, but it’s certainly a nice to have.

Finally, it would be great if I could play most of my Steam games (even on low settings). I’m not usually at my Windows desktop most of the day, but it’d be nice to be able to pop in and play a little Borderlands or Diablo 3 without having to be tied to my office machine. This is a very low priority, but I’d be another nice to have.

Initial Impression

The Surface Pro looks and feels really nice. The build quality is excellent. The pen is the only component that feels a little cheaper, but it’s a light tube of shiny black plastic compared to the solid slab of metal and glass. The screen is bright, vibrant, and clear. I’m not a fan of the 16:9 aspect ratio, but most people don’t seem to mind it. The out of the box setup is fast and simple – I think it actually had less setup steps than my iPad which is impressive from Microsoft.

The kickstand is solid and the USB 3.0 port is blazing fast (if you have a good USB drive). The kickstand is nice and works excellently when propping the device on the counter to watch Netflix while cooking. It works great in laptop mode on a solid surface, but it’s hit or miss when using it as a laptop on your lap. It works, but I had to keep fiddling with it to get it to balance properly and to get the screen at a good viewing angle.

Overall, the Surface Pro is a very impressive package.

Type Cover

Since I knew I’d be using it as a laptop whenever I wasn’t taking notes, I picked up a Type Cover. The Type Cover is one of the best tablet keyboards I’ve used. It took about an hour for me to adjust to it, but after that, it felt great. The magnetic connector is very secure and I had no concerns about it sliding off in my backpack like my iPad’s Logitech Ultra-thin Keyboard does. The trackpad area is very responsive, but it’s so small, it’s unusable unless you’re in a pinch.

The big downside is that the keyboard has some serious responsiveness issues if you use it on your lap or any other non-solid surface. I would randomly experience ignored key-presses – not just once or twice, but nearly half the time. I’d have to press the key 3 or 4 times to get it to register the key press. The keyboard was barely flexed, but I never experienced this when using it on a solid surface.

At $130 on top of the Surface Pro’s price, it’s not a cheap cover at all, but to me, this is a must have if you buy a Surface or Surface Pro and expect to do any decent amount of typing.

The Pen

The pen is really well done. It’s Wacom tech, which means it’s very accurate and there is zero noticeable lag between pen movement and when the “ink” shows up on the screen. It has great pressure sensitivity and feels like a ballpoint pen in your hand. I really wish Microsoft included a slot for the pen.

The pen magnetically connects to the device via the power port. That means you have to leave your pen on the table while you charge the Surface Pro. I was constantly checking the pen when I was carrying the tablet to meetings – the connector magnets are strong, but depending on how you hold the tablet, it’s really easy to knock the pen off and never notice it’s lost. This was particularly a problem for me when I would pick the tablet up. The pen never detached while it my backpack, but it would nearly always detach when I picked up the tablet from the side (usually when I was pulling it out of my backpack).

In use, the pen worked great – particularly with OneNote 2013. I wish there was a little texture on the screen of the Surface Pro so there was a little bit of resistance, but I’m sure that would impact the quality of the display in other ways. The pen is every bit as good as I was expecting.

Tablet Mode

I know it’s not a big surprise to anyone, but there is still no ecosystem of Windows 8 touch interface apps. I found a few third party apps (Stacks for Instapaper & Nextgen Reader come to mind) that were nice. The Netflix app was excellent – it’s probably the best implementation of Netflix I’ve seen on any device. Outside of that, I found the app selection to be really, really lacking.

Microsoft has plenty of their own apps for calendaring, email, address book, etc. All of these apps work, but they are about as basic as you can get. I’m actually OK with basic for the most part, but Microsoft decided not to support CardDAV and CalDAV protocols in the contacts app and calendar app respectively. That essentially means I can’t access any of my Google contact or calendar data out of the box. It turns out, you can go to live.com and in an obscure mean, you can link your Google contacts to your live.com account and gain access that way. For calendaring, you can import an iCal feed from the live.com site, but it’s a one way, one time import which is pretty much pointless for me since I can’t see my current Google calendar let alone update it.

When I was using the tablet mode apps, the charms and multitouch gestures work well for the most part. The charms make a heck of a lot more sense when using them with touch vs a mouse on my Windows 8 desktop. I love the share charm. It makes a ton of sense when apps implement it properly and I genuinely hope something like this is implemented on iOS and Android in the future. I had some trouble moving tiles on the desktop – sometimes it would think I’m was trying to scroll, sometimes it would select the tile, and sometimes it would move the tile. Overall, the experience using the touch interface was very positive, but there just aren’t any apps to use there and Microsoft needs to step up their game with their built-in apps – both in features and interoperability with other services (specifically Google accounts).

One day in the future, the tablet experience on a Windows 8 device may be excellent. The hardware is very responsive overall, but the software needs polish. The biggest deal breaker though is that beyond Kindle, Netflix, and a few other apps, you simply can’t find any apps worth using in tablet mode.

Desktop Mode

The desktop runs extremely smoothly and everything is very snappy thanks to the SSD. I loaded Visual Studio, SQL Server, Resharper, Lightroom, Sketchbook Pro, Chrome, and several other apps that are essential for me. I also installed the Office 365 trial – mainly because I wanted OneNote 2013.

Since Windows doesn’t natively support high density displays and the Surface Pro has a high density display, Windows is set by default to scale the desktop by 150%. The impact of this is that everything on the screen is magnified so icons are reasonably touchable and most system text (menu bars, etc) is readable. In this mode, all of the Microsoft developed apps run great and look really sharp.

Third party apps, (Chrome most notably), were a blur fest. Text was muddy looking and touch detection seemed really flaky. Links wouldn’t activate when I tapped them and Chrome generally acted funny. Sketchbook Pro worked well, particularly with the pen, but it doesn’t support pinch to zoom – you still have to get a zoom tool from the menu bar if you want to pan & zoom and that’s unfortunate. Lightroom ran fine, but it was almost impossible to use the interface via touch. Using a mouse or the Type Cover’s touchpad generally worked fine with these apps even with scaling turned on. I know the Surface Pro is new, but Windows 8’s touch features have been available to developers for quite a while – so I’m curious if third party support will improve.

When I connected my external monitor via mini DisplayPort, everything was blurry – scaling was applied to it as well even though it didn’t need the scaling. I disabled desktop scaling and that solved the external monitor issues and made Chrome look & act normal, but that caused all system text and icons to become super tiny. Using desktop mode with scaling turned off was quite a challenge – ideally, third party apps will be updated to properly work with scaling turned on and to incorporate the new touch API, but I didn’t find a single non-Microsoft app that I use which did that today.

Gaming

For my purposes, this wasn’t critical at all, but I wanted to give it a try so I installed Borderlands 2 and Diablo 3. Borderlands 2 never really ran properly for me. I couldn’t actually select any of the menu items once I got to the game’s main menu. I think this had to do with the desktop scaling, but I didn’t try again after I disabled scaling. The main menu was having trouble rendering at a reasonable rate, so I didn’t have high hopes.

Diablo 3 actually ran nicely. I used a Microsoft Wedge Touch mouse instead of the trackpad on the Type Cover and it was definitely playable. At 1080p, the game stuttered quite a bit even with no enemies on the screen, but dropping the resolution to 720p made things run smoothly. The Surface Pro definitely got very, very warm to the touch (particularly on the top of the unit) and the fans kicked into high gear, but they were still much more quiet than my MacBook Pro’s fans. Diablo looked really nice on the display even though it wasn’t running at full resolution.

Overall Thoughts

My main use case was taking notes and sketches. When doing that, the tablet works well. Navigating OneNote 2013 could be much better though. It’s still a desktop interface designed for a mouse (e.g. you still open up the ribbon menu to get different pen colors, line widths, etc), but once you’re just writing (and not creating a new page, changing pen color, etc) things are good.

The most disappointing thing is that OneNote 2013 feels very much like the original version of OneNote I used on my original TabletPC. As far as ink support and handwriting recognition, that’s a good thing, but it’s very disappointing to see the interface wasn’t updated for touch use. It’s also worth noting that the OneNote app for iOS can’t display ink – it just displays “[ink]” anywhere you wrote with the pen…making my notes useless there. The OneNote web interface does display ink, but my ink was almost unreadable on the web. Ink that was totally readable and regular size on the tablet looked 2x as large on the web and there was no way to zoom out.

I’m really disappointed with the support for 3rd party apps. Specifically Sketchbook Pro 6 and Lightroom 4. Sketchbook handles the pen just fine, but I was really expecting to be able to use pan & zoom via touch since that’s available on every other platform. Lightroom was disappointing – it ran very fast, but without a mouse, it just wasn’t usable on the Surface Pro’s screen. I realize these issues aren’t within Microsoft’s control, but they they definitely impact the value I received from Microsoft’s platform.

My biggest worry is the battery life. I get 3-4 hours with reasonably light use. The battery connector is proprietary and needs to be plugged into the wall – you won’t be charging this off of another PC’s USB port. The power brick is smallish, but it’s something that has to stay in my backpack constantly. If I forget to charge the tablet overnight, there is a good chance I’ll have to plug it up as soon as I get to the office to make sure I have enough juice to make it through a few hour long meetings. I’m used to having my iPad battery last days without worrying about it and for something I need regularly, I really wish I had more than 3-4 hours of power…or at the very least, I wish I could trickle charge it off other nearby computers.

The tablet mode has tons of potential and was a nice experience, but until there are many, many more quality apps, it’s an experience that no one will see. The desktop mode is functional, but I don’t understand why the device has a high density display when Windows clearly isn’t meant to run on one and it’s extremely obvious as soon as any non-Microsoft app is launched.

At the end of the day, I can’t see myself reaching for the Surface Pro instead of my iPad when I have tablet type tasks to do. I also can’t see myself reaching for it over my MacBook Pro when I’m at home and need to do more desktop type tasks. It’s definitely the best device I have for note taking, but due to the really limited battery and several smaller issues, I don’t feel that I can count on it always being ready to go when I need it for note taking.

I’m not set on having one single device that can support all three of these scenarios, so I’m ok using three different devices. The catch is my iPad is really great at being a tablet, my MacBook Pro is really great at being a Mac/PC, but my Surface Pro is only moderately good at being a note taking device outside of the excellent pen support – it’s just a very clunky, disjointed experience and I’m not sure I want to deal with that. There are many good ideas spread across the hardware and software of the Surface Pro, but I don’t feel Microsoft has found a way to combine those pockets of good ideas into a compellingly useful product just yet.

Cat Feeder Project [Part 2]

I spent some time this weekend working on the hardware to provide cooling for the cat feeder. The goal is to get the cat feeder to the same temperatures as a refrigerator. I want to keep the unit as trouble free and cost effective as possible, so I don’t want to go the compressor route. The option I’m prototyping is using a thermoelectric cooling (TEC) chip (known as a Peltier element). If you apply power to a TEC, it will cool on one side and heat on another. If you’re trying to cool, you have to remove the heat from the hot side of the TEC with an external heatsink. TECs are very inefficient, but they should be able to do exactly what I need for this project.

The Prototype Setup

Components

Assembly

I used a few push buttons on the breadboard next the to Arduino so I could control the power to the heatsink’s fan and the TEC. The Arudino’s PWM output is sent to the two MOSFETs which varies the amount of current sent to the fan & TEC. The fan & TEC are both connected to the 12V 1A regulated power supply via the Adafruit breadboard power supply. I originally tried to run the TEC at a lower voltage than 12V by using the adjustable power supply, but it turned out to be easier to just hook both items directly to the 12V supply.

Results

The power supply can’t provide enough power to run the TEC with the MOSFET wide open. One the TEC starts drawing a reasonable amount of power, the fan starts slowing down and evetually, the TEC will draw so much current that everything else shuts down. I was able to run the fan with the MOSFET wide open and the TEC MOSFET set to about 67% power. At those settings, the fan runs (at less than full speed) and the TEC is able to cool quite reasonably. The TEC MOSFET started getting quite hot, so I added a passive heatsink on there.

The at the end of the day, I was able to use the settings above to take the TEC from 75F down to 38F in just a few seconds. I ran the whole setup in this configuration for about 5 minutes with no issues. Overall, I’m very happy to get near freezing temperatures with the relatively small power supply.

Next Steps

I want to get a bigger power supply. I’d really like to get an adjustable lab power supply so I could try different amounts of current to see what exactly I need, but I’m thinking I’ll try a 12V 2A power supply. I need to see how much current I can run through the jumper wires if I upgrade the power. The current test didn’t get the wires hot, but I’m not sure how much more current they’ll take.

At this point, I just need to get the TEC a little cooler while getting the fan to run faster on the heatsink. I’m not too worried about the hinksink though…it never got that hot even with the fan running slower. I’d like to build a small enclosure so I can experiment with cooling air and not just the surface of the TEC. This will probably mean I end up building a styrofoam box (or buying one) and mounting a heatsink & fan on the cold side of the TEC to distribute the cooling power.