This time it’s more about software than hardware. But first, hardware.
-
Lightning: We had a lightning strike near our home a few weeks back and my main Windows desktop has been acting dodgy ever since. I swapped the PSU but that didn’t help and finally came to the conclusion that some of the USB ports were damaged on the motherboard. One replacement Gigabyte 970A-DS3P later and all seems to be well. I also replaced an older hard-disk that sounded like a machine-gun since day 1 with a combo one that has a small amount of SSD. The silence is a joy.
-
Node.js: I built a small mini stats portal for a side-project in Node.js with a bit of Bootstrap, Google Charts and Passport. I still believe that a lot of Node’s power comes from the ecosystem and community. There are just so many good tutorials and sample applications out there that you can always find a good starting point. For example this one. This also means that you have the combined knowledge of a ton of people who have sorted out nasties like CSRF, CORS, Auth, etc. already. Everything I’ve done has been based on Express and MongoDB but HAPI is starting to get that community energy too. My first failed attempt at that portal was in Go, which leads nicely to….
-
Go: I’ve also been playing around with Go (#golang) which is a very interesting language built by Robert Griesemer, Rob Pike, Ken Thompson and others in Google. Anyone who knows C will feel very comfortable with it. It’s like C with all the badness removed. I took to it like a duck to water and found it extremely easy to learn and become productive with. It’s designed as a language for server apps and my first real app was a re-write of a database maintenance tool that started in Python, moved to Node.js and is now running perfectly in Go. The whole workflow around Go is a real strength and I can see why it’s gaining a lot of traction in the past 24 months with companies like Bitly, Docker, Apcera etc. Its two main weaknesses are not language related. First is the small size of the community - you cannot “program via Stack Overflow” the way you can with Node, there just isn’t the volume of information out there. Second is the state of Go web frameworks - there seems to be a strong anti-framework mindset in the community which thinks everyone should build from first principles. That’s fine for full-time hardcore developers but it puts off tinkerers like me who find frameworks a nice entry point into a language. So whilst full-stack frameworks like Beego have great potential (as do smaller ones like Revel etc), the number of developers is tiny and once again you are back to the community-size and availability of learning-material problem. So for the moment I’m going to focus on using it for tools, utilities and some fun stuff on the Raspberry Pi. Actually, the fact that it works seamlessly across Windows, OSX, Linux and generates static binaries for them is one of the other reasons I like it so much. If you have an hour, watch Rob Pike’s wonderful keynote at GopherCon in April where he deconstructs hello world.
-
Re-factoring: A major mistake I made back in 2008 was taking a short-cut and telling a developer to build a start-up’s Admin back-end on top of Django Admin. Initially it made lots of sense when most of the functionality was just interacting with the models, but as soon as you try to do anything new, you realise you have to do it as a bloody mishmash of hacks, workarounds and copy/pasted code. In a way I’m contradicting the previous point I made about Go but actually the error was more about not biting the bullet and re-implementing the Admin from scratch in the early days, once the initial prototype had done its job. The question now is whether it would be worth someone’s time, even as a multi-weekend/Christmas learning exercise, to re-do in Node and Express. The system actually started as a Turbogears application so this wouldn’t be the first time to make such a move!
-
Win8.1: Switched from Windows 7 to Windows 8.1. It’s still getting in the way and slowing me down, but less so than Win 8.0. The driver-signing nonsense is still infuriating, as is the method of turning that off. However I did learn the WinKey-X short-cut which gives you quick access to everything you need like Control Panel, Command Prompt and Shut-down menu.
-
Harp.js: This static blog you are reading is hosted on GitHub Pages and generated by Harp.js. I’m still a big fan of Harp and I’m thrilled it now works end-to-end on Windows. Just install Node.js and do npm install -g harp. I used to have a plethora of WordPress sites and blogs but after the relentless hacks of 2013/2014, I’m done with it. I have two sites left to port over to being based on Harp.js and then it’s buh-bye WordPress/PHP/MySQL/Insert-name-of-security-hole-riddled-plugin-here. We all moved to WordPress from Blogger/MT/etc for its ease of use and quick install but I think the move away will become a flood as people grow tired of the upgrade treadmill. The next major version of WordPress should be about security not just of the core but of every plugin too.
-
Inbox: Got an invite to Google Inbox. Once signed up, I spent my entire time worried I was missing an email or that I’d accidentally archived it or trying to find the “Mark as Unread” button in Chrome. Sorry Google, but my first 5 minutes on GMail were a complete joy back in the day, whilst Inbox was an exercise is “what’s the actual point here, apart from being different?”.
-
IRC: It’s huge in Red Hat. I really love using it. Could it have a resurgence or will it go the way of Usenet? I’m using HexChat on Windows which is rather good. I think the mIRC UI is what kept me away for all those years.
-
Linux: I’m moving from Ubuntu/Lubuntu/Mint in all my VirtualBox VMs to CentOS 7 and Fedora 20. Apart from yum instead of apt-get, there really isn’t that much difference for normal day-to-day stuff. I can install all the usual tools and work as I did previously. The lack of window minimise/maximise/close buttons on Fedora is completely ridiculous tho.
-
Docker: Cos, SEO :-) But srsly, I’ve been kicking off some Docker instances of Mongo and Node apps inside a VBox VM and liking it a lot. Setting up the inter-instance networking is a bit of a pain tho. One thing that bothers me is the initial promise of tiny images seems to have fallen by the wayside. You really should avoid playing with it on home broadband if your base OS is different to the base OS used to build the image you want to play with. Also be very specific about what version of something you want or it’ll download all available versions.
-
OpenShift: Doing a bit of playing with Red Hat’s OpenShift PaaS. So far so good but I haven’t gone much further than Node.js hello world.
-
GoRead: Discovered a brilliant RSS reader a few months ago called GoRead that looks and acts a lot like good old Google Reader. This one is written in Go and you have to self-host. But I was thrilled to find that I can host it on Google App Engine on the free tier. I’ve stopped using all the centralised readers like Feedly since.
-
Bitbucket: I don’t think many people realise that BitBucket has most of the same features as GitHub but provides private repos for free. Its only real flaws are the lack of a GitHub Pages equivalent and the lack of 2 Factor Authentication (which is really unforgivable at this stage.)
-
Pinboard: I finally dumped Delicious a few months back and paid the tiny few quid to get a Pinboard account. Not only is it a great bookmarking service that just works (and works quickly), the guy who runs it has one of the best Twitter accounts out there. It was able to import all of my Delicious bookmarks and the IFTTT and Twitter integrations means that all my tweeted links, re-tweets and favourites automatically get saved as bookmarks.
-
Janetter: It’s still the best Tweetdeck-multi-column-style Twitter client on Windows and OSX (but not brilliant on Android). The word/user filters alone would cause me to pay many many Euro for it but the regex filters make it invaluable.
More tomorrow.