Posts RSS Comments RSS 174 Posts and 11 Comments till now

Archive for January, 2008

I Cannot think in Silence

I’m in the process of cleaning up some old files and folders that I have had lying around for many years. I stumbled upon this poem that I wrote, when I was roughly 12 years old. It’s not that great a poem, but I remember writing it because my father was banishing me to my room to work on homework, and I just couldn’t come up with anything, this was the result.

I cannot think in silence

Noise helps me think

silence gives you emptiness

My mind just starts to shrink

In silence your mind just drifts away

It’s hard for me to say

Why noise helps me this way

Noise gives me ideas, I think about what people say

I like all kinds of noises

A shout, a yell, a scream

Or a coach in the background with a noisy team

Silence doesn’t make any sense

But silence can make you tense

My dad thinks silence helps you think

I totally disagree

But that is another story, just wait and see

I cannot think in Silence.

Like I said, very old, but it is something I have never forgotten. (As I listen to music) 

Review of Head Rush AJAX

Head Rush AJAX

I recently finished reading Head Rush AJAX and would like to share my comments on the book.

This book is written by Head First Labs and is the first of the series I have read. I picked it up because of a recommendation from a friend. I remember looking with disdain at the books in the series when I had seen them on the shelf. I remember thinking, “They look so elementary, we don’t need another ‘For Dummies’ series”. I, like most computer people, have picked up and read a “For Dummies” book, but after you get through your second, they really loose their allure. My first three technology books were from that series, and I have never committed to reading another one.

When it comes to Head First AJAX the phrase “Never Judge a book by its Cover” has never been more true. If you look at the cover and see the guy doing an one handed handstand you might not want to take the book seriously, but this is a serious book with a serious introduction to a very new and very powerful technology.

Continue Reading »

Good Luck at College Nationals

CheeringIts that time of year again, MLK weekend and that means UCA nationals. It’s one of two college nationals. The other NCA, which is held usually in early April. To keep it short, my favorite is UCA, though I’ve been to both. Anyway, I have a bunch of friends competing and I would like to wish them the best of luck. Here are the teams I’m pulling for:

  • Villanova Small Coed – Lets go Cats! My Alma martyr.
  • Southern All Girl Division II – Good luck, your routine is fantabulous, wish you the best.
  • Southern All-Girl Partner Stunt Groups – Both of the groups I’ve seen have great routines, really hope you do well. Special wishes to Cheri, Kay, and Haley, who I have had the pleasure of cheering with on my CT Spirit Onyx open team.
  • Bill Mayo, University of Delaware, Coed Partner Stunt – Good Luck Bill, hope you do well, make ACE proud!

Battle of The GTD Apps

Getting Things Done (GTD) has become increasingly popular in past few years. There have been many attempts to build an application that integrates with the whole framework. As a mac user I have been aware of a few, but the big one of the past was Kinkless GTD. This application consists of a bunch of applescripts meant to work with OmniOutliner. There was a lot of hype surrounding the application, and for good reason, it was one of the best options out there. The problem was, it wasn’t good enough for me to get really committed. You had to hit this “sync” button ever couple of seconds to make sure everything was up to date, contexts were confusing, and sometimes the kinkless page would go down for days at a time. Others shared my concerns and now there are several different applications that aim to fill the same gap that KGTD left open. In this article I will be comparing OmniFocus and Things.

People at Omni recognized a good nitch for a better product and so began to create a new product OmniFocus. This product would be directly geared towards the kinkless users and perhaps pick up more users in the wake of the new GTD craze. As of this post, I’m aware that omni has sold over 11,000 licenses for its application, which just hit version 1.0 yesterday (no, they didn’t make 11,000 in a day, they have been selling the product in beta for a couple of months).

Now, I’m a big fan of Omni products. I swear by Omnigraffle, and there are some interesting uses for OmniOutliner that sometimes make it more useful than excel or numbers (it is much FASTER than numbers). However, I have been using OmniFocus for a little while and am a little disappointed that they have released version 1.0 in the condition it is in. This app feels like it is so far from done, that I can’t understand how it can be at revision 1.0. Also, they up until announcing version 1.0, they were calling the builds alpha builds, which leads me to believe that this might be a premature release.

Here is a list of some of things that are frustrating me with the app:

  • There is a “Clean Up” button on menu bar that you have to hit in order for your tasks to disappear. I agree that making them disappear as soon as you enter them is bad UI design, but the fact that I have to click on this button to move everything is also bad. I wonder if there couldn’t be a clean up every time you switch contexts or projects or if you stop using the application for several minutes if the clean up could happen automatically.
  • The views are still a little confusing. This could be because I have never been a big subscriber to the GTD methodologies, I just want an application that organizes all my tasks, I don’t care about the FORMAL practice elements.
  • The autoupdate feature continues to crash every time I install an update. Well, it claims to have crashed, if I look at the version of OmniFocus, it will say that is running the newest version.
  • The App doesn’t feel like a finished Leopard App. There is zebra striping in some of the windows. I’m not a big fan of high contrast zebra striping, I feel like it takes away from the users focus.

Despite my misgivings, the app has a strong community and a good development core. There are a couple of really great things about the app that make me wonder how it will progress in the future. Here are a couple of the features that I like about OmniFocus

  • Integration with iCal To Dos. This means that it will appear on your iPhone (or other syncable phone) currently. Also the way in which they do this is very smart. They allow you to select certain contexts to be synced with your iCal, which means if you are only interested in your Errands while you are mobile, you can set it to only sync those tasks and leave the rest off.
  • Potential integration with OmniPlan. This is a great app for project management. It is the most Mac-like project management app I’ve seen and if you could hook OmniFocus to a specific project it would be easy for people to see what they have to complete, without having to look at OmniPlan and then copy it tasks to OmniFocus (this is not very DRY).
  • Better integration that KGTD. This applications is specifically designed to do many of the things that KGTD did, but it does it natively, whereas KGTD was a bunch of add on Applescripts. KGTD also made all of your toolbars in OmniOutliner look like a KGTD app (they might have fixed this in later versions of OmniOutliner, but I can’t remember and don’t feel like installing this all over again).

This leads me to my next app, Things. This app is made by a much smaller company in Germany, so it might not have the same market penetration as the OmniGroup, but in my opinion this is what I really expect in terms of a GTD application. Keep in mind that I have only been using Things for about a day and I have been following OmniFocus for quite some time now, so my feedback on this app might not be as complete. Before I jump into feature analysis, here is a screenshot of things:

Screenshot of Things

Now, Things is still in a beta stage, and the author claims that they will be releasing the code later in the spring. The price of this app will be $49 when released, compared to the OmniFocus $79. The overall look and feel of the app, though is still significantly more “finished” than OmniFocus, but some of the main features of OmniFocus are missing.

Here’s a rundown of what I like about Things:

  • Very professional looking application. Okay, yes I’ll admit it, looks are only skin deep, but when it comes to working with an app, if it is pretty look at, you will look at it more, therefore I feel that aesthetics can count for something here.
  • The cost is lower than OmniFocus. Saving money is always a good thing.
  • The layout is more structured than OmniFocus. By this, I mean that the menu on the let has specific sections: Collect, Focus, Organize; and then brakes down the tasks within this section. If I don’t know the full GTD rules or I don’t want to reread David Allen before I start using the application, this makes it more clear where I should put all my tasks.
  • It allows you tag your items. This is both a positive and a negative for me. It allows me to put tags with an item that I think belong in different projects and then find them together, but the downside is, Tags replace the notion of context in OmniFocus. I think these are two different items, tags relate to the type of app, but I feel like context relates to where/how the task should be completed. By handling both of these with items with tags its not always clear how to differentiate which tags belong to which.
  • The Focus section allows you to clearly see what you have to do and what you can do. The whole goal of GTD is to make it easy to see what you should be doing next. This focus section does exactly that.

Despite all these good features (and the one issue with tags that I have already mentioned), there are several other issues that I have with the application:

  • No direct support for integration with iCal or mobile devices. This feature is on the roadmap, but it is unclear when it will be implemented, and I think it is very important to have it.
  • No ties to any specific project management suite. This could cause issues with having to enter your information twice.
  • Currently no way to recur items. If you want to repeat an item every day, right now, that just isn’t possible. This whole notion of recurring calendar events is probably pretty tricky to get right, but it is still an important feature that is missing. Again, this is in the future features, but no indication is provided on when it will be available.

There are a bunch of additional features intended for Things, which you can see here.

As for me, I have made up my decision, I’m going to try to stick with things for a little while and see how that works out. If OmniFocus has some major changes perhaps I will give it another look, but right now, I’m just enthused by the application. Also, if anyone else has any other task management applications they are using, please add a comment or contact me.

Computer Book Reading list

I have a friend who asked me for a reading list of books. This friend is in a computer related field, but does not have extensive programming background. This could potentially be an issue when applying for jobs, or actually in the job world. In order to help this friend out, I spent some time coming up with a list of books I think should be read by a person in this position. For the purposes of this post I will call my friend Peter.

Peter is a senior in college pursuing a degree in Systems Engineering and Finance. Both of these factors came in to play when I started looking at the books I would recommend. Peter is very smart, but is not overly interested in programming. Not a passion, but maybe a necessity of the work world in which Peter is about to enter. The list below is designed to give Peter the necessary skills to be more effective on the job without forcing all the craziness of computer programming. This is NOT a list of the books I would recommend for a computer engineer or programmer. Peter knows some Java, but that is about it for actual programming.

To get it out of the way this is the list, in order, of topics I think Peter should cover, I will explain my reasoning below:

  1. HTML and CSS
  2. Python
  3. Object Oriented Design (Design Patters)
  4. Javascript/AJAX

HTML and CSS

I like HTML and CSS as a first choice for several reasons:

  • Its simple and easy to use- Its a markup language not a full out programming language. That being said, there are still aspects of programming that can be applied to HTML and CSS.
  • The Web is Everywhere- As the web matures it reach expands. More and more people are using the web every year. Even if you are not writing a product that directly uses the web, there is a good chance that your company will have a web presence. Also, most help documentation is written in HTML, yet another place that HTML and CSS can be useful
  • Tools for development exist on almost every computer- All you need to learn HTML and CSS is a web browser and a text editor (and some disk space). You can find these tools on any computer for free. If you want to get serious about web design, you can end up buying better tools, but the basic tools are free.
  • You See Results Fast- I feel a big problem with computer science education is the concern with getting everything “right”. This often prevents people from writing a lot of code. I know I have gone through this problem. HTML allows you to write code and get it out there quickly. Also, most browsers are VERY forgiving and will even display the right thing if you put in the wrong code. This is both a positive in a negative in terms of learning, but at least you will see results.

Given these reasons I chose HTML and CSS as the first topic. I could recommend a ton of books for this topic, but in order to keep Peter from giving up on this topic, I would recommend starting with one, getting through the rest of the topics listed above and then going back and looking at some other HTML books if that is a topic that really catches his interest. So here is my list:

  1. Head First HTML with CSS- I have actually never read this book, but I have looked at several other books in the series. I think that the publisher does a good job of putting together a book that will teach topics easily and rapidly. Also the reviews are very positive.
  2. Designing With Web Standards- This is a good second read. This book covers the basics of HTML and CSS and mostly explains why you would want to use them to build a website. I read the first revision of this book, and it was GREAT.
  3. Bulletproof Web Design- this book is a collection tricks for designing websites. It is a quick read, and a reliable resource. This is not a complete reference, but it get you thinking correctly about designing sites.

Python

Python is a really great language. One of the language’s design goals was to create a easily readable, and therefore maintainable programming language, that was easy to learn. Despite the easy of use of Python it is still a very powerful and flexible language to learn. To elaborate here are the reasons I recommend Python for Peter:

  • Clean Syntax- while there are some oddities in Python for the most part the syntax is incredibly clean. When looking at the code, you can most normally see what it is doing. This makes it great for a beginner language.
  • Dynamic Data Typing- In some languages you have to be very careful to fully declare your variables with the correct types. Python uses on the fly declarations, and uses coercion to try and change variables to the correct type when being used in an expression. What does this mean? Less confusion of the programmer or reader of code.
  • High Availability- Python is approaching version 3.0. It is available for many operating systems. It is also freely distributed source so you can probably compile it for many environments even if it is not natively supported.
  • Good Documentation- There are online resources for learning the language. One of the books that I recommend below is available for free online. There is also a strong developer community.
  • Its Extensible- You can use Python to do almost anything. It has libraries and extension for databases, web programming, robotics and more. Once you learn the language, you can apply it in many different areas. This could make it great for quick prototyping, which might be closest to what Peter would be doing with his programming.
  • MIT is using it- Okay, so this is a lame excuse, but MIT has switched their intro CS course from Scheme(Lisp language) to python. While it is not good practice to take the lemming effect and just jump off the cliff because everyone else is, the professors at MIT know what their doing, so following them isn’t as bad as jumping blindly off a cliff.

I’m sure I’ve left out some really good reasons, but I believe I’ve covered the basics. Here is my list of reading for Python. Again, I would pick either of the first two to start with and then move on the next section. If you really want to get a firmer grip you can come back and read more later.

  1. Dive Into Python- This is a great book that shows you how to program Python by example. It is quick to get you up and running and if you already know one programming language, its a GREAT place to start. Also, big kicker, its available for free at the Dive Into Python Website.
  2. Core Python Programming- This is another great python book that was recommended to me by a friend. It is actually a very thick reference, but I made it pretty deep into the book starting from the first page.

Object Oriented Design Patterns

Regardless of whether it is the right path to take (which I believe it is), object oriented programming is dominating the world. Inheritance can reduce the amount of code written, which in turn can boost maintainability of larger projects. Not all languages allow you to use objects directly. C, for example, does not directly support objects, but the design principles learned from Object Oriented Design(OOD) can still be applied to C programs. If you need more convincing on OOD or information about it, I suggest reading the Wikipedia Article on OOD.

As for learning OOD, I can really not put my finger on a singular book that i have read that has taught me a significant amount about OOD, most of what I have learned I have picked up from reading and writing code. Still there is one canonical book and one book that I’m looking forward to reading as soon as I get a chance, and I’ve listed them below.

  1. Head First Design Patterns- I have not read this book, but it looks promising and am hoping to pick it when I find the time to read it. It looks like it will give a good introduction to design patterns, and if it is like their other books in the series, it should be very readable.
  2. Design Patterns- this is the canonical book on design patterns. I would recommend it as a reference. Many programmers will use the terms defined in this book, and if you have it as reference to look up their concerns it is worth. That being said, I don’t think that it is a good straight read, and would recommend the Head First book as a better starting place if you haven’t heard of design patterns before.

Javascript/AJAX

Now that Peter has knowledge of HTML and CSS, some basic programming and design, I’m pushing him towards Javascript and AJAX. Everyone is becoming aware of the concept of “Web 2.0″, and javascript and AJAX are at the heart of the new web. Javascript, however, is not your run of the mill programming language. There are some quirks to it, but AJAX itself is not overly complicated. I’d recommend learning Javascript after python because Javascript uses Prototypical inheritance. This is different than most programming languages, and can be rather confusing. Also, Python is more extensible. Javascript only traditionally runs within a web browser, there are a few other implementations like Rhino, but for the most part it only works with a web browser.

There are a ton of online resources for javascript. I don’t know all of them yet as I am still in the process of learning this language, but here are a few books that I have started on the subject:

  • Head Rush AJAX- Great introduction to Javascript. It is a fast read and covers all the basics of AJAX and even goes into some basic DOM scripting as well.
  • Javascript- is the definitive source on the Javascript language. Its a very tough read, but it does have a ton of interesting tidbits about the nuances in the language.
  • AJAX in Action- I have yet to read this book, though it is sitting on my bookcase. I have a close friend though who highly recommends it, so I’ll include it here.

Recap

This list is far from complete. Computer technology is constantly changing. Anyone serious about the field needs to apply constant effort to read and keep up to date on important technologies. This list is a good starting place. Please post any additional suggestions to the comments.