{"id":2324,"date":"2011-12-12T22:01:44","date_gmt":"2011-12-12T12:01:44","guid":{"rendered":"http:\/\/www.vectorstorm.org\/?p=2324"},"modified":"2011-12-12T22:01:44","modified_gmt":"2011-12-12T12:01:44","slug":"on-more-development-tools","status":"publish","type":"post","link":"https:\/\/www.vectorstorm.com.au\/2011\/12\/12\/on-more-development-tools\/","title":{"rendered":"On more development tools"},"content":{"rendered":"

\"\"<\/a>I mentioned a few weeks back that I’ve switched to using Vim<\/a> as my main editor, and couldn’t be happier.\u00a0 A lot of that was due to my personal dislike for features which are becoming increasingly common and difficult to disable in popular IDEs, and which I can completely disable within Vim.\u00a0 But to be honest, most third-party editors would work just as well;\u00a0 Vim just works for me.\u00a0 Others can (and do!) prefer Notepad+, Emacs, TextEdit, SublimeEdit, and others.\u00a0 The key point I wanted to make to other programmers is that it’s worth experimenting with text editors — there’s no need to lock yourself to the one that came with your IDE!<\/p>\n

Anyhow.\u00a0 At a similar time to when I started using vim, I started experimenting with using git<\/a>, rather than subversion<\/a>, for source control.\u00a0 This wasn’t for any special reason, just that I’d been learning a little git (since it’s very popular amongst vim users), and wanted to make a lightweight repository for tracking changes to my Vim preferences.\u00a0 And then for fun, I imported the MMORPG Tycoon 2 history into git<\/p>\n

For me, the best feature of git, compared against subversion, is the ease with which it handles branching and merging, which were always at least mildly painful under subversion.\u00a0 With git, though, it’s so easy to maintain separate streams of development that suddenly, I’m finding that I can work on several features at once, each separately from each other.\u00a0 The screenshot above shows a graphical view of the current MMORPG Tycoon 2 codebase.\u00a0 Right now, I have four different feature branches running, some for core features (“context” is for figuring out how to handle the context actions which I’ve previously shown in a “context matrix”), and some experimental (“duothreadman”, which is doing comparitive performance testing by maintaining two separate pools of threads, so that a glut of low-priority tasks can’t clog up the task queue).\u00a0 If a feature branch works out well, I can merge it back into the master branch.\u00a0 If not, I can just delete it and it doesn’t clutter up my repository any more.<\/p>\n

Under git, it takes a fraction of a second to create a new feature branch, or to switch from one to another.\u00a0 These operations would have taken several minutes each under subversion, and been major undertakings which had to be carefully considered and executed.\u00a0 But they’re trivial now;\u00a0 not even worth spending time thinking about.\u00a0 Just make the branch, and delete it later if it turns out to have been a bad idea.<\/p>\n

This sort of flexibility means that when I’m feeling blocked on one task, I can easily set it aside and work on a different task, without having to struggle to keep the two sets of changes distinct from each other.\u00a0 And that’s tremendously freeing.<\/p>\n","protected":false},"excerpt":{"rendered":"

I mentioned a few weeks back that I’ve switched to using Vim as my main editor, and couldn’t be happier.\u00a0 A lot of that was due to my personal dislike for features which are becoming increasingly common and difficult to disable in popular IDEs, and which I can completely disable within Vim.\u00a0 But to be…<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[7,32],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/po9WK-Bu","_links":{"self":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/2324"}],"collection":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/comments?post=2324"}],"version-history":[{"count":0,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/2324\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media?parent=2324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/categories?post=2324"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/tags?post=2324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}