March – In Summary

I’m a month and a half into my three month internship now, where I’m learning a lot of varied stuff each day. I’ve been lucky enough to work on some important features for the application my team are working on, which I’ve done primarily with HTML, CSS, Python and JavaScript.

I’ve become much more confident with git, where I can rebase my code almost without a hitch. I had been told to fear rebasing due to the risk of using it, but now it’s not a scary thing at all.

I’m also slowly improving my JavaScript and jQuery abilities. I really like JavaScript as a language and am interested in the many frameworks that are out there.

I’m better at writing simple tests in both Python and JavaScript. I’m still writing them after the fact though and hope to practice Test Driven Development more.

By the end of April I’d like to have made a start on a fully accessible lightbox. Some exist but are either outdated, don’t have good documentation or don’t have an accompanying tutorial. Hopefully I can fulfil all three of those needs for myself and pass the code and knowledge on to others.

Advertisements

February – In Summary

February

Despite being the shortest month of the year, so many wonderful and varied things have happened. Although I haven’t built any one standalone thing, I’ve had the opportunity to work on a multitude of things, build up some skills and learn some new ones.

The biggest news is that I’ve started an internship. I’m working as a junior developer with a really lovely team currently stationed within M&S. I had the opportunity to shadow them for two weeks last year and they asked me to come back and join them for ~3 months.

I’ve only been there for two weeks so far so I haven’t written too much code but I am already learning more about HTML, CSS and JavaScript. A lot of the teams work involves Python too, so I am looking forward to working with that language more. As well as programming skills, I am also learning a lot about working in an Agile team and working as part of a team in general. The people I get to work with are great and experienced in all sorts of things I hope they will teach me. I’m really greatful for the opportunity.

Before I started my internship I got approached by another team asking for my help on a project. Unfortunately I can’t share what it is right now but I’m learning a totally new set of skills and I’m really excited to see the outcome. I should be able to share what I’ve been doing in a few months.

Books I Read
JavaScript for Kids
Python Testing with unittest, nose, pytest

March Plans

The overall plan is just to keep doing well in my internship, learning new things and reading what I can. I’m enjoying doing a 9-5 and working somewhere that’s not at my desk in my house. I’d like to work on my testing skills by finishing JavaScript Testing Recipes, and will be attending a workshop on Test Driven Development that takes place in a couple of weeks.

January – In Summary

At the end of each month of 2015 I’ve decided to write a summary post about the programming I’ve been doing; the things I’ve built, the books I’ve read, the stuff I am learning. This is the beginning of that series. It mainly serves as a diary of sorts for myself, but others have said that they would find my progress updates of interest.

January

January was sponsored by Python. What started as a want to learn the basic syntax so I could understand what my friends were working on, ended up being a full time interest in the language. I’ve read several python books which I’ll list below; covering topics like the basic use of the language, test driven development and frameworks like Django and Flask. I’m halfway through the Python Koans and even submitted and had merged a pull request for the project.

I built my first Python project, “Guestbook“, an homage to the 1990s “Web 1.0”. Initially it was built using CGI (Common Gateway Interface) which is the first web technology that allowed programmers to initialise scripts in web pages. I wrote a bit about it here.

The web host I was using didn’t like CGI scripts on its platform, so I rebuilt Guestbook entirely using the Django framework. Then, because “why not”, I then built it again using the Flask framework. I think I prefer Django because it’s a slightly easier setup, but I love Flask for it’s easy URL routing. I may continue to build things in one framework and then convert it to another, just to learn and further ascertain which framework is “better”.

I started to explore testing in Python, reading about Test Driven Development (TDD). Basic testing is easy enough for me to understand, but it seems to be a large hill to climb. I could only find one book on Python testing and it was very much about TDD whereas I’d like to just learn about tests with no mantra on how to do things (at this stage). If anyone knows any good books/resources on testing in Python that cover unit tests, acceptance tests and a couple of different testing frameworks, please let me know!

I recently started the MITX: 6.00.1x Introduction to Computer Science and Programming Using Python course on EDX. I’ve only completed the first week so far (100%!) but I’m looking forward to learning a little more about Python and it’s real world applications. Something I am struggling with at the moment is understanding how Python (and programming languages in general) is used in the real world, not just to build my whimsical websites.

Books I Read

A Byte of Python
Test-Driven Web Development with Python
Flask Web Development: Developing Web Applications with Python
Dive Into python 3 (70% of it)

Things I Built

Guestbook – CGI Version
Guestbook – Django Version
Guestbook – Flask Version (Needs work)

February Plans

The plans for February are largely similar to that of January’s. Keep learning, keep building. The list of books to read grows all the time, I hope to read “The Pragmatic Programmer” and “The Practice of Programming” this month. Both are language agnostic and a lot about the theory of programming rather than teaching you how to build specifics.

I’m not sure how much I want to learn new things. I have a list including “Learn Awk” and “Learn Application Security” which appear to be fun but I don’t want to overload myself too much with new knowledge before I let the knowledge already gained settle. However, I will continue on with the MITx course.

I will try and build at least a couple of small things. The smaller the better because I want to try building from a TDD perspective and if I attempt to build something too large I will get lost in a tangle of messy unit tests with spotty coverage.

See you next month!

Guestbook

In summary:

I built my first Python project, ‘Guestbook’, which uses Common Gateway Interface (CGI) and is a throwback to the web of yesterday (“Web 1.0“). Check it out on GitHub and let me know what you think. Perhaps you can help with some of the outstanding issues!

Pixel Content Divider

When I first started using the Internet, guestbooks were popular. I’d be able to go to a website like Lissa Explains (which serves as the inspiration for this project) and leave a message with my name and a comment to the author of the website. It was a way of messaging people before you had your Facebooks and your Twitters.

For me, it was my first understanding that people all over the world could converge at the same place at the same time, to talk to each other.

Common Gateway Interface (CGI) was what these original guestbooks were powered on. CGI was introduced in 1993 and kickstarted the move from websites just displaying static HTML to being able to run scripts on your web server and displaying the results on your website.

In 2015 we have server-side languages like Ruby and Python, as well as client-side languages like JavaScript that can do this for us with ease. In fact, the cgi technology used in this project is powered by a cgi module within the Python language. This project is just a little homage to what the web was only a decade or so ago.

I worked on this on and off over the last week. Some days it was smooth sailing, other days I spent eight hours debugging absolute nonsense. I learnt more about the process of building something and had a lot of fun doing so. It’s not as good as it could be, there are a few things I want to do with it that I can’t wrap my head around just yet, but it’s something I can definitely come back to.

Something I learnt more about was the temptation and reliance on frameworks to do our bidding. I specifically chose not to use something like Django for this project as not only is it so-totally-not-web-1.0, I also wanted to understand how useful frameworks were in the first place and I concluded that they were very useful. But in this instance (I do love Django), I conclude with annoyance.

I encountered a lot of problems when making this script, partly due to lack of experience but also because of how things exist on the web these days (people don’t seem to really use cgi anymore). When searching for solutions, a lot of people told me to just port it to a framework like Flask, webpy or Django. That was very frustrating.

Yet I do understand, because I can’t expect someone to sit me down and explain the nitty gritty details of my project on their own dime and it’s easier to just tell me to go for an easy solution. I imagine (and may as well go and try it) that building this guestbook using Django would have been much easier, but I probably wouldn’t have learnt as much as I did.

As a new developer

As a new developer, I feel inadequate. I see people publish their side projects all the time. I see my friends in good jobs. I see people submit pull requests to code I don’t understand, for things I don’t understand. I can stare at the code I’ve written and it all reads as gobbledegook. How many hours a day should I be programming? Do 10x programmers exist? If so, am I one? If not, why not?

As a new developer, I feel a constant pressure to prove that I am learning. I write blogs on what I am doing, I tweet that I am writing code. I post code-related jokes. All as a way of saying “hey everyone I can code too, I’m like you!”. If I can prove that I am learning then maybe I will be able to join the cool kid programmer club. It’s also a way to prove to the internship givers that I am worth hiring, because I am prepared to learn.

As a new developer, I don’t care what you are programming in, I just want to know what you’re building. A programming language is just a programming language to me. You’ve got your JavaScripts and your Rubies and Pythons and they all do cool things. I don’t care about semicolons, or tabs over spaces, or why you think npm is the best package manager of all time 2K14. I see these arguments all the time and am perplexed by them.

Maybe over time I will come to understand this, but right now I don’t get the pressure to be a devout follower of any one thing. I am able to encourage people to use Python as a first language  but I am also not going to kick up a fuss if they decide to use Ruby or Go or Rust or whatever damn fine language they’ve set their sights on.

As a new developer, I am easily swayed by the opinions of people I respect, or at least view as more experienced. This post was kicked off by a few back and forth tweets on open source contributions. One person stated that I don’t need to worry about making open source contributions and I went “Yay, cool, less pressure”, another seemed to state that I am of little worth if I don’t contribute “Fuck, okay, I guess I better get on that then”. I wish programmers were more aware of the things they are saying and the attitudes they express, and how that might effect a young padawan like me.

As a new developer, there is a lot of pressure to do well, lest my programmer costume be rescinded. I need to make money to live, but don’t feel I am worth hiring. I want to make contributions to open source to give back to the community, but everything seems way over my head. I get stuck and reach out to the community for help and can either receive encouragement and support, or be judged and told I am doing it wrong (“lol y are u doing that just use jquery”).

As a new developer, everything is new and exciting. I can have my own website up and running in minutes with just a little sprinkling of HTML and a free host. I can write code to help others, I can write code to help myself. I can be ecstatic an entire day because I wrote four lines and it didn’t break on execution. I can engage with my peers in ways that I could not do so before, I can understand them better and work with them. I can (and love) sharing my journey with others, I want people to be able to learn from my mistakes and also be encouraged by my progress.

I can code my own path in this world, but I need your help and your patience and your understanding to make that path easier. In return you have my patience and my encouragement and my understanding.

newdevheart

How I built a website

One of the biggest problems I have experienced in learning to code is translating my knowledge to something physical. Over the years I have seen many developers ask the question of “I’ve learnt HTML/CSS, what now?”. The answer is more often than not:

“Build something”

So, I built something. It’s a personal website/portfolio and I want to take you through how I built it. Although my goal is to show others how they can build a website, it’s also a great way of documenting my process and progress.


Have an idea

Your website doesn’t need to be special. It also doesn’t need to get you favourites or tweets or fist bumps or 1,000 visits a day. It just needs to be something you’re going to enjoy.

I’m sure that no-one sits down and immediately conjures up an amazing idea. Most of my ideas have come to me when I’m falling asleep or taking a shower. I can think of something exciting one day but not have another idea for a week or two.

Don’t try to force yourself to have an idea. It doesn’t work like that and leads to a lot of frustration. Start simple. Build for yourself. Often I’ll see something in the world and say to myself “Huh, I think I could build my own version that’s better suited to me”. Or “I’d like a tool that does this boring task for me, so I’ll try to build it myself”. That right there is a brilliant place to start.

I have a long list of ideas. None of them award-winning but all something that interests me. If something comes to you, write it down and when you’ve got the time to build something you can take a look at all the fun ideas you came up with.

A list of ideas


Sketch your idea

All you need is a pen and a piece of paper. Before starting my portfolio I sketched out the basics and adding some notes on what colours and fonts I’d like to use.

My finished product look quite different to my sketch in the end, but it was a great starting point. I also sketched many versions of the website so don’t be afraid if your final product looks nothing like what you started with.


Mock it up in Photoshop

After sketching my idea I took to Photoshop and laid out my site, according to the sketch I had done. Some people design in Photoshop before progressing to code, some people prefer to go straight to the code and design in the browser. Do what feels best for you.

An initial design of my website in Photoshop


Set up your project

I like to keep all my projects in the same folder on my desktop. I created a new folder within my projects folder and set up the following within it:

The Project file structure

The index.html stays in the top of the directory (the root). The other most important files live within my “assets” folder. This separates my CSS, JavaScript and images into their own folders to keep it nice and organised.


Lay out your HTML

Without HTML, there is no website. It contains all the information you will display on your site, whereas CSS just makes things look better.

I started by laying out the containers of each part of my website: the header, the main content and the about article. I didn’t know exactly what content I would display and went through several changes before settling. That’s okay, just make sure to add in some fake content so you can see how it will all look when it comes to styling with CSS.


Choosing Fonts and Colours

In my sketch I wrote down a few colours that I wanted to use in this project. Most came from my twitter profile, which in turn were colours that I matched with my avatar (the main image in my site header).

There are some great tools out there for finding and creating colour schemes, like Colour and Coolors. I decided to keep this site simple and clean, with one or two accent colours.

I also picked two fonts from Google Fonts. These are free to use and easy to include within your project. I wanted to use a clear sans-serif font Open Sans for the body text and subheadings and a serif font Roboto Slab for the larger text like the large quote and the “About” heading.

I like light fonts but it’s important not to have a font with too low a font-weight (boldness) as it can make your text unreadable. It’s also important not to use too many fonts as it becomes too frantic and messy, as well as increasing the time your site will take to load. You want your reader to absorb what you’re trying to say, not the fifteen fonts you used in a single paragraph if they decided to wait for them to load rather than violently exit your page.


Styling with CSS

The first thing I did was add normalize.css to my CSS folder and link to it in my HTML.

Building a website in one browser (e.g. Chrome) does in no way mean it will look the same in another browser (e.g. Internet Explorer). Normalize.css aims to fix this as much as possible by providing your site with a sort of “reset”. It allows your site to display well across browsers and I believe it’s crucial to developing a site that looks good across many different browsers.

I then set my own styling with the most important styles first, like the fonts and font sizes for the body and the headers. I then proceeded to work down the page and style each element in turn as best as I could without jumping around the page too much.


Accessibility

When building anything you should always think about your user. It is important that any app, product, leaflet, letter, poster, website, bench, shop or anything else in the world can be used by as many people as possible. To understand why sites need to be accessible, check out “Why Bother with Accessibility?” by Laura Kalbag.

Making my site accessible was fairly simple. I added ARIA landmark roles in the appropriate places to denote what type of content it was to screenreaders (used by people with poor or no vision). I ensured that all links were accessible using the keyboard and were focused well in CSS.

When it came to the social icons at the bottom of the page, I added in text denoting what website each icon linked to. I hid it from the browser but made sure it was visible by screen readers.

A few people patted me the back for thinking about accessibility when building my site. Although that makes me feel proud, it shows that accessibility is not thought about enough if I can be praised for giving it the attention it deserves. If you’d like some awesome resources on making accessible websites then check out A11Y Project.


Testing

As I mentioned before, it’s rare that a website will look the same in every browser and on every device. Testing can be time-consuming and even tricky depending on the resources at your disposable, but it’s incredibly important. Test now so that you don’t find out your website is broken when it is already there for the world to see.

If you’d like a quick illustration on why it’s important that you test across mutliple devices and browsers, below you will find the stats from people who visited my website over the last 24 hours. Some came from within an app using Safari (26%), some came from Android (3%), some came from Internet Explorer (2%) and others from Chrome (39%) and Opera (2%). It is important these different users have a good experience on your website, so do test in as much as different situtations as you can.

analytics-testingI tested my website using the latest versions of the following browsers: Chrome, Firefox, Opera, Safari and Internet Explorer. It is easy to downloaded the first four. If you’re not on a Windows machine it’s a little harder to test on IE. To test on IE you can load a version of Windows onto your Mac using Virtual Box. Microsoft themselves have made a website showing you how to do this at no cost: Modern IE.

There are tools out there that will take screenshots of your site in a tonne of browsers and devices and send them back to you. I asked some friends what they used for testing and you can check out their answers here. Modern IE will also take screenshots of your site free of charge in nine widely used browsers/devices.

It’s awesome if you have unlimited access to a multitude of devices that can access the web but you probably don’t. I have access to an iPad, a Samsung Galaxy S3 and an old iPod Touch, I am hardly covering the entire population with these.

If you’re on a Mac then you can use XCode to load up an iOS Emulator which allows you to test on several iPhone and iPad versions. For a rudimentary approach you can also resize your browser to a mobile device width but this isn’t really a foolproof alternative.

Other things I tested were whether the site was readable, well contrasted, valid and accessible.

My last point about testing is this: You should be testing your website all along the development process. That way you can fix bugs before you’re at the end of your project, before it gets too frustrating and you potentially make it worse. I have experienced the situation in which a developer didn’t think to test their product until the end. It was hours of painful repetitive testing for me whilst they tried to fix the tonne of bugs I was reporting to them. It was such a mess and would have been so much calmer if they had tested their site throughout.


Share it, have your friends look it over

So I’ve just built a website and I learnt a lot of stuff by building it. Despite this, I know there are things I could have done better. So I’m sharing my code with you in the hopes that not only you will learn from it, you’ll also be able to point out my mistakes!

You can find the code for my personal site here and you can view the final site here. Please let me know if you have found something that doesn’t work, or something that I could do better!


I hope this helped! Don’t take my process as gospel. I’m sure it will change over time and even if it doesn’t, many people build websites in different ways.

One month on

A picture of me with my laptop.
Photo by Michal Stefanow, edited by myself

It’s been a month since I wrote “I’m gonna be a developer“, marking one month since I started my journey with the web. A lot has happened since then despite only being a few weeks ago.

For the first couple of weeks I worked through the courses at Treehouse. There are a great bunch of videos and hands on coding in their courses. They’re worth the monthly fee, but if you want to get a free month and help me pay for mine in the process, you can sign up with my referral code.

Although the courses are great, they don’t beat real life experience so I started a couple of projects. They’re both in their early stages and they’re nothing special but it’s been fun writing real code for real things.

I’ve had the freedom to explore. I’ve gotten better with my HTML, I’ve played around with Sass and Node and am having a fun with all the new things. Last night I tried my hand at some hardware hacking on the Arduino with johnny-five.

The not-so-great

I’ve not come as far as I had hoped. There are a lot of half-finished things sitting on my GitHub and written down on post it notes. I’m not letting it get me too much down as I’m sure we can all be victims of trying to do too much too soon and pushing ourselves too hard in doing so.

I have definitely had days where I don’t push myself hard enough and days where I push myself far too hard. I had to take a week out due to some emergency surgery and spent the time trying to work when I was still under the effects of anaesthesia. On the other hand, when I’ve had no plans I’ve felt unable to get up and do things.

Distraction is also a problem. I sometimes find it hard to focus on one project or one bit of code and find myself jumping around a lot. Although it’s exciting to work on different things and learn new things, it can mean losing my place and being unable to focus. It happens, but I still have a long way to go in learning to manage myself and my time well.

The better

Since sharing my new career path with friends and family I’ve had nothing but support. A friend has given me an opportunity to shadow their team and another gave me a ticket to a conference where I will attend my first web event as a developer.

I’d like to thank all the people who listened to me and answered all my relentless questions on Twitter. I started a git repository where I pose questions and it’s received a great response. A lot of the questions are broad so I hope it is useful to others.

As for what’s next? Keep on learning.

I’m gonna be a developer.

My first computer was given to me by the Vicar at our local church. I fell in love with it and was never far from a computer again. I was lucky in that my father was also into computers and it wasn’t long before I was gently lulled by sweet sweet dial up sounds and pretending to be asleep when in reality I was trying to monopolise the in game market of my favourite MMORPG.

When I was around 13 years old I used to frequent a thing called “Habbo Hotel”, a teen game-like chat room type thing where you could have your own pixel avatars and buy little pixel furniture. I started to use fan sites for the game where I would make my own versions of these pixel people. The site exposed me to my first online friends, one or two of which would “build websites”.

Wait, regular people build websites?

So I tried to learn PHP with Tizag. It was crap. I wasn’t enthusiastic. It wasn’t long before I discovered HTML and was making “awesome” Myspace layouts with image mapping and more bold tags than are considered sanitary.

But I got older. I focused on secondary school and computers became no more than an everyday tool to me. I resigned myself to the fact that I would never be the cool developer I wanted to be. Then came sixth form, then university where I obtained a Psychology degree and financial debt in equal parts.  After three years of uni I was exhausted and I knew I didn’t want to continue on working in Psychology like I thought I did. I existed with no real direction.

I was given a rare opportunity that sky-rocketed me back into the world of web development and spent the next two years organising events for developers. Through organising meet-ups, conferences and workshops I was able to enter the “web community”, something I never thought I’d be able to do. The majority of my friendship group quickly became full of web developers, web designers and UX’ers. I was like a kid in a sweet shop, able to have casual conversations with some seriously awesome and talented people who I’m sure consider themselves to be normal but I still regard them with awe.

I like to think they accepted me as their own, in so much as I would regularly have the “wait, you’re not a developer?” talk. That’s the thing, I wasn’t a developer like the rest of them and it really depressed me. I re-learnt HTML and CSS to a reasonable degree but never really used it. I just wasn’t motivated and although I had a whole legion of developers at my fingertips, didn’t think I would be able to make it.

In April 2014 I became unemployed for health reasons and those health reasons controlled me for a further four months before I started to wake up from the haze. I immediately became aware that I had no job and no money and that alone is enough to have me crawling back into bed. Most importantly I had no real goal for my life. I knew I needed to do something about it though and the one and only thing that would dance around my head 24/7 was “be a developer” which the cynical part of my brain replied “lol no you’ll never be able to do that”.

At this point I felt like a massive failure of a person already so I didn’t think I’d be able to screw up trying to learn development enough to fail even more. I signed up to CS50, a computer science course with Harvard at edX (David Malan is the best lecturer I have ever had). It’s a very engaging and challenging course but the strict structure and the ‘C’ learning had my mind wandering. So I started to play with JavaScript.

I have tried to learn to code on a handful of occasions. Though fun and rewarding, I just never had the time due to education or work or simply exhaustion. Now all I have is time. I already knew the basics of JavaScript but I finally feel like it’s making sense. I’m excited. I can’t stop thinking about it. I’m actually BUILDING something for myself for the first time. I’m studying (writing notes too!) and sharing things I never did before. I spent a whole day excited by ‘document.getElementById’ in the console.

Most importantly I’m not being strict with myself. I’ve always made learning about “succeed or you are useless and you will die” but that will never be a conducive way for me to learn. If I don’t feel like working on my project or studying a particular chapter of JavaScript one day, I learn something else that’s useful instead to get myself excited again and then go back to my main focus.

What am I going to do with all this new found information? I’m gonna be a developer. I’m going to keep learning every day, I’m going to build, I’m going to be frustrated and elated. Then I am going to seek an internship where I’m going to learn, build, be frustrated and elated all over again.

I will call myself a developer and it will be genuine. Hopefully my young self from the early 2000’s will finally be pleased.

Charlotte’s totally subjective opinion on the best guides for learning programming languages

I’m currently taking part in the edX CS50 Introduction to Computer Science course with Harvard. I’ve seen a lot of questions from fellow students about good resources for a variety of languages so I thought I’d try and help out by listing some good resources I’ve come across over the last couple of years.

HTML & CSS
These things tend to go hand in hand when it comes to web development tutorials so here are some nice resources to get you started in the basics of website development: HTML & CSS.

  • HTML & CSS with Shay Howe. Once you’ve finished with Shay’s beginners HTML/CSS course you can move on to his more advanced course.
  • Codecademy: As an interactive learner, Codecademy is a perfect tool for me to get the initial feel of a language. With step by step instructions and an interactive programming tool, you learn a lot and walk through a lot of basic programming projects.
  • If watching videos are more to your taste, the videos at Treehouse come highly recommended. It is a paid website but you can get a free month which is quite a long time if you schedule your learning time well. It can be a little cheesy at times but they do have a cool frog mascot. HTML at Treehouse, CSS at Treehouse.
  • CSS-Tricks: Not a complete guide to CSS as such but a great website to keep up to date with the goings on with CSS as well as discover some cool tutorials.

JavaScript

  • Eloquent JavaScript: I’m currently working along with this and it’s fantastic, particularly as the new version of this has recently been released. It’s an online book that has great explanations and in-depth exercises alongside an interactive code writer embedded in the text.
  • Learn JavaScript Properly: A complete guide to learning JavaScript that is like a step by step of what resources to use and work from. There are others like this but I chose this one because it has an active reddit community that go through the course together.
  • Mozilla Developer Network (MDN): I cannot speak highly enough of the great stuff you will find on MDN. It has it’s own recommended resources but the best part for me it has clean and demonstrative documentation on the JavaScript language.
  • Codecademy
  • Treehouse

Node.js: 

Node.js is JavaScript but on the backend/server. It’s something I hope to learn soon and it has added bonus points of being written in C. These are a couple of resources I’ve been told are good.

Ruby:

  • Learn Ruby The Hard Way: I love the “Learn Code The Hard Way” books by Zed Shaw. They’re no nonsense, walk you through the language step by step and challenge you along the way.
  • The Ruby path on Codeschool: A website (in my opinion) rather similar to Treehouse in that it’s videos and interactive programming parts. A couple of free lessons but the grittier details are learnt with a subscription, of which you can find free trials on the internet. Bonus points for having zombie themed tutorials.
  • Why’s poignant guide to Ruby: Full disclosure, I personally could not get through this book. I love quirky things, I love illustrations and such but this was just a bit too “bad caffeine trip” for me. But it is an interesting book, even just to look at.
  • Codecademy

Python & Django (A Python Framework):

PHP:

Android Development (by request):

Podcasts:
Here are a couple of podcasts I like at the moment. It’ll introduce to a wide array of things to you and you can hear from a lot of interesting people in the web industry. Like most of the resources here, a lot of it is around front-end development but you will get some back-end, UX and other things thrown in.

Bonus: Spoken Languages
One of you on the CS50 Facebook Group asked about resources for learning Japanese. Sadly I don’t know any Japanese-specific guides. But I am currently learning Danish using Memrise and Duolingo; both of which have great ways of learning a variety of languages such as French, Spanish, English, Irish, Dutch, German and more are being developed.

A tip from me:
Pick one or two good resources that suit your way of learning, you don’t need 18 tutorials to learn your language. If you spend too much time reading a tonne of resources that say the same thing you’ll spend more time learning about the nuances of each tutorial writers way of teaching rather than learning the language itself.

Also if you don’t know the language don’t bother with the frameworks yet, I included Django (by request) and Node.js (my interest) in this list but don’t worry about these until you’ve learn the language the framework is for.

 

I hope this post was of some kind of use. Obviously everyone learns differently so these resources may not be to your taste. If I come across better resources I will update this post.

Good luck!