Skip to content

December '15

Yosuf Ali
3 min read

Thankfully, its been a productive month or two.

WordPress -> Ghost.

Initially, my website was built entirely on WordPress. I've always liked WP, but I wanted to try out this Ghost thing people had been talking about. It looked really good (huge fan of minimalism) and I'd wanted to split my website from my blog for a while now. I'd considered building a theme for Wordpress that was just for me, but checking out Ghost seemed more enticing.

First thing I had to do was gain SSH access to my server, which I did. But when I tried installing Node.js, it just wasn't working. Sudo wasn't working, nothing was working. This was more frustrating that usual since I hadn't had much experience with the command line.

It turns out, my hosting provider wouldn't let me install node.js (or anything via SSH) because I was using shared hosting, which sucked. I needed a VPS. I remembered that I'd gotten some free credit for Digital Ocean with my GitHub education pack, so I thought I'd check them out. They're awesome. It was somewhat daunting to begin with since pretty much everything is done via SSH, but that just meant I could spend time getting comfortable with the command line. DO's community is amazing and I found their tutorials really helpful. I learnt about using SSH, securing a server from vulnerabilities, and managing DNS, among other things, all without leaving DO's site.

I redid my website on the main domain, while hosting my Ghost blog in a sub directory, which turned out to be an absolute pain. I'd installed Apache because that's what I'd always used for web dev, but Node.js takes quite some configuring to reverse proxy to Apache. In the end, I just installed NGINX which played a lot nicer than Apache.

Python Progress

So I've been learning Python. Python is a cool language, but learning a new language can be frustrating since much of the learning content out there assumes no prior programming experience, so they start with variables and if statements. But I've been following parts of Udacity's Full Stack Development courses, which are taught in Python.

It took me a while to get my head around using Python within the context of web development, especially having come from PHP, where there's not a whole lot of setup needed. This python docs page proved to be insightful, as well as this stackoverflow answer. The former cleared up MVC's for me, as well as the use of templates.

Using OOP on the server-side with databases just baffled me for the longest time as well (as is evident from this malarkey). This confusion was mainly because I just couldn't see how data in objects could then be pushed to a database. Like, why not just stick with functions that are called when they're needed (like I had been doing with PHP for so long). That was until I came across Object Relational Mapping in Udacity's Full Stack Foundations course built by Amazon Web Services (which I haven't finished yet). They introduced SQLAlchemy but didn't delve too much into ORMs in general. There were different OR-Mappers for different frameworks and what not. But I didn't care at this point, there were too many lights going off. I didn't even know ORMs existed. It just made sense. At least now I could happily OOP everywhere.

It felt like I was learning all these things some-what abstractly, applying them to minor exercises that would be thrown away. So I'm thinking I'll just rebuild the filesharing site I'd been thinking about, but in Python. The creation of the site itself wouldn't be all that point-full , given that others like it exist. But this would just be for practice. I had also planned to eventually get into Django so this may be a good opportunity to do so. It may be framework overkill for a small project, but it'd help get it off the ground as well as allowing me to get familiar with Django's parts (including my new friend, the ORM).

I think I'll checkout Udacity's Intro to CS course, before diving into Django's documentation. Not that I need an introduction to CS, but because Python! Also, you can't really say no to learning how to build a search engine and a social network.

Machine Learning

Artificial Intelligence is awesome, I find it fascinating. I'm hoping to get more and more into it. I've started a Machine Learning course on Coursera which has been great so far. Its taught by Andrew Ng, a professor at Stanford University who also happens to be one of the founders of Coursera (his ML MOOC is the one that led to Coursera's founding, cool huh?). He was also one of the founders of Google Brain and has since moved to lead the AI group at Baidu.

I'm looking forward to the rest of the course, I've heard good things.

But firstt ... revision

Its exam season though, which means it's gonna be a while till I can actually do any of this, February most likely.

2016 looks promising. Here's to further self-development, practice and growth.