Pocobor.

McMaster-Carr

Scenario: It’s 3:36pm on Thursday, and you need a new Helmet Respirator and Abrasive Blaster system by 9am for some heavy-duty, morning sandblasting. Lucky for you there’s McMaster-Carr and their website www.mcmaster.com.

Well, I’ve actually never needed a Helmet Respirator and Abrasive Blaster delivered overnight, but with over 480,000 components in stock McMaster is one of the most useful tools in our ability to quickly create physical prototypes. If you haven’t experienced McMaster-Carr, you should do the following:

1. Finish reading this post
2. Open a new tab in your browser and go to www.mcmaster.com
3. Search for something like “Bolts” or “Aluminum”

image1

We frequently use McMaster to source mechanical components such as fasteners (bolts, screws, nuts), raw materials (plastics, aluminum, steel, etc), pneumatic and hydraulic fittings, electrical power connectors, and many other items. It is often my first stop when searching for a mechanical component. A huge inventory combined with a simple online interface and next-morning delivery makes it one of the most efficient and valuable suppliers we use.

image2

Web 3.0

Every time you say “paradigm shift” or “synergy” a puppy gets run over.

As the shirt above implies, Web 3.0 is one of those buzzwords that conveys little meaning yet has nonetheless carved out a significant niche in media and public perception regarding the internet. I chose it for the title of this post despite its negative connotations because I think that (until Web 4.0) it symbolizes an effort to predict how people’s interaction with the internet will change over time. And my crystal ball says Web 3.0 = Smart Products! (thanks to Cameron for many interesting discussions on this topic).

What is Web 2.0?

First though, a little context: the phrase Web 2.0 is equally nebulous, but to me it signifies the first major shift in how people interacted with the internet. I see most people’s interaction with the early World Wide Web as being a passive, one-direction transfer of information. For example, I would go to a website like cnn.com and read the news. However, over time a new type of website arose. Sites like Facebook, YouTube, and Flickr are predicated on bi-directional information transfer in a way that made them very different from the biggest sites of the 90s – active participation and content generation by users is completely fundamental to the mission of these sites. This trend towards more user interaction has even spread to old-media sites via mechanisms like user commenting.

What’s Next?

So, the question I want to answer is: what is going to be the next paradigm shift (sorry Fido) in how people interact with the internet? I think that this next sea change in how the internet is used will be a significant increase in how entwined the internet is with our life in the physical, non-digital world. There are two main mechanisms by which this might happen: (1) making computers more portable and (2) putting computers in more devices.

Bringing Your Computer With You

The first trend is already well underway with the popularity of devices like the iPhone and Blackberry – people can now carry a device in their pocket that is powerful enough to enable things like GPS, surfing the internet, and watching video. The continued evolution of the smart phone as a platform is only going to accelerate and should be one of the most interesting and exciting trends in technology over the next 5 years.

Putting Computers Everywhere

The second trend is the rise of smart products. Smart products are basically any device with some sort of processor in it, from your microwave to your car to your iPod to (someday, I believe) your everything. They are extremely fundamental to the field of mechatronics and as such are a big area of passion for me. As one example of what a smart product can be, consider the smart umbrella shown below that was designed by Materious. It has a little Wi-Fi transceiver in it that automatically checks the weather. If it is going to be rainy, the handle lights up so on your way out the door you will see it and can grab it.

smart-umbrella1

Smart Umbrella (www.materious.com

)

This is a pretty lightweight invention (the benefit is pretty much limited to saving you the 60 seconds it would take to check the forecast each day) but it serves well to illustrate how the internet can be integrated into our physical world more tightly. The internet has radically changed the accessibility of information – smart products have begun and will continue to take advantage of it!

Software Standardization

Why Standardize Software Styles?

As a mechatronics firm, we write a great deal of software. When handing software over to clients it is important that there is a certain look and feel that is consistent with Pocobor’s standards. One reason for this is that if code is standardized internally it makes it easier for co-workers performing code reviews, because they are used to seeing that style (since it’s the same style they write in!).

Another reason is marketing. A basic assumption is that any code that leaves Pocobor will be robust, dependable, and easy to follow. Having the same style allows clients to become comfortable with Pocobor’s brand of coding. But if our style changes from project to project (or within one project depending on which one of us wrote it) then our clients will not be able to recognize Pocobor code. Furthermore, they would have to get used to a new style for every project.

Why Would it be Easier to Read Standardized Code?

The main reason it’s easier to read code written in the same style is because of consistent naming conventions, function structure, and other stylistic aspects. So, when you see a variable named “EmployeePtr” you know a) that it is a global variable because its first letter is capitalized and b) it’s a pointer because all pointers in your particular style has “Ptr” at the end of the variable name. There are other ways to do this, for instance there could be a software convention where the same variable would be “pEmployee_g” (just an example). In this case the “p” proceeding “Employee” indicates a pointer variable and “g” indicates a global variable. The point here is that if everyone in your firm/lab uses the same style it will be much easier to read one another’s code.

How Do I Standardize My Firm’s/Lab’s Code?

Creating a standard programming style is challenging because everyone develops their own styles and habits through professors they had at college, blogs they read, and just from programming for years upon years. Initially, we thought we would sit down and create a programming style guide from scratch. We immediately realized how foolish that would be because there are already a lot of very good style guides created by experienced programmers.

After much googling and reading opinion upon opinion of what constitutes good programming style, we ultimately decided to go with Linus Torvald’sLinux Kernal C Coding Style“.  If your are not familiar with him, he is the person who initiated the development of the Linux Kernel and now acts as the project’s coordinator.

There are other style guides out there, but we liked and chose this one. The most important thing is to standardize your code style (using an established style guide), not the specifics of the style guide you choose.

What About Concepts not Covered in the Style Guide?

Often, one guide may not be enough to cover every aspect of code. You can fill in the blanks yourself or you can find other documents that discuss issues such as file templates or variable naming styles like camel case (e.g. “employeeName” vs. “employee_name”, where the first is an example of camel case naming convention). Ultimately, the goal for us was to find a style that we thought would produce the best code, and then to make sure we all use it.

24 Hour Design Challenge

What can we accomplish in a day? Can it prove our value to a dream client? We had the opportunity to find out.

We were referred to a project manager of a dream client about a potential project. Once we heard a few minor details, our minds started circling around the problem and how we could quickly put something together to fill their need. When the project didn’t materialize as we had hoped, we decided to turn it into a 24 Hour Design Challenge. We took what little we knew about the project and built something in the next day that would showcase the value we could create in a short amount of time. 24 hours later, this was the result (click the detail photos below to enlarge):

pic11

pic21

pic31

pic41

It’s what we do best: integrate electronics, mechanical systems, and computer intelligence to create modern interactive products … all in a day’s work.