Monday, April 22, 2013

Building a PC

This weekend gone by I did something I've never done before, something that I've always longed to do but - for a wide array of reasons - never did. I built my first PC.

Now I've never been much of a hardware guy (or just a "building" type of person in general). It took me a year of driving before I was comfortable enough to change oil, water, take off tires, etc. I usually just like to buy something that's already working and send it to get repaired if it breaks. This has it's major downfalls though and ended up being the main reason I built my PC.

Since I've been in college for the last four years, I rarely had enough money to buy the parts for a PC. Besides that, it just wasn't practical. I need to bring a laptop to college almost every day and frequently have to present projects built on it. That would be impossible if all I had was a PC at home. However, I'm in my final week of college now and have finally got a decent amount of money saved so it didn't feel impractical anymore.

With that, I went online to browse for parts. I followed close to twenty tutorials on how to choose parts, what to look out for, where to buy, how to fit them, and so on and so forth. Amazon was used for the bulk of the purchases since it's pretty dear to get items delivered to Ireland with other online retailers. In fairness to Amazon, I received everything I ordered in less than a week.

I aimed for a high performance machine that I intended to run Linux Mint on, maybe with Windows XP in a Virtual Machine for applications like Photoshop. I'm not much of a PC gamer, so the graphics card didn't need to be anything spectacular, though I still bought a pretty good one. Overall, the machine cost close to €1000 (excluding a monitor, which I already have).

This has been a great experience for me. The build process was a lot easier than I expected. I learned a lot about the inner workings of a PC and I now have one that matches my every need while being relatively simple to upgrade in the future.

Saturday, March 30, 2013

First Programming Language

Lot's of people who are just starting out at programming or have just enrolled themselves in a Computer Science/Software Engineering degree have many questions about languages. There's just so many of them. For someone who's new to programming, it can be a lot to take in.

Most universities will teach Java or C++ for the most part, while bringing other languages into the mix as you get more comfortable programming. I volunteer at a local CoderDojo where we teach kids to code through weekly sessions. These kids are much younger than a lot of people starting out so we usually kick off by teaching them the fundamental elements of programming through Scratch, a great application developed at MIT. Eventually we allow the kids to branch off based on their interests, usually web or games.

In my opinion, beginners should pick a language that is well regarded and stick with that until they have a firm grasp on how to program. The language should be secondary, since your ultimate goal is to learn how to code, not learn a language. Of course the two can go hand-in-hand, but most people with a few years of experience programming will be very comfortable with multiple languages and lots of programmers hate to be constantly associated with just one of them.

My own advice to you if you are just starting out is to take a stab at learning to code in Python. It's very easy to read and can get you building interesting programs very quickly. Just for fun though, below is a comparison of "Hello, World!" (likely the first program you will write no matter what language you use) in some of the most popular languages for beginners. If you prefer one syntax over another, try that as your first language.

Java

public static void main(String[] args) {
    System.out.println("Hello, World!");
}


C++

#include <iostream>

int main() {
    cout << "Hello, World!" << endl
    return 0;
}


Python

print "Hello, World!"


Ruby

puts "Hello, World!"


C

#include <stdio.h>

main() {
    printf("Hello, World!");
}

There are plenty of others, but these are some of the most popular languages out there. If you take anything from this post, let it be what I'm about to say. Don't spend a great deal of time worrying about what language to learn first. They all have good parts and bad parts, but all of that is irrelevant if you don't know how to program at even the most basic level. So learn to program, then apply that knowledge to all future languages you want to use.

Friday, March 29, 2013

Why I'll Be Staying Away From Facebook

Outside of programming, there are lots of things I use my computer for. Social media used to take up quite a bit of my time, at least until the start of this year when I decided to put it on the back-burner for a while. I disabled my Facebook account and logged out of my Twitter one but I also removed any bookmarks to both of the sites. Obviously this was in no way stopping me from accessing either site, but it would serve as a simple reminder to me if I ever felt the urge to see what was happening on either site.

In the last three months, I've gotten a lot of work done. College assignments got completed and submitted quicker than usual, side-projects were receiving more attention from me and I even managed to apply for numerous graduate jobs, securing one before the vast majority of people I know. I'm not saying that all of these came about as a result of less online social-interaction, but it definitely contributed.

However, given all that, I decided this week to re-enable my Facebook account and log back in to Twitter. I spent a few minutes browsing my Twitter feed, reading updates from my friends and people in the industry that I follow. Not much had changed, which is a good thing since I quite enjoyed using Twitter. Then I looked at my Facebook news-feed. The difference was astonishing.

It took a decent bit of scrolling before I found any post/photos of interest. So many sponsored posts, so many posts from people and companies I'm not connected to, nor have any interest in connecting to. It was a dramatic difference from my reaction when I logged back in to Twitter. Here are the four main things that bugged me, and probably the four reasons I'll be spending much more time on Twitter than Facebook for the foreseeable future:

Other pages posting about a page I like

This was the main annoyance. The example above shows a page called "Football Live Scores Update" posting about FC Barcelona, who's page I have previously liked. Now I have never heard of "Football Live Scores Update" nor have I ever gone searching for them, so why am I seeing what they post? FC Barcelona are a very popular football club and I'm sure there are thousands of people posting about them every day. I don't want to see these people's posts, the same way I don't want to see this page's posts either. If I wanted to, I'd have liked their page instead.

Displaying what my friends like


This annoyance is probably nit-picking, but it's one that really bugs me anyway. The example above isn't a great example since it's clearly a charity page of some sort which I have no problem seeing. However, you could find hundreds of examples of this for all different sorts of company pages, regardless of whether it has any relevance to you. Just because my friends or relatives like a page does not mean that I will. If it were a small text post just saying "Joe Bloggs liked SampleCorp Ltd." then I'd have no problem, but they're large posts designed to get your attention in the hope that you'll click like or view the page yourself.

Ecards


This is not a gripe with Facebook, but with some of it's users (even worse, they're people I'm friends with). Some people see a funny photo/image online and decide to post it for all their friends to see. That's fine. Then there are people who go on to websites dedicated to hosting these ridiculous Ecards and decide to post every second one they see. Newsflash, I don't want to see twenty separate posts containing your hilariously satirized opinion printed on a card with a black and white drawing to accompany it.

Popular posts I have not liked

You'll see this one a lot. When a post gets popular, garnering tens of thousands of likes and comments, Facebook all of a sudden decides it'll check and see if I like that post too. These are usually a video posted by a person/page dedicated to posting and reposting the same content with the intention of them going viral (or as viral as a Facebook post can go). Again, a post or video I have never seen before by a person I have never heard of appears on my news-feed because a single friend liked it.

These are only my own gripes with Facebook, but I definitely believe they detract from the user experience. Twitter keeps it simple. Sure you might occasionally see a sponsored tweet or search result, but it's not intrusive. With Facebook I have to scroll past all the crap to reach a single post of interest to me.

Wednesday, March 27, 2013

Side Projects

Given that in little over a month's time I'll be finishing up with college lectures for good and preparing for my final exams, I'm sure everyone expects myself and other students in the same position to be working furiously to finish projects and study what we've learned this semester. However, with two weeks off for Easter, I've not looked at a single college assignment, project or set of notes.

Instead, I've spent my time adding features to some side-projects, fixing some of their more obscure bugs and actually starting one or two completely new ones. This is how I intend on spending my break, or at least the first half of it. It's relaxing and refreshing. I'm delighted to be back coding without the worry of exams or deadlines hovering over me.

It's for this reason that I encourage any programmer, experienced or newbie, to think of something you'd like to build and just go build it. My current project is a JavaScript game-engine, to coincide with all this commotion over HTML5 that's been going on for a couple of years. I've also created a small Node.js program which converts all my custom-formatted comments in this game-engine into actual Markdown documentation.

I'm developing this project for myself, with very little thought being placed on other people using it or even caring about it (though of course it's open-source and there for anyone to hack away at). It's helping me build upon my JavaScript knowledge and giving me a tiny glimpse into the game development world, since most of my work up until this point has focused on the web.

Reading programming books is great, as is following tutorials and browsing through your favourite developer's blog posts, but none of that compares to the lessons you learn by actually going out and developing your own piece of software, no matter how big or small.

Tuesday, March 26, 2013

Moving to Blogger

For the last few years I've had a personal site (gavinflood.com) which I used as a portfolio throughout college and occasionally as a blogging platform. However, since I am about to graduate and have no real use for the site, as well as the fact that I'm diverting a little from core web development, I have decided not to renew my hosting package and domain name.

That means, from here on out, I'll be keeping all blog posts and project details on this Blogger site. It's a decent platform, avoids any time wasted creating my own CMS and handles my needs just fine. All of my projects and contributions to the open-source community will still be active on GitHub, since that is where I've spent most of my time over the last couple of years and I feel it is a more than adequate portfolio.

Alongside that, since I will be joining up with the fantastic and creative bunch at Guidewire in June and moving from website development to Java EE systems, a few of my current projects (especially ones I see no future with) will more than likely have development ceased. That being said, my pet project at the moment, "Geng", will be actively developed over the coming months. If anything, I just want to see how good a game engine I can create after a year's experience working with JavaScript intensely.