Skip to content

Recent Articles

9
Mar

CQ Workflow Tutorial: Basic Project Setup

As already mentioned in the previous article developing CQ Workflows is not easy due to many parts that need to play together and because most of the action is happening behind the scene. Therefore it will be time-consuming and frustrating from time to time. There are a few things that I learned over the past year and a half that will make your life easier. One of the most important tips to consider is to clamped down on the number of moving parts and to be able to review and undo changes if necessary. That is why I have all code and configuration related to a CQ Workflow inside a VCS tool and use Maven to install the Workflows in CQ.

Attention: Even though I use a VCS tool and Maven to manage a Workflow the actual Workflow Model is edited inside CQ Workflow Model Editor. I tried to edit workflows within a Code Editor (IntelliJ IDEA) but beside simple changes in text properties I failed to make it work. The Workflow Model Editor will not bring up the Model if there is a slight inconsistency and so you might loose your work.

Creating a Workflow Models

As said above you cannot edit Workflow Models by hand. This means you need to open the Workflow Model inside the Workflow Editor by double-clicking on the Workflow Model and then change the Model in its Editor. Now this is a problem if you have the Workflow in VCS because when you would reinstall the Workflow Model you would loose your changes. This is my process on how to edit Workflows inside CQ and still keep the golden copy in a VCS:

  1. Create a Workflow inside the Workflow Editor by clicking on the New button. Give it a Title (displayed name). Here we use Basic Workflow

CQ Workflow Tutorial Basic Create Workflow

Read more »

9
Mar

CQ5 Workflows: Selection Dialog

Since a few years I am working with Adobe CQ (formerly Day CQ) doing mostly backend software like ETC Mapping, Link Rewriting, Dispatcher Cache handling, OSGi Services and mostly Workflows. About 1 1/2 years ago I did not know how the Workflows worked in CQ and now I am even adding additional functionality like a Dialog and Dynamic Participant Step.

Here I want to talk about how to provide a drop down box selection in a Workflow Dialog Participant Step. In order to make that work we need three parts:

  1. Servlet / JSP that provides an JSon Array with ‘text’ / ‘value’ pair
  2. Dialog Definition that contains the Drop Down Box
  3. Dialog Participant Step using the Dialog Definition

Attention: There is a bug in the display of an embedded Dialog where the labels of the dialog are ignored. This is pretty annoying but the Workflow designer can add a hint into the title to make it clear what the fields are.

This is how the dialog will look like inside the Workflow Inbox:

CQ5 Workflow Dialog Selection Dynamic

Read more »

3
Mar

Seriously Apple?

Last week my wife was complaining that the Apple TV had problems streaming her videos over Airplay. Eventually it turned out that the Airport Express (2012) was not working anymore. I used it to extend the wireless network because my Airport Extreme cannot reach the living room. The only problem was that I had no clue why it suddenly stopped nor did anything in the Airport Utility indicate any problems except that it stated it could not extend the network.

After a long googling session I seemed that the Airport Utility 6 had one flag missing – the one to allow to extend the network. Even if that is true I still have no idea why this stopped now because I upgraded to Airport utility 6 a while back. I also read that the only way to fix it is to install Airport Utility 5.6 but that is only available for Lion and I am running on Mountain Lion. A downgrade failed and so I was nearly giving up.

Eventually I found an Automator script that would allow me to install 5.6 by extracting it manually. On my MacBook Air it failed because on that machine the default extraction tool in not the Archive Utility but BetterZip. Copying the entire stuff over to another box and voile it worked. Then I only had to make a small change and update the Base Station (Airport Extreme) and voila everything worked again.

Looking at the post inside the Apple Community about this issue this seems to be quite old (September 22nd 2012). So, I am wondering what the heck Apple is doing. Why can this flag not be added to Airport Utility and if not why is Airport Utility 6 suddenly make extending the network fail.

So much for “it just works” – Apple

11
Feb

Kaleidoscope: Not For Pros?!

One of the more challenging tasks when developing software is to compare folders to see what has changed to an earlier version. So far the only decent tool that does that quickly and efficiently for the Mac is DeltaWalker. It does a good job but it could been faster especially when the application loads. So when I heard that Black Pixel released Kaleidoscope and it featured Folder Comparison I had to check it out. To make a long story short it looks nice but for professional work it is unusable because it is not efficient.

Just to be clear hear I was only interested in the Folder Comparison and so I did not look at the other features like Image comparison and so your mileage might vary.
So what is wrong with Kaleidoscope? When I fired it up for the first time I already had a bad feeling because it brought up a window asking me to drag a file into it. This might be nice for a newbie but when I know what directory to compare I need to enter them quickly and efficiently. I also need to be able to adjust a directory file name where only a number has changed or a parent directory. Also Path Finder has a feature where I can copy the page from a file / directory to the clipboard and so I am must faster just copy the two folders into it that way. Now it could be that Kaleidoscope uses Services to accomplish the same.

FInally the thing that killed it for me was the folder comparison view itself. In order to work fast I need to be able to see the changed files quickly even if they are several folders down. All of my projects use a hierarchical many folders deep and so comparing one folder at a time it unacceptable. This might work for simple web applications but not for me.

Granted I did not give Kaleidoscope a thorough test to see if there are other features that might alleviate these shortcoming or if there are other ways to go around them. That said I have a tool that works well and so without any further incentives I cannot waste more than 15 to 30 minutes on a tool evaluation. In addition Back Pixel’s webpage about Kaleidoscope is too simple to convince me to spend more time on it. Their website looks like their app. A nice UI but not enough meat on the bone.

Cheers – Andy

13
Nov

Remember the Coach Session with Steve Jobs

This post should actually be titled: why I am not interested in the Surface. Actually I am not even interested to have a look at it in the first place. From what I can see and what Microsoft showed in Ads and PR events is that this is a strange form of a Laptop and not much of a tablet at all.

Now this brings me back to the title. As John Gruber pointed out in the first iPad event review is that when Steve sat down on the coach to showcase the iPad then it wasn't a marketing gag but an excellent way to illustrate that the iPad isn't a laptop in disguise but a device that is used in a different and new way. The iPad is different like my Mac Air is different from my Mac Pro. The Air I can carry around, sit on the coach and work wherever I sit down. The Pro is at my desk, fast, quiet and with a lot of horse powers but I cannot use it anywhere else. The iPad is not a laptop because I only can work on one App at the time, it doesn't have a physical keyboard and the Ram / CPU is limited. On the other hand I can use it quickly to browse the web, read emails, even write documents and make music if I don't want or can't have a laptop with me. The iPad is not going to replace my laptop or even my XBox but for what I am using my iPad it is the best device.

From what I heard and saw the Surface is a tablet / laptop hybrid and doesn't seem to be good in either category. It is fairly big, heavy, slow and it seems only to work nicely if used like a laptop. It also looks like the some of the components are so hard to select because the target area is too small. At the end the most important reason not to get a Surface is its OS. 7 years ago I switched over to Mac OS X and never looked back. Every time I have to use a Windows computer I try everything to avoid using it or at least limit as much as possible. And so I think the Surface will be the same compared to the iPad or even worse. In addition I don't buy an iPad because of the OS but because of what I can do with it meaning what Apps I can get and there the Surface and Android are lacking good and useful Apps. I use regularly Blogsy, Byword, Omnifocus, Tweet- and Netbot, Wikibot, Webex, PDFPen, Instapaper, PlainText, Safari, Mail and some Games. Therefore just Office wouldn't cut it for me.

FInally I just want to be clear that this isn't a Surface review but my reasons why I don't even give Microsoft a chance to present the Surface. Not only is the nearest Microsoft store an hour away but I really don't need or want the Surface. At the end I don't trust Microsoft that the Surface would be a great product but rather feel that they rushed the release because of market pressure which means that early adopters are punished because of the immature product they buy.

– Andy

6
Sep

Saving Money the Wrong Way

Today I was with a client and initially everything went well until we suddenly got strange errors building a project using Jenkins. Looking at the log file it sure looked like Subversion was corrupt and we started to investigate. Of course, this happened at the last part of the project before going life and so time is precious.

After some back and forth it turned out that we just ran out of disk space because we created a few more jobs on Jenkins depleting all remaining disk space on an 8GB partition. Yes, right, a 8GB partition for /var which is so bad. For sure we could blame the installer of Jenkins just to use the Jenkins RPM and not configure Jenkins to use a more spacious partition but at the end of the day creating a /var partition on a linux server with 8GB is way too low. At the end of the day it took 3 people 3 hours (or more) to fix this mess which means we could have bought a Drobo drive with enough disk space to given every virtual machine at least 1 TB.

At the end of the day I don't understand how companies can underpower and underequip their development servers. Naturally things go wrong when we use the equipment the most and that is right before going live where you can afford a downtime the least. Beside the costs of the fixing it it also puts another stressful event on the development team leading to more errors, frustrations and eventually to further delays.

Powerful and reliable hardware and software isn't a treat but an essential component of a successful project. Having developers that cost between 10 to 20k per month excellent hardware is a drop into the bucket to the overall costs. 2 to 3k for hard- and sofware is less than one week of employment. And believe me a week delay in a project going live is on-time in my book.

– Andy

26
Aug

Logitech Ultrathin Keyboard Cover for the iPad

Update: Another week later and I am pretty pleased with the combo. Not only is writing so much more enjoyable but I also take my combo to more places and therefor I used even more. Now it pays off that I have an iPad with LTE making working online a breezy and pretty darn quick. Even when I am at a place with free Wifi I often ditch it because LTE is so much faster like on Airports or Startbucks. Up to know I never ran out of battery on the keyboard and I'll charge it everytime I charge the iPad. Last weekend I saw that Costco is selling the keyboard cheaper than at the Apple store but I would never have bought it there. My experience with electronics from Costco is that its hardware is in buggier and dies quicker than hardware from the Apple store.

Update: I am using the Keyboard for now a week and it already paid for half of its cost. Waiting at the Optomotrist for around half an hour and so I started writing a documentation for my current project using Byword. After I came home I got the document through Dropbox and included it into the final document. Because it works so well I bought Textastic to see how easy or difficult it is to develop code with the keyboard. For now the only problem I see with that is that the code has to be placed on Dropbox or an FTP server which works for smaller projects but for bigger projects with GIT that might become a space issue.

I write this blog entry with my new Logitech iPad Keyboard and so far it works quite well. The keyboard is a little bit cramped compared to my 13'' MacBook Air and I need some adjustment because there is no mouse and so I have to use my fingers instead which just feels wrong. On the other hand I can type fast and with fewer errors which makes writing so much easier.

The installation was quite simple. Unbox the package, place the iPad into the groove above the keyboard, switch it on, go to Settings -> General -> Bluetooth, pair it and start typing. At the end I can use the keyboard like a smart cover which makes the combo quite thicker but it is compact and easy to handle compared to an Apple Bluetooth keyboard. The keyboard is powered by a rechargeable battery that can be charge through a micro USB cable.

For its size and weight it is a good combination, the iPad stand works quite nicely in both orientations. I was carrying around last night and it is thicker and heavier than just the iPad but I could use it out in the field without any problems even though typing only works well if the keyboard is stable like on two thights. The magnets that keep the keyboard fastened to the iPad work like a smart cover but they are a little bit weak for the weight of the keyboard. This means one has to be careful when opening the keyboard because it easily slips of the iPad. In my opinion this is too bad but one just has to be aware of it to avoid dropping the keyboard onto the floor. Another thing I noticed is that the iPad must not be placed on a side with buttons like the top or the right if the home button is on the bottom otherwsie the iPad is not fastened securely. The best way is to lay down the combo with the keyboard at the bottom, lift up the iPad, take it off the hinges and place it into the groove. The groove seems to have magnets, too, keeping the iPad securely in place.

The typing requires some time to get used to beause the size is given by the size of the iPad which makes for rather small keys and tired out my fingers at lot at the beginning. Eventually I think this will subside as soon as I am getting used to it. Lastly the frequency of using the keyboard will termine if it was a good purchase or not. The combintation is setup quickly and so that shouldn't be a road block and because I am mostly writing on my iPad like emails, blog entries, diary, to do lists and others an easy to use physical keyboard should be a heaven send. But as often the little details are deciding if it works out or not.

Here is a picture on the combo in action:

Here a comparison of the combo versus a MacBoor Air 13'':

– Andy

 

23
Aug

MySpace all over again: Twitter

When I read about App.net in a Tweet from Marco Arment I checked out their video but did
not understand what App.net was all about. Later I started to learn more about Twitter
and how they started to curtail the features of third party apps. Eventually I started to
understand what App.net is for and signed up for it.

So today I saw [[http://www.marco.org/2012/08/22/black-widow|this post from Marco]] and
now I am glad that App.net is there just to make sure that Twitter has some competition
in case they keep on with the current direction.

Running my own business I understand that Twitter has to make a profit to remain in
business but it must do that carefully to remain relevant. Because Twitter only offers
a simple, actually very simple service it is history very quickly like MySpace and other
Internet services. For example Apple with the App Store needs the developers to provide
Apps that enriches the iOS experience even if they make no profit with it. So Apple
changed parts of their policies to remain attractive. That said Apple makes most of its
profit from the hardware sale and so Apple is in a way better position that Twitter.

Now Twitter can go ahead and say that they are big enough and have enough Celebrities
to stay alive but then Twitter becomes a marketing outlet for Celebs and Companies which
makes for a rather dull experience. But if that is what Twitter wants, at it awfully
looks like that, then that is what they get but without me.

For now App.net is still **Alpha** and so I am not using it regularly and so most of
my bitching about Twitter vs. App.net is happening on Twitter but I hope that soon
there are clients out there that handle App.net. Then I guess I can start moving over
to App.net.

– Andy

19
Aug

Pelican: Another Way for Madplanet.com Inc. Site?

Lately Bluehost.com gives me some grief and so I am thinking about changing my provider.
So I started to think that maybe this would be a good opportunity to also switch from WordPress to an easier setup.
What I would like to do is to use Markup to write by posts and pages but also wanted to see
if it is possible to avoid having to deal with a DB. Not that I hate to use a DB but backing
up the data and exporting the content is not that simple. But then again what should I use and is it ready worth the effort.

Then I found this page from [http://www.macdrifter.com/2012/08/pelican-guide-moving-from-wordpress-and-initial-setup.html|Macdrifter] talking about Pelican which would just do that.
But instead of plunging right into it I wanted to do an intermediary step by having the Site
first running on my local Mac (Apache, Python already there) and when it is working as expected
I will go ahead and push the content from my Mac to the ISP.

First step was to just get Pelican installed and up and running before going ahead.
Afterwards I would recreate Madplanet.com’s website on my local Mac so that I don’t have
to bother my ISP or damage the installation. From there I will migrate the content over
and when it is done I will push the content out and pull the plug on the old site.

Pelican Installation

To my surprise the installation and configuration of Pelican was straight forward:

sudo -s
easy_install markdown
easy_install pelican
easy_install pygments

mkdir /Library/WebServer/Documents/pelican

pelican-quickstart

Now don’t waste too much time on the questions. Just answer what you can and leave the rest
blank or accept the defaults. It is only generating a configuration file for most parts.

The only important thing is that the location for pelican is at the previously created
directory (/Library/WebServer/Documents/pelican). You can select any directory you
like but this is the default given by Apple and so I used this.

Apache configuration

The Apache Configuration can be different on every computer and so here I only describe
the simplest solution to set Pelican to be the root document root. For that I just set
the Apache Document Root to the Pelican’s Output directory:

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents/pelican/output"

and then define that Directory:

<Directory "/Library/WebServer/Documents/pelican/output">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks MultiViews

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

</Directory>

Last two steps are to check if the configuration is OK and then restart the Apache server:

sudo apachectl -t
sudo apachectl restart

See Pelican in Action

Before we can go ahead we need to generate the site in Pelican. For that we go to the
project’s home directory (/Library/WebServer/Documents/pelican) and use make to generate
the site:

cd /Library/WebServer/Documents/pelican
make pelican

Finally we can open the site with this url: localhost.

Conclusion

I am not done here by a long shot. First I need to have both the WordPress and the Pelican
site running on my Apache Server and then I need to export my WordPress site and install it
locally. But for now that’s all.

– Andy

15
Aug

When your Belly is the First Others Notice

Update: since three weeks I am trying to loose some weight and so far I was able to loose seven pounds. It wasn't easy because I am still hungry from time to time making me moody and irrtable. Then during the meal I have to make sure that I don't eat too fast and so too much. In order to keep my hunger in check I eat enough to feel full at least once a week. Today I am back in Silicon Valley and so I took the chance to go to the gym for some running. Loosing around 500 kcal makes eating dinner so much more fun having already earned some credits.

Being back on the road for a few weeks I noticed on the airports that my shirts feel tight and crossing my arms in front of me put an uncomfortable pressure on my stomach. At the end of the second week I had enough and I decided to slim down.

You might wonder why I did not say that I went on a diet because I actually did not do it. What I started to do is to eat less and started to work out but I did not change what I eat or in what order. So I am still eating fries, drink beer or eat cake and chocolate.

Now don't get me wrong I am often hungry and moody because of that but this becomes less over time. This also means the time between 11am and lunch and 5pm and dinner becomes a stretch. And because eating hungry isn't good due to overheating I eat a little bit then. In addition I also sit down to eat even when I bring my food to my desk. Then I stop eating when I feel full plus one or two more bites just for good measures. So far my progress is modest but I like to change how much I eat than how much weight I lose. The second comes eventually with the first but without the bungee effect.

With respect to the workout I actually didn't start it to loose weight but to manage my lower, upper back and shoulder tensions creating some nasty headache when I am back with my family and it worked out so far. But it also leaves to a guilt-free dinner having burned a big part of it before.

The next big challenge will be when I'm done with my road trips and I am home full time. I need to keep on doing my workout as well as keep eating less especially when my kids are all back at school and I'm home alone.

Cheers – Andy