Today marks the end of TOSP’s third year of existence. And as usual, it is also the time to review what has happened during the past 12 months and to decide on a course of action for the next year. So here goes!
- During January, I have mostly focused on the design of the process abstraction, that is, the way the main properties of a process are managed from a kernel point of view. The main point of this was to sketch out a plan for further implementation work, because I was unsatisfied with the pace of coding in 2011. Theory had outpaced practice in this project, and I sensed problems in the long run if this trend was to continue.
- Meanwhile, I was also completing initial work on my “Hashish” side-project, discussing ways to avert mass storage latencies in operating systems, and pondering filesystem organization matters.
- Trying to produce a unified process design motivated some alterations in the memory management code, which were subsequently carried out during February and March. As a side effect, the old memory management testing code was definitely trashed by the changes that were carried out. It needed a redesign anyway, though, since the previous approach was not viable in the long run. Then work on a process manager began…
- But starting from March, likely due to me moving to Grenoble, painfully discovering how independent life works, and breaking my laptop, the project experienced a hiatus until around September. Main highlights for this period include a discussion of tiling user experience, ramblings on an ideal open-source software model (including development of a software license, which was sadly subsequently silently canned since negociations with the Open Source Foundation failed to produce useful results). Additionally, I discussed the importance of hardware standards and reaffirmed the reasons why I still considered the TOSP project to be important.
- Then a mail from Sourceforge notifying me that they were discontinuing my favorite CMS, Trac, shook things up a bit. I considered moving the project to dedicated hosting, rejected it since I couldn’t figure out where I would get the money and time from, and simply began moving my code and documentation to GitHub. In the process, I checked the validity of some assumptions that had been made in past documentation, and tweaked what I thought was wrong in both the code and its documentation. Meanwhile, I also discussed such matters as typing, memory outage events,
- Irregularly across the whole year, I also kept trying to further refine my IPC abstraction, RPC, which still had some serious flaws left like an inability to efficiently return computation results. Taking a look at Google’s Go (golang), a nice little programming language, helped me realize that adding a message-passing IPC abstraction was probably the best way to deal with the issue. I also had some fun discussing RPC’s potential with respect to currently used alternatives, and dreaming of expanding its role even further. Finally, to end the year, I also ranted about the sad recent evolution of the personal computer software business, discussed the issues of compatibility layers, and explored some challenges of power management.
Now, all that is written above may sound like a lot. But that is because it mostly represents blogging activity, which is something that is relatively easy to do for me. If, on the other hand, you look at the evolution of the TOSP implementation, you will notice that very little has happened has actually happened in the past 2 years, and now this is quite an awful picture to look at.
So, what has went wrong during all this time? It seems to me that I made a mistake by underestimating the amount of mental resources which coding requires. That OSdeving cannot just be randomly assigned to “my spare time” as I do with the average short-lived task. Why? Because I cannot work on TOSP in a half-asleep state as is possible with “average” tasks like cooking, watching anime, or cleaning my flat. And since OSdeving requires a relatively fresh mind, which is something that I only get for a small portion of the day, it appears that I need to save up some dedicated fresh mind time for it instead.
So starting in a few days, once I get back to my flat, I am going to try something new: explicitly saving up about half an hour for OSdeving work every morning. Half an hour sounds like a good start since it is long enough to get a typical small task done and short enough not to require a complete revolution of my morning planning. I also think that specifically saving up time in the morning is important, because given enough sleep, that’s generally the time of the day where I’m most awake, which from experience greatly maximizes chances of success in shaking my lazy ass.
To make sure that I stay focused for half an hour, I also consider finding one of these funny mechanical timers that make noise as long as they are running, or a virtual equivalent of that. And to make sure that it does not take me two years to notice a problem next time, I will also attempt to do progress reports like this one quarterly instead of yearly: one in January, one in April, one in July, and one in October. This should also, as a nice side-effect, ensure that these digests are shorter and easier to read, which is important since one of the reasons why I write them is to help me refer to older articles of this blog quickly.
After all, according to the laws of biology, I only have about a decade left before my girlfriend starts pressuring me into making babies, which in turn has a nasty tendency to spell doom for the coding activities of many hobby developers. I definitely can’t afford having this happen to me before TOSP is ready to fly on its own, under the direction of other people that don’t have this kind of problems !
And… I guess that’s it for future plans. So happy birthday, OS|periment !