Like many other people, I suspect, no matter how big my hard drive is, I somehow find a way to fill it up. Even if you have enough space, with the ridiculously large hard drives on the market these days, it can quickly become difficult for a human brain to recall everything that's on there.

In recent months, I've been slowly squeezed out of disk space by Torrent downloads and various installs (all of them necessary, of course.) On a number of occasions, I've tried going manually through my disk, deleting/uninstalling things as I go, but it really hasn't freed up much space. I needed help to find out what was leeching so much of my precious Gigs.

Enter SpaceSniffer
Space Sniffer Top Level Scan
This weekend, I finally finished Half Life 2 (awesome!) after a long hiatus (my latest saved game was from April 2009.) I have had that game and the separate Episode Pack for well over a year but with the move to 4Point and all the exciting things going on I haven't had much time to sit at my PC for anything else than work.

Well, long story short, I finished off Half Life 2 this afternoon but had no room left to install the Episode Pack. Enter SpaceSniffer, a little Java-based freeware app that analyzes the used space on your Hard Drive and presents it in a visual way, in real-time no less. Now I finally know where all my Gigs have gone.

Intuitive and -- dare I say -- Kinda Fun
Space Sniffer of my Games Directory
SpaceSniffer crawls through your directories, one at a time, doing an analysis of the directory tree and presenting its findings as it goes. It's a little difficult to describe how it looks, but the UI is slowly sub-divided into boxes representing the folders on the drive, from the top-level and on down. As the process crawls deeper into the tree and the visual boxes get smaller, SpaceSniffer begins to hide the overwhelming details, allowing you to concentrate on what's relevant. If you ever want to see those hidden details, you can just click on a box and it will be divided into sub-boxes representing it's contents. très cool.

So, if you are running out of disk space, or would just like to do a little disk clean-up, this is the program you've been looking for. SpaceSniffer runs on Windows 2000, XP, Vista and WIndows 7.

Thumbs up from here to Uderzo Umberto for creating such a polished, useful and focused piece of software. Grazie mille!

Your Subversion Repository - Treat it with Respect

| No Comments
I learned a lesson this week: it's called good manners when it comes to the subversion repository. Apparently it does not like it when you just randomly delete files on your local system, add in new ones, and then try to check them in. It throws up its hands in horror and red flags go up everywhere. Go figure. 

It all started when I started working on a revamp of our website. I copied my local website on my laptop, and then working from there, created an entire new website structure and design on my local machine. Fired it off back and forth with a design company working on our new home page and menu bar, and never gave a thought to my existing website that was merrily being checked in and out of subversion (using Coda). 

When it came to uploading the new site and flipping the switch...I simply deleted the old site using Finder and added the new. 

This was really the wrong thing to do. Really wrong. For a couple of reasons:

First of all, in doing this, I also deleted the .svn files (hidden). The removed files also had not been correctly deleted in the repository...so it thought they were still there, but had red flagged them as missing. 

Secondly, about five months previously some other changes had been done to our site by another website company and the changes had been made on the server. I did not get a list of changes made to the site and I was unaware that certain folders and files had not been downloaded and committed to subversion, because I did not know they had been changed or added. 

This means that when I copied my local folder to work on recreating a new website, I then missed these files. The local copy I handed off to the new website company for further changes and we all merrily went on our way not realizing that certain folders and files had not been downloaded and checked in. 

In short, the entire thing was a mess and took about three hours to clean up in the subversion, plus another five hours tracking down the previous changes that had been lost in the process. 

Lesson learned. Real good.

In the future, I will treat my subversion repository with a lot more respect. I hereby decree that from now on, I will:

  • not allow anyone to make server side changes without letting me know what they've changed and what I need to download and commit
  • download the entire site, if server side changes do occur and i'm unsure whether or not I've got them all, and carefully commit all changes into the subversion
  • I will no longer delete folders and files in my local copy using Finder
  • If I delete files and folders I'll do it in Coda, and appropriately delete them in the subversion
  • I will carefully monitor my subversion repository and address any red flags when they arise
  
In short, I promise to understand how subversion works and treat it with respect. I swear. 

 

iPad: Plenty of Shine... but No Flash

| No Comments
[Updated a few hours later to add a couple details I left out in the first draft.]

I just followed the live step-by-step blogging of the iPad release over at Engadget. The device looks pretty much like what I expected and its functionality is pretty much what I expected. It's basically... a giant iPod Touch. (I had expected a camera, though.)

I must admit, however, that its "low" starting price was a pleasant surprise: between $499 and $829. I had predicted something around $800 and hadn't figured on so many different models (6 in all).

iPadHandHeld.jpg

According to the hands-on comments from EnGadget and Gizmodo, the iPad has plenty of power (1GHz "A4" CPU) for browsing the web, etc., but no multi-tasking (grrr) and... if you look closely at screen shots of Steve Jobs' demo, you'll notice... The Blue Lego Cube of Disappointment. 

noFlashOnIPad.jpg
All iPhone/iPod Touch owners will recognize it instantly. What it means is that despite its size, power and (much-hyped) promise, the iPad's Mobile Safari has no Flash plug-in

In his presentation, Steve Jobs called the device "magical". Well why don't you just whip us up some magic there Steve and get Flash to work on your freaking device? I'll bet you a Silicon Valley latté that Adobe will do it for free

Anyways, enough from me. With your hopes mercilessly dashed once more, all you Flash Platform developers can now return to your regularly scheduled hand-wringing.

The Magic of Panic's Coda

| 2 Comments
Currently I'm revamping our corporate website. Updating content, rearranging pages, actually doing a complete overhaul. I'm taking a momentary break to worship at the altar of Coda. 

Coda, to be honest, was one of the biggest reasons I wanted a Mac. I had heard about it, read reviews, and envied those who had Macs.

But I didn't quite understand just how good it actually is. I'd set my standards low from working with multiple inferior products. The last time I revamped the website was pre-Mac. It was painful. I had limited access to pages, rearranging stuff was a nightmare, and modifying the HTML was a nightmare. 

This time around, Coda makes everything easy. For example: I've got blocks of HTML I want to re-use, but not necessarily in a global search and replace (which is fast and easy with Coda too, btw). I need to make tiny modifications to it, but don't want to sit and retype it all each time. Nor do I want to go back to pages where it's been used and copy and paste it each time. 

I was thinking, wow, a clipboard function would be really handy. Seems logical, I look around, see "Clips" on the bottom of the Coda UI and go: "hunh". Yup. It's a full clipboard with the ability to save clips of HTML in different folders, make them accessible global or just by site (I manage several sites...this is worth a lot to me), and even better than the average clipboard...I can EDIT the HTML at whim if I find that I'm making a particular change on a regular basis. 

Best of all, it's an overlay clipboard that I can move around. I just drag it to my second desktop, let it sit there...and it's a simple double click to add the HTML to a page. I don't have to keep re-opening to access what I need.

It may not seem like much. But when working on a lot of pages with limited time...I have to say Coda has shaved hours, if not days off of my work. 

Add to this subversion accessibility, the ability to share pages between users, terminal access through the main UI, and a host of other really important functions...and Coda offers everything I need to manage a website. 

Thank you Panic. 

Obscurity is not Security: Insurgents Hack U.S. Drones

| No Comments
[Update:The security vulnerability has been fixed]

A word of caution to my fellow developers: if you think your software is secure because it's obscure enough that nobody would bother to hack it, then you might be in for an unhappy surprise.

Case In Point
a118_predator_firing_hellfire_2050081722-16359.jpg
Predator drone firing a Hellfire missile
(source: US Air Force)

According to the Wall Street Journal and a follow-up report from l'Agence France Presse, Department of Defense officials have admitted that video feeds from Predator surveillance drones were routinely intercepted by "Iranian-backed insurgents" in Iraq and Al-Qaeda members in Afghanistan.

Perhaps it would all make for a better story if I could tell you that it required a vast conspiracy of ex-KGB agents using supercomputers hidden in bunkers under the Urals to crack the video's NSA-level COSMIC Top Secret encryption, but unfortunately, real life is slightly less dramatic (and much more deadly). The UAVs streamed the video in an unencrypted form, making it possible for a rag-tag assemblage of insurgents often with no access to the Internet to intercept the feeds using a "commercial off the shelf" (COTS) satellite video capture tool, SkyGrabber (MSRP: $25 US) and laptops. The minimal effort it took probably didn't even distract them from their day job manufacturing IEDs and blowing up innocents.

From the WSJ article:

The potential drone vulnerability lies in an unencrypted downlink between the unmanned craft and ground control. The U.S. government has known about the flaw since the U.S. campaign in Bosnia in the 1990s, current and former officials said. But the Pentagon assumed local adversaries wouldn't know how to exploit it, the officials said. (emphasis added)

The military remained unaware of the practice up until a laptop belonging to an "Iranian-backed Shiite militant" was captured on which Military Intelligence discovered intercepted video footage. (I'm frankly surprised it didn't show up on YouTube.)

The Lesson: Obscurity is not Security

It is supposedly unlikely that the video was of much use to the extremists and while the whole story seems a little ridiculous, it surely is no laughing matter. Here's hoping some heads will roll because "incompetence" isn't strong enough a word.

As software developers, we're usually required to think about security as a key requirement of any system. However, when you're tasked with developing software for a $3+ million unmanned aerial vehicle (UAV), you'd better pay attention to these "details" because somebody very dangerous surely is. When that happens, it's a whole lot more than just data you're protecting.


Further reading

Cross-Compiling Java/C#/Ruby to iPhone

| No Comments
(This is a posting I started a while back (on my brother's b-day in May) but didn't publish at the time... don't remember why.)

Cross-Compiling C/C++ to Actionscript using Alchemy

As you may well know, Adobe Labs has developed an exciting tool called Alchemy that leverages the LLVM open source project to cross-compile C/C++ code to a common run-time byte code. This byte-code is then cross-compiled to Actionscript code which is then compiled to Actionscript byte code (ABC). The earliest and most striking example of what can be accomplished with Alchemy was the port of Doom to Flash that Dave released on Newgrounds within a week of Alchemy's launch. He has now released the Doom Triple Pack which includes the bad boys Doom, Heretic and Hexen.

The good people of Automata Studios helped Adobe develop one of the first projects for demonstrating how Alchemy works. Here is their write-up on the subject.

Cross-Compiling to Objective-C (and more!) Using XML-VM

overview.jpg
Another development that has come down the pipe is some research done by Arno Puder and his colleagues at San Fancisco State University. Their work involves using open-source tools to transform code from one language (e.g. Java, C#) to an intermediate XML format which can then be transformed to another language (in this example, Objective-C). The project is called XMLVM.

Prof. Puder presented how all of this works at the Google offices and the video of this presentation is available on YouTube. It is a very cool idea and demonstrates once again (as all software does, really) the potential aggregate power of using many small, simple constructs. Byte code statements are converted to an XML format which can then be transformed to Objective-C. While the final code might not be as optimal as the original, it will do the same thing. My guess is that the toughest part would probably be handling language elements that don't exist in both the source and target languages (i.e. garbage collection, loose typing/auto-boxing, annotations). Perhaps you'd have to do away with overly "native" parts of a language language when writing the "from" code. The good professor covers part of this challenge in his presentation. 

While the target language discussed is Objective-C, as you can see from the diagram above, the XMLVM project allows you to cross-compile to and from a number of different languages.

Useful SQL Queries

| No Comments

You might find the following queries quite handy for your day to day SQL operations:

1. Get the total number of records in a table:

SELECT COUNT(*) FROM TABLE_NAME;

SQL User queries in Oracle

| No Comments

Here are a few  useful user SQL code snippets in Oracle:

1. To create a user

CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

2. Grant user privileges:

GRANT CONNECT, RESOURCE, CREATE SESSION, CREATE VIEW TO username;


3. Grant all privileges:

GRANT all privileges TO username;

4. Delete a user or to delete a user and the associated user schema

drop user username cascade;

This SQL Snippet get a list of all the tables under a user:

select * from user_objects where object_type = 'TABLE';

This SQL Snippet will get you a list of all the sequences in a DB Schema for the user tables

select * from user_sequences


This SQL Snippet will get you a list of all the view in a DB Schema for the user tables

select * from user_views;

Happy Coding :)

Finding out the Oracle Version using SQL

| No Comments
If you ever have to find out the version of Oracle using SQL, use the following SQL command and it will spit out all the details.

SQL
 SELECT * FROM V$VERSION;

OUTPUT

BANNER                                                          
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production                          
CORE    10.2.0.1.0    Production                                        
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production         
NLSRTL Version 10.2.0.1.0 - Production
----------------------------------------------------------------

Happy Coding :)

Changing the default port number in Apache Tomcat

| No Comments

I had to run two webservers on my machine at the same time. Since both of them used port 8080 , the easiest way to run the two servers at the same time was to modify the port number on one of them.

Here is how we can change the port number in Apache Tomcat:

1. Navigate to : Apache Software Foundation\Tomcat X.X\conf



tomcat 5.5 Port Number.png 2. Modify the Server.xml file:

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" ... />

Modify this to another non-conflicting port ( I changed it to 8888)

Happy Coding

XML Manipulation in Flex and ActionScript

| No Comments
There are lots of crazy ways of manipulating XML in ActionScript.Here are a few simple tips and tricks on manipulating XML in Actionscript.

  1. Declaring an XML Variable: An XML variable can be created in ActionScript as follows :
                 var tempSearchXML:XML =     <searchCriteria>
                                                                <branchName>023</branchName>
                                                                <contfirstname></contfirstname>
                                                                 <contlastname></contlastname>
                                                                 <contmailsort></contmailsort>
                                                                 <contphone></contphone>
                                                             </searchCriteria>
                                         
2.  Preview an XML Variable : An XML variable can be previewed in an Alert Box by converting the XML to a string object
       
            Alert.show(tempSearchXML.toString());
           
3.  Getting the value of a Node in the XML:

           Alert.show(tempSearchXML.branchName.toString());

4.  Setting the Value of Node in the XML : The following code sets the value of a node 'contfirstname '.
 
            tempSearchXML.contfirstname ="Armaghan";

5.  Setting / Changing / Updating the Node Attribute in the XML: The following code snippet changes the name of a Node from 'contlastname' to 'lastname'.

            tempSearchXML.contlastname.setName("lastname") ;
           
5.  Delete a Node in the XML: The following code snippet deletes a Node called 'contphone' in the XML.

            delete tempSearchXML.contphone;

6.  Adding a Node in the XML: The following code snippet adds a Node called 'text' in the XML and sets its value at the same time.

            tempSearchXML.text ="Taylor" ;

Happy Coding :)

Dump the Ant build information to a log file

| No Comments

If you ever need to dump the build information from the command prompt console into a log file, just add a -logfile <filename>.log parameter after your build file call in the command prompt console and you're good to go.

Happy Coding :)

Default Value in QueryParam Annotations

| No Comments
In order to remove any null pointer exceptions while using RestEasy Annotations, you can always pass a default value and handle it appropriately in the Data Access Objects ( If you are using one. This ensures that there are no null pointer excpetions from the returning classes.

Here is a code snippet to do just this:

public StreamingOutput getUsersSummaryList(@QueryParam("active") @DefaultValue("0") String active  ){}

PermGen space error (Hibernate, JPA)

| No Comments

If you ever come across a PerGen space error in Hibernate or JPA...it refers to the java.lang.outfspacememoryerror (Your webapp is out of memory). PermGen is  used to store the class definations ( and I do mean all the Loaded Classes ). This error refers to the heap space being full due to the large number of classes.

Generally you can recover from these errors by restarting your WebServer. If you want to really fix it, do one of the following 2:

1. Hibernate: Change the hibernate.properties file from  "hibernate.bytecode.provider javassist" to hibernate.bytecode.provider cglib".

2. JPA:  Change the persistance.xml file from
<property name="hibernate.bytecode.provider" value="javaassist"/> to <property name="hibernate.bytecode.provider" value="cglib"/>

Happy Coding :)

The answer to everything? Almost.

| No Comments
For those of you following my exploits with the instrument of torture that is my home laptop, you will be happy to know it's been solved. Here's the long and the short of it. After re-installing Vista on the beast and routinely waiting up to 20 minutes for it to load and experiencing up to 23 crashes in an evening I found the solution. 

Let me backtrack.

It all started one bright, shiny, happy day when a nice FedEx man who didn't mind my lurking in the hallway (that much) delivered my shiny new Mac. They say the iPhone is the gateway drug: and it's certainly true in my case. I will never go back to a PC. You can't make me. 

So the Mac-ifying of my life continued on in a rocketing snowball fashion. It soon rolled right over my Dell Mini 9 (That started when I sorta locked it by letting Linux background install too many apps...100% of mini's mini 4GB hard drive used up. oops. my bad. Purchased a 32GB replacement and solved the mini's biggest limitation. If you're looking for a replacement hard drive for your mini consider www.conics.net in Japan. Offer good selection, good price, amazing delivery.). 

Once all was said and done, my new world order made me look at my instrument of torture in a new light. Whereas it had seemed slow before...well, now compared to the speedy Mac it operated at a painful crawl. Action was immediate.


No, I didn't take a sledgehammer to it. Number one reason being that a fire a few years back a fire at my cottage resulted in the firemen taking the sledgehammer (a small price to pay for salvaging the ruins of my home I think). Number two reason being that the perfect solution to my wiki woes (side story here: I snapped up a five-user Confluence license when they went on sale awhile back...but sadly the server I was using for my brother's website can't handle the install...needs more juice) is setting up my own home server. I had hoped to steal the kid's computer. But he resisted. Something about college, homework, etc., I have to say it all seemed really trivial to me, but he wouldn't let me take it. How rude.

So my greedy eyes next lit upon the instrument of torture. A-ha! It had once held Linux quite happily. Could it, would it be the perfect solution? 

Well...it took me all of five second to make that decision (once I recalled that the sledgehammer was gone). Vista: no more. And good riddance. As one of my past installs on the instrument of torture was Ubuntu, I decided to go with the Ubuntu Server on it (Jaunty for those who care). Biggest blip in the half hour it all took to configure was setting it up with a static IP. And that took about two minutes. 

Tonight I'll be installing Confluence and setting up my wiki once more. Yippee! 

Yes, I know this is not Flex. And it is not that Flex is dead to me. It's just that playing in the world of shells and wikis is a lot of fun and very very distracting. Some day, once my wiki woes are long forgotten I'll return. 

I'll keep you updated on the Confluence install and I'm also toying with adding Melody for my brother's website (currently on Movable Type). 

[Note that Ubuntu now has a netbook remix...interesting.]

Ray Bradbury, Sci-Fi Legend... And Prunes?

| No Comments
I know this isn't RIA-related, but I just have to post this.

I'm currently re-reading Fahrenheit 451, an awesome book where Ray Bradbury (living legend of American litterature) displays his incredible ability to predict the social/political path the world would eventually take. Anyways, the gentleman author deserves every accolade/income-generating opportunity that he can get, which brings me to one of the strangest, off the wall commercials that I've ever seen.

It is like a compilation of an Ad agency list of what not to put into a commercial:

  • Self-referential humour sticking it to the company that's vying for your money -- CHECK
  • "Bada-bing" sound-effect after a bad pun is thrown out there -- CHECK
  • Giant disembodied head of bespectacled sci-fi writer (who isn't in a bikini or ogling someone who is) -- CHECK
  • Stock footage of NASA geeks turning dials and pushing buttons -- CHECK
  • Mentioning the wrinkles on prunes -- CHECK

I give an A+ for boldness to the people at SunSweet. It's a wonder they're even still around. I guess those must be some good prunes.





A thought:

Why is it that I sincerely doubt that in this day and age, any modern advertisement agency would waste their time creating a commercial featuring a best-selling author of fiction (other than perhaps Algore, inventor of The Internets).

All Shall Bow to... Steve Mobbs of "Mapple"

| No Comments
An early morning distraction...

Dial down your MyPods for a message from the luminary genius CEO/guru/deity of Mapple: Steve Mobbs.





Dear Mr. Mobbs...

Sir, I implore your excellency to allow MyDobe to release a fully-featured version of Flash Player 10 on the MyPod.

Thank you. You may now return to tending to your narwhal farm.

(By the way: nice turtleneck.)

Leah Buhley on Being a "UX Team of One"

| No Comments
Here is an excellent presentation (slides with audio) on "Generative UX Design" by Leah Buhley of Adaptive Path. She gave this presentation at the IA Summit 2008 (i.e. the Information Architect Summit). It is entitled "How to Be a UX Team of One" and goes over her personal best practices for Lone Ranger UX professionals.

One of Leah's key points: Business Needs + User Needs = Design Principles. In other words: software needs to be more than purely functional (i.e. business-focused). It also has to be personal (i.e. user-focused). I'd put it this way: "If all food were nutritious but tasteless, people would be no better off because they wouldn't eat enough to stay healthy."

Leah presents her ideas well and with a lot of passion and provides great food for thought. What more can I say, really? Check it out.

My take-aways (e.g. Leah's points mixed with some of my own ideas):

  • Generate many ideas. The more the better. Sketch a lot. On paper, even. That said, you should still brainstorm within constraints. This is the real world, after all.
  • Use a continuum (e.g. from beginner to power user), 2X2 or larger grid to organize your mock-ups. Experiment with word association, combine ideas, extract concepts from an idea. Build up, break down, re-organize.
  • Compile an "Inspiration Library" by taking screen grabs of inspirational sites and applications. It incorporates competitive analysis but also provides mnemonic cues (Rorschach) for things that just plain work.
  • Assemble an ad-hoc team at which to throw ideas and out of which to draw new ideas. Use sketchboards (i.e. butcher paper) on a wall to post up ideas and display low-fi mock-ups. If your ad-hoc group needs some guidance, use basic templates into which they can draw their own ideas.
  • Abandon the ideal of the Artiste -- the beret-wearing holder of all design knowledge. Decorate your workspace with mock-ups, ideas, sketches. Get people's input. Be proud of incomplete/in-progress ideas. Share them and get people's impressions.

Worth a Scan, Man: Vids from FlashCamp SanFran

| No Comments
If you want to know what's new and ominously pending in the world of Flash and Flex, you owe it to yourself to check out these videos from Adobe Developer Connection, post haste!

They cover such mouth-watering topics as an intro to Flash Catalyst and Flash Builder 4 and provide a lot of information about Flex 4 as a language (including advanced CSS, skinning, animations and effects). They also describe the road ahead for AIR on the desktop, which frankly is something I'd like to know more about.

Click on the image below to watch the joint keynote by Kevin Lynch, Adobe's chief technical officer and David Wadhwani, the general manager and vice-president of the Flash Platform Business Unit (i.e. two very important dudes):



I personally am very excited to see the current and upcoming innovations in the Flash/Flex platform. Having been a member of the Java community for a long time, I can see some similarities between the promise of the Sun and Adobe web and desktop technologies. As cynical as I can sometimes be about these things, let's hope that where Java largely failed (e.g. Swing-based applets and desktop apps), Flex/Flash will succeed (e.g. Flex/AIR apps for the web and desktop).

As always, I welcome your comments. I'd love to hear what upcoming Adobe Flash/Flex technology you are most looking forward to using. What's most likely to turn out to be vaporware? Can any of this technology live up to the hype?

Pull up a chair at LiveCycle Café

| No Comments
Adobe recently planted the seed for improved cooperation within the scattered LiveCycle community. In an effort to leverage the social web to combine our collective efforts to get the word out about LiveCycle and build up buzz and a shared base of common knowledge from which we can all benefit.

This "seed", as I call it, is LiveCycle Café, a social AIR app that provides all the tools to start sharing and gaining knowledge on the power of LiveCycle, leveraging Adobe corporate documentation, forums, live chat and various community contributions via a built-in RSS reader. The premise is that beginners and experts alike from across the globe (is that a contradiction?) will use it to connect with each other. LiveCycle is a very powerful but large set of tools, so gaining access to the many experts who are out there toiling in obscurity (some of them are toiling a few cubes away from me, here at 4Point) is a great asset. As we well know, we can only succeed by standing on the shoulders of giants, so having instant access to the cream of the LiveCycle crop can do nothing but make us better at what we do.



Here is the AIR install badge. Check it out. Who knows, maybe you'll find me on there, snooping around.

Take a Spin on the Tour de LiveCycle

| No Comments
After the success of Tour de Flex (which just recently celebrated its 5,000,000th sample viewed) the fine folks at Adobe have released Tour de Livecycle, a one stop shop for discovering the many, many facets of the Livecycle Enterprise Suite. Hopefully this initiative will help put this powerful yet underrated offering from Adobe onto people's radar screens.

There's no point in me going into what Livecycle is, but suffice it to say that any self-respecting enterprise Flex developer owes it to him/herself to seriously consider gaining some Livecycle-related experience. "There be gold in them thar skills."





Hat tip to my man Armaghan here at 4Point for pointing me to Duane's post on this topic (over at Technoracle). Also, check out the original post on the "TDL" launch by Greg.
Now all you LiveCycle documentation hunters can look at a single location to find all LiveCycle related information....on your desktop...thats right...and its actually true.

Adobe released Tour De LiveCycle yesterday, a comprehensive AIR app that locks all aspects of LiveCycle documentation on your desktop. It will remind you of Flex explorer in its look and feel but encompasses videos, presentations, tutorials and hands on examples on all aspects of livecycle (Data services, BAM, Workbench etc) .

TourDeLiveCycle1.PNGIt can be downloaded here:










East Ontario/West Québec Flex/Flash Coders Unite!

| No Comments
You know Ottawa has arrived when the Flash Builder 4 / Flash Catalyst Launch Tour announces a date at Adobe's offices here in Ottawa! Aside from the upcoming Flash Builder and Catalyst (if you haven't seen it yet, slap yourself now), there'll be a tutorial for PixelBender (which is freaking awesome), as well as a show off session for CartoVista (no clue).



The action starts at 5:30PM on June 3rd and runs until everyone goes home satisfied at 9:00PM. There will be prizes and plenty of food. What's not to like, people!?!

Click here for more details.
Inquiring (make that "trivial") minds want to know: What logo will Adobe now associate with the re-branded, better than ever, sliced bread tasty "Flash Builder"?

Since Adobe seems to have somewhat linked the underlying technology that their authoring/development tools use to those tools by making both share similar logos (e.g. the red Fl for Flash CS4 to match the red f for the Flash platform proper), what does that mean for the upcoming re-branding of Flex Builder to Flash Builder?

Flex Builder currently has a gray Fx as a logo. Flash also has a red logo... Will the gray Fx therefore be replaced with a red Fx? (Oh but "Fx" still makes me think of Flex and that word is now a no-go as far as Builder is concerned)

Ok, then. Will Builder get a gray Fl, like a Flash CS4 logo only much, much more serious? (But then what about colour-blind people who can't distinguish red from gray?)

Hmmm. It sure does make one ponder. (For about 10 seconds and then you go back to doing actual work.)

[Follow-up edit: I just got my answer: The new logo is a gray "Fb". Boy do I feel better now that that's out of the way!]

Stuff You Missed at 360|Flex While You Were *at* 360|Flex

| No Comments
[Edits:
  • Added Jun Heider's materials on run-time resource profiling (Day 3, Session 2)
  • Added Ryan Phelan's slides on Pixel Bender (Day 3, Session 4)
  • Added Lafferty and Frishberg's slides and an example on custom ItemRenderers (Day3, Session 4)
  • Added Sanchez' slides on Degrapha (Day 1, Session 2)
  • (Über Edit) John from 360 Conferences has uploaded all of the presenter slides from 360|Flex Indy that he could get his hands on here. There are 33 of them, at last count. Thanks a million, John.
  • Added Laura Arguello's slides from her (excellent) Mate session (Day 2, Session 5)]
As you've probably guessed by now, if you missed 360|Flex by your own choice, you're kind of a... well, a loser. Many of the best presenters, mentors, open-source community leaders and trend-setting Flex developers were there, pouring their knowledge out in exchange for a hotel room and a 360|Flex "speaker" t-shirt. (If the room was in a train car, then just maybe it's a fair trade.)

One of the worst things about 360 (yes, I'm about to complain here, apologies to Tom and John) is that since there are generally 5 session going on at once, you're going to miss something. (I'll give you a second now to get over it.) Some things you'll never, ever get back (look through your high school yearbook for some quick examples). Fortunately, I have compiled a quick list of presenter materials that didn't make it onto the USB key. I will update this in the next few days as more stuff things trickles in.

I've listed these by day and session. (Note that I'm not counting the keynotes in numbering the sessions.)

Day 1

Session 1

Assert Yourself (FlexUnit 4) -- Michael Labriola (ably assisted by Jeff Tapper)
Slides

Session 2

Degrapha Declarative Graphics Framework - Juan Sanchez
Slides

Session 3


Structured Log testing - Renaun Erickson
Missed Points

Another Mapping API...Not! - Mansour Raad
Slides

Session 4

Any Which Array But Loose - Michael Labriola
Slides

Day 2

Session 1

Creating our first i18n (internationalization) Flex application - Oğuz Demirkapı
Slides

Flex Server Lib - Andy Powell
Slides

FLEXperience - Putting the UX in Flex -- Joe Johnston
Slides

Session 3

How Not to Code Flex Applications - Jeff Tapper
Slides

Session 4

Developers are from Mars, Designers are from Venus -- Chad Udell
Slides

Session 5

Building an AIR Video Recording Spy Camera with Motion Detection -- Rich Tretola
Slides

Breaking Down your Application with Mate -- Laura Arguello
Slides

Day 3

Session 2

Flex Profiling by Example - Jun Heider
Slides and source

Session 3


Merapi: What's Next -- Adam Flater
Source announced at 360|Flex

Session 4

Bending and Flexing with PixelBender - Ryan Phelan
Slides

Custom Item Renderers - Lafferty and Frishberg
Slides Example

That's all for now. Check back later in case more stuff pops up (it surely will).

Working with Rich Text Fields in LiveCycle ES

| No Comments

I have been struggling with data manipulation with rich text fields for a while. For those who aren't familiar with rich text fields in LiveCycle, they are simple text fields with the data format = XHTML.

This allows the text field (text area) to work like Microsoft word. The end user is able to edit the text, make it bold, underline it, hyperlink web addresses etc etc.

In my case, i had to concatenate 2 pieces of rich text fields into a rich text area. The usual rawValue and formattedValue XFA properties loose the formatting if used for rich text areas.

I have attached a sample XDP that shows you how to do it  "properly".

Armaghan.
RichTextCopyExample.xdp

Touch-down in Indianapolis

| No Comments
Well, normally touch-downs in Indy are welcomed with the roar of a crowd of hysterical fan. Strangely, when my plane touched-down last night, no such noise was heard from the fine denizens of Indianapolis.What gives?

So here I am, 2 minutes before the keynote is to begin. The room is huge, cathedral like and brimming with techy talent. Check-in was easy and quick and the people seem friendly enough. They gave us a bag and a USB key. I'll let you know later what the contents of it might be. I suppose I'll have to introduce myself to someone... not exactly a stretch for an extrovert like me.

Anyways, gotta go. I still haven't reviewed the list of presentations for this AM. But first I'm going to scan the room for Brad. He has to be here somewhere... or I'm telling!

Browser Wars

| No Comments
I've been quiet for a bit (except for twitter), the day job has been getting in the way of the day job (that makes sense to me). Though I may be quiet on this front, I am not generally a quiet person at the day job. For example, last week I inadvertently (ha! right!) started "the browser wars" here at work with the tech group. 

It all started with our blogs not displaying correctly in IE8. I happened to respond that it struck me as interesting that our blogs display correctly in Chrome, Safari (for XP no less), and Firefox...but not IE. Begging the question, what is everybody doing right? (Okay, I actually said, what is Microsoft doing wrong.....). 

This prompted a response pointing to browser stats, and a raging discussion on the merits of IE versus the others...browser wars. Someone even suggested that the other browsers were (egads) fads. I'm sure many of you know what I'm talking about...you've had these wars...possibly lost friends to them..... 

So this got me thinking. I had a pretty good idea of our own stats for our website, but what about our blogs? Did they both match the browser stats above? I couldn't resist and here's the results:

Onestats (I picked worldwide because I picked worldwide on our stats too):

WorldwideMarch 2009
Internet Explorer79.79%
Mozilla Firefox15.59%
Apple Safari2.65%
Google Chrome0.86%
Opera0.54%
Netscape0.31%

Our Website:

www.4Point.comMarch 2009
Internet Explorer69.09%
Mozilla Firefox24.67%
Apple Safari3.96%
Google Chrome3.67%
Opera1.07%
Netscape0%

Our Blogs:

blogs.4point.comMarch 2009
Mozilla Firefox56.16%
Internet Explorer33.65%
Google Chrome4.76%
Apple Safari3.27%
Opera1.56%
Netscape0%

Yes, you've read it right. Firefox wins when it comes to our blogs. I'm sure others have seen this trend on certain types of websites as well (and note that Chrome beats out Safari). My analysis: Our blogs are techie, techies visit them, techies are more open to new technology...hence the whopping change in browser usage. 

Which is of course why we had the argument last week...techies care about this stuff. I can bet that the average household isn't having neighborhood arguments with signs on their front lawns declaring browser affinity...but maybe they should. It's gotta be good to criticize technology (that's another longer discussion, but check out this article by John Siracusa on arstechnica.com as a starting point).

I think we'll see more and more change in browsers as more generations rise up that our Internet savvy (and Apple consuming). 

And before I launch another battle right here and now, let it be known that I think all the browsers have flaws...which is why I have Chrome, Safari, Firefox, and IE on my desktop and interchange them depending on the site and situation. Ridiculous, I know. But until one of them manages to do it all right....it's the world I live in. 

Hence, I predict that we'll actually see more and more a flattening of the numbers as more people start to shift and split their browser usage depending on what they're doing. Currently, I predominantly use Chrome at work (Firefox and me don't get along, though I used to love it, due to a memory glut issue that kept crashing my work) and Safari at home (on Vista no less). On my Linux OS (my Dell Mini 9) I use Firefox. 

So now I leave it there. Share with me your own browser war stories or your own stats. I'm intrigued. 

Because, let's be honest. It's no fad. And yes, thems fighting words. 

UPDATE (June 18, 2009)
Just read another notice about how Google Chrome is rising fast. We'll see if it can hold on past being a 'fad'. Check out this article: Chrome Market Share

Portal: The Flash Version

| 1 Comment
And now for a quick time out for some fun.

As anyone who has talked to me about PC gaming would know, I hold the Half-Life series dear to my gamer heart. It is (IMHO) one of the best crafted, most originally imagined game universes that I know of. The original Half-Life (developed by Valve and distributed by Sierra) was simply a revelation while the second (which I am currently playing through) is no less innovative.

The series has spawned a number of high quality quasi-sequels and mods (e.g. Day of Defeat, Counterstrike), many of which I have wasted untold hours on. One spin-off that I haven't played is the "cult classic" Portal. It seems very original and visually stunning, but the gaming budget is tight in the Bastien household. Perhaps someone will donate a copy to me someday out of pity <hint hint>.

2D Tribute to 3D Goodness

While digging around Newgrounds, I came across a Flash 2D port/fan tribute to Portal. This little game is very polished and will provide you with a lot of brain-teasing fun for your money (i.e. MSRP of $0.00). Thankfully, Valve hasn't come down hard on the developers for using their intellectual property in making this game. If anything, I'm surprised that Valve hasn't bought it up outright and used it for their own purposes. As with all well-designed software, the interface is intuitive and elegant, regardless of the complexity of the task on hand.

In case you haven't heard of it, the original Portal is a 3D puzzle game where players must attempt to navigate an obstacle course of sorts by using a "Handheld Portal Device". It allows you to project a pair of linked tears in space-time (or portals), one blue and one yellow. They are "linked" in that when you (or another object) pass through one portal, you will come out through the other. The objective is pretty simple: you must find your way to the exit of each section (or room) of the obstacle course without getting squashed, burnt or ventilated. The games physics are meant to be realistic, which leads to some interesting quandaries involving "looping" portals (i.e. picture falling from a portal in the ceiling into one in the floor... over and over again until you reach terminal velocity).

But I'm getting ahead of myself. Just click on the logo and try the game, for crying out loud.