While I was (and still remain) unconvinced about the benefits of distributed source control versus normal source control, and more specifically of git vs svn, the benefits of github versus google code (which I had been using at the time) were more than enough to convince me to make the switch. It also helped that at the time, Linux had recently become my main OS with Windows being relegated to usage for syncing my iPod Touch and gaming, and I had become much more familiar with CLI usage of the system, so the command line orientation was no longer the problem it once was.
Look at the pretty graphs! (ignore Chromium for Linux's fail at positioning. My cursor is actually on that big green dot on my screen. It's just the screenshot gone wrong. This is the fault of
Setting up git and github was simple. I could give you instructions on how to do it, but Sirupsen has already done this much better than I could for Linux users. For Windows, there is another tutorial hosted on github,
Usage of git with my github account is equally simple.
- Change files
git commit -a
- Type commit message into nano (or vim if you've changed your system editor, or notepad if you're on Windows)
git push origin master
The only thing I missed during switching was that Subversion numbers revisions like 1, 2, 3...20000 while git uses md5 hashes. But I can live with that.
My latest programming project is a todo list manager written in Python.
- Add, Remove and show items
- Manage multiple lists
- Lists are stored in JSON
It also has a GUI, but that needs a lot of work. As always, the source code is available on my github. Unusually for my projects, it is already fully functional (though as I said, the GUI needs a little work).
Over the last 2 years, I've done a lot of personal programming projects. Some of these are available on my github, but any information about them is spread among Twitter and a few forums (some of which no longer exist). So over the next month, I'm going to blog about a few of these. I've chosen the name "The Playground" for the category because it accurately reflects both the nature of the projects (small projects that are mostly tinkered with, with very little concrete plans) and the reasons for making them (to practice programming, or to mess about, or because I was bored).
Anyway, for the time being, here is a quick summary of my projects currently in my github repo:
This is a simple Python program to send tweets from the command line. At the moment, it can send tweets, and get the latest tweets from your timeline, your friend's timeline, and @replies to you. I made it mainly because although I've always said Python looks like a nice language, and I know the basics of it, I never wrote an actual program in it beyond Project Euler maths puzzles.
Young Developer Forum
This is a program set up by me and a Iroup of people on a forum which has since shut down. It didn't really get very far.
This is an IM server and client that I wrote in Java. It was my first experiment in GUI programming and Threading in Java. Some revisions of it work, and some don't.
As usual, I'm falling behind on blogging. One of the reasons for that is I am currently learning C++.
Another thing that surprised me was the small size of the standard library. Compared to the Java API, and the .NET Framework, the C++ Standard Library is tiny. No GUI code, no threads, no networking functions.
The final hurdle I encountered is there is so little information about C++ online. On the one hand, I should of expected this, as the origins of C++ predate the internet, and it's not a web language, but it means I have a lot of difficulty finding material. My local book store has only 3 shelves of computer books, with the programming catalogue nearly entirely taken up by C#, Java and PHP. As well as that, the books I found in the library are quite old and mostly aimed at people coming from C or Pascal, or a variety of other older languages.
I'm wondering what other people's experience of learning C++ is.
Currently it is in a VERY rough state (in fact it doesn't even send messages) and I don't really expect it ever to be succesful, but it's still an interesting project to learn about GUIs, threading and network programming (3 things you don't do a lot of in PHP).