HNHacker News
TopNewBestAskShowJobs

poet

1,169 karma · joined July 27, 2010

I'm often blunt. I don't mean it personally. I expect the same in return and I think it fosters a more efficient form of communication. :)

Hi, my name is Tim Sally. I'm a programmer, security researcher, and Lisp hacker. Also an unabashed fan of theoretical Computer Science (join us at: http://cstheory.stackexchange.com/). :-p Graduating this year with a BSc in CS from UIUC.

Advice: Most people who fail in graduate school fail because they never experienced research before graduate school. Consider whether it's a good idea to take funding before ever building or selling a product.

Elsewhere: ----------

Web: http://stack.io.

Email: 'poet' at the above domain.

Code: http://github.com/poet/.

Twitter: http://twitter.com/__poet__.

Previously: http://news.ycombinator.com/user?id=tsally.

submissionscomments
poet··on Things Paul Graham is wrong about
I didn't read past the first point because it's dead wrong. Paul is talking about abstracting efficiency away into the compiler and presenting the programmer with a more elegant interface. As an example, Paul notes that strings and lists really should just be represented as lists and the compiler should efficiently handle lists of characters as a special case. Not only in the author completely missing Paul's point (efficiently is unimportant at the axiomatic level), the author is incorrectly applying the essay to business operations instead of programming languages. In most businesses, programming language speed is NOT the bottleneck of the operation.
poet··on Python is now Python 3
'cd' hijacking is definitely a bug. I can't reproduce that behavior. How long ago did that happen? Overall I've found rvm to be very solid software.
poet··on Python is now Python 3
Well if you're not living on the bleeding edge of Ruby why would you live on the bleeding edge of Linux with Arch? Any job that requires Ruby 1.8 shouldn't be using Arch.
poet··on Ask PG: Lisp vs Python (2010)
Furthermore, when adding syntax you are not limited to a Lisp-style grammar.

You aren't limited to Lisp-style grammar in Lisp either. You can write reader macros if you have to. The point is, that on a basic level manipulating s-expressions is far easier to think about than manipulating the syntax of whatever the flavor of the day language is. You're essentially trying to invent reasons why macros in other languages are the same as Lisp macros and it's simply not true.

poet··on Python is now Python 3
Ruby 1.8 is god awful and should be taken out back and shot. Several times. In no way should anything be done to support 1.8 as "the norm", especially after 1.9.2.

Also, it's not like anyone should be using the system Ruby anyway. That's really bad practice in my opinion and there's no excuse when rvm exists.

poet··on California Highway Patrol salaries
To be fair, police have to deal with a wider range of psychological issues than jobs in rescue. Not only are police exposed to most things that rescue jobs are exposed to, they also have to deal with domestic violence, hostage situations, exploitation of minors and other disadvantaged groups, threats from organized crime, and sometimes actually pulling the trigger themselves. Hell, just the fact that police officers have to enforce laws they might not personally agree with is a pretty big emotional strain. My naive intuition is that rescue jobs are far less in a grey area emotionally.

I'm not saying this to quibble about whose job is more important or serious. It's just that I would volunteer as a firefighter or an EMT in a second, but I would have to think very carefully about how working in law enforcement would affect me.

poet··on Ask PG: Lisp vs Python (2010)
My point still holds, just replace manipulating the structure of a program with manipulating the structure of a grammar. In no way is that comparable to manipulating raw parse trees.
poet··on Ask PG: Lisp vs Python (2010)
You could argue of course this is a moot point, since even Lispers only write macros infrequently.

This simply isn't true. In fact it's so far from the truth it hurts my brain. Well written Lisp applications are in large part (and sometimes mostly) macros. PG once mentioned that the ITA guys said over half of their codebase is (was?) macros.

poet··on Ask PG: Lisp vs Python (2010)
If your language doesn't have Lisp syntax (or more precisely, a lack of syntax entirely) writing macros will be very unpleasant. How are you going to logically think about manipulating the structure of a program that looks like C# or Perl? Macros are already difficult enough to get right as is, without introducing the problem of syntax. Those languages don't have macros any more than Python has a lambda.
poet··on Ask PG: Lisp vs Python (2010)
I don't know of any Lisp programmer who thinks Python in an acceptable Lisp. In fact, there are some things about Python that are completely unacceptable as far as a Lisp goes: (1) crippled lambda, (2) no easy way to pass chunks of code around, etc.... Obviously not having macros is a given in anything but Lisp. Ruby (because of blocks) is far more of an acceptable Lisp.
poet··on Ask PG: Lisp vs Python (2010)
An approximation of some of Norvig's recent thoughts (Feb 2010):

"(1) It just turned out that when Google was started, the core programmers were C++ programmers and they were very effective. Part of it is a little bit of culture. (2) Early Lisp programmers (Erann Gat) at Google actually noticed that other programmers were equally or more productive. It has more to do with the programmer; we're getting to the point where language choice is less important (as opposed to 20 years ago). (3) Lisp is optimized for a single programmer or a small group of programmers doing exploratory work... If I want to make a change in a weekend I'd rather do it in Lisp than anything else, but by the time you get up to hundreds of programers making changes are not a language problem but a social one. (4) Libraries."

Paraphrased from: http://www.youtube.com/watch?v=hE7k0_9k0VA#t=03m20s.

poet··on Every day I learn something new... and stupid.
I've found that there usually is a moment in a programmers technical career where it just clicks. I find that what seems like productivity is almost always a direct result of a higher order of understanding.

An analogous situation is your average first year PhD candidate. Initially making some sort of contribution to the field feels overwhelming and almost impossible. But once you've spend a year or two reading papers and having coffee with the leaders in the field, everything comes together. That same PhD student starts to churn out quality papers every 6 months or so.

I think back to what it was like watching my dad program in Scheme when I was in high school. I got the same curious and overwhelming feeling then as I do now when working on certain areas of distributed systems. There's no reason to believe that the barriers that grownups face are any less insurmountable than the ones children do. :)

poet··on Every day I learn something new... and stupid.
From the comments:

Ten days to implement the [Javascript] lexer, parser, bytecode emitter (which I folded into the parser; required some code buffering to reorder things like the for(;;) loop head parts and body), interpreter, built-in classes, and decompiler... Ten days without much sleep to build JS from scratch, "make it look like Java" (I made it look like C), and smuggle in its saving graces: first class functions (closures came later but were part of the plan), Self-ish prototypes (one per instance, not many as in Self).

That's from Brendan Eich, the guy who created Javascript. Guess you never know when your 10 day project might go big and become something like the assembly for the web. Release early and iterate often seems to hold up quite well here....

poet··on Innovation Nation: WePay is the anti-PayPal
I think it should probably company policy at a financial institution not to allow someone in a different control on a handheld device to access the servers.
poet··on It Pays to Hire Women in Countries That Won't
Free market forces can definitely spure society towards equality and human rights. Unfortunately, there is a clear point (i.e. China) where business interests take over. So while I'm certainly happy that business interests and are aligned in this case, it certainly isn't the norm. The only example I'm aware of where a business fell clearly on the side of equality and human rights at the cost of business was when Google pulled out of China.
poet··on Google's first employee
Test scores don't identify successful people, but our system is certainly set up to make it easier on those who do well on tests. I first noticed this as a freshman in college when (because of AP exams) I moved right into deep computer science while my classmates had to spend time on general education requirements. When I interviewed for my first internship, I knew algorithms and data structures while everyone else only knew basic sorting. Once I got to my internship, I was getting paid $3 more an hour than my colleagues because of the additional course credit I received from AP tests. What's hilarious is that someone who went to MIT with the same AP scores would actually have gotten paid less than me because MIT accepts almost no credit...

You can see how the above could snowball into a huge advantage upon graduation from college. Any correlation you notice between high tests scores and successful people is most certainly a result of this property of our system and not from tests themselves. The tests could be targeted towards an arbitrary skill set and those who did well would still be more successful because the system values those who do well.

poet··on What's wrong with 2006 programming?
Weird to see PHK being referred to as "the Varnish guy". :P
poet··on [dead]
I think geeks dress poorly because they don't care what other people think and/or don't care to impress with clothing.

I mentioned this in my post. Geeks are rude and arrogant in conversations for the same reasons. I don't think it's a net win for any of the parties involved.

poet··on [dead]
It seems like they did a pretty good job here. I posted a fairly well received comment on dressing well previously: http://news.ycombinator.com/item?id=1136454. I've reproduced the comment below with some minor modifications. Happy to answer questions. :) Of course, my views are opinion not fact. But they've worked well in practice.

--

One reason technical people don't dress well is because they never learned how. Another reason is that techies are unconventional and don't place a high priority on mainstream standards. That being said, I've been fashion hacking for half a year now and the results have been great. Here's some concrete advice based on my experience. Note that I'm 21; people who have been professionals for 15 years and have kids probably dress differently. I'm also average height and average weight, so you'll have to make adjustments if you are tall/short/whatever.

Tshirts. Fitted solid color shirt with jeans that fit and shoes that impress = coffee shop, homework at the library, class. Easy as pie, and if you get the fit right and are in decent shape you look good.

Casual collared shirts. For general wear get bright, solid color fitted ones. Bar, restaurant, class, whatever. It's a very flexible look because you can switch in/out jeans and slacks. Express's 1MX shirts are a solid choice (http://www.express.com/1mx-modern-fit-stretch-cotton-shirt-1...) and very popular for this type of role.

Collared shirts for your suit. Go to a tailor. Get measured. Go to a store that sells suites like Men's Warehouse. Get two white shirts, a powder blue shirt, and a light gray shirt and you are done. Don't complicate things with stripes or harder colors if you are just starting. If you want to add personality to your shirt you can do it with a tie You're going for these kinds of looks: http://4.bp.blogspot.com/_dM4F-K2W4sA/SmnPxKOASGI/AAAAAAAAAo..., http://0.tqn.com/d/mensfashion/1/0/P/k/BrianKersey-Pool.jpg. Hoodies. Buy two solid color ones, one navy and one grey. No branding, no weird details, no nothing. Solid color only. You can't really improve your look with hoodies, but you can really mess it up by buying one that isn't a solid color. Example (from JCrew): http://images.jcrew.com/erez4/cache/images_eiec_25_25050_250....

Graphic Tees. These are hard. You have to be younger to pull off a graphic tee and even then the single to noise ratio in terms of nice/ugly graphic tees is really high. You're probably better off avoiding them

Polos. it's very tough to find ones that fit well. I've had decent success with the custom fit from Raulph Lauren (http://www.ralphlauren.com/product/index.jsp?productId=25928...). But please, don't buy a polo with a huge logo on the front. Examples: This one from Raulph Lauren (http://stores.gameentertainment.org/catalog/Ralph_Lauren_men...) and this one from Express (http://www.aldikkan.com/online/published/publicdata/ALDIKKAN...) are both BAD choices. A big logo just doesn't look good, and it makes it seem like you are brand dropping. Something for parties. Something that's a little different. Do not buy this until you are ready. Go with your graphic tee or a regular collared shirt until you are confident enough to pick something cool. Example (from Express): http://s7d5.scene7.com/is/image/expressfashion/20_552_5196_8....

Jeans. Don't get designer jeans. Don't get them torn. Don't get them baggy. Regular or slim fit only. Get them in colors ranging from dark blue to blue/gray. Do not get light blue. Do not get jeans that are too long. They should never, never touch the ground and they should cover 1/4 to 1/2 of your shoe laces when you are standing.

Casual Shoes. Women notice shoes. Seriously. It's really interesting how much they look at your shoes. You can have everything else right, but if your shoes are big blocky white gym shoes, you have failed. I say this as someone who bought big blocky white gym shoes from freshman year in high school to sophomore year in college. The good news is that you can crowd source style selection by looking at Zappos's most popular (http://www.zappos.com/search/shoes/filter/productTypeFacet/%...). Once you have the style selection, just make sure you get a decent color. I own a pair of these (http://www.zappos.com/multiview/126799/14074).

Boots. Get something that looks good but does what it is supposed to do (stand up to the elements). I've had a good experience with Red Wing. The company used to make the shoes for the US Army during WWI and WWII, so they make a quality, durable product. I own a pair of these (http://www.amazon.com/Red-Wing-Shoes-Gentleman-Traveler/dp/B...) and they are awesome (but really expensive :-/ ). I've used them constantly in the snow and hold up great, plus they look good too.

Coat. You should get a wool pea coat. You should stop wearing your Northface that is the size of a small tent. Example (from J Crew): http://1.bp.blogspot.com/_rTdnjj_0uYM/StUedrqnCGI/AAAAAAAAAk.... Peat coats are a proven style that have been around forever. A nice coat is a really expensive investment and you don't want to buy one that will look bad when your style changes as you get older. Sunglasses. Authentic aviators that have frames that fit your face. Done. Like the pea coat, aviators have been around for a long time and there are only a few people who truly don't look good in them.

Also, a few general tips:

Fit is the key to everything. It doesn't matter how much you spend on clothing or how well you match your colors. You will not look good if your clothes don't fit. Period. Everything you get should be slim fitting. Odds are 10 to 1 that the jeans you are wearing right now are far too baggy. Loose clothing was one of my most difficult habits to break.

Do not accept anything less than exactly what you want. Settling for clothing is the worst thing you can do. The legs on the pants you just bought half an inch too long? Return them. The collar of the shirt a little too tight? Return it. There are billions of styles and billions of fits out there. Taking a shortcut to save some time is not the road to success. You have to keep searching until you find a fit and a brand that you really, really like.

Focus first on making choices that don't look bad. It's actually really difficult to develop this skill. Once you can consistently make choices that aren't bad, you can start being more risky and shoot for things that look good.

One more thing. The first rule of fight club is you don't talk about fight club. Wearing nice clothes is something you do, but it's not something you brag about. Your clothes and brands don't define you and they don't change who you are. The only things clothes do is get in the way (if they are bad) or complement what you already have (if they are good). It's like being rude or polite in a conversation; it doesn't change the content of the conversation, but things can be really ugly or really pleasant depending on the choices you make.

poet··on Ask HN: Recommend a freelance job board
Are you near a college with a decent CS department? Go there. Seriously. In no other place is there such a high concentration of talented individuals who are willing to work for bargin rates. Put up some flyers, get an announcement in the departmental newsletter, and buy candidates a cup of coffee once you get a good set of potentials. Of course, there is an upper bound on the talent/quality you are going to find. But depending on the type of work you need done it could work out great.
poet··on Martin Fowler's Domain-Specific Languages book is out
You didn't originally get that just from chapter 4 of SICP. You have much, much more knowledge of all kinds of things relevant to writing DSL's that you didn't learn from chapter 4 of SICP. That it may all be implied in that chapter does not mean it is a useful resource for someone touching the subject of DSL's for the first time, because they won't grasp the implications. Implications may be clear in hindsight, when you apply all your other knowledge to that chapter, but that doesn't mean they were even remotely clear to you in the first place.

SICP is like a deep philosophical work: you need to study philosophy and read a lot of primary and secondary works to truly understand it's references and implications. To most people, it is not useful as a guide to writing DSL's.

This is a fair point and worth talking about. When I read SICP I already understood Lisp macros, which is a major conceptual leap. So I will admit that I cannot provide a datapoint myself to support the idea that Chapter 4 is stand alone. However, the text itself was used in MIT's first computer science course for many years and they did teach through Chapter 4. Many other schools have used SICP in the past as well (http://mitpress.mit.edu/sicp/adopt-list.html). I think the fact that college freshman are capable of grasping it in a semester provides some evidence against your claim that you need "much, much more knowledge of all kinds of things". Hell, even spending a year to learn it would be fantastic.

Look, I'm with you on the fact that SICP is hard. But let's just reflect on the fact that Chapters 4 and 5 in a book written 26 (or 14) years ago give you a strong foundation in programming languages and compilers. There's tons of stuff you can do with this foundation, including writing DSLs. It's a pet peeve of mine that we seem to be constantly rehashing various ideas in SICP, except that we need to write thousand page books on how to express these ideas in languages like Java or C#. Based on a quick glance of the book draft, this bloat is immediately apparent! For example, the distinction between internel and external DSLs? Completely unnecessary. With an understanding of Lisp the idea of an internal DSL disappears; it's just a natural part of the language. And when you think about it, the idea of external DSLs isn't useful either. If the external DSL is expressive enough, it's just like an internal DSL; simply an extension of the language you implemented it in. If not, well then you're parsing am external file format and not a language.

So yes, to reiterate, teaching SICP is hard. But we'd be better off just biting the bullet to avoid all the bloat and repetition that results from not teaching it.

poet··on Martin Fowler's Domain-Specific Languages book is out
Two things: (1) classifying Chapter 4 of SICP as a chapter about parsing is just plain wrong and (2) Fowler's DSL book just came out; by definition you simply can't place it in the same class as the Dragon book.

I think if you actually read Chapter 4 you would have a much different opinion. There's nothing "simple" about it. If you actually grok Chapter 4 then you grok Lisp. After that, it becomes apparent that the phrase "Domain Specific Language" is really just unnecessary terminology.

poet··on Martin Fowler's Domain-Specific Languages book is out
Or you could just read Chapter 4 of SICP: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-25.html..., the first edition of which was published 26 years ago.
poet··on List of statutory minimum employment leave by country
Well, the 10th amendment lets any state mandate employment leave if it wants to right?
poet··on Ask HN: How do Hackers kill time when bored on weekend?
Github. Momentum is key here. If you don't pick a project you are interested in and keep at it, coding for fun won't actually be fun; it will feel overwhelming and boring. But on a Sunday evening it's a great feeling to just hammer out an incremental change to a library you own and push it to the world. :)
poet··on The OS Doesn’t Matter…
As I noted in my previous post, it's pretty much out-of-the-box for Emacs as well. But even if it wasn't, who cares? You're going to spend the next decade at least using your development tools. The smart thing to do is to pick the highest quality tools and spend the time to learn them.

In no other creative or engineering profession is there this expectation that the most advanced tools are shrink wrapped together. Who gives a shit if you can buy paint together with your brushes? Just buy the best damn paint and brushes you can find, regardless of who sells them.

poet··on The OS Doesn’t Matter…
Uh, I have access to GDB, Valgrind, and DTrace through Emacs (either through GUD or a separate mode). The integration is seamless enough for me, and if it wasn't, I could spend an hour writing an Emacs Lisp extension to fix it. This is classic FUD.
poet··on The OS Doesn’t Matter…
"The profiling, system monitoring, and large project workflow tools are years ahead of anything that you can get off-Windows."

It's patently false that the profiling and system monitoring tools you can get on Windows are years ahead of anything you can get on a different platform. In fact, it's the opposite [1, 2]. And I wont even get into the fact that we're still catching up to 30 year old Lisp machines in the areas of editor integration, debuggers, and code assistance.

[1] http://en.wikipedia.org/wiki/DTrace

[2] http://valgrind.org/

poet··on Ask HN: Good books?
Alan Kay's reading list: http://www.squeakland.org/resources/books/readingList.jsp. I think you can find what you are looking for. :)
poet··on MIT Video lectures - Introduction to Algorithms
You can't replace CLRS as a reference, but I recommend the following free draft if you're looking for an algorithms text to start out with: http://www.cs.berkeley.edu/~vazirani/algorithms.html.
← PreviousPage 5 of 6Next →