On my September 9th blog entry, I mentioned that I had lost 10 pounds since August 3rd. Well today marks the day that I lost another ten pounds. Yep – twenty pounds since August. My goal is to lose another 10.
At this point, I’d like to thank some very important people:
Jason Scott, for telling me what I needed to hear. “It’s as if you just kept eating and eating!”
Jeremy and Tina, for showing me that it could be done and how to do it right.
Jon Pellow, for being supportive every step of the way.
This weekend I was at Hackfest in Quebec City. It’s a one day hacker con that’s much in the same vein as Defcon, HOPE, Phreaknic, Shmoocon, etc. I learned of it’s existence from the Montreal 2600 forums, and decided to take this as an opportunity to get Rice Tea out there. I sent off an email to the organizers, and lo-and-behold, they kindly allowed me to have a table to sell the book!
What a great time. The point of the exercise was not to make money, it was to get the stuff I’ve made known. Whenever people stopped by, I candidly told them they could download the book, in it’s entirety, from the official website for free.
I have a feeling that that might have cost me sales, but I didn’t care. Despite the book being available as a free download, some people still chose to buy it. That was awesome for me.
Oh, and I also printed off 25 copies of the On Piracy DVD, which I gave away for free. Those ran out in the first hour or so of the con. I’ll have to make more next time.
Funny story: I couldn’t locate the original ISO I had for the DVD, so I actually had to download my own movie to make the copies.
Anywho, Hackfest was great. Very well organized. The “‘goons” (security staff) were polite and really part of the whole gang that was there. The talks ranged in quality, but I’m glad I saw them all (single track).
I’ll definitively go next year, whether I sell stuff or not.
The GIS app now has a name. It’s called Flou. I like it, and it doesn’t seem to be taken.
Qt has wonderful documentation, but that doesn’t make up for a lack of community. I’ve been developing with Qt for the past few months now, and it is the framework of choice for the creation of this application. Qt is a great framework, with great documentation. Anything you need reference wise is found in that bulk of documentation included with their IDE. There’s also a solid set of demo code bundled. The problem is that it isn’t enough.
Equate trying to learn Qt as learning a new foreign language; say the fictitious Tjahiri. You’re trying to write a book in this language, Tjahiri, of which you know nothing. You have a great dictionary, and a phrase book – but that’s it. If you have questions that go beyond the scope of these tool’s ability to assist, you’re stuck.
In any case, I’ve been practicing. I built a podcasting application that downloads from not just RSS feeds, but also Twitter and any other page accessible through a web server. Previously, my experience with Qt consisted of building a series of one off applications: five or six widgets, two dialog windows, etc. This was aimed at getting used to doing larger apps.
I’m going to make Flou as minimalist as possible. The intent is to create a core that handles the presentation of maps, the coordinate system for each map, the graphical niceties (north arrows, legends, scales.) All other processing will be handled by outside binaries. Â The end effect is to make developing for the platform as simple as possible. You want to add new functionality? Edit the XML configuration script which populates Flou’s menus, and add an entry that points to your executable. That’s it.*
* Almost. The input/output of the executables would be standardized.
So with Rice Tea now done, it’s time to start on my next project. It’s a piece of software this time; one which aims to bring GIS to the masses.
The idea is this: you’re a high school kid, or a university kid, or a worker in an office – and you need to produce a map. If you’re not in a field that’s familiar with geomatics software, what are you going to use? Photoshop. The Gimp. MS Paint. A screendump of Google Earth.
And your map will still look shitty. It won’t have a North Arrow, a legend, or a map border. You won’t be able to combine datasets, or plot on XY data. That’s where my software comes in: it gives an easy way to create maps, for non-GIS people.
The focus will be on making map-making easy and accessible to audiences, much in the same way that Excel has made tabulating data accessible to audiences. That’s where it differentiates itself from other free products such as the excellent MapMaker and GRASS.
The program will be both free as in speech, and free as in beer.
In the last year, I’ve had the pleasure to program substantial amounts in C, C++, Python, Ruby, ASP (VBScript), and PHP. I’ve also used Microsoft Visual C++ and Qt as graphical frameworks.
By far, the most pleasant languages to work in have been Python. I love it for its utter simplicity and flexibility: it can make ordinarily large tasks two lines of code. Do you want to open a binary file and extract packets of little-endian unsigned four byte integers and character arrays? Two lines of code. I kid you not. Do you want to talk to a serial device? Use “import serial”.
My initial gripe with the language was the use of whitespace to delimit what was meant to be inside a function/loop. Coming from C, which does not care about whitespace, it was a little offputting. But you get used to it, and frankly whitespace, which inherently enforces proper code indentation, makes more sense from a usability standpoint than concluding statements with a semi-colon.
My other gripe with Python proved to be unfounded: speed. Python implementations interprets code – you do not compile it. Not only that, but Python was much more abstracted from the hardware than C, further hindering speed by the extra code it added in the background. As it turns out, computers are so fast these days that such differences really amount to nothing noticeable. I had Python running for real-time applications without a hitch. For most applications, it’s plenty fast.
If you want to create a GUI, Python has three options of note: TkInter, wxPython, and PyQt. Personally, I recommend TkInter. It comes with the Windows Python install, has the most documentation out there, and can pull off some things (ie. invoke a dialog to save a file) in a single line of text. Furthermore, the code is cross-compatible: your GUI code on Windows will work just as well on Linux – without recoding anything. On the downside, like the other frameworks for Python, creating a full-fledged GUI requires a fair amount of code. This is where Python starts to look less like… Python… and more like C++/Qt or C/GTK+.
All in all, Python and its modules are a wonderful asset to quickly and painlessly develop applications.