Menu

An introduction to technical debt

Maiz Lulkin has a great overview of one of the most important and most misunderstood issues in software development in his post Technical debt 101:

In software development, the dreadful consequences of sacrificing quality are widely misunderstood by non technical managers. They underestimate how detrimental it is to continued productivity and morale, and ultimately, to the overall strategy of the company.

He goes on to explain why…

An excrutiating month with the Motorola Razr

Ashley Feinberg in Razr Burn — My Month With 2004’s Most Exciting Phone:

It may be hard to remember now—or to believe at all, if you’re under 20—but at the time of its release the Razr was the final word in mobile technology. For the first time, you got a sleek, powerful, and wildly expensive bit of metal to call not only your cellphone but your status symbol, too. A couple of years and a few slashes into the $700 price tag later, you could barely go outside without seeing someone flip open a Razr. In four years, Motorola sold 130 million of them, a record that wouldn’t be touched until well into the iPhone’s run.

This sounds like a terribly painful experience. Like she accurately points out in the beginning: don’t try this at home…

The future of car ownership

I’m not sure if I should really link to Kids Don’t Care About Cars because there are very few things more annoying than old people pontificating about what “youngsters” like and don’t like. Still, this part did get me thinking:

The basic premise is you’ve got to go. How you get there is irrelevant. Furthermore, the costs of car ownership… the insurance and the gas, never mind the maintenance, none of them appeal to a youngster who believes all costs should be baked in.

I’m not convinced the conclusion that car ownership is a thing of the past is accurate1, even though this is not the first time the argument has been made — see Zipcar, Uber And The Beginning Of Trouble For The Auto Industry. But as an old guy myself, I do see the product opportunities that are created by this idea that how you get places is irrelevant as long as you can get there.

One of my favorite examples of companies taking advantage of this right now is car2go. It’s a network of smart cars that you can pick up anywhere, drive anywhere, and leave anywhere when you’re done. And it’s all done through a smartphone app (or the web — if you’re old and lame of course). No matter how much I think about this, I can’t get over how magical this idea is. What a great way to fill an unmet user need.


  1. Try not having a car when you have kids… 

[Sponsor] Photo Book Flip for iPad

A big thanks to Photo Book Flip for sponsoring Elezea this week!

Six months ago I was reading Kinfolk, a culture and lifestyle magazine with lots of beautiful photos. Flipping through it was a really delightful experience. Then it came to me, what if I could flip through my own photos as if they were a beautiful photo magazine, say on my iPad? And even better, what if I didn’t have to organize and layout the photos?

And that was the beginning of Photo Book Flip. After five months of design and development, the app has finally come to life.

Photo Book Flip instantly turns the photos on your iPad into a beautiful digital photo book with a single tap. Inspired by photo-centric magazines like Kinfolk and beautiful cookbooks like Mast Brothers Chocolate and Blue Bottle Craft of Coffee, the page layout features a minimalist design to spotlight your moments. And just like the iBooks app, as you flip each page, you’ll also see what’s behind the page as if it was a real book.

We think Photo Book Flip lets you experience your photos in a delightful and different way. Like what physical photo albums do, we created this app to celebrate the wonderful memories and moments in everyone’s life.

Find it on the App Store at a limited-time introductory price of $0.99 and learn more on our website. We think you’re going to like it. Please check it out, and let us know how we can make it better.

Photo Book Flip

Sponsored via Syndicate Ads

Data and design

Cennydd Bowles writes about data-led design vs. idea-led design in Ideas and/or data:

Product design that’s driven entirely by data is horrible. It leads us down a familiar path: the 41 shades of blue, the death by 1000 cuts, the button whose only purpose is to make a metric arc upward. It’s soul-destroying for a designer. But its moderate counterpart, data-informed product design, is fine. It reduces risk, and encourages confidence and accountability.

Product design driven entirely by ideas is equally painful. The romantic notion of design genius and the Big Idea soon gets swamped by a culture of risk, favouritism, and blame. Idea-informed product design is fine. It provides agility, creativity, the power to see blindspots and seize opportunities.

Braden Kowitz makes a similar call for a middle-of-the-road approach in Should Tech Designers Go With Their Guts — Or the Data? For an extremely practical view of using data in design, check out Joshua Porter’s excellent talk from SXSW 2011 called Metrics Driven Design. And while we’re at it, here are a couple more recent posts about using data in the design process:

Human curation vs. algorithmic recommendations

Conor Friedersdorf talks about the differences between recommendations provided by people and algorithms in Would You Rather Get Tips from an Expert or an Algorithm?

The Amazon.com algorithm is very good at using what you’ve just bought to recommend things that you’ll want to buy, [David Weinberger, a senior researcher at the Berkman Center for Internet and Society] observed, but it can be hard to tell why. Perhaps you’ll be attracted to the content of the recommendation — or perhaps it’s the fact that the cover is also green, or that the print is in Helvetica font. 

In contrast, a skilled librarian is usually going to recommend a book solely because of its intellectual value, without any lurking, contentless variables. The librarian is therefore likelier to send a person in a direction they wouldn’t otherwise have gone in a way that will advance their thinking, education, or aesthetic taste, because they’re not just meeting needs that have already been expressed.

We’re seeing this divide come out in products as well, and some are starting to use their “humanness” as a differentiator. Whereas most music recommendation systems like Pandora, Spotify, and Rdio use algorithmic approaches, Beats touts the power of human curation on their product.

Go Book Yourself is a Tumblr site that publishes curated recommendations for books you might like based on other books you read and liked. Their tag line is Book recommendations by humans, because algorithms are so 1984.

The humans are coming.

Release early and often?

Some truth from Joshua Porter in There is no later for your customers (my emphasis added):

There is no later for your customers. The only thing that matters is what they’re using right now. They don’t give a shit about your roadmap, your brilliant feature pipeline, or your vision of a better future. They’re trying to get work done right now and they only know what you’ve already delivered. So build a discipline around your launches, knowing that your ‘temporary, let’s get this out quickly and iterate later’ release is the current reality for your customers. Build up your attention to detail and force yourself to treat every launch like it is your final launch. Imagine that you’ll never be able to deploy something after this…have you done your best work?

Release early, release often is not an excuse to release crap…

An automated image upload workflow for Amazon S3

I have no idea if anyone else will find this helpful, but I’m so excited about it that I have to share it1. One of the most time-consuming and repetitive tasks in blogging is uploading images to my Amazon S3 account, generating the CDN link, and inserting it into the post. But I’ve now cobbled together a recipe that makes this really easy, and I’d like to tell you about it. First, here are the ingredients you’ll need:

  1. An Amazon S3 account for image storage (optional: Cloudfront CDN)
  2. TextExpander to handle the repetitive typing
  3. Hazel to automate the upload to S3
  4. Dropbox isn’t technically necessary, but it makes everything just a little bit smoother.

With that said, here are the steps in the recipe:

Step 1: Set up a Hazel workflow to upload new files to S3

First, we need to set up Hazel to watch a folder and upload any new files to your S3 bucket. The Macdrifter article Upload to Amazon S3 from Dropbox using Hazel is extremely helpful for this. I basically copied that script with some minor adjustments. Here’s what it looks like:

Hazel upload to Amazon S3

Note that you have to change the type of shell script you run to /usr/bin/python. The script I use looks as follows (again, see the Macdrifter article for the whole story):

import boto
from boto.s3.connection import S3Connection
import os
import sys
import urllib
from datetime import date, datetime
import subprocess

# This is how Hazel passes in the file path
hazelFilePath = sys.argv[1]

# Obviously, you'll need your own keys
aws_key = 'YOUR_KEY'
aws_secret = 'YOUR_SECRET'

# This is where I store my log file for these links. It's a Dropbox file in my NVAlt notes folder
logFilePath = "/Users/~YOUR_COMPUTER_NAME/Dropbox/Notational/Link_Log.txt"
nowTime = str(datetime.now())

# Method to add to clipboard
def setClipboardData(data):
    p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
    p.stdin.write(data)
    p.stdin.close()
    retcode = p.wait()

# This is the method that does all of the uploading and writing to the log file.
# The method is generic enough to work with any S3 bucket that is passed.
def uploadToS3(localFilePath, S3Bucket):
  fileName = os.path.basename(localFilePath)

  # Determine the current month and year to create the upload path
    today = date.today()
    datePath = today.strftime("/%Y/%m/")

   # Create the URL for the image (Add your own path here)
    imageLink = 'https://cdn.elezea.com/images/'+urllib.quote(fileName)

    # Connect to S3
    s3 = S3Connection(aws_key, aws_secret)
   bucket = s3.get_bucket(S3Bucket)
   key = bucket.new_key('images/'+fileName)
   key.set_contents_from_filename(localFilePath)
   key.set_acl('public-read')
   logfile = open(logFilePath, "a")

   try:
       # %% encode the file name and append the URL to the log file
       logfile.write(nowTime+'  '+imageLink+'n')
      setClipboardData(imageLink)
   finally:
      logfile.close()

# Add your bucket name here.
uploadToS3(hazelFilePath, 'YOUR_BUCKET_NAME')

Here’s what the script does in my case: Whenever I add a new file to the Img folder in Dropbox, it uploads the file to S3, copies the URL to the clipboard, and also adds that URL to a Link_Log text file in my nvALT folder for later access if needed (or if I add multiple images in one go).

Step 2: Set up TextExpander shortcuts

Once the image is added to S3, the rest is handled with TextExpander. When I want to add an image to a blog post I type:

,img

That expands to:

<p><img style="display: block; margin-left: auto; margin-right: auto;" title="%fill:image title%" src="%|%fill:image source%" border="0" alt="%fill:image title%" /></p>

It asks me to give the image an alt tag, and then it places the cursor where I’m going to add the source file. Since the source URL is already in my clipboard, I then just ⌘-V and I’m all set.

They call it magic

That’s it. It might seem like a lot of work, but now that everything is set up my workflow is extremely simple:

  1. Add new image to the Img folder
  2. Type the TextExpander shortcut and paste the Image URL where I want the image to appear

I think it’s going to save me at least as much time this year as it took to write this blog post.

Oh. Wait.


  1. It also gives me an opportunity to pretend I’m Dr. Drang, but I digress. 

More

  1. 1
  2. ...
  3. 98
  4. 99
  5. 100
  6. 101
  7. 102
  8. ...
  9. 204