Posted:
3 months ago
(2011-11-05 03:54:54 UTC )
I rarely remember to post here these days. This blog needs a reorg and a facelift, but also a change in tone, and I don't have the time to do those right... yet.
In the mean time, I gave a workshop on building an online portfolio. For that workshop, I put together a starter portfolio that you can easily push to Heroku, along with step-by-step directions: BobFolio.
It's an easy way to get something that looks a lot like my portfolio, but backed by a dynamic web app, which mine isn't.
Posted:
3 months ago
(2011-10-15 06:23:23 UTC )
I'm on StudentsReview, a web site which lets students semi-anonymously email professionals working in one field or another and ask them questions about it. I think it's a great idea.
A fellow named Omar asked me this simple and very relevant question:
Hello sir,
I am very interested in CMU, and your perspective of it is quite intimidating. I know i can handle heavy coursework, but im sure a lot of people before have said the same thing and winded up crashing. My question is, in your opinion, in the end, did CMU get you farther than another college would have? Another way to put this i guess is, "Was it worth it?"
My response is immodest, but sometimes you have to call things like you see them:
Hello, Omar. I'm going to guess you're a computer programmer, and write as such. If you're not, well, only some of this applies to you.
It was worth it to me. Not only has CMU done well by me for contacts (my current company, Ooyala, has four or five of us) and for name recognition, it also meant I was around really, really smart people constantly.
That last bit is what separates CMU from, say, a random state college. The state college will have pretty good classwork, and more spare time so you can study and work on your own. You might only go to classes and use your spare time to write programs, but not talk much to your classmates or professors outside lessons. If that's your preference, go somewhere cheaper. Find a better use for the extra money.
But if you're really interested in diving into the deep end, CMU will have some of the smartest programmers of your generation. They will be there to talk programming, and learning, and projects, and perhaps some business. You will learn an enormous amount from them that you otherwise won't have access to. That is worth the price of admission. It's really hard to find smart, driven people with your same interests who really want to get together and do projects and learn voraciously. I live in Silicon Valley, where even a small amount of that with professional programmers or serious entrepreneurs is really, really expensive.
If you go to CMU, you can purchase it in bulk.
So make sure you want to purchase it in bulk or it's a waste of your money.
And if it helps, I'm one of the more intimidating products of my year of CMU, with one of the more intimidating views of it. For a lot of people it was just a hard but good college. I have no idea if they got their money's worth or not. But if you want to be the kind of computer programmer I am, you only have a handful of choices. CMU is one of the best. If you want that, it's worth it.
To be fair, teaching yourself feverishly for many years is *also* one of your choices, and it's much cheaper. But you have to be brilliant with diverse talents to do as well as CMU would. I would have thought I could, going in. I would have been wrong.
By the way, don't worry as much about the coursework. I mean, sure, do your homework, especially the programming projects. But in the end, that's not what will make CMU worth it. If you just do the homework and you don't find time to do extra projects with the other students, you should have gone somewhere cheaper.
You might worry that without good grades you won't get a job. Don't. If you're the kind of person who *should* go to CMU, take screenshots of your projects and stick them together into a portfolio and don't sweat your grades as much. Nobody will care once you graduate.
In fact, why wait? You can build stuff before you get to college. A portfolio can start out as random junk, and you just keep accumulating more and eventually filtering out the oldest or least-impressive stuff. Here's mine: http://angelbob.com/portfolio.
And while I'm doing the "old programmer" gig, here's a link to Paul Graham's articles: http://paulgraham.com/articles.html. They're all good. But here's the one you actually want right now: http://paulgraham.com/hs.html.
Posted:
3 months ago
(2011-10-10 19:41:02 UTC )
Your brain generally makes pessimistic assumptions - whatever can go wrong, will go wrong. That's perfectly natural and reasonable.
After all... By the time you're desperate enough to consult your brain, pretty much everything bad has to have already happened.
Posted:
4 months ago
(2011-10-04 06:00:23 UTC )
/ Updated:
4 months ago
(2011-10-04 16:30:20 UTC )
I can fix your problems. You won't particularly like it, most of the time. Often, it turns out your boss called me in, so I don't think you're supposed to. Sometimes the problem is just that nothing's done yet and we don't even have a beachhead. I love the smell of new code in the morning.
Eventually soldiers will follow me, but I'll be long gone by then. They can take the shore and continue carefully inland, establishing supply lines. Me? I'm here to blow shit up and make a mess behind enemy lines. Sure, not every inch of ground will be secured after I pass through - that's not what I do. Instead, we'll have inroads to send in a wide column who follow me. That is what I do.
Sometimes I get halfway in and everything goes to hell. I don't always win. Hell, sometimes I barely get to shore. That's why you send me - you lose me and a couple of other guys, not a platoon of 50 making the landing.
You won't be grateful to me, and I know that. I came in, did my thing, and left you with "a mess to clean up" instead of a pretty and polished result. The guys coming after me won't be good enough to finish hacking it out. My progress will get thrown away. It'll be neglected until it's replaced, and you'll remember me as sloppy and undisciplined, which I'm not. You complain that there's not a paved road ten feet wide running right where you want to go, ten minutes after I'm done. And I laugh at you.
But nobody else does my job. Nobody.
Posted:
4 months ago
(2011-09-11 21:08:13 UTC )
Standard profiling takes one of two approaches (usually).
1. Sampling - an independent interrupt, loop, timer, etc runs separately and periodically checks the status of the program being profiled. This has lower precision in many cases since it can miss even fairly common events in certain cases. But the information being gathered is good - the program's actual performance characteristics are barely changed at all.
2. Instrumentation - the program is changed to record times regularly, often at method boundaries or "line of code"-type boundaries. This gives much better precision since you'll know absolutely every time a given line/method is executed. But it takes time to record these times, so the perfectly-gathered information is on a program with subtly different performance.
You know what would be a really good idea in certain cases? Compile two different versions of a given line/method/unit and call the instrumented one some percentage of the time, say 1%. Then you're barely changing the program's performance in most cases, so functions where most of the time is spent in sub-functions will be measured far more accurately.
That's not terribly different from the standard practice of "manually" profiling just what you're interested in and not modifying any other functions. But this would get pretty close to that level of accuracy for the whole program at once, which would be neat.
This assumes that the bit of code to choose which version to execute doesn't take much time, of course, which may or may not be a reasonable assumption.
Posted:
10 months ago
(2011-03-22 22:42:43 UTC )
I'm really slacking on blog posts, partly because I really want to revamp the blog -- and I'm working on that! Codefolio needs a blog, and I've got something nicely Rails-3-based, though it's still ugly.
What I *really* want to do is revamp my whole app architecture. I've finally got Devise, HAML, decent_exposure and company working with RSpec and Cucumber and spork and Watchr (should be autotest, will be soon).
Wouldn't it be nice to have all that in a nice template file, with all the integration stuff? But right now, I have to assemble it piecemeal.
And unfortunately, Codefol.io is still one of the few non-open-source pieces of code I've written outside of work. Perhaps it'll fail like WantMyJob and get open-sourced that way, eventually :-)