mcottondesign

Loving Open-Souce One Anonymous Function at a Time.

Consuming vs Producing

Everyone is up in arms about the ending of Google Reader. I use it daily and more importantly my iPhone/iPad use it as the syncing protocol for RSS apps.

What I don't understand is why everyone isn't seeing this as an opportunity? Google created a product and now everyone has their shot to show what they can do.

Think that Google is amazing? Try to make your own version and see how you compare.

Think Google is past their prime? Try to make your own version and see how you compare.

Don't care about Google? Try to make your own version anyway.

In conclusion, make your own version. I know I will...

Presentation idea for local meetup

I sent out this email about a presentation I would be willing to give.

Are you interested in a node talk about camera uploads directly from iPhone to Node and then to S3?

Starting from nothing, then use

  • Why use Node? Why make it async?
  • node-formidable to handle uploads
  • knox to upload to S3
  • router to make sensible URLs, structure for REST
  • nano to integrate with CouchDB

Depending on the experience of the audience, I can include:

  • socket.io integration for upload progress indicator
  • making a REST-ful interface
  • syncing backbone collections with REST-ful API

Repo lives here:
https://github.com/mcotton/imgr

What I learned interviewing

October has been a very strange month and thankfully I came out of it better than I expected. I had the chance to meet some great people.

The Good

Swift software had a great idea for the technical phone interview, the team reviewed a project of mine on github and then had me answer questions about it for an hour. They prepared a follow-up assignment adding features to that project.

OKCupid Labs and CrowdFlower both had me pair-program with a team member and work a real bug on their actual codebase. I really loved this, this was the most comfortable for me.

CrowdFlower had me bring my own laptop and gave me an hour to work on a representative problem. They also had me sit with them through a lunch meeting and let me get deep into what they are doing.

Companies that had some some technical question or problem required before applying. I enjoyed the problem with companies that kept the problem to less than 10 minutes of work.

The Bad

  • Extended Comp Sci problems
  • Geometry problems
  • Implement shuffle function
  • Design full-stack for 50 million visitors per month (200 ms response time)
  • Companies that were disorganized or took three weeks to respond
  • Companies that has non-technical screeners try to ask technical questions

The Bat-shit Crazy

Several companies ask to complete excessive homework assignments (4-8 hours). The worst offender asked me to complete a project in a foreign enviroment (Ruby on Rails) and then complete a project. He wanted me to use even though he knew I wasn't familiar with it. I very much liked the company otherwise.

Conculsion

I received a few offers and happily accepted a position with Eagle Eye Networks. It was very difficult to make the decision and even harder to let the other people know. I am very excited to be coding instead of interviewing.

Google App Engine Changes

Recently Google announced that Google App Engine is leaving preview. Along with a SLA they are also putting their pricing into effect. There has been a lot of speculation, but no one knows for sure how things will keep playing out.

What does this mean for mcottondesign? It means that even if everything stays the same, now would be a good time to re-write this blog in Node.js and CouchDB on EC2. I have already shown how to make an all javascript blog in my screencast series with the same name.

It also means that I no longer have a good place to run python on the back-end. Django seems too heavy and abstracted, WebApp was a great little framework that I really enjoyed using. I will have to look at Twisted to see how I like it.

This also means that my github projects (this blog, among others) aren't as appealing. It was really fun to be able to tell people to just download the latest and they would be running in 30 seconds.

I really enjoy developing for Google App Engine. I hope that the free quotas remain generous and performance doesn't suffer.

This week's update

I have been pushing changes to my github repos and haven't come up with another screencast yet.
The major decision is to stay with Google App Engine or to leave.

New game series

I am working on making a new screencasts series as I make a real-time multiplayer game. I need a head start before I start recording. Stay tuned.

Two Great Quotes

It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat.
-- Theodore Roosevelt

The Dunning–Kruger effect is a cognitive bias in which unskilled people make poor decisions and reach erroneous conclusions, but their incompetence denies them the metacognitive ability to appreciate their mistakes.[1] The unskilled therefore suffer from illusory superiority, rating their ability as above average, much higher than it actually is, while the highly skilled underrate their own abilities, suffering from illusory inferiority. Actual competence may weaken self-confidence, as competent individuals may falsely assume that others have an equivalent understanding. As Kruger and Dunning conclude, "the miscalibration of the incompetent stems from an error about the self, whereas the miscalibration of the highly competent stems from an error about others" (p. 1127). (from wikipedia)

This blog is now open-source

The code used in making this blog is now open-source and available on github. In addition to that, there are several screencasts about how it was created.

It feels good to make it available, look for more contributions in the future.

Trying and getting rejected

Most instances in life you will get what you want. You will not starve to death, freeze in the cold, or be eaten by velociraptors.

You will get a job doing something close to what you love, and be paid enough to buy lots of stuff. You will find friends, even if they are just co-workers or that drive-through girl who gives you extra fries. You will have a good life.

But every now and again, you will try for something more. You will try and stretch for the next step up. You will get excited and hopeful and...

It won't work out.

You will be mad and depressed and frustrated. You won't want to give up. You will spend time thinking about what could have been.

Or you can just move on.

Why would you write something if no one will use it?

It is easy to get caught up with the web trends and forget about shipping products. This happens to me all the time. I have a hard drive full of prototypes and concepts, yet my github account is really sparse.

I'm still going to program in my off-hours, but now will document the changes I make. I already announced my goal of one screencast a week to be posted to this blog. Instead of starting new projects I am going to fork existing projects, build out more thorough examples and submit them back. I'll update libraries as needed to make my examples work.

2011 is going to be a very public year for me and I look forward to it.

Wordpress vs DIY

I've decided to write my own blog instead of just using wordpress. I don't know if this is a good thing or not.

I wouldn't fly a home-made plane. I wouldn't scuba with a home-made tank. But I will make my mark on the world by blazing my own trail.

Stay tuned to see how it turns out.

IPad review

I have my new iPad and I love it. It might my not be as magical as apple claims, but it is innovative. It it a toy and not a serious computer. As long as you expect it to be beautiful it won't disappoint. For the same price as a net book it is a great purchase I have shown it some customers and the real test will be how I can deploy it into the custom installation market. Sent from my iPad

What you need to know about your electrical plan

In the excitement of building a new house it is easy to gloss over some of the finer details. You should take care that your electrical system doesn't get forgotten about. Your builder has an electrician that he uses, and there is good reason they work together, but just because he is working on your house doesn't mean he is working for you. He won't be able to read your mind and so I've put together a list of things you should discuss.

1. Outlets, Outlets, Outlets
In a well designed home you don't need to plug everything into a single outlet. You should start with what the local, state and nation electrical codes say and then add more outlets everywhere you need them. If you have a doubt, add it.

2. Flat panel TVs and art lights
When you mount a tv on the wall, you'll need to determine how to plug it in. Make sure you plan ahead and have an electrician add a outlet at the correct height. If you aren't sure which wall it will go on, you can have a regular outlet installed on the bottom of the wall and have them add another outlet later. To make this easier for them, add an outlet inside the correct "stud bay" so they don't have to drill through the framing. If you're unsure, your builder or low-voltage designer can assist you.

3. Floor plugs and lamps
In a typical living room layout it is wise to consider outlets installed in the floor. Most people will have a couch with lamps on either side, and those lamps need electricity. You can have the floor plug placed under the couch and the lamp cords will no longer be a tripping hazard. As with regular outlets, more is better. Measure two-thirds the distance of the room from the fireplace or entertainment center.

4. Breaker Panels and printed labels
Look at a completed home your builder did and check to see if you can read the labels in the breaker panel. Are they clear? Can you tell which circuits control the various items? Having clearly labeled breaker panels makes service easier when you need it. Have the electrician write the labels while it is fresh in his memory and then apply new printed labels when the house is ready to close. Check where the breaker panel is in your new house and that you can find all the local GFCI outlets.

5. Smoke detectors and Fire alarms
For your safety and convenience get smoke detectors that are connect directly to your electrical system. It is common for batteries to fail and for people to ignore the waring noises they make. Be sure to have enough smoke detectors, correctly place, and test them regularly.

6. Electrical Codes
Follow all local, state and national electrical codes. Use a reputable company that has properly trained and licensed employees. Your electrical system should be virtually trouble-free when professional designed and installed.

Elevator pitch

What do we do? We are trying to bring home automation to the masses. What makes us different? Instead of trying to launch a new product that users and dealers have to leave their current brands to adopt, we want to commodotize much of the design and programming for them. Who are you competing against? Our strategy is to make (or use existing) dealer agreements with all the major players (Crestron, AMX, Lutron, Vantage, Control4, RTI)

Waiting in Denver

I'm always surprised how flat Denver is. Southwest is using HP computers running XP for their digital signage. I'm sitting her watching it reboot. I think it is disconcerting. Aren't planes more complex than pretty text?