rkrishnan is currently certified at Journeyer level.

Name: Ramakrishnan Muthukrishnan
Member since: 2001-04-06 12:31:31
Last Login: 2011-01-26 13:15:34

FOAF RDF Share This

Homepage: http://rkrishnan.org

Projects

Recent blog entries by rkrishnan

Syndication: RSS 2.0

Understanding the GNU/Linux graphics

Sometime ago, after reading some LWN articles (highly recomment an LWN subscription if you are interested in Linux kernel). But I found the going tough. There are lots of scattered information. Even though the software is all Free, it was impossible to comprehend why certain things were done the way it was done. It not only required reading articles (paying close attention to the date on which it was written), it also required digging into the past on how things looked before and how it changed. Most of the time, a long list of APIs are given which can only be comprehended by those working on it for a long time. It was very frustrating. I even wondered how anyone new can contribute to such projects after a few years when the current crop of experts have all lost interest in these projects or have passed away.

If you find yourself also in the same position as me, here are some pointers to some gems I found in my journey that does give a big picture of the GNU/Linux graphics/display sub-system. No, I am not competent enough to explain it myself yet, I would rather leave that to masters who have actually worked on it.

To get an overview of the various terminologies involved (DRM, DRI2, KMS, EGL, X, XRender, Wayland, pixman, cairo and other alphabet soup) start reading this overview article ”The Linux Graphics Stack”. Another great overview is this little PDF file which has short explanations of all the key pieces of the graphics stack from the hardware bits to the application. Once you read it, head straight to Wayland Architecture page which explains how X draws the screen and how Wayland is simplifying the picture. Pay particular attention to the journey of an event and its effect on the screen.

Now you are reading to watch this great LCA 2013 video on X and Wayland by X/Wayland hacker, Daniel Stone and look at the corresponding slides.

Another great video is the Episode 6 of “The luminosity of Free Software”, a Google Hangout series by KDE uberhacker Aaron Seigo. Another great article written in 2005 about the state of GNU/Linux graphics by Job Smirl.

And then we have the great LWN, which is an essential reference to every linux kernel programmer. There is a bunch of links to the relevant LWN articles and other discussions and slides on thie Linaro Memory Management page.

Graphics

Again I am a journeyman into Graphics, trying to make sense of various terminologies. There are two pages, that I found helpful.

Hopefully, these links will give a good “big picture” view of the low level parts of rendering/video/graphics inside a modern GNU/Linux desktop. Also remember to watch the date on which this post was written (because The Internet does not forget anything and you, the reader, may be reading this page many months/years after the day this post was written). The display side of things being the most user visible and sensitive thing, is ever changing. The picture may look entirely different after a few years.

Syndicated 2013-03-08 07:08:00 from Ramakrishnan Muthukrishnan

My recent experiences with online courses

Last year, when the online AI Class was announced by Sebastian Thrun and Peter Norvig, I was thrilled and immediately signed up. Soon two other courses were offered. At work, I do low level software and have not formally studied AI or Databases or Machine Learning, not did I really see a need, in immediate future, to apply them in my job. Neverthless, I was thrilled at the possibility to hear and work with Stanford professors through these courses and enrolled for the AI course.

The AI class started and I think I could keep up my motivation level for the first 3 or 4 units. There were others distractions like family and work. I had to do a bit to extra work to learn some background mathematics and also read up the text to keep up with the lectures. Somehow, at that point of time, it all couldn’t fit together in my scheme of things, so I decided to discontinue. When I think back, I think I could have completed the course with a bit of extra effort, which I was not really putting at that point of time, instead I came up with some excuses! One of my cynical friends had predicted that I and some others at work who enrolled with me would all discontinue the course and I was sad that he was right.

Then the creation of Coursera and Udacity were announced. When I saw the announcement for the Design and analysis of Algorithms - 1 course from Stanford, I was extremely thrilled. I had always wanted to learn about analysis of algorithms but have never taken a formal course. I enrolled for the course and started working on the lectures. Tim Roughgarden, who was the lecturer for the course was going at a bit fast rate than what I could keep up. But somehow I caught up with lectures by working on them late nights and early mornings. I took notes as I went along. Taking notes meant, I had to watch the same lecture two or three times in some cases. It quickly blew up the time required to complete one week worth of lectures and sometime spilled over to the next week. But for me, it was liking playing a game. The problem sets and programming assignments were staggered by a week and so I could submit them on time. I was looking forward to the lectures and what new stuff Tim is going to throw at us, students. I did not find much time to participate in the forums. The programming assignments were mostly easy and was something I was really looking forward to. I used Racket for my programs and turned out that some others taking the course were also using Racket. It was a joy to program in Racket through out the course. During the last week of the course, I was with my parents and didn’t have a working Internet connection. After struggling with the phone company and wasting a lot of time on it, I decided to download the vides from elsewhere and work offline. In the end, I used my phone to connect to the Internet using GPRS and use my laptop via tethering to submit answer to the problem set and programming assignments. Overall, I think I did the tests very well.

Here are somethings I liked/disliked about the course:

  • Teacher is the most important element in a class. If teacher is uninteresting, everything else is. No amount of technology can save the situation. Tim is a great teacher. He talks a bit fast but after a while I started loving his style of talking and teaching. Some other classes (don’t want to point fingers at any specific course) didn’t have as good a teacher as Tim.
  • Free style writing on White/Black board instead of powerpoint was one of the highlights of the course. I think it was crucial for the success of the course. Many other courses which I signed up at Coursera were using powerpoints and the teachers (some of the greatest names in CS) were reading out from the powerpoint slides. I couldn’t sustain interest in such courses, how much ever great those teachers are. The way Tim taught the class is a role model and brought back memories of some of the best classes I had taken in real classroom years ago when I was a fulltime student.
  • Timing and difficulty level of the exercises within the lecture is another extremely important element.
  • A good teacher is far far better than self-learning from a book. I learnt tons of new things in these 5 weeks than I would have ever learnt in 5 weeks of reading.
  • The importance of taking notes cannot be overstated. This was the single best decision I ever took. I carried the notebooks around along with my laptop and used it whenever I got free time (sometime, even at work, when I am waiting for compilation to finish or in the evenings). The notes were handy while doing problem sets and programming assignments for a quick revisit to some particular lecture or to look up specific algorithm etc.
  • I didn’t use any text book though Tim recommended a few. I have CLR with me, but surprisingly I didn’t use it much while doing the course.
  • If I have seen one single use of Technology in recent times that positively affects the human beings, then that is this new experiment of online teaching.

Overall, it was a great experience with this course and I would like to thank Tim and Coursera for offering this great course online. I am looking forward to the part 2 of this course.

I also signed up for some of the new courses offered at Udacity. One of them that I am really excited about is the Web design course by Steve Huffman. I really like the style of presentation at Udacity. It is direct. It is short. The listener is tested at the end of (almost) every video. That makes it extremely interesting. Just like playing a video game!

Syndicated 2012-05-01 07:00:00 from Ramakrishnan Muthukrishnan

Helping the FSF

I like new gadgets and have been tempted many times to acquire some of them (like new Android phones and tablets). Usually these gadgets have a short life though (until it becomes obsolete, but still useful) and then newer gadgets come along. One can go on spending money and chasing these gadgets.

These days, I do a bit more analysis. I really think hard if I really need those gadgets and whether I can live without one. More things in one’s life definitely means less available time for doing other things (like spending time with family or reading books) and certainly more pain maintaining them.

Moreover, most of these gadgets do not respect the user’s freedom. When you buy a stock Android phone, chances are that the bootloader of that phone is locked. What this means is that only binaries of the bootloader signed by the manufacturer can be installed. This is true of most (all?) phones available in the market currently. Clever people have deviced ways to keep the bootloader intact and still load alternate OS images (like the excellent CyanogenMod firmware for Android phones).

When one runs these modern gadgets, the Applications (or apps, as they are called these days) are tied to the users account. The Application distributor (like Google or Amazon) can remotely kill any of those application or the phone itself. This kind of application distribution is very different from the way a desktop computer application is distributed.

These kinds of scenarios are coming to the good old personal computing as well. The UEFI comes with similar restrictions (I have to admit that I haven’t read in-depth about UEFI itself).

The good folks at the FSF have been doing a lot of work on Software Freedom and educating the users on these issues (in addition to supporting a number of Free Software projects and defending the rights of the copyright holders as well). They need to pay the staff, host the machines and support various campaigns (print documents, flyers etc). All these needs money. Projects like Android are successful because they are standing on the shoulders of the great work done for the past few years on various Free Software projects (eventhough Android strives hard to avoid GPL for the userspace projects).

Please consider donating some money to the FSF. I have been a proud associate member of the FSF for many years now. Contributing money is the easiest thing one can do to help the cause. A better way would be to work on Free Software projects itself.

If you are thinking of buying a gadget, think carefully if you really need one and if so, choose one which respects your freedom and don’t become a slave of the manufacturer. Also please think of donating 10% of the cost you plan to spend to organisations like the FSF.

Syndicated 2012-01-18 08:00:00 from Ramakrishnan Muthukrishnan

Using cKanren in Racket

cKanren is a wonderful system created by Clair Alvis and the group at IU for relational programming. The definitive work about cKanren is this paper. cKanren builds on another wonderful system called miniKanren created by William Byrd and Prof. Dan Friedman of IU.

Off late, I started reading “The Little Schemer” series and started reading the awesome ”The Reasoned Schemer”, also by the same team that wrote miniKanren. cKanren is written in R6RS scheme and is developed on Chez, evidently. Since I wanted to use Racket and DrRacket environment, I started looking at changes to be done to make it run on Racket. What follows below are the instructions to setup DrRacket for cKanren programming.

  • Download my fork of cKanren

    $ git clone git://github.com/vu3rdd/cKanren.git

  • Switch to the ‘racketification branch’

    $ cd cKanren $ git checkout -b racketification racketification

  • Now, make cKanren module visible in the Racket ‘collections’.

    $ raco link .

  • Now, fireup DrRacket. In the definitions window, use the following as the language.

    #lang cKanren

  • Hack away in cKanren!

Syndicated 2012-01-09 08:00:00 from Ramakrishnan Muthukrishnan

Sicp Challenge Progress

2011 had been an extremely interesting year. I feel very happy to have made good progress on my Programming Language Theory learning. I am also qute happy with my SICP challenge project, which was my only noteworthy side project. I am somewhere in the initial portions of chapter 4 right now and it had been worth every minute I spent on it.

I also started reading many books connected with SICP and Programming Language theory, like TaPL and EoPL. Discovering the work of Dan Friedman was an eye opener and I hope to spend many many hours in the next few years learning from his books. I also read “The Little Schemer” and am well into “The Seasoned Schemer” and on to “The Reasoned Schemer” as soon as I am done. I will happily recommend these great books for anyone starting with Scheme.

Syndicated 2011-12-23 08:00:00 from Ramakrishnan Muthukrishnan

255 older entries...

 

rkrishnan certified others as follows:

  • rkrishnan certified rkrishnan as Journeyer
  • rkrishnan certified raph as Master
  • rkrishnan certified cjwatson as Journeyer
  • rkrishnan certified rms as Master
  • rkrishnan certified jwz as Master
  • rkrishnan certified greve as Master
  • rkrishnan certified atai as Journeyer
  • rkrishnan certified jfleck as Journeyer
  • rkrishnan certified BrucePerens as Master
  • rkrishnan certified srivasta as Master
  • rkrishnan certified psg as Journeyer
  • rkrishnan certified joey as Master
  • rkrishnan certified mathieu as Journeyer
  • rkrishnan certified ajt as Journeyer
  • rkrishnan certified abraham as Master
  • rkrishnan certified walters as Journeyer
  • rkrishnan certified sjanes71 as Journeyer
  • rkrishnan certified sdodji as Journeyer
  • rkrishnan certified vivekv as Journeyer
  • rkrishnan certified logic as Journeyer
  • rkrishnan certified achitnis as Apprentice
  • rkrishnan certified ole as Journeyer
  • rkrishnan certified chalst as Journeyer
  • rkrishnan certified dpatel as Journeyer
  • rkrishnan certified sri as Apprentice
  • rkrishnan certified jLoki as Journeyer
  • rkrishnan certified RobinS as Journeyer
  • rkrishnan certified edd as Journeyer
  • rkrishnan certified werner as Master
  • rkrishnan certified davidw as Journeyer
  • rkrishnan certified etbe as Master
  • rkrishnan certified gary as Journeyer
  • rkrishnan certified zhaoway as Journeyer
  • rkrishnan certified gman as Journeyer
  • rkrishnan certified scjody as Journeyer
  • rkrishnan certified Archit as Journeyer
  • rkrishnan certified bratsche as Journeyer
  • rkrishnan certified amars as Journeyer
  • rkrishnan certified nixnut as Journeyer
  • rkrishnan certified Kay as Journeyer
  • rkrishnan certified ariya as Journeyer
  • rkrishnan certified cmiller as Journeyer
  • rkrishnan certified ianmacd as Journeyer
  • rkrishnan certified hacker as Master
  • rkrishnan certified Cardinal as Journeyer
  • rkrishnan certified hadess as Journeyer
  • rkrishnan certified RossBurton as Journeyer
  • rkrishnan certified jdub as Master
  • rkrishnan certified fejj as Master
  • rkrishnan certified arvind as Journeyer
  • rkrishnan certified dalinian as Journeyer
  • rkrishnan certified nullity as Journeyer
  • rkrishnan certified roshan as Journeyer
  • rkrishnan certified jamesh as Master
  • rkrishnan certified Chicago as Journeyer
  • rkrishnan certified TordJ as Master
  • rkrishnan certified jpick as Master
  • rkrishnan certified tromey as Master
  • rkrishnan certified Deepa as Journeyer
  • rkrishnan certified wardv as Journeyer
  • rkrishnan certified jaldhar as Journeyer

Others have certified rkrishnan as follows:

  • rkrishnan certified rkrishnan as Journeyer
  • fxn certified rkrishnan as Journeyer
  • greve certified rkrishnan as Journeyer
  • mathieu certified rkrishnan as Journeyer
  • sdodji certified rkrishnan as Journeyer
  • etbe certified rkrishnan as Journeyer
  • jLoki certified rkrishnan as Apprentice
  • nixnut certified rkrishnan as Journeyer
  • ariya certified rkrishnan as Journeyer
  • cmiller certified rkrishnan as Journeyer
  • dalinian certified rkrishnan as Journeyer
  • roshan certified rkrishnan as Journeyer
  • wardv certified rkrishnan as Journeyer
  • domi certified rkrishnan as Journeyer
  • derupe certified rkrishnan as Journeyer
  • nikole certified rkrishnan as Master
  • ahiliation certified rkrishnan as Journeyer
  • achitnis certified rkrishnan as Apprentice
  • dlc certified rkrishnan as Apprentice
  • ataridatacenter certified rkrishnan as Journeyer
  • dangermaus certified rkrishnan as Master

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page