You want to receive our Picks of the Week every Monday morning?
Thank you for reading the third edition of the Knowledge7’s Picks of the Week.
Every week, Avinash Meetoo will make you discover interesting articles and websites to help you broaden your understanding of the world of open source software and information technology in general.
Hacker Chat: Pinboard Creator Maciej Ceglowski Talks About Why Boring Architecture is Good, and More
Writing a web application in PHP is easy. But writing one which performs well when hundreds of users are accessing it concurrently is difficult. In this article, Maciej Ceglowski, creator of Pinboard, a very well known alternative to Delicious (which got rave reviews a few weeks ago when it would seem that Yahoo! was going to discontinue Delicious), explains that the KISS principle should apply to the architecture of PHP applications too. For instance, he mentions that having adequate RAM on servers is crucial, that dedicated hardware is always better than virtualised hardware, that it is important to optimise MySQL (see next pick) and that frameworks should be used with caution.
MySQL Performance Blog
If one wants to increase the performance of MySQL, the database server needs to be properly optimised: from key runtime variables (like key_buffer_size) to storage considerations. Then the database schema needs to be properly devised while taking into account current and future querying patterns. Specific SQL queries have to be written in such a way to perform as efficiently as possible and, if this is not possible, stored procedures might need to be used. Of course, indexing is always a possibility… if used judiciously. Buffering and caching possibilities also need to be explored. In other words, optimising MySQL is not trivial. Reading the MySQL Performance Blog provides excellent insights into the difficult art of MySQL optimisation.
The Scala programming language
The Java Virtual Machine (JVM) was originally devised to run bytecodes generated by a Java compiler. But Java is a very verbose programming language and some even say that it’s not very powerful as it lacks most of the expressive constructs found in functional and scripting programming languages. Scala is a new programming language which compiles to bytecodes which then run on the JVM. Scala is 100% compatible with Java and existing Java libraries, is fully object-oriented and supports functional programming. This allows programmers to write very powerful programs in just a few lines of code. A notable example of Scala in industry is Kestrel, the message queue server which forms the core of Twitter. Due to this high profile adoption, Scala has gained the respect it deserves and some people are even starting to believe that it’s the next big thing in programming.
GitHub
GitHub is an online service which hosts software developed using the Git source control system. A source control system allows multiple programmers to work on the same software concurrently. GitHub comes in two flavours: it is free for those who develop open source software and those who want to use it to host private repositories have to pay. Git was originally developed by Linus Torvalds to ease the development of the Linux kernel. Since GitHub was launched, a number of notable open source projects have switched to it. Examples include Erlang, Hibernate, jQuery, JUnit, Mozilla Labs, Perl, PHP and Ruby (including Ruby on Rails). One of the interesting aspects of GitHub is its ‘Explore’ facility which provides insights on the most active projects and programming languages in use (right now, it’s a tie between Javascript and Ruby).
How to Start a Startup
Paul Graham is one of my gurus. He co-created Viaweb, the first ever e-commerce website, which Yahoo! acquired for $50 million in 1998. Paul then created Y Combinator with the help of some friends to provide new startups with seed capital and advice. Some notable startups funded by Y Combinator include Reddit, Dropbox, Posterous and Justin.tv. So Paul knows what he is talking about when he says that the three most important things to get right when launching a startup is to begin with extremely competent people, to make something customers actually want and to spend as little money as possible. One thing I always tell people is that it’s not normal that only few young people in Mauritius want to emulate people like Bill Gates, Steve Jobs or Mark Zuckerberg when they finish school. Maybe “How to Start a Startup” needs to be taught in Mauritian schools…