Scott Hanselman

We are abstracting on the shoulders of giants

May 28, '14 Comments [42] Posted in Musings
Sponsored By

middleMy new startup has data centers on three continents, utilizes global load-balancing, traverses networks with ease, has both an iPhone and Windows application, was written in a simple high level language, and enables an amazing scenario to help people get more done, faster.

But the real story - the real mindblower for me - was not the hours and hours of software that my partner and I wrote, it's the years and years of software that we didn't write.

We globally load balanced web sites and services across multiple servers in Europe, Asia, and the US. Windows Azure Traffic Manager handled that.

We sat our communication protocol on top of SignalR, an open source library using ASP.NET that hides the complexities of the real-time Web, handles NAT traversal for us, and basically removed the network for us as an issue. SignalR sits on stop of HTTP and Web Sockets, which sits on top of TCP/IP.

We used RayGun.io for our error management, and get complete stack dumps when a failure occurs in our application, this enables us to upgrade fast and often and give a good experience to our users

We used InnoSetup to install our application, it's truly one of the most amazing applications I've ever used. Give him money.

We used the ZXing QRCode Open source library for creation of QR codes. We didn't worry about the graphics details.

We used MahApps.Metro UI to make our Windows application look great. Added some controls, and it's lovely.

And it all comes together using C# and the Xamarin set of tools. The iPhone app, the Windows app, and the cloud service, are all C#.

I've been in the software industry for over 20 years now and I remember when writing C was considered a rather high-level language. I generally understand the full stack from assembler all the way up to managed code and beyond to the cloud. It's fantastic that today we think about managing VM clusters as much as we think about managing bytes.

Think about the giant shoulders that our application is standing on. Think about the shoulders that your application is standing on. Software abstraction has enabled us to do so much.

We can marvel at the abstraction layer that is Google. For many, that IS the internet. You type a question into a text box and push a button and the entire world opens up to you and a just a fraction of the planet truly appreciates the orchestration and history that makes it all happen.

Do I have a point here? Probably not. It just struck me today. Go listen to my chat with computer science legend Len Bass on this week's podcast to get a feeling for the history and power that we exploit every day.

There is value in taking a moment to think about the deep and broad stack that your application sits on. Go thank and support the projects, both open source and not, that your application uses. Revel in the layers of abstraction that others have created and appreciate the ones that you have created. They make all the LEGO pieces you're using just the correct size, and they make snapping them together a lot of fun.

It's a great time to be a programmer. This blog post was dictated with the myEcho application.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Wednesday, May 28, 2014 1:54:22 AM UTC
I think what's even more impressive is the fact that all of this is available to anyone with a credit card. There's no hidden pricing, no salesmen to give you a quote, no tiered pricing that's only beneficial to large customers. Instead, just give us a credit card number and an email address, and (mostly) pay as you go. I remember when an internet startup meant buying servers, networking equipment and admins, which meant pretty big capital expenses. Now I can do it with a few bucks and scale it linearly as my business grows.

And it can all be automated with a REST API. Amazing times.
Wednesday, May 28, 2014 2:08:45 AM UTC
If I had an iPhone, I'd buy it right now. Even if I wasn't going to use it. It's such a cool idea.
bill
Wednesday, May 28, 2014 2:16:15 AM UTC
was written <Need another word> IN <close tag..> a simple high level language,
robert
Wednesday, May 28, 2014 3:03:25 AM UTC
Scott - How does it work? Specifically how do you hack Siri to intercept its results for the relay? I thought that while system was closed.

- HC
Howard Camp
Wednesday, May 28, 2014 3:59:57 AM UTC
No Android application, why so?
Wednesday, May 28, 2014 5:07:17 AM UTC
Alex - Android and WP8 are next. We went where the users are first, to test the idea.

Howard - We are using only public APIs. ;)
Wednesday, May 28, 2014 6:38:31 AM UTC
Congratulations Scott! The app is great and totally worth it! All the best with this venture!
Abrian Stemmet
Wednesday, May 28, 2014 7:43:54 AM UTC
Good luck on the android solution. I'm looking forward to it.
Tim Hoekstra
Wednesday, May 28, 2014 8:03:24 AM UTC
Does it work with other languages than English?
Wednesday, May 28, 2014 8:32:12 AM UTC
Can I use this with Visual Studio ? to dictate coffee script or C# ?
Wednesday, May 28, 2014 8:39:32 AM UTC
Torleif - Yes, if Siri and the iPhone support it, we support it.

Anuj - Yes, but it probably won't work well.
Wednesday, May 28, 2014 8:45:22 AM UTC
I also have an idea for a startup and would go for this kind of setup (as a C# developer). Are there any tools/websites which can give me an idea on how much the cost for "azure" (the things in the cloud) would be? (given a series of parameters of course). Just to get an idea on how I must set a pricing for customers.
Wim
Wednesday, May 28, 2014 8:50:15 AM UTC
Looking forward to the cortana powered version for Windows Phone. Only too bad that these kind of things are all limited to english.
Wednesday, May 28, 2014 9:18:18 AM UTC
This is awesome. Now will it take minutes of a meeting if I place my phone in the centre of a roundtable :)
Wednesday, May 28, 2014 11:06:21 AM UTC
So, now you don't need to worry about wasting your keystrokes. BTW, cool app. I used it to write my emails and it just works.
Wednesday, May 28, 2014 11:15:14 AM UTC
Indeed. The abstractions we get to work with today have truly made it easy to think in terms of the problem we are trying to solve instead of (for example) the problem of arranging pixels on the screen, or sending packets over the network.

This is a source of joy, and to me also a little unsettling. Most days, I find at least a moment to feel slightly inadequate. What business do have calling myself a programmer? IN contrast to folks who can handily write kernel code, or understand fully what goes into writing data to disk (and by that, I mean below the level of File.Save("C:\\somefolder\\SomeFile.txt") lol) I feel like I should consider myself more of an "API Connector" than a programmer.

I have pursued understanding the deeper abstractions to the point it is practical, which has at least informed me of all I *don't* know. From that, I know what questions to ask, and that is satisfying to a degree. But I also now realize that anymore, it is 100% impractical for me to learn it all from the bottom up.

Shoulders of giants, indeed.

Congrats on the new startup and app!
Wednesday, May 28, 2014 12:18:45 PM UTC
Scott - what software/framework are you using for your blog.myechoapp.com site?
Todd
Wednesday, May 28, 2014 12:27:25 PM UTC
Very cool idea and a clever implementation IMO FYI doesn't work with VS2013... input processing related? tried to play around and dictate check-in comments...
Orry Rotem
Wednesday, May 28, 2014 12:54:10 PM UTC
So -- just to be clear -- Siri works by gathering your speech on your phone, sending it up the Apple cloud (?) and then returning you what was said? Ahh, and then for Scott's app, he's using SignalR to push the text to a client app.

Now, if you implemented this on Windows Phone would it be the same mechanism where Cortana sends it up to I presume Azure, parses it, and then returns what was said?
Brad Rem
Wednesday, May 28, 2014 1:46:08 PM UTC
I broke my are last Saturday, and was looking for something as good as iOS dictation to use on my work laptop. This is fantastic, I even wrote this comment with myEcho.
Wednesday, May 28, 2014 2:46:36 PM UTC
What made you choose InnoSetup over WiX?
Alan Low
Wednesday, May 28, 2014 3:41:58 PM UTC
Can't wait for the Windows Phone app!
Charles Cherry
Wednesday, May 28, 2014 4:37:49 PM UTC
Scott - what are some example use cases? My understanding was that Windows 7 and 8 have pretty good built in speech recognition.

I am not challenging, I am legitimately interested.

Robert
Wednesday, May 28, 2014 4:44:05 PM UTC
When is the love for WP8 coming?
Greg
Wednesday, May 28, 2014 5:00:06 PM UTC
Amazing. It works smooth also with German and Italian Language. You have my 2$.
Wednesday, May 28, 2014 5:28:34 PM UTC
Finally someone else sees the beauty and power of InnoSetup. No annoying interfaces to get in the way. It just simply does exactly what you want on all Windows platforms.

Why not Wix? I assume because he has used Wix...
PRMan
Wednesday, May 28, 2014 5:29:02 PM UTC
(BTW, looks cool, Scott. Can't wait to play with the Android version.)
PRMan
Wednesday, May 28, 2014 5:41:56 PM UTC
@Todd - I believe it's MiniBlog from Mads Kristensen. It's open sourced on GitHub.com under /madskristensen/MiniBlog/
Jamy Ryals
Wednesday, May 28, 2014 6:05:28 PM UTC
@Jamy - yep I believe you are correct. Thanks for that.
Todd
Wednesday, May 28, 2014 6:13:21 PM UTC
Todd he's using Miniblog to power http://blog.myechoapp.com/. It's a realy light weight blog engine perfect for small .Net drive sites/apps. I have been using it in place of wordpress and blog engine. All credit goes to Mads.
Wednesday, May 28, 2014 6:21:58 PM UTC
In a similar vein from my blog

"I've spent this Saturday morning listening to some great music on TuneIn, and I just want to say Thank you.

Thank you to the artists who sung the songs, to the lyricists who penned them and the musicians who played the music.

Thank you to the App developers at TuneIn who created the Apps which brings all this music to me so easily and beautifully.

Thank you to Tim Berners Lee for inventing the web and getting it all started.

Thank you Steve Jobs for the App store which brought everything together.

Each of you, pursuing your personal dreams and passions, have come together like an orchestra to make my saturday morning special.

Thank you, I don't know what I would have done without you."
Wednesday, May 28, 2014 8:42:11 PM UTC
InnoSetup, really? I would recommend to have a look at Windows Installer XML (WiX). It is a good and powerful alternative that comes with Visual Studio support. ;-)
Sebastian
Thursday, May 29, 2014 8:09:32 AM UTC
please write a small ping article when WP8 app is available
Fabrizio
Thursday, May 29, 2014 1:16:32 PM UTC
I'll be taking a look at this app, I don't own an iphone but I do have an ipad and my wife has an iphone so we'll give it a test drive. After all $1.99 is nothing.

It is true that we can now do with software quickly things that a few years ago would be unthinkable. No imagine 25 years into the future. How exciting our industry is.
Krystan Honour
Thursday, May 29, 2014 6:37:04 PM UTC
Having spent a lot of time the past two years on a side project (a Win 8 and web app using Azure Websites, Cloud Services, SQL database, Mobile Services), I couldn't agree more. I would also add in one (giant) part of the stack: PayPal. I don't even have to think about where payments come from or what currency it's in. I just write a few lines of code and the rest is taken care of, including hiding from me people's financial identity.
Tim
Thursday, May 29, 2014 6:56:27 PM UTC
Scott:

Your offering in this space is amazing. I showed this app to my wife who is a physician with a family medicine private practice, and within 10 mins of trying it out, she bought the app and seamlessly integrated it into her physician note-taking and EMR process. This saves her huge amounts of time. It will also save the practice huge amount of money in dictation fees. It really is amazing. Thanks for your time and effort in getting this to market, it will literally save her thousands of dollars in time and dictation costs. If you ever need a testimonial in the health services space, drop us a line.

Roland Denson
Thursday, May 29, 2014 8:42:27 PM UTC
My only worry is that once you make your millions from this amazing app you'll up sticks and leave Microsoft.... don't do it Scott, we need you
James
Friday, May 30, 2014 9:00:49 PM UTC
Very slick indeed. Just downloaded it and wrote an email in my browser by talking to my phone. @Roland, might warn your wife to be careful from a privacy perspective. While Scott's app isn't storing your data, Apple could be storing data you send to Siri. I don't think Siri is considered HIPPA compliant.
Adam Anderly
Monday, June 02, 2014 8:42:08 PM UTC
Bit of a side question...has Raygun.io leap frogged ELMAH as your error logging/monitoring package of choice? Or are they being used primarily because this was a WinPhone app?
Terry Aney
Tuesday, June 03, 2014 4:10:15 AM UTC
Cool - I have been looking for an affordable solution that provides reasonably accurate realtime Speech to Text translation.

I stream on twitch.tv and have a deaf viewer, which made me realize there is probably a good community of people that watch streams but don't get the full experience because they are hearing impaired.

I can push it out realtime + sync up with the stream using socket.IO, this was the only piece I was missing.

The only problem thus far, is that I don't want to "dictate". I just want a continuous processing stream and it sounds like that is possible yet but I see you've mentioned a WP8 + Android version, perhaps in the future it would be possible to set to "decode as soon as possible". Punctuation etc is not important, I'd prefer to provide context to why I am laughing over grammatical accuracy :)

Anyways - since I am here, I really enjoy your blog - especially Node IIS post, wasn't aware! very cool!

Thanks dude
Wednesday, June 04, 2014 12:38:45 PM UTC
This is why I became a programmer - to build on the complexity that others built before me. I don't think many industries allow this in quite the same way as development.

I wrote some very philosophical thoughts on this a few years back on SpaceCollective: The Evolution of Complexity
Tuesday, July 15, 2014 2:26:01 PM UTC
I find that when I best see the universe for what it really is, and get over the shock of how horrifying it is* , finally I find myself even more shocked at how beneficent it all is... how improbable and costly our existence is... and how it all just seems to be getting (dare I admit it?) even better... moving forward somehow.

Anyway, the evolution of information technology counts as part of universe. Recognizing and appreciating the raw and awesome fact of its beneficence (well, so far... and as described in your blog entry at least)... I can see you don't take all this for granted. I suspect that's why your perspective and insight are appreciated by so many of us out here experiencing the same thing. Deep down we KNOW that it could have turned out differently... our work, our life could have been way worse than it is (or not even existed at all)... and the best word to describe this feeling (and not just a feeling, it's a perception of reality as true as any sense organ: eyes, ears, taste, touch) is GRATITUDE.

===================================
*It disposed of most of the life forms it produced prior to coming up with us, and then went on to endow us with an awareness of eternity combined with an awareness of our most certain death.
Name
E-mail (will show your gravatar icon)
Home page
 
Comment (Some html is allowed: a@href@title, b, blockquote@cite, em, i, li, ol, pre, strike, strong, sub, super, u, ul) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.
Live Comment Preview

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.