HN user

willarson

287 karma

Interests: Scala (Lift), Python (PyObjC, Django), Java (Swing), Cocoa, Flow theory, Economics, Languages (Japanese, Spanish, French), Desktop Apps, Common Lisp (SBCL, Ltk).

Blog: www.lethain.com (handrolled in Django on a virtual server, sometimes it even works)

Email: lethain@gmail.com

Posts3
Comments155
View on HN

The problem is that the average textbook sells a small run of copies, and doesn't benefit from economies of scale. Unfortunately, it seems that the professors and the publishers both like the current system, and the students have very little influence on the process.

There are some solutions, but the incentives don't seem to be in place to encourage them. The best seems to be reducing the overall number of textbooks, allowing each one to have a larger run and thus to better benefit from economies of scale (and be cheaper to buy at the same profit margin for the producers). But to achieve that we would have to stop letting professors choose their own books, and professors are not known to appreciate being herded.

This is asking for speculative work on an awe-inspiring scale, and I find it brazenness to be a bit hard to swallow. Arrington wants other people to build something he wants, and will not pay them for it. Instead, he is offering a promise to eventually open source the design specs.

Regardless of whether or not this project ever amounts to anything, and I don't believe it will without an individual at the epicenter with the talent and taste to make final decisions on all details, this is a scam for those who are contributing to it. I hate spec work posing itself as generosity, and the humanitarian effort this most closely resembles is King Leopold in the Congo.

Actually, it works in Opera, Safari, Firefox and in Internet Explorer (using the excanvas). Its still evolving a bit, and I hope to add more statistical analysis to it, but its a bit fun.

I'd pretty much guarantee that its real purpose is to serve as a simple but pleasant portfolio piece for a designer or developer, and that purpose isn't defeated by it being copyable.

But, I think the point of the service is that only one person can read it not that it can only be read once. They could prevent easy copying by using Flash, etc, but it that would be cruel, unusual (well, it should be usual), and wouldn't improve their offering.

First, the first amendment has absolutely no relevance here, since it is a restriction being placed on government, not on individuals. There is a chronic habit to misinterpret this as "I can say what I want, wherever I want, whenever, however", which is an interesting opinion, but one with no correlation with the legal definition. The 1st isn't intended to--and doesn't--defend the imagined right to express your views on other people's servers.

Next, your real life examples are a bit sensationalist. The difference is that Saddam was killing people for expressing opinions, whereas we want to downvote poorly expressed and undefended opinions. A more apt comparison would be the university setting, where challenging opinions will be accepted on the merits of their presenter's ability to defend them. The same applies to Galileo, who was persecuted for his theories (not, note opinions). I believe that we'd be overjoyed to have a Galileo posting here, since he would link to his mathematics and let us examine the feasibility of his theories for ourselves.

Finally, to address the meat of your argument against downvoting, I think you have misdiagnosed why people are downvoted. I rarely see people downvoted for their opinions, but frequently see people downvoted for failing to effectively defend or explain their opinions. Since we are trying to foster discussion, the actual opinion is usually less important than explaining how they have arrived at their opinion, and why their opinion is viable. Simply expressing an opinion is noise in a conversation often boils down to noise, and opinions on their own won't feed the starving mind: the meat of the argument lies in explaining opinions.

Thus, I believe that the downvote allows the community to exert a stronger preference for comments that add value. If you want to avoid being downvoted, express you opinion and then defend it.

The person who runs that site is top notch at creating interesting or controversial headlines, but usually delivers a rant at best or--in this case--nothing at all. As best I can follow, this article's outline is this:

1. He met a presumably incompetent coder before the first bubble, who was possibly arrogant. 2. He previously complained about a incompetent coder in South America. 3. He has also met a competent coder in South America. 4. That competent coder may or may not have horses, but he definitely might have them, and he probably has a nice house as well. 5. He's pretty sure that people like the guy who is competent. 6. Wages don't correlate with quality.

I guess what gets me about his articles, is they are usually about something I'd like to know more about, and he presents this veneer of of authority, but always skims over the point of his argument where one might reasonably expect him to defend his position beyond simply stating it as a solemn truth.

Its actually not that bad, but it really depends on your browser. I've been throwing together (meaning not at all finished) a tower defense game using it (http://www.willarson.com/code/processing/ptd.html), and it plays amazingly quickly on the current release version of Safari, and plays just slightly slower (but still perfectly, just a different in how quickly frames are processed) in the beta 5 of FireFox 3. On the other hand, in the release version of Camino it runs horrifically.

There are a ton of issues with it, in particular not working on IE at all, some features needing beta browsers, etc, but I don't think that speed is going to be one of the more important limiting factors. I imagine the demo you looked at was doing something pretty crazy, either visually or in the code ;)

Most up-to-date Markdown implementations support footnotes (specifically the Python one does for certain, but the syntax has been around for a while).

The syntax is pretty easy. [^1]

[^1]: And really adds some jazz to blog entries.

I am interpreting this question to mean "How is posting this link different then posting a new topic on HN with the same text?" (Please stop me if I have simply misinterpreted a snarky remark about the value of my comment. ;)

I wasn't intending to address that distinction in my comment, but the distinction is important because additional traffic to your website has the potential to benefit you far more than posting "a long block of text" on HN does. This is why most low quality submissions come in the form of links instead of text submissions: because the submitter wants readers to visit their website for nefarious sundries.

The point I was trying to make, which applies equally to submitted links and printed text, is that they should be of higher quality than this submission. To me this submission feels like its raison d'etre is to serve the submitter, and does very little in way of sparking interesting or meaningful discussion for the HC community.

To be more specific, it fits into the mold of the variety of submissions that I find to consistently be of the lowest quality: short (and often unedited) posts submitted by their own authors. When I joined the HN, posts of this kind were virtually unheard of, but recently they have become rather common. A simple test for these kinds of submissions is "If someone else found this entry, would they submit it to Hacker News?"

I have to apologize though, my comments here are really directed at an undesirable trend, of which your submission is only one example, and not an egregious one at that. So, I hope you don't put too much weight into my critique.

It seems the crux of this post is that "while I don’t know the exact donation totals, I bet the site has raised a thousand dollars in a couple days." Or to summarize slightly: something almost positively probably happened, and by god I'll use this event that may or may not have happened as linkbait.

I really think we should refrain from posting our own content unless it is of particularly high quality (a fairly long--and edited--essay, a project we have been working on for several months, a redesign of our company's app). If I had to summarize this concept into one rule it would be "Don't post things that might appear to a reasonable individual to take longer to read than to write."

In mentioning that its "the new things that give you an edge," are you suggesting that web2py is one of those new things? In what non-trivial way do you feel that it differentiates itself from the literally hundreds of other web frameworks?

Examining the documentation I found the unsatisfying answer: "web2py is better because it is faster, it is easier to use, and it is stable and always backward compatible."

Trying to go to their website using Camino (I realize that its working for Firefox and other more popular browsers, was just kind of surprised):

javax.servlet.ServletException: agent.filename property not set in config file at com.cmp.nucleus.servlet.NucleusServlet.init(NucleusServlet.java:895) at com.caucho.server.http.Application.createServlet(Application.java:3114) at com.caucho.server.http.Application.loadServlet(Application.java:3065) at com.caucho.server.http.QServletConfig.loadServlet(QServletConfig.java:435) at com.caucho.server.http.Application.getFilterChainServlet(Application.java:2809) at com.caucho.server.http.Application.buildFilterChain(Application.java:2765) at com.caucho.server.http.Invocation.service(Invocation.java:313) at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:346) at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:274) at com.caucho.server.TcpConnection.run(TcpConnection.java:139) at java.lang.Thread.run(Thread.java:595)

Woah woah woah. First, calm down and remember to breath: its gonna be okay.

Next, you need to figure out why the company you are working at has allowed you to hang around for six months without helping you get integrated, or--if you really are too inexperienced (not 'dumb') for the startup, then why hasn't anyone fired you yet?

If you've been stuck for two months, and are in a resource constrained environment (which most startups are), then you need to figure out who is steering this ship, and why they are willing to let you stowaway on it.

Maybe you are being more effective than you realize, which would be great, but I think its more likely that no one has a firm grasp on what is happening, and that isn't a reassuring sign. It sounds like the people around you aren't communicating with each other, and its hard to believe that will lead to a successful product being put together.

It doesn't sound like you have a strong personal relationship with the other people there, because otherwise you probably would have just asked someone. My advice would be to first dig up your resume and update it to the extent possible, then see if you can establish a friendly relationship with anyone there who would write you a recommendation (or more likely take a phonecall on your behalf), and then ask the questions you asked here to whoever is in charge at your startup.

In the long-run it isn't worth being miserable and frustrated just to keep collecting a paycheck. Finding someone to talk about your concerns is better in every way. First, you look like you care about the quality of the job you are doing (which it seems like you do, otherwise you wouldn't be upset about it). Next, it will force the organization to figure out why its communicating poorly, or otherwise make it very clear to you that its a sinking ship.

Also, I think its a bad sign that people are snidely disrespecting their coworkers work. That kind of thing can fly in a larger company, but petty rivalry and negativity will kill a small group of people.

Best of luck!

This is a topic that used to bother me before I graduated and left academia behind. When I attended a private middle and lower school, parents would call my mother and ask her how she completed the current project. The level of penetration of this practice was such that it was assumed that the parents would do their children's work. And this was for students younger than 14.

Did any of that work actually matter? Probably not, but the parents felt strongly enough about it to spend hours writing 4th grade reports on Gettysburg or the Cherokee Indian tribe.

With parents willing to go that far, I don't think its surprising that they're shelling out so much money for admissions editors or are writing the essays for their children.

Really, though, I think its just symbolic of how far the American education system has strayed from its imagined mandate to educate. Children don't learn how to write or research when they are thusly coddled, and they don't learn how to deal with new and challenging situations when their parents go along for their first job interviews and browbeat the interviewers.

I think that these misguided parents are elongating childhood in a society where childhood already lasts longer than it ever has before, and are stunting their children in their efforts to give them a foothold above their peers. These parents won't be thwarted by reason, and will find some other mechanism to 'help' their kids advance. I don't think trying to neutralize them will ever be a good investment of one's time.

I think that portfolio's of software get messy in exactly the same way that joint research papers get messy: how do you figure out who did the work?

That said, I think you're right that in a large body of work you see the little eddies in the programmers mind, and thats an evaluative tool without comparison.

I would take the networking class. My first reason is that it is a survey course, and networking is a massive topic. Its helpful to have a wide exposure to different parts of it. Once you know a bit about the various parts you are in a much more flexible position to go back and specialize in what seems useful later on. But its handy to have an inkling of the direction you need to look in.

So, I would take the networking course because it'll give you a broader perspective. You'll never know what problems you'll run into, nor the solutions to those problems, but having a broad and diverse background allows you to direct your efforts into the proper direction for the specific problem.

It depends on the type of the error, but most errors fail quietly in Django templates. For example, you can pass a Python object to your template, and can reference its fields using syntax like {{ object.absolute_url }} if, for example, you tried to access a field that doesn't exist {{ object.doesnt_exist_field }} then it simply doesn't emit anything (as opposed to failing loudly).

There are a few errors in the template language that do fail loudly, and these fail when the templates are compiled (something you have the easy ability to test by simply loading the page once on a development server. Or by writing unit tests with the Django testing framework to make sure that all your urls are returning non-error response codes). Anything that has to do with the specific context of the page you are loading (the specific instance of an Object you are looking at, etc) may cause some ugliness (blank space where you wanted to print the value of a non-existant value), but the page will still load properly.

So, answering your question, there are a few types of syntax errors in the template language (loading a non-existent template library, improperly using tags or filters) that can cause errors (but all of those errors are easily testable). But the vast majority of errors will simply be ignored and normal functioning will continue.

I also agree about JSON. JSON is quicker to serialize to and from than XML, and it also uses less bandwidth.

Realistically though, the serialization should be a simple layer on the top of your API, and there isn't anything that should prevent you from doing both quickly.

I would take the first job. Many people without a complete formal education have this fear about the things they should know. They also assume that if they had only completed a CS major they would in fact understand these things. Unfortunately this doesn't play out.

I graduated with a CS major, and many of my classmates who graduated with the same did not have a very strong grasp on "algorithms, performance, or what makes beautiful code". Don't let the lack of a formal CS education distress you. The students who know the most are the ones who are off doing their own projects and working with each other to create things, those who charge through the curriculum learn a lot, but don't internalize the knowledge, and thus retain little of it.

Epi0Bauqu is definitely correct that you do not want to access google 10-50 times with each page refresh, that would be very slow.

However, with the number of pieces of data you are requesting you'll have to be intelligent with your storage and querying mechanism. Example: you will very likely want to fork your queries to google to make the entire batch of requests simultaneously instead of sequentially. When you start implementing a caching/storage mechanism you'll want to keep this in mind too: accessing memcached 50 times sequentially will be slower than querying PostgreSQL once (in general, although if the database is very large and has to be paged in and out of memory, etc, this may not hold). So you'll probably want to figure out a way to store these requests in your database, and have a single query that can recall all the relevant geocodes (I don't know the details of how the geocodes will relate to each other, so I can't really be specific), and then you will want to cache that entire request. This will mean that you will (when dealing with data you have already retrieved from google... and prefetching data that you expect to see wouldn't be a bad idea) have at worst one SQL query, and at best a quick access in memcached.

If you can't think of a way to group requests like this, I strongly suspect you will need to rethink your application. Performing 10-50 external requests per page refresh will put a serious damper on your site's performance, and making 50 database queries per page refresh or even 50 memcached queries per page refresh is probably untenable (although you could start caching the entire created pages, depending on what exactly your application does). To get sufficiently quick speed to do 50 queries, you'd probably have to use local memory (which is significantly quicker than memcached), but using local memory will open the door into a thread safety hell.

It probably is a good idea to flag the account as inactive, and move it to separate table to keep the primary table clean. AFAIK FaceBook won't know that you're not removing the data completely, and this will allow you to restore the user if they want to, but not bloat your app with outdated entries.

EC2 could help avoid the cost of having dedicated servers to handle the potentially massive (and more likely extremely small) traffic from FaceBook. This wouldn't be too hard, just have one dedicated server and a box running a load balancer which would automatically spawn EC2 instances if the average load got too high (and kill them if they got too low).

Although its easy to outline this solution, I do think it would be difficult for a lone individual to develop their application along with maintaining the scaling aspects of it. Worse, I think that the Facebook platform is not a very rewarding venue to pursue for a small company, especially one that would be risking a meaningful portion of their funding on it.