OS X history and overview

I was browsing through the osxbook.com website maintained by Amit Singh, he also happens to be the author of excellent book: Mac OS X Internals. Along with his book he has included some bonus material on his website. Here is the presentation (flash) with his book:

[swfobj src="http://osxbook.com/book/bonus/misc/osxinternals/osxinternals.swf" width="800" height="600" align="center" allowfullscreen="true"]http://osxbook.com/[/swfobj]

You may also want to read this wonderful chapter about history and development of OS X.

GDE Error: Unable to load profile settings
Related articles

formal grammar

found an excellent introduction to grammars here:

I ran across the Wikipedia article on this subject today. While I found it fascinating and enthralling, it also took me about half an hour to properly decode the notation being used, so here I have interpreted it for the layman.

What is a formal grammar?


Begin with symbols. A symbol can be anything. One common example is an upper- or lower-case letter of the Roman alphabet.


If we allow other special characters to be symbols, then we could also have:


But our symbols could also be English words. If this were the case, then our symbols would be things like:


A symbol in isolation does not need to mean anything.


A set of symbols is called an alphabet. An alphabet must be finite.


A string is a finite series of symbols. All the symbols must be chosen from the same alphabet. If we use Roman letters as our alphabet, then some example strings would be:


If our alphabet contained special characters, then some more example strings might be:


If, instead, our alphabet consisted of English words, then a string (or sentence) would simply be a series of words, such as

“bucket July embarrass whatsoever isn’t a the”

Although every string must be finite, notice how there are infinitely many possible finite strings.

“bucket bucket”
“bucket bucket bucket”
“bucket bucket bucket bucket”

For every alphabet, there is also a single empty string:


Notice, again, how strings have no meaning ascribed to them.


Given an alphabet, a formal languageL is any set of finite strings over that alphabet.

  • A formal language may contain a finite number of strings.
    • The smallest possible language is the empty language, containing no strings at all (this is not to be confused with the language containing only the empty string).
  • Or, a language may contain infinitely many strings.
    • The largest possible language is the one containing every possible finite string.

Strings which are in L can be considered “correct”. Strings which are not in L can be considered “incorrect”. For example, if our alphabet was the set of all English words, then our language could be the set of all grammatically correct English sentences:

“The cat sat on the mat”
“Colourless green ideas sleep furiously”

For a language L to be well-defined, we only need one thing: a process which generates all of the strings in L.


A formal grammar is a finite set of rules for generating “grammatically correct” sentences.

A formal grammar works by starting with a single “unfinished sentence” or “root”. Then, different rules are applied in turn, modifying the sentence each time, until the sentence is deemed to be “finished” and the process terminates.

(By definition,) the set of sentences which can be generated by following the rules of a formal grammar comprise a formal language. The sentences which cannot be generated in this way do not fall in the formal language.

Once again, note that a grammar ascribes no meaning to the language it generates.

continue reading…

wireless network hardware

Lifehacker has posted an excellent series of tutorials on setting up and trouble shooting your home wireless network hardware.

Here are the five tutorials:


Lesson 1: Router Hardware

Router Basics

Your router is the glue that holds your home network together. It connects all your computers to one another, either through Ethernet cables or a wireless connection. A router is different than a modem: your modem connects you to the internet, while your router connects your computers to one another. When you hook up your router to the modem, however, you’re then able to share that internet connection with all of the computers on your network. Sometimes modems will come with routers built-in, but this isn’t always the case.

Devices that connect to your router—that is, the computers, tablets, smartphones, DVRs, game systems, and so on—are called clients. Each client on the network is given an IP address, which helps your router direct traffic. Clients within the network get a local IP address, while your modem gets a global IP address. Global IP addresses are like street addresses, while local IP addresses are like apartment numbers: one lets you find the building in relation to the rest of the world, while the other lets you find the specific location within the complex. These addresses make sure the right information from the outside world gets to the right computer on your network.

Routers have a number of different features, so we’ll go through some of the most common router specs and how they affect your home network.


Lesson 2: Router’s admin page

In the first lesson of our networking night school, we looked at the basics of router hardware. Today we’re going to start setting things up.

The goal here is to get the most important things set up and then explain all the other details you ought to know. You may not use every section in your router’s admin page, but understanding the features will help. We’re going to use the DD-WRT router firmware in our examples—since it’s a Lifehacker favorite available for many routers—but we’ll explain how each topic applies to whatever router you have. Your router may not have every feature we talk about today, but if you’re still considering which router to buy you may want to take the contents of these lessons into consideration.


Lesson 3: Maximize Your Speed, Performance, and Wireless Signal

You’ve picked your router and set up all the basics, so now it’s time to optimize your network. In this lesson, we’re going to look at how to improve your network’s speed and wireless signal so it’s operating at full capacity.

In theory, your network should work just fine as-is, but we all know that reality can differ from what should ideally be the case. How well your router performs is going to depend on a lot of factors, so these tips and tricks might work better for some than others. For example, strategies for improving your wireless signal aren’t going to do much unless your router is dealing with some interference. On the other hand, tweaks can only do so much if you’re dealing with really bad interference. That said, whether the improvement is marginal or great, we’re going to look at all sorts of ways to get your network running as fast and efficiently as possible.


Lesson 4: Access Your Home Computers from Anywhere

You’ve picked out your hardware and set up the basics, and configured your network to perform at its best and fastest. Now it’s time to open the gates to the outside world. In this lesson, we’re going to walk you through how to set up your router so you access your home computers from anywhere—and with your own friendly, easy-to-remember URL.

Setting up remote access to your local network is one of the coolest things you can do with your router, as it allows you to remotely view your screen, access files, control services like BitTorrent remotely, and so on. Basically, anything you can do at home can be made possible by just opening a few ports on your router. It can seem a little daunting if you’ve never done it before, but once you understand what everything means and where to find the information you need, you should have no trouble getting things to work. We’re going to go over basic setup and then talk briefly about a few bonus options as well.


Lesson 5: Bonus Features and Further Resources

You’ve picked out your hardware and set up the basics, optimized your network for speed and performance, and set up remote access. Now it’s time for a little fun. Here’s a look at some cool bonus features you may have on your router and how you can learn more.

Bonus Features

We’ve already covered most of the great big things you’d want to do with your home network, but there are a few extras your router may support that could come in handy right now or some day down the line. We’re going to give you a brief overview of some of these bonus features so you can decide if you want to give them a shot and learn more about them.


amdhal, moore, brooke and 90-90 – empirical laws of computers

Amdhal’s Law

Amdahl‘s law says a program can run on faster than the time required to execute its sequential sections. The Law is cast in the form of an equation that accounts for the time spent in the parallel (or vectorizable) and sequential parts of the code. The validity of this concept is easy to grasp. If a program is 80% parallelizable and 20% must be executed sequentially, the maximum reductionin execution time is by a factor of five (if the parallelizable code were run in zero time). Amdahl’s Law was thou

ght to provide a practical limit to the number of processors that could beused profitably in a parallel computer system, estimated at around 100 processors. However, this analysis did not account for the fact that for many scientific applications, as the size of the problem being tackled increases, the sequential fraction of the work tends to decrease. Since the speed and memory of the processors in a parallel system enable a user to tac

kle bigger problems, Amdahl’s Law does not apply in these applications.


Moore’s Law

Moore’s Law, coined by Intel founder Gordon Moore, predicts that microprocessor performance will double approximately every 18 months’a calculation that has been true for 30 years but is expected to continue for only a few more years. Moore himself frequently warns that as physical limits are reached in the feature sizes and in the manufacturing techniques used for semiconductor components, it is not clear how to make faster components with today’s dominant technology. The current estimate is that these limits will be reached within 10 years.


Brooke’s Law

Brooks’s law is a principle in software development which says that “adding manpower to a late software project makes it later”. It was coined by Fred Brooks in his 1975 book The Mythical Man-Month. The corollary of Brooks’s Law is that there is an incremental person who, when added to a project, makes it take more, not less time. Brooks adds that “Nine women can’t make a baby in one month”.


90-90 Rule

In computer programming and software engineering, the 90-90 Rule is a humorous aphorism that states:

“The first 90 percent of the code accounts for the first 10 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”[1]
—Tom Cargill, Bell Labs

That the total development time sums to 180% is a wry allusion to the notorious tendency of software development projects to significantly overrun their original schedules. It expresses both the rough allocation of time to easy and hard portions of a programming project and the cause of the lateness of many projects (that is, failure to anticipate the hard parts). In other words, it takes both more time and more coding than expected to make a project work.

The rule is attributed to Tom Cargill of Bell Labs and was made popular by Jon Bentley’s September 1985 “Programming Pearls” column in Communications of the ACM, in which it was titled the “Rule of Credibility”.



Why Open Source misses the point of Free Software

by Richard Stallman

When we call software “free,” we mean that it respects the users’ essential freedoms: the freedom to run it, to study and change it, and to redistribute copies with or without changes. This is a matter of freedom, not price, so think of “free speech,” not “free beer.”

These freedoms are vitally important. They are essential, not just for the individual users’ sake, but for society as a whole because they promote social solidarity—that is, sharing and cooperation. They become even more important as our culture and life activities are increasingly digitized. In a world of digital sounds, images, and words, free software becomes increasingly essential for freedom in general.

Tens of millions of people around the world now use free software; the public schools of some regions of India and Spain now teach all students to use the free GNU/Linux operating system. Most of these users, however, have never heard of the ethical reasons for which we developed this system and built the free software community, because nowadays this system and community are more often spoken of as “open source”, attributing them to a different philosophy in which these freedoms are hardly mentioned.

The free software movement has campaigned for computer users’ freedom since 1983. In 1984 we launched the development of the free operating system GNU, so that we could avoid the nonfree operating systems that deny freedom to their users. During the 1980s, we developed most of the essential components of the system and designed theGNU General Public License (GNU GPL) to release them under—a license designed specifically to protect freedom for all users of a program. Continue Reading…