June 18, 2009

Everyman Report

For the past two weeks I tried one of the polyphasic schedules called Everyman. I enjoyed the experiment, especially the first 10 days but I had gave up at the end. Here’s how things went.

  • I first did a preparation period where I tried to consistently stay up late at night but without constraining the core sleep to 3 hours, i.e. without waking up at 5am.
  • I then moved to the following schedule: core (2am-5am), nap-1 (10am), nap-2 (4pm), nap-3 (9pm)
  • I initially decided to compensate for the decreased sleeping time adding deep relaxation 5 minutes micro-naps between pomodoros. I thought that throwing this into the mix was a good integration strategy.
  • Micro-naps turned out to be a bad move. You don’t want to interfere with the 20’ naps where you want to enter REM as soon as possible. In other words, you have to feel really tired to achieve that kind of intense sleep and micro-napping was preventing this.
  • The adaptation phase end was on day 6: I fell asleep immediately and dream vividly during the nap while before I was mostly awake. The day before I was not able to follow the schedule and that I think triggered the sleep compression during the 20’ nap the next day.
  • On the second week I started having problems waking up after the core sleep. Yes I was awake but unable to anything than mechanical things until 7-8am. I started questioning the benefits after 3 mornings in that condition.
  • I decided to add an additional nap to the mix changing the schedule to: core (2am-5am), nap-1 (10am), nap-2 (2pm), nap-3 (8pm), nap-4 (10pm) but the problem after the core was still there and I also experienced sleepiness after 1 hour from the 20’ nap

The last move didn’t help and maybe worsened the situation. I browsed the polyphasic forum in search for help to see if I was doing something wrong. It turns out that is not enough to just follow the schedule and pretend that everything is ok. The next step after the adaptation is to search for the optimal core positioning during the night and the other naps during the day so that they are more consistent with the new body sleep requests. Since it was already demanding for me the fact to follow a sleep schedule, I finally gave up.

Wow, what an experience! I enjoyed having a couple of 8-days weeks and the boost of productivity especially at the beginning. But the initial boost went back to normal for the above problems at the end of the second week. So I had to make a decision: if I’m not going to use those additional 4 hours a day for things that I like to do because I’m too sleepy to do them well, what’s the point? If I have to spend time reading forums and experimenting on tweaking the schedule, what’s the point? I will definitely give polyphasic a second try as soon as my life allows me again to experiment a little more, but for now I have to concentrate on other things.

The strategy that worked really well for me until now that I’m going to resume is to have relatively short nights of around 6 hours sleep and micro-napping between pomodoros.

Comments (View)
June 16, 2009

Pomodori 0.3

I’m happy to announce Pomodori release 0.3. Just follow the link and the installation instructions on the page. For those who don’t know, Pomodori is the pomodoro management application I’m using every day since February. “819 pomodoros and counting!” is what I see right now. Pomodori isn’t just a timer, it’s a tool implementing the Pomodoro Technique. At this point Pomodori is missing several important features and that’s the reason to call it a zero something release.

Pomodori improved my day by day implementation of the PT featuring essential aspects without my assistance: start a 25’ countdown, ring, ask me for a description, give me a 5’ break, ring again, start another pomodoro. Recently Pomodori can also answer questions like “what did I learned yesterday?” or “how many pomodoros can I plan for today?” and so on. Clearly this is just scratching the surface of the technique. For example, right now the inventory and the day by day todo list are external plain text files that one day I want to see integrated in the tool.

Technically Pomodori isn’t just built for time to market, quite the opposite actually. The project is my playground for MacRuby, something the typical user of the PT sure cares about! The fact that it’s targeting only the Mac is also a barrier for mass adoption. So dear customer, be patient if you don’t see the standard behavior expected from a mac app right away, I’m learning all about Cocoa right now.

In this release, 0.3, you can finally access partions of the Pomodori database. This is limited to yesterday’s and today’s pomodoros but the plan is to extend the search to any ranges so you’re free to dig deep into the past. Announce: with 0.4 you should see an exciting new feature coming up, which is just the beginning of the social part of Pomodori.

Developers! If you like Ruby and the Mac please join me on github you won’t be disappointed. Pomodori implements an interesting MVC architecture and it’s fully built TDD from the ground up, view logic included, no XCode required. Especially if you know Cocoa/Objective-C, that’s my weakest point. Enjoy!

Comments (View)
June 13, 2009

Intentional and DSLs

In what now seems to be a biweekly installment, I’ve read and listen around quite a bit lately. Since the beginning of my information diet, I have way less processing to do and my sources are only a couple of conference videos online and a few other things. The item that generated the biggest train of thoughts was the release of the Intentional software workbench that I heard of while reading Martin’sMF Bliki. DSL workbenches are a fascinating topic these days and there is sure potential in our industry. The typical use case for DSLs is medium to high complexity business logic that usually is described by business analysts in a non-executable formats. The workbench can be used to maintain the sync between the generated DSL and the business view of rules. Why not using user stories like the rest of the application? Because the business logic is so complicated that it requires a detailed description and verbal communication is not enough. With a DSL workbench duplication between the Word documents and the actual code is eliminated by using an abstract language that describes the domain. Just be careful: the presentation talks generically about “creating software” without specifying that we are talking about the DSL portion of it. Don’t use these products to generate the whole application!

Other notables include in no specific order:

Compass: A Real Stylesheet Framework… Here’s a very nicely done screencast on how to jump start quickly on a web page design based on sass, blueprint and compass. Chris is kind enough to explain basic concepts, when to use id or classes, sass basics, how to organize your project and so on. The power of mix-ins in sass is great and makes thing quick and easy. As Chris says at some point, you can write your self most of these stuff, but why? Sass generation is unobtrusive and sass template are very readable. The grid system is a breeze once you understand how to attach the column width information to divs. All pretty easy stuff. Thanks for the great screencast.

RailsConf 09 DHH Rails 3… I think it’s the second time I heard about custom attributes in HTML 5. Rails 3 is going to use custom attributes to signaling the framework how to build the javascript actions connected to events, like onclick(). Remains to understand when the transition will actually happen for legacy browsers. Another interesting thing is the rewriting of generators so that scaffolding can be tailored for the particular choice of javascript library, ORM mapping strategy and so on. Rails is still opinionated with defaults but it should be easier to coexist with different opinions.

Industry Misinterpretations 138: Who Killed What… Interesting response here to Uncle Bob “who killed SmallTalk” keynote. If you skip the discussion about the definition of “dead” which is useless in my opinion, I like the “renaissance” model in which a powerful language which is no more fashionable at some point, becomes mainstream again for some unexpected conjunction of facts. At least this is the hope of the SmallTalk community. I don’t know if that could happen though, considering that SmallTalk evokes old technologies that didn’t work (being that true or not). What maybe is possible is the re-incarnation of SmallTalk with a different name, exactly like old good marketing rules tell us all the time.

Scotland on Rails 2009 - The Ruby Object Model - Dave Thomas… This is basically the screencast no.1 from the pragcasts made up as a presentation. I viewed that again with pleasure because Dave is a great speaker and the topic is always hot. Ruby is strictly object based as it should be for an OO language. The strange thing is that passing the time the pure OO heritage has been lost starting from C++, Java and the rest that came after. In those languages a Class is not an object but only something that the compiler knows what to do about it. In Ruby class are just “simulated” as interaction between objects that contain methods and a pointer to the “parent”. This is the reason of the great flexibility of Ruby, everything is an object model and can be accessed anytime.

Episode 136: Past Present and Future of MDA with David Frankel | Software Engineering Radio… MDA is presented in this podcast as the evolution of UML which with after the introduction of OCL was trying to be more specific and semantic. Sorry, I just don’t get it and what I hear is pure fluff. As far as I can understand, MDA is trying to be a visual language for languages. Components can be specified using MDA and the code generated accordingly. In the opinion of David Frankel abstractions are emerging from different industries and similar tools are created to model the application. From what I can remember, this was going on for decades, but we never had the power of building the big unifying abstraction to describe all business components. And by the way, what is wrong in choosing a language and evolve reusable components and stick with it for, say, 5 years? Then I throw everything away and switch to the next language, so what? I understand using DSLs to describe portions of an application, but I don’t understand why I should create the whole application as a DSL or MDA.

Hanselminutes Podcast 163 - Software Metrics with Patrick Smacchia… Interesting talk on metrics here. It’s always good to remember the there are good and simple metrics that cover most of the cases without the need of an exotic mathematic formula. For example lines of code by feature can reveal unwanted complexity for comparable features. Another interesting one is loc covered by test ratio. Loc is not enough to guarantee quality of code. Cyclomatic complexity can be used to spot difficult-to-maintain code. While too high afferent (incoming) coupling (Ac) means probable SRP violation and it’s time to extract one/many interfaces to create dependency on abstractions. There are also composed metrics: CRAP is one or the maintainability index. But these are numbers without dimensions and it’s is easy to expose false positives because of their complexity. A new one I learned here is the MethodRank, the rank algorithm applied to the method dependencies tree. At the top there are methods which should be tested more carefully because of their high dependency.

Comments (View)
June 3, 2009

Pomodoro-GTD Interview

I had the pleasure to attend the recording of the last episode of the Virtual GTD Study Group. The topic was “Perspective and Control”, a matrix chart that describes different states of focus but I’ve got a chance to introduce the technique and give also some advices for beginners. I talked about how the Pomodoro Technique helps staying in the “Captain & Commander” quadrant and other more general discussions. I also had the opportunity to explain why in my opinion the Pomodoro Technique and GTD integrates so well together. Overall I enjoyed the questions and the discussion and I had a very pleasant time. For the impatient, the Pomodoro chatting starts around 32:00 but don’t miss the previous part that explains what Perspective and Control is and how to use it. Also, consider to subscribe the podcast if you are interested in GTD and self productivity in general. Tara and the other guys are very supportive and you don’t want to miss their help!

Comments (View)
May 30, 2009

Pomodoro VS GTD

Here’s my reading notes for the last two weeks. I definitely had a lot of thinking on how to integrate GTD with the Pomodoro technique and that’s my main topic this time.

Productive Talk Compilation: 8-episode podcast with GTD’s David Allen | 43 Folders… I’ve listened to this series back in time and I was curious to re-listen this conversation between Merlin Mann and David Allen about GTD to compare with the Pomodoro Technique. There are definitely lot of similarities. Basic principles are the same: avoid procrastination, focus on what is important and ultimately getting things done. But I see clear differences also: GTD focuses more on the collection phase while the Pomodoro Technique is more about execution and tracking. Thus the two technique mix together very nicely. Pomodoro doesn’t say anything about how to empty your brain out or give a name on what is in your head or the organization into folders and context. On the other end GTD doesn’t talk about prioritization processes or tracking to collect metrics. Also in the PT interruption handling is much more specific and reviews are daily. Last: GTD does way a better job at marketing the technique than pomodoros. That will change in the future, I think.

Lifehacker - David Allen’s Making It All Work a New Look at GTD - David Allen… Interesting chart here. On the axis, perspective and control. The 4 resulting quadrants are very typical situations for everyone of us. High perspective means knowing at a glance everything that we want to have done and knowing that nothing is outside that list. Control means that we decide the priority of execution and how to manage that list. Low perspective, low control, means poor slave. High perspective high control means “captain & commander” of you life. You go crazy when even if you maintain your high perspective you don’t follow your plans. I’m 80-90% in commander state but sometimes I fail and go “crazy” state. The main reason for that remaining 10-20% achievement is lack of sustainable pace because it happens almost only when I’m tired.

GPGPU - General Programming GPU… There’s a lot of interest in what GPU can do other than processing vertexes these days. It is pretty much the case that your actual computer is already equipped with a > 200 cores underutilized GPU (unless you play a lot of 3D games). NVidia and ATI already produces SDK to exploit this computing power other than games for highly parallel stream processing. So instead of off-loading high load computations to some external form of parallel processing you can think of just run them on the GPU with surprising results. GPUs are much more powerful than normal multi-core CPUs for parallel processing so it make sense to use them instead of conventional parallel architectures.

Hanselminutes - BBS era… I’m really enjoying IT history lately and here’s another interesting piece of the story. I was too young at the time of BBSs to remember, too bad. BBS are similar to our IM of nowadays but as said in the podcast there are big differences. At the beginning, the computer of the SYSOP had to be completely dedicated to maintain the connection and the SYSOP could see user actions, like painting screens and drawing text. As such it allowed a complete control over the communication channel, with the option of jumping right into the user screen to ask questions or offer for help. It remembers me of the difference between modern cars, all electronics and pre-assembled pieces and old cars that could be potentially torn apart with a screwdriver to be inspected easily.

Joe Hewitt - Mobile Orchard… Joe Hewitt, author of Firebug, moved to iPhone development lately with one of the most downloaded app from the AppStore, Facebook. Several core components from the Facebook app have been extracted and cleaned-up to become an open source collection of components called Three20. In this podcast Joe talks about the development details in Three20, html table cells without UIWebview, a Quartz based rich text editor for text field, an auto-resizeable text field and the popular photo chooser. I enjoyed the very technical conversation even if I’m not proficient with iPhone development. I immediately linked the Three20 project hoping to play with it soon. A good listening.

Comments (View)
May 29, 2009

Going Information Diet

I’ve got the idea not a long time ago. Main reasons behind the decision are:

  • I have a long queue of books I bought waiting to be read and I can’t find the time to read them.
  • I want to test the theory about consuming well digested and consistent information (such as books or essays) over partial and half-baked ideas (Twitter and also the majority of blog entries, plus mailing lists)
  • I feel the need to consolidate many years of open loops in my profession, scratching the surface of a topic and quickly jump away to ride the wave of the next cool thing.

To be clear: I want to test in practice the assumption that partial information is also partially useful. I think there is a not negligible effort to filter out the garbage and often the ‘cool thing’ of the moment is not directly applicable to solve the issue at hand without heavy manual intervention and related context switch. I understand that this is the way you do research on new ideas and contribute back with your support. But this is just a diet and it’s supposed to end after a while :)

I don’t feel overwhelmed by current feeds, email, tweets or reading queues, especially after the recent pruning I did. But still, I can’t ignore that list of books waiting for me and the need to remove those distracting jumps I often experience from half-baked information. I also know I’m going to remove some very valuable source if I don’t follow blogs and tweets. That’s too bad, but I want to be proven wrong first.

The recipe:

  • Twitter: I’ll just stop following and updating. I removed my twitter iPhone app. I’d like to update, but If I do I know I’m tempted to see replies. Direct messages are ok.
  • Facebook: only personal stuff, pictures, keep in touch with old friends, no work related.
  • Feeds: uninstalled NetNewsWire. I won’t read feeds anymore.
  • Mailing lists: set up filter to move messages and mark as read. Unsubscribing is too long to do and by the way, what if I change my mind? :)
  • Podcasts: I’ll keep them because I only listen while running. Plus, it’s digested information most of the time.
  • Current reading queue/video: I’ll just save to read later some blog entries because related to my projects.
  • Google: of course! Whatever is related to the task I’m doing found on Google is good to read, blogs and tweets included. But the dependency is inverted. I just don’t want to search the net for generic ‘news’.
  • Mail and IM: no changes here.

As for my weekly highlights section: it won’t be updated often as before, but since I keep reading and listening around I’m pretty sure I’ll keep posting. For sure I have my thoughts on the book I’m reading. I’ll be happy to hear your reaction on this. Ah, the good old blog comments…

Comments (View)
May 15, 2009

Ruby VS Smalltalk

A little better on my reading queue for this week’s highlights. I think the most interesting post (of course from my absolutely opinionated view) was the Uncle Bob’s keynote talk at this RailsConf 2009. I always enjoy to hear interesting pieces of computing history and Uncle Bob is clearly a skilled storyteller. It must be fun (and also sad when you realize how old you are :) to write talks adding pieces of your personal history. What killed Smalltalk? It was too easy to make a mess. But also: image without source files, not free, competing implementations. Also a wrong attitude: Smalltalkers thought their language and tools were so good that they don’t need to be compliant with the typical corporate IT infrastructure. The presentation is a concentrate of great thoughts. What is clean code? Is code that reveals what it does by reading it. If the WTF/min is != 0 is not clean. Ruby risks the same because it’s powerful. What can we do? Craftsmanship. Leave the campfire cleaner than you found it. A collective effort to maintain the code clean should save also the most powerful and risky language. Good start tdd: has infiltrated the ruby culture much more than it did with smalltalk.

Kent Beck - To Test or Not to Test? That’s a Good Question.… I also don’t test for specific cases. When I don’t it’s because I’m missing the skills to test effectively, that is, in an easy and consolidated way. Let’s take Rails view specs with rspec. I know how to spec them out very quickly, mocks, render directives and so on. Almost a no brainer. But there are other cases where it takes me a long time to figure out how to mock certain APIs, what methods should I call and how to organize the spec suite. So my rule became: if it’s taking too long or it’s too complicated fork a new task to spike and learn about it. But now ship it! It’s brutal I know but usually that’s the correct thing to do. Of course the meaning of “too long” is strictly project dependent. Then I put shame on me because I was missing a “tool” in my tool set so that next time I can’t be taken by surprise. I know I need practice.

Introduction to Wolfram|Alpha by Stephen Wolfram… This is the screencast that introduced me to the work of Stephen Wolfram. Wolfram Alpha is an incredible piece of software, capable of correlations and interpretation beyond what I’ve seen so far. I’m wondering what kind of semantic engine is behind the web interface. This engine is capable of attaching meaning to the human knowledge and serve it at the speed of light. Google killer app? Nah, I don’t think so. What you see on Wolfram Alpha is opinionated, a mash-up of related information that the engine thinks you may like. Wonderful if you want to infer knowledge from data you don’t know about, less useful if you know what you’re searching for. That’s what Google is about when you input some words in the search box. Will it change the way we use the web? Again, I’m skeptic.

Cellular automaton - Wikipedia, the free encyclopedia… Looking at the WolframAlpha phenomenon I ended up wandering wikipedia reading about cellular automaton. I’m amazed by how complicated a model with simple rules can be. Very simple CAs like the monodimensional rule-110 are even turing complete. I also realized that the Langton’s ant and Conway’s Game of Life are to popular implementation of CAs. Some of these models are often seen in nature (predators, chaotic systems, population models etc.) and therefore is tempting to think that a basic combination of simple rules is responsible for biological life. What are those rules is the subject of Wolfram’s book “A New Kind Of Science” which is already in my Amazon basket.

Episode 134: Release It with Michael Nygard… Sad: the book is standing on my bookshelf and I never managed to read it. Good: this episode remembers me what I’m missing. First: my knowledge of production systems just scratch the surface. For some reason in my career I always move when the system starts its life and that’s not good. The podcast follows the book structure which is a nice to read patterns collection. Here’s some interesting bite of the conversation. A system that self-adjusts or shuts down a specific feature when a functionality doesn’t behave as from the SLA is better than timeout. Timeout usually creates more dangers. Ajax completion on key strokes is of low value and high server impact. I don’t agree with this one, it depends on the application if this is low value. Caching can be good, but too much caching or caching done wrong can be dangerous. SLA inversion anti-patter: forgetting that SLA of dependent systems are correlated to the SLA of the main system. And much more. Recommended listening.

Comments (View)
May 10, 2009

Story Mapping

Again not so much time this week to look around into the web-sphere. My reading queue is growing, the video one is worse. Not to mention podcasts, since I couldn’t run this week for a severe back pain. I decided to report on the few things I was able to collect a summary about.

The most interesting of the week

I realized I was using this organizational pattern for user stories already. The new user story backlog is a map collect stories, epics and tasks on a permanent board. Instead of having only the current iteration (or sprint) board, all stories are organized permanently on another huge board where relationships and context can be maintained. I’ve seen this in practice working as a consultant for a project managed by ThoughtWorkers. As the article clearly stated this is nothing new but just a pattern emerging from multiple places. After I heard about minimum marketable features from naked planning this is the time of “minimum viable product”. They mirror the same thing. Epic is another synonym. The important point in this approach is that stories belonging to different epics are worked together to release a product which is “epic-complete” but maybe not story-complete. Stories are prioritized, epics really aren’t.

This Week’s Highlights

Podcast #50 - Blog - Stack Overflow - Steve Yegge… It sounds like at Google are creating an standardized support layer which adds language specific features to IDEs. If you take for example IntelliJ and Eclipse they provide the same quality Java support features like autocompletion, inline help or compile as you write kind of stuff. The same happens for other IDEs and languages: they are implementing the same functionalities over and over again. As a developer for example I’d like to have autocompletion in TextMate but that’s not enough for me to move to Aptana. My understanding is that they started from JavaScript support to create the framework, supporting their internal type system for the most important IDEs. Of course they have to support also other languages to go public with the framework. Maybe one day we’ll be able to command+space in vi and have autocompletion :)

Stefano’s Linotype - On Twitter… Mmmh. Stefano thinks that when information is just so not-digested is difficult to understand the ROI of the effort required to follow. It’s like reading reddit, infoq, tuaw etc. every day. All wonderful sources of information but those news are so “new” that they can turn completely useless in just minutes. It’s like gambling: in this case the risk is to waste time. He talks about Twitter specifically. But for me Twitter is not the place for news. What I’m mostly interested in is what are other people habits, what they do during the day, how they can so productive, what extra-job activities they have and when. For me it’s a source of completely new information, nothing to do with IRC or blogs where personal habits are completely out of scope. Before Twitter I couldn’t really know what software geniuses were up to or in which way they tackle a problem during their everyday life at work. Twitter is for me inspiring 90% of the time. No gambling.

Industry Misinterpretations 133: Smalltalk and FPGAs… Enjoyed some history of the Squeak community. Squeak users somehow self-organized to avoid a community split when squeakers with different ideas wanted to create their on branch. Sad fact: SmallTalk was too young to be used in the early eighties when memory consumption was an issue and people were choosing C++ for that. SmallTalk is now considered too old without having spent a period as a mainstream language. It looks like there is a lot of interested about hardware implementation of languages for specific business on FPGA and GPU. The first reason is of course the always decreasing price of such a devices. In this podcast an FPGA implementing smalltalk instructions is only running as a simulation but soon to be “printed” in hardware. There is a one-to-ten ratio for a transistor implemented as FPGA over the actual number of transistors actually used. Still a good ratio considering ad-hoc hardware design on one side and generic CPU like Intel’s on the other.

Comments (View)
May 1, 2009

SmallTalk in SmallPlaces

I had less time to read/listen/watch in the last two weeks. So I skipped the summary of the most interesting reading for the last week. Ok, let’s talk about SmallTalk then. I’m very disappointed I never found the time to learn about what can be considered the father of all the modern languages you hear about. Unfortunately I need to keep this desire low priority in my task list for some more. Even if I’m not actively following, I noticed that the SmallTalk community is alive and kicking, producing software, podcasts and tons of screencasts. Anyway, Industry Misinterpretations 129: Smalltalk in Small Places is about running Squeak on the iPhone. The process is a bit complicated: you need to strip useless classes from the VM and compile all down to C and use an Objective-C to SmallTalk bridge to connect the two world. The micro-VM was used to run Pier (CMS) which runs on top of SeaSide. So you’ve got pretty much all the SmallTalk possible goodness on the iPhone. The interview is a fascinating trip inside the internals of the VM, the garbage collector and the Obj-C to SmallTalk bridge. Have a peek at http://isqueak.org.

Lessons In iPhone Game Marketing… This is an interesting and sad listening. It talks about how important it is to get in those top 100 by iTunes store ranking for whatever good/bad application. The sad part is that 6 months of development for a game can bring to 500$ in revenue if you miss that top 100. It means it has nothing to do with quality, robustness, reliability of software, but with good marketing. The top 100 is reached after a certain number of downloads after the launch or because Apple decides to feature the app. The integration of the number of downloads over the time doesn’t matter even if you have a great average/day. The way you can get into the top 100 are pre-releases to send to online specialized websites for review, advertisement with promos, a light and free version that seduces the user to buy the 5$ version. In one word “buzz” that needs to converge at launch time to reach the tipping point. Just want to remember that in the AppStore quality is not as important as good marketing.

O’Reilly Open Source Conference - Robert “r0ml” Lefkowitz on Open Source… Here’s a funny and short presentation. Robert Lefkowitz is a skilled orator in the ancient roman sense. And is right from the Quintilian’s Institutes of Oratory one century B.C. that apparently our modern “phases” of software development come from. It’s hilarious how such an old essay is applicable to our modern times and the similarities between the Microsoft development process or RUP. From there Lefkowitz explains his idea for an Open Source development process: exceptional driven development. No requirements, no nothing, just straight deploy waiting for customers who create tickets to request what they need! Of course this is a parody but there is some truth, for example in the description of what a requirement is. A requirement is the expression of our fear, an illusion of power to domesticate the future of the soon to be developed software. Naked planning comes to mind: eliminate the waste required to produce almost useless estimates.

Chariot Tech Cast - Grails… I was curious to see how Grails was doing after a couple of years away from the Java world. Good to see that now Grails is a solid framework that can be used exactly like Rails. Type Grails app-name from the command line and you’ve got your nice project layout to start with, no hassles. I was thinking that if I need to work on a Java web application again I will definitely start from a Grails app, write tests and pure Java at first (a language I know) to gradually transform and move to pure Groovy. Sounds like a plan.

Why you have to engage in social media, even if you don’t want to… Summary: a web presence is not sufficient to guarantee popularity anymore. This was the case 10 years ago but today for each line of business there are tons of competing companies all with good services and products. Solution: social networks. Web presence today means 2 things: contents (the old blog) and social networking which works like a review system by word of mouth. I work for a software house and I think the same thing applies here. There are tons of good programming firm and the only way you have to enter the “cool kids” status is by word of mouth by social networking. First step: put decent contents (not just for marketing) on the web, produce open source software, speak at conferences and user groups. Second: build trust by publishing opinions and pointers to your content via social networks. If you don’t do this your customer base risks to become stale.

The Web 2.0 Show - Jason Fried… I enjoyed this interview with Jason Fried which is very actual despite the date of recording, January 2006. I never read “Getting Real” but I suppose what I heard here is more or less what’s on the book. Speaking of which, “Less is More” is one of the 37Signals slogans which refers to everything: less developers, less pages, less features, with the goal of creating something simple but complete in each part. I’m sure you can do everything interface first, but I prefer the approach of front-end back-end at the same time and in the same team. Interesting the approach of asking the customer feedback after the application is rolled-out. Basecamp was created in 10 hours/week for 3.5 months: it takes that long to create a great product if you stay really focused. The perpetual beta of some products is just bullshit because it looks more a way to apologize in advance for the crappiness of the product. Better focus on something 100% done from the start instead.

The Web 2.0 Show - Eric Meyer… Here’s an old (2006) interview with Eric Mayer. Eric talks about the future of paper-based publishing especially in the computer science field. Today is more profitable to self-publish your work considering how easy it is to create a following with just your web presence. If book publishing companies want to survive they have to adapt to some form of electronic process, offering authors editing or marketing services disconnected from the physical creation of a book. That’s exactly what happened thinking at the Pragmatic BookShelf or the O’Reilly online book format. There is also some room in the interview to talk about Eric’s experience. He became the CSS guru publishing tons of content about CSS for free and only after he was offered to write the popular book. He talks also about the UI design process, starting from photoshop comps, merging all layers, slicing and starting creating the box layout.

Comments (View)

How to take a 5 minutes nap

Read this… Read this… Read this… Read this… Read this… Read this… Read this… Read this… Read this… Read this… Joking :) Your attention please.

The Pomodoro Technique advocates a 25 minutes of quality, focused work followed by a 5 minutes break. There are so many ways to spend the break time, but the main goal is to recharge the brain and allow for background processing of previously assimilated information. The consequence is that you shouldn’t be tempted to spend the break reading emails, news, making phone calls, or anything that generates additional pressure to the following pomodoro.

So for example looking at the above picture, I can say that looking out the window requires less effort than talking or reading emails. At the extremes there are: “sleeping” and “working”. Focused and quality work is the goal of the pomodoro, a focused and quality relax is the goal of the break. I made the mistake of thinking that just looking at email subjects or news titles was enough relaxing for a break but after comparing it with 5 minutes of deep relax I changed my mind.

Ideally, the goal of the break should be light sleep for 5 minutes. I don’t know if it’s possible to sleep, but for sure you can train yourself to do better. After a couple of weeks of self-inspection during the break and relaxing techniques I can say I’m very happy with the results. I always had bad days and those were drastically reduced by the Pomodoro Technique. But I still have bad days or half-days sometimes. I discovered that a good quality 5 mins break can give me immediately back the energy to start the next pomodoro with unexpected ease.

The problem is now how to quickly fall into deep relax. I had success with the following:

  • Find a comfy chair or if you happen to have one at work, a couch
  • As soon as the break starts, close your eyes and find the best relaxing position. You neck, arms and legs should be perfectly relaxed.
  • Think about a light scanner (!!): a horizontal line of light starting from your head going down to your feet, very slowly. While the line of light touches all your muscles concentrate on that single area and further relax whatever is there. Especially important are the eyes: careful remove tenseness.
  • Think about a white giant rectangle gently floating around. If that disappears no big deal. It’s just a starter thought to get you distracted from thinking about the goal of the previous pomodoro.
  • When the break is done, gently open your eyes, start the pomodoro (or have that started automatically because you’re using my tool), focus and go.

You know that you’re doing it correctly if those 5 minutes feel like 10. All the time I failed to properly relax, I payed the consequences after 5/6 pomodoros. Something I also tried was to sleep during the 20 minutes longer breaks. That was real sleep, but never too deep to be counter-productive. Needless to say that also the long break is important as the shorter ones for a good day of pomodoros. The technique works very good in environments with low noise and familiar (where people don’t pay too much attention at you). I borrowed the idea to train the body to deeply sleep in short period of times from the polyphasic sleep model, a fascinating (and scary) way to sleep less.

Comments (View)