We are abstracting on the shoulders of giants
My 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.
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.
Howard - We are using only public APIs. ;)
Anuj - Yes, but it probably won't work well.
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!
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?
I am not challenging, I am legitimately interested.
Why not Wix? I assume because he has used Wix...
"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."
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.
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.
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!
I wrote some very philosophical thoughts on this a few years back on SpaceCollective: The Evolution of Complexity
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.
Comments are closed.
And it can all be automated with a REST API. Amazing times.