Reading Code

I recently spent some time getting to know backbone.js. I wanted to apply it to a mobile app I have been working on. While the code is great, I stumbled on an idea while using it. When I fist start using a framework of any kind, django for example, I almost always use there getting started tutorial.

You copy, and paste the code from this tutorial, and then poke and prod it until you get some kind of understand of the code. When I was working with backbone.js though, I could not find a single in-depth tutorial that was close to what I wanted. In fact, it was hard to find anything more then just sample code.

Backbone it’s self is well written, and all of the code is precisely documented, but only at the atomic level. Each individual function has been lovingly document, but its hard to find a 90,000 foot view that is more then: oh, here is a todo list.

To figure out how to do what I wanted, I had to start digging into the code. I haven’t ever really started using a framework in that manner before. At the end of a long session working with the code I realized that i had a better understanding of backbone, quicker, then almost any framework I have used.

It might just be that as I code more, I am more easily able to understand code, but I think it might also be how I approached learning backbone. By letting the code be my guide, and really trying to understand the intent I was able to gain a meta level understanding of what the code creators were trying to get across.

PS. Javascript projects can we stop putting .js in the name. Every-time I type a period in a name I feel dirty.

RSS, I can’t quit you.

On occasion my blog posts receive outside attention, like when a piece get’s featured on a more popular website. For instance I was quoted in an article over at the register last week, and that catapulted my stats for a day. Regardless of what drives traffic to my blog, most readers of my blog seem interested in RSS. That is fine with me, because I like talking about the finer points of RSS just like everyone else. What I think I need to do with that is to try to explore RSS some more, because it’s not all that often I imagine you get more than a couple 100 people reading, and thinking about RSS. To start I would like to make it clear that when I say RSS I mean any feed type, but it does mean a standard of some kind. Also it should probably be a self substantial piece of information. That is a very grey line though. I want to talk about reading feeds. Like the details of my reading system. I would love to know more about how others read too. One thing McLuhan has taught me is that how we use a technology is as important s what information that technologies is delivering. Is not just to be complete, and thorough though. I get a ton of use out of knowing how other people use things. Curation is hugely important to me. I really want to get into that. How does one decide what makes the cut. Are their levels, or multiple circles in which you share information. What tools do you use for curation. What is the most frustrating thing about the current crop of curation tools. I know that many larger curators like Rober Scoble have themselves talked about curst ion tools, so it might be worth while to roundup what they have said. Finding new blogs, I don’t often find new super awesome blogs. I wish too that people would talk about new blog more often. I feel that sometimes in the blog community people ten to keep these things to them selves. What if anything do places like tumblr, and posterous have to do with feeds. Like what happens of they all decide one day to turn off RSS. Mostly I am hoping I can drum up some conversation from the people who read this blog. Unless feed burner is lying to me, there re now over 400 people reading this blog, hopefully many of you read this far, and have something to say.

An answer to a question I am asked occasionally

Every once in a while I get an email from someone who thinks I know what I am talking about, and they want to know how I got where I did. I am flattered that they want my advice, but I fear that I could never be that helpful. That is usually where I start. I suggest that they should diversify. They should make it a point to read widely, and ask many people for advice. Really, I don’t think that I have much of anything that is original to say. Which isn’t to say that I am a sham, it’s just that when I tell people what I do to get better they exclaim, “that’s what all the books say”. They say that because all the books are right, they all have the same basic process, what matters is putting in the work.I usually have the same answer, and it doesn’t matter if its about programming, or blogging its usually the same answer. Truthfully, I don’t have a process. I do have a general understanding of how I get better, and how I got to this point, but not like a set of rules. The first step in the process is to love what you are doing. It’s okay if you aren’t good, at least in the beginning. What matters is that you love what you do. Loving what you do isn’t important because it’s fun. It’s because it’s tough. It’s tough to get better at something. I have never understood people that seemingly get better at things they don’t like. That is the real super power in this world. So, I stick to what I love to do, and that way even when I am not having that fun, I find a way to work through it. The second step is to work. Work hard, and often. Also don’t just sit down and work, work to get better at working. Getting better is the working with a deliberate purpose to get better, not just repeating the same thing over, and over again. Finally, repeat steps one and two ad infinitum. Seriously, I can’t over state this part enough. Just keep going. Now, there is a third step, but it’s not as important, and I think you are already on your way. Every once in a while you need to stick your head out of the room where you have been working, and look to see if there is someplace you can apply your new found knowledge. Sometimes people come to you, but often you will need to hustle your own gigs. Don’t depend on anyone to come knocking down your door.

I have to say it, RSS is not dead.

When I read about the death of RSS, I laugh, but I think the point is we need a new platform to consume RSS. It needs to cater to curators, and hubs of influential people.

To some degree Facebook has become a kind of RSS reader, but the king of RSS readers is Google Reader, and we need a new version. It’s hard to think of a way to make Google Reader better. It’s even harder for me to see the value of Google Reader to the non-initiated. It took me well over a year of using google reader everyday for my wife to start using it. It was like I had to infest her with the idea of constantly checking something like google reader.

When the big elephants of tech start talking about RSS, I wonder if they them selves know what they are talking about. We need a new feed reader though if Reader were to open it’s self up, and become a fully fledged platform. We could see a new wave of reader experiments. Now, to some degree, they have become alive, which is insane because Google Reader has no public API – none. There were promise’s years ago, but it hasn’t developed.

You know what Reader does have though, a team of rabid hackers that have reverse engineered Reader. That many people love google reader that some of them dedicate time to document a private API. That has to say something about RSS. Overtime we have seen GUI’s, Net Newswire syncs with google reader, and both the iPhone, and the Android have a couple of readers that sync with Google Reader, none are that good though. Oh, Reeder is awesome, but if you are a power Reader user you will crash it. Reeder is a special level of hell, because it’s beautiful, and I love to use it but seriously, Reeder is the only app to have crashed my iPhone, no kidding it crashed the phone. How is that possible?

New feed readers need to be social. When Reader went social it was awesome probably increased the traffic a lot. New feed readers need to be extendable, an API is a must. Curation tools are missing. I want to have my discovery chain encoded and transmitted every time I share something. I want to know if I am making an impact. This could be almost like a gamification of feed reading. I don’t share because I know people are reading, it just makes it more fun. If such tool existed I am sure it would have a huge uptake with RSS addicts, which could have a large network effect, because the people who consume RSS are also the people most likely to transmit cool, and new things.

Giving Up, or Giving In

I have a friend who has been working on a labor of love for a long time now, like multiple years long, like too long probably. He wants it to be done right, no mistakes. Last weekend though he was surrounded by people, many smart people, telling him that no matter how good his work is it won’t work out for him. There is a systemic problem standing in his way. If he gave up, no one would think bad of him. That is the rub though, giving up sounds like a failure, like you just didn’t try hard enough. Even though many of us do it everyday. It could be as small as watching Law & Order reruns, because the remote is on top of the TV, and you just sat down with a sandwich. While that is a small example, these sorts of problems present them selves in more important ways as well. A better example I think would be coffee. I think that best coffee is at Blue Bottle. The closest Blue Bottle to me, at work, is like 30 minute walk at best. Sure, it’s the best coffee and I shouldn’t settle for anything less than awesome, right, but I choose not to go their because it’s a huge imposition on myself, and would take away from my ability to do my job. All this, and it would just be a huge pain in the ass. So, I go to Starbucks, or make my own. One one hand, someone could say that I was giving up on awesome coffee, but I think that I was just giving in to reality of the situation. I have had my own interesting relation ship with giving up. From a young age I have always been a procrastinator. Few things I started got done. Many, including my own parents, interpreted this as being lazy. While arguing once my father convinced me that I was lazy. At the time I thought he was right, and he’s not a bad guy for making me think that. His frustration was cause by a personal schism. He single handedly pulled his two siblings, and him self into adulthood, as well as into the middle class. Then worked his way into owning a company, and successfully raised two kids in a middle class lifestyle. This alternatingly makes him happy, and sad. At the time he convinced me I was lazy. I am sure he was wondering how the hell, with all the help I had, I couldn’t keep a B average, or remember to pay parking tickets, or even just help around the house. All he saw was a person unfit to take care of himself. He wasn’t wrong, but he wasn’t right either. I still to this day think there were some serious structural problems in my way. Many were caused by inherent learning differences, and mixed with an entirely obnoxious ability to believe I am good at anything. To me these problems are as concrete as laws. That can’t be changed. The only thing I have ever learned to do is work with them, and lean hard on what I do know how to do. Structural difficulties have followed my throughout my life. One was college, when I left I was less than 5 classes from graduating. If anyone is reading this at all, at least one person will gasp, and say but that’s nothing. To them 5 classes is nothing, to me it’s tantamount to making a non-NASA backed rocket ship capable of taking up one human to orbit. Yes, it’s possible, but it’s going to take me a long, long time, and I am not sure if at the end of it I want to be making a rocket ship any more. It was just time for me to leave. I am happy with what I learned. I got a college education even if I don’t have a piece of paper to tell me I do. I am fucking proud of what I did, any other time in history I would have been sidelined already. I would have been tracked early on in my life to be car mechanic, which isn’t to say that being a car mechanic is bad, but I don’t want to be car mechanic. I had two parents that fought with the tenacity usually reserved for a prize fighter, when they couldn’t fight for me they oiled the wheels a little. They got me so close, but their engine was running out of gas, and so was my patients. At some point, you need to strike out on your own. Luckily or not, Yahoo! was there waiting. I had what it took to be at a place like Yahoo, and I had what it took to be a good software engineer, those skills are what will keep my employed. What makes me valuable, I think, it is my ability to solve problems. Any problem solving I was taught in school usually was learning how to get around some structural object, like learning how to talk my way into full classes. Still to this day I sometimes forget to look out for structural problems. Teachers always told I was a bad writer. I am still not sure if I disagree with them, but no one ever took the time to explain that just because you are bad at writing doesn’t mean you shouldn’t write. I might have written more, but it was beat into me that I as bad. Sometime after I left college, and before I really started trying to join a startup, I started writing more. It started small, on twitter, but it grew over time into blog posts. Then I started writing tutorials, and learning about mobile web development. My eternal optimist started thinking big, and like far to many times I got myself into a situation where I didn’t have what it took to finish. I got myself into a book deal, and then wanted out. It’s not because I couldn’t do it. I had steadily produced a chapter every two weeks for 2 months or so, but it was like pulling teeth. I was getting that antsy feeling in my stomach. Oh shit who am I going to piss off now feeling. That, I shouldn’t have told all those people I was going to do it, feeling. The I would rather go sit in a parking lot, and look at the paint dry that do this, feeling. I wish my friend the best of luck, and I know how it feel’s to give up, but I don’t want to call it that any more. We should call it giving in, we are giving in to being better, to spending our time doing something useful, and fulfilling. We are giving in to not wasting opportunity. I was writing a book about a ton of stuff I knew kinda well, and some stuff I knew pretty well. I was writing a book about a lot of things that no one knew really well. I think that I would rather not present myself as person who knows something I don’t. Even if it means feeling sheepish for a while.

ifttt.com a new swiss army knife for social

I recently submitted a talk to open source bridge. It’s a new conference dedicated to the ideas behind open source.

My talk is about how I patch over the holes that are created between systems like google reader, tumblr, and twitter. All of that work has been eclipsed by a new tool called ifttt. They don’t win any points in the name pronunciation department, but there tool works. The idea is if this, then that.

Like if you tweet a link, then post it to tumblr.

I saw someone playing around with it on picplz the other day so I signed up.

I have been building my own tools for years to glue things like google reader, which I love using, to tools like twitter, which I am not so stoked about. They are still missing two things. I like to track my links stats, it’s 10x easier if I can use my own bit.ly api token, it’s even better if I can use my own shortener service, but all take just using my own bit.ly API key. The second thing that is missing is rate limiting things to twitter.

Twitter is a medium where people don’t like it when one user dominates their stream. If you tweet like 5 things in a row, it doesn’t matter if you tweeted awesome things, it looks like spam. Users will unsubscribe, besides that you get more twitter juice if things trickle into the twitter sphere.

So, these guys are building something quite cool. If they get everything I need I would be willing to spend close to $100 a year for their service. $100 a year because all of these things have required me to buy something like a linode before, which even at it’s cheapest is $239.40. So, I am saving 130 bucks, without the overhead of trying to keep it running.

Update:

They have already been hard at work adding the ability to share things on google reader. Awesome.

Goodbye PHP

Last night it occurred to me, I might never use PHP in a serious manner ever again. It’s bittersweet. No one is a bigger advocate for leaving PHP behind then me, but it was where it all started for me. I had played around with VB in grade school, but desktop programming never got to me like web programming. PHP was ready for me, meaning the metaphorical person who doesn’t know how to program but wants to learn. PHP has things in it, that after you learn a little bit, shouldn’t exist, but those are also the things that make it so easy for a beginner to get shit done, and feel good about themselves. My favorite example is something like file_get_contents (more). File get contents sounds like it should just open a file, and then give you the contents, and it can, but it can also open things across the network. $homepage = file_get_contents(‘http://www.example.com/’);

If you have been a programmer for a while, and have never seen this feature, it might scare you a little. Like, there’s no check if the stuff was returned successfully, or not. To a beginner though this is such a wonderful piece of code. I learned how to use filegetcontents, before I knew what an API was. I would then hack at HTML with spliti( a case insensitive split, because there is also split which is case sensitive), until I got the piece of data I needed. I think that better tools will be created in the future. Things like YQL are great places to start. ## Update:

In the comments someone asked what I would recommend instead of PHP on the server side. To be clear the reason I suggested YQL is that I think it can be a good intro to programming, a gateway drug if you will. PHP was there as kind of a stepping stool to other languages. If you had to pick a server side language I would say python, but I am not certain it’s awesome as a starter language.

Group chat and Pizza

Through a fortunate series of events I used hipchat today. After signing up I realized this was the group chat company that everyone has been talking about, especially that they do not provide native chat clients. The argument in summary, because they use Adobe Air to develop a desktop apps. It can’t do certain native functions. It doesn’t look like other native apps. All supposedly because it makes it easier on the developers, and that means they are doing a disservice to their customers. In short, they are doing something that makes things easy for them, thus not putting the user first. The whole argument rests on what do users want. We are using hipchat because the task of hooking up non-technical folks to IRC was daunting. This service allows one to chat with a group, and share links. It’s does exactly what IRC would have done for these users. It’s always difficult to to say what users want, or don’t but to clarify the dominate opinion put forth on the internets about hipchat I am going to suggest a thought experiment. Imagine two pizzerias are opening. The first question they need to answer has to be what kind of pizza do people want? Here is where the road diverges, I am now going to put two pizza makers into predefined, diametrically opposed boxes, which are only useful for this experiment. One pizza maker thinks people want bread, cheese, and meat, and they make a simple pizza. The other thinks they want artisan pizza made in wood fire ovens with the best ingredients. If you look at america, and the large chain pizza companies, you can begin to tell who will win the popularity contest. I know that I want that artisan pizza, I want to know that guy, but I also can’t deny that the other dude is going to make a boat load of money. Pizza, like the way the first guy is going to make it, is cheap. It will be ordered by large organizations for lunch, school teachers will order it for there homeroom end of school parties. No amount of attention to detail will make his users like, or dislike his product more. Furthermore, some might want to tell the pizza consumers that the former pizza is bad, and may be bad for them, but that has nothing to do with the argument people will buy what they want. The experiment has to apply to the main argument, yes it’s purposefully vague, and unreal, but it brings into focus the main point, which is a quality obsessed subset probably doesn’t know what the world wants. They know about quality, but maybe not people. In the world of group chat, if most people want the ability to chat with a group, and see what the group is saying, then hipchat is perfect. I am not certain what company is the artisan pizza of group chat, but I am sure they would do very well with a handful of discriminating developers.

A diff is better then a comment

I know its a running theme, yahoo not so fun, startup good, but I have found something new to talk about. Ways in which Yahoo could have gotten better without loosing people. This is a simple way that I think large companies can keep their edge. A big difference between working at yahoo, and a startup has been the code review process. At Yahoo, it went something like you write code, and it gets reviewed by a peer. I always hoped I would get some good comments, but it ended up being a compliance review. The discussion tended towards checking off a list of do nots. The second we moved into the unknown, or needed a little more advanced knowledge, we were all out of our depth. I do think most tried to make it useful, but the best we could do most of the time was something like, “oooh, I read a blog post about this”, and then go on to give a hazy recollection of some dudes experiments in the latest version of google chrome. Reading, and experimenting are a good start, but sometimes you need and old guy, a neck beard, or a server rustler to just tell you what the answer is. I am not sure if that is what all startups are like, but I can tell you having computer elders is helpful. Not only is it helpful to have people who can just tell you what is good, or bad, but even better is people who fix your code. I feel sometimes it’s like the old days, when teachers used a red pen to markup a paper. But, its also like having an editor. Not only someone who knows more then you, but is willing to put the work in showing you how your code can be better. It feels good to know how to get better, sometimes finding that is the hardest part of moving forwards. Its not okay to have a bunch of red marks, but the red marks are a bunch of useful clues as to how to get better. I can remember sitting in code reviews wondering why they sucked, thinking that this is exactly what they are suppose to be doing. This is what good coders do. Now I know there is almost nothing we could be doing better, we need some real experience in the room.

Switching blogging engines.

I switched from drupal to wordpress. It was both easier, and harder then it should be. Drupal just was to much of a beast. In my head I will always believe that if I just found the time I could write the best blogging engine for my self, but my brain tells my heart, no. Let’s see if wordpress can stay svelte.