Friday, February 27, 2009

Mac vs Windows vs Linux vs Unix vs ...

Ok, look, nobody cares what OS it is that you prefer. Be it Windows because that's all you've ever had the pleasure of using or OS X if you've become an enlightened member of society (or so you peddle off on others). Maybe you like Linux because it's a great OS for developing and extremely stable. The thing is, all of these operating systems have their place which is why they're still around and being developed on.

Microsoft Windows gives us a good and simple ubiquitous platform that's very well suited for workstations in large multi-workstation environments. It makes it easier to manage end users as they're already familiar with this OS.

Apple's OS X is a really nice, simple and intuitive UI on top of UNIX. It's ultra clean and stable. This is really great but there's not that much software support for the OS. I'm still stuck with running Paralells on my Mac because I need Windows so that I may run Microsoft's really great Office products.

Linux is an extremely stable and ultra configureable environment in which everything is free and open source. The problem with open source, however, is that it's NOT EASY TO USE. The average user isn't gonna want to install a piece of software and, when it doesn't work correctly, go hacking around in the teriminal for hours on end, perusing forums to locate the answer to their issue. If you are an advanced UNIX user with years of experience then this doesn't seem like any big deal BECAUSE YOU'RE USED TO IT! Guess what, though, generally people aren't as geeky as you or I.

UNIX and Linux are both great operating systems quite well suited to be server platforms. This is probably their strongest selling point because you can pretty much set them and forget them. They have minimal security holes and are built on a massively stable kernel.

The point is, there's no point to arguing which OS is better because they ALL have their place in the world of computing. They all do. Don't try to push your favorite OS on others, just let them in on the particular OS's strengths or weaknesses or the deployment of such an OS that would achieve maximum leverage for the task. Don't be a fanboy! Nobody likes them.

Rant complete.

Thursday, February 26, 2009

Freedom at last!

Finally done with my midterms and I feel so elated right now. Now I can get back to the basics. It's been tough and annoying not having the time to work on OrgFlo because I've been so heavily engaged in studying. What a nightmare! It's over now, however and development in proper can finally resume!

I'm currently reading "Execution: The Discipline of Getting Things Done" co-authored by Larry Bossidy and Ram Charan (who also wrote "Profitable Growth Is Everyone's Business" among others [highly recommended]). It's a very insightful book so far that I would recommend to anyone who is currently a leader or thinking of going into a leadership position in the future. It's catered to CEOs but the leadership ideas are the same no matter at what level you exercise your leadership.

The gist of the book is that a good leader is one who doesn't just automatically sign off on a plan of action. He must go through the plan to the very deepest depths, through the entire process of implementation and make sure it will work from the planning stage all the way through the launch and support. If there's a snare, find out what it is and rework the plan. If there aren't any viable alternatives to see the plan through, scrap it and move on. This is the process of execution. For the execution phase is the one most often neglected and leads to the squander of valuable time and resources.

A good leader knows his business through and through. He has his entire heart and soul invested in it. This is the only way you can lead a business (or team) effectively. They have to know that you are invested and care about what you and they are doing.

Jack Welch was such a man that possessed these traits. He lead GE into an era of unprecedented capital growth. He knew what he was doing. He was an executor.

Well, that's about enough for now. I'll have a more thorough review on the book at a later time. Also working on a review of "Pragmatic Thinking and Learning" by Andy Hunt which will be posted presently.

Thanks for reading!

Tuesday, February 24, 2009

Pragmatic Thinking & Learning

"Pragmatic Thinking & Learning: Refactor Your Wetware"
Author: Andy Hunt

"Pragmatic Thinking & Learning" is a veritable goldmine of useful information if it's your goal to optimize your learning capabilities. This volume includes the following tips which I've found particularly useful:
  1. The morning pages technique
  2. Creating a "Pragmatic Investment Plan" (PIP)
  3. Mind maps for collaborative brainstorming
  4. Creating a Personal Wiki
  5. Avoiding Context Switching

Morning Papers:


Writing morning papers is the practice of getting up in the morning, every morning, and before you have your coffee or even have time to shake off the grogginess, you write 3 pages, long hand in a notebook. It sounds a bit dull and time-consuming, I know, but it can lead to some really great insights.

The purpose for doing this is that this is basically an "unguarded brain dump." First thing in the morning you're not completely awake and are still operating partially within the subconscious portion of your brain. This way you get a fairly direct link to the most creative side of your mind (referred to as R-mode in this book). Just try it out and you might be pleased with the results. I know I've been.

The rules for this practice are as follows:
  • Write your morning pages first thing in the morning--before your coffee, before the traffic report, before talking to Mr. Showerhead, before packing the kids off to school or letting the dog out.
  • Write at least three pages, long hand. No typing, no computer.
  • Do not censor out what you write. Whether it's brilliant or banal, just let it out.
  • Do not skip a day.
Your pragmatic investment plan (PIP) is essentially a portfolio of knowledge and skills that you currently possess and the level at which you can execute the use of said skills plus those skills and bodies of knowledge you'd like to seek in the future. The purpose of this is to track the expenditure of your time on skill building and honing and to allot more or less time to each individual item.

"Just having a plan is an incredibly effective step toward achieving any goal. Too often, most of us slip into a kind of default learning schedule: you might take some time to learn a new language when you have a free moment or to look at the new library in your spare time. Unfortunately, relegating learning activities to your 'free time' is a recipe for failure." (Pg. 154)

Free time is like closet space or disk drive space: it always gets filled with one thing or another. You need a solid plan of action if you're serious about learning this new trick you're after.

For more on PIP check out this post on Brian Mavity's blog.

Mind Maps:


Mind maps when used for collaborative brainstorming can be a great learning/teaching device because it enables a high level of interaction amongst your team.

If you create a "safe zone" in which your team members aren't rebuked for pitching an idea that isn't the most brilliant or practical, you can get a really great flow of information set up which will lead to more well thought-out projects and products. This will allow for you to get your whole team involved in the development process without anybody feeling constrained.

The great thing about mind maps are that they visually represent the flow of information and each node is a branch off of a another so the information can be understood via visualization and re-factored by all those involved whether technical or not; therefore not excluding any in your team.

Of course mind maps aren't exclusively suited simply for collaboration but they're also a great development tool that can help you outline a problem or solution and devise an attack plan by being able to visualize the entire structure of the problem. It's a really wonderful device.

Some great software to use for mind map creation on your Windows/Linux/OSX machine is FreeMind which is a free/OSS mind map creation software that is fairly simple to use. There are also proprietary implementations which will cost you such as ConceptDraw PRO MINDMAP and MS Office Visio. Both of these are great tools and capable of much more than just mind mapping but I like to keep it simple when I'm creating mind maps and, frankly, like to stick to paper for the first draft anyhow (post-it notes on a whiteboard are also a great technique for collaboration: allows for quick re-factoring of ideas). The software should only be for the formalization of a mind map if this is ever necessary.

Personal Wiki:

Creating a personal wiki may be one of the single most important things I took from reading this book. This is one of those things that, when it's revealed to you, makes you think "wow, why didn't I think of this before?"

This is great storage method for information that's relevant to your everyday life kept on an external device that isn't your brain. The wiki serves as an "exocortex" or external storage device which is best suited for keeping large amounts of information in order that your brain doesn't slow down. You need to do this to augment your brain's processing capabilities to the maximum level.

If you keep storing more and more things on your brain all the time, clutter amongst your thoughts accumulate and you're not as quick or decisive in your thoughts or actions. Also, you're unable to keep focused because there are always other things you feel you must be attending to as you're trying to focus, unsuccessfully, on the task at hand.

The wiki is great tool because it allows you to put all the information into one place in a structured and hyper-linked format. It's sort of along the same lines as a mind map in the way it organizes data except that it's not in a visualized format but a text one.

Your wiki is a great place to store all the ideas that accumulate over time in your "thought bucket" (such as a Moleskine notebook you keep for ideas) in a more hardened and structured manner.

"This is not some mere clerical activity. According to the research into distributed cognition, the tolls you use for mental support outside your brain become part of your operating mind. As marvelous as the brain is, we can turbo-charge it by providing some key external support." (Pg. 220)

Of course, now you need the software to enable the creation of this magical device. The typical MediaWiki wiki software (which is the backbone of wikipedia.com) can be found here and is free/OSS. This is not, however what I would recommend the average user use to develop his/her wiki as it is rather complicated to setup unless you're technically inclined (know how to setup an Apache server on your system and enable PHP support with a MySQL backend for data storage).

The software that I use for keeping a wiki is Microsoft Office OneNote. It's not the primary purpose of this software I suppose but it does everything I need it to do. It will link files together and allows you to organized everything in a hierarchically structured way which is paramount in keeping data organized properly.


Context Switching:

"You can't pay attention to too many different things at once, because to change your focus from one item to another means you have to switch context. And unfortunately, our brains just aren't wired to support context switching very well."

The problem today is that there are just too many things to pay attention to. There are far too many distraction (thanks, Internet...) and we can't manage it very well if we don't have a well-established system for doing so.

Setting up a system for organizing and processing tasks efficiently is key to managing context switching. This streamlining of your daily workflow would be most effective if modeled after David Allen's "Getting Thing's Done" routine which entails:
  1. Scan the input queue only once: Whatever input queue you are dealing with, be it in an email inbox, voicemail, or paper inbox, don't use the arrival box as a storage device. go through and sort the new arrivals into whatever piles are necessary, but don't keep rescanning the same old stuff in the input queue. If it's something that can be dispatched in less than two minutes, then do it and get it over with, or pawn it off on someone else entirely if you can (aka delegation). Constantly reviewing the same 1,000 inbox messages to work on the last 20 important ones just wastes your time and mental energy.
  2. Process each pile of work in order: Once you have your piles, work them. Stay on taskand avoid context switching. As we saw earlier, switching to another task will blow your mental stack and you'll lose more time as you get back into the task. We programmer types are highly susceptible to being distracted by shiny things. Stick to your pile.
  3. Don't keep lists in your head: Allen spots another important aspect of maintaining and exocortex. Dynamic refresh of mental lists is very expensive. Instead, keep to to-do lists and such somewhere in your exocortex--on a sticky note, in a wiki, in a calendaring or dedicated to-do list tool, or in something similar.
I know this was a long post and if you're reading this that's because you either liked it or just have some compulsive problem where you need finish whatever you start (or you skipped to the very end). In any case, I applaud your valiant effort.

Thanks for reading!

Sunday, February 22, 2009

Officially tired of studying...

Well, I've been reading, annotating, highlighting and every other '-ing' you can think of that's involved in the process of studying... My hand is cramped so I am forced to stop for a bit of a rest. Midterms FTL...

It's been an exciting and enjoyable weekend, I'm pleased to report. We've picked up the pace once again with the development of OrgFlo and finally have an official Alpha launch date (May 1st, 2009). Things are humming along quite nicely and the pace will be quickening substantially in the coming weeks. We finally got our SharePoint server up (thanks mostly to BC) so that we may now begin development full-swing!

Ram's moving back to the valley which is exciting news indeed! Our team may now operate from a single, physical CP without the necessity of Skype (et al.) as the facilitator of communications. This will speed development considerably.

Well, I suppose I should get back to my studying then...
Catch you on the flipside ;)

Friday, February 20, 2009

Rough week...

I've been really out of sorts this week since having my car accident Monday evening. Everything seemed to fall out of sync afterward and my mind was in a perpetually scattered state. It's mending, however and as long as I have my work to occupy me, I'll be back in the groove in no time flat.

I've accomplished some this week but definitely not as much as I would have had I been hitting on all 8 cylinders. It's maddening and even now as I write this post, I find myself preoccupied by the fact that I've been so unproductive these past days.

I'm sort of glad to be back on my bike, though. I'm sure that I've lowered my carbon footprint by at least a little bit just riding my bicycle not to mention it's pretty good exercise riding to work and back every day.

We're going to have an all day dev session tomorrow for OrgFlo which I'm pretty excited about. We decided at last nights meeting that our Alpha launch date will be May 1st, 2009. We're going to need to work pretty hard to meet that date but I'm fairly certain we're up for it. I'm truly excited about bringing this product to all of you and soon. If it turns out as we're envisioning, it will completely revolutionize commerce and relations between small and medium businesses and their customers.

The scope of the project is massive but we'll be developing it in bite-sized iterations so as to ensure the proper attention to detail regarding even the most minutiae feature or detail.

Well, I suppose I'm off to pore over the RoR API for the next several hours. Stay classy all you readers of weblogs.

Sunday, February 15, 2009

NetBeans v. TextMate


Well, I've been working nonstop for the past 5 or so hours on an application for the university computer science department. It's slow-going and I'm tired of coding... So, I guess I'll take a break and do my assignment for CSCI 2380 which is in a different language, at least (C++).

For the record, I did try the NetBeans IDE and it didn't really suit my fancy. It's not a bad piece of software, it's just that I really prefer to work with the more lightweight TextMate. NetBeans does have some nice features, however that I may utilize in the future such as global error-checking for one. I'm sure I'll be giving it another shot but for now, I just needed to get some coding done; didn't want to have to worry about figuring out a new IDE UI.

I checked my code into my git repository and hopefully BC can do something with it while I'm off duty. We have to get this app finished before we can start on our OrgFlo development in ernest.

On another subject, I'm going to start reading the book "Agile Project Management: Creating Innovative Projects" by Jim Highsmith (whose website is in desperate need of a new graphical frontend). It comes highly recommended as project management books go and hopefully it'll aid in my ability to better manage my teams and projects.

Currently, I'm in the middle of "Pragmatic Thinking & Learning: Refactor Your Wetware" by Andy Hunt. I'm nearly done with it but it's taken extra long as it is one of those books you have to read and form new habits in your daily routines as you go along. It takes practice and a lot of steady note-taking (not to mention discipline). Despite all the effort involved, however, it's a really great book. It contains some true gems and I recommend it very highly.

Apologies if this sounds a bit dry, my mind's just a bit sluggish after all that coding. I promise the next post will be more upbeat and contain more interesting content.

Don't forget to stay tuned for updates on OrgFlo. We will have something to show you all very soon.

Wednesday, February 11, 2009

OrgFlo!


Well, I haven't posted in a while and the reason for that is I've been a bit preoccupied with what we're doing over at OrgFlo.com. Billy, Ram, Cam, and I have been working steadfastly on developing this new service so that we may (hopefully) roll it out in the very near future.

The pace of development is quickening and hopefully we'll have something to show you guys very soon! Stay tuned for updates.

OrgFlo Twitter: http://twitter.com/orgflo

OrgFlo Blog: http://orgflo.com