ideasTag Archive -

Ten Things I’ve Learned in a Start-Up

Ten things I’ve learned as a developer at WooMe:

  1. Be clear what your direction is. Identify your key proposition and focus on it. Don’t get distracted by unrelated features — somebody else is probably already doing those better than you.
  2. Be merciless with features that don’t cut it. No matter how much you like it, if your audience doesn’t like it, either change it or kill it fast. Wasting time on your personal pet project when there’s no clear demand for it is time you should be spending on features users want.
  3. Use what’s already there rather than inventing your own. Need a message queue? Video processing? Load balancer? Email distribution? Payment system? Use something that already exists rather than waste time you should be spending on feature development.
  4. Quick and dirty is better than late to market. At the rate this industry moves, capturing your audience’s attention first is more important than having a well-engineered solution. For the most part, users don’t care about your code quality, as long as it works.
  5. Don’t optimise until you need to. Sure, you may end up chasing your tail for a bit when you need to scale, but until you hit that point you’re wasting valuable time that should be spent on feature development.
  6. Scaling is most often a data problem. When you do need to optimise, scaling won’t be about the performance of your application. Scaling web applications horizontally is easy. Scaling databases vertically is expensive. Scaling databases horizontally is very, very hard. Don’t worry about what web application framework you use, worry about what database you put behind it.
  7. Abstraction is great, as long as you understand what you’re abstracting. This has been a constant pain with Django’s ORM. Yes, it’s a powerful and useful abstraction, but without a solid understanding of what the database is doing behind it, it’s easy to get into very deep trouble, very quickly.
  8. Log everything. Nothing is harder than trying to find problems on a live environment without detailed logging.
  9. Storage is cheap. It’s better to store everything than to throw away data. You never know when you might need something.
  10. Communication is critical. Not just outside your organisation, but within it. Tell people what you’re doing, frequently. Ask them what they’re doing just as often. Not only do ideas percolate through this process much more effectively, but when things go wrong, clear and frequent communication will stop them from getting worse.

Tactile Computing

Every now and then someone at TED presents a technology or an idea that’s so utterly amazing, or ridiculously simple that it can’t help but change the world. David Merrill shows off an MIT project called Siftables in this talk, and even though I’ve been messing around with computing for 25 years my jaw is still dragging along the floor. Check it out.

Thinking About Genius

Elizabeth Gilbert wrote the 2006 best seller Eat, Pray, Love, and in this year’s TED talks gave a fantastic talk on the nature of creative genius. In a room full of scientists, this talk on being possessed by a creative muse, a spirit of genius, raised a standing ovation. This utterly enthralling talk is an interesting perspective on creativity.

If you only have 20 minutes to save the world…

Don’t save the world, just learn to listen. Starting with John Francis, who didn’t use any form of motorised transport for 30 years, and didn’t speak for 17 of them.

Seam Carving for Content-Aware Image Resizing

YouTube Preview Image

This video presentation from Siggraph 2007 has been popping up all over the internets the last couple of days, and the implications are truly astonishing. Algorithmically this is a remarkably simple technique, and easily implemented in real-time. It should be pretty straight-forward to write an implementation in ActionScript 3 (for Flash 9) or in IronPython (for Silverlight) and have this apply to images in webpages with a minimum of effort.

More exciting than simply just resizing images is that the weighting and treatment that can be applied manually to specific regions of an image. It’s easy to imagine a myriad of gaming opportunities that arise if you can hide data selectively in images across the web through this technique.

Dr. Shamir’s other research work is pretty interesting as well, covering as he does:

  • Mesh Partitioning
  • Skeleton Based Representations
  • Multi-Resolution Models
  • Object Feature-Space Analysis
  • Digital Typography
  • Visual Succinct Representation of Information

Game Ideas: Duality

Basic premise:

Players in a persistent virtual world inhabit two states — two parallel lives.

When not active in the world, players take on the role of NPCs, their bodies under the control of basic AI routines that go about daily life in any of the towns and villages that scatter the world. The fulfil the roles of members of a community — undertaking production, vending, civic duties that players would for the most part find unsatisfying.

When a player becomes active in the world their character undergoes a transformation from their mundane life into an agent for change in the world. It’s the player’s choice what form this agency takes — they could choose to fulfil their role in a society actively undertaking tasks that the game’s AI would otherwise perform — or they can act out an alternative role beyond the boundaries of normal life and follow the course of hero’s journey that the game allows for.

Page 2 of 2«12