open-source textbooks – connexion

This is absolutely brilliant. It is brilliant to the point that it excites me. Open source textbooks. Books that are open to everyone, and books that can be freely shared, modified, copied, reprinted etc etc etc. Brilliant.

As Richard Baraniuk says in his TED talk (please watch it below), this allows knowledge to be contextualized for the cultural and social regions it will be used in. That is not only brilliant but necessary. Not only that, but this allows knowledge to be customized and specialized per student. Ideas are good alone, but they are better when they are shared.

Textbooks should be free. But they will not be free if students keep paying absurd amounts for them. Knowledge should be free. Free to access, free to share, free to use. If students were to stop buying textbooks they could change the way universities do business. Hah, that won’t happen anytime soon. But in the meanwhile, we have the opportunity to spread the word and contribute.

This is why technologies like the Internet are so important. They allow for things like this to happen, the Internet makes this easier. And that is awesome.

tomorrow

Tomorrow scares me. It scares me in the same way next week, next month or next year scare me.

Perhaps that is partially why I’m not much a planner of things. There is a looming uncertainty that the future carries, it is both scary and exciting. But it is there. This uncertainty, it is there. And it (or something about it) scares me.

The past also scares me (though not as much). If the future looms then the past lingers. It’s all there, a part of me I leave behind. Whether it be on the blog, on forums I’ve participated in, things I’ve said to people, my moments of anger, my moments of passion, my grade 3 report card. It is all there, a part of me that has happened.

But the past is gone. I cannot change it, I cannot control it. It has happened and that is that. I don’t have full control over the future, but the future does offer an illusion of control.

So yes, the future, it scares me. How can any one with certainty say “tomorrow” or “next year”? “Next year” is even scarier than “tomorrow” because there are hundreds of “tomorrows” within a “next year”.

“Oh, I missed the event? I’ll go next year.”
“Let’s meet up next week.”
“I’ll do it tomorrow.”

How can one be so certain? I certainly cannot.

I suppose this is why we say “inshallah”. An insurance of sorts, or recognition of the certainty we’ve uttered but by ourselves cannot afford.

I guess what I take away from this is that if there is something I must say, then I must say it now. If there is something I must do, then I must do it now. Opportunity is today, tomorrow is a privilege.

open formats

Open formats are cool. They’re cool for reasons I should not have to explain.

The new US Administration, in their stimulus implementation guidelines, has indicated that government agencies use feeds (Atom or RSS) to disclose how funds are being allocated.

It’s neat not only because the data is available, but also because people can do things with this data. People can chart and graph things, or create watch dog websites, or approval rating websites (on each allocation) etc. Open data allows people to do things. This is a good thing.

When throwing together demand a stance, I couldn’t find any open formats for contact information on members of parliament. The government does have this website, which returns MP information based on a postal code. Which is great, because it was exactly what I was looking for, except that the information is not in an open format (or an easily machine readable format).

So I wrote a scraper that extracted the information that was required. We threw the site up in PHP, I hacked together some pages, Fathima made it look pretty. We also threw in a whole bunch of javascripty goodness, for smooth flowing and what not.

But that doesn’t solve the open format issue. I decided to rebuild the site in Ruby on Rails. So as a starting step I’m extracting the information from the government website and presenting it in nicer HTML and also in JSON. So people can easily do what they want.

The test site is: http://das.nashahai.com/. Yeah, the page needs work. But it describes how to use the thing.

HTML: http://das.nashahai.com/mp/find/by_postal_code.html?postal_code=m1s5b2

You can view source on that and see the HTML layout. I think all the elements should be accessible via css, and can be manipulated using javascript.

JSON: http://das.nashahai.com/mp/find/by_postal_code.js?postal_code=m1s5b2

This returns a JSON object containing all the data.

You can find the code here: http://github.com/adnanali/das2/tree/master

I’m assuming that if I needed something like this then someone else will too. If you find any issues, let me know.

those of old

I just wanted to plug a couple of blogs. They are of those of old, though not the aged. They’re bloggers from the old days, circa 2002/2003. Like so many of us do from time to time, they had taken somewhat a break from the blogging world. Now they’re somewhat back.

You can find Uzer at Wistful Negligence. And Nadia at spinning here. Incidentally both are somewhere along their doctoring processes, although in different parts of the globe.

In either case, their blogs have that adnanist stamp of approval.

Yes.

up the hill

“You wanna switch?”, asked Jack, genuinely concerned. It had been a few hours since Jill had started driving, “You seem a bit sleepy.”

“Nah, I’m fine”, replied Jill.

“You know, I saw a sign a few miles back and the word ‘universe’ stood out”, said Jack, the wrinkled map in his hands. “We’re just trying to get from point A to point B, and that word, ‘universe’, makes me want to look up at the sky. I see the stars. They’re like dots to connect, you can find so many patterns and shapes, dippers and the like. It’s fascinating, thousands of people through out time have used these same stars to navigate their way across cities, continents, and oceans around the world. ‘Universe’, you… neeeee… verse. Separate the ‘u’ into ‘you’, reverse the ‘ni’ to ‘in’ attach it to the ‘verse’ and you get ‘you inverse’. ‘Inverse’, black to white and white to black, up to down and down to up. It’s like the universe is telling us something. We’re heading towards point B, but do you feel we should really be heading towards point A?”

“What? What in… what did… what exactly are you trying to say?”

“I think, my dear, that I misread the directions. We weren’t supposed to take that right turn an hour ago, we’re headed in the wrong direction.”

Both, Jack and Jill, burst into laughter followed by a sudden silence.

“Like I had said, we should have gotten the GPS. Oh, and by the way, I am feeling sleepy”, said Jill as she found a spot to pull over the car.

couchdb

My, oh my, has it already been over a year? Unbelievable.

I did play with CouchDB a little back then, and it was very rough. It has come a long long way since then. The potential was there then, and it is being realized now with a lot more potential left in storage.

CouchDB is a database engine, it is a very exciting database engine. It is, if I may describe it in this manner, beautiful. It is beautiful in the very sense of the word. Not simply for what it is, but for what it allows you to do and for it’s pure potential, the possibilities.

Most databases are relational, they consist of tables and tables consist of rows of data. It can be likened to an Excel spreadsheet. You can have multiple sheets in an Excel file, each sheet can be viewed as a table. Each sheet also consists of rows of data, and the columns represent attributes. Say in a schooling system, you can have classes, students, and teachers. So you would have a sheet to represent each of these. The students sheet would contain a row per student, and the classes sheet would contain a row per class and so on. A classes sheet would have attributes like: name, # of credits, schedule, teacher, semester, etc. All the rows in the sheet have the same attributes, so if an attribute were not to apply to a particular row, it would be left empty.

CouchDB has no tables, there is no schema. It stores documents. The documents can be of a certain type, like teacher or student, but unlike a table, not all the documents of a certain type need to contain the same attributes. So if an attribute does not apply to a particular document it simply does not exist in that document. This allows documents to be of the same type and yet be unique (kinda like humans). It is this flexibility and freedom from constraints that makes CouchDB so beautiful.

Developers are very used to the rigid way of relational databases, it is ingrained into the way we are taught to think. The freedom of CouchDB is awesome. But not all is hunky dory, there are still ways to go and there are things that can be easily done in relational databases that take more effort with CouchDB. However, in my mind, it’s worth it. The freedom and flexibility allow your mind to run in so many directions and consider so many possibilities (if you let it). You don’t have to have everything planned out before you start, you can just go with the flow and not worry about being locked in. Did I mention how beautiful this thing is?

CouchDB uses javascript to query information instead of the traditional SQL. The sweetness of this goes beyond the syntactic sugar. Once again, it changes the way in which you think about information.

This is quite the database engine. Sexy, if you will. =D