Google+

Do It in Public

How many times have you run into a problem with your code? Stuck so bad you can't think about anything else. As time goes on, you get more desperate, changing your search terms, Looking for any glimmer of hope. You reach a point of desperation where you'll cut and paste any code you can find in the hopes that you'll get closer to the answer.

Conversely, how many times have you created a new console app to create a quick and dirty proof of concept? If it worked, where did you put that code?

I've been thinking about writing this for some time. Over the past few months, I've gotten in the habit of publishing every proof of concept, every sample project, and every demo. It feels great. I even started a podcast just to have more public discussions.

GitHub Activity

I know what you're thinking - it takes too much time and I have work to do. It takes much less time than you think, and the ROI will make it worthwhile. Get out there, create your GitHub account.

When you create a GitHub project, all you really need is a name, but ideally it should also have a readme file. I used to think this was a hassle, but I've come to realize that it's actually worth the time investment. When you have to explain a piece of code to someone else, it forces to you think just enough to ensure that it makes sense. For my quick and dirty test project, this may be just a single sentence. If it's throwaway code, just be honest and mention that.

Your code doesn't need to be perfect, and if you are afraid of public criticism, get over it. You need to focus on the developers that are desperately looking for a fix to their problem.

Scott Hanselman had a similar thought on his blog recently:

I hear several times a week things like "I'm not ready for people to see my code." But let me tell you, while it may be painful, it will make you better

Since using GitHub for my sample projects, I've found some other significant benefits:

  • Easy to email & share - When a coworker asks how to solve a problem I've already solved, I'm able to look at my GitHub account, even if I'm on my phone. I can grab a URL of the relevant file, and email a link.
  • Free backup - Over the years, as I've switched computers, I've lost a lot of code I wish I had saved. Putting it on GitHub, ensures that I can access it at any point in the future without having to worry about keeping backups.
  • Work from multiple computers - I've found it extremely helpful to create a proof of concept on one machine, and then pull it down to another as reference.

Stop making excuses. Contribute back to the community.

Like this post? Please share it!

See a mistake? Edit this post!

7 Things the Surface Pro 3 Can Do Better than Your Laptop

I've been using a Surface Pro 3 for a few days now (borrowing it from my wife until I get my own). I wanted to show some of the scenarios that the kickstand, the pen, and the form factor provide. I do work at Microsoft, but I'm free to use any type of device I wish, and I don't work for the Surface team.

The Surface Pro 3 is often a misunderstood device, and let's face it, it's a difficult product to explain and market. The way I see it is that at the low end of $799, it's a replacement for the high-end iPad market. The midrange models are extremely capable laptop and tablet killers, and the high-end models can handle pretty much anything.

1. Scan and Annotate

The Surface Pro is an amazing note-taking device and it opens up some new scenarios that may not be immediately obvious.

Let's say we have an interesting document in our hands, and we want to mark it up. We may be able to use a standard pen to write on the document itself, but there are times when we can't write on it, or we simply want to go paperless. The Office Lens app turns your phone into a scanner in your pocket. For example, you can scan in a sheet of paper or a whiteboard, and it will do edge detection, and it will also try to remove the background when possible.

OneNote Scan Annotation

Using my phone and the Office Lens app, I scanned in a sheet of paper and hit save, which sent it to OneNote. Within seconds, the scan was available in OneNote on my Surface. I was then able to use my pen to annotate the document.

Alternatively, you can use the camera built into the Surface itself.

2. Use on-screen keyboard in reclined position

Thanks to the new kickstand design, you can position the Surface Pro 3 to be slightly angled (nearly flat). This is useful when drawing, but I have found that it also provides the best angle for typing. I've seen people that were able to type on a tablet laying flat, but I found that to be very difficult without tacticle feedback.

Surface Pro 3 Reclined

Magic floating pen?

I often remove the keyboard and walk around with the Surface to use it as a consumption device. While you won't find the on-screen keyboard a replacement for a physical keyboard, it can certainly work in a pinch thanks to the new angles.

3. Use the Pen as a Whiteboard in a Presentation

Personally, my goal is to minimize the dreaded "death by PowerPoint", and instead focus on code and content. Using a typical whiteboard is often far to small for the audience to see.

The Surface Pro 3 makes a great developer presentation device, and the presenter can switch over to an application like OneNote and write or draw something. Used properly, it can create a more engaging experience.

Presentation Screenshot

4. Keeping your Lap Cool

In a traditional laptop, all of the heat generating components are in the base, or the part that sits on your lap. The result is usually just discomfort in the summer, but in severe cases it can cause skin damage or even reduced fertility.

With the Surface Pro, the parts that touch your body are the kickstand, the bottom edge of the device, and the keyboard. All of these components should be room temperature since they don't create any heat. The heat is allowed to vent vertically, far away from your skin.

5. Gaming

The iPad is great for casual gaming. However, there are 2 large shortcomings. First, the iPad does not have an accurate pointing device. There are capactive pens available, but they don't have anywhere near the same level of accuracy. The Surface pen has sub-millimeter accuracy. Second, the iPad can't run some of the amazing legacy games like one of my all-time favorites, Age of Empires II.

Age of Empires on Surface Pro 3

This game is actually pretty amazing on the Surface. The high resolution screen shows you a good portion of the map and the pen works great for picking single units or grouping multiple units.

6. Extreme Portability

The Surface can replace your laptop and your tablet, but I think that's only part of the story. The Surface power adapter is extremely light. Laptops often have a dirty little secret, which is that they have a huge, heavy power brick.

Just take a look at this beast!

Huge Dell Power Adapter for M6400

I can't find a consistent weight measurement for the Dell M6400 power adapter, but I'm guessing it weighs more than the Surface Pro 3 with a type cover and power adapter. I should also mention that the MacBook Air power supply is very light, and Apple did a great job paying attention to that detail.

Personally, I would love to have a requirement for laptops that they must include the weight of their power supply in the specifications if the device doesn't last an entire day with normal usage. After all, the power supply is something you're likely to need to carry along with you.

The point is that that the Surface Pro 3 is ridiculously light. It's 1.76lbs, the cover is 10 ounces, and the power supply is 6 ounces. The total weight for everything in your bag is 2.78 lbs. It's light enough that the weight of the bag you put it in starts to become a factor.

It's also light enough that you're far more likely to take it with you. Much like the best camera is the one that you have with you, the best computer is the one you have with you.

When you start to consider this is a device that can help you go paperless and can possibly even be your reading device, you realize that you can shed a lot of the load.

7. Detach the Keyboard

The detachable keyboard is one of the fundamental selling points of the Surface Pro 3, yet the commercials did a terrible job showing how powerful this feature is.

I fly occasionally, and due to motion sickness, I usually use the time to catch up on movies. I originally used my Surface 2, but it was an extra device I had to put in my bag in addition to my laptop. Then, I switched to my Nokia Lumia 1520, which has a MicroSD slot, which let me fit 30+ movies on it. This works pretty well, but holding the phone is a bit of a hassle. When I do decide to get some work done, I can't hold the phone and use a laptop at the same time.

With the Surface Pro 3, I can leave it in my bag for the security check. Once on the plane, I can hold it during takeoff, and during the flight I can use the kickstand to sit it on the tray table. The combination of the screen, kickstand, and MicroSD slot, make it the best airplane device for me. If I want to get some work done, I move the movie off to the side, and run visual studio in the rest of the screen. The high-res screen gives me plenty of code real-estate.

Conclusion

I love this device. Its flexibility is exactly what I'm looking for.

Like this post? Please share it!

See a mistake? Edit this post!

What is the Internet of Things?

IoT.

Internet of Things.

The trillion dollar question is "what is it?". I've heard answers ranging from "a way for your refrigerator to push data to your phone" to "anything data related".

I just attended the Internet of Things World Conference. The attendees and companies were as diverse as the answer to that question. Chip vendors, cloud providers, IoT branded companies, sensor providers, integrators, and product vendors.

The mere existence of the event and companies branded as Internet of Things represents the growing mindshare and buzzworthiness. A clever name may be all that is required to get companies to rally around it. Don't take that statement too lightly. I really think the branding is important here. We've seen it before, "the cloud", "AJAX". All of these are technologies that were not new when the term was created, but the mere existence of a term pushes it forward.

So what is it?

What is IoT to me? I focus primarily on manufacturing. The majority of my career has been spent creating software that powers manufacturing. In the context of manufacturing, IoT represents a new economic proposition for sensors, control hardware, and data processing. Sensors are getting cheap enough to measure, and later analyze the data later to create interesting models. We finally have Internet connections that can push much of this data to a central repository. To process the data, we now have proven elastic cloud platforms that can scale down to a small shop, or up to the largest companies in the world.

Manufacturing seems ripe for the picking. Lots of potential for data collection and lots of low hanging fruit in terms of analysis and ROI.

This doesn't come without a unique set of challenges. From a hardware standpoint, the environment is a nightmare. We need to contend with dust, humidity, temperature extremes, vibration, and a reflective wireless environment.

Manufacturing tends to move very slowly. At the end of the day, they have product to produce. Modbus, the de facto standard for industrial communications, was developed in the 70's. It's reliability and interoperability has been time proven. For an IoT solution to be successful, it must be able to augment, not replace these existing solutions. Now, throw in multiple layers of networking, only 1 of which has direct internet access, and that internet access is likely slower than what you have at home.

Once we jump through all of these hoops to get data out of the facility, now we have to operate at cloud scale. The platform must be secure, scalable, and reliable. At Microsoft, there are a lot of efforts to make these processes as easy as possible.

Be sure to watch the presentation by the Azure Service Bus team where they talk about how they're ingesting data at scale.

Azure Data Ingestion

You're going to hear myself and others talk about data until we're blue in the face. Meaningful, actionable data is what we get out of all of this. Once we can centralize the data, we can do things like cross-facility benchmarking, predictive analysis to keep less parts on hand, actionable enterprise-wide data. Historical data is nice to have, real-time information is great, and accurate predictive data is game changing.

You won't hear me talk often about IoT security. The reason being that it must be present throughout the entire system. As a user of the technology, I don't want to think about security, but I want it to be pervasive and invisible.

What about Residential?

I have a lot of people ask me about how IoT fits into the residential space. As a person who has a mile of Cat 6 in his house, and a wireless network with over 20 devices including 3 thermostats, I want IoT to be ubiquitous more than anybody. Unfortunately, there are a lot of great niche products on the market today, but nobody has a good "system". If someone does, I don't see it.

Why doesn't my security camera help the Nest know when I'm home? Why don't my lights turn on when I walk into the bathroom? Why can't I choose "scenes" from a wall mounted panel or my phone? Why can't I see a comprehensive environmental map of my house? Why doesn't my house know when pollen levels are high so I can take my allergy medication? The truth is that most of this was possible in 1985.

This automation has a touchscreen to control the entire system.

Temperature Control

Temperature Control

Security

Security

Irrigation Control

Irrigation Control

HVAC Control

HVAC Control

This should be blowing your mind right now. This was nearly 30 years ago, and this house did much of what we think we want today. Time of day controls, security, HVAC, even irrigation, all in a relatively intuitive interface.

Want to build a system like that today? Head over to SmartHome.com and you'll find everything you need.

The problem is that most people are waiting to see who is going to win the battle for the home. It could be Apple, Microsoft, Google, or it could be anyone else. The thought of any one company with exclusive control should be terrifying.

OK, so maybe customers aren't looking for features, maybe we can motivate them with money? For example, running their washing machine during off-peak hours

I've spoken to residential energy providers, and the message is always the same. For consumers, the decision making process is more emotional than logical. I remember when fluorescent light bulbs were free or close to free thanks to energy rebates. Even at the price level near $0, it wasn't enough motivation for many people to switch and they instead chose the default of inaction. The same goes for old refrigerators, dehumidifiers, and water softeners. Investing in a new fridge will often pay for itself, but the owners keep the old one and lose money in installments.

The best thing about standards is that there are so many to choose from.

The only way we'll get over the current hump is to start seeing a clear pattern of interoperability. Consumers and businesses alike need to feel like they're making a long-term investment. Paying money to solve a single problem may work in certain niche cases, but will never realize the full potential of this market.

This is only the beginning.

Relevant Links I find Interesting

Brent Stineman, a colleague and friend, has a follow-up/response that you should check out here

Like this post? Please share it!

See a mistake? Edit this post!

Jason Young I'm Jason Young, software developer at heart, technical evangelist for Microsoft by day. This blog contains my opinions, of which my employer may not share.

@ytechieGitHubLinkedInStack Overflow