Barbarian Meets Codingbarbarianmeetscoding

WebDev, UX & a Pinch of Fantasy

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 →

On Focus

I have a terrible weakness: I am all over the &%$#¤%& place.

I do not know when it started. I do not know if it is due to the fact that my degree was in telecommunications and I feel I have been catching up ever since. I do not know if it is my passion and excitement for the trade that drives me and makes me feel uncontrollably drawn to any new shiny thing that appears on the scene. I do not have the slightest idea.

The fact is that, before I even notice, I find myself reading 37 books at the same time, or working on 6 side projects, or trying to learn Swedish, Italian and to play the violin at the same time. This, of course, tends to end up with pretty catastrophical results (no, really?), with a 1% percent success, tons of unfinished projects and sometimes a deep sense of underachievement - actually that last one it’s not really true, I’m a wonder at looking at the bright side of things, that 1%… hell yeah!.

Anyhow, know your own weaknesses they say, and so I have learned. Through the last year I have been working on improving my focus, on reducing input flow lest it drowns me:

  • Pruning my RSS feeds: Keeping up to date with what is going on in the community is great. But when keeping up seems more work than pleasure, when you wake up in the morning with 1000+ articles that you feel you have to read, when you have no time to produce because you spend all the time consuming the voice of the Internet, then it is definitely not worthy. Fare the well infinite RSS feeds.
  • Reducing books to a maximum of 3: I am aaaalmost there, my goal is to read a technical book, a best practices book and a wild card ^_^.
  • Learning to say NO to myself and others. Still working on this as well, last “Yes” attack materialized in a beautiful violin which I do not know when I will have the time for (after learning Swedish I have told Malin and myself).
  • Making small projects of every endeavour with specific goals: For instance, I want to learn 200 Swedish words a week, instead of I want to improve my Swedish. This increases my focus, lets me visualize what I want to achieve and since it is measurable and something I can complete, it gives me that nice feeling one gets when finishing something successfully.

And my latest addition starting this month:

Focusing on a single side project per month

Enter the Barbaric Monthly with the following rules:

  1. Focus on one main technology
  2. Produce/refine something by the end of the month
  3. Write interesting blog posts about it ^_^

August theme is ASP.NET MVC 4. But remember… focus Jaime… temptation lies just around the corner xD.

Nolan Bushnell on Entrepeneurship

This weekend I listened to a great triangulation episode with Nolan Bushnell, founder of Atari. Check this out:

"I have a heap of stuff...

I probably have somewhere between 50 or 100 ideas that I like to work on.

Here is an interesting thing that happens, and I encourage everybody else to do this: Start writing down every idea you get... And then, start embelishing them... think about... How would you price it? How much do you think it would cost? Turn a line into a paragraph, into a page, and it that process, pretty soon, something is gonna talk to you...

My projects choose me, I don't choose them."

Awesome Resources To Become a Software Development Wizard

Profound and awe-inspiring quote about the grandeur of knowledge

Want to become Gandalf?

Here goes a compilation of the best resources I know for learning programming in the internet. Some of them are free, some of them are not, but they are definitely worth paying for. In no particular order:

Safari Books Online

Safari Books Online is the biggest library on the internet for technical and business books. They have sort of 20000 books on every technology, discipline, methodology and technique that you can imagine. Not only they have all the classics on stock, they also get a huge number of books in alpha version (what they call rough cuts), so that you can access a book even months before it is published. Isn’t that awesome…

You can read the books on the your computer (html or flash), but they also have a great iPad app, with the option of an offline bookshelf if you are on the run and have no connection. Subscriptions start from something around 12$ dollars and access to 5 books per month, but you have the option of a free 10 day trial.

Pluralsight

Pluralsight is the e-learning reference for .NET in the web. They have courses given by top notch developers on absolutely everything: Windows 8, Windows Phone 7, ASP.NET MVC, ASP.NET, WCF, Design Patterns, C#, F#, C++, IronRuby, Business Intelligence, WPF, Silverlight, Entity Framework, SQl Server, and the list goes on.

This is a must for any .NET developer. Check out the 10 day trial

TekPub

Rob Conery is one of my favorite developers out there, and he is a great, great teacher. It was through him that I learnt IoC, TDD and ASP.NET MVC, and all via TekPub. TekPub feels a little bit more personal than Pluralsight and has courses by awesome developers like John Skeet, Ayende Rahien, Scott Hanselman and Steven Sanderson among others.

Main topics are .NET, Ruby and best practices.

Code School

Code School’s approach to e-learning is absolutely amazing and out-of-the-box. They are the creators of the notorious Rails for Zombies - which by the way you can do for free - with courses with a high degree of interaction and game elements. All their courses are very practical and they always provide small controlled runtime environments so you don’t need to install anything on your machine when going through the courses.

Kudos to these people! Absolutely awesome job indeed.

Team Tree House

Team Tree House is mainly focused in web development, web design and iOS development. Their e-learning model consists mainly in a series of courses that provide both videos and exercises, also with game elements, badges and the like. Particularly interesting are what they call Projects, which are end-to-end tutorials of real world web development projects. Subscription plans start from 25$/month.

Udacity

If you like something that feels more like university classes, then Udacity is the right match for you. It is completely free and truly awesome. You can, for instance, learn the foundations of computer science and how to program in python by building a web crawler, or learn algorithms to analyze relationships between people in social networks. They have a dozen courses or so and growing, on a variety of software development topics, perhaps more from a Computer Science perspective but very practical and fun to follow nonetheles.

Channel 9

If you are a .NET developer you have probably heard about Channel 9. Channel 9 is basically the Microsoft Developer Network television. This means that in it you are going to be able to find event videos (like from aspConf2012), shows like Visual Studio Toolbox and the famous Coding4Fun series. In summary, lots of great content for .NET developers.

Tuts+ Premium

[Tuts+ Premium][] is my first stop for technical design knowledge, that is, how to use Photoshop, Illustrator and the like. They also have an ever increasing offer on web development courses.

PeepCode

PeepCode is one of the best resources for Ruby on Rails screencasts and courses on the internet. Instead of having a subscription plan, screencasts and courses are sold individually or in packs.

In Summary

So that is about it. Those are my favorite resources for keeping my programming skills up to date. So, which one are yours? Am I missing any?