Tuesday, August 10, 2010

Why the apple app store is a revolution

Steve Jobs stated at D8 that the app store is a revolution. I thought he was overselling it, but app store is a revolution because people install apps without the fear of it screwing up their phone. It's rare I download an application to my pc and run it. For fear of crashing the computer, corrupting the computer, compromising personal information, pop ups, degraded performance, being in a botnet, viruses, etc. Those fears are mitigated in the apps store. Here are the reasons:

1 The app store is the first time a large, reputable company vouched for the integrity of hundreds of thousands of applications.

2 When you close an app, it is cut off. The lack of multi-tasking (and now true multi-tasking) ensures rogue apps don't waste your cpu cycles.

3 Apps can't access or compromise the data in other apps. Users can't even mess up the files since there is no system file browser.

4 You can easily delete applications. The uninstall process is handled by the operating system. You don't have to worry about the app not uninstalling properly.

5 The login/purchase process only involves entering a password. This reduces the overhead of entering all your payment information to buy an application.

Tuesday, August 19, 2008

Ray Kurzweil

Today I heard a speech from a local technology entrepreneur, and he emphasized points raised by Ray Kurzweil. Specifically, that technology advances at an exponential rate. For instance, the printing press took 100 years to be adopted, it took 50 years to adapt the telephone, it took 8 years to adapt the cell phone. The same principal applies across many areas of technology from Moore's Law to disk capacity, and even in biological research. Here is a speech from 2005.


Thursday, May 29, 2008

Google App Engine

Google has announced pricing for their online Application Engine. It's basically like blogger except you write code instead of blog entries. The only downside is right now all applications have to be written in Python.

Wednesday, May 07, 2008

The Guerrilla Guide to Interviewing

Here are some highlights from The Guerrilla Guide to Interviewing (version 3.0) - Joel on Software:

"In principle, it’s simple. You’re looking for people who are

  1. Smart, and
  2. Get things done.
How do you detect smart in an interview? The first good sign is that you don’t have to explain things over and over again. The conversation just flows.

Here’s a typical plan for interviewing a programmer:
  1. Introduction
  2. Question about recent project candidate worked on
  3. Easy Programming Question
  4. Pointer/Recursion Question
  5. Are you satisfied?
  6. Do you have any questions?

The introduction phase of the interview is intended to put the candidate at ease. I ask them if they had a nice flight. I spend about 30 seconds telling the person who I am and how the interview will work. I always reassure candidates that we are interested in how they go about solving problems, not the actual answer.

Recent Project
Part two is a question about some recent project that the candidate worked on.... Again, ask open-ended questions and sit back and listen, with only the occasional “tell me more about that” if they seem to stall....

What should you look for during the open ended questions?

One:Look for passion. Smart people are passionate about the projects they work on.

Two: Good candidates are careful to explain things well, at whatever level. I have rejected candidates because when they talked about their previous project, they couldn’t explain it in terms that a normal person could understand.

Three: If the project was a team project, look for signs that they took a leadership role.

Most of the time in the interview, though, should be spent letting the candidate prove that they can write code.

Easy Programming Question
If the basic concepts aren’t so easy that you don’t even have to think about them, you’re not going to get the big concepts.

Pointer/Recursion Question

the best programmers all have an easy aptitude for dealing with multiple levels of abstraction simultaneously. In programming, that means specifically that they have no problem with recursion (which involves holding in your head multiple levels of the call stack at the same time) or complex pointer-based algorithms

Are you satisfied?
Even though the format of the interview is, superficially, just a candidate writing some code on the whiteboard, my real goal here is to have a conversation about it. “Why did you do it that way?” “What are the performance characteristics of your algorithm?” “What did you forget?” “Where’s your bug?”

Do you have any questions?
As the last step in an interview, ask the candidate if they have any questions. Remember, even though you’re interviewing them, the good candidates have lots of choices about where to work and they’re using this day to figure out if they want to work for you.

In the past, I’ve used “impossible questions,” also known as “back of the envelope questions.” Classic examples of this are “How many piano tuners are there in Seattle?” The candidate won’t know the answer, but smart candidates won’t give up and they’ll be happy to try and estimate a reasonable number for you.

Thursday, April 24, 2008

Search Me

searchme.com is a unique search engine. Their tagline is "You'll know it when you see it." After you search you get a list of results that reminds me of Apples new interface for looking at album covers. It lets you page through the snapshots of the results with the keywords marked on the pages. Thanks to Shaun for the link.

Friday, February 15, 2008

Project management

For some time I have been using basecamp for project management, but I think it's too simplistic for my needs and I plan to switch to The Trac Project. Trac has a more sophisticated priorities and categories and it also integrates with my source control subversion. It's also open source and we can host it ourselves. (I also thought about resorting back to bugzilla)

I'm also interested in some of the plug ins for Trac, like the time and estimation plugin.

Thursday, February 14, 2008

Maximizing Data Throughput for Network Applications (IIS 6.0)

Windows 2003 still has the default setting to maximize file and print sharing over network applications... rackspace recommended that i change it for my web server.

Maximizing Data Throughput for Network Applications (IIS 6.0)

Saturday, February 09, 2008

Pushing limits with web services

There are several considerations when you call or provide a web service that can send a lot of data or take a long time.

In .Net you can set the timeout period to be higher.

Also in .Net... "When the amount of data send or received by the Web service exceeds 4 MB, configure the Web server to handle the larger amount of data."
How to: Enable a Web Service to Send and Receive Large Amounts of Data

Thursday, February 07, 2008

Test Automation with FireFox Add On

I have been using iMacros Firefox Add On
to help automate my testing through the web.

The art of software testing

In the introduction to the book "The art of software testing" it poses a simple program and ask how many test cases you can think of...

"The program reads three integer values from an input dialog. The three values represent the lengths of the sides of a triangle. The program displays a message that states whether the triangle is scalene, isosceles, or equilateral."

If you write down all the test cases you can think of, you will most likely be surprised how many things you don't think of. (they provide a list of test cases in the link)