jeanne’s attempt at pomodoro

When I work at home on personal computer projects, I have one of two problems:

  1. getting distracted from my main task by other computer things or other items that need doing around the house
  2. getting so absorbed in my task that I forget to look away from the computer causing me to get a headache and need to stop
Neither of these is an issue at work and I can usually get a couple hours of personal project stuff done on a given weekend day before it becomes a big problem.  Which is all the time I usually have anyway.  One weekend was different.  I was technical proofreading a 300-400 page book (The Well Grounded Java Developer) and needed to get a lot done in a short time.  I blocked out my weekend to have 15-20 hours to do it.  Then all I needed was focus.
I’d read about Pomodoro and decided it to try it with this particular project.  (which is evidence of problem #1 – I was experimenting with Pomodoro when I should be reading.)
Installing software
First I installed the GNU pomodairo app.  Including the download of Adobe AIR itself, this took less than ten minutes.  I added my tasks and kicked it off.
How it went
The beginning two Pomodoros were the toughest.
  1. On the first one, I got water 2 minutes before the break. I needed to trust it and wait longer.  The sound was a bit jarring.  I only read 3 pages (and played with an example.)  Not much momentum yet.
  2. On the second one, I worked a whole pomodoro but only read one page (and fiddled with examples).  I did get in the zone although I could have stayed there longer.  I took a break anyway to avoid burnout.  I did successfully wait out the Pomodoro to check my e-mail (which I noticed because gmail automatically pulls mail and I needed to refer to one as part of my task).  I learned the tool shows your pomodoro as interrupted if you don’t click the right button at the end of a Pomodoro.
  3. On the third one I was starting to feel the flow.  That time I did get fully into what I was doing in 25 minutes and got two tiny chores done during the break.
  4. At this point, it started working.  I got absorbed during every Pomodoro.
My stats weren’t correct.  I lost two pomodoros on the second chapter I read. I think it was because I didn’t explicitly select the next task when I finished the first one.  But the stats didn’t matter.  What mattered is that I was able to get focus and momentum going.  And I didn’t have a headache at the end of the day.
Conclusion
I’m not sure if it was the Pomodoros themselves that helped me or the fact that I was doing something different so felt obligated to be responsible.  Hmm.  That sounds like a good question to post on productivity.stackexchange.com.  Did so here.

who is the chromebook for? a review for senior citizens, kids and students

I’m getting tired of reading reviews that say the Chromebook is more limited than a netbook and therefore a waste of money.  These reviews miss the point.  Disclaimer: I haven’t touched a Chromebook – this is culled from other reviews.
Cr-48 Chromebook cropped
Who is the Chromebook for?

I can think of a few target audiences for the Chromebook:

  1. Senior citizens who use a computer to check e-mail, view pictures of the grandkids, research vacations, maybe watch some videos on youtube and some other random surfing.  People in this group do not want anything to do with taking care of their computer; they just want it to work.
  2. Young children who are just browsing and whose parent’s want the computer locked down.  (I actually think this case is marginal since children are typically going to use educational software and outgrow it quickly.  I’d favor an iPad with an optional keyboard for this group.)
  3. Teens and college students. I didn’t think of this one but if all you do is write papers, play games and surf the net, why bother worrying about a firewall/virus scan/etc.  I also like that this review was written by a teen – aka someone actually in the target audience being discussed.

You notice who is not on the list: technical people, people who like to fiddle with the computer, people with “advanced” needs, etc.

The reviews

Now let’s look at some reviews of the Chromebook.  Nothing against the NY Times; I read that review first and got aggravated with it first.  Most of the points I brought up there I saw in other reviews as well.

Review Comments Effect on senior citizen audience Effect on young child audience Effect on teenage/college student audience
NYTimes Missing Caps Lock Key This one could actually be a limitation.  This audience learned to type on a typewriter which had a Caps Lock key.  If it is a problem, hopefully another vendor/model adds back that key. Too young to care. Probably wouldn’t mind, but would be savvy enough to use the key reassignment technique to deal with it.
NYTimes No Bluetooth, Ethernet jack, FireWire port or DVD drive. Likely hasn’t even heard of the first three let alone wanting to fiddle with them. For a DVD drive, one can listen to music online and can’t install anything, so who needs a DVD drive. If everything is online this is ok.  If not, should have a different device. Depends on the person.  I can’t imagine not having a DVD drive and being able to install software in college.  But then I was a geek and computer science major.  If someone just wants the internet, it could be ok.
NYTimes I tried valiantly to use the Samsung as my main machine, but by the end of a week, I was about ready to toss it like a Frisbee. … I took four flights with it When was the last time you saw a retired person take four flights in a week and desperately need the computer then? Needs a tablet or game for the plane.  And doesn’t fly that much. Students aren’t known for having the resources to fly so much.
NYTimes But what if you want to run real, brand-name software? Photoshop? Quicken? Skype? World of Warcraft? FileMaker or Access? How will you sync or back up your iPad, iPhone or iPod if you can’t run iTunes? What about the specialized apps that your company might require? If you need any of these apps, you need a real computer and aren’t in the intended audience of a chromebook.  And if you aren’t retired yet, your company should be providing a computer. This is why I think young children would be better off with something else. This would have killed it for me in college.  I needed way too many apps.
LaptopMag But does the $499 Samsung Series 5 deliver as much performance as similarly priced netbooks? They are framing the question wrong right in the first paragraph!  It’s not a netbook.  I actually didn’t take issue with the rest of the review.  It was very neutral and they stated things as facts rather than “limitations” so it is up to the reader to decide if that is something he/she cares about.  Nothing about target audience, but nothing against it either.
Gizmodo Built for the Future, not for the Present Like LaptopMag, the actual review was pretty neutral and stated facts.  A negative rating without any mention of a target audience though.  (and of course it is forward looking – that’s what one does entering a market)
Assorted Zdnet pages n/a While I can’t imagine using this as a work machine, ZDNet extensively talks about a target audience.  (The reason I can’t imagine it as a work machine isn’t because I am technical.  It is because I work for a bank where putting all your data in the cloud and off VPN seems insane.)

I read a number of reviews but it was basically more of the same.  Has anyone seen a review that actually review about how the Chromebook would be for some target audience?  Zdnet was all I could find from someone who has tried a Chromebook.

Conclusion


As Mark Spritzler notes “The thing with the Chromebook, is there has never been a device like this for the actual purpose that the Google Chromebook was created for.” This is precisely the problem I am seeing in the reviews.  Google isn’t trying to compete with existing netbooks or even tablets.  They are trying to create an “internet surfing machine” and reviewers are looking at what it can’t do rather than the benefits.  Going back to our target audiences: they are all groups that will pay the same amount or even a premium for something simpler.  Less complexity which means less problems which means a better experience.

Liferay Standard Development Environment

I wrote a post a while back outlining the general set up we use when running our Liferay plugins through Continuous Integration, but it occurred to me that there should be an article that comes before that one which outlines the set up of the development environment. Many of the results of the decisions and best practices can be seen in that post, but there is still plenty that can be covered with respect to setting up a development environment for Liferay plugins.

Development Environments

There a few slight changes to the setup described in the previous article, but we’ll assume that a Liferay project always requires the following tools:

  • Liferay Development Studio (LDS). This is essentialy the Eclipse IDE plus some Eclipse plug ins to assist Liferay development.
  • Liferay Software Development Kit (SDK). This does most of the work with respect to building the plugins and the ANT tasks can be used from the command line without requiring the LDS.
  • A Liferay Bundle. A bundle is a pre-packaged Liferay server instance and in our case we tend to use Liferay bundled with Tomcat almost exclusively during development. The other benefit is that the Tomcat bundle is already assumed and pre-configured for some of the steps below and hence simplifies set up and reduces the work and chances of getting things wrong later.
  • Liferay Source. This isn’t essential to the set up, but when creating a new development environment we always do this at the same time and there or little additional effort required.

Recipe

Install Liferay Development Studio

You can install the LDS to the location of your choice and you can use the same LDS instance to manage multiple Liferay project workspaces, but more on this as we go. If you have already installed LDS then there is no need to do it again.

Create a new workspace directory for the Liferay project. For the sake of this article we’ll call the directory workspace.

Note that the Liferay source, SDK and bundle in the next steps should all be for the same version. Don’t mix them up. You have been warned.

Install Liferay Software Development Kit (SDK)

Copy the Liferay SDK zip file eg liferay-plugins-sdk-6.0-ee-sp1.zip to the workspace. Unzip the file so that there is a directory with the same name eg liferay-plugins-sdk-6.0-ee-sp1.

If your operating system does not allow soft links to directories, rename the SDK directory to plugins. Otherwise (and preferably) create a soft link to the SDK directory called plugins. By pointing external configuration at the plugins directory rather than at a specific SDK version, it makes it easier to upgrade your development environmnet later on.

Hopefully it gives you something like this in the workspace directory.

drwxr-xr-x 13      4096 2011-05-26 12:00 liferay-plugins-sdk-6.0-ee-sp1/
-rw-r--r--  1   9358463 2011-03-09 23:38 liferay-plugins-sdk-6.0-ee-sp1.zip
lrwxrwxrwx  1        71 2011-05-26 08:17 plugins -> liferay-plugins-sdk-6.0-ee-sp1/

Install the Bundle

Very similar to the previous step, copy the bundle zip file to the workspace, unzip and either rename or soft link as bundles. The bundles name is important here, so don’t get creative.

This adds the following to our directory:

lrwxrwxrwx  1        66 2011-05-26 08:18 bundles -> liferay-portal-6.0-ee-sp1/
drwxr-xr-x  5      4096 2011-05-26 16:32 liferay-portal-6.0-ee-sp1/
-rw-r--r--  1 187336800 2011-03-09 23:37 liferay-portal-tomcat-6.0-ee-sp1.zip

Install the Source

Once again copy the source zip file to the workspace directory, unzip and rename or soft link as source.

drwxr-xr-x 20      4096 2011-05-26 09:47 liferay-portal-src-6.0-ee-sp1/
-rw-r--r--  1 230320369 2011-03-09 23:37 liferay-portal-src-6.0-ee-sp1.zip
lrwxrwxrwx  1        70 2011-05-26 08:18 source -> liferay-portal-src-6.0-ee-sp1/

The complete Workspace

Remove the zip files if you want, but personally I just leave them there. The parts we’re interested in are the bundles, plugins and source directories.

lrwxrwxrwx  1        66 2011-05-26 08:18 bundles -> liferay-portal-6.0-ee-sp1/
drwxr-xr-x 13      4096 2011-05-26 12:00 liferay-plugins-sdk-6.0-ee-sp1/
-rw-r--r--  1   9358463 2011-03-09 23:38 liferay-plugins-sdk-6.0-ee-sp1.zip
drwxr-xr-x  5      4096 2011-05-26 16:32 liferay-portal-6.0-ee-sp1/
drwxr-xr-x 20      4096 2011-05-26 09:47 liferay-portal-src-6.0-ee-sp1/
-rw-r--r--  1 230320369 2011-03-09 23:37 liferay-portal-src-6.0-ee-sp1.zip
-rw-r--r--  1 187336800 2011-03-09 23:37 liferay-portal-tomcat-6.0-ee-sp1.zip
lrwxrwxrwx  1        71 2011-05-26 08:17 plugins -> liferay-plugins-sdk-6.0-ee-sp1/
lrwxrwxrwx  1        70 2011-05-26 08:18 source -> liferay-portal-src-6.0-ee-sp1/

How the parts interact

Before we complete the configuration, we’ll pause and look at how the parts interact.

Liferay Development Studio (LDS) and Software Development Kit (SDK)

The LDS provides some wizards, configuration checking and general assistance in building and managing Liferay plugins, but mostly it delegates to the SDK to perform the actual build and deploy work.

Therefore in just a second we’ll tell the LDS where the SDK is but first a word of warning…

Excuse me for shouting, but only ever register a single SDK with a Liferay workspace, and make sure it is the one in the workspace called plugins. Having multiple SDKs registered with in a single workspace can cause confusion or worse, and doesn’t add benefit to the environment. Please don’t do it.

LDS and the Bundle

LDS is able to start/stop the bundle but is also able to shortcut the deployment process and deploy straight to the bundle without needing help from the SDK.

Depending on the LDS version used, you may be asked to point to a bundle (or Liferay Runtime) the first time you point the LDS to a new workspace. Be sure to point to the workspace/bundles directory.

SDK and the Bundle

The SDK uses the libraries in the bundle to compile the plugins, and it also needs to know the location of the bunlde directory so that the deploy target can copy the WAR files to the Liferay Runtime

Configuration

As pointed out above, you should only configure a single SDK in the LDS for a given workspace. When you point the LDS to another workspace you are able to specify a different SDK as this value is configured against the workspace and is not global to the LDS. This will come as a major relief as the alternative would be incredibly restricting.

Furthermore, the plugins also have the registered name of the SDK included in their project properties, so it is important that all team members use the same name to describe the SDK within the LDS. I believe our default is liferay_sdk but it doesn’t matter what is selected provided everyone uses the same value. If not, you’ll be forced to fix this value every time someone else changes it in version control, and you’ll be unable to build or deploy until it is corrected. It is very annoying.

We may have already specified the Liferay Runtime when first pointing the LDS at the new workspace, but if not go to the LDS menu and select Window > Preferences and on the Preferences screen select Server > Runtime Environments, select ‘Add’, select the Liferay version for your bundle from the servers available and then point to the workspace/bundles/tomcat directory.

The next step would be to configure the SDK and bundle to work together, but as hinted earlier we don’t need to. If you look into the workspace/plugins/build.properties default settings, the server is already set to tomcat and the server location and deploy folder location are already correct because we have a directory called bundles pointing to the Runtime home directory.

Finally, right click on some spare space in the Package Explorer in the LDS, import, general, import and existing Eclipse project, navigate to the workspace directory, click OK and then select the source directory to import. This is useful for development and debugging.

Creating a new Plugin

When you create a new plugin project in the LDS, the wizard wants to know which SDK to use and since we have a single SDK there is no problem. The wizard ends up creating a new project in one of the subdirectories under the plugins directory, but within the LDS the project will display as if it were in the root directory of the workspace. It isn’t, but it is worth knowing the difference. If you get confused, right click the project in the LDS, go to the properties and look at the resource location.

Plugin Version Control

It is a bad idea to check the entire SDK into version control, so it is lucky that the LDS places them at the base of the Project Explorer. Right click, team, share, happiness.

Adding a Liferay plugin project from version control back into the LDS has some tricks to it.

Firstly, you’ll want to place the plugin project in the correct subdirectory in the SDK. When you import the project from version control, the second screen in the import wizard prompts you to import into the default workspace location. Don’t do this, and instead select the correct SDK subdirectory for that Liferay Plugin project type. But that’s not all.

Unless the bug has been fixed since the last time I checked, importing from version control will get the project into your LDS workspace, but the plugin will be imported as a Java project and not a Liferay Plugin Project; some of the Eclipse facets are lost. This matters. To fix it, right click and delete the project(s) that you just imported from version control but do not delete from the file system. Once again right click on some free space in the LDS Package Explorer, import, LIferay > Liferay Plugin SDK Projects, select the one and only SDK, select the project(s) to import and then they get imported correctly as Liferay Plugin projects.

Conclusion

So while I haven’t spelled out all of the learnings and reasons which has led us to this set up as our preferred Liferay Standard Development Environment, I hope that there are enough reasons provided for you to consider this approach and I hope that there are sufficient instructions provide to recreate the same in your own workspace.