Wednesday, December 22, 2010

Played with jQuery and spent some time on StackOverflow

StackOverflow is really addictive once you get to the stage where you can help people by answering some more-than-trivial questions. I have been spending a lot of time each day and sometimes it feels like a waste of my time. It probably is, now, when I should be learning more and then think about helping even more. True, it makes me look up stuff I wouldn't have come across if I worked on my own, but moderation is needed in looking for questions to answer. The game mechanics of SO are amazing with all its reputation points and badges. If ever I am going to build an addictive service, SO will be one of the most important case-studies.

JavaScript is such a beautiful language (if you neglect the bad parts). Learning it over a few weeks, I understand how powerful and expressive it can be. It is the browser that made it look bad. Watching the Crockford video on "The metamorphosis of Ajax" has cleared the mist I always used to see on Internet Explorer. Microsoft, in the early years of the browsers, really pushed JavaScript 'in the browser' to newer heights. I will keep on encouraging my friends to move away from the IEs, but will not blame Microsoft as being evil.

I have learned a good amount of jQuery and JavaScript over the week. I am looking forward to put all the learning to use. I have some ideas for small web applications. What better way to test your knowledge and skill than to try and build things using them.

Wednesday, December 15, 2010

Reading books and answering questions on StackOverflow

JavaScript Cookbook appeared to be targeted at beginners. So, I took a break from that book and dived back into jQuery. This time, I chose Manning's "jQuery in action". Even though it is for beginners-intermediate, the writing style was good. Before introducing a selector or method, the purpose it serves, the functionality it can replace and the cross-browser issues with JavaScript implementations (if any) were discussed.

The book was divided into two parts. The first deals with Core jQuery - selectors, DOM manipulations, events, animations etc.. I have read through the chapters till events though it was like a revision. At places, I would have liked the explanation to be crisper, but it was impressive nonetheless.

After a break of 2 months, I have started answering questions on StackOverflow. Gained a lot of reputation points by answering questions on JavaScript, jQuery, Python, RegEx etc. In 3 days, my reputation has grown from 129 to 671. I used knowledge gained in JS, jQ and answering the questions made me revise some stuff and look for better explanations. The sudden overflow of n00bs who didn't even know that they have to search before asking annoyed me a bit.

I have posted quite a few programming answers. Here is some advice I gave to a guy who sounded like he was lost:
  1. Don't give up. Persist. Ask for help if you don't understand something.
  2. Practice deliberately. Practice, keeping in mind that you are doing stuff to get better at something.
  3. Read books, biographies and autobiographies of great people will help. You will realize that there are many people who did great things after starting when they were older than you.
  4. Write. At least, keep track of the things you have done, learnt.
  5. Talk, if possible argue, with smart people.
  6. Keep all forms of stupid entertainment to minimum. TV, chatter, browsing etc..

Friday, December 10, 2010

More reading from JavaScript Cookbook

It's getting tedious now, the book, because of a lot of repetition and too much explanation. It probably has to do with the chapters I have read today - Forms, Debugging and Error Handling, DOM. The debugging chapter was just a bunch of recipes familiarising the reader with development/debugging tools in different browsers. And the DOM chapter was boring because the stuff introduced in the beginning of the chapter is repeated again and again in the recipes. It seems like the books is targeted at absolute beginners.

This is the only thing I am doing now. I need to get more stuff into the day to keep me hustling when this stuff gets boring. I am yet to decide whether I should order a jQuery book or not. I don't even know whether it is wise to get a book on jQuery because any book on the subject becomes more dated everyday and the online documentation is excellent, not to mention the infinite tutorials.

At home, we have been planning to get a puppy lately, mostly a German Shepherd. We need to figure out some issues and take decisions. I could finally do some research about dog breeds, mostly on Wikipedia and AnimalPlanet.

Thursday, December 9, 2010

Continued reading JavaScript Cookbook

The next 3 chapters in the cookbook were about Functions, Events and Browser objects. Most of the recipes were pretty basic but I still read through each of them for the sake of repetition. Three chapters is less than what I have aimed for in the morning, but it's ok. Many recipes talked about cross-browser compatibility etc. while mentioning that most of the JavaScript libraries take care of most incompatibilities. Maintaining the state within page using location object's hash property was new stuff for me.

After a long period of inactivity on StackOverflow (I have been learning a lot of stuff, but never questioned or answered), I have asked a question today. It was about currying in JavaScript. A snippet I posted was not behaving as I expected. It was because I forgot to put a return before a statement. I felt stupid and the guys who answered reassured that it happened with everybody. One commenter mentioned that currying was not the same as partial application. I read about it and this is one kind of hidden benefit from participating in communities like SO. I think I should keep spending some time in StackOverflow.

Having many ideas in mind, but not knowing which is worth executing is painful. I know that I need to prototype but I don't know what's stopping me from taking that step. Anyway, getting up to speed in the technologies I am going to use will be a good intermediate step.

Wednesday, December 8, 2010

Started reading JavaScript Cookbook

I have started reading this book to get up to speed with JavaScript. I have finished the first 5 chapters today which were really basic, after my time with JavaScript over time. Now, I have to pick up more speed and finish this book as soon as possible. The book also deals with the latest technologies introduced with HTML5 which, I hope, is very useful. The first 5 chapters just felt like a revision of the Methods chapter in the GoodParts book. And coming to know about the introduction of map, filter, every etc. in ECMAScript5 through Crockford's video lectures on JavaScript, I was bored with the fifth chapter dealing with Arrays. As a whole, it is a good start and I need to finish the book soon.

I have adopted Jerry Seinfeld's productivity technique "Don't break the chain" and made two sheets to make sure that I keep working towards my goals. I am desperate to be more productive and this is one more attempt at it. I don't understand why I am not spending the whole day learning. I am using about 6 hours a day in learning to code. The remaining time seems to evaporate without me knowing.

The next few days should be spent learning more JavaScript and jQuery. Once I get upto good speed with both, I will make some basic apps on GAE. After feeling comfortable with basic apps, I wish to restart my adventures with Django. All along, I should concentrate on improving my Python skills whenever possible. I just need to get more time out of the day. I don't think I really need breaks during study. I am really feeling down because of all the confusion. I should pick myself up.

Monday, December 6, 2010

Fell ill and starving for Ideas

I have been learning stuff for a few weeks now, but there is a dissatisfaction because I am not really using all that I have learned immediately. I understand that I will eventually put it to use some day or the other, it just bothers me that I am not doing it right now. I have been thinking of some ideas to implement to test my knowledge and skill, but I am stuck at choosing which to execute. A few of them are done to death, but I feel that I can do better or it's worth doing for learning's sake.

I wanted to get started with a micro-framework in Python and Flask seemed to be the new hot choice. The documentation is very good and I have finished the QuickStart and Tutorial sections. I feel stuck now because I really can't understand what to do now except start making something. May be I should do that.

Mind controls the body, but it can be the other way around, ask any unhealthy man. My sitting posture in the new chair has brought pain to my ribs. I couldn't stand the pain for a day, but taking pain killers controlled everything and it was gone before I experienced it again. I need to be careful about my posture etc. and make sure that these things don't get in my way.

Wednesday, December 1, 2010

The basics of WSGI etc.

After reading up on CGI, FastCGI, mod_python for the sake of understanding history, I have started reading about WSGI. It is the current standard interface between servers and frameworks or applications written in Python. There were some great tutorials for learning WSGI here. These introductions were good. I want to read the wsgiref tutorial as well and then probably start exploring werkzeug.

I have little experience with Django and AppEngine and I want to get better at both. Flask is another framework I want to get familiar with. The Web excites me more than other stuff I can do with programming. I should probably write an essay explaining why I like it more than others. Here again, I remind myself to start blogs for coding and opinions. I need to get my own domain and host my personal website soon.

Though this is not the first time I played badminton, I was skeptical about it thinking that it wouldn't be fun, mostly because of my love of cricket. It was foolish to think like that and I am enjoying it now. The other best thing that has happened is that I am waking up at 4.45 a.m. everyday.

Monday, November 29, 2010

Some old technologies that are not preferred now

CGI, SCGI, FastCGI, mod_python are not the preferred ways of serving web pages now. Modern web development almost always revolves around Web Frameworks. But, after listening to the lecture on the history of JavaScript, I felt an urge to have an understanding of the ways people got things done before understanding the vulnerabilities and arriving at better methods. So, before I jumped into the basics of WSGI, I checked the other server-side options with Python.

I prefer articles explaining theory over how-to kind of tutorials. Having the knowledge of what and why makes the how easy to understand. But, it is not practical all the time, to know all the underlying details. Thanks to Wikipedia which has been my go-to for overview on many things.

Waking up at 5 a.m. in the morning makes the day really longer. Though I had a feeling that I was more productive in the night time, I desperately want to play some game for the sake of playing and also fitness. My current work place at home troubles my concentration and focus in many ways and I need to find a solution quickly.

Saturday, November 27, 2010

Douglas Crockford's Javascript vidoes

I have watched two crockvideos (presentation on JavaScript by Douglus Crockford) yesterday. The first video was about the good stuff in JavaScript. He explained how he stopped worrying about the bad parts and how he started loving it by refining the language to have only good parts. Many of the catch phrases, if I can call them so, form the book were there in this video. Though there is no intentional evangelism, he somehow made me want to learn more JavaScript. Overstating the importance of JavaScript for web is impossible anyway.

The next video was the first of a 5 part series on JavaScript. It was all about the history of the language. The presentation was very interesting despite its length (1hr. 42 min.). He touched upon jacquard looms which led to industrial sabotage in the beginning of the 19th century, punch cards that was used in the early days of computer programming, the mother of all demos by Douglus Engelbart. Then, there was the 'brief history' of programming languages till the invention of JavaScript.

I have printed out the first two chapters from JavaScript Cookbook. Rereading The Good Parts book has been as enjoyable as the first reading.

My brother and I have been planning to go to the indoor stadium in our town to play badminton daily. Badminton is such a good choice to get fit. So, I have bought a cheap Yonex racquet to start playing after a long time. Lately, my productivity has been effected by my sitting posture owing to my chair. I have finally bought a chair which lets me sit upright and comfortable. I have called almost every one of my college friends in the last two days. Everybody is doing well and I wish them all the best.

Friday, November 26, 2010

Douglas Crockford's JavaScript: The Good Parts

My plan for the week was reading this book. I have read it once, as a comprehension or a story and loved it. I am reading it again slowly while trying out the methodologies promoted in the book, and a good book stays enjoyable no matter how many times you read it. I have also started watching the videos by Crockford on YUI theater.

I have finally started learning touch-typing. I have decided to stop hunting and pecking with my right index finger though I am quite accurate and fast with that. After looking for some typing software, I chose GTypist and KTouch. GTypist has been very good. I am spending an hour or more everyday on this.

Once I feel that I have comprehended the Good Parts book, I will read more about JavaScript and do some small projects. I feel an urge to buy the JavaScript Cookbook, but that's on the back burner for now. Next week, I am going to revisit jQuery and learn as much as possible and make some stuff with it. Making a good, useful jQuery plugin will be a great thing to do.

Tuesday, November 23, 2010

A short break and back to work

These are the things that contributed to the two day break -- a friend's visit that's long awaited, an engagement ceremony, an accident to my grand parents and a feeling of burnout. I have gone 42 (wow! what a coincidence) consecutive days reading and learning stuff before breaking on Sunday. I didn't spend the day contemplating, but spent well, talking to Rahul. We bought a bat and played cricket after a very long time, nearly 2 years.

I finished reading Harry Potter and The Deathly Hallows just a day before the movie was released, as wished. I enjoyed the book because of my long time association with all the characters. I have started reading Robinson Crusoe by Daniel Defoe. It has been very good. Happy that I am back to reading fiction, I should read some non-fiction as well -- Autobiographies, History, Philosophy etc. are among my favorites. There's no shortage of books and audio books.

Today, I have started reading JavaScript: The Good Parts by Douglas Crockford. I don't remember reading any programming book which expressed syntax and semantics more crisply and clearly in a straightforward way. I have just read the first 4 chapters and it was a breeze probably because I have already read a guide and a book on JavaScript. Looking forward to finish this book before the weekend. I don't mind rereading it later.

Friday, November 19, 2010

First encounters with Ajax

After several hours of playing around with Ajax, I am finally starting to feel comfortable with it. The chapter HTTP Requests from Eloquent JavaScript is very good for beginners. Then, for more examples and to work with other formats, I have referred the Ajax chapter from jqfundamentals.

I should really thank firebug, for without it many things could have been tedious. I have used plain text, html, JSON, JSONP formats to exchange data till now. As I wanted to work with Python, I created a simple HTTP server (using BaseHTTPServer) to go through the basics tutorials. Then, I have used the appengine devserver to go ahead. In the process, I have also learned about the json module in Python(from 2.6) and simplejson which is the same but can be used for Python 2.5. On Google App Engine, it can be imported using from django.utils import simplejson.

Initially, I was creating the landing page for my experiments using the get method of a requestHandler class. It was difficult to edit the html code that way. Then, I felt like an idiot when it dawned upon me that I could just use a static html file. Many small lessons along the way made me happy. Editing HTML, JavaScript in vim wasn't easy (out of the box). I expect it to be better after some tweaking around.

After all the coding I have done over the last two days, I feel a need for a code blog. I have been thinking about buying a custom domain and host a personal website using a Python based CMS. Until then, I think I can use a wordpress.com blog or github pages. This blog can continue to be my learn log.

Wednesday, November 17, 2010

Finished the 'Fundamentals' part of 'jQuery Fundamentals'

I have read 'jQuery fundamentals' over the last two days. It is a great book for people looking to get started with jQuery. I was in no hurry while reading and it just took me around 6 hours to finish the 'basics' part of the book.

The target audience is beginners. The writing is to-the-point examples are all very good. There are introductions to new concepts that are not strictly jQuery wherever required. There are exercises at the end of some chapters which showed what's possible with the basic knowledge acquired in those chapters. They guide us through making some very popular scripts like drop-down navigation menus, photo slideshows, tabbed navigation, hints in text-boxes etc.. There is a chapter on Ajax and some advanced stuff towards the end but I have left it for later.

I was not able to concentrate at times. It was like this xkcd comic. I have found that switching off the wireless router has wonderful effects on productivity. I have also enabled the no-procrast thing on HackerNews hoping that it will help me focus. It has worked till now though there is a temptation to delete cookies or open it in a different browser. More jQuery and Lisp ahead. Need to play with Ajax on App Engine as well.

Monday, November 15, 2010

DOM and some VIM

DOM is not a new topic for me, but I have never cared enough to study it properly. I have started that process now. After all, it is the most important use of JavaScript for now and it is what made JavaScript popular. 'Eloquent Javascript' gave a gentle introduction to the topic. I am planning to read the guide at MDN too. Then, I will dive into jQuery to play around. Ajax is one of the topics I still do not understand properly at a level I will like to. Need to spend some time on that too.

I moved to the next vim casts which were about basic editing. I have been using most of these commands for a very long time. There were some new things there. I have almost never used the visual mode. Using visual mode block-wise was fantastic. I thought previously that yanking and pasting in vim suck because they were only to edit complete lines, but I immediately understood how foolish I was. It should have come to me earlier, if I had ever experimented a bit with them (we can use yw to yank a word etc. and p to paste/put after and P to paste/put before).

There is a lot to be done and many fun-filled days ahead. I am happy that the sabbatical is working out quite well and hopefully keep it short. I can't wait to get into action and solve some complex problems. There is always the opportunity to create something on my own anyway. I should get hosting space and a custom domain, but I will worry about that later.

Sunday, November 14, 2010

A little more of Lisp and JavaScript

Continuing 'Land of Lisp' from where I left yesterday, there were some more functions to finish the Hunt-the-Wumpus game's program. I haven't finished the chapter yet because I slacked off a bit. I would recreate the game in my flavour to understand it better.

From 'Eloquent JavaScript', I finished the chapters on Regular Expressions very quickly, thanks to the excellent chapter on RegEx in Python by Mark Pilgrim. The next chapter was a crash course on Web Programming. It was a good introduction intended for absolute beginners. It refreshed my knowledge about the web, HTML a bit. And it introduced me for the first time to JavaScript, the client-side scripting languages. All along, I have been learning JavaScript, the programming language. It was disappointing to see that the next chapters haven't been updated since 2007. I will still read.

I have not been making anything these days. It's all been learning. So, I have decided to create something over the next week on GAE and launch. It will be a simple app involving some simple server-side lookup and some client-side effects based on the values returned. I have some ideas but haven't finalised on what it should be.

Saturday, November 13, 2010

I ran again, after two years

And it felt good. It was only about 300-400m, but I could feel my whole body after a very long time. After the first round (2km) of walking, I felt like running and thought I could run the whole of the second round, but just after the first 20% or so, I gave up. My heart was pounding crazily and my lungs felt unbearably heavy, I had to stop. I felt amazingly good. I am going to continue this.

I continued reading Land of Lisp. I have done the graph making exercise again with my own example. It was to represent members and relations in a family graphically. Graphviz is an amazing package. You can just create a dot file following some syntax and you can convert these dot files into different graphical formats. What I have done just scrapes the surface and there is a lot beneath it.

I used folds in vim for the first time. It's a great feature. I initially thought it was a part of some plug-in. I need to improve my touch typing too, if I ever want to call myself a programmer. The problem has always been 'dedicating time for typing exercise'. I don't use the SHIFT keys properly and hunt and peck for numbers and special-symbols. This is bad and has to go away soon.

Friday, November 12, 2010

Exploring the Land of Lisp, slowly.

In the chapter that followed, the simple text game that was designed to be played at the clisp console is taken one step ahead. We created a game specific REPL. Many concepts are introduced in the process. The game REPL used it's own read, eval and print functions to do the specific tasks. The author warned about the vulnerabilities that come with read and eval.

The next chapter was very short and it was dedicated for lambda.
LAMBDA: A function so important it deserves it's own chapter
Then, we went beyond basic lists in Chapter 7. Dotted lists, pairs, circular lists, association lists were discussed and then visualising trees and graphs. The book chose the free, open source Graphviz is chosen graph visualizations, which looked pretty interesting. I got it from Ubuntu Software Center. I haven't finished the chapter yet.

It rained in the evening and I couldn't go out for walking. I have been suffering from severe head-aches lately. Is it because of the excessive reading from the bright laptop screen? I think it has something to do with my spectacles which have been bought recently. I will go for a check-up again. Over all, a mixed day.

Thursday, November 11, 2010

Landed in the '(Land of Lisp)

The last two days haven't been great in terms of the time I spent learning. But, one good news is that I have started reading Land of Lisp by Dr.Conrad Barski. I had decided that I would not read any other lisp book till I completed SICP. But, as I started reading LoL, I was hooked to it. The introduction really led me to read the other chapters and now, I don't feel like stopping it. SICP is going to take some time because of this and some other side projects.

A few pages discussed the history of Lisp and how to get CLisp on your computer etc.. On Ubuntu, clisp installation needed just one command, as is the case with thousands of other software. Once the lessons started, I was confused after the vague introductions to code-mode and data-mode etc., but there were a few "we will discuss this in great detail in Chapter X". The book has a good flow and though the cover, comics and video give a not-so-serious feel to it, they were used in moderation.

I liked the way Scheme code looked. There was no need to see data very differently from procedures. Having to write (function function-name) or using #' as shorthand did not look pretty. There must be reasons behind this special treatment of functions which, I hope and think, will be explained in the book. Dr.Barski himself told that CLisp is about raw power and Scheme is about elegance and mathematical rigor. One of the many strange cartoons that have already passed compares CLisp to a wolf and Scheme to a beautiful sheep full of wool.

I have started going out for walking in the evening with my father. I somehow need to hack my daily schedule to get as much out of it as possible. I am reaching saturation sooner than before (while reading). Music helps, but even that hasn't helped these days. Should I think about relaxing the stress a bit? Or should I keep training my body and mind to take it?

Tuesday, November 9, 2010

Striving for eloquence in Javascript

I have always wanted to learn JavaScript, to do cool things, after witnessing the awesomeness everywhere on the web. My previous start with Eloquent JavaScript ended pretty soon after I reached the difficult(then) stuff. But, this time, after reading the JavaScript guide at MDN, I have decided to get comfortable with JavaScript. I downloaded the free book and started reading from my laptop.

The book is really enjoyable for a beginner like me. I have read through the first four chapters dealing with values, variables, flow, functions and error handling. Then started the chapter on Functional Programming. This took me some time to finish. The author made up interesting stories to form a base for the exercises and explanations. 'The programming book by the recluse' in chapter 7 was fun. He has introduced the traditional functions from functional programming one by one. The over enthusiastic use (as confessed by the author himself) of forEach, map, reduce, filter, negate, compose, any, every etc. didn't cause much trouble for me after the experience with SICP.

The next chapter, Searching, was not intended to introduce new concepts in JavaScript. It posed two similar problems from graph theory. I took some time to understand the algorithms and worked through the exercises with some difficulty. I need to finish this chapter and two more tomorrow.

Another extremely useful thing was - the JavaScript editor+console within the book. With basic syntax-highlighting and auto-indent, it was really helpful. Having coded in Python and Scheme for sometime, I was having troubles with semi-colons initially, but got into the zone after sometime. Cross-compilers like pyjamas and coffeescript were in news recently but I will concentrate on learning js for now and then dive into jQuery.

JavaScript is failing the spell check here. Isn't the spell checker written in JavaScript? :P

Monday, November 8, 2010

A bad start to a day spoils it.

Today, I have learned an important lesson. It's not a lesson just in programming or productivity alone. It's an important one in both and a lot more - A day that starts bad has disappointment written all over it. After what happened today, I have decided to start all my coming days with the most important task at hand. There needs to be an end to the childish dragging that happens between waking up and taking bath. Alas! I have been talking about avoiding bad starts, but it is important to have a good start too.

The fact that it all happened after reading articles about productivity from PG and SwaroopH is more depressing for me. As PG mentioned, Internet is the new TV and it's difficult to escape with it being finger-tips away. In the beginning of my sabbatical, I had a resolution to connect to the WWW only for 30 minutes before I write my dairy and sleep. I somehow didn't maintain that and I am finding myself in this situation now. I often fail the tests of self-control but my regrets are more painful these days.
Regret for wasted time is more wasted time.  ~Mason Cooley
SICP was taking too much of my time, but I thought it was worth it. I need to contemplate my plans regarding SICP though. The learning is going very slowly and I think it can wait. I have hit a block with GAE because of the lack of Javascript and Ajax knowledge. I need to spend more time developing because I agree with all those experienced hackers who say that it's the best way to learn more. Learning from a book is important, but it will take you only so far. How will you explore more, if you don't know what you need?

Apart from the life lesson, I have read this wonderful article Why, oh WHY, do those #?@! nutheads use vi? by the creator of ViEmu. I have watched a few more of Derek Wyatt's vimcasts. I wish to start reading Harry Potter and The Deathly Hollows (a gap of 2.5 years after the 6th) and finish reading before the movie releases on 19th. The first six books were immensely enjoyable.

Sunday, November 7, 2010

Learn me a Vim and Git for great good!

I have been postponing these for a few months - getting better at Vim and getting started with Git. I have downloaded the vim casts by Derek Wyatt some time back. Get Started with Git from A List Apart was what I chose for Git.

I have used vim now and then since college, but never got serious enough until now. I have seen people who scrolled mouse indefinitely (or pushed the down arrow for an hour) to reach the ten thousandth line and hated them for that reason alone. Now that I have started some coding, I have found myself doing a lot of jkhl in vim. So, felt it was time I started climbing the dreaded learning curve. I had good time with IDLE for Python, but I had to move to one of the real editors. I never really liked IDEs. So, an oath of allegiance to Vim. (I am still using Dr.Racket for scheme though.)

This is probably the first time I have ever used Version Control. I was very impressed with Git and started using it right away. The tutorial I mentioned earlier was very good. I had some doubts regarding merging of branches etc., need to learn more. My wait for the day I can proudly push a repository to github should not be very long.

Installed GoldenDict in place of my old favourite Stardict. The interface is much better and the integration of Wikipedia and other web dictionaries including UrbanDictionary was excellent. My search for good en-en dictionaries ended up in some Russian websites and I had to use a website translator for the first time.

My respect for Linus Torvalds grew even more after using Git. Creating two of the most popular software used by developers is no ordinary feat. These books - Learn you a Haskell for Great Good and Learn you some Erlang for Greater Good have been on hacker-news over the last two days. Hence, the post title.

Saturday, November 6, 2010

Started keeping notes with Zim

I have been having a lot of problems keeping track of the things I have learnt. My todo lists are always a mess and without them my days feel like a mess. So, I have decided to look for a simple note making tool which has some good wiki capabilities. My first search for 'wiki notes' was in the Ubuntu Software Repository (I did not like Tomboy which came with Meerkat). Zim was good enough. The manual is beautiful too. There is a GTD article and a plugin to handle ToDos (need to check these out).

The markup language was easy to learn. The feature I liked the most is clickable checkboxes which can be nested. Creating a todo list with checkboxes was simple. Notebooks, subpages can be created. Links can be added to pages within the wiki. There is an option to start a server which serves the whole wiki. Pages can be exported to html or latex. I wish to work with LaTeX sometime.

Some good alternatives are Basket, Tiddlywiki, Tiddly Backpack. The first impression is that Zim is minimal and sufficient. I will check that Basket out if my needs demand so. I have also started experiments with the post-it notebook that has been in the shelf for a while.

Pen and Paper still work for me for small notes. But, for keeping learn logs, todo lists- Zim for now. The first day with self-created todo in Zim was successful, I should say, because 'writing a blog' was one of the tasks.