DDD-NYC
To be announced shortly.
Please don't forget to bring a photo ID to get access to our meeting location.
New York, NY 10036 - USA
Wednesday, November 7 at 6:30 PM
Attending: 4
Details: http://www.dddnyc.org/events/tqznpyqpbkb/
DDD-NYC
To be announced shortly.
Please don't forget to bring a photo ID to get access to our meeting location.
New York, NY 10036 - USA
Wednesday, October 3 at 6:30 PM
Attending: 4
Details: http://www.dddnyc.org/events/tqznpyqnbfb/
DDD-NYC
To be announced shortly.
Please don't forget to bring a photo ID to get access to our meeting location.
New York, NY 10036 - USA
Wednesday, September 5 at 6:30 PM
Attending: 4
Details: http://www.dddnyc.org/events/tqznpyqmbhb/
Over the last few months I have been having a lot of fun converting my personal site (http://drusellers.com) from a pure static html site, to one that uses a back end server side language.
When I first started the main purpose was to learn a little more about python. So I started off using Flask, a micro framework for python. Flask is a lot like Sinatra for ruby and the comparison was a lot of fun because my good friend Ryan Rauh (RyRy) was writing a site in Sinatra at the time so we were able to compare and contrast the two approaches quite easily.
As I learned more about flask and all that it could do, I was impressed by how much I could do with so little. It served as a solid reminder that we should strive for simpler solutions.
In addition to learning python I also took the time to dive into LESS. Organizing the CSS content of applications has always been difficult for me. Finally, with LESS I had variables and the ability to nest selectors. Basically, all of the things that I have wanted CSS to do for a very long time. I started out using the runtime compilation modes of LESS, but as I learned more I eventually switched to running the watch mode on the compiler and then stripping that functionality out of the app. Right now, I really like this approach. It feels more like PROD vs DEV, but I still have the ability to iterate quickly. The real choice to use LESS, was that the popular CSS framework from Twitter called Bootstrap had just launched. By studying their approach and trying to deconstruct things I have learned a lot about CSS and its application to better CSS approaches.
But as with all things in the technical world, a change was on the horizon. That change was SASS/SCSS. RyRy read a post somewhere comparing SCSS and LESS and he came away with the impression that SCSS RULED, and LESS DROOLED. This was one of those moments, where I gave RyRy a stern look and then sat down to start converting my website from LESS to SCSS, because when the guy you ask all of your questions too, changes directions sometimes its just easier to go with the flow. Thankfully it wasn’t that hard, allowed me to revisit my CSS and improve things further.
Around the same time, I discovered semantic.gs, a SCSS friendly grid system, finally I can get rid of the BS classes like span-4 and what not that have been plaguing me since I first found blueprint.css and 960grid. Whoot! I have been able to further clean up the website’s CSS approach.
Well, of course the project can come to a close quite that simply. After improving my CSS and getting an understanding of python, I of course, had to completely rebuild it something new and shiny. Damn, my attention span.
So, yeah. Node.js the new shiny language/framework. My JavaScript skills have always suffered, so I rationalized changing my backend code to JavaScript as a means to improve my JS skillset. So, I converted my site again, learned a lot about JavaScript in the process, melted my brain trying to get things to work in this under powered language (under powered because I am used to my language providing much more to me).
So now my site is running Node.js – its a whole lot cleaner and easier to work on. I love how simple the underlying code is, and I have really learned a lot about some of the new languages and frameworks out there.
As Yavor said, Azure SDK for node 0.5.4 is out with a bunch of goodies!
Closing a security holeRecently a vulnerability was detected in node.exe that could theoretically allow an attacker to perform a header-spoofing attack. Version 0.6.17 contains a fix for this attack. We take security very seriously, so we’re releasing this update which includes node 0.6.17 to remove the vulnerability.
Please go download the latest bits to remove this vulnerability!
Less angle brackets, more YAML
iisnode offers some really nice hosting capabilities like spinning up and managing multiple node procs, allowing access to logs over HTTP, providing good debugger errors in the browser for diagnostics and supporting node-inspector for debugging.
To access any of these benefits however you have to travel the sea of angle brackets known as web.config. For .NET / Windows developers, this is the norm. However, we heard a lot of feedback from folks in the node-a-verse, in particular coming from on a Mac / *nix that this feels very strange that they have use web.config in order to config node-specific things in Windows Azure, especially in light of the other offerings out there. Looking around we saw that a common pattern was to use a simple key-value format for specifying similar settings with YAML being a very popular format.
iisnode.ymlAnd so our team racked our brains a bit, got a bunch of feedback and iisnode.yml was born and implemented by Tomek! iisnode.yml is an optional file that sits along side web.config. It allows you to set all of our iisnode settings without having to ever touch web.config. Below is a really simple example.
# This is a really simple iisnode.yml file node_env: development devErrorsEnabled: true logggingEnabled: true
The settings set the node_env environment variable to development, enables logging all node.exe output and enables developer errors.
For example, the code below has an error in that it requires a module that does not exist, also it uses spaces in the module name.
var http = require('http'); var notPresent = require('some awesome module'); http.createServer(function (req, res) { throw "error"; res.writeHead(200, {'Content-Type': 'text/plain'}); notPresent.doSomethingAwesome(); res.end('Hello World Again\n'); }).listen(process.env.PORT);
If I don’t enable devErrors this is what I get when I do a request.
However, look at what I get when I enable devErrors with logging.
Above you an see that an error occurred because it could not find my wacky module.
Developer errors is a pretty cool feature that allows iis to output in the response any errors that occurred right in the browser. Combined with logging, it’s really useful for debugging on a remote/staging server.
Of course you don’t want anyone seeing that in your live production site, so you should probably shut that off.
myfile.ymlBy convention we look for iisnode.yml. If you are not happy with that name however, you can set your own name in the iisnode element of web.config by using the configOverrides property.
<iisnode configOverrides="myfile.yml"/>Note: configOverrides also allows you to do environment variable expansion. Thus instead of having a static file name you can have a name that includes an environment variable value. More on that in the future.
But wait, don’t I still need a web.config when I publish to Windows Azure?
Great question! Today you still need a web.config though as Tomek said that can be boilerplate and you don’t have to look at it. Tomorrow however….
Go get the latest SDK here.
You can read about the event here.
Every so often, you get the opportunity to participate in a process that affords you the opportunity to talk to those who make policy that affects our personal and business lives. During the Fly-In, a group of us engaged with members of Congress on topics that ranged from privacy, bandwidth and entrepreneurship.
My two big issues: privacy and the available bandwidth spectrum.
Privacy:
What people need is the ability to provide informed consent. It’s very difficult, if not impossible, for government to formulate regulations that covers every conceivable behavior. All these regulations serve to do is stiffle innovation and harm those that play by the rules. What we do know when we see it is bad conduct. The FTC has broad enforcement and police power and they need to use the power Congress gave them. Punish the bad actors and make an example out of them to provide the necessary incentives to handle online privacy the right way.
Bandwidth Spectrum:
Recently, Congress mandated FCC Spectrum Auctions. Are you tired of dead spots and sluggish performance over 3G/4G networks? Did you know the carriers stand at the ready to fund the billions of $’s necessary to put up and light up more towers? To make that work, the amount of available bandwidth has to be increased. Congress has taken an important first step – but more needs to be done. Increasingly, we rely on more than just plain text. Mobile Apps are providing (at least are trying to provide) rich content. What’s holding things back? Lack of available bandwidth. The bandwidth is out there, we just need to make it available and use it.
Recently I had the privilege to talk to my good friends Richard and Carl about the work we’re doing enabling Node.js development with Windows Azure along with our friends in the node community. It was also a great opportunity for me to practice my new subdued Glenn persona You have to listen to believe it!
http://dotnetrocks.com/default.aspx?showNum=763
Carl and Richard talk to Glenn Block about node.js on Azure. Glenn digs into how node.js has grown in popularity, and points to the Cloud9 IDE as a development environment in the Cloud as an example of a node.js application – which happens to be able to build node.js applications. And Cloud 9 can deploy node.js to Azure. The conversation digs into the Azure stack and the diversity of technologies (including node.js) that run great in the cloud.
Conference season is coming again. I am excited this year that I’ll be finally speaking at goto AND that I’ll be speaking at the first QCon NYC. The topic, well you guessed it, node.js and Windows Azure.
May 21-23
First stop will be Copenhagen where I will be speaking at goto in the “Microsoft, beyond the echo chamber track” I am really looking forward to this event. I’ve watched it for years before when it was JAOO but never got the chance to attend. I am happy to say this year that will be changing. I hope to see you there!
Presentation: Breaking the Barrier with Node.js on Windows and Azure
June 18-22
I’ll be speaking at QCon NYC in the “Battle of the Clouds track”. If you are planning to attend, you can save $100 by using this promotion code when you register: BLOC100
Presentation: “Unlock your Inner Node.js in the Cloud with Windows Azure”. I’m planning to show some really cool stuff that we have coming down the pike soon at this event, so be there!
After the event, I’ll also be delivering two half day tutorials on node.js.
If you are looking to get up to speed with node or to start deploying node apps to Azure come to these tutorials.
While I am in town for both events I’ll be doing a bunch of user group meetups and such. I’ll cover that in my next post
DDD-NYC
To be announced shortly. Please don't forget to bring a photo ID to get access to our meeting location.
New York, NY 10001 - USA
Wednesday, August 1 at 6:30 PM
Attending: 5
Details: http://www.dddnyc.org/events/63240862/
DDD-NYC
To be announced shortly.
Please don't forget to bring a photo ID to get access to our meeting location.
New York, NY 10036 - USA
Wednesday, August 1 at 6:30 PM
Attending: 4
Details: http://www.dddnyc.org/events/tqznpyqlbcb/
DDD-NYC
Topic: Supple Design One oft-overlooked element of DDD is the focus on "supple design" - a collection of proven design patterns for improving the quality of any software. We'll spend time discussing patterns from "intention revealing interfaces" and "side effect free functions" through "assertions", "contextual contours" and DSLs. Speaker: Peter Bell, Senior VP Engineering, General Assembly
Please don't forget to bring a photo ID to get access to our meeting location.
New York, NY 10001 - USA
Wednesday, May 2 at 6:30 PM
Attending: 32
Details: http://www.dddnyc.org/events/53351752/