New concept for approaching Mac application development

September 3rd, 2008

I’ve been enjoying Plex as a full-screen media center, but I haven’t been completely happy with its music browsing capabilities.  I don’t like the way iTunes/Front Row work with external drives, so I’ve been browsing for some other alternatives.  Coverflow has sold out and MediaCentral is now a pay product.  In the past I’ve tried out some “Internet TV” apps like Miro and Xcast, and I’ve tried several media players: Amarok, Cog and others.  But the problem that all of these projects have is that they don’t share their data.  Every media player builds it’s own data library specific to its own interface.

Which got me thinking about m own project Time Tracker.  It’s been getting a lot of user comments recently requesting new features and modifications to the interface.  Some are unquestionably great ideas, many of which I’ve long been planning to implement.  But other requests are very specific to one user’s unique type of use, and some requests are simply a matter of preference.

I’d like to see all users satisfied, but more than that, I wish it were simple to build or customize a user interface and leave the data structure beneath it intact.  It would be great to be able to define a powerful data structure and only expose the portions that a user needs.

So an idea hit me for how to move forward with Time Tracker– separate the data structure and data storage into a separate component and write several quick and simple front-ends that are focused on specific tasks or usage patterns.  Time Tracker would then be a suite of tools and the user could choose among them and seamlessly switch from one interface to another without losing data.

Of course, the problem with this idea is that the user interface often needs a lot of tweaks and adjustments to work properly.  So this brings with it an additional challenge of creating a library of view and controller components that are more focused yet more robust than Apple’s own provided widgets.

It’s a difficult and perhaps ridiculous idea, but I think even attempting it would be a great step toward my goal of empowering users and making programming more accessible.

undefined method `register_service’ for Net::SSH:Module

September 3rd, 2008

Got this error after merging in some rails code and running `rake db:migrate`:

undefined method `register_service' for Net::SSH:Module

The solution, thanks to Alex Chacko:

sudo gem install net-ssh --version '< 2.0.0'

BG Track: My first iPhone application!

March 30th, 2008

Screenshot of BG Track running in the iPhone Simulator

Next steps: User authentication

Rails development (4:15)

Learned about scaffolds, routes, controllers, and unit tests. Learned how to make iPhone-styled buttons, control the iPhone viewport, and set the iPhone application icon.

Time Tracker: A big push forward in project planning, refactoring and testing

March 28th, 2008

Screenshot of Time Tracker issues in FogBugz

Lots of good work today! My next Time Tracker work day is Wed, Apr 2 at 5:30pm PDT. Work will continue on refactoring.

User Support (0.52 hrs)

I reviewed several of the emails from the mailing list (from last summer), and linked them to feature requests in the issue tracker.

Project Planning (0.88 hrs)

I started scheduling time when I will work on Time Tracker. I plan to do development work three hours each week.

Refactor Document Model (2.67 hrs)

I did a lot of cleanup after the main refactoring to a Document-Based architecture. The main window now loads, displays and closes correctly. The next step is to connect the models to the NSArrayControllers– I still need to learn the appropriate way to do this.

Create user stories / acceptance tests (3 mins)

I started a specifications document that lists all the features that need to be working before a Time Tracker release is made. (specs.txt)

A new “killer” app?

March 21st, 2007

I was brainstorming about making some of my other development projects simpler, and I realized they mostly all come down to the same problem: I simply want to create lists of text or of files, apply tags or associate numerical values or notes or lonks to other files, and sort filter and color based on often-complex sets of criteria. I’m imagining something hopefully-simple that could manage all that; and it could be the core for managing todo lists, audio files, video clips, downloads, and so on. Yeah, it’s another big dream…

Internet Television

March 7th, 2007

I’ve started using Democracy Player to watch internet TV and to keep an eye on YouTube. However, it’s built using python and HTML, and is dreadfully slow on my iBook G4. Also it can’t integrate with NicePlayer, so I can’t watch TV while I’m doing other things on the computer.

So, I’ve started work on a simple OS X app that thus far can load and parse vlog RSS feeds. Once I add the ability to download the media files, I’ll have a functionaly, slim replacement for Democracy TV.

Welcome

February 1st, 2007

Hello! This blog will contain news about the open-source development efforts of Aaron VonderHaar and associated colleagues. Descriptions of current projects will be posted shortly.

Using CPAN behind a firewall

January 15th, 2007

CPAN insists on using FTP to download packages… If you have a firewall set up,

    sudo env FTP_PASSIVE=1 cpan

Booting an iBook G4 into Linux from an ext3 USB hard drive partition

December 11th, 2006

This post needs to be edited, but here’s the dirty part:

mkofboot -v -b/dev/sda1 -o usb
(apple)+(option)+O+F
> boot usb0/disk@1:yaboot
> dev usb0 ls
> boot usb0/disk@1:2,\boot\yaboot
or > boot usb0/disk@1:2,\\:tbxi
or > boot usb0/disk@1:2,yaboot
> dev / ls
> devalias
yaboot: hd:3,/vmlinux root=/dev/hda3 ro

Network awareness (part I)

November 28th, 2006

I wanted kopete to cleanly log me on and off when I suspend/resume like iChat does. Here’s the temporary solution (in Kubuntu Edgy):

Create /etc/acpi/suspend.d/20-kopete.sh mode 0755 to read,

    #!/bin/sh
   HOME=/home/myuser dcop --user myuser kopete KopeteIface disconnectAll

Create /etc/network/if-up.d/kopete mode 0755 to read,

    #!/bin/sh
   HOME=/home/myuser dcop --user myuser kopete KopeteIface connectAll