Technology blog oriented towards good design and impressive web applications.

IdleTogether

AeroFS - A Dropbox’ish closed P2P alternative

by Nicolas Noben

AeroFS a p2p kind-of Dropbox.

It’s another YC startup. They pop up like mushroom these days.

This one though, I’m failing to see the business plan. What I mean is Dropbox is worth $$ because the damn thing hosts our data, and we use their bandwidth. We need it to stay up.

This startup doesn’t host anything, it’s p2p. I don’t think we even need their bandwidth, perhaps we do for setting up devices (which some people will classify as an invasion of privacy).

Anyways, it could be open source software (in fact, p2p technologies underneath are most likely MIT or apache licensed).

What are they going to do? Stop everyone by saying “now you have to pay!” ? It’s not like we would use their bandwidth or their storage… And if they did do it, most people would find a free or open source alternative. Once you let the bird out of the cage, there is no turning back.

Also, it doesn’t appear to be doing versioning. Something Dropbox does fairly well.

At this stage, it’s just pretty pixels - wrapped up around angel investments - thrown at buzzy keywords.


Dramatically improving Visual Studio 2010 build times

by Nicolas Noben

After a year of trying to seriously improve Visual Studio 2010 I can finally say I’ve hit a major breakthrough.

First off, a bit of background. Visual Studio 2010 is not particularly slow. It’s in fact pretty good compared to the previous versions. However, when you start adding the projects requirements to Visual Studio (DevExpress, Telerik and other components), you’re in for a slow ride to hell.

We’re not going to discuss how to partition your code in multiple projects or solutions here, nor are we going to discuss the magic in the settings. There is enough info on the web about those. This actually works a lot simpler.

The strategy here is to use a RAM Disk for your solution, prevent Windows Search indexing at specific spots and apply other minor tweaks.

On with the statistics:

The Solution I had to work with was a 14 projects WPF app, using different libs and a gezillion lines of codes.

The hardware is a Dell XPS 1645 with an Intel i7-820QM (1.73 GHZ) 8 GB of DDR3 SDRAM, 256 GB SSD (Samsung).

You would think that you can throw anything at it right? Well not really.

  • Full Build from the SSD Drive - 61 seconds
  • Same Build from the RAM Disk - 34 seconds

It halved the build time. Opening XAML files is also halved and searching through files (by filename or content) is also twice as fast.

61 seconds might not seem like a lot to start with. But if you’re a front-end developer, you’re basically changing, running, changing, running etc. You don’t get nearly as much goodies than when writing C# and you’re constantly testing resolutions, data bindings etc.

On with the technique:

  • We install this free RAM Disk software: Dataram Ramdisk
  • Set up a RAM Disk of about double your Solution size (I went for 1024MB)
  • Create a folder in the new RAM Disk and do a full SVN check-out (or git, …)
  • Work, Build and Run from there.

If you commit often you should have no worries. Dataram Ramdisk has a nice option that saves the content of the RAM Disk back to the drive at shutdown and reloads it at startup. I confirms this works really well. However this doesn’t cover you from loss of power. Because my laptop is always connected, I take out the battery. So as far as I’m concerned, it’s as good as a desktop machine if the power cuts out. That’s only happened once in a year time and it was a junior tester that pulled the plug…

There are a few articles out there that claim that in modern computers, RAM Disk have no effect. They claim Windows’ Prefetch and Superfetch automatically will put in RAM the goodies. It’s my personal experience that they’re wrong. Sure, this won’t help for small projects. But if you have a decent size project, most of the time VS2010 is gone in la la land doing I/O. The cpu fluctuates from 100% to nothing while the HDD is suffering. It’s also my personal experience that SSD is good, but RAM Disks just beats it hands down. Especially in my case, with DDR3 and a fairly well designed bus.

Other minor techniques used include removing indexing (search for “indexing options” in the Start Menu) for key folders. That shred another 3 seconds off the total build time. Also make sure you disable the indexing of the ram disk.

Finally, you can change your Windows’ TEMP directory to point to a folder on the RAM Disk. That again will remove strain on the HDD because during build time, VS2010 seems to hit the TEMP folder a lot.

To further improve you build time and general experience, make sure to run the “Resource Monitor” from Windows and tick the box next to devenv.exe sort by total I/O descending. Once you’re doing your work you will see exactly what your HDD is doing.

Finally, build time is just like commute time between home and work. The shorter the better. Nobody likes waiting in front a computer chugging away. By the time the app launches, you forgot what you were doing.

HTH.


Incrementing htmlText on a Spark TextArea in Flex 4

by Nicolas Noben

The property ‘htmlText’ is gone in spark TextArea. It was obviously making life too easy ;)

A work around is to use the spark.utils.TextFlowUtil and shove the html code in it. It formats it for TextArea to display.

This example goes a step further and shows how to add more to an existing TextArea with HTML in it.

// Required: spark.utils.TextFlowUtil
// output is a <s:TextArea />

output.textFlow = TextFlowUtil.importFromString(output.text + htmlSourceToAdd + "<br />");

Twitter pictures posted live (via twitpic)

by Nicolas Noben

“Shit people post on twitter” is a 10h experiment I wrote that uses the twitpic api and twitter api to pull all the photos that are posted on twitter LIVE.

It’s very entertaining and often NSFW, always fun. In fact I do sit in front of it for a while without really noticing time flying by.

Enjoy watching twitter photos posted live

photos people post on twitter twitpic live.jpg


Reduce CPU usage in Air applications

by Nicolas Noben

arno.org has a great article on how to reduce the CPU usage in your air apps. The meat of it is essentially not using ENTER_FRAME (duh), and more interestingly dropping the framerate to once every 10 seconds (0.1) once the air application goes in the background (minimized/hidden).

Read the full article at arno.org


The case for a great CAPTCHA idea: Rotate the image

by Nicolas Noben

Here is a great concept for a CAPTCHA.

The ROTCAPTCHA (PDF, 1.4MB).

It’s a CAPTCHA based on image orientation.

The ROTCAPTCHA system requires users to adjust randomly rotated images to their upright position. This is a task most people will be familiar with given the state of early digital cameras, etc.

This system has many advantages, such as being language independent and support many input sources.

Picture 1.png


yooouuutuuube

by Nicolas Noben

Brilliant. Why didn’t I think of that? yooouuutuuube.com


Google Tv ad platform

by Nicolas Noben

With the google TV Ad platform, learn how google makes use of the data it uses and how it’s all about the initial audience retained (%IAR).

Via the Google Blog.


Rolando 2 for iphone is looking slick

by Nicolas Noben

Via kotaku


JSWOOF - A faster JSON encoder decoder for Flex

by Nicolas Noben

JSWOOF is a pretty neat JSON parser. It’s lightweight and about a third faster than the corelib JSON encoder/decoder.


Database of snippets of code for AS3

by Nicolas Noben

Here is a great little site I stumbled upon today.

It’s called java2s and it’s basically example source code (snippets) of many languages, organized by topic.

Here is the Flex / Flash / Actionscript category.

Do you know other ones (categorized)? If so, let us know.

snippets-code-flex-as3-flash.jpg


Class to Open object(s) from file with Flex in Air

by Nicolas Noben

Before, I wrote about How to save one or more objects to file using this class.

Today it’s time to read it and bring back the object in Flex.

The class

package com.idletogether
{
	import flash.events.Event;
	import flash.filesystem.*;

	public class Opener
	{
		public static var file:File;

		public static function openFile() :void
		{
			file = new File();
			file.addEventListener(Event.SELECT, dirSelected);
			file.browseForOpen('');
		}

		public static function dirSelected(e:Event) :void
		{
			// this will be our object back
			var dat:Object = new Object();

			var fileStream:FileStream = new FileStream();
			fileStream.open(file, FileMode.READ);
			dat = fileStream.readObject();
			fileStream.close();

			some.object = dat.data;
			some.other.object = dat.structure;
		}

	}
}

How to use it

Simply…

import com.idletogether.Opener;
Opener.openFile();

This example is very basic, but it is kept simple for the sake of being easy to understand. From there you can build up a much more tailored system. This should get you started.

Use the Expressions panel of Flex and add a ‘watch’ to the variable ‘dat’ to see what came back in and if it is in good form.

HTH,
Cheers.


Class to Save object(s) to file with Flex in Air

by Nicolas Noben

The class

Feel free to use it for free or commercial projects.

package com.idletogether
{
	import flash.events.Event;
	import flash.filesystem.*;

	public class Saver
	{
		public static var file:File;

		public static function saveToFile() :void
		{
			// pick an unused extension
			file = new File("/filename.ext");
			file.addEventListener(Event.SELECT, dirSelected);
			file.browseForSave('');
		}

		public static function dirSelected(e:Event) :void
		{
			// this object will get saved to the file
			var dat:Object = new Object();

			dat.data = some.object;
			dat.structure = some.other.object;

			var fileStream:FileStream = new FileStream();
			fileStream.open(file, FileMode.WRITE);
			fileStream.writeObject(dat);
			fileStream.close();
		}
	}
}

How to use it

It’s a static method to be called so, simply…

import com.idletogether.Saver;
Saver.saveToFile();

This will prompt the user to pick a destination and will suggest the file name “filename.ext”.

Please note that you can’t save DisplayObjects straight to file using writeObject. It’s a limitation.

From here, find out how to get the object back into flex in the next post.

HTH,
Cheers.


Apply drop shadow to text at runtime with Flex in MXML

by Nicolas Noben

A quick and easy one but I always end up looking for it and not finding it easy.

<mx:DropShadowFilter id="dropShaText" distance="1" angle="45" blurX="0" blurY="0" alpha="1" color="0x111111" />
<mx:Label text="Hello world" filters="{[dropShaText]}" />

font-drop-shadow-flex.png


Twitter Search becomes the new Google for 0-day news & reviews

by Nicolas Noben

2755v2-max-150x150.pngTechcrunch has a very good article about Twitter and its new position on the market of search engines.

Essentially when a news breaks out or a product is being launched, Google will take several days to aggregate the information said about it, while Twitter Search can reveal nearly instant opinions.

The barriers is also lower as a Twitter account takes a lot less maintenance than a blog account. Writing a post on Twitter can be done while on the phone and virtually takes no time.

However, because it is instant feedback, it also implies that the ‘review’ of the news, product or subject in the tweet is obviously right off the bat, and might not be polished / thought about. People could change their opinion and post again in 10 mins.

Twitter, which I used to hate, is starting to take a very important place on the net and I’m mature enough to admit it and embrace it. That said, it is still a gezillion of idiots fantasizing about their life, writing about their pets or the latest battlestar.


Bespin - Web-based code editor from Mozilla

by Nicolas Noben

bespin-code-editor-online-web-2.0.pngMozilla Labs is working on a new project called Bespin. It’s a web-based code editor and it looks promising. It will eventually allow participants to collaborate on the same files straight from their browser.

The project is at a very early stage but it already looks solid.

It doesn’t do much at the moment but they’re confident that Bespin will eventually be highly extensible and easily accessible to users.

More info in this post and here.

Bespin screenshot mozilla.png


Digg Mob - Observing the mob live

by Nicolas Noben

Digg Mob talk live.pngThe Digg Mob experiment is a flash application that follows the comment as they are posted lived on Digg, regardless of the post.

It’s freaky to see that there are comments posted every 2-3 seconds, sometimes faster.

The app is beta but it’s browsable. Each comment is shown on one line and is clickable. From there you can read the blurb about the Digg post and/or visit the site straight from Digg Mob.

Digg mob comments live api.jpg


Flash / Flex / AIR Development Brisbane - Freelance Available…

by Nicolas Noben

senior-flash-flex-webapplication-ria-development-freelance-australia.pngJust a quick personal update. I’m in the process of going Freelance in Brisbane for Flash development and Flex development.If you need or know someone who needs a senior Flash/Flex/AIR developer with experience, please don’t hesitate to forward my details.I’m open for freelance and contract work, remotely or on location anywhere in Australia.I’ve been developing and designing websites and web applications since the late 90ies and I’ve been full-time Flash-ist for 6 years. I started as a Web Designer. With experience on both sides, I manage my time efficiently and take care of a project from specifications to deployment.CheersNicolas


Adobe launches the Adobe AIR™ Market Place

by Nicolas Noben

Today Adobe announced the launch of the Adobe Air Market Place. It’s a new website supposed to help the promotion of Adobe Air applications and to highlight them for sale.

It’s not an Apple app store, for sure, but it should help promote your Air applications out there.

Picture 5.jpg


Working through Screens

by Nicolas Noben

Working through Screens: 100 Ideas for Envisioning Powerful, Engaging, and Productive User Experiences in Knowledge Work.

It’s not the easiest read, but it has some great insight, and hey, can’t beat a free ebook.

Picture 4.jpg

Picture 3.jpg



« There is more!