December 16, 2009

If enterprise technologies were like consumer products...



...you could simply buy these technologies at Amazon and see online reviews. You would also be able to see the enterprise technologies that other enterprises (no names, just anonymous instances) also bought. A step further would be that you could also see related products and services that you could purchase through the same channel. Why, you could even sell and buy used technologies (which would require enterprise licenses and things such as support contracts to become transferable from one enterprise to another) on eBay.

Without going into the details of how this could be done, I would like to point out some reasons why we should want this:

1. Vendor lock-out:
In spite of the open standards that are supported by enterprise technology vendors (such as Oracle and IBM), the vendors are usually after a package deal and want you (the consuming enterprise) to become dependent on them. In other words: a vendor lock-in. A more open commerce model for enterprise technology (being able to literally buy them off the shelf) helps to prevent that.

2. Transparency
I would like to be able to compare comparative technologies from different vendors by specifications, total cost of ownership, installed base, et cetera. Such information should become a lot more transparent than it is today. Also, enterprise technologies are often hard to compare because of the way they are assembled. Often they consist of a suite of integrated technologies that you could probably pick separately but won't easily mix (requiring much extra customization) together with technologies you already have but from other vendors.

3. Enterprise level folksonomy
Selecting a new enterprise technology is often an expensive affair in itself. Many man months are spent on product selection. What if a lot of that time could be saved? I find that I would like to be able to call my competitors in the market and asked them what enterprise technologies they are using and why they chose it. Yes, we could use an enterprise community that is divided into markets and sectors where we can share our experiences with enterprise technologies and vendors. Your decision to purchase an enterprise technology could be based more on experiences that other enterprises have shared rather than the subjective advice you will get from the vendor.

I know I am probably overlooking a lot of important details, and make this look overly simple but we should at least be able to implement no. 3. Let me know what you think!




October 27, 2009

Mark talks JavaFX



I was recently interviewed by Maijaliisa Burkert of Sun Microsystem's JavaFX Marketing team. Read (and hear) the full story here. If your hands aren't itching to try JavaFX now, I don't know what else will convince you ;-).

You can also hear me say "ehm" every 3 words of nearly every sentence (I wasn't aware of that while I was talking...) in the recording of the interview:

October 16, 2009

A mayan calculator

The JFXStudio blog launched its second coding challenge. This month's challenge is to write an interesting application in no more than 30 lines of code in the theme: "five".

At first, I didn't think I was going to enter because I thought I wouldn't have the time for it, but I found some time and started doing a little research into the subject "five". So I looked "five" up in Wikipedia. There, I learned about the quinary numeral system (base-5) and that many languages use it. And apparently, the Mayas used a quinary system as well. That's when I decided I would make a Mayan calculator and with that enter this month's challenge.

I am finished, have e-mailed my 30-line app to Joshua, and yet again, amazed at how powerful JavaFX is. I was able to write a pretty good looking and functional application in just 30 lines of code. Click on the screenshot below to start the application (the source for the picture of the Mayan Ruin is http://www.themayantraveler.com).

October 08, 2009

I won the JFXStudio challenge of september 2009!

Last Sunday, Joshua Marinacci announced the winner of September's JFXStudio JavaFX coding challenge. Now, guess who won. Yes, me!

The challenge was to write an interesting application in just 30 lines of code (or 3000 characters), in the theme "time". Most submissions were clocks of some sort, and so was mine. I don't know what made me came up with the idea for a pacman clock, but I did, and it made me win the challenge too!

I have tried to stuff as much interesting behavior in my clock as I could while staying within those 30 lines of code.

Here are some of the tricks to pull that off:

  • Against all sound coding principles, I used lots of cryptic, one letter variables and functions with really short names (like "lz" for "leading zeros", and now I am reading back my code, I could have made it even more compact if I had defined a function "r" for invoking Math.random),
  • so, it is a good thing I also used this important object orientation principle to keep things compact and be able to create autonomously haunting ghosts: encapsulation
  • I used a constant named "forever" in stead of Timeline.INDEFINITE for all the TimeLine instances used in the application,
  • I used SVGPaths, which are a bit cryptic, but very compact,
  • I avoided typing spaces and carriage returns as much as I could,
  • and I tried not to care too much about code readability (which, for a Java developer like me, is a very hard thing to do).
So, as you can see, I squeezed JavaFX as much as I could, and out comes a fun to watch little clock. My kids love to watch it!

You can webstart the pacman clock here, and you can download the source code to see if you can make any sense of it (I know I won't be able to after a year or so) here.

This challenge was a lot of fun! Hopefully, I will find some spare time to enter next month's challenge. This time, we are challenged to write a 30 line (or 3000 char) app again but now in a different theme: "five". Let's see, what can I make of that...

five
alive
hive
jive
live
strive
drive
...


September 16, 2009

My submission for the JFXStudio challenge

The JFXStudio blog challenged the JavaFX fanatics out there again to code something awesome in JavaFX. This time the challenge is to write something interesting in just 30 lines of code (or 3000 characters): Small is the new Big. The theme for this challenge was announced a week later: time.

So, I decided to join in and code something cool in very compact code. I tried to keep my code reasonably readable, but I did use a few SVGPaths and several long lines to stay within the limits. So far I have managed to stay within 30 lines of code and also within 3000 characters (exactly 2901).

I am still working on making it even more compact, but a first result of my noodling can be seen below. Or click here to web start the application.

September 04, 2009

Stop polluting Twitter!

I am big fan of twitter. I will even go as far as admitting that I am addicted. But lately, I am getting rather annoyed with it. I'll explain why after explaining why I do like Twitter. Twitter isn't interesting because of the technology that lies behind it (hardly rocket science, even if they didn't get it right at first. But then again, how could they have foreseen how it was going to be used?). Even the service that Twitter is providing isn't all that exciting either, although its simplicity is what makes it so powerful. So, what is it then that makes Twitter so interesting?

The success of any social medium is hugely determined by the activity of its users. If that activity can't be sparked in a new social application, then it is doomed from the start, but that is besides my point here. Twitter literally floods me with lots and lots of updates from many people (and organizations) from around the world. I hardly read any of them, because that would mean I would probably have to read hundreds of messages each minute. I dip into my stream a few times per day and read the 10 or 20 most recent updates or so. I never scroll down or go to the next page of updates. I just consume what I see at that moment. That is the nature of Twitter. It is sort of real-time. That is what makes Twitter so interesting and useful. You instantly know what is going on right now in your network.

My current annoyance with Twitter doesn't have anything to do with Twitter itself, but with the shallowness of many (or should I say "most"?) of its users lately. All these people seem to care about is their precious number of followers. Sure, having an audience for the things you want to share is necessary, but it is a means and not a goal in itself. I really hate to see how Twitter gets polluted with updates that are all too obviously aimed at gaining followers.

Lately, I get lots of updates hashtagged with #NPF and containing a list of twitter names. A list of nice people to follow. Give me a break! Why don't you just submit "follow me please, please, please, pretty please?" Stop polluting Twitter!!

My advice to you when you receive a #NPF is this: block and unfollow the sender and do not return the courtesy that it seems to be.

August 25, 2009

Social Media Revolution

The awesome video by Socialnomics09 below sums it all up perfectly. Social media is making a huge impact on our current lives and has caused an important revolution in both society and technology.

Enjoy!

July 23, 2009

Wolf

The lone wolf emerged from the woods and stood at the edge of a wide valley. Down below, he could see the lights of a village. He was on unfamiliar ground and on the territory of another wolf pack. He suppressed his urge to howl, because that would attract the other wolfs. In his current state, he wouldn't stand a chance against them.
A mild wind blew through the valley, rustling through the trees, causing the first dead leaves to drop. The wolf knew that the weather would soon change. The air was already turning colder and the night's sky was clear and full of bright stars. The young moon sat too low in the sky to provide much light. But the wolf didn't mind the darkness and sniffed the air. It was filled with promise.

July 02, 2009

free as in "free spirit"

Open source is usually associated with the word "free", and in our minds we see a comfy zero followed by our local currency symbol. Of course, it is a huge misconception to think that open source technology comes at no cost. Okay, you won't have any licensing costs. You can freely experiment with open source technology to see if it could meet whatever demands you have. You probably shouldn't endlessly experiment until you encounter the perfect solution either. Depending on the number of FTE's doing the experimentation that could become costly, and of course there is this thing called "time to market" too. Time is money. When it comes to choosing between open source and proprietary commercial technology, you will at least need to balance those factors. No, open source does not refer to free as in free beer.

The thing with proprietary technology is that it is, well, proprietary. It means that the components that differentiate the technology from the other technologies (open source and competing proprietary technology) are locked away and closed to the public. These components tend to live rather solitary lives and don't meet many peers (if any). If they would be human, they would be wretched and lonely. Sure, they often get royal treatment, but they are never free (and in a cost sense, nor for their owners). Never (well, almost never if it weren't for reverse engineering and hackers) will they be able to share their ideas and their ways of thinking with peers. Not being able to share your thoughts with others would make me very unhappy. If souls would be proprietary they will most likely become either suicidal or delusional.

Open source technology on the other hand would be very happy beings when humanized. They are truly free spirits dancing around with other spirits, sharing in the joy sharing what they are enthusiastic about, in the joy of knowing things could be improved even further. These beings are open minded about agreeing to use commonly developed standards to improve compatibility between them. They wouldn't mind at all if you would replace them with a better implementation, in fact, they would completely understand your reasons. They are fully supportive of your freedom to choose. Being outperformed by their peers only stimulates them to get better, faster, more standards compliant and more compatible. That is why open source technology can reach extremely high quality.

Okay, that is a rather black-and-white picture I am drawing here. I agree. The reality is made of all the colors between those extremes. My point is simply that sharing knowledge is a good thing. It sets you free.

June 25, 2009

What barkeepers, taxi drivers and shrinks have in common

In this entry on Capgemini's technology blog, Rick Mans ponders on our strange social behavior in elevators, buses, trains and other public spaces. Most of us (I am one of the exceptions...) won't start conversations with the strangers they share the elevator with. And yet, on Twitter we share our complete life story with people we have never even physically met. This is strange, because in the elevator, we actually see the people and can better judge their willingness to chat.

Rick is right, this ís strange. And what adds to this oddity is that many people don't have any difficulty starting conversations with barkeepers and taxi drivers they have never met before. People with these professions hear people's deepest confessions (okay, alcohol has a slight part in this). I guess barkeepers and taxi drivers are just very good listeners by nature and somehow radiate that.

Another explanation for this could be that people with these professions listen to so many people that you have become practically anonymous. They will have completely forgotten about you once you are out of their sight.

Conclusion 1: we are forthcoming to those who will most likely forget about us

And what about shrinks? We willingly pay them large amounts of money (which is often covered by your health insurance) so we can share our most private secrets with them.

Conclusion 2: we are forthcoming to those who are paid to maintain our privacy.

How do these conclusions translate back to twitter? Well, on twitter we are perhaps less forthcoming but a lot more chatty. There are so many people on twitter that it is very difficult to be heard above the din. You can tweet just about anything personal and will hardly be noticed because your tweet will get lost in the crowd. If you want to be noticed by a significant number of people, you need to tweet about hot (popular or controversial) subjects.

That doesn't make Twitter as useless as I just made it seem. I use Twitter myself for channeling generic and not too personal wonders and ponders. And you often get very surprising and insightful responses, which is what makes Twitter useful and fun. I am much more forthcoming on facebook, where I only allow my friends to read my updates.

As for the second conclusion: would you pay for an online service (cloud based) where you could pour out your heart? Maybe we should put good old LISA on twitter. Or you could unburden yourself with Liza. Give it a go and then share your experience with me (you can trust me...).

May 31, 2009

The war of the mobile platforms

A smartphone is a highly sophisticated piece of technology. Besides being highly functional, having a long battery life, these devices also need to make its owner look good. The trouble with smartphones (and al other mobile devices for that matter) is that most of their owners probably aren't aware of or even appreciate the complexity and sophistication of their phones. But thanks to the OpenMOKO project, which specifies an open source smartphone architecture, we now all can be.

Smartphone users commonly "just" want something that allows them to make phone calls and access online services wherever they are, download & install new applications and games, shoot pictures and share them with their friends and family, navigate from A to B, find nearby points of interest, download and listen to or view various rich media (audio, video) and much more. And all of that needs to fit inside something no bigger than a modest bar of chocolate and look no less irresistible than that too. Nothing special really...



The mobile communications and mobile internet market is currently being seen as the market with the biggest boom. We all want a slice of that pie. Apple wanted and got a big slice with their iPhone, Google takes an aim at the pie with their Android platform, Sun Microsystems was also drooling at the pie and launched JavaFX, Palm on the other hand is trying to maintain as much of slice it previously had by introducing the new mobile platform Web OS and the Palm Pre (could it be the iPhone killer?). Adobe is porting their flash player to the ARM processor platform to increase the almost non-existent Flash Player penetration on mobile devices. Of course, Nokia, is trying to maintain the size of their slice with their Symbian platform. Then there is of course RIM and their familiy of blackberries representing a significant slice of the mobile market pie. And let's not forget about Microsoft's Windows Mobile, which is rather popular and comes shipped with cool phones such as the LG Cookie and the SonyEricsson Xperia. Windows Mobile 7 is on its way, although typically delayed and is tipped to be a possible iPhone killer too (go figure).

When you buy a cell phone, it already has its operating system installed on it, and a number of applications and games too. Depending on the model, you can usually add more applications and games. The type of applications you can install and run on your phone obviously depend on the capabilities of the phone (GPS, networking capabilities, user interaction capabilities, and so on) and on the operating system that runs on the phone.

Unfortunately, applications usually aren't interchangeable between the mobile platforms. A blackberry app won't run on an iPhone, and a Symbian game won't work on an Android phone. However, if JavaFX catches on (version 1.5 is rumoured to be released on JavaOne 2009), or if Adobe manages to also make their flash player as ubiquitous on mobile devices as it currently is on PCs or if Palm's Web OS (Webkit based) miraculously catches on (don't be surprised if it does) and is conforming to open Web standards, we should see that change.

Will Google's Android become the default mobile platform? I doubt it, and I don't think it would be good to have a single dominant platform. What we need are open mobile application platforms for developing cross platform mobile applications. Note the plural "platforms". I mean to say that we need both openness and choice, because application developers need to be able to choose their platform of choice, and customers need to be able to choose their platform of choice without needing to worry if they can use popular applications.

April 17, 2009

Virtually possible

Suddenly, an odd thought struck me while I was reading one of Terry Pratchett's books. That happens sometimes, but more often when reading a Pratchett. When it struck me, I thought: "in a virtual world, you can easily do things that are virtually impossible".

Virtual literally means "not physically existing". A virtual world is synthetic because it is artificially created by software. Software that runs on clouds perhaps. Fairy tale style magic would be very plausible in a virtual world. Anyone could do it. Nothing special. Hardly marvelous at all.

When something is virtually impossible to achieve, we mean to say that we will probably not succeed in achieving that something. Virtual now has the same meaning as "almost" or "potential".

Today, in our current phase of human evolution, we can only theoretically "beam" people from one physical location to another. It has been researched, and so far the scientists can only beam a single hydrogen molecule. In the process of doing that, the original molecule is taken apart and a snapshot of its complete physical and energetic state is stored in memory. Then a new molecule is constructed and "revived" with the snapshot that is in memory. The details are probably a bit more complex, but the process boils down to the above. Here's why it is virtually impossible to beam people: we don't have enough memory yet to store the snapshot of a single human being, nor the computing power needed to conduct that beaming process in mere seconds.

But in a virtual world "beaming" is trivial. So it is virtually possible. But then again, our current virtual worlds are pathetically unrealistic. Sure, they will get better and better over time. But something tells me that the rendering of a virtual world which humans can't distinguish from the real one is going to be virtually impossible.

For those who were waiting for the point: there isn't one. I was just being virtually philosophical.

April 07, 2009

Crowd surfing

This morning, I used public transportation to go to the office. So, I stepped onto my bike, and headed towards the railway station of big city Alphen aan den Rijn. Normally, I would shut myself out from the world's sounds by listening to my iPod. But today, I didn't, and let the sounds stream into my head. And while I was getting closer to the railway station, I heard and saw more and more people, having all kinds of conversations.

And then it hit me: walking through the crowd is very much like tapping into Twitter. In the crowd you hear bits and pieces of all sorts of conversations. You don't hear enough of the conversations to get a complete picture, so, based on the interestingness of what you just picked up, you decide to hang around and listen for more bits and possibly engage in the conversation yourself or to walk on.

During my commute to the office I made notes of conversation bits that I picked up.

At the train terminal:

...Ah, finally they sent some police officers here to keep those youngsters under control.
Two elderly ladies approve of the officers stationed near the train ticket vending machines.

Shit!
Which is what I hear a girl all clad in black, wearing Doc Martins and with heavily pierced ears say when I take the last free newspaper from the stand. If looks could kill... I decide to ignore her.

...I managed to get past level 36, but not without cheating to be honest. I downloaded a little cheat code to get improved fire power.

...my dad just bought an X-Trail. It's got a built-in GPS navigator and two DVD screens in the back. I can even connect my DS to the screen. It is fat cool man. By the way, does your dad still drive that dorky Prius.
Loud laughter follows this. I almost engaged in this conversation by saying "what's wrong with the Prius?", but decided against it.

In the train:

...he has been ill for quite a long time, but now he is doing very well. He drinks well, grows well, and finally slept through the night. I am so glad that each of my own children is healthy and happy. Hearing the difficulties others experience can make you realize how lucky you are yourself.

...hey lady, you forgot your bag! This is shouted by a man on the train when a lady stands up and walks to the exit of the train. But she only goes to the toilet and asked for the person sitting opposite to her to look after her bag. Still, it was very considerate of the man. Would I have done the same?

Later at the bus stop:

Steven, stay here! Don't stand so close to the curb! Steven!! Damn!
A mother yells to here 6 year old. The boy chooses to ignore his mother and sings "na-na-na-naaa-naaa". I can't help thinking that my boy would never have done that. I guess I am doing something right in the upbringing of my children.

...it just left, next one comes in 10 minutes.
As I look at the time table for my bus, a girl with way too much make-up informs me in a genuine Utrecht accent that my bus has just left, but that they drive every 10 minutes. I thank her for the information.

...What do you mean, you can't find it? Did you look in the supply cabinet?
In the bus I pick up a shout of outrage from someone who answered his phone. It makes me wonder what it is they lost, and what the consequences will be. Will someone be fired because of this? I want to know more, but of course it is inappropriate to inform about it.

It is impossible to tie all these bits together (unless you are Dirk Gently and run a Holistic Detective Agency), but it made one thing clear to me: people are social beings. They interact with each-other to give advise, to help, to warn, to express relief, anger or any other emotion, et cetera. Passively observing other people can be reassuring or can make you wonder about your own situation. There's much reflection here from my part, but it occurred to me that I use Twitter (and Yammer) in much the same way. There is much wisdom in a crowd. And while you surf through it, you can learn a lot about people and perhaps most importantly, about yourself.






March 11, 2009

The no-brainer business case for RIA

Although the RIA seems to defy definition, its business case has become crystal clear. If you are still not convinced about adopting RIAs, then have a look at these great slides from this webinar by Forrester on Enterprise RIA adoption.

Wait, what do I mean "RIA seems to defy definition"? Well, the definition of the term RIA seems to be shifting continuously. It certainly no longer just literally means rich internet application. I have said before that RIA was becoming a synonym for website, because nowadays, people expect you to build an RIA when they ask you to build a website for them. Just yesterday, I attended a seminar about RIAs, and the keynote speaker was of the opinion that an important aspect of RIA is "cross-platformness". And I can only agree, because the capability to build an application only once and being able to deploy it on many operating systems and devices is definetely a big development and maintenance cost reducer: win-win.

Interestingly, the definition of the term Web Service is undergoing a similar process as its meaning is also becoming broader. Well, that is not entirely true, because the definition of Web Service is depending on the perspective of its beholder. Seen from a business perspective, a web service is a course granular thing that reflects a certain business process or transaction, for instance "payment". Seen from the perspective of a software architect, a webservice is a programming interface that provides a set of operations that can be invoked from anywhere on the web. Seen from a consumer's perspective, a web service has a much broader meaning: a service of a company that is rendered to them through the web, for instance "online banking". Each of these notions is essentially true.

Did you notice how close the perceived meaning of "web service" comes to the meaning of RIA when seen from a consumer's perspective? In any case, an RIA can significantly improve the quality of the service that is rendered to the customer, because the rich capabilities of RIA technology allows you to develop appealing and responsive web applications. Add the above mentioned "cross-platformness" to the equation and you get a no-brainer business case: RIA technology improves customer satisfaction and reduces cost. And if you pair RIA development with an Agile methodology (also a no-brainer) and rapid design & visualization, you can have your customers experience the first version of your cost reducer and customer satisfier within the month. No kidding.

March 02, 2009

Personal branding with social media

Modern (social) professionals spend a lot of time on the web to advertise themselves. Social Media, which is a new umbrella term for web applications that allow people to participate in the creation of the content served by that application. Examples of Social Media are Web log (blog) applications, LinkedIn, Facebook, Twitter and Ning (for an extensive list of social media examples, look here)

The modern professional uses social netwroking applications such as LinkedIn to create and maintain a personal profile and to associate himself/herself with other individuals (preferably with commonly recognized authority), put their ideas, knowledge, experience and interests on display in their personal and professional blogs and leave authoritative comments on selectively picked blog posts of other individuals. Today's pros are constantly shaping their personal brand. I have made an attempt of illustrating the basic processes behind this in a use case diagram below (diagrams always make articles look more authoritative...).



Personal branding will help yourself to become engaged in the type of projects you aspire. It also helps other people to find certain information and expertise that they need for their projects. Recruiters have discovered social media too. They use it actively to hunt for heads or passively to scan the extracurricular activities of people who have applied for a certain position. Needless to say, you should be aware of the down side of this too: it can be difficult to erase past results of your online activities. Recruiters also scan the web for any recent or past behavior on your part that they might see as unfitting for the position they attempt to fill. An online picture of yourself in a bikini might prevent you from getting a job as a teacher on a primary school, but depending on your looks, it could improve your chances of becoming an aerobics instructor.

Guy Kawasaki gives us 10 tips for using LinkedIn to find a job (in particular, have a good look at tip 11). The effectiveness of these tips is directly proportional to the strength of your brand, i.e: take good care of your personal brand and these tips will be more effective.

February 21, 2009

tweetbox.org

My TweetBox project hasn't seen much of my attention in these last few weeks. I have only done a few minor tweaks here and there. I am still struggling with performance issues. I have tried to speeds things up by moving some JavaFX code that was juggling blocks of memory to Java. I also replaced all my Vectors with HashSets to make looking up and sorting objects faster. According to the Netbeans Profiler, those measures have defintely improved things (it made some hotspots disappear), but the user experience is still the same: sluggishness.

I have also spread the retrieval of tweets from the Twitter API during start-up such that it no longer loads several streams in parallel, but one stream at a time. That did have a noticable effect. The application has become more responsive because of that.

You can see for yourself in the development version.

O, by the way, I have bought a domain name for my project: tweetbox.org. It is so cheap to do that these days.

February 10, 2009

Cruise controlling Adobe Flex/AIR development using Tamarin

In the last few years I have been involved in several software development projects. Some projects in pure Java, Some projects in Pure Adobe Flex, and a few mixtures of these flavors.

I am also a big proponent of continuous integration. An awesome tool for that is Cruise Control. I have used Cruise Control in one of the above projects, and that made life in that project so much easier. It takes some effort (a few days) to setup and fine tune Cruise Control, but once you have done that, you gain the following enormous advantages:

  • immediate feedback on broken builds,
  • always up-to-date API documentation,
  • immediate feedback on code quality.
Cruise Control basically works like this: It monitors the state of your project's source code repository (CVS, Subversion, ...). If anything changes in that repository, it gets an update from the repository, and rebuilds your project. Depending on what you specify in your build script, this could be anything a developer could do from his work station. Usually, the following artifacts are produced by a full project build:
  • Deployable/installable binaries of the target system's components,
  • Unit test reports,
  • Code metrics reports,
  • API documentation.
In the Java/C++/C#/.Net communities, doing continuous integration is already pretty much a default project practice. Been there, done that and bought the T-shirt! Now I come to think of it: setting up continuous integration probably moves you well into level 3 on the CMMI scale (but don't quote me on this, because I haven't verified that).

In the Flash/Flex/AIR community, continuous integration is probably very rarely used. I have often thought about setting up Cruise Control for a Flex development project, but I always got stuck at the following inabilities:
  • can't produce unit test reports,
  • can't produce code metric reports.
For automatically running your unit test cases, you need to be able to run actionscript bytecode in "console mode" (i.e., no GUI). The unit tests would produce success/failure reports in a format (usually XML) that Cruise Control later combines into a single XML stream and transform it to a neat human readable HTML report by running it through an XSLT script. In spite of the grandness of the Flex SDK and Flex Builder, the Flash Player doesn't have a console mode.

And as far as I can see, there is no decent (or even half-way decent) code metrics and quality analyzer (such as PMD and Checkstyle for Java) for Actionscript. And again, these analysers should be able to run in "console mode" and produce a report that can be processed by Cruise Control.

But, today, I have seen the light! And it comes from the Tamarin project. Tamarin is an open source ECMAScript Virtual Machine, contributed by Adobe to the Mozilla fondation. I found this rather dated but still very useful blogpost by Zwetan Kjukov explaining how to build the Tamarin VM. Following the instructions on that blog, you would obtain an executable binary named avmplus, which you can use to run Actionscript bytcode in console mode!

Now, I haven't tried to reproduce the steps in Zwetan Kjukov's article, but I intend to whenever I find the time and oportunity to do that. And the results from that will be nice material again for a blog post.

On the Tamarin pages, I also found these instructions on how to build the latest stable release of Tamarin.

Has any of you already experimented with continuous integration in Flex/AIR projects? Please share your experiences!

February 09, 2009

Broadcast yourself with MyBlogLog

I am trying out this new Yahoo service called "MyBlogLog". The service allows you to setup yet another online profile. A powerful aspect of MyBlogLog is that it lets you associate your profile with just about any other online profile you might have. The list of services MyBlogLog currently recognizes for this is impressive.

Once you have setup the bare basics of your profile, you can already create a customized widget and e-mail signature that you can use to promote yourself and encourage readers to follow you on twitter, become friends with you on Facebook, follow your diggs, ... .

My e-mail signature currently look like this. Nice eh?

Mark Nankman
UX Architect and Social Media evangelist


However, I am not too sure about this service. It looks nice, but why would I want to use it on top of all the other services I am already using. That's the whole problem with social media, isn't it? There is too much to choose from. Perhaps, "social umbrella services" such as MyBlogLog can solve that problem, but for now, I am not yet convinced.

January 20, 2009

TweetBox Web Start

You can jump right into TweetBox through this link. You can trust the application to not do anything malicious. The first time, Tweetbox will ask you for your Twitter credentials. They will be stored locally on your PC in your default user folder in a file named tweetbox.properties. Note that the password is not encrypted. After entering your twitter login name and password, you should see tweets arriving.

Tweetbox does not take the health of the Twitter API into account yet. It just doesn't care and tries to get new tweets every 5 minutes no matter how the API is feeling. Not that I am an egoistic person, I just didn't get around dealing with Twitter's fragility yet.

You wil also notice that TweetBox is very sluggish. I have already used the builtin profiler of Netbeans 6.5 (which is absolutely awesome!!) and managed to make TweetBox about 210% faster, but it still sluggish. I am starting to think that JavaFX is to blame, since I think I have already taken quite a few optimization measures such as building a caching image loader and reducing complexity of UI structure where I could.

Anyway, have fun playing with TweetBox and feel free to drop some comments, either here on my blog, or on twitter. I can be followed here.

By the way, Jim Weaver mentions TweetBox on his blog. Thanks Jim, much appreciated!

January 17, 2009

TweetBox migrated to JavaFX 1.0

It took me forever (mainly because I had to do it in my rare spare time), but I have finally "ported" my TweetBox project to the JavaFX 1.0 SDK. I wish this article on how to migrate to the new SDK was posted sooner!

Anyway, it is ported and I have a new version ready for download here.

You will see that I have also been tweaking the UI. The features are still mostly the same.
It is functional, but still not very sophisticated. I have also managed to make the links in the tweets clickable. Links should open in your default browser. I have used this as the basis for doing that.

Let me know what you think of it.