Yesterday I started revamping my blog, and building my portfolio. Now I don’t really need a portfolio, since I chose a career of software engineering over graphic design and writing. However just because my current occupation doesn’t need my more artistic talents, that doesn’t mean I don’t have any. And it surely should not imply that I do not like to create art or to display it. So I’m putting up a few pages dedicated to a portfolio of my various works and ideas in: drawing, computer graphics, writing, user interface design and organization. How extensive this portfolio will be, depends on how much time and effort I can dedicate to this. It will definitely take sometime, so I don’t expect to finish overnight. Still, I should of done something like this years ago. More often than not, in a professional setting, people show interest in my talents outside of programming. So putting up a portfolio also makes sense too for career advancement. Right now I’m not too worried about that aspect. Rather I just feel like showcasing what I have done so far, and what I plan to do shortly.
Humanity has a love-hate relationship with technology. Geeks like to take it to the extreme. Take the recent hub-bub in the blogosphere about the aptly named: Linux Hater’s Blog. In that blog, the anonymous blogger (or bloggers) rants about how BAD Linux is. Its entertaining and educational! Entertaining because rants and rabble-raising is fun… in a perverse sort of fashion.
This is not just a simply a rehash of Microsoftian propaganda; a machination of an ingenious marketing machine feeding FUD to an ignorant public. Rather the Linux Hater’s Blog (LHB) looks at the issues that Linux suffers from. Just like the Unix Hater’s Guide (thanks LH) before it, LHB satires the attitudes of the community, developers and companies in the Linux landscape. And hopeful as satire has done before, maybe better the Linux, Open Source and Software Libre ecosystem as a whole. Don’t be fooled. The Linux Hater is most likely an experience developer in the Linux world, and knows damn well what he is talking err… ranting about. And deep down inside he loves it.
I read both of the Linux Hater’s Blog and Unix Hater’s Guide in their entirety. It changed my perspective. Linux and UNIX are not perfect. The design and implementation of both of them aren’t the shining gems of computer science. And for historical reasons, and laziness on the part of Linux/FOSS developers, just doesn’t cut it anymore.
I admit it. I still prefer Linux. I’ll continue using Linux with all its wrinkles and weirdness because it’s still the best OS out there. I’ll still think freedom in software is paramount. I’ll still advocate open source as the most ethical and efficient way of doing business in the software industry. And I’ll still write in C, C++ and its spawn Java. Cause Lisp is way too hard to do in my head.
Thanks Linux Hater.
As I mentioned in my last post, I resumed working on the justCheckers project. More accurately I resumed planning the future of the justCheckers project. With my disappearance for months at a time, most of the other developers seem to have lost interest. I sometimes wonder if I did not loose interest myself. However I challenged myself to build an open source game.
The challenge now revolves around putting momentum back into the project. justCheckers never had a community clammering for its release. And my designs did not pan out, with the development team being able to work on the project independently of me. For this reason I am working on fleshing out the details of running the project. This means reviewing the style guide, and core component design. My knowledge of Java now spans the entire project, so I should be able to come up with a simpler, cleaner and more efficient design. The most crucial point of the design is get the development team back on-board, and pumping out more releases.
As promised last week, an update to my self-experiment. After a week of battle testing, consulting with Lina (my university counsellor) and observing myself, I can report success in with my self-experiment. But first, lets backtrack to the “theory” behind my idea.
Last Friday, I came up with an idea to deal with creating continuous spans of work time in an environment that distracts and fragments time into sections. Fragmented time caused by distractions, creates a feeling of disorganization, confusion and frustration between switching. The greatest problem I found with switching between small tasks and my main (course) work, was the inability of getting back to the work. After some problem, I realized that I encountered this problem and a solution in another place, operating systems design.
Modern operating systems seem capable of multi-tasking. Yet the majority of computers have only one or two processors (hyperthreading and multi-core acting as two processors each in some degree). So how can a single processor run two servers, a media player, a web browser, and office suite at once? It doesn’t! The operating system switches between individual tasks rapidly creating the illusion of multi-tasking.
The CPU can switch between tasks without loosing its place by logging. Before the processor switches tasks, the operating system notes what the processor worked on, how far it got and other relevant information. I applied this same idea to enable fast personal context switching.
Before I switched from a major task to another one, I logged what I worked on. The log details the task, what I needed to do next and any ideas I wanted to remember. In its basic form (one form I use along with an activity log) I note the name of the task, what I was to do next in the task, and a bullet form list of notes. Additionally you can jot down the importance, due date, urgency and personal emotion (look at my modified activity log sheets) on the task log.
When I discussed this with Lina, she was quite impressed. She pointed out that this method, deals with the three issues in time management: organization, motivation and prioritization.
The task logs firstmost are organizational tools. They behave sort of like more advanced todo lists, and help you organize your thoughts about a task. Task logs also help motivate you. They show your progress, set your mindset toward the task and motivate you to finish off the task quickly. Finally task logs help with prioritization. Sitting with number of task logs in front, can help you decide which needs the most attention in a given time. In the short I have used them, task logs helped me switch between activities efficiently.
I like task logs, in that by helping me switch from and to a task, I can work on different tasks without a long “warm-up” period. Anyone who deals with lots of writing knows how difficult it can be to put pen to paper. And if something interrupts you, when you come back to writing you need to get back into the mindset of the task. The task log shortens the warm-up time, effectively “stitching” my shorter fragments of time into a single time span. With a task log, I don’t have to sit and think “What do I need to work on again? And what did I want to do?”. Instead I can look, and say “I did this, I need to do that… so… lets work on that task now.”
But even a super-fast CPU finds switching between tasks expensive. Taking task logs takes more time than doing without them, if you never needed to switch between tasks. In an ideal world, we could work on one thing at a time. Unfortunately, the ideal does not exist and so we need to deal with issues like fragmented time. And I believe task logs can help with fitting long term projects into shards of times and making me more productive.