Various Node.js gurus explain and explore the power of this server-side framework in this collection of videos. Two years later, the videos age pretty well, considering they cover Node.js 0.4.x and 0.5.x, and today’s current version is 0.10.x. The speakers range from Node committers to heavy Node users, and you gain insight into not only how Node works but why it works that way. Some highlights:
- Real Projects Built in Node and Developing Cloud9 in Cloud9 speak to the what works and what doesn’t in real-world use. Advice includes to use libraries like Puppet for configuration and Log Magic for logging. Cloud9 continues to grow and is an excellent way to get started with Node.
- Using jQuery with node.js introduces jsdom and how you can use this powerful framework on the server side. It implements the DOM as if it were a browser so jQuery selectors et al work fine.
- Running Node.js in Production and Node at Scale tells you how to make sure your Node app scales in real-world use. It covers how to choose meaningful benchmarks, how to structure your code, how to deploy, and how to keep your dependencies stable using package.json
- Programming a Chat Server does some live coding to show what you can do with sockets.io and Node. You can see the result at https://github.com/guille/oscon-chat.
- Network Programming with Node.js talks about the challenges of porting Node to Windows.
I wish the speakers had repeated the questions before answering them–you’re left guessing what question the answer matches. Talks mostly finished ahead of schedule, reflecting perhaps speakers new to speaking. The information is prime (albeit dated), though, and the whole offers a good introduction to the world of Node.js.
Find the videos here: http://shop.oreilly.com/product/0636920022183.do
Steps to Lock Up Linux Using Sublime Text 3:
- Log in to your Mac OS X machine.
- Install VirtualBox.
- Install a Linux virtual machine.
- Boot that Linux virtual machine.
- Install Sublime Text 3 on that Linux virtual machine.
- Launch Sublime Text 3 and open some files for editing.
- Hit Cmd+P to Goto Anything….
There you go. As we say in The Deep South, you’re locked up tighter’n a tick. You can click around, mash keys, yell, and curse, even for a long time, and you’re completely stuck.
Steps to Unlock Linux After Sublime Text 3 Has Locked It Up:
- Hit Cmd+P to uncheck the Machine > Pause (Host+P) menu item.
- Hit Ctrl+P to Goto Anything….
Don’t ask me how I know this; maybe I read it somewhere.
Enter /etc/apache2 as your Apache Server Config Directory Path
copy the generated line from httpd.conf to apache2.conf
I’m no sysadmin, as will become clear rapidly in this post. I develop software, including Web software, so I have some knowledge of Apache and how to set it up and configure it, but for anything tough I scurry to real sysadmins.
I’m currently on a project at work to replace our Sun/Oracle OpenSSO installation with ForgeRock OpenAM, so I plopped a Linux VM on my MacBook Pro and worked my way through installing OpenAM using the ForgeRock’s Getting Started with OpenAM document, which is easy to follow and works well. When I got to the OpenAM Web Policy Agent installation, however, I stumbled. I ran the commands:
$ cd /path/to/web_agents/apache22_agent/bin
$ ./agentadmin --install
I was prompted for the Apache configuration directory:
Enter the Apache Server Config Directory Path [/opt/apache24/conf]:
I had installed Apache 2.4 through apt-get, so I knew /opt/apache24/conf wasn’t correct. I poked around a bit and found /etc/apache2, which looked like a configuration directory to me, so I entered that. I got this error message:
ERROR: Invalid Apache Server Config directory . Please try again.
After trying all kinds of directories that had “apache2” in the path (see? I told you I’m no sysadmin) and getting the same error each time, and after prying open the shell script and seeing that all work was being done in Java, so I’d need a decompiler to crack this open, I paused a moment to think: What would this script be looking for to validate that the directory I entered was indeed an Apache Server Config directory? I figured it was probably looking for httpd.conf, which is the configuration file I’m (slightly) familiar with and which didn’t exist anywhere on my system. So, I typed:
I re-ran the OpenAM Web Policy Agent installation, and everything worked. The installation wrote this line to httpd.conf:
When I tested my newly-protected page, however, OpenAM did nothing to prevent access. After a bit of thought, I figured that httpd.conf was being ignored, so I copied that line into apache2.conf, and then OpenAM blocked the page appropriately. Success!
Hope this helps someone.
The Imperfect Craft | Bitsplitting.org: “I’ve seen what happens to people who cling to outdated standards of craftsmanship: they become self-righteous, bitter, and delusional. Guided only by the hallowed rules of yesteryear’s geniuses, they and their work become marginalized. Without a foothold in the modern technological context, programmers who should be great are rendered effectively incapable of developing their craft.”
One of the things I love about software development is that it always presents mountains to learn. I don’t understand developers who aren’t constantly learning, trying new things out, and experimenting. This article really struck a chord with me. I love this quote as well:
As a modern software developer, I derive as much joy from remaining relevant as I do from the thrill of identifying and solving the particular problems in my work.
Cartoons owned Saturday mornings, back when I was young enough to care. The commercials that wedged their way in and between The RoadRunner and The Justice League seemed to hawk either toys or breakfast cereal, all of which I longed for. My mother decried “sugar cereal” and preached the virtues of rolled oats.
One particular cereal commercial that lingers in my dwindling memory showed various calamities creeping up on the blissful muncher. Each time, at the precise moment preceding attack and doom, the happy eater would show his or her spoon spelling out the calamities’ titles in Alpha-Bits (“MONSTER”, “TORNADO”, “BOA CONSTRICTOR”), declare, “I ate ‘em!”, and shovel the coveted sweet crunchiness down the hatch. The monster/villain/brute would promptly disappear. It was magical.
Today, I was working with a web project in Eclipse that had various dependencies and Gradle builds and GlassFish deployments and an Error in the Problem view had me at an impasse. It was some nonsense about a Validation error, with key pieces of data (like an explanation of what failed to validate glaringly missing). I tried turning off validators, but that hung Eclipse. I tried restarting Eclipse. I tried refreshing the project. I tried rebooting my Mac. No dice. Finally, I right-clicked the validation error int he Problem view to see if it would offer a menu.
One of the options was “Delete.”
I tried it.
I ate ‘em!
Of course, Stack Overflow already knew that. It always knows.
I was filling my gas tank the other day and saw this sign on the pump:
Apparently, it’s easier and cheaper to slap a sign on a pump than to fix the software.
I puzzled over this bug a bit; why would a gas pump refer to high-ankled footwear or English trunks? Then I realized it probably refers to “Insert Boot Disk”–I guess there’s some corruption when accessing the string table, perhaps, and sometimes the pump displays the wrong string when prompting for a ZIP code.
“Enter Data,” though, sounds like pure laziness.
Last Friday, the operations and infrastructure folks where I work were swinging the non-production environments to a new datacenter. The development managers decided to use this opportunity to challenge the developers to a “codefest”–a 1-day programming challenge. The rules boiled down to:
- You must come up with your idea beforehand and submit for approval
- Teams could be 2-5 people
- You cannot write ANY code beforehand, but could set up your environment, install libraries, etc.
- Coding starts promptly at 8:00 AM and ends precisely at 4:00 PM
- Scoring criteria:
- Completeness: 33%
- Code Quality: 33%
- Cool Factor: 34%
- Bonus: Usefulness to the company: 1-5%
- Cash prizes awarded to the top three projects.
What a great idea! I was amazed to see what sorts of projects people came up with, and to see the execution of a finished app in 8 hours. Here are some of the apps produced:
- Use Benford’s Law to detect fraudulent medical claims
- Use Google’s Prediction API to analyze and score customer feedback
- Create both a REST service and a web front end for searching ICD-10 codes
- Text a physician with some notification, differentiating between Protected Health Information (PHI) and non-PHI notifications, and sending a secure link only for PHI notifications
- Using a microcontroller, bluetooth board, create a light display showcasing our company’s new logo, and create an Android app to control the light show through various light patterns
- Create an iPhone app that uses the characteristics of a two-dimensional skeleton and learning algorithms to teach a figure how to walk.
I worked on the last item with Michael Privat. The plan was that I would write the piece to take a picture of someone (against a solid background), remove the background, and walk them through identifying the rectangles containing their various body parts. Those images would then be used in the character that learns how to walk. Michael would write the cool, hard stuff: to make the character learn how to walk. We would be meeting in the middle.
I didn’t quite meet him, though. I finished the front end to take or select a picture, store it in Core Data, display a grid of pictures in a UICollectionView, and remove the background from a given picture. I was just starting the UI for selecting body parts when we realized it was 3:30, and there was no way I was going to finish. Luckily, Michael had banged out the algorithm for the learning, walking figure, so we grabbed an image from the Web, cut it up, and used those images. My poor code got the boot.
How’d we do? We took second, losing only to the flashing lights. The panel of judges consisted of several folks from Senior Management (CEO, CTO, CFO, HR VP), Directors, and Managers. Nobody showed code, so the “Code Quality” criterion didn’t have an impact.
Lessons learned? I should have fudged a little and learned how to remove the background from an image beforehand. I found some posts on Stack Overflow, but felt determined to understand them before blindly using them, so I lost some time there. I also had never used the UICollectionView; it wasn’t difficult at all to use, but I still had to learn which delegate methods to override and I could have saved some time if I’d just used a UITableView. Finally, making the users define and rotate rectangles to select body parts was too ambitious, given the time constraints. I should have superimposed a silhouette on the camera and cut the picture at predetermined points. I had a lot of fun, though, and added a few more tools to my belt.
If I were entirely honorable, I would give Michael my half of the $750 second place prize. I’d already told him that I’d be using any winnings to take my team to lunch, though, so I’m making him cough it up.
Kudos to management for this activity–I can’t wait for the next one!
Why your password can’t have symbols—or be longer than 16 characters | Ars Technica: “The password creation process on different websites can be a bit like visiting foreign countries with unfamiliar social customs.”
(Via. @lars on App.net)
When I was young, I remembered everything. Now I am old, and I remember nothing. And I’ve surrendered to password madness. I’ve stored all my passwords in safe since 2007, with my encrypted data file in Dropbox, so I can access it from any machine that runs Ruby. This way, I have to remember only one password, which is long and complex and just onerous enough to type that I feel safe without feeling overburdened.
Unfortunately, neither my iPhone nor my iPad can run safe, so I bought 1Password and supplement my safe usage with that. I even use the same onerous password for 1Password that I use for safe, but for some inexplicable reason I used a different password on my iPhone that I no longer remember, so it’s useless to me. I should delete everything and reload, but I’m ashamed to admit I did that once before.
For the website I work on for my employment, we have several different environments with different user IDs and passwords that expire more rapidly than I can type, so I just reset them everytime I log in and mash the keyboard like a Whack-A-Mole for my new passwords that I’ll never remember.
Our new lunchroom food system got smart, though–the automated checkout system eschews passwords for thumb scans. No passwords stand between me and Coke Zero!
More on “Where next for Grails”? • GRAILS.IO: “Grails 3.0 will be a reinvention of the framework that you love, and we will be making some hard decisions about what we support in terms of backwards compatibility. With Grails 3.0 we plan to allow the creation of applications in different architectural styles. Servlet API applications will always be supported, but we plan to make ‘create-app’ extensible, so that Grails can be used to create a range of types of applications (Batch, NIO, Netty, ‘static void main’ etc.).”
I did some Grails work a few years ago, and really liked it. Reading this post made me realize I miss doing Grails and Groovy–I’ll have to find an excuse to get back to them!
BTW, however much this domain’s name seems to derive from Grails, I’d never heard of Grails when I registered grailbox.com in August of 2006. Some web poking reveals that work on Grails got underway in 2005, but I didn’t hear about it until much later. My vision for grailbox focused on office productivity tools: (holy) grail + mailbox. I guess I haven’t done much on that front, though!
A $5 app isn’t expensive: Customers need to help fix the App Store economy | Macworld: “You don’t buy a Kindle just to enjoy the dictionary and manual that come pre-installed on the device. You shouldn’t buy an iPhone to enjoy only free apps, either. You’re cheating yourself, all because we’ve become conditioned to feeling that $5 is a lot to spend on an app. It’s okay to pay for good products.”
That’s the best line in a great article.
I’m astonished at how little people value software these days. “Didn’t have feature X! Complete waste of a dollar!” Yet they waste dollars willy-nilly by leaving lights on when they walk out of rooms. Great software can only be produced by great skill and great effort. Use great software, pay for it, and you’ll be happier.
- The RSS feed for this twitter account is not loadable for the moment.
Follow @hoop33 on twitter.
What I’m Writing
- January 2014 (3)
- August 2013 (2)
- July 2013 (2)
- May 2013 (3)
- April 2013 (6)
- February 2013 (1)
- January 2013 (1)
- November 2012 (6)
- September 2012 (1)
- August 2012 (6)
- July 2012 (10)
- June 2012 (4)
- May 2012 (7)
- April 2012 (4)
- March 2012 (8)
- February 2012 (7)
- January 2012 (7)
- December 2011 (1)
- November 2011 (1)
- September 2011 (4)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (4)
- April 2011 (2)
- February 2011 (1)
- January 2011 (1)
- December 2010 (3)
- November 2010 (3)
- October 2010 (4)
- September 2010 (6)
- August 2010 (96)