4 software developer uses for Dropbox

1) Static website host

You can use your dropbox to host small websites. They’re great for showing of concept mockups in pure HTML/CSS, just put the files in your public folder and you’re done. If you do some JavaScript you can even get applications running, like aggregating Twitter. You can even use it to create a start-page for your browser [2].

There are some frameworks you can “install” to get even more power on your dropbox site, like Drop Pages and TiddlyWiki.

2) Synchronize applications

There are two ways to keep some of your apps synced. One is just putting the config-files, chatlogs, etc in Dropbox. 

You can even synch your game saves! Some even support it out of the box, like Broken Sword for the iPhone.

The other way is using packaged apps for USB sticks (PortableApps), and putting the whole app in Dropbox. Personally I keep a copy of FileZilla with my sites in case I need to access one of my FTP’s. Others keep password apps like KeePass. I’ve tried having a browser synced, but noticed that the tabs I have open on one computer (work) isn’t what I want to see on another (home). Notepad++ with custom settings works great too.

3) Source control repository

Quite simply you can put a repository in Dropbox, in a shared folder with your team. It’ll work like a hosted repository and you’ll get free redundancy. The downside is that it doesn’t handle simultaneous checkins very well as it’s synching between computers.

4) Wireless transfer files to mobile devices

The Dropbox iPhone app can send files to apps that are registered for the file extension. So any .epub will prompt to send it to iBooks, which I use a lot on my iPad. The same with PDF and other files. I’m not a big fan of iTunes and I’m an even lesser fan of cables, so just putting a file in Dropbox and opening it in my iDevice is perfect. Most publishers will give you several filetypes if you buy an ebook directly from them. O’Reilly have good deals that include ePub, Mobi, PDF, APK and Daisyj, which is great since Microsoft Press works with them. Here’s a good tutorial.

Some extra tips:

Eating your own dog food

I’m a big believer in using your own product. If you don’t want to use it, why would your customer? (Salespeople: don’t answer that)

Google Labs recently released a nifty little project called Page Speed Online. You enter the URL for your website and it gives you a “Page Speed Score” out of a 100. The best part though is it gives you specific tips on how to increase your score! The tips are categorized in three priorities (High, Medium and Low) and complemented with “rules without suggestions”.

So the obvious question is: What’s the Page Speed Score for various Google products? Let’s find out!

Google

Page Speed Score of 97 (out of 100).
Low priority: Make landing page redirects cacheable

GMail

Page Speed Score of 97 (out of 100).
Low priority: Leverage browser cachingMinify HTMLPut CSS in the document headRemove query strings from static resources

Page Speed Online *snicker*

Page Speed Score of 95 (out of 100).
Low priority: Leverage browser cachingMinify HTMLSpecify a Vary: Accept-Encoding header

Picasa

Page Speed Score of 89 (out of 100).
Low priority: Optimize imagesMinify HTMLSpecify a character set

YouTube

Page Speed Score of 88 (out of 100).
Medium priority: Leverage browser caching
Low priority: Specify a cache validator, Defer parsing of JavaScript, Minify HTML, Serve scaled images, Minify JavaScript

Chrome

Page Speed Score of 80 (out of 100).
Medium priority: Minimize redirects
Low priority: Leverage browser cachingInline Small CSSOptimize the order of styles and scriptsPrefer asynchronous resourcesOptimize imagesMinify HTMLMinify CSSSpecify a character setSpecify a Vary: Accept-Encoding header

Wasn’t that interesting? Picasa the image site gets tips on optimizing images, and Chrome which puts speed in the tagline gets the lowest speed score.

One of my hobby projects is done in Java on Google App Engine with Google Web Toolkit (GWT) and gets two tips on JavaScript (one being “Minifying the following JavaScript resources could reduce their size by 10.5KiB (100% reduction).”, which sounds really positive!). The funny bit being that I can’t affect how GWT creates the JS… I’ll post when I finish the project and follow the tips.

What are your scores? Are you better than Google at their own game? Did you get any useful tips for your site?

[Updated 2011-05-16: Fixed some links and added YouTube]

Creating the rules for static code analysis of HTML and CSS

One of my ideas is checking the markup and style code to find potential render bugs in various browsers. But creating all the rules needed is a huge task.

The approach I’ve chosen is based on using humans to detect errors. The reason being that it’s most likely cheaper, and an automated system that analyzes browser screenshots feels like a pipe dream. By permutating partitions of different HTML tags and CSS styles a tester is shown the HTML/CSS on the left side, the rendered result on the right side, and a simple question: Does it look correct? Yes or No. Some knowledge of webdesign is needed, of course. The answer is stored with the permutation and browser information as a rule.

Rules can be weighted and various machine learning techniques could be used to “train” the system. But I won’t go into that today. Instead I’m proposing two ways of amassing this huge number of inputs that’s required:
1) Crowdsourcing. Let the testsite be public and generate needed tests based on the browser the visitor is using.
2) Outsourcing. Uses the same system but in a controlled environment that guarantees that all browsers are tested. Needs funding though.

The biggest hurdle is getting up to speed with current browsers, then a continous work to keep the rules updated for new browsers and versions.

Another way would be to have trained professionals, or just an active online community that write the rules directly from memory. But I don’t think that’s practical or even feasible in reality.

Projects

Once in a while I get an idea for a project. It can be a really small micro-project (a weekend), a bigger byte-project (a month) or a very much bigger mega-project (a year). Either way I love to talk about them with my friends to get some feedback. I’m not afraid that someone will steal my idea, but I get frustrated if I find my idea on the net. So why not just write them here for all to see? If you steal it, well send me a link to it (and burn in hell 😉 ). Otherwise, give me some comments on it and help me make it better!