10 Productivity tips for startups to stay focused and on track

by alex 28. March 2013 18:50

As of today, I've been working for myself for 56 days. In those 56 days, I've had amazing results and learned a whole lot. But I've also had a lot of guilt and missed expectations, largely due to focus and motivation. Here are some of my personal tips to keep you on track when you have to self-manage.

1. Wake up and get started

When you work from home it's far too easy to hit snooze "just a few times." Identify when your productive hours are, and make sure you are awake and ready to go when that time comes. When you wake up, get started. Don't laze about; don't play games online, watch "just one" episode of The Daily Show on Hulu before getting started.

Instead, get dressed. Put on your shoes and step outside. You don't even have to put on clean clothes or brush your teeth. Don't feel pressured to go for a jog around the block. Take 10 deep breaths and hug the sun. Get out of bed and get moving. If you are still tired after all of that then you can take a nap.

You have to push yourself.

2. Stay off Facebook

Facebook is fun. Facebook is boring. Facebook is distracting, upsetting, angering, and endearing. Unless your business requires you to be on Facebook for the purposes of advertising or researching, avoid it. Facebook will eat your time in 15 minute chunks and you'll ask yourself where the day went. Facebook has it now, and she'll never let it go.

This goes for Twitter and your other social networking sites too.

3. Don't F5 your email

Did you just push a new software release? Post something exciting on Twitter to let your community know? Wonder if your customer survey results are in?

Stay out of your email. Waiting for information and feedback is a bit like looking forward to Santa's arrival. You know what, Santa will get there whether you are playing video games with your friends (I mean, reading a book and tutorial neighborhood kids) or bugging your mom about it.

I don't know where that metaphor was trying to go. Anyway, your information, if it will arrive, will arrive. Checking your email between every task switch doesn't buy you much and it will steal your time or distract you from what you should be doing.

Unless you're waiting for an email from the President saying "Do not press the button!", do not stalk your inbox.

4. Focus on one task at a time

Multitasking is dead.

Staying focused on completing one task is much easier and faster than trying to do two at once. I think this is double true for anything creative. This isn't to say that you shouldn't listen to music or that you can't talk to your coworkers or roommate, but you shouldn't be designing a logo while trying to do your taxes.

If a customer call comes in, stop what you are doing (if it's appropriate), deal with the customer's request and then get back to work.

If you're working on a new logo, stop fretting over the code that you don't know how to write. Don't think about website color schemes while writing your copy. Don't tweak and play with the CSS in your media player when you're cutting audio.

Staying focused on one task will make the work go faster and with better results in the end.

5. Don't stress out

It isn't good for anyone, especially you and your friends and family. Take a breath. If you're getting frustrated or depressed, step away from the issue. Switch to a new task. Or lock your computer and go outside. This doubles as exercise, which is all around good for you because you can eat more bacon later.

That was a joke. Don't stress out.

6. Don't gaze aimlessly into your monitor 

If you find that you have stopped working and are now looking at your desktop wallpaper or reading random garbage on the internet: stop. Get up, walk away, do 10 pushups, wash the dishes, fold laundry, walk the dog, clean your room, prep your dinner, dance around, call your mom.

You have things you need to do and reading another Reddit article is not it. You do not need to change you wallpaper again. Stop trying to find the perfect profile picture.

7. Avoid games during work hours

Games are good, games are great. You might be creating games, and that makes you cool. But don't play unrelated games during your work hours. It is all together too easy to play for longer than you planned.

I like games too, but schedule game time after your work is done for the day. It doesn't necessarily have to be after your tasks are completed, but make game time after work time is over. Don't play games and call it work time. Don't play games and have guilt because you should be working. If you should be working, then do it.

8. Don't over-eat

Over eating leads to over sleeping. If you get tired after eating a meal then you probably ate too much. Try reducing the size of your meals and eating smaller meals more often throughout the day. It will keep you alert, avoid the mental fuzziness of Thanksgiving and it is also healthier for you. Don't make me find a citation for that, mister, because I know they are out there and I will if anyone questions it.

Avoiding over-eating will keep your work time at its max efficiency.

9. Don't over-caffeinate

Ah, caffeine. Let's take a moment. . . .

Coffee can make the mind sharp and it can snap you into the mood to get stuff done and accomplish the world! And if you have enough coffee you might not care that "accomplish the world" doesn't really make any sense. But if you have too much caffeine you'll become jittery, anxious and easily distracted.

Find your magic sweet-spot number of coffee cups or tea mugs and stay in that neighborhood. Too much coffee hurts your productivity and your health.

10. Make a task list

Every morning, make a list of what you need to do and what you can reasonably accomplish today. It will help you focus your effort and attack your tasks in the correct priority.

This will lead to a feeling of accomplishment - you get to check things off the list and larger projects can be completed more easily with a focused, targetted effort.

When you complete a task, you don't have to mentally regroup and shift back to a high-level to survey the field - just choose the next task on the list.

No muss no fuss.



Day 56 - Get back to work you rotten kids

by alex 28. March 2013 18:05

Today I'm refreshing and recollecting my thoughts on what needs to be done.

Programming tasks

Integrating the sales site with the production release manager

When someone makes a purchase on the sales site, their card will be billed and then they get an email with a download link. This download link is not good; the file it points to is rotting. I'm pushing new releases to a publicly accessible installation of Build Keeper. I need to integrate these two sites together, and it has to be easy.

There are two separate databases right now, one for the releases sub domain and another for the www sub domain. They each have their own user list management - they use a common library, but they don't share a data store so www.eisenhartsoftware.com users can't log in to releases.eisenhartsoftware.com.

If a visitor logs in to releases with a user account that is a member of the "Active subscriptions" group, then they can download releases.

Ultimately, the problem to solve is "How do I securely get context about a user's activity in Site A into Site B?" Specifically, in releases I need to know if an authenticated user (I don't care how they were authenticated, forms authentication, Facebook, Open ID, whatever) has purchased the software on www.

I have a few ideas to integrate the sites:

  1. Keep the user lists separate - 
    • Push credentials to releases via a web service, restful API or something and have it register a new user account and add the user to the "Active subscription" group. This solution would be difficult to make secure - there would probably be holes that an attacker could use to get access to my downloads. This solution would lead to issues with keeping password changes in sync since there are technically two separate accounts - the creation of the second one is streamlined.
    • Enable a federated security setup in releases to allow it to accept claims and credentials from www. A www user could then login to releases and releases would trust credentials from www. This would probably be a solid solution, but it would have a heavier startup cost because I would have a bit of learning to do. However, adding federated security is a feature that is in my future-wish-list item pool. This might require 3rd party certificates to sign communications. This solution avoids the password management issue from the previous example (because releases wouldn't have a password for the user) but other account details would be duplicated.
    • Expose the available downloads from releases in the www site via a restful API. This is another future-goal, but it doesn't resolve the issue that releases needs to have knowledge of a permission set for a www user.
  2. Create a shared user store
    • Re-architect how Build Keeper stores users. In the current DAL, all database tables exist in the same database. I could change the User Repository to connect to a second database - the www database or a new independent DB. This constitutes a product change.

 Or something else. I don't want to dwell on implementation details right now.

Finish product features

  • Searching
  • Form updates (documentation, tab order, appearance)

Advertising tasks

  • Finalize logo
  • Trademark logo
  • Put logo into the product and the product sales site
  • Update features page on product site
  • Review copy on the home page of product site and make no-brainer improvements


Build Keeper.NET logo drafts

by alex 28. March 2013 01:50

Tree logos

My first idea is that since Build Keeper is used to cross reference different versions of software releases, it could be represented by a tree. And what better way to illustrate a programmer's tree than with Visio? =)

That idea gave rise to these two images. Some feedback on the first image was that it didn't invoke the image of a tree in the viewer's mind. This doesn't necessarily make it a bad logo, but it misses the mark so I tried adding a few smaller green leaves. I'm not totally in love with either of these images, but I still like the original idea.

Cloud logo

For a brief moment I considered a cloud logo, with the bubbles on the standard cloud logo being nodes in a small dependency graph. I don't know what I was thinking and this was quickly abandoned.

Castle logos

The second idea, probably a bit more obvious, is centered around the "keep" portion of Build Keeper: castles, towers, and such.

2D Iconic castles

I tried some quick drafts of simplified 2D castles but I wasn't particularly fond of anything that was happening here. The first is very Cisco.

3D Rendered castles

A castle tower or turret is kind of interesting and I thought I might be able to get an interesting design with simplified colors. I fired up my 3D program of choice and built a (very) simple turret. Two directional lights cast high-contrasting colors at either side.

Using a standard up and aim perspective camera, looking up at a shallow angle, I rendered it with high-contrast colors and then again with two colors from the product site. I kinda liked it, but it felt a little boring, so I tried cutting a hole in the middle of the tower, to make room for an icon or something. Barf. But it was fun because who does boolean operations on polygonal solids these days? =)

All cameras are not created equal and the next experiment used an orthogonal camera. Ignore the black parallelograms on the bottom - that's the underside of the turret and it'll be stripped off later.

I liked that well enough to scratch a bit.

Using Gimp, I created a bottom edge (this same look could probably have been achieved with a perspective camera with tweaked out settings to make the vanishing points shoot far off... probably something to do with ISO settings [j-playing at the end there]).


The brand name also makes an appearance here. The contrast between the blue-side and "Build" is nice, but it requires the tower to be tall and the text is quite wide, so the silhouette looks strange - bulk to the left and wide and thin to the right. It's almost key-shaped. But I feel like I could be on to something with this shape. 

I tried shortening the turret a bit, but I think it went a little too far in the 2nd image - it looks squashed and the 3D-ness of it starts to break down.


Vectorizing the raster - inking

Everything to this point has been low-quality, rasterized bitmaps and they were a bit fuzzy in places. I imported the latest version (the shortened tower with the brand) into Inkscape and traced all the edges. This process involves drawing math-powered lines on top of the bitmap and then filling it in.

These shots in are:

  1. The traced source image.
  2. A taller turret with deeper "teeth". And I also somehow swapped the colors. That wasn't intentional =)
  3. Two tests of how it would look on the product site and in the product itself; the product will use a transparent version to let the menu header shine through.


Finally, here's what it would look like in the product itself and on the sales site:

I think I like this logo. It can easily be 1-bit, which makes it cheap to be printed. The colors can be varied to fit the medium and the message.

If two colors are used (like the orange and blue of the product site) I may remove the black outlines.

What do you think?

Edit: The smallest icons - in the last two samples - gets a bit blurred at the top, while the middle is a wasteland of color. I could see trashing the middle "tooth" and have only 2 per edge around the top. That might turn out to be funny looking.



Day 54 and 55 - Logos, Twitter and wasting time

by alex 26. March 2013 19:34

Last week I settled on Build Keeper.NET for my product's brand name. Yesterday I worked on a few logo ideas based around that name. The next post will include some design samples.

I posted one of my recent traffic assessments to Twitter. Writing to the #SEO and #startup hash tags is kind of like joining a long line of people who are shouting at the same wall.

There's so much traffic to these tags that unless you're a major player already, these hash tags will not generate any traffic or interest. So hey, let's tweet all the posts from the last three days or so. I'm not in a vacuum!

I'm going to tweet every post to this blog until the Twitter police come and take away my keyboard.

They'll never find me.

Yesterday and today were not very fruitful. I've been editing a long post on security, preventing XSS attacks and rich editing in websites. I think this has stagnated me a little; I've taken a "weekend" but without any relaxing. Sometimes the next step isn't 100% clear.


SEO: Canonical URLs and correct redirecting with 301

by alex 25. March 2013 21:05

I just finished setting up my canonical URLs and redirections for this domain and blog. If this is configured incorrectly your various pages may appear as two different sites to search engines.

Canonical URLs - what are they and why should you care?

Is your URL http://example.com or http://www.example.com? Or are these the same site? If they're the same, is http://blog.example.com also the same? To most search engines, URLs with the www do not refer to the same content as those without the www sub domain.

That means, if you have links 'all over the internet' to both www.example.com and example.com, them these appear to be two different websites to search engines. Deciding on whether or not you will use www, and ensuring that all of your links include it, is part of the effort to make canonical URLs.

I don't remember ever reading a definition of this term that was worth writing home about, but here's my best shot after reading everything on the internet -

Canonicalization of URLs is the process of deciding the best URL to use for a given resource. A canonical URL, therefore, is the preferred URL to access a resource.

For example, these links could all refer to the same file, index.html stored in the wwwroot folder of a server:

  • www.example.com
  • example.com
  • www.example.com/index.html
  • example.com/index.html
  • www.example.com/index
  • example.com/index

There are a few negatives to not canonicalizing your URLs:

  1. Webcrawlers will hit your server multiple times for the same content
  2. Search engines will generally attempt to merge the rankings of similar URLs providing the same content (e.g., example.com and example.com/index.html), but if they can't automatically resolve the duplication, the ranking of your content may be distributed between multiple URLs.

That bears repeating. If you don't have your URLs setup properly then search engines may dilute your page's ranking by distributing it across multiple URLs.

Do you add the www or remove it? There are fights on both side of this argument, but for all it's worth, this decision might as well just come down to aesthetics.

After you make the decision of how links to your site should look, you need to change all of your internal links to use the canonical format. That just means that you have to make sure that you always include the www or you always omit it. If you have any other resources that are available through multiple sources (for example, the Home controller and the Index action for ASP.NET MVC projects), make sure to also always link to these via the same URL.

I've always elected to include the www. This means that otsix.com will return a permanent redirect (301) indicating the content is located at www.otsix.com. To see a sample of this, open otsix.com - your browser will automatically redirect to http://www.otsix.com. Additionally, I don't have anything in the root of this domain at this point, so I want to redirect to my blog subfolder.

To achieve these goals, I added the following snippet to my web.config file, located in the wwwroot folder:

			<rule name="Redirect non-www to www - loses path info" patternSyntax="ECMAScript" stopProcessing="true">
				<match url=".*" />
					<add input="{HTTP_HOST}" pattern="^otsix.com$" />
				<action type="Redirect" url="http://www.otsix.com/blog/" />
			<rule name="Redirect root to blog" stopProcessing="true">
				<match url="^$" />
				<action type="Redirect" url="http://www.otsix.com/blog/" />

These rules direct IIS to return 301, permanent redirects for the the following URLs. If I navigate to any of these URLs, the browser is automatically redirected to my canonical URL, http://www.otsix.com/blog/

  • http://otsix.com/
  • http://otsix.com/blog/
  • http://www.otsix.com/

Later, when I have content for the root site, I'll remove the "redirect root to blog" rule.

I'll comment on this later, but this post only dealt with top-level canonicalization. These URLs also need to be canonicalized if they serve the same content:

  • http://www.example.com/browser?category=bags&sortOrder=desc
  • http://www.example.com/browser?sortOrder=desc&category=bags

About the author

Something about the author

Month List