Node PDX – Introducing Scott Hanselman, Tracy Abrahms, Matthew Lyons & J Chris Anderson

Welcome to iteration 3 of introductions.

Scott Hanselman is presenting…

Azure for the non-Microsoft Person – How and Why?

Scott Hanselman
Scott Hanselman

Scott is a web developer who has been blogging at http://hanselman.com for over a decade. He works on Azure and ASP.NET for Microsoft out of his home office in Portland. Scott has three podcasts, http://hanselminutes.com for tech talk, http://thisdeveloperslife.com on developers’ lives and loves, and http://ratchetandthegeek.com for pop culture and tech media. He’s written a number of books and spoken in person to almost a half million developers worldwide.

For a dose of Scott, check out how to scale to infinity by doing NOTHING!

Join Hanselman as he digs into the open source SDKs of Windows Azure. Let’s access Azure from the command line and deploy and redeploy with Git. We’ll fire up Linux VMs, setup Mongo and run node.js apps in the cloud. We’ll look at things like SendGrid and New Relic. The future of the cloud is open and it’s a hybrid. This very technical session will cover Windows and Mac, .NET as well as pinching pennies in the cloud.

Tracy Abrahms is presenting…

Punching Rocks: my intimate adventure with rock climbing and becoming a programmer

Tracy Abrahms
Tracy Abrahms

Tracy tells a story, “A funny thing happened at the rock gym… I kept running into programmers. Rock climbing is a constant challenge. Physical? Hardly. Tired muscles is a concern once you’re two pitches up and can’t figure out the next move. I’m afraid of heights! The psychological and mental tenacity required to complete a wall feels eerily similar to the daily challenges of the Programmer. You will commit yourself to situations that you pretty much HAVE to find a way out of. Sound familiar?

Malcom Gladwell’s 10,000 hours–I’m not that far in. How are people learning to program nowadays? MOOCs, tutorials, workshops, communities(meetup.com), books, standard CS degrees(what of non-tech degrees?), internships, apprenticeships, code schools. What am I doing? What have I done? How many callouses have I build in the process? Experiences shared from my own perspective and others I have met on my journey have shown me a number of great ways to help move forward those willing to take up the challenge.

Finally, what can I do, along with knowledgeable and helpful Node.js programmers, to build the knowledge base and accessibility into the community? How do I get programmers hooked? And how can I convince all of these brainiacs to get out and punch a few rocks?

Matthew Lyon is presenting…

Let’s Make Music

Matthew Lyon
Matthew Lyon

I got to work with Matthew @mattly for a short period while I was helping out at AppFog a while ago. I also have had the great fortune of catching Matthew talk about JavaScript magic and more!

Also a homebrewer, hacker, artist, photographer Mattew Lyon is coming to give us a lesson on making music. He describes his course as thus, “Music happens over time and so does asynchronous code. Therefore, let’s write music in Javascript! We’ll build a network sound sequence server that will talk to freely-available softsynths and possibly an HTML5 Audio API, covering how to model things such as drum patterns, melodies, oscillators and pattern banks.

J Chris Anderson presenting…

Hands On Realtime Text Analytics

J Chris Anderson
J Chris Anderson

J Chris just recently returned to Portland because of many different reasons after hacking in the San Francisco area. If you know what livable streets are (re: Bike Portland and if you intend to stay and live in Portland, you probably should get in on this, livable streets are too good to merely pass up), you’ll want to keep tabs on J Chris’ efforts ongoing, I definitely will be! J Chris also refers to himself as a hacker dad, couchbase cofounder & mobile architect.

With “Hands on Realtime Text Analytics” J Chris will present to us  as described:

A common problem in large scale computing, is coordinating workers when they can be scattered across compute nodes. For workloads like this, atomic operators like increment and decrement reduce contention between distributed processes.

In this talk I’ll show a full text analysis tool which ranks words in the Twitter firehose. By storing each token in a key based on its characteristics, we can provide word rankings both globally, as well as over time and space.

We’ll show the running application, and take a tour through the code, as well as discuss cluster sizing and how it is impacted by variations in the input data stream.

For instance a tweet in English from San Francisco might say “Go Giants” so counters for 2012:go and usa-sf:2012-07:giants (among a few dozen others) are incremented. Even using memory like this, the counts from a full corpus of English text would only take a few gigabytes to hold, making this architecture more efficient than a traditional index-and-rollup approach.

Are you signed up?  BUY YOUR TICKET FOR NODE PDX HERE

Want to learn more? http://nodepdx.org/

Want to know the dates? http://nodepdx.org/

Want to know who else is speaking? Stay tuned here or go check out http://nodepdx.org/!

Have a last minute request, idea, comment or a speaking proposal? http://nodepdx.org/

Node PDX – Introducing Ward Cunningham, Nexxy, Jerry Seivert and Hannah Fousanon!

Here’s the first of a series of introductions for the upcoming Node PDX Conference here in bright and sunny Portland, Oregon!

…and no, that isn’t sarcasm, it’s the summer time now so we’re allowed to have sun and warm weather! With that, the speakers for Node PDX!

Ward Cunningham presenting…

My Sensors Love Node.js

Ward Cunningham
Ward Cunningham

Who’s Ward? In his own findings, “The Oregonian describes me as the Old Growth of the Silicon Forest. I appreciate the thought but move way too fast to be compared to trees. Think of me as your intellectual immune system separating good technology infections from bad. Ditch that fever. Go with node.

As Ward describes this presentation, “I’ve tested a half-dozen home sensor integration technologies over as many years and learned something important about architecture with each generation. I’ve replaced Arduino hardware with Teensy which offers much better USB support. I’ve replace C++ with Perl then with Ruby/Sinatra and now Node/Wiki each time feeling the fresh air of a more friendly and dynamic environment. I’ve plotted results with ascii-art, java-2d, flot and now d3.js which can be a career in itself. I’ll share the good parts of each of these and suggest how you will know when it is time for you to move on.

Nexxy presenting…

Realtime Hardware with Node.js

Nexxy
Nexxy

Key facts about Nexxy:

  • Nexxy has been hacking on things in one way or another SINCE THE BEGINNING OF TIME.
  • Nexxy is also known for her occasional use of hyperbole as a literary device.
  • Nexxy first began hacking arduinos with node while she was working with a vegan strip club named Casa Diablo.
  • Nexxy is now enjoying her work with Ninja Blocks as they take over the world with the internet of things!
  • Nexxy inexplicably decided at the last second to write this section of the proposal in 3rd person, bullet form.

…and I have recreated this proposal section here for your information!

Join Nexxy & all for another installment of “Realtime Hardware with Node.js” as we take a look at just how exactly one should go about making a fool of themselves on stage with a bunch of electronics. We will cover the basics of getting started with hardware, demonstrate some cool tech, and conclude with a super rad (slightly hazy) and interactive dance party of epic (modest) proportions — if everyone cooperates. Questions are welcome throughout the presentation and audience members are encouraged* to participate.

* bribed with stickers

Jerry Seivert presenting…

Know Your Environment

Jerry Sievert
Jerry Sievert

Jerry is a conousier of fine beer, drinks and other assorted things. The relevant list of coarse includes Lego, trains and JavaScript. His own words of these things, being a drink or beautifully coded up application, “I love to build things!” summarizes up Jerry’s love of building perfectly!

Jerry will pose the question, “What if your software knew about its environment and could react?” With very basic electronics skills, and the ability to read a datasheet, you can be well on your way to a smarter and more responsive application. We will discuss some common hardware protocols and how to interface your code with them to build something all “teh aWeSOME“!

Hannah Fousanon presenting…

Optimizing Single-Page Javascript Websites for SEO

Hannah
Hannah

Hannah Fouasnon is a cofounder and lead engineer at DJZ based in San Francisco. While a full time hacker, she’s currently focusing on creating DJZ’s next single-page javascript website optimized around playing media and games. Former projects include Luckysort, a big-data, text-analytics company based in Portland, OR, where she implemented a large portion of the node.js architecture.

Hannah will cover how to create single-page javascript websites and enable developers to more easily support advanced web client features. For example, the persistent playing experience on soundcloud is supported by a single-page backbone.js architecture. One of the downsides when deciding on this architecture is that web crawlers have trouble indexing content, which can hurt seo and facebook sharing.

This presentation covers how we solve this problem at DJZ. The example will be a simplified angular.js application optimized for seo using primarily phantom.js. Viewers can follow along with code on github (link to come).

Are you signed up?  BUY YOUR TICKET FOR NODE PDX HERE

Want to learn more? http://nodepdx.org/

Want to know the dates? http://nodepdx.org/

Want to know who else is speaking? Stay tuned here or go check out http://nodepdx.org/!

Have a last minute request, idea, comment or a speaking proposal? http://nodepdx.org/

Getting Github : JavaScript Libraries Spilled EVERYWHERE! Series #003

This is an ongoing effort putting together some JavaScript app code on client and on server that started with blog entry series #001 and #002.

This how-to is going to kind of go all over the place. My goal is to get github data. The question however is, how and with what. I knew there were some available libraries, so writing straight and pulling straight off of the API myself seemed like it would be unnecessary work.

The github API documentation is located at http://developer.github.com/v3/ with the list of client libraries for ease of access listed at http://developer.github.com/v3/libraries/. The first two that I forked and cloned were the gh3 and npm installed the octonode and node-github libraries.

Node.js Based Github Libraries

The two node based projects install via npm, as things go with node and were super easy. The first one I gave a test drive to is the https://github.com/ajaxorg/node-github project. I forked it and dove right in.

[sourcecode language=”bash”]
$ npm install github
npm http GET https://registry.npmjs.org/github
npm http 200 https://registry.npmjs.org/github
npm http GET https://registry.npmjs.org/github/-/github-0.1.8.tgz
npm http 200 https://registry.npmjs.org/github/-/github-0.1.8.tgz
$
[/sourcecode]

After that quick install I took a stab at the test code they have in the README.md.

[sourcecode language=”javascript”]
var GitHubApi = require("github");

var github = new GitHubApi({
// required
version: "3.0.0",
// optional
timeout: 5000
});
github.user.getFollowingFromUser({
user: "adron"
}, function(err, res) {
console.log(JSON.stringify(res));
});
[/sourcecode]

This worked all well and good, so I moved on to some other examples. The following example however needed authentication. To authenticate you’ll need to add the little snippet below with the username and password. However there’s also a Oauth token method you can use too, which I’ve not documented below. To check out other auth methods check out the documentation.

[sourcecode language=”javascript”]
var GitHubApi = require("github");

var github = new GitHubApi({
version: "3.0.0", timeout: 5000,
});

github.authenticate({
type: "basic",
username: "adron",
password: "yoTurkiesGetYourOwn"
});

github.orgs.get({
org: "Basho"
}, function(err, res){
console.log(res);
});
[/sourcecode]

The result is prefect for putting together a good display page or something of the organizations.

[sourcecode language=”bash”]
$ node adron_test.js
{ login: ‘basho’,
id: 176293,
url: ‘https://api.github.com/orgs/basho’,
repos_url: ‘https://api.github.com/orgs/basho/repos’,
events_url: ‘https://api.github.com/orgs/basho/events’,
members_url: ‘https://api.github.com/orgs/basho/members{/member}’,
public_members_url: ‘https://api.github.com/orgs/basho/public_members{/member}’,
avatar_url: ‘https://secure.gravatar.com/avatar/ce5141b78d2fe237e8bfba49d6aff405?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png’,
name: ‘Basho Technologies’,
company: Basho,
blog: ‘http://basho.com/blog/’,
location: ‘Cambridge, MA’,
email: null,
public_repos: 105,
public_gists: 0,
followers: 0,
following: 0,
html_url: ‘https://github.com/basho’,
created_at: ‘2010-01-04T19:05:19Z’,
updated_at: ‘2013-03-17T20:29:09Z’,
type: ‘Organization’,
total_private_repos: YYY,
owned_private_repos: XXX,
private_gists: 0,
disk_usage: 788016,
collaborators: 0,
billing_email: ‘not_a_valid_address@basho.com’,
plan: { name: ‘platinum’, space: 62914560, private_repos: billions },
meta: { ‘x-ratelimit-limit’: ‘5000’, ‘x-ratelimit-remaining’: ‘azillion’ }
}
[/sourcecode]

Now at this point there’s a few significant problems. Setting up tests of the integration variety for this library gets real tricky because you need to authenticate, or at least I do for the data that I want. This doesn’t bode well for sending any integration tests or otherwise to Travis-CI or otherwise. So even though this library works, and would be processed on the server-side and not on the client side, having it as a non-tested part of the code base bothers me a bit. What’s a good way to setup tests to verify that things are working? I’ll get that figured out shortly and it’ll have to be another blog entry, maybe. For now though, let’s jump into the client side library and see how it functions.

Client Side JavaScript Github

For the client side I started testing around with the gh3 library. It has two dependencies, jQuery and Underscore.js. jQuery is likely always going to be in your projects. Underscore.js is also pretty common, but sometimes you’ll find you’ll need to go download the library. Upon download and getting the additional libraries I needed installed, I gave the default sample a shot.

[sourcecode language=”html”]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>gh3 Sample</title>
</head>
<body>
<ul id="user"></ul>
</body>
<script src="js/jquery-1.7.1.min.js"></script>
<script src="js/underscore-min.js"></script>
<script src="js/gh3.js"></script>
<script>
var adron = new Gh3.User("adron")
, userInfos = $("#user");

adron.fetch(function (err, resUser){
if(err) {
throw "outch …"
}
console.log(adron, resUser);
_.each(_.keys(resUser), function (prop) {
userInfos.append(
$(‘<li>’).append(prop+" : "+resUser[prop])
);
});
});
</script>
</html>
[/sourcecode]

This worked pretty seamlessly. Also it got me thinking, “what do I really want to do with the github library?” If it’s a server side service, obviously I’d want to use the Node.js libraries probably. However if it is client side data I want, is it even ideal that the server side actually pull the data anyway? The other issues around cross site scripting and related matters come into play too if it is a client side script, but this might be, even in spite of that, just what I needed. For now, that left me with some solid things to think about. But I was done for now… so until next entry, cheers!

The Friday Wrap Up: Write The Docs, Basho Coworking Office Hours & Node PDX

Wow, so this week has been an intense return to Portland for me. I got back earlier in the week and hit the ground doing a bit of catch up after being on the rails for two weeks to Denver, over to San Francisco and then back up here to Portland. The whole time cramming my brain full of Erlang, getting ramped up on efforts to help bring Riak to everybody that it can help, expand the open source community and do what I do. Expand the community and the risk taking, code inventing, hacker of hardware, and curious ideas that we all have as best I can.

Turning from looking back and looking forward, getting into a proactive view of events coming up there are a couple things I want to let everybody know about. They’re all intertwined here in the Portland Tech Community and well beyond, with events in Seattle and Vancouver BC coming up sooner than later!

Basho Coworking Office Hours

The Riak Products; Riak, RiakCS and Riak EnterpriseDS
The Riak Products; Riak, RiakCS and Riak EnterpriseDS

These events are every two weeks, starting this Monday. The meet is at NedSpace, we’ll grab the excellent Butcher’s Block Table and converse, code together, implement or deploy Riak and generally answer, present or find the information you need. Feel free to come in and join at anytime during 9am-11am on Monday the 4th, and every two weeks hereafter. You can RSVP here (meetup.com) or here *(eventbrite). For those that are RSVPed and show we’ll have various swag. Prospectively after building some momentum we’ll start bringing in some premium coffee or other beverages to help kick off your day.

Write The Docs

Write The Docs
Write The Docs

This is a new conference here in Portland that is being put together around documentation, document driven development and topics surrounding this oft overlooked and extremely important aspect of software development. As one would expect, it has a github repo.

Currently there are some speakers, but the call for proposals is still open, so check it out and if you’re interested in speaking jump in there and add to the conference and growing conversation! Here’s a short description from the conference site about what Write The Docs is about,

“Write the Docs is a two-day conference focused on documentation systems, tech writing theory, and information delivery. It will be held on April 8-9 in Portland, Oregon.

Writing and maintaining documentation involves the talents of a multidisciplinary community of technical writers, designers, typesetters, developers, support teams, marketers, and many others.

This conference creates a time and a place for this community of documentarians to share information, discuss ideas, and work together to improve the art and science of documentation.

We invite all those who write the docs to spread the word:

Docs or it didn’t happen!”

Speakers so far… there are more coming!

Nóirín Plunkett Plunkett AKA @noirinp the Curator of People 

From the recent speaker announcement, “Nóirín Plunkett is a jack of all trades, and a master of several. By day, she works for Eucalyptus Systems, as a geek<->English translator, and general force multiplier. She’s passionate about community, communication, and collaboration. Nóirín got her open source start at Apache, helping out with the httpd documentation project.

Kenneth Reitz AKA @kennethreitz the Wandering street photographer and moral fallibilist & Pythoner

From the recent speaker announcement, “Kenneth Reitz is the product owner of Python at Heroku and a member of the Python Software Foundation. He embraces minimalism, elegant architecture, and simple interfaces. Kenneth is well known for his many open source projects, specifically Requests. His projects are always well documented, and he is the curator of the The Hitchhiker’s Guide to Python, which documents best practices for Python developers.

Jim R. Wilson AKA @helixb the jimbojw and helixb and…

From the recent speaker announcement, “Jim R. Wilson started hacking at the age of 13 and never looked back. He has contributed to open source projects such as MediaWiki and HBase, and managed the large-scale documentation system at Vistaprint. He’s co-author of one NoSQL book, and currently writing a node.js book.

The perpetrators of this conference are the reknown Troy Howard @thoward37, Eric Redmond @coderoshi and a fellow tech cohort I’ve recently met at The Side Door Eric Holscher @ericholscher.

Node PDX

There’s an announcement coming real soon about this!

Riak, Yokozuna, Node.js & Easy 9’s

The inaugural Riak Meetup kicks off tomorrow at 7:00pm. The crew at AppFog will be hosting the meetup, with several of the Basho team coming into town with two talks:

  • 7:15pm – Eric Redmond @coderoshi will present “Next Generation Searching with Yokozuna. Riak Search was created to expand Riak’s query options.  It’s worked well enough the past couple years, but it’s time to move forward. Yokozuna is the next generation of Riak search, built on the solid Distributed Solr platform. We’ll see a preview of what Yokozuna does, what it’s going to do, and how that’s a marked improvement from the existing Riak Search.
  • 8:00pm – Nathan Äschbacher, developer at Coradine, will present “Riak & Node.js: The Hunt for Cheap, Easy Nines. Portland-based Coradine makes an innovative aviation application that helps pilots the world over. Riak will power the next generation of apps and services coming out of Coradine. Nathan Äschbacher, developer at Coradine, will take you through:
    • A quick history of our experience with Riak
    • How it came to be we opted to use it at Coradine
    • Some of the known hurdles we were going to have to overcome (like cloud deployment)
    • Some of the development issues we’ve encountered
    • Why Node.js was a good fit for us and interfacing with Riak
    • Abandoning Redis in favor of Riak Memory-store for caching and 2i

So if you’re into airplanes, data, big and small, giant 9’s or other technical aspects around data storage and the respective distributed systems that enable advancements in this technology, come down to AppFog this Monday and check out these presentations.