Sometimes, writing software can be a pain. It’s unfortunate, but true. Sometimes there’s a need to be filled, an itch to be scratched; and though it might be quite simple in concept, it’s often hard to translate that idea to code. Luckily, the team at Ubuntu has a tool for that: Quickly.
Quickly isn’t a new tool, but it is a useful one. The idea is to provide a shell command which will help take some of the obstacle out of programming for Ubuntu by automatically generating a PyGTK project’s boilerplate code for you. Just entering quickly create ubuntu-application foo creates a directory foo and adds the basic code needed for a simple GTK+ application. It even initializes a bzr repository for you and commits a first revision.
The tool aims to make some “opinionated decisions” about what is a good way to start. I think that’s a good way to go; it certainly makes getting started easier. Although the choices aren’t necessarily the best in my personal opinion (as you probably guessed, I prefer git), they are reasonable defaults and it’s even possible to change them using Quickly templates, which can be created by the user to match their favorites.
The arm control software, written in Python and GTK+.
The main downside, however, is the lack of documentation. There is a team working on writing some on Launchpad, but so far it’s rather sparse. Even knowing how to hook up the GUI to your custom code can require a fair amount of research, and it takes a little of the ease out of using the framework. That said, once you’ve familiarized yourself with the workflow and the structure of the generated code, it’s not too hard to ramp into productivity. I’ve even been using it to work on the robot arm’s control software.
Personally, I think it’s a great idea. It would be nice to have a GUI for it (I reflexively close terminals when I’m done with a few commands, and getting back to the right directory is a pain), but that could easily be written using Quickly itself! While it’s not a new language or even a new toolkit, it is a convenient synthesis of extant tools that have the capacity for powerful projects and are easy to use.
It seems that some projects fall just on the wrong side of the microcontroller/PC divide power-wise. It sometimes appears that if you want to be able to display video and read from GPIO ports, you’re either going to have to learn Spin and work with Propeller chips, or use a low-cost PC for the graphics and an Arduino or similar board to handle your sensors. Luckily, this isn’t the case! Two products available at SparkFun and Adafruit can help you out significantly.
If I have one complaint about Linux, it would have to be the lack of powerful Computer Aided Design systems for the platform. Almost all of the common commercial packages such as AutoCAD, SolidWorks, etc. are designed to run on Windows. Luckily, this apparent paucity of systems isn’t as bad as it seems!
There are a number of programs you can use for doing basic CAD, and most are free. For example, for doing some basic mesh-based modeling Blender is very powerful. Unfortunately, it’s not a solid modeler and isn’t aimed at CAD work. That said, it’s a popular modeling option for RepRap users. For more serious dimensioning and 2D work, QCAD is a good option. The community edition is free and available in the Ubuntu repositories. I use it almost every day.
For anything more serious, like parametric modeling, interference checking, motion simulation, and stress testing it seems there are no good free programs. The FreeCAD project seems promising, but is severely lacking in the basic functions needed for a production-ready CAD system. Luckily, there are some proprietary programs available for Linux which provide that!
Well, it seems as though the next big thing in the Ubuntu world is the switch from standard GNOME to the Unity interface in 11.04. I can’t say I’m exactly pleased with that, but I understand that users will have the opportunity to switch between GNOME standard and GNOME with Unity at login, so I’m tentatively hopeful that I’ll be able to retain my familiar interface. I’ve tried Unity out on my laptop, where I have more limited screen space, and I had a good time with it for a while; but the non-standard behavior of the Unity sidebar with regards to minimization and launching was discouraging. On my desktop, I’m running a dual-monitor configuration; and I like to have my application launcher and such on the center monitor. I’m not sure what the configuration options for Unity are going to be, but it seems that it’ll try to jump to the left side of whatever setup you have (don’t quote me on that, I honestly don’t know). If I want a dock, I’ll use AWN or something that provides that; I don’t think the Unity bar is such a great leap forward for the standard desktop user. I’m also not much of a fan of putting the menu options at the top of the desktop. Don’t get me wrong, I see its appeal for netbook and laptop users; but for the larger screens of a standard desktop setup (and especially my non-standard one), I just can’t see the benefit.
Why is it that most software sucks? Sure, there are a lot of good programs out there that allow you to do a lot of cool things. But fundamentally, when we talk about user space programs and operating systems, there seems to be a division between the good and the bad which is pretty remarkable. What peeves me most, however, is the fact that a lot of good software will only run on what I consider to be crappy operating systems.