Barbarian Meets Coding Titlebarbarianmeetscoding

WebDev, UX & a Pinch of Fantasy

Scott Adams on Rewarding Work

I just loved this post by Scott Adams (Dilbert). Here’s a fragment:

Whenever you see the x-factor in someone's output - that little extra something that turns the good into the awesome - it's a marker for intrinsic motivation. Monetary motivation plateaus at the point you think your work equals your pay. For most people, that happens when the product is good but not awesome. To get to awesome you need to think you might be changing the world, saving lives, redeeming your reputation, attracting the mate of your dreams, or something else that is emotionally large.

One of my techniques for staying motivated is that I put everything I do in the context of how it might improve the entire world, or at least some subset of it.

Go, go and subscribe to his blog, he has a lot of interesting things to say.

Barbaric August: On Building Skynet And Failing In Making It Conquer The World For Me

Barbaric Monthly is my attempt at building/improving a coding project per month so that I can experiment with old and new technologies, learn ad infinitum, remain excited about the craft and nurture my passion for software development. This Barbaric Monthly is about developing a personal task management system with a command line interface.

And from minute 4… one, two, three…

Setting the mood for writing :).

5 days left of Barbaric August and it looks like I may be able to have something that remotely, vaguely, nearly seems to work. It is a starting point anyhow, and I feel it will spawn many interesting branches of development in future Barbaric Monthly’s to come.

Since my last update I was able to put some hours after work and build Skynet!! Or more likely something with the AI prowess of a stone. See the evidence by yourself below:

Ultimate Task Management System Screenshot demo-ing basic command line interaction

Yeah… That rule-the-world thingy did not work so well for me.

P.S: Don’t miss the outstanding episode of the Windows Developer Show @RyanLowdermilk and @tlowdermilk recorded from That Conference.

*Update 2012-08-27: Seems like all hope is not lost after all xDD…*

Barbaric August: About DSL Design, Setting Up The Project And Putting Something On the Screen

Barbaric Monthly is my attempt at building/improving a coding project per month so that I can experiment with old and new technologies, learn ad infinitum, remain excited about the craft and nurture my passion for software development. This Barbaric Monthly is about developing a personal task management system with a command line interface.

Wooo… that was a quick blurry weekend at IFS Training Camp:

Anyhow, after most of the mists of mayhem dissipated from my head I started reading Domain Specific Languages to get ideas about how to go around building a DSL for the Ultimate Personal Task Management System project. It took me a while to get up to speed, was it due to the nebulae that populated my mind or to the fact that one needs some time to adapt to the writing of an author, I do not dare to wonder. It is a very interesting book nevertheless, I found out that, I have been implementing what Martin Fowler calls internal DSLs for quite a while without even reflecting about it: Yes, Ladies and Gentlemen, Fluent Interfaces are no other thing than Domain Specific Languages embedded within the same general-purpose programming language you happen to be using! Aha!. Aside from this discovery and, in the context of this project, I think I can get away by starting implementing a simple DSL based on a Delimiter-Directed Translation parser and go increasing in complexity as needed.

I finally was able to set up the project on GitHub and Sprint.ly today, and after hacking the first user story, here we have a draft of how it may look:

Ultimate Task Management System First Draft

Hell Yeah! Let’s make the Console Hip again!

Barbaric August: Building A Pseudo-Intelligent Personal Task Management System

Barbaric Monthly is my attempt at building/improving a coding project per month so that I can experiment with old and new technologies, learn ad infinitum, remain excited about the craft and nurture my passion for software development.

A handful of co-workers and I have been secretly planning an exciting programming event at our company. During our weekly brainstorming sessions we usually have very interesting conversations and plenty of exciting ideas are shared back and forth (How refreshing! :) ). In the last meeting specially, one idea stroke my fancy greatly, the idea of developing something similar to hubot - a cute robot assistant - that would automate repetitive tasks or provide a centralized control for different systems within the organization.

At the same time, I am very into personal task management systems that help you increase your productivity (GTD, Pomodoro, Getting Results the Agile way, Personal Kanban, Zen to Done…) and throughout the years I have perfected my own. Something that I have been considering for quite some time is to implement this Ultimate (XDDDD) system in the form of a web application. While I am aware that plenty of applications exist out there in the wild, I would love to build something completely tailored for me, and moreover, I would like to have the possibility to control my system with a Console interface! Old School! But really, is there anything more productive than a command-line shell? than a personalized hubot?

So here we are at this point, the planets aligning, the full moon rising, the wolves howling, and I… switching my Barbaric Monthly from CMS to the Ultimate Personal Task Management System Of Awesomeness. Here is a mock-up of what it might look like:

Ultimate Task Management System Mockup

Simply put, it will be SPA (Single Page Application) with a regular web interface and an embedded Console - let’s call him Mike. Mike will let the user (a.k.a. me) manipulate the different tasks, projects, tags, filter what’s being displayed, etc. Furthermore, the user (a.k.a. me again) will be able to modify or extend the DSL (Domain Specific Language) that Mike understands at runtime. For instance, I would be able to define a tag like “e-mail” and then use that to tell Mike: “e-mail [email protected]”.

I anticipate a lot of AJAX/WebSockets and DSL design goodness! Yey! Now… let’s see if I can come up with a prototype in 2 weeks.

P.S. On a totally unrelated topic: You really need to go and listen to Leo Lapote geek out with Daniel Suarez writer of the internationally acclaimed techno thrillers Daemon and Freedom. It was Epic.

Barbarian Meets MEF (Managed Extensibility Framework)... And There Are Evil Wizards Too

The “barbarian meets” series are a collection of articles that intend to introduce and explain useful libraries, frameworks, tools and technologies in simple and straightforward terms.

MEF is Microsoft’s solution for easing the pain of building extensible applications. Throughout these Barbarian Meets series we will go through what MEF is, why should you care, which problem does it solve and how it works.

Read on →