Why do you CoffeeScript your JavaScript?

I was asked this the other day: Why don't you just write your code in JavaScript directly? As in, why would you use a langugage that abstracts JavaScript, which doesn't require compiliation?

That second question is also the answer: I want a compiler, because a compiler can optimize my code.

For Example

Remember our script from the last post? Well, let's see that same thing in CoffeeScript.

JS Bin

Now I can compile it and get optimal JavaScript.

coffee myfile.coffee --compile

I don't need to worry about the nuiances of the language syntax nor what "optimal" means for JavaScript. There is a whole community of people worrying about it for me which is put into the compiler.

Plus, like I said in the last post, JavaScript doesn't really look like other languages. Sure, it's easy once you get used to it, but so is eating broken glass.

I have a background in C# which is more of a so-called "traditional" OO language, like Java, which I find easier to read.

CoffeeScript, although definitely not like C#, is easier for me read though and understand. The more I worked with it, the easier it became as the whitespace worked in my favour. Plus, I hear people that like indentation languages like VB.NET or Ruby, think CoffeeScript feels familiar**.

**When I say "I hear", refers to of some of the anecdotal I have had over the past couple of years with collegues. So take that as you will.

But JavaScript Has "Normal" Class Definitions and Stuff

You're right...in the ES6 standard. Plus, property modifiers kinda go hand-in-hand with class defintions and that is expected in ES7.

I want to support platforms that are out now, not next year or the year after. These platforms came out before that spec, and so they don't support it. I'd have to use a compiler that abstracts me away from how JavaScript actually works just so I can use language features that will eventually be in CoffeeScript anyway.


"The golden rule of CoffeeScript is: "It's just JavaScript" - Coffeescript.org

...I don't learn to use features that don't already exist JavaScript. When the compiler supports ES6 JavaScript, the new (more traditional) keywords will be supported there too.

Not that I think abstraction languages that do that are bad (e.g. TypeScript), but I think that CoffeeScript is a nice medium that teaches me JavaScript functionality, with a simpler syntax, while giving me tools that make cleaning up and optimizing my code easy.

For example...

The IE team recently announced the support of ES6 features that are "In Development".

Internet Explorer is something of a major player on the web, so I probably want to support those users too.

The Point

I like CoffeeScript because it still allows me to learn the features JavaScript, while giving me a compiler to write optimal JavaScript, along with a simpler, cleaner syntax, in my opinion.

This is definitely more of a preference when coding JavaScript and isn't really necessary. I just find that writing CS versus JS was just more intuitive with my background.

Thanks for Playing. ~ DW

Why do I JavaScript?

The answer is simple: I don't want to limit about my platform options on day one.

JavaScript is the native language of that whole "Internet" thing, plus it's supported on a ton of platforms natively in one way or another.

For example:

DW JS FAQ - Demo

Nothing special, right? In fact, the syntax doesn't even really look "normal". The point is the code can run on:

I know I'm over simplifying things, as the code won't just run automatically on all these platforms. The hard part isn't getting it run on the platform, but ensure that your user's platform can run your code.

Unless you're some kind of name, or have a large scale brand or buzz or investment backing your idea, you likely aren't going to sway your user away from their device(s) of choice.

So, I ask once again: why would you limit yourself from day one?

The Point

I realize there are a lot of things I'm not covering here; such as the fact that native apps have richer functionality when written in their native programming language.

That is totally true.

But, if you don't have a specific reason for sticking to a single platform, why would you limit your code base right from the start? Especially, when the native language of that whole "Internet" is JavaScript?

In any case, that is why I JavaScript and why I think you should JavaScript too.

Thanks for playing. ~ DW

The MVP Network is Awesome

Over the weekend I hit a Windows Azure issue in my side project that totally blocked me. Yesterday, I reached out on Twitter, and the Canadian MVP network picked it up and helped me solve it in 30 minutes.

You can see the full conversation here


I know that this isn't special to a lot of people. When we have issues with code, products, or whatever, social media comes to the rescue with help.

This is different.

This is my network that is shared with the the world. I'm an MVP in Internet Explorer because of my work in the HTML space. Tyler is an MVP in Windows Azure. D'Arcy is an MVP in ASP.NET.

All of us are local and know each other, but the fact that I could reach out and D'Arcy highlights it, and Tyler comes to the rescue to review my code on Github and find a solution is awesome.

Plus, he even apologizes (how Canadian, am I right?) about not responding over the weekend.

It's not awesome just because the problem was solved. It's awesome because of the level of expertise available to me to solve a problem on a side project. It's awesome because a "consult" to do that same sort of thing would have taken a long time to sort out, rather than a 30 minute set of tweets back and forth.

It's awesome, because I got helped because they wanted to help, not because they had to.

I realize that this is sort of patting my team on the back, but I thought I should take a moment to reflect on how amazing the Canadian MVP network has been to me over the years, and hopefully in the years to come.

Ask Tyler for help on Windows Azure here on Twitter and here on the web. You can ping D'Arcy on ASP.NET/IIS and all things technology here on Twitter and here on his blog.

Thanks for playing. ~ DW

IE on Reddit - Highlight Reel

To me, this is IamA (I am a something ask me anything) is historic with web platforms.

Thursday, August 14 was the day IE showed the Internet it changed. And get this...

...The Internet conversed with the IE team.

Here's the link for yourselves to read, and I strongly suggest you take a look and read through for yourself. Are the highlights, IMHO.

Great work IE team, and great work Redditors!


Do you believe the reputation of Internet Explorer is something you can change? Link

I hope so. Sincerely. A lot of things are changing. We announce the end of support for too old versions of IE or for out of date ActiveX control. This is a first step to reduce fragmentation which is really a pain for web developers (Which I'm part of :)) - David

How do you feel about the fact that most people reading this AMA aren't using your browser? Link

Challenged :) - Anton

what is the IE team doing about fixing accessibility related bugs? I have filed quite a few, but have not actually seen any implementation changes as yet. some bugs are listed in the implementation testing results i conducted for HTML5 http://stevefaulkner.github.io/html-mapping-tests/ LINK
and on http://www.html5accessibility.com/

I may help for this one. Can you send me repro case at [email address removed]? I will add them to our bug tracking system - David

What's the biggest issue you've ever found in your browser? LINK

I work on composition and rendering, so my bugs in pre-release builds tend to be pretty severe from a symptom perspective (e.g. "Uhhh... GMail isn't rendering today, what did you break").

We'll catch super-severe bugs like that before we ship of course :)

-Matt Rakow

Are there any plans to revamp the extensions stores and the like for IE (to match Firefox/Chrome)?

Is there an overhaul for the desktop version of the IE UI in the works?

Will you guys/gals get off the Windows release cycle soon and release monthly updates to IE (more than just bug fixes/security patches but features like Chrome/Firefox)?

Any chance that IE will become platform agnostic?

Any chance a uservoice/bug report system for the community will release?

WebRTC support anytime soon (maybe with Skype support)?

I'm a big fan of IE but after using it as my daily driver some of the above would make it a lot easier to maintain as my go-to browser. Small bugs here and there can be annoying and having no way to suggest features or report bugs can be annoying. I never know if you guys will work on/fix anything I have on my mind (or other users minds I'm sure). Since you guys seem to be much more open I was hoping this could be a way to get a glimpse of the future. LINK

The full and long response to each and every question

Thanks for Playing. ~ DW

A Lesson in Humility

This long weekend I changed up the formula in stream and did some stuff off the cuff with respect to setup and playing consoles I hadn't streamed before.

It didn't go well.


Afterwards, I felt devistated. Although the audience was minimal, there was still this feeling of total failure.

Why? Well, because being that I have done plenty of public speaking in front of an audience, I should have known better. You don't go off the cuff and just start setting up new hardware in the middle of a presentation.


The next night, I was really worried about streaming and failing again, but I learned my lesson.

For starters, I went through my setup checklist far before I picked up Cory to stream with me and got the hardware setup, some backup hardware and every game in my N64 library (we streamed N64 last night and you totally should have been there).

Second, when Cory arrived nice and early, I did a sound check with him and made sure everything worked with him in place. It took some tweaking, but we got the sound check going and made sure that we were good to go with a basic theme for the evening.

Expect the Unexpected

Even with all my planning and paranoia, we totally went "off script" (i.e. against the original plan we reviewed two hours prior to streaming).

After supper and a couple of beverages, we decided before we went live that we would go off script and include half of twotwitchygirls off camera (and on in the end) and remove the technology complexities of switching consoles mid-stream.

The Point

Last night's stream was really fun, and I thought it went really well. We had great audience engagement from both IRL (In Real Life) people and random Twitchers. Overall, a total success.

What I learned this weekend was that you need to know your threshold for change. In this case, my current limit is the hardware setup as the streaming hardware and software is fragile, and changing things on the the fly in front of a live audience isn't good.

BUT, with that being said, it doesn't mean that you shouldn't be able to handle some variety. Having the whole N64 collection ready to go and being able to bring in a third into the conversation worked out really well!

In conclusion, this was a great experience for live streaming and I'm feeling like I'm finally getting the hang of things. I have learned there differences with being live in front of people for a tech-con versus entertaining people with video games they like to see played.

Thanks for playing.

~ DW

Whatcha doin' DW?

Lot's of stuff really, but here's the big ones at 50,000 feet.

Reader Beware: This is just a personal brain dump. If you're looking for technical content, this isn't the post for you,

Hypertext Gaming and Twitch

The original plan for this was to focus all of my streaming on HTML5 related content. I planned it all out, and with doing three streams per week, for about 2 hours each stream, lead to a realization: I need a lot of content to fill that time.

Ultimately, it needed to change, and it has. Now I just do games that I want to do and "analyze" them in an attempt to eventually try and create my own game.

Details of when/why/how of the game are still unknown. But, it's refreshing to do something that is close to my heart and really a departure from what I'm used to sharing on the web.

If you feel like joining the conversation, head over on Sunday, Monday, or Thursday at 9pm CT to chat games, HTML5, or whatever is on your mind.

Hypertext Gaming...is it still a thing?


Doing the Twitch stream has lead me down a path of learning how to do video content, and think down that line. For a long time, I've had content planned out for video casting, but wasn't familiar with the tools.

Doing a livestream changes that, and I'm hoping to have some content (including HypertextGaming as a show) soon.

Codin' Stuff and Projects

Over the past year, I've pretty much reinvented myself as a developer by learning how to work without an IDE and using nothing more than a terminal and some kind of text editor.

It's been a success, and at this point I use a browser-based IDE to code sometimes, or VI, Notepad++, or gedit. I've even moved onto a Linux box to do web development and deploy it to the Azure cloud. Kinda cool, if you ask me (but I'm biased).

Check out my progress on Github to see my commits. You can expect a series of developer videos on this in the coming months, as I've been planning it for a while.

We'll see how it goes, now that the blog is upgraded and setup with all the bells and whistles I wanted.

Blog/Vlog - Make Some Content

For the longest time I've wanted to vlog alongside my text-based blog, but have held off. With the Twitch stuff, I have the equipment to record things at the level of quality I want, and it has allowed me to work on my video conversation skills.

We'll see where this goes, but I see this being the first set of video content I start posting on YouTube.

Oh, you've probably noticed some changes to the site. It's going to do that as this is one of the projects I've been tinkering with that is going to turn into a video series if I manage to pull it together.

Feel free to add comment to the bottom of the screen.

Okay, that's enough of a personal update. I'll be in touch soon, I'm sure.

Thanks for playing.

~ DW