You want to receive our Picks of the Week every Monday morning?
Thank you for reading the fourth edition of the Knowledge Seven’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.
How to Install a Wireless Card in Linux Using Windows Drivers
Some years ago, life was tough for Linux fans who wanted to enjoy Wifi on their laptops as drivers were only available for a few chipsets. In 2011, things have greatly changed. People have written open source drivers for quite a lot of wireless chipsets from companies such as Atheros, Broadcom, Cisco, Intel, Lucent, Marvell, Ralink, Realtek and ZyDAS and, naturally, this means that Linux now supports Wifi out of the box. But, to be fair, there remains some more obscure chipsets which do not have corresponding open source drivers where the only solution is to use existing Windows drivers using a technology known as NDISwrapper. Yes, Linux can use Windows drivers! This article explains how to do that using the latest Ubuntu Linux.
The Java Tutorials: Concurrency
When Java 5.0 was released a few years ago, most people didn’t pay attention to a new standard library called Java Concurrency Utilities. This library allows a programmer to write concurrent programs easily by providing classes such as executors, futures and concurrent data structures. Here is a simple explanation for concurrency: a concurrent program is a program with parts which execute in parallel when run on a parallel computer. Running a non concurrent program on a parallel computer is stupid. But running a concurrent program on the latest multi-core processor is nice. When a programmer writes a Java program using classes from the Concurrency Utilities, she is being explicit about which parts are concurrent. Given that all computers now are parallel, this is a good thing to do.
Why You’re a Bad PHP Programmer
PHP is an excellent programming language. It wouldn’t be used by Facebook and Wikipedia if that wasn’t the case. But, to be fair, a lot of PHP programs are written by people who do not give a lot of importance to maintenance and, consequently, their PHP programs, while running well, exhibit a lot of “smells” (a term coined by Martin Fowler). Those smells are, for example, having no comments, writing brief code instead of being clear, not following standards, etc. In other words, trying to be too clever. The thing is that we are all guilty of that. We start with a quick and dirty solution and, as soon as it runs, release it to the wild without realising the maintenance nightmare that might result. This article explains how to be a good PHP programmer.
Managing Hierarchical Data in MySQL
The relational model as used in most relational databases including MySQL is not really intended to represent hierarchies. In fact, the relational model was a replacement for the hierarchical data model as used, for example, in the venerable IMS database developed in the 60′s by IBM. Unfortunately, the real world is full of hierarchies e.g. network of people, components in a machine, our solar system, blogging and forum software, etc. and, consequently, it’s tough to model such objects using MySQL. Tough but not impossible. The idea is to use adjacency lists and/or nested sets and then write special SQL queries. This article, by Mike Hillyer, explains in detail how one can use MySQL intelligently to represent such hierarchies.
Taking the Mystery out of Scaling a Company
It’s fun to run a startup. I know. I am. But, sometimes, some startups become large and then care must be taken to scale them properly. For instance, one must be ready to “give ground grudgingly”. Things that were easy to do when there were only two people in the company become hard when there are twenty employees. Specialists are frequently needed (e.g. accountants, HR people, etc). We must make sure that people communicate properly and that people do not misunderstand each other. In fact, the decision making process also becomes more complex as head count increases. Naturally, this implies that the company needs to change some of its processes. The thing is that we don’t want to address those concerns too early or else the startup will seem sluggish. On the other hand, waiting too long is bound to cause a lot of problems in the long run. This article shows what works, when and why.