Encosia - ASP.NET, AJAX, jQuery, and more

Hear me jabber about myself on The Hello World Podcast

General, Podcasts By . Updated May 10, 2015

hello-world-podcast-logoDuring his adventure around the world, my friend Shawn Wildermuth recently found a few minutes to have me on his podcast: The Hello World Podcast.

It’s a fun podcast if you haven’t listened to it before. Instead of having guests pontificate on current events and specific technologies, it’s all about how people first got started with computers and programming. For me, it all began with a first-generation Radio Shack TRS-80 Color Computer that I’ve mentioned here before, but I don’t think I’ve ever talked about what I did to it within about a year that nearly gave my parents a heart attack. You’ll have to listen to the podcast to learn about that (and hear Shawn make the same sound mother did in 1982 when she saw my handiwork).

More seriously, Shawn pressed me to think of the one thing I would have done differently if I could do it all over again. After coming up with a passable answer, I realized what my real answer to that question is and that it applies to everyone in technology, not just me. If you’re reading this, that probably means you too.

A few weeks with the Microsoft Band

Band, General, Reviews By . Posted December 9, 2014

My Band on the clever charging stand that @idlehandsdev designed.

I was lucky enough to get my hands on a Microsoft Band from the first batch that sold out so quickly a few weeks ago. I’ve been wearing it daily since then, using it to track my sleep, measure and analyse workout sessions, and even to buy the odd Americano at Starbucks.

Since then, lots of people have asked me how I like the Band and how well it works. So, here’s a quick rundown of my experience with it thus far, including the time it went dead in the middle of a workout.

I’m writing this with the assumption that you know what the Band is and basically what it does. If not, have a look at the official Microsoft Band website first.
Click here to read the rest of this post »

Why malware in Chrome extensions was inevitable

General By . Updated February 24, 2015

Chrome’s extension marketplace has been taking it on the chin lately due to the ever-increasing number of popular extensions choosing to sell out and become burdened with adware or even full-on malware. Lowell at How-To Geek wrote a good article digging into the details of a few examples.

This storm has been brewing for some time though. Chrome extensions have flirted with the distinction between ad-supported freeware and something less honest for years. However, the situation has finally built to a critical mass that Google could not ignore.

Coupled with silent automatic updates, this outcome was almost guaranteed by the combination of three forces at work in the Chrome extension marketplace (and sadly, most other app/addon stores):

  • In the eyes of most consumers, app stores have managed to marginalize the value of quality software down to somewhere between free and $0.99 (or a whopping $1.49 if you include the Windows Store).
  • Quality software costs a significant amount of money to develop. Sure, a good developer might technically be able to build something like that from scratch, but they still pay the opportunity cost of working for free all that time. Even programmers need to eat.
  • Supporting software can be a soul-crushing chore for one person. As you build a large user base of non-technical users, what begins as a labor of love can quickly become a nightmare. Being quasi-responsible for supporting software that you don’t get paid to support is simply untenable.

With no prospect of charging even pennies for these extensions, despite the burden of ongoing development and supporting thousands of users, it’s easy to understand why extension owners are accepting these lucrative deals. I’d like to think I wouldn’t take the money myself, but some of the deals I’ve seen mentioned would not be easy to turn down.

In the short term, this particular situation with Chrome extensions is probably solvable with a more granular permissions model, better curation, and notification when extensions are automatically updated.

In the long term, what’s fundamentally missing is a way for developers to make these projects financially viable without resorting to selling out their users. At this point, I think we’ve definitely determined that developers hoping a $0.99 app hits the app store lottery jackpot is not sustainable for anyone involved.

I don’t know what the answer to that larger problem is. Do you?

How to Chromecast video in a popup window

General By . Posted January 7, 2014

For whatever reason, some websites just love to open video players in tiny popup windows that make regular browser features and extensions difficult to access. Judging from the success of streaming sites like YouTube, Netflix, and Hulu that play video without popups, that approach is obviously not necessary, but sites using these popups don’t seem to be going away anytime soon.

The ESPN3 website is a good example of a site that uses unnecessary popups. Here’s the popup window that shows up when you watch any of the content there, for example:


It’s great that ESPN makes it simple to stream video from so many events, but the interface can be frustrating sometimes. This stripped down popup window definitely lacks some of the features that you’d expect from a regular tab.

Particularly, the buttons that extensions, like Google Cast, add to the right of the address bar are missing in the minimal popup window:

That icon indicates third-party cookies are blocked. You should enable this if you haven't.

That icon indicates third-party cookies are blocked. Enable this if you haven’t.

Since the ESPN3 video opens in a bare bones popup window, the Google Cast extension button to send it to a Chromecast device is missing. So, how to stream this video to a Chromecast?
Click here to read the rest of this post »

Why you should be nice to technical recruiters

General By . Updated September 5, 2013

Consider this quote from Greg Baugues’ post, Autoworkers of Our Generation:

No one’s got it better than developers right now. When the most frequent complaint you hear is “I wish recruiters would stop spamming me with six-figure job offers,” life’s gotten pretty good.

That’s an understatement.

What other comparable profession can you enter with no formal education and no certification today? Sure, being a good software developer takes a certain disposition and we must spend countless hours keeping pace with new technology, but the bar to entry is incredibly low compared to the potential reward.

I don’t agree with Greg’s premise that automation will replace us. The promise of that sort of automation has been present for decades, yet there’s only more manual work than ever. Often, full-time programmers are still needed to configure and support systems that promised automation so simple that non-technical users could “program” them. See also: The Expert System.

However, I couldn’t agree more with the overall sentiment of his post:

Don’t get too comfortable. Don’t get locked into a language. Don’t burn bridges for short term gain. Keep your tools sharp. Learn soft skills. Build an audience. Save some money. Network. Read.

It’s an obscenely good time to be a developer. Enjoy it while it lasts.

Nothing this good lasts forever

In my opinion, what Greg got most right is that nothing this good lasts forever. The current climate reminds me all too much of the hubris we saw in the late 90s, and who could forget the oversupply of developers sidelined after that ride came to an abrupt end.

Whether new talent sees how great we have it and floods the market, a bubble pops, the economy sours again, or Greg turns out to be correct about automation, you can bet that conditions won’t always be this favorable for us.

So, don’t be a jerk

What to do? Be kind, even when you don’t have to be. Treat people how you’d like to be treated if you were on the other end of this unbalanced equation. Don’t take for granted that we’ll always have this amazing position in the job market.

A recruiter that seems annoying today may just be your lifeline in the future. Do you want them to remember you as the jerk that went out of your way to broadcast a negative message, write a snarky post, or build an entire site shaming them for daring to vie for a few seconds of your attention?

Get the lowdown on Visual Studio 2013 and Web Essentials

General By . Posted July 1, 2013

Build 2013 has been a bit of a whirlwind. Trying to process announcements about everything from Windows 8.1 to Project Spark over the course of just a few hours of keynotes was pretty overwhelming. One of the things that didn’t get a ton of exposure on stage is what’s coming for ASP.NET developers in Visual Studio 2013, paired with Web Essentials.

Visual Studio 2012 with Mads Kristensen’s Web Essentials extension is already a great web development environment. If you’re working on ASP.NET sites, Visual Studio is the only game in town, but I even know non-developers who use the free Express version for editing static HTML sites because it works well for them.

Not perfect

However, there have been features in newer editors like WebStorm and Sublime Text that I did miss in Visual Studio.

Intelligent auto-completion of attribute name and values based on what you’ve used previously, for example, is a really great feature when you’re working with frameworks that are driven by data- attributes.

LiveReload is another feature that’s popular in other editors, but not supported as well on Windows or in Visual Studio. It’s not always useful on more complex pages, but can speed you up significantly in the right situations.

More than just catching up

Visual Studio 2013 has both of those features now, along with better “surround with”, better keyboard navigation through HTML documents, reliable HTML code formatting that doesn’t wreck your markup, SignalR-based Browser Link (i.e. LiveReload++), and more.

After using Visual Studio 2013 and Web Essentials for a few days, I don’t see myself needing or wanting to use those other editors very much in the future.

I could go on, but Mads had a great breakout session at Build covering the new capabilities in both Visual Studio 2013 and Web Essentials, and why ongoing improvements may begin coming more quickly. The “one more thing” moment came when he switched the Web Essentials Github repo from private to public, live on the stage:


If that leaves you wanting more, Hanselman also did an episode of Hanselminutes with Mads, talking about these new features and improvements.

Try it for yourself

Like Visual Studio 2012 before, VS2013 supports round-tripping with older projects. So, you can start using Visual Studio 2013 with your real projects right away. Give it a try today.

VS2013 preview: http://www.microsoft.com/visualstudio/eng/2013-preview

Web Essentials 2013: http://visualstudiogallery.msdn.microsoft.com/56633663-6799-41d7-9df7-0f2a504ca361

I wish Twitter’s direct messages were less restrictive

General By . Posted March 7, 2013

One of the best things about Twitter is that relationships there can be asymmetrical. Even if I don’t know you or follow your updates, you can still follow mine if you’re interested. Over time, we might talk in @mentions from time to time and I might realize that you’re someone whose updates I’m interested in all the time. In fact, that’s exactly how I end up following most of the people on Twitter that I’ve never met before.

It’s not that I don’t want to hear what everyone has to say, but automatically following thousands of people back would make my timeline impossible to keep up with (and even more productivity-cripplingly distracting than it already is).

One thing about these loose, asymmetric relationships constantly frustrates me though. The requirement that I must follow you in order for you to direct message me, even after I’ve direct messaged you, is too restrictive. Pointlessly restrictive.

It often makes sense to take a Twitter discussion private, but we can only use Twitter to do that if we have a symmetric relationship with each other. Sure, I can follow you temporarily or message you my email address for follow up, but why? It should be easy for Twitter to allow anyone to reply to any direct message for some period of time, or even forever.

Wouldn’t that make the direct message feature a lot more useful?

Six years of Encosia

General By . Posted December 31, 2012

six-candlesEach year, I get a little closer to not making this post before the year is over, much less on the actual anniversary of when I started posting (12/21). That’s mainly because it seems more like a “me” post instead of something that you might actually find interesting or useful and that’s not really what this site is supposed to be about. However, every time I mention skipping it, the feedback is in favor of making the post. So, here it is (and I’ll try to do better next year).

Click here to read the rest of this post »

Hear me talk about drama on This Developer’s Life

General, Podcasts By . Updated May 10, 2015

Duty Calls - Someone's wrong on the Internet!Rob had me on This Developer’s Life recently, along with several other fine folks, talking about drama on the Internet, semicolons, and generally “why so mean?

I thought it was an interesting episode. Though I’ve occasionally been sucked into “someone’s wrong on the Internet” myself, I try to avoid drama. So many debates-turned-arguments on the Internet are all downside and have almost no potential upside even if you “win”.

So, I was really interested to hear what others had to say about the topic, and they did not disappoint. If the subject sounds interesting to you (and fair warning, there’s almost no technical content in this one), you might enjoy it too.

You can stream or download the episode here: The Developer’s Life – 2.0.9 Drama

Read my article about HTML5 Polyfills on Script Junkie

General By . Posted August 10, 2012

If you’re (like me) still working on projects that must work in browsers without great support for HTML5, you might be interested in this article I recently wrote for MSDN’s Script Junkie. It doesn’t go deep into particular implementations, but focuses more on what a polyfill is, why a polyfill is more useful than an arbitrary JavaScript utility library, and then does into a few concrete examples.

Taking advantage of HTML5 in real-world sites and applications can be a daunting proposition. Though modern browsers are implementing HTML5’s new features at a rapid pace, few of us are lucky enough to write applications supporting only the latest crop of browsers. As a professional web developer, that browser fragmentation forces you to spend significant effort navigating the uncomfortable space between the promise of the future and the realities of the present. The good news is that Internet Explorer 10 and 9 support HTML5. Users are also leaving older versions of Internet Explorer. But the share of older versions is likely to remain just enough for developers to support in the foreseeable future.

However, that doesn’t mean you have to give up on supporting HTML5 in the near term. Just as there are techniques for a site to gracefully support variances like multiple screen sizes and different levels of CSS capability, it’s also possible to achieve surprisingly robust cross-browser HTML5 support. Even though older browsers lack many of HTML5’s new APIs, JavaScript is an incredibly flexible language and exposes opportunities to retroactively add new features when they aren’t natively present.

Continue reading HTML5 Now: Getting More Through Polyfills on MSDN »