The Changelog: Software Development, Open Source - The original Changelog Weekly (Interview)
Episode Date: November 25, 2009This goes WAAAAY back in the archive of The Changelog. So far back, that our audio was down-right horrible and you can tell we were nervous to even be recording. We were green and wet behind the ears ...when it came to producing a podcast (we had no clue).
Transcript
Discussion (0)
Welcome to The Change Log, episode 0.0.2.
Today is November 25th, 2009.
I am Adam Stachowiak.
And I'm Winn Netherland.
So what is at the changelog.com right now, Winn?
About five stories right now.
But no, we've got a nice little TumbleLog set up on Tumblr.
We thought, hey, in the interest of iterating on this deal
and starting small and letting it organically grow or organically die,
whatever the case may be,
to kind of leverage some of the free tools out there.
And we've got a TumbleLog set up that has some nifty GitHub integration.
So when you post a link to a GitHub repo and tag it as GitHub,
I can automatically pull in the watchers and fork statistics for that repo.
That's pretty cool because I see underscore.js listed there and jam it,
and they both have the watchers.
And that's real-time, right?
It is real-time, and it's about four or five lines of jQuery.
And I got the idea from GitHub's new version 2 of their API at develop.github.com. And they've got some advanced features that require authentication,
API keys, all that good stuff.
But this was pretty straightforward,
the public information that you can get with just an unauthenticated call
via a jQuery callback.
Very simple, very cool, though.
How long did it take you?
That feature, probably an hour,
and that's probably most of it was fighting spelling issues.
Oh, boy.
So you're a bad speller?
Those are always fun when you're depending on a CSS class
and either CSS for markup or in jQuery for your selectors
to act on a particular element,
and you're wondering why in the heck it's not coming back,
and you figure out you've got a misspelling in your selector.
That's the thing about jQuery, though.
If you've done any JavaScript development, and I'm sure you've run into this,
if you misspell that selector, it doesn't throw any sort of error or anything.
It just, nothing happens.
Well, it doesn't know what to target.
I know, but I mean, it's gracefully just eating the error
so
you're left to pull your hair out
in this whole changelog
changelog show setup
I've probably misspelled change
I've actually dropped the E
off the end of change about a dozen times so far
so don't feel bad
that's ok you're still learning how to spell squirrel
tune in to Adam's latest episode of the Web 2.0 show
for a more in-depth look at how to spell font squirrel.
Yeah.
It's actually not the latest because I'm quick like that.
It's actually the episode previous to the latest.
Uh-oh, I'm behind.
You are.
I'm kind of like I'm behind on your blog.
I can't keep up with your blog.
Endless stream of information from Wynn's mind into the blog.
Jeez. So anyways, what's our lineup? The lineup this week, let's start with a couple of projects
from Document Cloud. They kind of burst on the scene a couple of weeks ago with underscore.js.
I've seen this. Yeah, yeah. Pretty cool little JavaScript framework
that are billing themselves as the tie to jQuery's tux.
I think that's a good way of putting it.
Yeah, I like that.
You know, I'm a Rubyist.
I know you are too.
Oh, somewhat.
I work in the Ruby land.
I play one on radio.
Right.
So, you know, if you come from Ruby
and you dive back into the client-side JavaScript, you miss a lot of those convenience functions for arrays and collections and things that you get from Ruby, like, you know, first and last and unique and flatten, those just things we take for granted that make arrays in Ruby so sweet. This project aims to add those back, you know, really kind of fills a gap.
If you ever worked with Prototype.js, they have a lot of those features built into that JavaScript framework.
And that was one of the things that I noticed coming to jQuery from Prototype was just kind of the lack of array support.
There's some rudimentary array support in there around their wrap set for DOM elements and things.
But on the array side,
it's kind of lacking.
And Underscore does a good job
of grafting on some of those methods.
You can check it out
at documentcloud.github.com
slash underscore.
Very nice,
nicely styled documentation as well.
Yeah.
Comment on that when we first found this project.
That's the simplicity of that document, that design for that page.
I'm noticing something, too, on their readme at the GitHub repo.
They either stole it directly from Handcrafted or they're just that cool.
I don't know which, but if you're looking to read me.
The same ASCII art for the logo?
Yep.
I think it's the same exact font.
I think they just had to copy.
Maybe they're just, yeah, I guess when you're that good, copy it, right?
You know, one other cool feature that Underscore has is templating.
Oh?
I've seen this in a couple other frameworks.
Never had a real use for it.
I guess I've always been a – my pattern has always been to create markup on the server
and then send that down to the client where I can.
But, you know, there's instances when you build a lot of elements on the fly on the client
that you would just like to specify a template and have JavaScript do the heavy lifting for you.
And this allows the ability to do that.
And the syntax for binding variables within those templates is very familiar if you know ASP or Ruby, the ERB syntax with the less than percent equal syntax.
Right.
I know you're such a big ERB fan.
Oh, yeah.
You saw my tweets today, right?
I did, about Hamill.
Yeah.
It's like going back in time.
I did.
I really hated it because as I take a big swig of my coffee at 9 o'clock, 9.30 at night,
I was really PO'd that I had to take this beautiful Hamill view.
And if you don't know what Hamill is,
tune into the previous episode to this.
But, you know, I hated it.
It was a beautiful Hamill view.
I had to go and put an ERB,
and I felt like it was really, really painful.
I was upset.
I feel your pain. I feel your pain.
So templating. Templating is a nice way to just specify a template. I guess the use case would be, let's say
you had a list of elements and you needed to bind
an unordered list, a set of li elements for each
item in an array,
then you could just specify a template that had placeholders in there for the variables coming from your JavaScript object,
and you would just call underscore dot template,
pass in your data, and pass in your template,
and you get a nice HTML fragment for your LI elements to put in the list.
It's pretty cool.
Well, that's not really that bad if you're following a certain convention.
You're not really creating content.
You're just frameworking your HTML markup.
That's right.
That's right.
Which isn't a bad thing.
It's saving time.
Another cool feature is chaining.
So do a lot of jquery adam yeah yeah
fair bit so one of the coolest things that most people like when they come to jquery is is the
chaining where you can you know the wrap set is returned at the end of every method call so that
you can just keep chaining methods together like add class append append, remove, things like that, right? Right.
Underscore supports that as well.
So you can call underscore, pass in your object called.chain,
and then you can call sort map first value.
And essentially, you queue up these method calls,
and then when you call.value at the end,
it executes it and passes you back a value. so you can chain up multiple method calls in a row.
It's really, really neat.
You know, when we discovered our second project, Jamit, I remember this past week clicking on the link and my first was kind of taken aback.
It's like somebody ripped off Document Cloud's excellent documentation site.
Just changed it to blue.
Then I got to looking a little closer and found out this is another project from Document Cloud.
We're excited.
We're going to talk to these guys, I believe, next week.
Yeah.
Upcoming show, so be sure and tune in for that. But Jamit is, as they call it,
an industrial-strength asset packaging plug-in for Rails.
And so essentially what this is,
if you've used Asset Packager or other plug-ins in the Rails space,
it's a way to tidy up and compress and concatenate those JavaScript plugins,
all those jQuery plugins that you use in your CSS files. Yeah, I've used it, yeah.
And it gives you a couple of files to download,
one JavaScript file, one CSS file.
This aims to do the same thing there,
but also build in a couple of new features like gzipping,
which is zipping up those assets and serving them compressed
over the wire, so you're actually sending less bytes over the wire.
Most modern browsers support unzipping those on the fly, so it really cuts down on bandwidth.
All right, so you're probably making the Yahoo YSlow people that really cling to those rule
sets that Yahoo put out there really, really happy. I'm hopeful I can score an A on my website with that YSlow people that really cling to those rule sets that Yahoo put out there.
Really, really happy.
I'm hopeful I can score an A on my website
with that YSlow score now.
That's hard.
I know.
It's like, hey, I'm a C plus.
Sweet.
So the other big feature is something
that was new to me,
and that's embedding your image assets
within your style sheet using either the data URI method or the MHTML image embedding method.
Oh, wow.
This is really space age material right here.
This allows you to take all those binary assets and essentially embed them in your style sheet, which I have mixed feelings about. I guess the proof's in the pudding,
but I want to play with this particular plug-in
and see if there's any gotchas.
Just my gut feel tells me that's a little too cool for school.
How about you?
Well, when we talk to them,
I'm sure that they'll give us a good reason why.
Every time you do something like this,
you're always solving some sort of problem.
So I can only imagine they would take the time to do it either because
it's just that cool to do, for one,
or they really needed it.
So I'm really curious to see what kind of solution,
what they were trying to solve by doing that.
I look forward to
speaking with those guys. In terms of
mixed feelings, whatever works.
I think in today's
world, we've got so stuck. It's good to have
conventions. It's good to have web standards. It's good to have conventions. It's good to have web standards.
It's good to have these things.
But at the same time, they do put you in a box, and sometimes it's nice to break out.
That's true.
That's true.
Alrighty.
Next up, Google Go.
So you've got some exciting news about this particular one.
Yeah, scored an interview with them.
I'm looking forward to it because I want to understand exactly what this thing is.
Yeah.
Everybody's talking about it.
Yeah, a lot of people are.
It came out, what, a week and a half ago?
Yeah, it did.
And it's supposed to be kind of a cross between a dynamic programming language and a statically typed programming language.
I hear they have a bias against Windows.
They do.
They do. They do.
From the FAQ, let me pull that up and give that a go.
We understand that a significant fraction of computers in the world run Windows.
It would be great if those computers could run Go programs.
However, the Go team is small and we don't have the resources to do a Windows port at
the moment.
So, wow, significant fraction of computers in the world run Windows.
Did you know about this, Adam?
Yeah, I didn't. I thought it was a fairly large fraction i need to know how uh significant it is see if i need to start doing some testing in ie yeah well you know maybe it also ties into the
fact that you know chrome os is coming out and it's really hitting hard with the netbooks and
it's you know i watched it where this
is going to go off topic for just a second but i watched the uh the video on chrome os today and i
was like why would i want to use this and what's so cool about it and really it takes everything
away about the operating system that is the operating system and just trims it down to the
browser and getting on the internet which is what you most want to do. Well, I watched this video, and then I installed some software, and I had to restart.
And I was really, really excited to get back to work because I was just so desperate to
take that Hamill and take it and turn it into ERB.
I was really racing fast to restart this computer and get back into my dev mode.
And I swear, it took me forever.
Ten minutes?
If it's my MacBook or something, I don't know.
But I felt the pain.
So maybe it's something to do with the Chrome OS coming out and all that.
Chrome OS does look promising as well.
It's one to keep on the radar.
Gruber had, you ever read Daring Fireball?
A little bit, yeah.
Yeah, he, interesting comment this past week,
saying that it probably is a better fit for a second machine,
which I totally can see that.
And I think that is the use case for a lot of these netbooks.
You know, it's your travel machine.
It's not necessarily your main productivity unit.
Right.
I like to just have the opportunity to go get a
netbook. I haven't really had a need for one. I guess if I'm traveling,
netbook would be nice.
I don't know that I could get used to the small screen. Everybody talks
about the small form factor. And this, as I'm playing
with my iPhone in my other hand,
which has an extremely small screen.
But as far as a netbook,
there's sometimes even when 1,400 pixels
isn't wide enough for me
and having something significantly less than that,
I'm not sure how productive I could be with it.
Yeah.
I wasn't really a big fan of it.
That's why I never really buckled down and bought a regular
macbook because i always thought if i'm going to spend the money on a computer i'm going to spend
the money on something with at least you know at least a 15 inch screen you know why i did
the original macbook the keyboard i love the flat keys on the original MacBook
for some reason I just
it felt more comfortable
to me when I'm typing
and I was so tickled when the new
MacBook Pro line came out with
the same flat keys
so I went and bought me one of those
bad boys
cool
what's
right cool what's uh what's right what's going on with browsers i mean we're on the on the talk of chrome os what about firefox
firefox dropped beta 2 of 3.6 why should we care
but because as uh web developers it's got some cool new features oh
you know you love new css features yeah why not just give me more to do more things to plug in
there that uh don't work in ie right this is um your chance to thumb ie in the eye and say
take that mr ie user you can't do uh sizes, and you can't do linear gradients
and radial gradients.
You can't do multiple background images, things of that sort.
There's also new font face support for the WOFF format.
Heard of this one?
Also known as WAFF.
WAFF.
Yeah, that same podcast you referenced earlier with FontSquirrel,
me and Ethan Dunn, we talked about that stuff.
Is there an L-E-T-L-D, top-level domain?
I'm waiting for somebody to register waffle.com and rival FontSquirrel.
There's nothing but WAF format fonts.
We'll see. only time will tell
somebody's on domain
or as we speak
HTML5 video now supports
poster frames in Firefox
so that's pretty cool that you can specify what image
will be the poster frame
which is that little thumbnail that you see
when the video's about to start
you can also do multiple file uploads with the HTML input element.
So I'm not sure how they're swinging that.
Normally that's something you've got to resort to Flash to do.
Ever code up one of those?
No, not too often.
I was never much of a Flash guy.
Yeah, it's usually I'm not either, was never much of a flash guy. Yeah. It's usually, uh, I'm not either,
but it's usually the best way to handle that because,
um,
I know you're a user experience guy and it's always,
um,
a pain to,
um,
let a user,
you know,
upload their,
uh,
their three files just to tell them,
Hey,
after you sat there and watch this thing for 30 minutes that they're not the
right format.
I do like that.
Uh,
if you're talking about the flash, uh, you're talking about the upload progress?
Exactly, yeah.
Yeah, I like that.
I've never implemented one of those, but those are very cool.
It looks like this is now baked into the browser, that type of functionality,
which hopefully that'll be another thing.
That's the sort of thing that you would expect should be part of the browser
and not have to rely on third-party plug-ins to do something so basic.
Yeah, that's silly.
I would have just imagined that it should be part of the browser,
but you know it's not.
Well, that is it for the changelog this week.
No, actually, we should pop one more in there, shouldn't we?
While we were talking about that CSS stuff,
we were going to talk about something very, very cool
that got lots and lots of press this past couple days.
Oh, Brandon Mathis' fancy buttons.
Yeah, yeah.
That is cool. Have you used it?
No, I haven't made any use of it,
but I've seen a demonstration of it firsthand,
and I think Brandon is a very smart guy
when it comes to using SAS and using Compass in the right ways.
And I think it's really cool because it changes the luminosity.
It has fallback support for that same blog post you referenced with Squeegee using a PNG with luminosity and whatnot.
It's really a cool thing like you just pop in one color and it sets the border color the hover color the active state color of the button it's really really got a lot of nice
features so i can see why he's got a lot of traffic about it i was checking out another
one of brandon's sass plugins that you had pointed me to this weekend about using CSS sprites.
Oh, yeah.
Implemented a CSS sprite on the changelog icons.
If you go out to the changelog.com
and you'll see the icons that we have for each post,
that's a CSS sprite,
which is essentially one big image
for all of your icons.
And then you specify which icon you want to load
based on background position, and that cuts down on network transfers.
Brennan had a cool plug-in to do this with Compass
that I'm anxious to use in my next Compass project.
Too bad we didn't get a chance to use it on the changelog,
but it is another promising Compass plug-in from
Mr. Mathis.
Mr. Mathis. He's got lots of stuff going into
Compass Core.
Between that, some of his work with Colors,
the Compass Colors
extension,
he's doing pretty well.
Busy man. Busy, busy, busy.
Alright, what else we got? Is that it?
Is that the show? I think that's it, a short Thanksgiving week.
Well, there you go.
Well, in a few days, we'll be talking to Google and talking to you, Rob, about Go.
That should be an awesome conversation.
We'll definitely come back and spread some good love in there, enjoy that show.
And the week after that, talking to Doc in the cloud,
and we'll get some of those questions we brought up earlier answered.
Absolutely. Absolutely.
Absolutely.
Alrighty.
Happy Thanksgiving,
everyone.
Take care.
Thank you for listening to this edition of the change log.
Be sure to tune in weekly for what's fresh and new in open source.
Also visit the changelog.com to follow along, subscribe to the feed and more.
Thank you for listening.