Languages and Frameworks I Know

#1 - Web Development

Posted by Solan Manivannan on September 3, 2016

There are many programming languages out there, and I've been fortunate to have encountered and used a few of them in my early venutres into computer science. Over the last couple of years I have found some fantastic resources that have helped develop my knowledge of these languages. It has now come a time where I feel the need to keep some record of them for not only my future self, but also anyone reading my blog.

Web Development

HTML, CSS, Javascript: are probably the easiest to explore, maybe less so Javascript. I personally haven't had the need to read a textbook. Javascript is interesting because you can have little snippets of code, but also large scripts that have several methods. If you are totally new to web development, then you should begin here. I recommend watching the Web Development - Computer Science for Business Leaders 2016 lecture by David Marlon. This will provide a great foundation for exploring further.

LAMP-Linux, Apache, MySQL, PHP: is a widely used stack for web development. Apache is the webserver that you use; just some configuration options you need to follow. MySQL is the database language, and PHP is the server side language. The PenPal group project (summer 2016) used this stack, and one of the most useful resources was the Head First: PHP & MySQL book. This is especially useful for people who haven't had any experience with backend web development and databases. The book takes a step by step approach to building a small dating website with basic login and profile creation.

Ruby on Rails: Rails is a framework used with the Ruby programming language. There are many sites today that have been developed using Ruby on Rails including AirBnB, Hulu, Bloomberg, Twich and GitHub. My internship in the summer of 2016 involved learning and building a website for a startup using this platform. This is probably one of the hardest to find resources to learn from because Rails is a fast growing framework, and as a result resources from only a couple of years ago are now out of date.

However, Michael Hartnl has produced a very good tutorial on building a "modern" basic website. I quote modern because Michael includes features that are now almost necessary for a professional website today such as password reset and account activation via email. He complements this with instructions on taking care of security throughout the website, and writing rigorous tests. You can find his tutorial on railstutorial.org

Using Ruby on Rails has definitely been a refreshing experience, combining a lot of computer science concepts together. That being said I would not recommend people who haven't heard of the MVC architecture, test driven development, and/or HTTP verbs to start learning this platform. Before learning Ruby on Rails I had theoretical knowledge of those concepts, and they clearly came to fruition when developing using RoR. Furthermore, my previous experience in web development helped me appreciate the different approach RoR takes.

Bootstrap: this is a front-end framework developed at Twitter, and is the second most starred project on GitHub. I would recommend people to explore Bootstrap once they have a decent understanding of HTML and CSS. Bootstrap is effective in building "beautiful and responsive" websites quickly. The framework essentially provides you with prestyled components to make your website look good, by simply adding classes to your components. Today we require websites to be appropriately sized to the device that they are on (mobile/tablet/laptop). The Bootstrap framework allows you to do this easily with columns, rows and stacks. I would recommend watching Responsive Design with Boostrap by Neel Mehta for the best overview on the powers you have when using Bootstrap. The getbootstrap.com website also provides a quick reference guide for more details.

jQuery: this is a feature-rich Javascript library, and is the most popular one with more than half of the top 10 million highest trafficked sites using it. It is extremely useful when doing DOM (document object model) manipulation and AJAX queries. Stackoverflow is your main resource.

AJAX - Asynchronous Javascript and XML: web techniques that involve multiple technologies to create single page web applications. Take a look at the design of google mail, it feels as though you are interacting with a desktop program as opposed to a website. Probably best learnt by creating things. For example, the instant messaging platform part of PenPal was built from scratch using such techniques.