Category Archives: General

Re-Branding Underway

Over the next few weeks I’m going to be re-branding my site. I feel it’s time to update it and make it more current with my latest projects.

Making Picasa Work on a NAS or Shared Drive

The biggest problem I’ve had with Picasa has been my inability to connect and use it with a NAS or Network Attached Storage.

We’ll it’s not like I couldn’t use it, but if I lost connectivity my local database went away. All my albums and thumbs were gone and I had to rebuild it.

This happened enough because I was either disconnected, switched to a WiFi Network, or left the house with Picasa still open. All while inadvertent completely messed up my photo libraries. So How did I solve it?

From the command line with Git. (Git is a versioning control software). Steps:

  1. Find the Picasa Internal Database Location. (Usually in c:\Users\username\AppData\local\Picasa?? or /Users/username/Library/Application Support/Google/Picasa3)
  2. Go to this directory after git is installed and type:
git init .
git add .
git commit -m 'adding picas to master'
git checkout -b nas

The last line creates a branch called ‘nas’, which allows you to create multiple Picasa databases by just switching branches.

Now I did a test I disconnected my NAS folder restarted Picasa and everything went away. I closed down Picasa, did a ‘git reset –hard’, started Picasa, and everything was back the way it should be.

The only downside is that your git repository takes up about 70% the space as your Picasa library folder, but it still beats storing your photos locally.

Books Update

I’ve decided to bring back my books: Robotics Programming 101 and Build Your Own PHP Framework to Amazon.Com. A few notes:

  1. The price is higher. Hopefully with the higher price people purchase less impulsively. Which means they think a little bit about what they are going to purchase which means they preview the book and decide yes/no.
  2. I plan on updating Build Your Own PHP Framework this summer and creating a 2nd book called Build Your Own PHP CMS.
  3. I plan on creating an update to Robotics Programming 101 and creating a 2nd book on Machine Vision maybe I’ll call it Machine Vision 101 or something similar.

Big Note: If you purchase from me (via sites above) vs. Amazon.Com, I’ll get you 2nd editions for FREE.

City Rankings

In looking for cities to possibly relocate to a new city we were constantly looking at city rankings. One of the rankings we looked at was Please explain this:

  • Raleigh, NC – 2010 Rank #10
  • Raleigh, NC – 2011 Rank #57
  • Columbus, OH – 2010 Rank #61
  • Columbus, OH – 2010 Rank #22

So what’s changed in a year? Well, in Columbus, OH, not a whole lot. My guess in Raleigh, NC? Not much either.

I’ve seen rankings like this fluctuate for EVERY place that I looked at rankings.

Advice: If you’re planning to move to a place IGNORE THE CITY RANKINGS. Rather take a visit, find someplace that feels right and you can afford.

I Created A Book Page!

I decided to create a separate page for my books because I’ve started thinking about expanding the kinds of books I’m writing to include more than just books about robotics.

Currently the books you will find on this page are just my robotics books, which have more detail at my Scott’sBots website, in the near future I’ll have a few more.

Stay Tuned!

Don't use MVC

MVC (Model View Controller) design patterns all the rage, in fact, the MVC pattern is pretty much standard with every web framework.

The idea is to keep code separate, the assumption is that with this separation comes ease of maintenance, and allows for developers of different skill sets to work in different areas. Here’s a short description of each:

  • The Model – This represents the data that the application operates.
  • The View – This represents the web pages that render the model in a form that makes it easy for users.
  • The Controller – This takes input from the view, calls associated model classes, and manipulates that data and input with business logic to direct the user to another view.

The reason this was created was because of Model-1 Web Design. Here you had business logic, model logic, and display all on the same dynamic web page usually a JSP (Java Server Page) or ASP (Active Server Page). This was ugly and certain parts of maintainability were hard, but was efficient in certain aspects.

The problem comes in with MVC is an over engineering and overly abstracted mechanism for just pushing data into and out of a database, which is essentially what a web application usually is. So how can you avoid the problems of model 1, with the over engineering of model 2? You use a Model 1.5 architecture.

Model 1.5 – An Introduction

What is Model 1.5? Well first it will help to describe Model 1 and Model 2.

Model 1 – This is a web application design pattern for web scripting languages like JSP, ASP, or PHP, that take all the elements of a web application, business logic, data abstraction and connetions, and presentation/layout then puts them into a single page, or script.

Model 2 – This is a web application design pattern that separates the elements into an MVC design pattern, MVC standing for Model View and Controller.

Introducing the Model 1.5 Design Pattern.

This pattern takes the efficiency of model 1, and component of model 2 and combines them into something that is both efficient and maintainable.

What does it look like?

First, the application consist of web pages (scripts) that talk to other web pages and use a set of objects to communicate with the database or encapsulate the business logic.

Second, the application employs functional programming techniques, to share business logic across different web pages or areas of your application.

Third, the database layer is generated and employs a inheritance model that allows for overrides of certain CRUD operations, while at the same time providing application specific functionality and very easy level of maintainability.

Eliminating Time Wasters

The key to becoming more efficient when you are at your computer is to eliminate low value activities and replacing them with high value activities. To do this I recommend you take the following three steps:

Step 1) Identify

One thing I did a few months back is install ManicTime. This software allows you to monitor what programs you are using and for how long. It even tracks what sites you visit and how long you are on certain URLs.

Step 2) Collect Data

After a few weeks, I started to notice a few patterns, of how much time I spent on sites or in programs that added no value. Leisure surfing is OK, but I would much rather be building a robot or playing with my daughter, than surfing FaceBook.

Step 3) Eliminate

Stop going to sites or using software that does not add value.

Limiting Distractions

How many times do you crave just an hour of being in the zone? By the zone, that moment of time where you and the code are one, you know what you want to do and it seems like your thoughts just flow and your productivity is at an all time high. How many times when you are in this state do you get one of the following:

  • An email with a red exclamation point
  • A Twitter or FaceBook notification
  • A phone call or a text
  • Someone walking over to your desk/cube

These are just some of the distractions you will face and they will keep you from your most productive period of the day. Often times, it takes about 20-30 minutes to get back in the zone from a 5 minute interuption. You have a few of these during your 2-3 hour burst of work, you will get very little done. Here’s a few tips to help you stay in your coding zone:

  1. Turn Off Your Email, TweetDeck, FaceBook, Instant Messenger and Cell Phone
  2. If you can’t get away from your cube or close your office door, try putting a sign outside your cube, that say’s something like: “Very Busy, Email Me or Talk To Boss”
  3. Put in your ear-buds and listen to music or your iPod, sometimes just having them there when your listening or not gives people time to read your sign.
  4. Work from home, or book a conference room for just yourself.
  5. Pick what you want to focus on before you start and what your stopping point is, i.e. get this component unit-tested.

I hope you find these tips useful, while the sign idea could create some controversy, it will send a message to those that interrupt you the most and teach them to be more aware of how distracting they are to you and your productivity.