The journey of an aspiring software developer

About

I want to post about my journey and useful stuff that are helping me on my way to becoming a successful software developer. I am a BSc Mathematics and Computer Science student at Stellenbosch University, South Africa

How to become a hacker/programmer

I’ve been struggling to figure out what exactly I should learn and do to become a good programmer and found that there really is no single way to do so. I compiled a Readlist, Advice for Computer Science majors, of articles that provide some experts’ advice on becoming a hacker/programmer and summarised the suggestions in a list below. I guess that it wouldn’t be necessary to follow exactly all of the below suggestions to get a decent job in programming, but it would sure help to do as many of them as possible to become an expert.

So here it is:

Steps and things to learn to become a good hacker/programmer:

Architecture
- Understand a computer from the transistors up (machine architecture) (design and simulate a small CPU)
- Learn, run, tinker, modify Linux* (or other Unix distribution)
- Learn basic systems administration
- Learn about compilers/interpreters
- Operating systems - understand how kernels handle system calls, paging, scheduling, context-switching, file systems and internal resource management
- Learn about networking** and protocols

Theory
- Get a solid grasp of formal logic and proof (cover reasoning about: trees, graphs, formal languages & automata)
- Learn enough about number theory to study and implement common cryptographic protocols
- Become good at designing algorithms (hash tables, linked lists, trees, BSTs, directed and undirected graphs)
- Computability, complexity & tractability
- Learn about databases (relational algebra & calculus, sub-Turing models of computation)
- Learn about graphics (ray tracers, BSP trees, z-buffer rendering) 
- Learn about artificial intelligence
- Learn about computer security*** and cryptography (understand symmetric-key and public-key cryptosystems)

Miscellaneous
- Become very good at programming (work on a lot of hard problems)
- Read a lot of code and write a lot of code
- Help test and debug open-source software / become a beta-tester
- Learn how to really use the web, write HTML and a real website with good content
Learn to write well
- Learn microeconomics
- Read about the glider emblem and mathematical simulation Life
- Publish useful information
- Build a portfolio (blog/site with a post for each project/accomplishment with some code hosted publicly and contributions to open-source should be linked and documented)
- Learn about version control
- Learn about specific, cool problems

*Systems administration Linux
- configure & compile the Linux kernel
- troubleshoot a connection with dig, ping and traceroute
- compile and configure a web server like apache
- compile and configure a DNS daemon like bind
- maintain a web site with a text editor
- cut and crimp a network cable

**Networking
Every computer scientist should implement the following:
- an HTTP client and daemon
- a DNS resolver & server
- a command-line SMTP mailer

***Security
Learn to understand:
- social engineering
- buffer overflows
- integer overflow
- code injection vulnerabilities
- race conditions
- privilige confusion

4 notes hacker software developer programmer programming how to how to become a hacker how to become a programmer

Busy on campus and the start of PlanBosch

I haven’t posted in a really long time as at first I was unsure of how to continue on my programming journey and then I was overwhelmed by Stellenbosch University campus happenings!

This week was jam packed with really awesome events, confirming by belief that there should be a centralised page to post all events! So I created a new Tumblr blog at the beginning of this week and called it PlanBosch(I decided to change it from the longer “Plan Like a Bosch”. I typed up my first post and created a quick, admittedly ugly, logo. At least I started something!

Right now, I am on a mission on getting in the know of all upcoming events by emailing societies and watching out for posters.

Campus has swallowed up much of my hours of free time for now, so I’ve decided to rather divert my attention from trying to learn web development and rather focus on all the amazing opportunities I have here in Stellenbosch.

This week these opportunities included completing a rather difficult Physics tutorial, learning about computing the volumes of curves, using vectors in polar coordinate systems, jogging while basically wheezing (training for a trail run), attending a speech by the renowned Dr Mamphele Ramphele, a showcase of hostel acapella groups (called Kleinser) and a dancing workshop!

stellenbosch stellenbosch university planbosch plan like a bosch

One day left in Code School, where to next?

My Code School hall pass ends tomorrow. I could stay up all night and try to fit in as many courses in as possible, but my family and I are flying to Mauritius tomorrow and I don’t want to be too tired for this exciting experience!

I feel a bit low, however, since I don’t know where to next with my learning to become a developer adventure.

I have completed the CSS Cross-Country, Journey Into Mobile and Functional HTML5 & CSS3 courses Code School, but I haven’t written any websites myself. I struggle to come up with good ideas and to think of a cool design for the website ideas…

I am considering doing the “30 Days to Learn HTML and CSS"  course on Tuts+ premium once we return from our holiday, and follow it up with the JQuery version.

Luckily Code School’s Try JQuery course is free, so I can still continue with some courses on Code School.

I also found out that one can e-mail Code School (and some other educational websites) and request discount because if are a full time student.

I have less than a week left of holidays when we return from Mauritius. In that time, I want to get more ideas from my mom and dad so that I can progress in helping them to redesign their respective websites.

On the side line, I am drawing rough sketches of the Plan Like a Bosch website I’m dreaming of. Oh! And now I’m not even mentioning the portfolio website that I wish to build…but what content to put on it…?

2 notes Learning Web Design web design web design beginner code school plan like a bosch

Link: Free Code School hall pass for 2 Days


I tend to avoid anything on the internet that one has to pay for. I thus never  considered Code School to learn coding from. However, two days ago, someone posted this link on our Startup Engineering Facebook group.

It made me discover the splendid interface of Code School! I love the quality of their courses and the graphics!

I almost ran out of free minutes, but then I quickly signed up for an account on my mother’s e-mail account :P. The problem is, I don’t know what course to take! I want to take all of them, but I only have 2 days left…where should I start?

1 note code school learning to code javascript html/css html css

Link: Why everyone should learn to code


8 notes coding learn to code readlists code programming mashable

My very first live website

image

My father asked me to write a simple one-page website for his company. I thought it would be easy, and it was…sort of. If it wasn’t for the fact that the website looked horrible for a week because of a small error that I couldn’t find until tonight.

Positioning.

As a complete newbie to CSS, I was completely overwhelmed by the different positioning methods and the clear controversy of the topic.

I started out using absolute positioning and defining everything in percentages. Then I redefined everything in pixels. Then I did everything over, this time using floats. (Mind you, I still don’t understand floats). Floats was the worst when zooming in.

The problem was that the website looked right when in my browser, but when zoomed or viewed on any other sized screen, it looked whack.

The solution: I had to define all divs’ positions and dimensions (duh!).

Rejoice

Oh well, hopefully one day I would  think back of this experience during which I had thought my web design prospects are doomed, and laugh at it, enjoying the success I eventually achieved.

Study, work, learn

With four more weeks of holiday left, I hope to become much closer to that thought! So, off to Coursera and then more learning about Javascript!

my first live website doomed prospects css positioning cape supra

Link: Eloquent JavaScript: A Modern Introduction to Programming


Since we’ll be using JavaScript in the Stanford Startup Engineering course, I’m studying some JavaScript tonight out of this very awesome, free online book.

1 note programming javascript Learning Web Design web development

So many stuff to read and learn!

My learning and developing has been going really slow. I’ve been distracted by all the many brilliant resources. I just don’t know where to start, what to read and what not.

Today, I’ve started participating in the new Stanford Coursera course, Startup Engineering. It looks like a great course, though I know it would take much effort from my side. I am sure it would help me a lot in becoming a developer.

I am also thinking about simultaneously completing the Udacity course, How  to Build a Startup.

One of my goals is also to start a blog (or more) that is useful to other people. I am aiming to rather write a blog focussed on a niche market and not try to compete with other much more competent writers who a focusing on the frequently searched for topics.

startup stanford coursera programming udacity course education mooc

Link: Don'€™t Fear the Internet - Really simple, quick, quirkily explained basic web design!


I spent some three hours tonight, reading Build Your Own Website the Right Way. It was very informative, but exhausting. Then, just now, when I wanted to take a break, I stumbled upon this website. It embarrassed me. It explains everything I studied in the past three hours, in a couple of minutes!

The two persons who present these videos are very fun to listen to and they make random jokes and comments.

For a very quick, fun introduction to web design….go to this website!

web design education web development