My New Workstation Build

In the past couple of weeks, I’ve built and tested my new workstation PC. My previous workstation was a Dell Precision T5600 (built circa 2012) with a 6-core Xeon, 24GB of RAM, AMD V5900 GPU, and 120GB SSD. The performance was still fine despite it being nearly a decade old, but it had two issues: It was looooooouuuud, and very power-hungry (200w at idle). So, it was time to be replaced.

Many moons ago I used to work in a computer store, so I’m used to building my own machines. Why didn’t I last time? Because I needed something in a hurry, and somebody had their old workstation for sale on Gumtree, and it seemed like a good deal (and for the most part, it was).

My requirements for the new build were as follows:

  • Silence at idle is a must. The fans can be audible, but not annoying, under load.
  • 16GB of RAM at least, with the capability of holding at least 32GB in the future.
  • On that note, it should be somewhat future-proof. I should be able to upgrade the motherboard, case, and storage independently of each other (something I couldn’t do with the Dell).
  • It has to look good sitting on my desk (completely subjective, I know).
  • At least 8 threads for compiling software with, but the option of replacing the CPU in the future.
  • Support for three 1920×1080 DisplayPort monitors.

And the parts I have chosen to make all this happen?

  • Case: Fractal Design Era ITX
  • PSU: Corsair SF450
  • Motherboard: ASUS ROG Strix B460-I
  • CPU: Intel Core i3 10100
  • RAM: G.Skill Ripjaws V 16GB (1x16GB) 3200MHz
  • SSD: Western Digital Black SN750 500GB

All up, the cost of the parts was around $1000 AUD.

One thing I found quite annoying picking the parts for this machine was that the vast majority of available performance parts were gaming-oriented. RGB lights plastered on everything and designed to look like something that has fallen off an army truck (which ironically does everything they can to avoid having RGB lights). In addition, most of the reviews online, both written and YouTube videos, were written from the stance of a gamer.

Take for example the Fractal Design Era case. Gamers hate this case as it has terrible cooling for the GPU. It’s a legitimate issue sure, but one only faced by gamers. If you don’t have a discrete graphics card in the system, then you don’t have this issue and the case is thermally fine. But the positive trade-off from that thermal design in the GPU area is that it’s an ITX case that looks like it belongs in a modern art museum. Look at it. It’s beautiful!

My other part choices are pretty standard. An i3 is more than enough (it’s got as much power as my old Xeon), 16GB of RAM is plenty (8GB would have been fine if not for Microsoft Teams), and 500GB of SSD boot drive (plus a re-used 4TB drive for storage) is fantastic and surprisingly cheap.

Did I meet my requirements? Yes. It’s silent. It only consumes around 25w at idle and around 150w under full load. I consider that a huge win. The new machine would pay for itself in 3 years with power savings alone. All the fans are zero-RPM enabled and will turn off under idle conditions.

It’s also future-proof. I’ve learned the hard way in my last two computer purchases (the Precision workstation mentioned above, and a Dell XPS 9350 laptop) that a lot of damage comes from tightly integrated components. If one thing breaks or is no longer up to the task, the whole thing has to go. The reason I bought the Precision was that the XPS only had 8GB of RAM, and I needed more so I could run SQL Server and Microsoft Teams at the same time (madness, I know). To mitigate the environmental impact, I bought the Precision second-hand, which raises a different set of issues. Now I had a powerful computer, but I also had a loud, power-hungry, and (yet again) non-modifiable system. This is one tiny peek into the world of throw-it-away consumable technology products.

In my mind, the best way to minimise the environmental damage of our computer use is to make sure everything we buy follows the established standards. They last the longest and can be re-used by interchanging with other things. Take for example the ATX standard. You could buy an ATX case from 1998 and build a modern system in it. In fact, people do that. It has changed that little.

My goal is to have this case and power supply for the next 10 years, and this motherboard for the next 5. I can see a CPU, RAM, and SSD upgrade in the future, but the core platform should last a good long while.

PyConAU 2014

IMG_20140802_132246This weekend I attended PyConAU , a community-run conference for the Python programming language. Held this year in Brisbane, it was a good excuse to learn some new things, catch up with old friends, as well as make some new ones.

I have a soft spot for Brisbane. In addition to having family live here, I also love their public transport system: a well-integrated system of buses, trains and ferries run on a reliable and frequent schedule to all areas. Their AirTrain is hands down the easiest public transport solution from an airport to a city (miles ahead of Melbourne’s cramped buses). The conference was held at the Brisbane Conference and Exhibition Centre, which is the centre of the city’s cultural district, with museums, theatres and shopping and dining areas all around. It’s a wonderfully laid out modern city.
IMG_20140801_165033
The first keynote was by the director of the National Computer Science School (NCSS), and generally awesome guy, James Curran. My experiences at NCSS back in 2007 helped formed my programming abilities and gave me the knowledge that there was other life out there: an entire programming community, and being in IT was a good place to be.

A highlight of the talks on Saturday was a talk on caching for web services by Tom Eastman. He talked extensively of using HTTP protocol elements to control the cache in proxies and in web browsers. Whilst the examples used Django, the concepts will be useful for my work using ASP.NET.

An interesting part of the conference is talking to people outside talks, and this conference has been no exception. I’ve met many new people, including some stars of the Python world. I’ve also learned that many of the things I do in my daily programming life are wrong, and it’s great to learn more about best practices.

A traditional part of PyCon AU (as well as linux.conf.au, to an extent) is the end-of-day lightning talks. In particular, two talks in the Saturday session really appealed to me. First of all was Josh Deprez‘s talk on “node.hs”, where he talked about implemented Haskell in node.js, but instead wrote a lightning simulator within 5 minutes.

Secondly, and possibly of more long-term consequence, was Russell Keith-Magee‘s talk on Toga, a cross-platform UI toolkit that displays widgets using the operating system’s native widgets. So instead of your cross-platform app looking great on GNU/Linux (where GTK+ is native) and crap on Windows or OS X, it will look good on all three platforms (and possibly more in the future).

The final event of Saturday was the conference dinner, a traditional three-course sit down event with a lovely speaker named Paul Gampe (who worked in ISPs during the early nineties, making me very jealous). He gave a few lessons he learned working with the early FOSS and Perl communities, and why Python should make efforts to avoid these problems.

IMG_20140803_104959After dinner I retreated to my hotel room (I have made the mistake before of staying up with people all night and missing most of the talks on Sunday). However, I didn’t go straight to bed. I instead checked out Toga in more detail, and tried to get it running on Windows (it’s a very new piece of software). After a bit of code wrangling, I managed to get a blank window appearing on the screen (as my excited tweet about this shows). My patched code is now in the Toga repository, which is pretty cool.

Sunday morning’s keynote was given by Katie Cunningham on the topic of accessibility. I’ve heard more and more about this recently (especially through a talk at WebDev42 recently). The gist of her talk was that the tools and support and standards are there, and the only reason developers aren’t building accessible sites is because they’re lazy or don’t know better (her point was a bit more complex than that, but that was roughly it).

Two talks I really enjoyed during the rest of Sunday were Russell Keith-Maggee’s talk on building Python wheel packages (basic information that, being a very junior Python developer, I didn’t know) as well as Josh Hesketh’s talk on database migration testing. While Josh’s talk targeted Python projects and OpenStack in particular, the concepts are useful across basically all programming platforms. I’m lucky in that managing database migrations is something that Entity Framework (my C# ORM of choice) does for me.

After the conference finished, I completed my trip by visiting family for dinner and dropping in on a few Brisbane-based clients, before flying home (via Melbourne, of course, to earn maximal status credits).

As always, attending PyCon AU was a great experience, and I can’t wait for next year (it will be held in Brisbane again next year). In my mind PyCon AU is a very similar conference to linux.conf.au. I go for the same reasons: great community, great people, great content, and great fun!

linux.conf.au 2014 – January 7

I’m (sporadically and with much delay) blogging my yearly pilgrimage to linux.conf.au 2014, this year being held at the University of Western Australia in Perth.

Tuesday Keynote

20140107_085514Today’s keynote was given by Kate Chapman from the Humaritarian Openstreetmap Team. It was awesome. I’d heard of OpenStreetMap previously but not really paid much attention to it either as a technology or as a community. I was impressed by both. On the technical side it’s great to have a map that can be easily edited by anybody, Wikipedia style, and has as much information as you could want on it. On the community side, I was really impressed by how they went from a bare outline of Haiti just before the earthquake there to a complete map of pretty much everything only a few weeks later.

I immediately installed JSOM, the OpenStreetMap native editor and started adding points of interest I know exist around my suburb. It was surprisingly easy to use and the near-instant results proved satisfactorily addictive. I hope to get into this more in the future.

Open Programming Miniconf

I spent a large portion of the day in the open programming miniconf. There were several highlights:

  • Katie Miller’s talk on OpenShift was hilarious, mostly because of a moment involving two tissue boxes:

    (the people pulling tissues out of the box were racing the OpenShift setup process to see which was faster).
  • Adam Harvey’s talk where he wrote a PHP microframework in 15 minutes in front of the crowd, partly to prove it could be done and partly to prove that you shouldn’t bother. I’ve always been dubious of frameworks for small peices of code, simply because PHP provides most of what you need (which is Adam’s point). I guess the problem comes when this one-page script evolves into a full application before anybody realises, and using a framework from the beginning would have saved a lot of headaches down the track. It’s a tricky one to judge.
  • Tom Eastman’s talk on serialisation formats. I’d never considered some of the problems with these formats that means that even in formats such as YAML or JSON there are security vulnerabilities that are continuously overlooked. Unfortunately I had to leave in the closing minutes of this talk to attend to an emergency, so I missed some crucial information. I’ll definitely be revisiting this one when the talks are released for download.

Walking into Perth

20140107_182451For dinner tonight we decided to walk into Perth via King’s Park, which proved to be very pretty. We also ended up walking back via the foreshore along Mounts Bay Road, which was a bit of fun since (for some reason I can’t quite figure out) we decided to run part of the way back. Turns out running is fun if you’re in good company. Who knew. The total distance was just under 12km, so I probably even burned off the energy from tonight’s dessert, a sticky date pudding from the British pub in Murray St (good stuff, though a bit dry).

Now the miniconfs are over, and the conference proper starts tomorrow. For delegates it’s a fairly unnoticeable difference (only real difference being that the talks aren’t grouped into rooms by subject anymore), but it marks almost the halfway point. There’s also the penguin dinner to look forward to, which this year looks to be an upscale picnic on the Matilda Bay foreshore.

Reflections on PyConAU 2013

20130707_104447
The weather during a good moment.

This weekend has been a great one. I spent it at PyConAU, the premier conference for Python in Australia. Two days filled with all of my favourite things: great open source software, lots of friends, great food, interesting talks by interesting people – and the weather has been “interesting” too.

Conferences like these (PyConAU and linux.conf.au) are a really great chance for me to catch up with some of my friends that live interstate or overseas, as well as make new friends and meet new people. There’s always an interesting discussion going on, and nobody minds if you just stand there and listen in – you learn so much just by standing around!

Of course, the whole point of a conference is the talks, and here were some of my highlights:

  • Luke Miller’s talk on making a point-and-click indie game for gay men. This talk really covered the entire breadth of the game making process, both generally and specific to his game. He showed us the engine he built, discussed the story and graphics, discussed packaging and marketing the game, as well as some of the feedback he has got back from the gaming press – both positive and negative. Anybody who wants to make their own game should definitely check out this talk when it is available online.
  • Ed Leafe‘s demo of creating OpenStack deployments using Python. He showed simply using the pyrax library to create VMs and provision databases and DNS entries, but of course you could extend this by using python scripts to set up applications on the VMs afterwards, naturally. I’m almost convinced to move everything that I have in Amazon AWS to Rackspace’s cloud. OpenStack is pretty much awesome.
  • The Saturday morning keynote from Alex Gaynor on trying to narrow down what exactly programmers “do” and how they do it… by drawing in parallels from other fields like science, engineering and art. Really, it seems programming and software engineering is the intersection of the three. Also, software engineering is a very young field, really only 40 or 50 years old, compared to science which has hundreds of years to mature, and art which has had tens of thousands.
  • I also enjoyed the many (I think I went to about 5) talks I went to regarding software testing (unit testing, mostly). I actually learned a few tips from these that I plan to use in my day job, even though we use C# and not Python. Things like writing tests before adding any new feature – which of course is best practise that I knew, but “forgot” (i.e., was lazy). Food for thought.

20130707_183542
Jack Greene – loving the decor.

Speaking of food, the conference venue, the Wrest Point Casino, provided a good spread of food right throughout the conference, with morning and afternoon teas being very well catered, as well as lunches (lots of options for my vegetarian friends, and lots of tasty meat those such inclined). The peak, of course, was the conference dinner held on Saturday night, where we ate ourselves into an absolute stupor with the finest Tasmanian produce. A truly terrible burden, but one we accepted with vigour.

Naturally, the conference had to come to an end, but not before a trip to a local pub (and despite being a local, one I hadn’t been to before). Jack Greene in Salamanca Place hosted our after-party, and I’ll definitely be going back. I’ll also definitely be attending the next PyConAU, in Brisbane next year.

Thanks to Chris, Josh, and the rest of the organising team for a great weekend!

30 Days of Geek #5: Quick nifty hacks you’re proud of.

I’ve decided to partake in Jethro Carr’s 30 Days of Geek challenge, so I’ll be writing a post a day on my geekiness for an entire month! You can find all the posts in one spot here.

Today’s post is in a very similar vein to yesterday’s post, so I’ll keep it short and sweet:

  • The very short C program that I wrote to remove all the spaces out of one of my teacher’s spreadsheets and turn them into tabs. I think I probably saved her hours of tedium.
  • The script I wrote that stored all my Microsoft product keys within itself. The bash script would accept a search pattern for a product name, and spit out a product key. Much easier than going looking for a physical box.
  • The numerous abuses of iproute2 I’ve made in the last few months, in the quest to make computer networking make sense. My favourite networking hack is this one (in /etc/network/interfaces):

    iface lo:0 inet static
    address 172.24.16.1
    netmask 255.255.255.255

    What it does is add in a second loopback address, not within the 127.0.0.0/8 block. Not original perhaps, but very useful for BGP routing.