Ubuntu is my OS of choice, and has been since their second version. My first post to their boards was February 14th, 2005. I believe that canonical and the Ubuntu community have the technology, the philosophy, and the business practices to help untold millions of people. It's also a really fun platform for development.
As an open source project, everyone who wants to support the project is free to contribute in whatever way they see fit. Besides evangelizing and introducing friends and family to Ubuntu, I am also working some other modest contributions. I hope that my background in developer usability helps the Ubuntu community in this way, however small the contribution may be.
This is a documentation project that I started. The goal is to help programmers new to Linux to quickly get started and start seeing successes on the Ubuntu desktop platform. The programmers I have in mind maybe aren't professional developers, but write code from smaller projects and a limited set of users, perhaps just themselves. The idea is to provide a very focused set of recommendations for how to accomplish typical programming tasks so that the programmers can gain a toe hold on Linux programming, and perhaps go on to explore the richness of options later.
These chapters are still in early drafts. While I'm looking for a good place to host this project, you can just grab them here:
This is related to my documentation project. Essentially, I am planning to slowly create a set of widgets that allow developers to accomplish certain tasks in a "widget focused" manner. That means that instead of learning new coding constructs, some things could be accomplished by setting properties on widgets. This is very much inspired by the .NET component model.
My first effort in this regard is a widget that makes it easy for developers to add asynchronous tasks to a form. I created a widget called "TaskProgressbar". Developers can add this to a form, and then simply pass in a function. When they tell the TaskProgressbar to start, the function is run asynchronously, and the taskbar feedback is handled for them. In this way, developers do not have to learn how to use Threads as the Threads are encapsulated within the widget. The Python file contains a sample that demonstrates how it works. I still have a lot of work to do to beef up the widget, but I have a good start.
AsynchTaskProgressBox Source Forge Link
Crashteroids grew out of a few related goals. I wanted to learn the pyGame framework, and I wanted to have some fun learning to program on my eeePC, and I wanted to have a fun game for my eeePC. The result is Crashteroids, an Asteroids clone. To date, I have completed the basic physics and scoring. I still need to add enemies, splash screens, and high scores.
Crashteroids Deb File
Crashteroids Source Forge Link
FogBugz is a web based work item tracking solution offered by a company called Fog Creek. The web UI lacks some features that we needed for our project management and time tracking, so I created a python module around their XML/REST API. On top of this I am building a pyGTK front end. Besides being able to code needed features that are lacking the FogBugz offering, I am also using this to generate code samples for Application Programming Chapters, especially for parsing XML, using TreeViews (grids in Gtk), and using Notebooks (tabs in Gtk). The pyFogbugz module currently supports retrieving filters, searches, intervals, and work items. I still need to add the ability to edit and update work items, as well as work on items in batches.
pyFogBugz Source Forge Link