The Year of Docker, Serverless, and .NET Core: 2017 in Review
A look back at 2017 with the stats to prove it.
Part of the series: Year End Summaries
I am a firm believer that it is difficult, if not impossible, to make progress without having a baseline to measure from. That is why every year I like to pause and review my accomplishments before setting goals for the new year (I don’t just do this every year — I’m a fan of setting daily, weekly, monthly, quarterly, and yearly goals). I also have said before:
Life is like walking up the down escalator: if you stand still, you fall behind.
That’s my way of saying that I believe every year should be different from the last and involve new learning and challenges. Have you heard the exchange before when someone asks an old friend, “What’s new?” and they reply, “Not much?” I don’t want to be a member of the “not much” club. In this post I capture a few personal accomplishments and goals, then sort through the analytics I have from my various blogs, social media, and click tracking tools.
On a personal note, key accomplishments this year were:
- Sent my daughter to college (we’re now “empty nesters”)
- Helped my wife recover from a major back surgery
- Visited Italy for the first time
- Started my new role as a cloud developer advocate at Microsoft
My goals for 2018 include:
- Speak internationally (and not just once)
- Find a home and relocate to the Redmond, Washington area
- Engage heavily in the amazing giving opportunities that Microsoft provides its employees
- Summit a mountain I’ve never hiked before
I made a short video to share that I believe captures the essence of what I love about being a developer. The music and dancing ninjas are from a “demo” program I wrote on the Commodore 64 in 1988 at the age of 13. The main programming feat for that particular section of the demo is reading the sound registers on the SID chip so that I can swap the ninja image and create the illusion of “dancing” to the beat. The plasma effect is a challenge I took on a few years ago to take a common demo effect and implement it in JavaScript, and the raccoon is “Bit” or the mascot for all developer advocates.
For reference, this was my 2016 in review post:
When I moved to this blog, I also took an “all-time” snapshot of my legacy blog, and wrote about that here:
🔗 Reflecting on 15 Years of Blogging
This tweet captures what I feel are the highlights from 2017 and what I look forward to in 2018.
In no particular order, 2017:
— Jeremy Likness ⚡️ (@jeremylikness) December 18, 2017
✅ release of .NET Core 2.0
✅ my first app in #vuejs
✅ the rise of #Azure #Cloud containers (AKS, ACI)
✅ #serverless and @azureFunctions <⚡️>
✅ #CosmosDB 🌍
✅ #Azure cloud shell ☁️
For 2018:
✅ #kubernetes evolution
✅ mo' better #DevOps https://t.co/iGNpOMSVVM
In addition, I also believe that I will see and learn a lot more Artificial Intelligence and Machine Learning in the year to come.
There is a lot of data in this post, so if you have specific interests, feel free to jump around!
Twitter in Review
I ended 2016 with 9,165 followers and as of this post have 10,103. That’s a gain of around 1,000 followers or about 2–3 per day for the year. Although that may sound impressive to some, the total count is less important to me than the engagement and interest level. My goal with twitter is to reach developers, so followers who don’t really follow or interact don’t help with community reach.
In general, despite a large following, I didn’t receive as much engagement as I’d like. For comparison, some accounts with far fewer followers receive hundreds of likes, re-tweets, and other forms of engagement. My goal for 2018 is to continue to improve engagement through several means:
- Continue to deliver a high signal-to-noise ratio of content (see below)
- Focus on “in person” followers at events such as user group meetups and conferences
- Interact frequently online through conversations, answering questions, supporting community, etc.
For the “signal-to-noise ratio” I currently review anywhere between 500–1500 items daily to curate what I believe are the top 5–10 noteworthy items to share with my followers. This is in addition to content I author myself. See the links and click data section to learn more.
The following stats are from the most recent three months (90 days) of Twitter.
Demographics
92% of my followers list technology as their top interest, which is a good thing because my Twitter feed is almost exclusively developer focused. The top five interests of my followers are:
- Technology — 92%
- Tech news — 90%
- Windows — 86%
- Computer programming — 83%
- Mobile — 73%
I have to give open source an honorable mention at sixth place and 69%.
13% of my followers are female. That is up from less than 10% last year, but still shows that I have some work to do in order to reach and engage with a more diverse audience.
The top age category of followers is 25–34 or so-called millennials. Thank you for following a Generation X-er!
41% of my followers are in the United States, followed by the United Kingdom (8%) and Canada (3%).
Top Tweets
The most eyeballs landed on a post I shared about building a web service with F# in .NET Core. It was viewed 16,213 times.
Build a web service with #FSharp F# and #dotNETCore 2.0 using #VisualStudio @Code and #Giraffe https://t.co/y4rOofSy4K pic.twitter.com/yDZbvNesWU
— Jeremy Likness ⚡️ (@jeremylikness) September 28, 2017
The most liked tweet was one I shared to demonstrate how to install a Chrome extension that blurs sensitive information in the Azure portal while giving presentations or sharing your desktop.
Lots of reqs for the magic I use to blur secrets in the #Azure portal, even when I'm presenting live. Here you go: https://t.co/5rfCacIbIm pic.twitter.com/jCv3WEQiar
— Jeremy Likness ⚡️ (@jeremylikness) October 24, 2017
The most re-tweets I had was a tie between the previous tweet and the link I shared to the Azure Kubernetes Service (AKS) documentation.
Everything you need to know about the new managed #Azure #Kubernetes Service: https://t.co/ZnV14XVGKP #K8s quickstarts, tutorials, ref etc.. pic.twitter.com/cbkG2bDuGe
— Jeremy Likness ⚡️ (@jeremylikness) October 24, 2017
The tweet about the Chrome extension also had the most link clicks (159). Second place at 118 was this status about debugging ASP. NET Core on Linux:
Debugging #ASPNETCore on #Linux with #VisualStudio 2017 #VS2017 https://t.co/KusmTtWHmj pic.twitter.com/1rjjs4czGU
— Jeremy Likness ⚡️ (@jeremylikness) November 13, 2017
Finally, looking back at my most popular tweets based on engagement, the topics followers found most interesting were:
- Azure
- .NET Core
- Linux
- MVP program
- Virtual Desktops
- Windows Subsystem for Linux (WSL)
- F#
- REST API Design
I also experimented a little bit with sharing some of my non-technology related hobbies, like hiking. I was surprised and pleased to see the pictures of my hike to Ramsey cascades was one of my more popular tweets (and no one complained that is wasn’t about software development!)
Went for a little stroll today. Saw a few things. pic.twitter.com/413ZUU9IdB
— Jeremy Likness ⚡️ (@jeremylikness) November 11, 2017
Legacy (C#:er Image) Blog in Review
In 2017 my legacy blog was visited by around 50,000 users over 70,000 sessions.
I had visitors from around the world, but as usual the vast majority were from the United States.
The majority of visitors found my site through organic search. This reinforces the philosophy, “Don’t break the Internet.” People are finding my old pages on search engines so I’m happy I chose to keep them available.
Almost all of the top search queries included some variation of MVVM, or “Model-View-ViewModel.” Those queries landed the majority of visitors on an article I wrote almost a decade ago that explains the pattern in detail (at the time, it was in the context of Silverlight, but ironically what makes MVVM unique is the data-binding aspect that ties it to modern day frameworks like Angular and Vue.js).
There were three main topics covered by the top viewed pages:
- Angular
- MVVM
- Segoe UI icons
The Angular pages were mostly an older “top five mistakes” series I wrote about Angular 1.x, but there was one more recent article that made the cut at 1,847 views. Due to its popularity, I ported it to this blog:
🔗 Create a Serverless Angular App with Azure Functions and Blob Storage
Based on these statistics, I’m seriously considering writing an updated version of the MVVM article that tackles modern JavaScript frameworks and redirects from the old blog. Only time will tell if I end up doing that in 2018 — we’ll call it a “stretch goal.”
Developer for Life in Review
I made the transition to this new blog in August 2017, so statistics presented here are for slightly less than five months as compared to the full year for my legacy blog.
I had 12,450 users visit over 16,430 sessions. The geographic distribution of visitors to the new blog is significantly different than my legacy blog.
Not surprisingly, visitors came from very different sources. New sites take awhile to build search engine momentum, so the majority of visitors found the new blog through referrals and social media.
My top three referrers were:
- Chris Alcock’s Morning Brew (thanks, Chris!) — if you want a great source of information, check it out for yourself
- Reddit thanks mainly to a post in /r/programming about my blog post “.NET Core 2.0 is Ready and Sterling Proves It!”
I was happy for those referrals because they were all completely organic and I hope to see more.
Raw analytics from Google breaks down my top pages like this, but because my blog is on Medium there are a lot of visitors on mobile devices that don’t get counted on the main website.
Moving over to Medium and looking at the past 90 days gives me this breakdown — the order is the same but the views are much higher:
These statistics are helpful and show the blog move was net positive because I’m getting significantly more reads — 3,600 read an entire 7-minute article as opposed to 1,800 who viewed a page on my old blog and may or may not have even read it. I do like that Medium tracks where users are on the page and attempts to estimate who truly reads the full article.
Breaking down the popular topics I’ve blogged yields this short list:
- .NET Core 2.0
- REST Web API
- 🌍 CosmosDB
- <⚡> Serverless and Azure Functions
I did migrate a few articles from my old site, but they didn’t even come close to making the top read pages.
Links and Click Data
Perhaps the most useful data I have is around link clicks. The previous statistics just cover my own universe — the “Jeremy Likness echo chamber” — and don’t truly reveal overall trends or what people are generally interested in (only what they are interested in that I also happen to write about). Earlier this year I built a link shortening tool so that I could track links I share across various social media sites, on my blog, in GitHub and on YouTube. You can read about it here:
🔗 Build a Serverless Link Shortener with Analytics Faster than Finishing your Latte
And get the latest code that populates Cosmos DB with statistics here:
Using data I started collecting in September, just shortly after launching my new blog, I was able to track engagement to not just my own content, but other sites as well. I regularly publish content to my Twitter and LinkedIn profiles along with my Facebook page. I used to leverage Google+ but phased that out due to lack of engagement: despite thousands of followers I only had one or two users click through content.
Out of over 30,000 clicks tracked in 2017, the vast majority of engagement happened on Twitter:
I only recently created a Facebook page to publish technical content to, so narrowing data to the past month puts Facebook on the map:
The least popular day to click on content was Sunday. The most popular day was Thursday.
Almost nobody clicks links in my network between 7:00 pm Eastern Time and 8:00 am. I also rarely tweet during that period, which implies that most clicks are “real-time” in that users see the content posted and click when it appears, rather than scrolling through and engaging with content after it’s posted.
Almost 10% of all clicks happened between 12:00 pm and 1:00 pm Eastern Time. Second and third place were the 11:00 am — 12:00 pm and 1:00 pm — 2:00 pm time slots. My theory is that people are generally working and don’t have much time for Twitter but click and read content over lunch.
Outside of generic clicks to my blog, the top five clicked links overall last year were:
- Exploring the CosmosDB with Power BI
- Five REST Web API Designs in .NET Core Part 4: Optimistic Concurrency
- Documentation for Azure Kubernetes Services (AKS)
- Expanding Azure Functions to the CosmosDB
- Debugging ASP .NET Core on Linux with Visual Studio 2017
Of course, one important reason for tracking links is to better understand what’s not popular so I don’t waste your time. The least clicked topics included some of my conference recaps, and most links to documentation that were for broad topics rather than specific pages of information. It’s also interesting to note that clicks vary by medium (i.e. LinkedIn are interested in different topics compared to Twitter) but I’m still working on building out the right reports to pull insights from that data.As you can see, measuring data provides useful insights and helps me optimize where I spend my time and what topics to focus on. Although there is plenty of bias from my work and what I’m interested in, the trending topics this year definitely seemed to focus on containers, serverless, and .NET Core 2.0. Probably the only other major topic that didn’t get captured in my network because I know the least about it (and is a goal to learn more about in 2018) is Blockchain.
Thanks for taking the time to read these insights. As always I’d love to hear your feedback. Feel free to leave a comment on this blog or Direct Message me on Twitter!
Regards,
Part of the series: Year End Summaries
- The Year of Docker, Serverless, and .NET Core: 2017 in Review
- The Year of .NET Core, Angular, and Web API Design: 2018 in Review
- The Year of Angular on .NET Core, WebAssembly, and Blazor: 2019 in Review