Effort focus for page load time optimisation

Should I optimise my site? The short answer is an obvious yes. The more detailed answer is that it is not always worth the time to do it and you need to identify areas that make the most sense.

TLDR readers:

  • Latency and ping times are important for global reach. 50 requests could be a problem with a high ping or latency time.
  • Making sprite sheets is not worth it if you have only 5 non-critical sprite graphics
  • concatenating JS and CSS into single files with zip compression is worthwhile. Lazy loading assets/CSS/JS can be really complicated.
  • The Grunt task runner (NodeJS tool) is good great FANTASTIC! Check out my grunt config post for more details.

I recently updated an e-commerce website for a client (earlybirds.com.au). Earlybirds is a long standing client of mine since 2009. I inherited it as a flash based website with no SEO. I then upgraded it to use the GAIA flash framework and added SEO support. Later we made the full switch to an AJAX based site with simple content transitions to try and keep the rich and unique feel of Earlybirds. It has been a long journey with solid improvements. The latest achievement has been optimisation and page loading. It has not been easy to optimise given the flash legacy style of rich content and graphics. Images simply can’t be compressed more than they are and account for more than 60% of the initial page load size. Below are the steps I took and considered in optimising the website for a faster load.

1. Reduce requests

The more requests you have, the greater that ping times and latency issues will affect the end user. This is particularly true for users far from the server or on (typically slow and weak) mobile connections. Modern browsers also only download a maximum of 6 files concurrently. Also consider that each request/asset obviously has to be handled and probably rendered which then increases rendering time for the browser or device.

Reducing the requests affects a large audience but it is not always so important. German users accessing a website hosted in Germany would hardly be affected given their high tech infrastructure and small connection distances to the servers. In this case the mobile audience is more important to consider. For Earlybirds, we have seen a large uptake of mobile access which we presume comes from new mothers in hospitals. We also have New Zealand users accessing the server in Canberra (Australia) which warrants some concern.

In short:

  • consider mobile usage and connection speeds of your audience
  • consider global reach and distance to your web server

2. Merge and compress resources

Optimising images for the web is one thing but it only goes so far. For Earlybirds we use SASS for CSS management compiled by Compass triggered by our Grunt task runner. We also use Grunt to lint, concatenate and minify our JS. Further, we output gzipped versions for those clients that can receive them. Our output is then something like: earlybirds.min.js, earlybirds.min.js.gz, earlybirds.css and earlybirds.css.gz. We use Apache to detect the compression headers sent by the browser and send either the .gz (compressed) version or the uncompressed but minified version if the header is not sent.

In short:

  • output single CSS and JS files that are minified (as small as can be)
  • output compressed versions of the minified files for browsers accepting compression (nearly all these days)
  • HTML should be zipped or use DEFLATE on the fly (mod_deflate for Apache users)

2.1 A bit on image sprites

It’s a growing trend to try and avoid using icon graphics these days. Font solutions are much more flexible and can be easier to manage than image sprites. Font Awesome is one such font that includes vector based “font icons”. CSS has also improved dramatically allowing for easier drop shadow effects and has reduced the need for specialised graphics. SVG could also become the next big thing once <=IE8 is no longer of interest. Earlybirds has about 5 sprite graphics (within our control) which could be merged into one sprite sheet but this would be a small win. For those interested, Compass allows for easy compilation of multiple sprites into a single sprite sheet with supporting CSS to make life easier.

In short:

  • avoid sprites unless absolutely necessary and use font icon solutions (consider making your own font if need be)
  • if using sprites then use Compass to generate an easy to use sprite sheet

3. Use a CDN

We use jQuery hosted on a google CDN. If for whatever reason google goes down (think end of the world) then we default to our local copy. This is also handy for local development offline (when travelling without always having internet access).

4. Ensure styles and scripts are loaded in the correct order

CSS can only be loaded in the header except in very unique lazy loading scenarios. Javascript should be loaded before the closing body tag except where certain scenarios are relevant. If for instance a CDN is used to fetch jQuery (which may already be cached by the end user anyway) and your whole app or website relies on jQuery before the user can see anything then loading it in the head tag probably makes sense. Visual components and popups that are never loaded instantly like modal popup displays can be loaded after the user can begins interacting with the site via a technique called lazy loading. This style of lazy loading can however be too time consuming to manage and get right. Lazy loading JS, CSS or even HTML needs to be considered for more speed critical scenarios or when large complex apps are in use.

In short:

  • CSS in the head tag
  • jQuery and similar core components in the head tag (often needed before anything else will work given strong dependencies)
  • Remaining JS before the closing body tag (should be 1 single JS file)
  • lazy load ONLY if you really need to and know what you are doing. TIP: RequireJS

5. Queue Image slideshows

We were loading all 7 images in a slide show at once. This is not necessary. We removed the use of the src attribute from the embedded image tags in favour of data-src which should also be SEO friendly. We then preloaded each slider image on demand or rather 1 image earlier than required so that the fade transition effect still looked seamless. This is also true for any other kind of teaser element and affects the mobile experience the most.

Note that the (soon to come) ‘picture’ element and similar shims may one day be viable to support multiple image resolutions but it will be a long time before they support bandwidth requirements.

What did I leave out?

I haven’t gone into detail about mobile usage. There are many tricks one can use to speed up page load time. Below are a few starting points:

  • use the client side application cache (can be tricky)
  • consider “offline first” practices for caching assets
  • use multiple domains or CDNs where possible (increase number of simultaneous resource downloads)
  • become a caching pro and PROPERLY understand cache busting
  • turn tiny graphics into binary and include in CSS/HTML to reduce requests
  • load on demand (think twitter or Facebook feeds as you scroll down the page)
  • High DPI graphics (high resolution or retina ready) have no good solution. Wait for the picture tag or use a shim to get support sooner. Consider not sending mobile devices HDPI graphics even if they support them.

Further resources

WebPageTest.org is an incredible tool to analyse ever part of the page loading process. There are even algorithms that they have invented (open source) to create the most useful speed analysis stats around (the speed index). They even allow testing in different browsers from different test sites around the world = Totally wicked stuff!

Grunt – the weapon of choice for killer development

grunt-logo

If you’re in the know then you’ve probably already heard about the Node task runner Grunt. If you are like me and didn’t have time to try it out then FIND THE TIME! Grunt has improved my workflow, enforced higher code quality and saved me time!

The shorts:

  • can run in the background (watch)
  • is very fast (compiles my SASS/CSS, lint and compress my JS in < 1.5 seconds)
  • works with everything through plugins (I love online communities!)
  • easy to configure… once you understand it a bit

I wouldn’t be writing a blog post if I didn’t think I had something to contribute. The catch with grunt is that there is a small learning curve and it can take a while to find the right kind of compilation combination that you want.

Getting started

I owe my grunt learning to these 2 resources:

They are good and easy reads and will get you on the right track. I will try and cover the bits they were missing below.

The Gruntfile.js config

My workflow may be similar or useful for you so I’ll simply share my process.

  • I run “grunt” (which runs “grunt watch“) to kick things off for development.
    It then starts off “grunt dev” which includes “grunt devCSS” and “grunt devJS” which overwrites any old files I may have had.
  • Every time I save a file the above JS and CSS dev based tasks are fired.

The devJS task:

  • JsHint files (more friendly than JsLint)
    This stops the grunt task if the linter reports an issue (which is wonderful!)
  • concatenates files (in a set order)
  • and outputs a compressed version

I end up with the following files in js-build/ site.js, site.min.js, site.min.js.gz. The gzipped version is sent if the appropriate “accept compression” browser header is sent. If not then the site.min.js version is sent.

The devCSS task:

  • calls compass with various options to run SASS and output CSS files (with comments in dev mode)
  • compresses output files

I end up with build-site.css and build-site.css.gz. As with JS, the appropriate file is sent on demand.

I have a single CSS file included in my head tag and a single JS file included before my closing body tag. Various lazy loading optimisations can be included but it wasn’t needed for this particular workflow.

To consolidate what you’re read above, here is the actual Gruntfile.
Note that I am using the files array syntax because it allows for multiple sets of files to be processed through the same task. For simplicity I have removed the additional JS builds.

Production usage

I run “grunt prod” which runs “grunt prodJS” and surprisingly “grunt prodCSS“. The only difference is that the JS is also “uglified” before being compressed and the compass/SASS options are without comments and compiled to a compressed format (no white space etc.). This is lighting fast for me considering a good sized JS and CSS collection.

Take note!

If you want to improve this workflow then one could simply skip the compression task for files in the “grunt dev” process and make sure the .gz files are removed to force the non-compressed version (the fallback) to be sent by Apache. Compression is generally the part that takes the longest so it may be worthwhile for bigger projects. I didn’t bother because everything runs so fast anyway and it makes for one less difference between production and development setups. I also would have to add another task (node dependency) for deleting the gz files.

There are some limitations with various tools at the time of writing this post which are yet to be patched in official releases. You may run into problems of ‘globbing’ for the input source files and exporting files with the correct name and suffix due to the underlying file system wrappers (node-globule) used in grunt.

Mavericks OS 10.9 – to hell and back

blog-mavericks-fail

Mavericks is quirky!

I upgrade to Mavericks (OS 10.9.0) from Snow Leopard (10.6.8) and I had a really ugly shock. The upgrade left my work setup paralysed and unusable.. at least for a while. For those of you with not much time and not much RAM, increase your RAM to 8GB and double check what apps you might have that are not compatible (not Intel architecture).

Here’s a summary to help others through the tough times.

Disclosure: Why I did it?

I found that more and more apps needed 10.7+ to work. My last straw was wanting to use intel XDK to build web and iPhone apps. It was also a nice thought to go from 10.6.8 to 10.9 and jump up 3 versions. I was also hoping for better photo-stream support in iPhoto but I found out that iPhoto is a paid upgrade for users with iLife 09 installed. Like most others out there, I had held out a bit longer due to the initial issues with 10.7 and the major shift in the user interface.

Summary of bugs after upgrade

  • Mail failed to update message database. Worked the second time.
  • An account (via OS X “Internet Accounts”) failed to add the first time. Worked the second time.
  • Google Chrome was incredibly slow (many issues logged on this, Safari was much faster).
  • IPv6 issue. App store app didn’t load properly. I’ve seen this on my iPhone when I changed internet provider. The solution is to set DNS to another source like a public 8.8.8.8 provider.

Usability issues

  •  LaunchPad is useless. Way too many apps to clean up and arrange. See starting from scratch solutions**
  • “All my files” view took too long to load. Disabled it.
  • Many apps were marked incompatible. Downloading new ones from the developer websites could not be opened because of Mac OS X security restrictions (Gatekeeper). Disabled it (“Open any app” in security prefs).
  • ALSO, the mavericks installed did warn me of 2 incompatible apps but not the 20 it turned out to be (most minor). Perhaps because I organise my Applications folder and they were in sub folders.
  • Alias’ are now ridiculously big! Can be the same size or even bigger than the original file. Installed a services plugin to “make symbolic link” instead.

Preparation

I have a backup checklist that I follow each time I backup. I’ve taken extra care to use more cloud services where possible so that I don’t have to care about things like: contacts, calendars, email & notes. I used dropbox for some quick backups of config related files. I used an external HD for dragging large folders across (esp. iPhoto and iTunes libraries). I spent about 2 hours to prepare and manage the backup. If you’re not a backup pro then budget 4 hours.

Downloading 10.9 didn’t take too long (given the size) and just ran in the background via the App Store app.

My Specs

  • MacBookPro5,3 (MB985) :
    15 Inch MacBookPro mid 2009 (2.66 GHz Intel Core 2 Duo)
  • 10.6.8
  • 4 GB RAM 1067 MHz DDR3 (upgradable to 8GB RAM)
  • 320 GB HD (but I only had 20GB available for the install which worked)

Upgrading

This was a 2 hour job. The time remaining counter lied as usual. “39 mins” was 2 hours. There was some pre and post time as well. There is an optimisation process that can take some time but it’s survivable. The worst is the spotlight re-indexing time. This took almost 8 hours. I left the computer on overnight to do this. The computer was basically unusable in this time.

Points of Pain

Initially I had suspected that there is an issue with 10.9 being memory performant and that I needed to upgrade to at least 8GB RAM. I struggled to run the OS, Chrome (15 tabs) and Mail (1 account) at the same time. Safari was WAY out-performing Chrome in efficiency at this point. I had to consider leaving all the things I love about Chrome behind in exchange for using Safari.

Cleanup notes

This was rather frustrating but long overdue. I had apps from at least 10 years ago still installed. Here’s what I did to reclaim space and therefore improve basic computer performance:

  • empty iPhoto trash
  • group all apps into a “sort out” folder that needed either updating, deleting or somehow replacing (note that some apps don’t like being moved around and may not open if not directly in Applications/)
  • install Disk Inventory X and GrandPerspective to examine hard drive space usage (basically resulted in deleting lots of movies that were not organised)
  • Install the free App cleaner app
  • Install the free Monolingual app (to get more HD space by removing unwanted languages)
  • Install the free Memory Clean (great tool to regain memory that is unnecessarily tied up)
  • Cleanup downloads and desktop folders
    Interestingly, the more icons you have on your desktop, the more RAM they will take up and slow down the initial startup.

A Happy Ending

I am now a happy Mavericks user after surviving the worst OS X upgrade experience I have ever had (I’ve been through 20? since 1994). I installed 8GB RAM, cleared out my HD to have at least 40 GB free and deleted lots of old apps that were either not needed anymore (Adobe Flash CS4 etc.) or were already incompatible. I was able to find updates for all my apps that I still wanted to keep to make them usable again.

After a bit of playing and configuring, all my accounts (mail, icloud, gmail, twitter, facebook…) are nicely setup and working well. Chrome has updated a few times and is fast again.

It was a big update and forced a RAM upgrade (for < 100 EUR or 150 AUD) which was quite easy to install my self. Just needed the right screwdriver, and about 15 mins to clean the piles of dust out of my laptop and install the RAM. It also forced me to clean up what’s on my laptop (to get more space back) and perform a backup. All good things.

Further Resources:

For the uninitiated:

Planning and vision are not redundant


Image from Ryanne Bradshaw
Creative Commons License

 

Foreword:

I’ve seen 2 attitudes towards planning. Plan before you start, follow the plan and continually update it. OR, plan a little before you start, start doing real business and adapt on the fly as things change. The argument is that plans are theoretical and a good start but often something to archive and ignore later on as you need to do more business/work and less planning when things are up and running. My perspective is that both schools of thought are relevant but that most startups lose direction and therefore focus without an attractive, loveable plan and vision.

As a freelancer, I often come into a project after the planning is done and the direction is set. I am therefore often exposed to the absence of planning and lack of direction or vision that a business requires. It occurs to me that very few actually know what is important in a business plan, why it’s important (lack of motivation) and actually follow through with a strategy rather than just reacting as things happen.

When I start work on a new project my first thoughts are on:

  • Audience (and user competency)
  • How do they sell (word of mouth, google organic search etc.)
  • Who has a say, who’s really in charge and do they know about web development
  • Do they use SCRUM or Agile development methodologies (love transparency? do they empower the team?)

Note that their technology and product is of little interest. I want to know how they are running a business and what makes them tick. I want to see why they are passionate about what they’re doing and how they involve everyone in their vision.

Warning signs for lack of planning

Most of the above points never come into conversation unless I prod. The company already has A and it wants B and you are the tool to get them there. Questions about their motives and rationale are not to be asked. It is ‘decreed’ by the overlord (director) that these things need doing. This mindset often fails. Other directors I’ve worked with say: “We have A and want to get towards B and C so that in 6 months time D will be in reach if B or C pay off”. This kind of forward thinking and planning are the necessary groundwork for success. There is direction and there is vision. There is a plan to get past B and to assess if D is viable once B and C are done. This might sound like simple common sense planning but it in my experience that forward planning gets itself killed once the stressful powers that be kick in. The point where those controlling the money flow start kicking around instead of using their head is usually fairly obvious.

One of the biggest warning signs for me when assessing a project is whether or not the team is exposed to the vision. I don’t mean to get rich or sell 1000 products. I mean “what is the point”? With Vidza I wanted to solve a problem that pissed me off. I wanted to help people decide on a good movie to watch. That was and still remains the vision of vidza. Vidza isn’t a massively popular tool, but I am happy with the outcome. Three years after development and it still performs well and solves my problems. Sometimes it even helps others decide what movies to watch.

WARNING: A mission statement is not a vision. A vision is what you want to be. A mission statement is what you are striving to achieve. Mission statements usually sound very wanky in my honest opinion. They are long, boring and forgetful statements that sound like they’ve been written by a tax accountant. No one can remember a mission statement but everyone can believe in a vision.

 

Mission and vision statement examples

“Your mission is what you do best every day, and your vision is what the future looks like because you do that mission so exceedingly well.”

– Rosa Say on What’s the difference between Mission and Vision?

Here are some I came up with for myself as DynamicDan.

M: Provide technical solutions to the common business owner and therefore improve their profit potential.

V: Make all digital content easy to use and fast, one client at a time.

V: Be in demand for new projects and be loved by those needing support.

V: Love what my clients are doing so that I can love what I’m doing for them.

M: Provide the human side that other web developers and programmers can’t in order to have a higher quality end product and user satisfaction.

M:  Become a key player in providing enterprise level human solutions to technical computer or web problems.

Others I’ve found:

M: Microsoft: “A computer on every desk and in every home, all running Microsoft software.”
(Note that they don’t mention why which should be understood from their vision)

M: Amazon Kindle: “Every book ever printed, in any language, all available in less than 60 seconds.”

How to get back on track

It’s not easy for a business or its team members to find the time to rethink through everything. I also don’t believe that everything needs to change in order to improve planning. The first thing to do is to simply take your nose out of the machine and start talking to your end users and the potential customers. Talk to real people and check that you are going to be able to offer them something they will love to use and will benefit their well being.

Find a vision

Ask yourself if what you’re striving towards actually makes sense. What would make it all worth while? What can one be proud of? What do other colleagues hope to achieve by working with you? How would you explain the ultimate goal of the business to a stranger in a completely different industry? Make sure you have something really simple and straight forward. Avoid buzz words and acronyms. Don’t talk about market share. It has to be something you and anyone else involved can believe in!

Key Performance Indicators (KPIs)

There are plenty of ways you can check the health of your business or venture right now. Most are probably ‘maybe stats’. Assumptions and statistics that could mean something. I’m thinking about visitor traffic statistics for example. If visitors are high does that mean we’re doing well? If time on site increases are we more attractive? There are heaps of maybe stats in business and it’s very easy to make assumptions on them. Here’s some examples of more solid stats that you might be of use:

  • Increase in affiliate and referral traffic time on site
    Note that this does not include direct or search engine based traffic because these types tend to confuse the overall data set (Eg 10 second visits from google searches). Traffic from affiliates is also usually your most valuable traffic
  • $$$ (products sold, etc. the obvious stuff)
    Note that it may save your business to sell products but knowing how many customers after a purchase recommend your product will make you successful.
  • Work to value ratio
    Are there areas of high risk and long development time? Most projects suffer from this problem because they don’t know how to progressively enhance their business and roll out smaller features over time. Content creation can be a risk when there are simply too many resources/time/people involved for a minor audience.
  • Happy colleagues
    Is everyone stressed out or are they feeling happy about the work they are doing? When you’re employees or co-workers are having short lunch breaks, staying late and looking a little zombiesh, your product or service will suffer. Surely they wouldn’t be this way if everything was working well right? Happy, stress free colleagues can think clearly and find better solutions to problems.

I hope that this post inspires you to think more about purpose and what the point of your business is. I believe understanding ones vision and having a plan on how to achieve that vision are the most important steps needed in motivating the team and providing end user satisfaction.

Some additional articles that inspired me can be found here:

Getting Real by 37 Signals – common sense, best practice for startups

8 Core Beliefs of Extraordinary Bosses

Rework by 37 Signals – the follow up to Getting Real.

 

Google Docs for the win

The Google Docs collection (word docs, spreadsheets, drawings..) is my favourite online set of web apps. I often work collaboratively with team members and associates using the online tools. The system is quicker to launch than a desktop app, uses a cleaner and easier interface and fulfils all of my collaboration needs.

Example: Writing a love letter using docs (hilarious!)

What I get from Google Docs over any other similar tool:

  1. Encourages project transparency using flexible user roles and share settings
  2. Easy to see differences between revisions and changes per user (brings massive trust in sharing a document with everyone)
  3. Real-time collaboration… it really feels like you’re building something together and in a rapid yet fun manner. (sometimes even competitively)
  4. Fast! I can start a new doc or spreadsheet and it’s saved automatically. No waiting for the app to load or choosing where to save stuff.. just TYPE.
  5. Resolves confusing issues quickly. I can go from a text based Skype chat to a privately shared drawing in < 5 seconds. Suddenly ideas make sense a whole lot quicker!
  6. Die emails, DIE! No more back and forward long email dialogs with mixed edited versions from various contributors. One up to date google doc solves that problem and kisses that massive email thread goodbye.
  7. Importing and exporting to any format is simple and actually works! I know I can go from anywhere to anywhere with Google Docs.
  8. Offline access is possible with Chrome and the offline option enabled. When you come back online, syncing works like it should.
  9. The web app is always up-to-date meaning new spreadsheet formulas are available and new features are available faster than traditional desktop based apps.
  10. Did I mention the interface? Working without frustration from computers can actually be free?
  11. Bug-less. I have so much more trust in Google Docs than I do with Micro$oft products.

Additionally, Google understand the user. Scenario: a few paragraphs of text need revising and approval from the team. One google doc can be shared and the changes edited in real time. Any questions or unsure changes can be made as comments that appear separately next to the content in question. Comments can then be replied to and resolved. The comment systems means that the original document has not been corrupted. Email simply can’t do this. I commonly see agendas being sent around asking for input. The scenario described above would greatly reduce manual merge issues and save time.

 

The DynamicDan SCRUM system

I’ve decided to use SCRUM with all my clients and projects so I created a system that met my needs. This system has been built from a ‘what I need now’ basis of development and is working quite nicely at the moment with various clients. Why do I use SCRUM?

  • Story navigation and quick overview of tasks (tasks not started/in progress/complete)
  • Ability to toggle viewing of tasks and story details for readability.
  • Clicking a story automatically jumps to the story on the page and reveals the tasks

Stories Overview

  • Every story has a title, ‘user story’ based description, test case for completing the story, complexity rating, related notes and references to the story that may be useful.
  • Tasks are split into: not started, in progress and finished.

Story Tasks

  • Story details are hidden by default leaving just the story title and user story description.

Story List

  • Tasks can have a: descriptive title, important note or dependency (in red), priority and further details that should be taken into account.
  • Using the note/dependency field makes it easy to see what should be resolved within a story before starting it.

For more details on the online SCRUM system I have developed or how clients are involved in the SCRUM process, please contact DynamicDan.

 

 

Why Scrum

S.C.R.U.M = Something inCredibly Reliable and of the Utmost iMportance…

(okay, I made that one up… but it has the same meaning!)

After being introduced to the SCRUM development methodologies at RMIT (Melbourne) and being extensively trained in the process at Publicis (Munich), I decided to implement SCRUM into my work flow with clients. I then built my own SCRUM management system into my existing CTS (Client Time System) with future plans to sell it as a stand alone app.

Quite simply, SCRUM has a…

  • strong focus on transparency on all levels
  • stories organised STRICTLY by business priority that specify the exact benefit and to whom
  • clearly defined dependancies which are resolved PRIOR to starting any project
  • responsibility clearly defined and achknowledged by all involved
  • solid understanding of what DONE means along with validity tests

After all the task management systems and processes I have used so far, I believe that SCRUM is the best approach to take for any project, whether large or small.

For more details on the online SCRUM system I have developed or how clients are involved in the SCRUM process, please contact DynamicDan.

Why Google Added the search option

We all use google right? Or at least we all search for something on the net, so why not provide the same option to your customers or website visitors?

If you haven’t already got a search working on your website for your internal pages/content, get one! If you have, then you should make sure you can see all the previous user searches. A well setup search tool should have tracking implemented and sync in with Google Analytics events tracking for easy monitoring.

DynamicDan added a simple yet nice AJAX search option on earlybirds.com.au with tracking through G.A. The net gain is well worth any time/cost in setting it up. Within 1 week there were over 100 searches made on their site from 4 different countries. Earlybirds can now see what their customers really want and make sure that future searches always return useful results.

In todays competitive market place, helping users find what they want quickly and easily will put you ahead of the rest. When consumer trends or desires change you’ll be ready for them!

Contact DynamicDan for help setting up your search system.

Filez – Branded simple FTP for clients of clients

The problem:

Your clients send you multiple design files, documents, videos, and porn…
They send it via CD, email or some custom 3rd party server with complex file restrictions and size limits etc.

The solution:

Create a simple web application with user logons to browse files and avoid loosing emails, CDs and filling up your file server.

Filez is a Flex application that can easily be branded to look like your own app. Clients can login and upload to their shared folder upon which the Filez owner receives a notification email. Files can be downloaded and uploaded whenever required while not worrying about your email account being full or dying because some mad hatter client sent you a 70Mb attachment.

Additionally, the file server can be run on a private internal server so that the only time spent is uploading the file, and not in the download by the Filez/server owner.

For more details on the Filez system I have developed including screen shots and a demo, please contact DynamicDan.

Why dropbox rocks!

Email has become the virtual dumping ground for everything. People are expected to accept anything via email, not lose track of emails, accurately sort and maintain a clean and authentic reply thread on every discussion. Problems arise when you receive or send the same file from or to multiple people who make their individual changes (and often on outdated versions!).

Version control doesn’t work in emails!

Dropbox has become the best replacement for email attachments and other outdated file syncing systems.

Why Dropbox could work well for you:

  • easy to share files without any login required for the viewer
  • easy to have a shared folder so that new files are automatically seen on the viewers’ computers
  • works seamlessly with the OS, no additional FTP app needed
  • mobile app for on the go access
  • it’s fast and reliable along with file history management and an optional yet excellent web interface

One of the unexpected benefits is that clients can see exactly what files are being worked on in their projects and when. This helps greatly with providing transparency over a project (more so when growl alerts are enabled). BTW, dropbox is highly secure for confidential files – in some cases more secure than many high-end email systems.

EDIT: top 10 uses for dropbox (with some extra-ordinary uses!)