git » homepage.git » master » tree

[master] / archive / forums / hacker-news / context.jsonl

{"by":"r00k","descendants":26,"id":391408,"kids":[391418,391463,391696,391499,391719,391444,391802,391627,391619,391806,391482],"score":25,"text":"","time":1228839904,"title":"Damn Useful: When You Forget to type Sudo","type":"story","url":"http://codeulate.com/?p=22"}
{"by":"petercooper","descendants":13,"id":396796,"kids":[37354762,400063,397058,396944,397076,397091,397348],"score":34,"time":1229189591,"title":"Eurisko, The Computer With A Mind Of Its Own","type":"story","url":"http://www.aliciapatterson.org/APF0704/Johnson/Johnson.html"}
{"by":"babyshake","descendants":45,"id":432743,"kids":[432782,432883,432822,432843,433025,433170,432963,433073,433332,433845,433151],"score":61,"time":1231882426,"title":"When the Education Bubble Finally Pops","type":"story","url":"http://blog.jamtoday.org/post/70265208/when-the-education-bubble-finally-pops"}
{"by":"mechanical_fish","id":432782,"kids":[432965,432793,432887,432794,432824,432903,432791,432885,432899,432817,433419],"parent":432743,"text":"I'm being attacked by an evil widget on this page. There is a big-ass Javascript popup, apparently perpetrated by something called \"PostRank\", that obscures the page on initial load (in Safari 3/Mac). It has a list of posts labeled \"Top Posts\", none of which are the one I want to read. I can't figure out how to make this thing go away -- there is no close box, and clicking inside it links me away to something else -- and when I scroll the damn thing <i>follows me</i> to make very sure that I never get a glimpse of the actual post. I can't see around it.<p>Words cannot express how infuriating that widget is. It's like Snap.com <i>only more evil</i>. Banish it back to the nether regions from whence it came and submit this post again so I can actually read it.<p>UPDATE: Seriously, I can't get rid of it. Clicking inside it, clicking outside it, the Escape key, nasty words about its mother -- nothing works. I even tried following one of its links, and the resulting page had the <i>same obscuring widget on it</i>. Who designs the UI for these things?<p>I'll try restarting Safari.<p>FURTHER UPDATE: Nope, it's out of excuses. That is officially the suckiest non-musical widget I've ever seen.","time":1231883917,"type":"comment"}
{"by":"eries","descendants":59,"id":436870,"kids":[437048,436930,437140,437010,437068,437001,437082,437163,436966,437267,437255,437192,437261,437138,438187,437779,437099,437927,437198,437745],"score":100,"time":1232126335,"title":"Why PHP won","type":"story","url":"http://startuplessonslearned.blogspot.com/2009/01/why-php-won.html"}
{"by":"wooby","descendants":45,"id":437315,"kids":[437443,437360,437700,437415,437410,437649,438899,437468,437355,437813,437714],"score":77,"text":"","time":1232141506,"title":"Why PHP really won","type":"story","url":"http://alan.dipert.org/post/70990749/why-php-really-won"}
{"by":"smoody","id":437443,"kids":[437847,437482,438035],"parent":437315,"text":"\"why would I use PHP for anything more than toy projects?\"<p>Clearly PHP can, and is, being used for projects that go well beyond being toy projects. I doubt, for example, that anyone would call Flickr, Facebook, etc. 'toy projects.'<p>\"But at my current job, I’m in charge of adding features and debugging a massive functionally-written PHP codebase. It is horrifying.\"<p>Ah...there it is. His real complaint is about maintaining bad code and not about a bad programming language. I would argue (and even wager) that equally difficult-to-maintain code could be written in Java, Prolog, C++, Lisp, Forth, and Logo (well, maybe not Logo).<p>I've written commercial applications in perhaps a dozen programming languages (including Prolog) and I've had love affairs with them all and yet I'm using PHP for my current project. But then again, I'm writing some great code and I love maintaining it! :-)","time":1232147562,"type":"comment"}
{"by":"lisper","descendants":147,"id":463234,"kids":[463300,463687,463294,463633,463648,463285,463345,464051,463455,463309,463389,464081,463638,463319,463574,464114,463651,464386,463602,463795,463362,463705,464637,464083,463693,463366,463348,463376,463339,464331,463396],"score":248,"time":1233621390,"title":"Why CSS should not be used for layout","type":"story","url":"http://www.flownet.com/ron/css-rant.html"}
{"by":"jacktang","descendants":18,"id":485423,"kids":[485480,485577,485451,507846,486101,485439],"score":4,"text":"Given sample URL: http://www.youtube.com/watch?v=xqvObyU2ITs, any availabale algorithm to generate youtube style video id (xqvObyU2ITs)? Thanks!<p>-Jack","time":1234936767,"title":"Ask HN: how can I generate youtube style id?","type":"story","url":""}
{"by":"jcapote","id":485480,"kids":[507848],"parent":485423,"text":"def generate_code(len = 5)<p><pre><code>  (1..len).map { ((\"a\"..\"z\").to_a + (\"A\"..\"Z\").to_a + (0..9).to_a)[rand(62)] }.join\n</code></pre>\nend","time":1234942147,"type":"comment"}
{"by":"wooby","descendants":34,"id":502236,"kids":[502300,502335,502290,502399,502314,502451,502804,502342,502243,502339,502293,502950],"score":27,"text":"","time":1236123600,"title":"Ask HN: Review my startup, Droplink for OS X","type":"story","url":"http://droplink.me/"}
{"by":"divia","id":502243,"kids":[502252],"parent":502236,"text":"I downloaded it, but it quits right after it opens.  (Macbook running 10.5.6, if that helps.)","time":1236124179,"type":"comment"}
{"by":"wooby","id":502252,"kids":[502294],"parent":502243,"text":"Thanks for giving it a look, I'll try and see whats up with it.","time":1236124463,"type":"comment"}
{"by":"JeremyChase","id":502290,"kids":[502305,502351],"parent":502236,"text":"Is it just me or was there no audio in the video?<p>I think divia's problem is that there is no documentation in the program itself. I downloaded it and unzipped it, and ran it. After entering the registration code I had no clue what to do. The program seems to just \"end\".<p>I had seen the video so I figured that I should try dragging a file onto it. I added it to my launcher and it works as it does in the video, but had I not seen the video I wouldn't have known to do that.<p>I suggest that after you accept the registration code you ask if the user wants it installed in the menu bar. Also I suggest telling the user that they can drag files to it to upload them. Perhaps embed the video at that point again.<p>Hope this helps.\nJer<p>EDIT: I also find mac programs distributed as .zip to be annoying. I strongly prefer .dmg files. Also, why is my \"Downloads\" icon now the same as Droplink's?","time":1236126100,"type":"comment"}
{"by":"parachute","id":502294,"kids":[502297],"parent":502252,"text":"Same thing quits right after it opens,<p>10.5.6, imac","time":1236126161,"type":"comment"}
{"by":"JeremyChase","id":502297,"kids":[502301],"parent":502294,"text":"See my first comment; I believe it is working as designed, but there is no message to the user.","time":1236126274,"type":"comment"}
{"by":"sherb113","id":502300,"kids":[502414,502316,502529],"parent":502236,"text":"Just tried it. I like how fast this is! It's a good alternative to dropbox for a quick image upload or something. It would be nice if it auto copied just the url.<p>I would also like it if the file stayed hosted longer than an hour. Say I want to email the link to a friend, but the friend doesn't check their email for 3 hours. If they click the link the file will no longer be there. Having the droplink icon in the top menu bar would be great, instead of having it in the dock.","time":1236126335,"type":"comment"}
{"by":"mikeyur","id":502316,"kids":[502357],"parent":502300,"text":"It does auto copy the URL, but you can only paste it into email/IM convos. At least from what I've seen.","time":1236127519,"type":"comment"}
{"by":"nickb","id":502335,"kids":[502377,502371],"parent":502236,"text":"Pretty awesome! I have an almost daily need for something like this when sending files to people over chat/irc.<p>Your link creation needs some work, however. I can't paste the link into a non-RTF box (this input box for HN, for example). You should reverse-engineer how Safari creates links when they're copied to clipboard and do the same.<p>For example, if you right click on any title on any website, and copy a link, you will notice that when you paste it to an RTF box, you get the same behavior as what you currently do but when you paste it into Terminal, you get the URL. When I paste Dropsend \"URL\" to Terminal, IRC or to Safari's address bar, I get nothing.","time":1236128564,"type":"comment"}
{"by":"jcapote","id":502357,"kids":[502363],"parent":502316,"text":"It copies it to the clipboard, you should be able to past anywhere. Pro tip: you can drag an image right from a web page into the dock app.","time":1236129689,"type":"comment"}
{"by":"mikeyur","id":502363,"kids":[502376,502366,502372],"parent":502357,"text":"Here's what I got when I went to paste the copied url from an image called storepromo.png - <a href=\"http://img.skitch.com/20090304-tqx32knar1rhd6gcxhwmc98qic.jpg\" rel=\"nofollow\">http://img.skitch.com/20090304-tqx32knar1rhd6gcxhwmc98qic.jp...</a><p>if you hit submit, it tries to go to &#60;name&#62;.&#60;extension&#62; - it's like copying/pasting a url from safari into iChat or Adium. It shows a clickable name, not the full URL.","time":1236129892,"type":"comment"}
{"by":"edb","id":502451,"kids":[502464],"parent":502236,"text":"The important questions here are:<p>1) What's my file limit?<p>2) How long are files kept for?","time":1236135009,"type":"comment"}
{"by":"wooby","id":502464,"kids":[502478],"parent":502451,"text":"100mb max uploads, files last for 24 hours","time":1236135790,"type":"comment"}
{"by":"edb","id":502478,"kids":[502542],"parent":502464,"text":"In my opinion, it should be something closer to 2 weeks. I send alot of emails that don't get checked within 24 hours.","time":1236136825,"type":"comment"}
{"by":"wooby","id":502542,"kids":[502614],"parent":502478,"text":"It's a question of markets, I think, and it's something we haven't really decided on.  1 hour covers IM, mostly. 8-24 probably covers most e-mail use (maybe?)  What we don't want this to become is something like Rapidshare, and limiting file lifetimes is our attempt at not letting that happen.  The service is designed primarily to share files with people you know personally, within a finite time period.  But we'll see how it gets used, and maybe change our policy.","time":1236141209,"type":"comment"}
{"by":"jd","id":502614,"kids":[504946],"parent":502542,"text":"If you're worried about that you can always expire either when time limit is exceeded (say, 2 weeks) or download limit (downloaded 5 times?). Or you can make download times degrade when the file is downloaded more frequently -- the 100th download will go at 10kb/sec instead of 10mb/sec. There are so many creative solutions that you don't need to put any rules in place now.<p>Also, I think most of us (myself included) worry about abuse too much. If people start abusing your service you will have the data to deal with it effectively -- you'll think of a solution because you'll have to. And if it turns out people aren't taking advantage of a friendly download policy -- then the service ends up being more useful for honest users.","time":1236147050,"type":"comment"}
{"by":"palsecam","descendants":92,"id":507212,"kids":[507213,507481,507582,507252,507444,507783,507294,507546,507469,507245,507251,507376,507538,507235,507232,508492,508524,507386,508792,507261,508018,507250,507237,507492,507432,507824,507222,509123,508991,516849,507233,507322,507276,508491,507246,507621,508703,508688,508277,508797,508748,507242,507421,508155],"score":149,"text":"","time":1236523189,"title":"Ask HN: Please review my webapp: Da Button Factory - create shiny buttons","type":"story","url":"http://dabuttonfactory.com"}
{"by":"mati","descendants":26,"id":511908,"kids":[512012,512416,513824,512785,512378,513132,511985,512336,512593,512447,513775,512345],"score":112,"time":1236786802,"title":"Tunneling traffic through DNS, a.k.a free internet in cafes/airports","type":"story","url":"http://www.dnstunnel.de/"}
{"by":"agotterer","descendants":29,"id":520189,"kids":[520566,520750,520857,521294,520780,520709,520610],"score":36,"time":1237311416,"title":"New Google Chrome Beta","type":"story","url":"http://chrome.blogspot.com/2009/03/google-chrome-has-new-beta_17.html"}
{"by":"mpk","id":520566,"kids":[520968,520597],"parent":520189,"text":"And .... still no linux build.","time":1237322242,"type":"comment"}
{"by":"agotterer","id":520597,"kids":[520923,520647,520781],"parent":520566,"text":"or Mac :(","time":1237323393,"type":"comment"}
{"by":"wooby","descendants":4,"id":532452,"kids":[532775,532786,532732],"score":12,"text":"","time":1238016013,"title":"GCalCron Automates Your Linux System with Google Calendar","type":"story","url":"http://lifehacker.com/5179566/gcalcron-automates-your-linux-system-with-google-calendar"}
{"by":"njharman","id":532786,"kids":[533091],"parent":532452,"text":"CL junkie so no interest in this project.  But doing what it does in reverse would be great for my work.  We have numerous business critical b2b batch jobs kicked off by cron.  It would be pretty cool if each one posted start/stop/endstatus to a gocal.  Interested parties could see nightly and historical activity.  Also 1/2 decent visualization for understanding the order/interrelatedness.","time":1238030974,"type":"comment"}
{"by":"vladev","descendants":9,"id":575472,"kids":[576022,575858,575754],"score":25,"text":"","time":1240491554,"title":"Scala 2.8 Preview","type":"story","url":"http://www.scala-lang.org/node/1564"}
{"by":"wooby","id":575858,"kids":[575934,576056,576213],"parent":575472,"text":"\"Support for continuations. A compiler plugin will support continuations as an optional feature of Scala, using a type-directed continuation passing transform. Continuations are useful to implement advanced control constructs, for instance for asynchronous I/O, user interface event handling, or dataflow concurrency.\"<p>I didn't think continuations were possible on the JVM.  Any idea how they're doing this?","time":1240502088,"type":"comment"}
{"by":"jcl","id":576056,"kids":[577048],"parent":575858,"text":"<a href=\"http://blog.richdougherty.com/2009/02/delimited-continuations-in-scala_24.html\" rel=\"nofollow\">http://blog.richdougherty.com/2009/02/delimited-continuation...</a><p>It sounds like you will only be able to do continuations within Scala code, not over a call-stack that includes Java/Scala transitions.<p>(...which is entirely feasible.  After all, many interpreters for continuation-friendly languages are built on top of C, which has no continuations.)","time":1240507101,"type":"comment"}
{"by":"Rexxar","descendants":5,"id":578873,"kids":[578956,578942,578949],"score":13,"text":"","time":1240665814,"title":"The Sound of iPod","type":"story","url":"http://web.archive.org/web/20060529120135/http://ipodlinux.org/stories/piezo/"}
{"by":"NonEUCitizen","descendants":11,"id":578887,"kids":[579033,579124,579173,579398],"score":27,"text":"","time":1240667316,"title":"\"Home-made\" Submarine","type":"story","url":"http://www.nytimes.com/2009/04/26/magazine/26drugs-t.html"}
{"by":"juliend2","descendants":83,"id":578996,"kids":[579321,579146,579227,579120,579158,579100,579084,579099,579268,579081,579152,579129,579109,579290,579252,579647,581407,579044,579189,579405,579727,579000,579255,579846,579166,579253],"score":15,"text":"All my clients use shared hosting such as iWeb.com (which does'nt have Shell access). Mainly because they don't want to pay a lot for a _reliable_ webhost.<p>My problem is : As a language-snob (i know, it's sad), i'm immensely bored about PHP. I want to learn another back-end language that i can use on my freelance web jobs.<p>I'm considering learning Perl. But Perl needs modules to extends it's possibilities, this i cannot do without Shell access. And it's also better to run it as fastcgi or mod_perl, things that shared hosting does not always support.<p>I know Ruby, but hosting Ruby is not cheap enough, or accessible enough for my clients.<p>Do you guys have any idea of a web stack or shared host that does the job?<p>What do you do when you can't stand PHP anymore?","time":1240676510,"title":"Ask HN: I can't stand PHP anymore. What else can I choose?","type":"story"}
{"by":"FiveFiftyOne","descendants":65,"id":580332,"kids":[580369,580352,580455,580373,580375,580841,580450,580406,580571,580428,580347,580617,580598,580412,580685,580615,580554,580509,580907,580674,580470,581218,583081,583045,580569,580417,580620,580349,580700,580437,580755],"score":62,"text":"Throughout my career, I've viewed C as the sleeping monster that mere mortals such as myself dare not waken. However, as I increasingly seek to achieve more complex goals in my projects, I find myself encountering C libraries (such as GMime) which will answer all my questions, if I could actually program in C. I have a copy of C Primer Plus Fifth Edition at hand, a development FreeBSD server as well as my Mac, but would like to ask of this community if they are aware of any other references, such as old CS course materials, which may help. Many thanks in advance. I realise that this is a long term goal, but feel that with my taste in server platform and operations software, C will prove a boon to me.","time":1240774453,"title":"Ask HN: Learning C","type":"story"}
{"by":"Anon84","descendants":34,"id":586313,"kids":[586387,588871,586916,586528,587111,586402,586385],"score":71,"time":1241060269,"title":"In Major Shift, Apple Builds Its Own Team to Design Chips","type":"story","url":"http://online.wsj.com/article/SB124104666426570729.html"}
{"by":"9oliYQjP","id":586387,"kids":[586411,586503,586425,586398],"parent":586313,"text":"I suspect this is Apple's response to a phenomenon originating from China. I've been reading up about the Chinese knock-off cellphone, or \"shanzhai phone\", industry. It has become an incredibly lucrative business. Why? Because, it's now possible for a company, comprised of a small group of 3-5 people, to design, build (or rather contract to a factory), and market phones. The technology has gotten to the point where most of the difficult technical design hurdles have been removed by the presence of a cellphone-on-a-chip so-to-speak. Sound familiar to anyone around here? So you have these tiny, agile startups being able to compete with the big boys. A lot of the big boys are still in denial, and will probably try to respond to the shanzhai phone industry by attempting to get the Chinese government to crack down on it. Not Apple; their approach will be to out-innovate these players by playing off the one weakness that they have: that they cannot design their own cellphone-on-a-chip.<p>I won't make any predictions about whether Apple will still be a dominant player in the cellphone market 10 years from now. However, I will say that this move almost surely guarantees they will still be in the game by then. Other companies that rely on the same logistics and supply chain that the shanzhai guys do probably won't be as lucky unless they change their strategy as well.<p>UPDATE: The reading I've been doing was on my iPhone and I didn't bookmark everything. But one article was definitely this one: <a href=\"http://www.nytimes.com/2009/04/28/technology/28cell.html\" rel=\"nofollow\">http://www.nytimes.com/2009/04/28/technology/28cell.html</a>","time":1241065296,"type":"comment"}
{"by":"wmf","id":586411,"kids":[586437],"parent":586387,"text":"I wonder where these shanzhai guys are getting their firmware, because that's probably a lot more expensive than designing the hardware. Are they just bootlegging it?","time":1241067180,"type":"comment"}
{"by":"csomar","descendants":3,"id":592155,"kids":[592633,592218],"score":1,"text":"I'm starting a new blog (http://codeinput.com) I want your suggestions and you ideas about<p>* The blog template and header<p>* What the blog posts need to focus on (what is more interesting)<p>* Is the blog domain name good and memorable?<p>* Do you have any other suggestions or idea that can help<p>Thanks, I need your ideas to get me started","time":1241429344,"title":"Ask HN: what do you think of my new blog","type":"story","url":""}
{"by":"si2","descendants":12,"id":597530,"kids":[597543,597619,597537,597682,597647,597533,597531,597552,597703],"score":7,"text":"Ask HN: quickest way to earn some hacker news points?","time":1241676276,"title":"Ask HN: quickest way to earn some hacker news points?","type":"story","url":""}
{"by":"cperciva","descendants":43,"id":601408,"kids":[601450,601446,601820,601515,601477,601613,601494],"score":73,"time":1241901637,"title":"Bcrypt is now obsolete","type":"story","url":"http://www.daemonology.net/blog/2009-05-09-scrypt-key-derivation.html"}
{"by":"Tichy","id":601446,"kids":[601533,601458,601488,601759],"parent":601408,"text":"I don't know this guy. Probably he is really famous (?), but I'd rather wait until his scrypt sees widespread adoption before I follow his lead.","time":1241904073,"type":"comment"}
{"by":"preek","descendants":4,"id":623934,"kids":[624068,624329,624078,624084],"score":31,"text":"Use VIM as a powerful IDE for Python - including code completion, pydoc, graphical debugging, task-management and a project view.","time":1243121671,"title":"VIM as Python IDE","type":"story","url":"http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/"}
{"by":"mshafrir","descendants":16,"id":624671,"kids":[624867,624711,624988,624726,624915,625968,624729],"score":36,"text":"","time":1243198732,"title":"JSLint, The Javascript Verifier","type":"story","url":"http://www.jslint.com/"}
{"by":"vaksel","descendants":34,"id":625498,"kids":[625558,625903,625553,626331,625684,625505,625691,625616],"score":58,"time":1243262812,"title":"Netbook powered by 8 AA batteries","type":"story","url":"http://www.norhtec.com/products/gecko/index.html"}
{"by":"wooby","descendants":12,"id":634576,"kids":[634607,635411,634702,634679,634736],"score":31,"text":"","time":1243762439,"title":"Sinatra clone in Scala","type":"story","url":"http://github.com/alandipert/step/tree/master"}
{"by":"10ren","id":634607,"kids":[634611,634735],"parent":634576,"text":"Is the whole thing really just the one file (110 lines)? <a href=\"http://github.com/alandipert/step/blob/42cee9ecd360205def359ce2719f34120edee499/src/main/scala/Step.scala\" rel=\"nofollow\">http://github.com/alandipert/step/blob/42cee9ecd360205def359...</a>\nI know it describes itself as \"tiny\", and sinatra is also tiny, but that seems... small. (I don't know anything about Scala - is it especially concise?)<p>I like how the HTML seems to be a first-class datatype in the example (is that a Scala thing? I'd better do some research):<p><pre><code>    get(\"/date/:year/:month/:day\") {\n      &#60;ul&#62;\n        &#60;li&#62;Year: {params(\"year\")}&#60;/li&#62;\n        &#60;li&#62;Month: {params(\"month\")}&#60;/li&#62;\n        &#60;li&#62;Day: {params(\"day\")}&#60;/li&#62;\n      &#60;/ul&#62;\n  }</code></pre>","time":1243766591,"type":"comment"}
{"by":"papaf","id":634679,"kids":[634682],"parent":634576,"text":"Very cool. I notice that you're using sbt to build. I'm using maven to build a scala project. I'd be very interested to know how sbt compares to maven if you have experience with both build systems.","time":1243777284,"type":"comment"}
{"by":"holaberlin","id":634736,"kids":[634937,634924,635787],"parent":634576,"text":"It looks like there is no separation between view and controller. Mixing HTML into your controller methods seems like a step backwards.","time":1243783761,"type":"comment"}
{"by":"wastedbrains","id":634937,"kids":[634992],"parent":634736,"text":"If this is a port of Sinatra that is an option to make a very small concise webservice. You can choose to do seperation, but if you want something very simple and compact a single file can be easier. We have a Sinatra app that has the model,view,controller, and tests in a single file that is less than 250 LOC. It would be more obfuscated to have 5 files of less than 50 LOC each (Some with as little as 4 lines).<p>If it doesn't provide any option for separation that is bad, but for micro services it can be really nice.","time":1243794453,"type":"comment"}
{"by":"csbartus","descendants":172,"id":637676,"kids":[637861,637848,637797,637761,637748,637784,637714,637697,637896,637709,637772,637844,637870,637749,637800,637736,638016,637746,637751,637841,638212,637777,638681,638451,637840,637876,638307,637712,637715,637744,637737,637724,638226,637877,638142,637873,637788,637947,637845,637891,638211,637808,638312,639897,637822,638316,637928,639221,637894,637833,637911,638447,637850,637914,638458,637878,638345],"score":129,"text":"","time":1243945158,"title":"Web Applications Should Be Compiled","type":"story","url":"http://ediblepet.net/2009/05/23/web-applications-should-be-compile/"}
{"by":"jon_dahl","descendants":21,"id":638198,"kids":[638436,638331,638290,638258,638359,638482,638399,638553],"score":23,"text":"","time":1243963891,"title":"When announcing your new web framework, don't be a douche","type":"story","url":"http://jrmehle.com/2009/06/02/dont-be-a-douche/"}
{"by":"10ren","id":638482,"kids":[638867],"parent":638198,"text":"\"RoR in C\" is intriguing; another one: \"Sinatra in C\".<p>They are partly a systemization of lessons learned in webapps, and this <i>particular</i> aspect should be transportable out of Ruby.","time":1243972156,"type":"comment"}
{"by":"khandekars","descendants":18,"id":640932,"kids":[641122,641079,641321,642118,641120,642355,641892,641068],"score":85,"time":1244088244,"title":"Clue: an ANSI C compiler targeting high level languages","type":"story","url":"http://cluecc.sourceforge.net/"}
{"by":"norswap","id":641079,"kids":[641085,641083,641088,641084,641618],"parent":640932,"text":"I don't really get it, is it\n1) C language that gets translated into other languages ?\n2) A C compiler optimized for the high level languages mentioned ?\n3) Something else ?","time":1244100133,"type":"comment"}
{"by":"fossguy","descendants":11,"id":646092,"kids":[646109,646102,646166,646675,646138,646520,646181,646155],"score":14,"text":"","time":1244395791,"title":"Your web site as an ASCII art","type":"story","url":"http://www.sucuri.net/?page=tools&title=site2ascii"}
{"by":"JesseAldridge","descendants":11,"id":647502,"kids":[647746,647556,647701,647540,647586],"score":6,"text":"I think open source development has the potential to produce far superior software than closed source.  I think the only thing that keeps it from revolutionizing the software world overnight is that it's tough to make money at it.<p>If governments funded various software projects you would remove the need for those projects to turn a profit, thus removing a big obstacle to the sharing of code.  I believe this would benefit society greatly.<p>If the code is released under a business friendly license, corporations could effectively have their R&#38;D costs outsourced for free.  This would allow them to focus on their customers more.  This would be good for the economy.<p>I could see excessive regulation being a problem.  I'm not sure how much oversight would be appropriate.  I wonder what would happen if you just gave 100 hackers $20K over the course of a year and let them choose what to work on, just so long as it was open source.<p>A more realistic pilot program would not take much funding at all. Let's say we pay 1000 programmers $50,000 a year to work on open source projects. Toss in another $10 million for regulators and whatnot and that's $60 million total.  Peanuts, really -- less then .01% of the U.S. federal budget.<p>What do you think?  Is this a good idea?","time":1244477790,"title":"Ask HN:  Taxpayer funded open source?","type":"story","url":""}
{"by":"sarvesh","id":647540,"kids":[647557,647844],"parent":647502,"text":"Whenever the idea of government getting involved with startups or silicon valley comes up it makes me sick to my stomach. Picking the right startups, open source or otherwise is a hard thing to do and especially for the government. They have done that in the past, the government trying to fund the semiconductor industry in the 90s, and failed remarkably. I wish they learnt from their mistakes but alas seems like they don't.<p>As far as your idea of funding open source only projects, that already happens in universities. Most of the good open source project you probably use comes from these universities that get federal funding.","time":1244478686,"type":"comment"}
{"by":"JesseAldridge","id":647557,"kids":[647885],"parent":647540,"text":"Ok, so government should fund code development, not startups.  Companies can then take the resulting code and figure out how to turn it into consumer value.  I'll change the title to \"Taxpayer funded open source\".<p>Yes universities are a good source for OSS, but the obvious problem is that they're restricted to university students and faculty.  Plus academic bureaucracy is probably not conducive to effective software development.","time":1244479262,"type":"comment"}
{"by":"tortilla","descendants":2,"id":649229,"kids":[649326],"score":53,"time":1244561042,"title":"Writing Microcopy","type":"story","url":"http://bokardo.com/archives/writing-microcopy/"}
{"by":"zain","descendants":87,"id":649507,"kids":[649926,649804,649560,649912,649834,650065,649817,649901,650118,650256,649837,649905,650154,650207,649907,650385,649915,649818,649788,649853,649597,649733,649919],"score":59,"time":1244570307,"title":"PHP introduces \"goto\"","type":"story","url":"http://www.php.net/manual/en/control-structures.goto.php"}
{"by":"jdp","id":649804,"kids":[649854,649900,649856],"parent":649507,"text":"Why is everyone jumping on this as a negative? Goto isn't inherently evil. Of course in most cases there is a construct that would be a better fit than goto, but it does have its uses. As far as readability goes, odds are a programmer isn't going to be jumping to a label 300 lines up, its used mostly to break out of nested loops and to simulate stuff like state machines. Check out <a href=\"http://david.tribble.com/text/goto.html\" rel=\"nofollow\">http://david.tribble.com/text/goto.html</a>","time":1244576724,"type":"comment"}
{"by":"zeedotme","descendants":11,"id":650139,"kids":[650350,650292,650307],"score":15,"time":1244587072,"title":"Official Google Mac Blog: Introducing Google Quick Search Box","type":"story","url":"http://googlemac.blogspot.com/2009/06/introducing-google-quick-search-box.html"}
{"by":"evgen","id":650350,"kids":[650391,650397],"parent":650139,"text":"This is basically an updated version of Quicksilver, written by the guy who originally produced Quicksilver.  It adds a few bells and whistles but until I have a packet sniffer hooked up to see what it is sending back to the Google collective there is no way I would touch this with a ten foot pole...","time":1244596453,"type":"comment"}
{"by":"mantas","descendants":10,"id":650761,"kids":[650787,650923],"score":18,"text":"","time":1244625931,"title":"Self-hosted vs outsourcing","type":"story","url":"http://blog.puncht.com/2009/06/10/self-vs-outsourcing/"}
{"by":"locopati","id":650787,"kids":[650794,650843],"parent":650761,"text":"It's a great theory as long as all those outsourced sites: stay in business, offer you a way to backup your information, don't act like jerks (ex: suddenly killing your account for unknown and unanswerable reasons), don't suddenly change business models and start charging you a lot for what was cheap or something for what was free.<p>Perhaps there's room in the market for all-in-one local solutions (even if it's the freely-produced-out-of-love market). I'm thinking of something like Wamp for Windows (a complete LAMP stack that you can install from one exe and gives you a simple control panel for the whole thing). Maybe a Linux distro that installs (or gives you options during install) all the packages you might want for a web business - source control, bug tracking, blog, wiki, web server, db, scripting languages, etc) plus configures firewall, backup systems, etc (or guides you through setting up something like that). Or maybe it's not a distro but a HOWTO.<p>Or maybe that sort of thing already exists and someone wants to link to it :)","time":1244629598,"type":"comment"}
{"by":"wooby","id":650794,"kids":[650913,650805,650803],"parent":650787,"text":"GitHub Firewall Install is a turnkey, local GitHub. I'm not into hosting commercial software in private repos on GitHub though. It's periodically down, and that stuff needs to work.  And GitHub FI looks pricey.<p>I think I'm better off with a VPS, gitosis, and local backups. It's cheap, it works, and it doesn't matter that I don't have all the cool social networking aspects of GitHub.","time":1244630509,"type":"comment"}
{"by":"mantas","id":650803,"kids":[650820],"parent":650794,"text":"VPS + off-VPS backups is more expensive than GitHub ;) Well, Except if you're going to host very large repos.<p>An VPSes (especially the very cheap ones) go down as well. So I think it's ~ the same.","time":1244631637,"type":"comment"}
{"by":"jcapote","descendants":85,"id":655711,"kids":[655975,655722,655768,655765,655753,655744,655737,655804,655865,655797,655818,655863,655867,655990,656150,656057,655805,655791,656079,657760,656349,655951,656101,655738,655730,655714,656021,655837,655725,655757,655885,656139,655772,656112],"score":84,"text":"A friend and I are sitting on tailrecursion.com wondering what to do with it. I suggested it would be a cool name for an HN-like site that catered specifically to those who spend 8 hours a day behind an emacs or vi session (and no less!), rather than the marketing/sales/non-hacker-founder types (which HN perfectly addresses). What do you guys think?","time":1244859289,"title":"Ask HN: Would you guys visit a purely hacker-oriented version of HN?","type":"story","url":""}
{"by":"pg","id":655765,"kids":[655774],"parent":655711,"text":"Which articles currently on the frontpage of HN would you not include?","time":1244863836,"type":"comment"}
{"by":"jcapote","id":655774,"kids":[655895,655780,655917,656255,655819,655878],"parent":655765,"text":"--I would exclude these:<p>Why Amazon Vine is a Threat Worth Talking About (jonbischke.com)<p>Facebook | Username (facebook.com)<p>MySpace Is In Far Worse Shape Than Its New Executives Thought<p>Does It Matter If The Future Isn't Available In Canada? (techvibes.com)<p>Authors, poets replace reporters at an Israeli newspaper for one day<p>All Hell May Break Loose On Twitter In 2 Hours (techcrunch.com)<p>Heyzap (YC09/USV) looking for a flash contractor.<p>Humans prefer cockiness to expertise (newscientist.com)<p>Should you move your startup to the Valley? (tonywright.com)<p>Atul Gawande: University of Chicago Medical School Commencement Address (newyorker.com)<p>All my games are now free (toucharcade.com)<p>How to find new startup ideas? The answer is in the question. (dashnine.org)<p>More Ways to Sell Out of Your Startup Stock (wsj.com)<p>A post college memorandum (alexjmann.com)<p>The TV industry is where the newspaper industry was five years ago: In denial. (businessinsider.com)<p>The Economics of the HDMI Cable Ripoff (marginalrevolution.com)<p>Use of LSD-25 for Computer Programming [scribd] (maps.org)<p>Tagged: The World's Most Annoying Website (time.com)<p>--I would include these:<p>Zombie Operating Systems and ASP.NET MVC<p>The hairy ball theorem<p>Celery: A Distributed Task Queue for Django<p>Linus Torvalds on some good git development practices<p>Offline Processing on Google App Engine [scribd]<p>Why \"next-gen games\" went gray, brown, and grey.<p>What is RubySpec?<p>Great talk on the Python GIL [video][slides in comments]","time":1244864571,"type":"comment"}
{"by":"quoderat","id":655895,"kids":[655927,656137],"parent":655774,"text":"If those stories were excluded, I'd be very uninterested in visiting here. This sort of tunnel-vision is why hackers and engineer types often seem completely out of touch with society -- and not in the good way. It's engineer-itis.","time":1244874155,"type":"comment"}
{"by":"stuntgoat","id":655975,"kids":[656146,656009,656002,656330],"parent":655711,"text":"If I could subscribe to other HN members' posts and upmodded links, I could, in theory be able to preemptively sort the posts that I liked in common with those users. All it would take is a new menu item at the top of the page- called 'peers'. When a HN user posts a link I find most appropriate to my lifestyle, I have the option to subscribe to future links posted by that HN user; all of the links ( or even comments ) of the peers I subscribe to would be listed in chronological order on the 'peers' page.<p>If a similar functionality was enabled and the link posting member was able to tag the submitted link, I think it would make it more efficient for the subscribing member to get the appropriate content listed first- that is, if the subscriber could choose to subscribe to the links that were relevantly tagged by each peer.<p>Simply put: if you ( yes you ) submitted a link that was tagged 'emacs', and I had subscribed to your links tagged as such, I would see it listed on my peers page ( likely near the top, even if I missed a few days ). If you submitted a link tagged 'founder inspiration' and I did not subscribe to that tag of yours, I would only see that link on the front page ( if it made it; and I saw it in time ).<p>Sorta like a collective intelligent RSS feed, hosted on HN!","time":1244882857,"type":"comment"}
{"by":"zck","descendants":12,"id":656641,"kids":[656730,656655,656676,657354],"score":23,"text":"","time":1244937641,"title":"Someone at Wired.com just found pg's \"The Hundred Year Language\".","type":"story","url":"http://www.wired.com/beyond_the_beyond/2009/06/dead-media-beat-evolution-of-computer-languages/"}
{"by":"known","descendants":25,"id":666123,"kids":[666171,666484,666144,666133,666143,666434,666192,666212,666139,666250,666178,666141,666519,666358,666163,666275,666149],"score":36,"text":"The other day I went to a jewelry shop and was very impressed by its salesman. Even though I pestered him with so many irrational questions on quality and price of a ornament, he never got frustrated. Is it his natural ability or was he trained to not get frustrated with customer under any circumstances?","time":1245471591,"title":"Ask HN; How to gain control over frustration? ","type":"story"}
{"by":"jackchristopher","descendants":9,"id":672481,"kids":[672727,672827,672837],"score":23,"time":1245866922,"title":"Doing the opposite of everyone is valuable","type":"story","url":"http://sivers.org/contrarian"}
{"by":"pie","id":672727,"kids":[672796,672764,672744,672749],"parent":672481,"text":"Perhaps \"finding opportunities to be unique\" would be a better way to describe this concept. Doing the opposite of everyone else sounds like a profoundly bad idea when applied to many, many things.<p>This stirs up some of the sense of irony found in business-friendly phrases like \"think outside the box.\"","time":1245877570,"type":"comment"}
{"by":"jamesbritt","id":672796,"kids":[673054],"parent":672727,"text":"Trying to figure out what \"opposite\" is can be a challenge.<p>Everyone is building Web apps; what's the opposite? Phone apps? Brick-and-mortar services?<p>Many things don't have a proper opposite.  Like when people say that \"pepper\" is the opposite of \"salt\".  You <i>know</i> that's not true, but the actual opposites is ... complicated.","time":1245880634,"type":"comment"}
{"by":"mbrubeck","descendants":6,"id":679300,"kids":[679625,679646],"score":35,"text":"","time":1246296794,"title":"Books About Parsing","type":"story","url":"http://blog.reverberate.org/2009/06/26/books-about-parsing/"}
{"by":"10ren","id":679625,"kids":[679808],"parent":679300,"text":"The \"A Regular Expression Matcher\" in <i>Beautiful Code</i> is a command-line wildcard matcher (from memory), and lacks parentheses and alternation. Useful, and probably an ideal example for the book, but much less powerful even than a mathematical regular expression.<p>See for yourself: <a href=\"http://books.google.com/books?id=gJrmszNHQV4C&#38;lpg=PA1&#38;ots=rKS-utWaqe&#38;dq=patent%20kernighan&#38;pg=PA1\" rel=\"nofollow\">http://books.google.com/books?id=gJrmszNHQV4C&#38;lpg=PA1&#3...</a>","time":1246307911,"type":"comment"}
{"by":"shabda","descendants":6,"id":686443,"kids":[686583,686563,686620,686451,686638],"score":3,"text":"Why is that OS continue to insist that I keep my files in folders and directories.<p>Instead wont it be more user friendly to have labels which you apply to files, instead of putting them in folders?<p>For example, I have a file which which I want to label as \"mindmap, django, project31\" so that one year later I can find them wheter I am looking for mindmaps, or django or project31 files. Instead if I am looking for a particular mindmap, I need to remember all details about it.<p>Essentially, labels are more user friendly(than folders). Why not use them on OS level?","time":1246646423,"title":"Idea: Labels in OS instead of folders","type":"story","url":""}
{"by":"fogus","descendants":38,"id":689496,"kids":[689881,689499,690033,689508,689805,690158],"score":62,"text":"","time":1246881539,"title":"Scala as long-term replacement for Java","type":"story","url":"http://macstrac.blogspot.com/2009/04/scala-as-long-term-replacement-for.html"}
{"by":"lallysingh","id":689508,"kids":[689513,689514],"parent":689496,"text":"Is it just me hoping against hope, or does it look like the world really could start shifting into a more functional paradigm?<p>Or at least the parts of the world that doesn't bill by the hour/LOC..","time":1246882596,"type":"comment"}
{"by":"axod","id":689513,"kids":[689846,689553,690491],"parent":689508,"text":"It's just the way cycles work. Few years of over exaggerated OOP hype, then few years of over exaggerated functional hype.<p>Some people just like taking things to extremes and seeing things in completely polarized viewpoints - good vs evil - rather than recognizing that both are great in different circumstances.<p>It's a lot less tiring (and more productive) to use whatever tool fits the job best, rather than whatever tool is currently in fashion IMHO.","time":1246882792,"type":"comment"}
{"by":"kolya3","descendants":35,"id":690227,"kids":[690347,690454,690368,690291,690337,690567,690346,690321,690312,691425,690494],"score":66,"text":"Deconstructing the \"I can do it in a weekend\" fallacy, feature by feature.","time":1246906728,"title":"The Mythical Man Weekend","type":"story","url":"http://blog.clickdeck360.com/the-mythical-man-weekend"}
{"by":"mixmax","id":690347,"kids":[690351,690377],"parent":690227,"text":"I actually built a HN clone in a weekend.<p>Of course it has a few bugs: It isn't really polished, is easy to game, vulnerable to attacks, a security hazard, doesn't work in IE6, isn't scalable, dosen't verify links properly, sometimes misses dupes, doesn't have a proper admin interface and needs some design love.<p>But except for that, and a few other things I can do in a weekend it's done.<p>:-)","time":1246910750,"type":"comment"}
{"by":"DanielBMarkham","id":690351,"kids":[690485,690364],"parent":690347,"text":"Heck, I could do it in a day -- as long as I get to define done!","time":1246910857,"type":"comment"}
{"by":"Ennis","descendants":23,"id":690943,"kids":[691089,691289,691480,691715,691279,691232],"score":79,"time":1246942125,"title":"BSD For Linux Users","type":"story","url":"http://www.over-yonder.net/~fullermd/rants/bsd4linux/bsd4linux1.php"}
{"by":"uggedal","id":691089,"kids":[691361,691308,691115,691113,692058,694081],"parent":690943,"text":"I've used both the BSDs and Linux for almost a decade. Both have their strong points, but I'm finding that I like the Linux distributions which take inspiration from *BSD.<p>Arch Linux is currently my favorite desktop OS: rolling release, bleeding edge, minimalist, customizable, binary packages and a ports like build tree (ABS). See \"The Arch Way\" for more: <a href=\"http://wiki.archlinux.org/index.php/The_Arch_Way\" rel=\"nofollow\">http://wiki.archlinux.org/index.php/The_Arch_Way</a><p>For a server you can't go wrong with Debian stable or FreeBSD (or OpenBSD if you can sacrifice some convenience and speed for increased security measures).","time":1246952081,"type":"comment"}
{"by":"ahoyhere","descendants":66,"id":695708,"kids":[695865,695796,695780,695979,695864,695835,695778,695912,696611,696929,697253,697054,696572,696318,696213,695873,695879,696395,695730,695925],"score":63,"text":"","time":1247143123,"title":"Why everyone should use Safari for rich web development","type":"story","url":"http://mir.aculo.us/2009/07/09/why-i-use-safari-for-development/"}
{"by":"ruddzw","id":695796,"kids":[696347,695821,695984,695963,695840],"parent":695708,"text":"\"Basically, if some HTML/CSS works on Safari, the chances are very high it will work on Firefox 2 and higher, and on IE 6 and higher (with minor tweaks).\"<p>I don't get it. A lot of the hardship that comes with web development is that stuff that works great in modern standards-based browsers like Safari doesn't work when you try to view it in IE. I can't count the number of times I've taken a webpage that I developed to work in Safari (or Firefox) and seen it break completely in IE. And it often takes more than \"minor tweaks\" to fix it.","time":1247145903,"type":"comment"}
{"by":"arohner","id":696347,"kids":[696630,696682,697083,696549,697061],"parent":695796,"text":"I'm new to web development, and I keep asking this question but I've never heard and answer to it:<p>What's stopping us from making a tool that parses HTML/CSS and points out constructs that are known to be bad in certain browsers? Sort of like lint: \"It looks like you're sending element foo inside element bar to IE6. This probably won't work right\"<p>I personally don't have a windows box to test IE, and I'm not looking forward to the day when I'll have to test on IE. Surely there is a better solution than manually testing browsers?","time":1247162085,"type":"comment"}
{"by":"noheartanthony","descendants":76,"id":702086,"kids":[702595,702243,702626,702138,702542,703471],"score":75,"time":1247505627,"title":"'This is what an IED looks like. I took this photo near Kandahar.'","type":"story","url":"http://trueslant.com/pjtobia/2009/07/13/this-is-what-an-ied-looks-like/"}
{"by":"vaksel","id":702243,"kids":[702360,702476,702252,702335,702276,702249,702624,703082,702418],"parent":702086,"text":"So why don't they get a few planes in the air, loaded up with cellular transmission equipment, and have them \"call\" every cell phone in the area?<p>Would blow up all the hidden IEDs and all the IEDs that are being worked on. Would clear out a lot of the area, and might blow up a number of terrorists in the process.","time":1247510547,"type":"comment"}
{"by":"physcab","id":702476,"kids":[702566],"parent":702243,"text":"I've never been to Iraq and I don't know very many veterans that can confirm this, but I do know from my PhD research that this problem is not an easy one to solve.<p>As was mentioned in another post, these explosive devices are improvised, so once our deployed forces come up with a solution to a problem, the terrorists are quick to try another method.  They have infra-red triggers, trip wires, pressure plates, RF triggers, and possibly using other forms of wavelengths.  Some wavelengths are particularly hard to jam because they interfere with our troops' own communication systems.  Plus these jamming systems are expensive and high powered which is not easily scalable.<p>The Washington Post ran an excellent series in which they talked about the difficulty of this problem [1].  As for me, I'm doing my PhD research on trying to stop these acts of violence prematurely.  So even though this technology isn't immediately deployable, we're looking at other types of sensing technologies that can \"see\" explosives devices from a stand-off distance, particularly &#62; 50meters.<p>[1] <a href=\"http://www.washingtonpost.com/wp-srv/world/specials/leftofboom/index.html\" rel=\"nofollow\">http://www.washingtonpost.com/wp-srv/world/specials/leftofbo...</a>","time":1247519175,"type":"comment"}
{"by":"pstinnett","descendants":41,"id":702914,"kids":[703033,703736,702958,703087,702935,702918,703322,702942,703069,703596,703378,703622,702990,703317,702981],"score":56,"time":1247535390,"title":"Pinboard - antisocial bookmarking","type":"story","url":"http://www.pinboard.in"}
{"by":"HoneyAndSilicon","id":702918,"kids":[702921,702973],"parent":702914,"text":"Who can resist rooting for software that declines to label itself in the old-fashioned \"alpha\" / \"beta\" way... and instead states clearly in the footer:<p>\"©2009 Nine Fives Software. Pinboard is full of bugs but daily trying...<p>Too bad it's not going to get much test-driving: \"Pinboard is free to use, but charges a small, one-time membership fee.\"","time":1247535792,"type":"comment"}
{"by":"pstinnett","id":702921,"kids":[702960,702926],"parent":702918,"text":"I was mostly intrigued by the payment model. As more users sign up, accounts cost more.","time":1247535916,"type":"comment"}
{"by":"HoneyAndSilicon","id":702926,"kids":[702952,702953],"parent":702921,"text":"Ah, I didn't get that far - and was editing my comment before you posted.<p>Yes, an interesting (first-of-a-kind?) incentive to \"sign up early.\"  Wonder if <i>any</i> will sign up with so many free options around?","time":1247536093,"type":"comment"}
{"by":"jsb","id":702952,"kids":[703134,703047,703148],"parent":702926,"text":"According to the website, the fee is (number of users * 0.001). Since the current fee is $2.91, the number of people who've signed up is around 2,910. Seems like at least a few people willing to throw in a few bucks to give it a shot. It'll be interesting to see what will happen to growth as the rate goes up and up.","time":1247536939,"type":"comment"}
{"by":"tdavis","descendants":71,"id":704738,"kids":[704751,704755,705381,704811,704930,705410,704841,704748,704793,705189,704919,704753,704888,705966,706525,705464,704757,705585,704941,705063,704797,704782,705061,705059,705528,704816],"score":263,"time":1247609981,"title":"You should follow me on Twitter","type":"story","url":"http://dustincurtis.com/you_should_follow_me_on_twitter.html"}
{"by":"wooby","descendants":10,"id":718147,"kids":[718283,718399,719365],"score":21,"text":"","time":1248281710,"title":"My Engineyard Contest Odyssey","type":"story","url":"http://alan.dipert.org/post/146555473/my-engineyard-contest-odyssey"}
{"by":"jcsalterego","id":718283,"kids":[718342],"parent":718147,"text":"Looking at the C code, here are a few suggestions:<p>- __builtin_popcount() and __builtin_popcountll() are great gcc builtins which perform bit population counts, useful for hamming distances (after the XOR operation, of course). [1]<p>- avoid scanf(), which is costly. My approach was to generate a header file with the char * words[] array, and also a int words_len[] with, you guessed it, the pre-computed lengths. Then go for the memcpy() route and you're in a much better position.<p>- speaking of memcpy, gcc provides one that should be optimal in most cases, but for really short words, it might be easiest to write your own. I came across a good article on it [2] but this is what I ended up using:<p><pre><code>  void\n  c_memcpy (char * dst, char * src, size_t len)\n  {\n    __builtin_prefetch(dst, 1, 3);\n    while (len--) {\n      *dst++ = *src++;\n    }  \n  }\n</code></pre>\n[1] <a href=\"http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Other-Builtins.html\" rel=\"nofollow\">http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Other-Builtins.h...</a><p>[2] <a href=\"http://www.embedded.com/columns/technicalinsights/19205567\" rel=\"nofollow\">http://www.embedded.com/columns/technicalinsights/19205567</a>","time":1248288116,"type":"comment"}
{"by":"wooby","id":718342,"kids":[718762],"parent":718283,"text":"Thanks for the tips.  gcc builtins are definitely the next level for me.<p>I'm curious about your scanf point though.  I'm using scanf/strdup before the check loop to load the words into memory.  Are subsequent memcpy calls on an implicitly loaded *char dict[] array faster on non-malloc'd memory for some reason?","time":1248290320,"type":"comment"}
{"by":"nkurz","id":718399,"kids":[718425],"parent":718147,"text":"Great writeup, thanks!  I'm confused by your conclusion, though: \"I wish I would have identified Rackspace initially as the platform of choice.\"<p>From the results of the contest, I would have concluded that the platform of choice was CUDA.  Do you think otherwise?  Is there a reason you'd choose to use a flotilla of Rackspace servers for a problem like this rather than a graphics card?  If you are going to be programming in C anyway, it seems like a much simpler approach.","time":1248291901,"type":"comment"}
{"by":"wooby","id":718425,"kids":[718941,718736],"parent":718399,"text":"If I was using just my own machine, or spent a few grand to put together my own CUDA farm, CUDA would have been great.<p>I think using cloud resources was the way to go though, because it's easy to search for keys concurrently, and you can summon an effectively unlimited amount of computing power pretty cheaply.  You can add as many cloud servers as you want to your cluster without worrying about locking or divvying up work, and the number of keys your cluster is able to check per second increases linearly with the number of machines.<p>The winning team, awesome guys with a cluster of 8 very powerful computers and a CUDA program, were able to check just over 400 million keys per second.  If I would have used 400 Rackspace cloud servers, it would have cost me about $100 to run them for the duration of the contest and I would have been achieving similar speeds.","time":1248292675,"type":"comment"}
{"by":"bwag","id":718736,"kids":[718794],"parent":718425,"text":"Looks like the winning team was able to generate more than 400 million keys per second.<p>\"With all the machines running we got up to a total of 3079431974 hashes/second\" (via <a href=\"http://www.win.tue.nl/cccc/sha-1-challenge.html\" rel=\"nofollow\">http://www.win.tue.nl/cccc/sha-1-challenge.html</a>)","time":1248303627,"type":"comment"}
{"by":"jcsalterego","id":718762,"kids":[719037],"parent":718342,"text":"Unfortunately, I have no empirical data or to support that hard-coding in a payload has an advantage over a dynamic allocation.  As an aside, the Python dictionary (hash table for you rubyists/perlfaces) works this way, as it over-resizes to allow growth, unless you specify its maximum size (__slots__ I think?)<p>My hope and understanding are that the compiler's static analysis skills will best align the given data, whereas something like malloc() would try to allocate on the heap <i>as best it can</i> with the open possibility of other data needing to be on the heap as well.<p>The point I was driving at, and what I tried to do, was to hard-code in as many known variables as possible such that the compiler could do its thing and try to be as efficient as it could with the given data.  This includes the word list, the list of lengths, the target hash -- none of which has to be done by hand, but rather a higher-level script called before compilation.<p>Good times.","time":1248305183,"type":"comment"}
{"by":"Autre","descendants":1,"id":718774,"kids":[719233,718805],"score":19,"text":"","time":1248305884,"title":"A Tiny Review of Scala","type":"story","url":"http://www.spinellis.gr/cgi-bin/comment.pl?date=20090722"}
{"by":"technologizer","descendants":6,"id":738812,"kids":[738839,738855,738943],"score":4,"text":"","time":1249286737,"title":"Nine reasons RadioShack shouldn't change its name.","type":"story","url":"http://technologizer.com/2009/08/03/nin-reasons-radioshack-shouldnt-change-its-name/"}
{"by":"SwellJoe","id":738839,"kids":[738856],"parent":738812,"text":"The reason I stopped going to Radio Shack was because they turned into a bigger version of the shopping mall cell phone kiosk.  High pressure sales people looking to sell me a phone, every time I walked in the door, and high ticket consumer items pushed the project kits and electronic components into the ghetto in the back corner of the store.  Radio Shack was no longer a fun place to browse, and rarely had the things I went looking for in stock.  In Houston I shopped at EPO and in Austin and here in Mountain View at Fry's.  I have to drive a little further, but they don't try to sell me a bunch of crap, and they have a wide variety of cool stuff to look at.<p>I simply never think, \"I know, I'll go to Radio Shack!\"  It's been at <i>least</i> ten years since that's been my first instinct when I needed something electronic.<p>I also hold a bit of a grudge against Radio Shack because when I was about 15, a sales guy talked down to me about some device or other (maybe an oscilloscope or a DMM or something; both of which I'd been using for several years at that point) as though I was too much of an idiot to even be looking at it, much less touching it.  My dad was browsing nearby, overheard, and laughed at him and explained that he'd be willing to wager that I knew more about the device than the sales guy did.  I got a lot of that kind of thing from grownups back then (I had hair down to my waist and wore metal T-shirts all the time), but rarely from fellow nerds, and so I was irritated when it happened at one of my favorite places to poke around, and where most of the people who worked their knew me and were always friendly.<p>Anyway, it's funny that this article brought back this flood of memories about a store I haven't visited in many years (but throughout my childhood visited every couple of weeks).","time":1249288371,"type":"comment"}
{"by":"jacquesm","id":738856,"kids":[738929,738914],"parent":738839,"text":"My story is just about the opposite of yours. I grew up in Amsterdam, there were only a few stores that sold electronic components and radio shack (tandy in europe) was one of those.<p>So, I went there quite frequently (age about 12) and became friends with the store manager. He would give me discounts on all kinds of stuff and allow me to scan his 'to be destroyed' batch for interesting bits &#38; pieces.<p>When computers arrived (the trs-80 series) he allowed me to play with them as much as I wanted as long as I would help to explain to customers what they could do. This probably played a large factor in getting me on the track to programming for a living, which in turn led to just about everything else in my life.<p>So, even though radio shack the company has done lots of bad stuff in their time (their pull-out from europe was one of the nastiest business maneuvers ever) some of the people there were absolutely great.","time":1249289171,"type":"comment"}
{"by":"edw519","descendants":56,"id":741257,"kids":[741393,741338,741462,741790,741375,741425,741324,741545,742785,742408,741325,742386,741407,741355,741318],"score":52,"text":"","time":1249396137,"title":"Python vs Ruby, slightly more in-depth","type":"story","url":"http://rapd.wordpress.com/2009/07/13/python-vs-ruby-slightly-more-in-depth/"}
{"by":"pchristensen","descendants":24,"id":741518,"kids":[742062,741681,741635,741818],"score":50,"time":1249403317,"title":"The Second Amendment in Iraq, Combat Robotics, and the Future of Human Liberty","type":"story","url":"http://vinay.howtolivewiki.com/blog/global/the-second-amendment-in-iraq-combat-robotics-and-the-future-of-human-liberty-820?"}
{"by":"caffeine","id":742062,"kids":[743105,742812,743253],"parent":741518,"text":"To sum up: \"If crushing resistance doesn't require blood, what's to stop an epidemic of resistance-crushing?\"<p>Nothing.<p>Already, there's nothing. Resistance <i>has</i> been crushed.  On some other thread, they're about to lock a guy in a cage for an eighth of his natural life span - for circumventing video game copy protection.  All we can do is fucking blog about it.  It's crushed, and there's nothing we can do about it, and robots will just make it a little more crushed.","time":1249417303,"type":"comment"}
{"by":"jacquesm","descendants":15,"id":743053,"kids":[743285,744365,743221,750745,743062,743174,745032,743088],"score":17,"text":"What were they like to work with ?<p>How much effort was it to program them ?<p>How did they compare to the other machines available at the time ?<p>How do they compare with the machines available today ?<p>Other 'special' computing architecture experiments from that period would be nice to hear about as well!","time":1249461311,"title":"Ask HN: Has anybody here worked with the Connection Machine or the Lisp Machine?","type":"story"}
{"by":"divia","descendants":58,"id":744040,"kids":[744089,744093,744249,744341,744098,744109,744203,745103,745889,744902,744115,744856,744493,745041,744266],"score":59,"text":"","time":1249499950,"title":"Massacre Gmail Ads with These Two Sentences (and Some Tragic Words)","type":"story","url":"http://lifehacker.com/5330642/massacre-gmail-ads-with-these-two-sentences-and-some-tragic-words"}
{"by":"sgoranson","id":744109,"kids":[744198,744383,744492,744195,744141,744366,744651,745023,744252,744692],"parent":744040,"text":"On a related topic: what do people think about ad blocking technology from an ethical viewpoint?<p>For me, I think I use the same screwy morality that I use when I'm downloading music...I don't mind stealing from wildly successful artists/businesses, but I'll gladly pay full price for a CD or click on an ad for someone who's just trying to pay the bills.","time":1249502197,"type":"comment"}
{"by":"DarkShikari","id":744195,"kids":[744948,744295,744491,744281,744211],"parent":744109,"text":"<i>On a related topic: what do people think about ad blocking technology from an ethical viewpoint?</i><p>I don't think I've clicked an ad since I was first introduced to the internet at around age ~5 (maybe with a few exceptions for accidental misclicks), and I don't intend to click on one in the future either.  As a result, I am saving them bandwidth by blocking their ads.<p>Activating an ad-blocking device is equivalent to stating \"I do not intend to click on your ads,\" and as a result it cannot possibly be losing the advertiser money.<p>(If the site charges per impression instead of per click, that's another thing, but those are rare these days.)","time":1249504393,"type":"comment"}
{"by":"mpk","descendants":20,"id":746708,"kids":[746841,748004,746748,746815,746744,746787,746731,746766,762923,747120,746822,746918,746939,746997,746861,749644,746895,746977],"score":9,"text":"Most of the coders I've met either play an instrument or wish they could play one.<p>I play the violin, but not at concert solo level. So I just play for my own enjoyment (digging into classical, modern and folk).<p>On the coder side I've run into people who do drums, piano, flute, etc over the last several years. Playing music or just wishing to play music is a consistent thread here.<p>I'm just wondering - what are you guys/girls playing?","time":1249602511,"title":"Ask HN: If you play an instrument, which is it?","type":"story","url":""}
{"by":"bdmac97","id":746939,"kids":[747243],"parent":746708,"text":"Expert Rockband drums... that counts right?","time":1249615618,"type":"comment"}
{"by":"s3graham","descendants":41,"id":747086,"kids":[747094,747429,747315,747207,747979,747339,747374,747251,747262,747242,747658,747239,747551,747375,747314,748103],"score":98,"time":1249623838,"title":"Python, client side: Skulpt","type":"story","url":"http://www.skulpt.org/"}
{"by":"vaksel","descendants":1,"id":750854,"kids":[751802],"score":4,"time":1249830581,"title":"Let me put that in one page for you - makes multipage articles one page","type":"story","url":"http://lmpiopfy.appspot.com/"}
{"by":"Everest","descendants":39,"id":751307,"kids":[751350,751438,751341,751382,751385,751367,751508,751393,751315,751519,751353,751457,751544,751527,751563,753943,751746,751347,752198,751368,751717,751312,751560,751750,751339,751642,751558,751344],"score":28,"text":"Hi,<p>I make a ton of sloppy mistakes when I code.  Stuff that leaves me kicking myself when I spend 20 minutes trying to debug it.  Even though I've gotten better at programming, the number of sloppy mistakes I make is still way too high and its my biggest time drain.<p>I think part of the problem comes from writing code, glancing through it quickly, and then testing it with a large number of \"F5s\".  I'm trying to get away from this and am reading my code more thoroughly before testing to see if it works. Anyone struggle with the same issues?  HOw did you improve?<p>Thanks!","time":1249852668,"title":"Ask HN:  How to reduce sloppy mistakes?","type":"story"}
{"by":"bdfh42","descendants":25,"id":752398,"kids":[752706,752472,752618,752992,752772,752410,752838,752763,752909,752853,752678],"score":20,"text":"","time":1249899168,"title":"COBOL: Everywhere and Nowhere","type":"story","url":"http://www.codinghorror.com/blog/archives/001294.html"}
{"by":"AndrewO","id":752706,"kids":[752823,752814,752819],"parent":752398,"text":"I've never met a COBOL programmer.  The only times I've seen actual COBOL code have been examples to show how inscrutable it can be (like the example in the article).  I haven't seen any open source software written in COBOL, although I'm sure there has to be something.  Yet, I know COBOLers are out there.<p>Given the fact that COBOL refuses to die and not for lack of other options, I've always assumed there's something that kept these guys going.  I used to think it was just hard-headedness (\"Haven't these guys heard of Python or Ruby or even like Java or .Net or something?!?!\"), but age and experience have lead me to believe that it probably has something to do with the size of the paycheck.<p>So I'd really like to know:<p>Do COBOLers have a community of any sort?<p>Where do they go for help?<p>Do they read HN or proggit (or do they have their own portals that only run on green screens)?<p>What keeps them going (and do they actually despise their language but just suck it up)?<p>Are they locked away in the dungeons of enterprise IT departments (or are they more like the wizards in a tower)?<p>Is there some sort of annual conference where they all meet and dance in front of a bonfire (lit from the heat of their mainframes) and sacrifice young virginal (pure? dynamic?) OO or functional languages to keep their own alive?","time":1249908250,"type":"comment"}
{"by":"ryansloan","id":752823,"kids":[752843],"parent":752706,"text":"I worked as a COBOL programmer for two years (well, technically I did 2 summer internships and two short winter stints) so I have a little insight into the \"community.\"<p>I worked at a (successful) company that develops banking software and processes bank data. The majority of our data processing and operations codebase was written in COBOL, running on some Unisys mainframes. There is a growing population of .NET developers on the team, but for the most part the cube farm is full of COBOL programmers. In general they don't read HN, use StackOverflow, or any other online community that I'm aware of. For the most part, when they need support they ask one of the local dinosaurs. I have noticed that most of them don't use their career to define themselves like a lot of \"modern\" programmers (myself included) do. I think it's more of a 9-5 for them.<p>And they don't seem to hate COBOL, either. In fact, a lot of them like it. I think part of the reason is that it's one of the first languages they were exposed to, and one of the first mainframe-based languages that \"made sense.\"<p>It really is everywhere (although 80% seems high), but you don't usually find it in any of the glamorized jobs. It's heavily used in the banking, healthcare, insurance, and payroll industries.<p>I'm still working for the same company, but I'm doing .NET stuff now.","time":1249911067,"type":"comment"}
{"by":"AndrewO","id":752843,"kids":[752866,752919],"parent":752823,"text":"In your opinion, why do you think they stay away from HN or Stack Overflow?  Is it just that there's nothing there for them specifically or would you say that they're (on average) less interested in the wider programming ecosystem?","time":1249911613,"type":"comment"}
{"by":"dawie","descendants":69,"id":756653,"kids":[756660,756686,756793,756768,756772,756933,756720,756858,756980,757071,756899,756817,756756,756872,756737,756757,756916,756947,757578,757139,757109,757547,756843,757730,756825,756822,757216,757041,756834,756805,756855,757589,756754,756827,756786,756807,757049,757591,759685,756701,757140,756728,756934,756819],"score":21,"text":"Wondering what email client people use?<p>I have 3 or 4 different gmail accounts and it's a pain keeping up with all of them. I have an email address for support, one for feedback and a personal one.","time":1250030923,"title":"Ask HN: What email client do you use?","type":"story","url":""}
{"by":"jasonlbaptiste","id":756686,"kids":[756732,756692,758280,757108,757073],"parent":756653,"text":"straight up google apps gmail with gmail notifier.  As far as multiple accounts:<p>1) set other accounts up to forward to your gmail/gapps email\n2) setup a filter + auto label system for those emails\n3) add it as an outgoing email that you can reply from (limited to 7 i THINK)","time":1250031578,"type":"comment"}
{"by":"tdm911","id":756732,"kids":[756828],"parent":756686,"text":"I use the Google Apps/Gmail interface also. I've found that as it has matured over time there are less reasons I would want a desktop client and more reasons for having the portability of a cross platform, location independent web interface.<p>Gmail is a class act when it comes to web apps.","time":1250032744,"type":"comment"}
{"by":"sidmitra","id":756828,"kids":[756869],"parent":756732,"text":"I use IMAP on gmail with opera. I need a desktop client, for times when i'm not connected and quickly need to search an old email for some small little detail.<p>I just use it as an offline backup, and keep it synced.","time":1250034853,"type":"comment"}
{"by":"trefn","id":756869,"kids":[757362,756942],"parent":756828,"text":"Google has an offline gmail version in beta.  Requires Google Gears (not available for FF3.5, last I checked) but works for Safari.<p>All my mail is synced locally but I can still use the Gmail interface.","time":1250035710,"type":"comment"}
{"by":"wooby","descendants":10,"id":762266,"kids":[762271,762477,762369,762795],"score":26,"text":"","time":1250219317,"title":"Tell HN: Rochester, NY Hackers - Unite!","type":"story","url":"http://www.meetup.com/Rochester-Hackers/"}
{"by":"wooby","id":762271,"kids":[762351,762400],"parent":762266,"text":"Hi everyone, I was cruising around looking for a hacker oriented club or group in Rochester, NY or Western NY and didn't find anything... so I made a meetup group.  We'll be tentatively meeting on either the RIT campus (if I can swing it) or the Penfield Panera (Panorama Plaza).  I've got a Scala presentation/workshop planned, but I'm more than open to anything else anyone would want to share.  Thanks for getting the word out.","time":1250219469,"type":"comment"}
{"by":"agnokapathetic","id":762351,"kids":[762355],"parent":762271,"text":"Im a student at the UofR and would love to attend, unfortunately I fly back the 28th! If you guys host a meetup next month, I'll definitely try to make it.","time":1250223660,"type":"comment"}
{"by":"wooby","id":762355,"kids":[762376],"parent":762351,"text":"Cool, you should join the group anyways and then you'll get notified when the next meetup goes down.  Thanks for checking it out!","time":1250223943,"type":"comment"}
{"by":"bdmac97","id":762369,"kids":[762410],"parent":762266,"text":"What about Rochester, MN hackers?!?! :-)","time":1250224553,"type":"comment"}
{"by":"agnokapathetic","id":762376,"kids":[762385],"parent":762355,"text":"Way ahead of you. Have you seen the Rochester Python meetup? <a href=\"http://www.meetup.com/pythonistas/\" rel=\"nofollow\">http://www.meetup.com/pythonistas/</a>","time":1250224695,"type":"comment"}
{"by":"Anon84","descendants":98,"id":762858,"kids":[762922,762906,762895,762932,763137,763567,762997,762898,762987,762934,762953,762993,762914,762915,762946,763485,763492,762955,763283,763915,762986,762995,762907,762962,762938,763107,763043,763811,762925,763390,764372,763782,763502,763446,762883,763144,764083,764257],"score":85,"time":1250253062,"title":"Coding Horror: All Programming is Web Programming","type":"story","url":"http://www.codinghorror.com/blog/archives/001296.html"}
{"by":"jacquesm","descendants":4,"id":762859,"kids":[762996,763119,764016,762864],"score":4,"time":1250253163,"title":"Python vs. Lisp","type":"story","url":"http://www.strout.net/python/pythonvslisp.html"}
{"by":"habitue","id":762895,"kids":[763074,762939,763041],"parent":762858,"text":"I think I subconsciously had the same opinion as Michael, but reading it out loud makes you consider how dumb the idea really is.  Do I think python developers are stupid just because it's easier to program in than C? No of course not. Elitism is rarely justified based on the tools or platforms people use.","time":1250254910,"type":"comment"}
{"by":"wreel","id":762939,"kids":[763079,763004,763065,763851,762968,763055],"parent":762895,"text":"I think that both remarkably miss the point that the true measure of software is actualized value to the end user.<p>Who cares about platform or depth of technical knowledge?  If some PHP hobbyist who knows nothing about mmap(3) delivers a site that works for people then he is a successful programmer.<p>But assertions like \"You hope everything doesn't \"move to the web\"? Wake the hell up! It's already happened!\" irk me.<p>That is disingenuous at best.  Even the most ardent believer of \"everything on the web\" will fire up Photoshop for even the simplest of graphic requirements.  There will always be a requirement for people to know the ins and outs of desktop programming.","time":1250256357,"type":"comment"}
{"by":"s2r2","descendants":1,"id":775257,"kids":[775305],"score":3,"text":"","time":1250782414,"title":"Mythryl: second public release featuring \"first-cut OOP support\"","type":"story","url":"http://mythryl.org/my-2009-08-19-14_01_49.html"}
{"by":"anibal","descendants":6,"id":780568,"kids":[780612,780602,781637,780594],"score":10,"text":"Best plugin for Jquery edit-in-place?","time":1251041483,"title":"Ask HN: Best plugin for Jquery edit-in-place","type":"story","url":""}
{"by":"wooby","descendants":2,"id":782997,"kids":[783297],"score":2,"text":"","time":1251141334,"title":"Tiny Scala Primer","type":"story","url":"http://people.rit.edu/~awd4182/scala_handout.pdf"}
{"by":"DanielStraight","id":783297,"kids":[783302],"parent":782997,"text":"Also note, Scala makes tutorial-breaking changes to the language approximately every day. I've never found a Scala tutorial in which all the code works. Ever. I'll give this one a try, but... not hopeful.","time":1251146504,"type":"comment"}
{"by":"lucasoman","descendants":44,"id":787334,"kids":[787404,787358,787392,787464,793576,788605,793582,793583,793584,787519,787396,787350,787341],"score":13,"text":"","time":1251300502,"title":"PHP Is A Husk","type":"story","url":"http://lucasoman.blogspot.com/2009/08/php-is-dead.html"}
{"by":"thaumaturgy","id":787404,"kids":[787420,787421,787454,787429,787469],"parent":787334,"text":"I usually don't jump into these kinds of threads. You get an awful lot of programmers -- some hobbyist, some professional, some experienced, and most of them self-taught -- all with their own prejudices and methodologies, all arguing over what the \"right\" way is. They go absolutely nowhere, do nothing productive, and turn into a huge time sink for everyone involved.<p>That said, this article, and every other one like it, reeks of some strange belief that every single language is supposed to have all of the features of some programmer's favorite language, as well as all of the neat new trendy stuff, and if the language doesn't support all of that -- well then it's dead! Or dying. Or \"a husk\".<p>There doesn't seem to be any realization on the part of the programmer that a particular language is just a tool, usually designed for a specific application. The programmer is attempting to fit a square peg into a round hole, and they're cursing at the square peg because it doesn't fit.<p>Let's take one example: closures. They sounded interesting, and potentially could solve a problem in a large JavaScript library I was working on. So I got to know them, I practiced with them, I made sure I grokked them before trying to apply them. Then I put them to work, and found that they ended up making my library unnecessarily complex, that they caused some odd behaviors occasionally, and that they didn't solve any problem that I couldn't more easily solve using simpler methods.<p>So, does PHP's lack of this author's favorite features really make it a \"husk\"? No, not at all. Applications as large and complex as osCommerce don't rely on those language features; they rely on the features that the language does have, and they work just fine.<p>One of the most basic skills programmers need to have in their toolbox is the ability to adapt their habits according to the tools they're using. The programmers that spend their time writing blog posts like this one don't seem to have picked that up.<p>...Ugh, this just cost me 10 minutes that I could've spent actually working on one of my projects. :-(","time":1251302562,"type":"comment"}
{"by":"lucasoman","id":787420,"kids":[787487,787559,787467,787479],"parent":787404,"text":"I'm not complaining about what features PHP has. In fact, I was never that annoyed that PHP didn't have lamdas or closures until now.<p>My problem is that it wasn't implemented _correctly_. If you're going to implement a feature, do it right or don't do it at all. Their lack of concern or pride in their project does not bode well for the community.","time":1251302774,"type":"comment"}
{"by":"briancray","descendants":3,"id":788413,"kids":[788884,788908],"score":2,"text":"","time":1251334942,"title":"Free PHP URL shortener script that can shorten over 4 billion URLs","type":"story","url":"http://briancray.com/2009/08/26/free-php-url-shortener-script/"}
{"by":"wooby","descendants":2,"id":788899,"kids":[788922],"score":1,"text":"","time":1251363336,"title":"Deviancy amplification spiral","type":"story","url":"http://en.wikipedia.org/wiki/Deviancy_amplification_spiral"}
{"by":"lupin_sansei","id":788922,"kids":[788964],"parent":788899,"text":"How come they don't give a real world example of a \"Deviancy amplification spiral\"?","time":1251365151,"type":"comment"}
{"by":"ssn","descendants":35,"id":789120,"kids":[789310,789954,789184,789142,789453,789909,789457,789375,789235,790705,790312,789378,789338,789403,789626,789377,789194],"score":79,"text":"","time":1251378426,"title":"Create and share diagrams by writing sentences","type":"story","url":"http://diagrammr.com/"}
{"by":"fnid","id":789378,"kids":[789552,789396,789823],"parent":789120,"text":"Anyone know of anything like this for data models?  I'd love to build something like:<p><pre><code>  Customers have a name, address, and phone\n  customers have many orders\n  orders have many items\n  items have a name, description and price\n</code></pre>\nSomething like that.","time":1251387372,"type":"comment"}
{"by":"bockris","id":789396,"kids":[789642],"parent":789378,"text":"If you lock your vocabulary down e.g.<p><pre><code>  entity 'have a' comma-sep-attr-list\n  entity 'have many' referenced-entity\n</code></pre>\netc and create dot files for Graphviz this would be very easy.","time":1251388060,"type":"comment"}
{"by":"fnid","id":789642,"kids":[789931],"parent":789396,"text":"That's an excellent program. I downloaded it per your suggestion, but I really wanted a web based version. Thank you though, I will find many uses for this program as well.","time":1251395393,"type":"comment"}
{"by":"baha_man","descendants":45,"id":794592,"kids":[794742,794707,795025,794929,794827,795445,795238,794796,794787,794861],"score":61,"text":"","time":1251647126,"title":"Some “Developers” Just Can’t Develop","type":"story","url":"http://richardsbraindump.blogspot.com/2009/08/some-developers-just-cant-develop.html"}
{"by":"inaka","id":795025,"kids":[795291],"parent":794592,"text":"part of me can't believe this was such an epiphany for this guy.<p>i've found the best way to screen candidates is to just ask them to sign up on project euler and work through at least three problems, in any language, and mail me the results. the quality of code i get so far is quite representative of the quality of the employee on the job.<p>yes, they could google the answers, but i disqualify the easiest-to-google questions (sum of multiples of 3 and 5 up to 1000, i'm lookin' at you). but honestly it doesn't matter - you can tell if they do because they can't explain it. and i can generally weed out anyone in the first place who would try to google the answer just from a skype conversation...<p>project euler hasn't failed me yet.","time":1251668066,"type":"comment"}
{"by":"rw","id":795291,"kids":[797768,795310,796048],"parent":795025,"text":"I put Project Euler on my resume (I've completed 30% of the problems), do you consider that wise?","time":1251685701,"type":"comment"}
{"by":"ShabbyDoo","id":795310,"kids":[795606],"parent":795291,"text":"That's really impressive.  I'd interview anyone who showed such initiative.  It's so common to interview \"developers\" who don't seem like they have any interest or passion about their work.","time":1251686724,"type":"comment"}
{"by":"scottjackson","descendants":103,"id":810518,"kids":[810548,810723,810775,810642,810550,810641,810926,811257,811161,810825,811489,811162,811127,811356,810601,811025,810624,810815,810703,810850,810631,810776,811164,811504,810869,810593,810786,812231,810974,811053,816489,810652,812253,810618,810741,811207,874796,810778,810849,810665],"score":83,"text":"HN, what are your killer Unix tips? I've been using and learning about Unix both at university and at home for almost a year, and I was wondering -- what are the things that, when some wizard showed them to you, you wrote down as soon as you could so you wouldn't forget them? Is there some trick that saves you a buttload of time? Some script that makes your job way easier? Some command that made you smack your forehead in frustration when you found out it could <i>be</i> that simple?<p>Note: I'm personally looking for tips for working in bash (specifically OS X stuff if that makes any difference), but if there's some amazing thing that only works in zsh under Debian or something, feel free to suggest those too -- it's sure to be useful for someone.<p>I had a quick search for previous topics on this, but all I found was http://news.ycombinator.com/item?id=103725 which had a couple of badass things in the discussion.","time":1252398600,"title":"Ask HN: Best Unix Tricks?","type":"story"}
{"by":"spahl","id":810652,"kids":[810851,810768],"parent":810518,"text":"I love the '-exec' flag for find","time":1252406649,"type":"comment"}
{"by":"wensing","descendants":24,"id":814685,"kids":[814749,814827,814783,815072,814768,814892,814737,814700,815362],"score":33,"text":"This is based on the Marc Andreessen pitch dissected here: http://venturehacks.com/articles/elevator-pitch<p>----<p>Briefly, Stormpulse is intuitive weather display.  We tame complex weather data and visualize it in context.  Other weather sites begin with maps and add weather data.  We craft weather-centered presentations that foster understanding.  And we're piloting the world's first human-consensus forecasting system.  Check us out at: http://stormpulse.com.<p>We're building Stormpulse to reduce the costs of severe weather, which effects millions worldwide.<p>Our weather maps have regularly appeared on CNN and are displayed on 750+ websites, from media sites such as USA Today and ThomsonReuters to intranets at places like Boeing and the Mayo Clinic.  Since August 2008, our site has been visited over 18 million times, with over 60% of those visits coming direct.  Hundreds of thousands of those visits are from decision-makers at Fortune 100 companies in the energy, defense, and transportation industries.<p>Before Stormpulse, Brad and I wrote software that automated the presentation of rich catalog content for a distributor of over 400,000 products.<p>We're making money and are ready to fuel the growth of Stormpulse with funding from smart, qualified, passionate investors.  We're starting to contact interested parties, and would love to show your group what we're building.","time":1252559140,"title":"Ask HN: Review our elevator pitch (Stormpulse)","type":"story"}
{"by":"Afton","descendants":44,"id":823347,"kids":[823777,823531,823375,823495,823448,823416,823436,825796,824282,825893,823399,823934,823407,823620,823536],"score":257,"time":1252993190,"title":"Learning Advanced JavaScript","type":"story","url":"http://ejohn.org/apps/learn"}
{"by":"_ck_","id":823399,"kids":[823614],"parent":823347,"text":"Not only is this a great read, it's easy on the eyes, excellent contrast and font size.","time":1252996402,"type":"comment"}
{"by":"FreeRadical","id":823614,"kids":[823664,824105,823805,823783],"parent":823399,"text":"white or coloured font on a black background is never easy on the eyes","time":1253012644,"type":"comment"}
{"by":"mcxx","id":823805,"kids":[825425],"parent":823614,"text":"Yellow on black is the most visible combination of colors.","time":1253022543,"type":"comment"}
{"by":"fogus","descendants":103,"id":836722,"kids":[836844,836852,836862,836887,836966,836873,837470,837282,837220,836849,836961,836999,836911,837057,837023,836959,837377,836771,836973,838684,837213,837608,837494,836949,836841,837837,836955,837437,837204,837346,837645,838057,838780,837375,836875,837532],"score":93,"time":1253619551,"title":"Why Pair Programming Is Not For the Masses","type":"story","url":"http://blog.obiefernandez.com/content/2009/09/10-reasons-pair-programming-is-not-for-the-masses.html"}
{"by":"mhd","id":836852,"kids":[836951,836962,837486,837089,837393,837110],"parent":836722,"text":"Wow, that's one arrogant piece of writing. That still doesn't provide any good, scientific reason why pair programming is that much better -- yay for anecdotes.<p>But I guess I'm just one of those anti-social programmers. Excuse me while I try to see which of my unwashed heavy metal shirts to wear today.","time":1253625483,"type":"comment"}
{"by":"roc","id":836951,"kids":[837013,837861],"parent":836852,"text":"It sounds like you just didn't understand what he was trying to say.<p>Maybe you failed to invest the proper amount of time in the article? Perhaps you didn't pay enough attention, because you're lazy? I suppose you might be too overworked and stressed out to get it? Could it be that you used traditional reading practices? Is your work environment not conducive to reading a top N list?  It could be that your boss doesn't care about excellence, which is why he hired a twit...<p>By chance, do you have halitosis?","time":1253628417,"type":"comment"}
{"by":"pragmatic","descendants":55,"id":837124,"kids":[837430,837301,837572,837679,837503],"score":101,"time":1253632332,"title":"30 years of C","type":"story","url":"http://www.dadhacker.com/blog/?p=1132"}
{"by":"ivankirigin","id":837503,"kids":[837531,837574,838366,837740,837535],"parent":837124,"text":"I \"know\" C. But are there any good resources on learning to build real systems in C? I don't like C++.","time":1253641244,"type":"comment"}
{"by":"ninjac0der","descendants":121,"id":843732,"kids":[844050,843971,843951,844903,844686,843781,843910,843944,844097,844016,845220,845688,845642,843959,845180,844890,845943,845282,844885],"score":218,"time":1253895251,"title":"Efficient Editing With vim","type":"story","url":"http://jmcpherson.org/editing.html"}
{"by":"scott_s","id":843951,"kids":[844061,844742,843988,844754],"parent":843732,"text":"I feel silly for only recently discovering tabs in vim.<p><pre><code>  :tabnew file\n</code></pre>\nOpens up a new tab,<p><pre><code>  :tabn\n</code></pre>\nGoes to the next tab, and<p><pre><code>  :tabp\n</code></pre>\nGoes to the previous tab. Works great in both gui and non-gui mode.","time":1253901437,"type":"comment"}
{"by":"Tihy","id":844050,"kids":[844185,844197,844073,844355,844093,844751,845538,844085],"parent":843732,"text":"Warning: learning Vim makes you look for Vim like commands in any program you interact with using the keyboard. Everything else will be frustrating.","time":1253904432,"type":"comment"}
{"by":"alexandros","descendants":4,"id":847953,"kids":[848109,847980,847979],"score":18,"time":1254120024,"title":"Liquid breathing","type":"story","url":"http://en.wikipedia.org/wiki/Liquid_breathing"}
{"by":"modelic3","id":847979,"kids":[847986,848591],"parent":847953,"text":"This is pretty cool. It's like in that movie, I forget the title, with the liquid sentient creatures that decide to kill everyone with a massive tidal wave but then change their minds.","time":1254121909,"type":"comment"}
{"by":"swombat","descendants":5,"id":850251,"kids":[850375,850303],"score":7,"text":"","time":1254228591,"title":"How to Get Speaking Gigs","type":"story","url":"http://webwallflower.wordpress.com/2009/09/28/5-gig-tips/"}
{"by":"ilyak","id":850303,"kids":[850334,850533],"parent":850251,"text":"\"Start a Vlog\" are there a real number of people watching these?<p>For me, if it's not in text, it's out: whether in video or podcast.","time":1254230511,"type":"comment"}
{"by":"abalashov","descendants":20,"id":859755,"kids":[859833,860526,859806,861174,859811,859896,859762,860285],"score":4,"text":"Hi everyone,<p>I'm the n00b that posted this question a while back (\"Reasonable Java editor for heavily CLI-oriented UNIX types who hate bloat?\"): http://news.ycombinator.com/item?id=597213<p>Well, your responses - especially the ones that were most convicted about how futile it is to write Java without Eclipse (or at least, one of the big three IDEs) - convinced me to give it another go.<p>Sure enough, I upgraded all my hardware to relatively contemporary 64-bit gear, stocked up on some additional gigabytes of RAM, and now I'm happily writing all my Java in Eclipse.  You were right.<p>I'm getting the sense, however, that despite my curiosity and occasional perusal of the documentation, I'm probably not taking advantage of some of the neatest things you can do with it.<p>About 90% of the time, I'm using it the same way I used to edit Java in a text editor.  Oh, sure, the highlighting is nice, and I often use the package hierarchical view to navigate to classes or methods -- handy.  The auto-indentation, cleanup, templates for common phenomena (try/catch, etc.), assistance in adding imports for unresolved class names, and other little things are all helpful.  As some of you pointed out, the refactoring stuff can be pretty good;  doing a mass-rename of a method with one click sure beats doing it by hand, or with a one-liner in the shell.<p>Still, I don't feel like I'm getting that much use out of it compared to just writing the code in a shell.  My intuition tells me I should be doing more.  If you have any tricks you find exceptionally useful or other productivity hacks that are less than entirely obvious, I'd love to know about them.<p>Thanks in advance!","time":1254638281,"title":"Ask HN: Awesome/neat/favourite Eclipse techniques?","type":"story","url":""}
{"by":"abalashov","id":859762,"kids":[860277,859799,859844],"parent":859755,"text":"I've got a question:  Is it possible to make Eclipse SVN-aware even when SVN-over-SSH (SVN over SSH remote command transport, aka svn+svn://user@host/path/to/repository URI scheme) is being used?","time":1254638645,"type":"comment"}
{"by":"jacobian","descendants":48,"id":867452,"kids":[867548,868567,867519,868537,867495],"score":62,"time":1254943735,"title":"* is Unix","type":"story","url":"http://jacobian.org/writing/star-is-unix/"}
{"by":"jgrahamc","descendants":19,"id":871348,"kids":[871408,871498,871606,871747,872251,871634,871429],"score":19,"text":"","time":1255096360,"title":"Follow-up to my \"Hell of Apple Video Adapters\" blog post","type":"story","url":"http://www.jgc.org/blog/2009/10/displaylink-usb-video-adapter-just.html"}
{"by":"jacquesm","id":871606,"kids":[872043],"parent":871348,"text":"I seems to have linux drivers too:<p><a href=\"http://libdlo.freedesktop.org/wiki/\" rel=\"nofollow\">http://libdlo.freedesktop.org/wiki/</a><p>Very clever of them to mail you a sample, they'll probably make a bundle on orders from HNers ;)","time":1255102466,"type":"comment"}
{"by":"siculars","descendants":32,"id":874030,"kids":[874433,874223,874243,874221,874760,874750],"score":73,"text":"","time":1255217729,"title":"The real Ajay Bhatt, co-inventor of the USB port","type":"story","url":"http://www.engadget.com/2009/10/10/conan-obrien-talks-to-the-co-creator-of-usb-on-the-tonight-show/"}
{"by":"zhyder","id":874243,"kids":[874342],"parent":874030,"text":"I found it odd that he didn't share the credit with more people at Intel and its partners, and spoke negatively about Firewire[1].<p>[1]- Firewire lost mainly because the cheaper+slower USB1.1 became ubiquitous first, and then came the backward-compatible (in connectors/cables) and comparably-fast USB2.0.","time":1255229684,"type":"comment"}
{"by":"codexon","id":874342,"kids":[874383,874799],"parent":874243,"text":"I'm surprised someone voted you down and that you are still at 1 point.<p>USB 1.0 seems like one of the many interfaces that will eventually end up obsolete just like ISA PCI AGP PCMIA etc...<p>I really don't see anything technically superior about USB (feel free to correct me). The main reason it won out over Firewire was of course Intel and Microsoft backing, and that it was in the sweet spot for the price/feature trade off.","time":1255237759,"type":"comment"}
{"by":"gus_massa","descendants":19,"id":876436,"kids":[876808,876880,877277,876573,876723,876559,877291,876489,876568],"score":69,"text":"","time":1255343622,"title":"The Complete History of Lemmings","type":"story","url":"http://www.dmadesign.org/Lem_1.htm"}
{"by":"edw519","descendants":29,"id":880140,"kids":[880219,880265,880195,880502,880172,880700,880519,880270,880251,881471,880171,880275,880169,880154,880191,880197],"score":29,"time":1255469703,"title":"Wikipedia In Your Pocket for $99","type":"story","url":"http://www.thewikireader.com/index.html"}
{"by":"wooby","id":880251,"kids":[880474],"parent":880140,"text":"Anyone have an idea as to how hackable this thing is?  A friend of mine and I are looking for a good platform upon which to build a programmable and pocket-sized RPN calculator.","time":1255473217,"type":"comment"}
{"by":"joe_bleau","id":880474,"kids":[881414],"parent":880251,"text":"The ARM based HP-20B calculator is fully hackable, and HP has even released schematics and an SDK.  Not a lot of non-volatile RAM, though.<p><a href=\"http://www.wiki4hp.com/\" rel=\"nofollow\">http://www.wiki4hp.com/</a>","time":1255483783,"type":"comment"}
{"by":"sant0sk1","descendants":43,"id":895535,"kids":[895688,895841,895647,895625,895667,895640,895921,895632,895637],"score":24,"time":1256156613,"title":"Daring Fireball: Apple Netbook Claim Chowder","type":"story","url":"http://daringfireball.net/2009/10/apple_netbook_claim_chowder"}
{"by":"edw519","descendants":1,"id":896077,"kids":[896183],"score":7,"text":"","time":1256177100,"title":"Parsing Text with Scala","type":"story","url":"http://blog.xebia.com/2009/10/21/parsing-text-with-scala/"}
{"by":"nreece","descendants":2,"id":911445,"kids":[911560],"score":9,"time":1256871077,"title":"Big Ball of Mud","type":"story","url":"http://www.laputan.org/mud"}
{"by":"wooby","descendants":1,"id":911470,"kids":[911473],"score":2,"text":"","time":1256872993,"title":"Tell HN: Rochester, NY Meetup","type":"story","url":"http://www.meetup.com/Rochester-Hackers/calendar/11365915/"}
{"by":"r11t","descendants":7,"id":933290,"kids":[933757,933673],"score":8,"time":1257869579,"title":"How I Started TDD","type":"story","url":"http://blog.extracheese.org/2009/11/how_i_started_tdd.html"}
{"by":"sync","id":933673,"kids":[933711],"parent":933290,"text":"That last step is quite a leap from the previous 6.","time":1257879694,"type":"comment"}
{"by":"wooby","descendants":38,"id":943616,"kids":[943805,943747,944054,943654,943643,943872],"score":46,"time":1258331098,"title":"Atlas Beta Program Launched","type":"story","url":"https://atlas-beta.heroku.com/users/new"}
{"by":"barrkel","id":943747,"kids":[943783,943773,943772,944422],"parent":943616,"text":"Forgive my complete cluelessness, but what is \"Atlas Beta\"? I can't find any simple explanation for what this actually is.","time":1258336100,"type":"comment"}
{"by":"wooby","descendants":62,"id":966986,"kids":[967083,967025,967099,967072,967033,967150,967106,967092,967201,967161,967016,967230,967095,967077,969239,967234,967145,967509,967671,967023,967100,967034,967300,967179,967110,967480,967013,967298],"score":44,"text":"A friend and I will be giving a talk to a group of computer science students in a few weeks.  We're both students ourselves, but are a bit older and have more working experience than the average attendee will probably have.<p>Here are some of the ideas we've had so far:<p>- Present on \"using and knowing the tools\" from OS to editor to libraries.<p>- Something interactive, like working as a group through one of the problems from the New Turing Omnibus.<p>- Talk about the social aspects of coding, like group dynamic and collaboration tools, and maybe introduce pair programming.<p>The audience will be mostly undergraduate CS students.  My friend and I are 25, and have worked freelance and at startups/medium sized companies on mostly Rails, PHP, and Java web apps for 5+ years.  We have a lot to learn ourselves, and see this speaking opportunity as a way to better ourselves as presenters and learn more about the topic we pick.<p>So, what's a good topic?  What's something every CS grad wishes they had learned or heard about?  Thanks in advance for your suggestions!","time":1259535289,"title":"Ask HN: Things you wish you'd learned about programming in college?","type":"story"}
{"by":"wallflower","id":967234,"kids":[967371],"parent":966986,"text":"First, congratulations on being offered the opportunity to talk to your peers. I would echo many of the comments here to go outside academia and CS and focus on what you have learned by coding for pay and pleasure.<p>How to build your personal online coder reputation, begin contributing to the community (open source, blogging) - focus on what you personally have done/not done and your experiences good and bad with sharing and collaborating. And what's it like starting? or working at a startup<p>My point here is focus on experiences that have made you learn. Come in as peers who have been out in the external-college real world and tell them about the real world (calibrate their expectations)<p>I think most of the students are expecting a standard tech briefing, and I challenge you to switch it up on them. Promise some soup du jour tech topic but change it to talking about the real business world (change it after audience is seated so you get the students who probably would have skipped a real-world/business topic oriented lecture).<p>One of the most valuable lectures I've ever crashed was one for Ch.Eng seniors on how to get the job you really, really want. I directly respect the impact of that lecture with giving me enough real knowledge to apprach interviewing with confidence.","time":1259549119,"type":"comment"}
{"by":"Mongoose","id":967298,"kids":[967370],"parent":966986,"text":"Will your talk be recorded? I'd be interested in seeing it.","time":1259553237,"type":"comment"}
{"by":"b-man","descendants":19,"id":976515,"kids":[976863,976695,976817,976920,976833,976593,976697,977033,977247,976930],"score":43,"text":"","time":1259941972,"title":"Like Slime, for Vim","type":"story","url":"http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/"}
{"by":"icey","descendants":20,"id":1012609,"kids":[1012831,1012804,1012959,1013025,1013057,1012960,1013297,1013356,1012943,1012881],"score":27,"time":1261595503,"title":"Music Browser, Not \"Music Service Client\"","type":"story","url":"http://zedshaw.com/blog/2009-12-23.html"}
{"by":"est","id":1012960,"kids":[1013526,1013006],"parent":1012609,"text":"&#62; Type zedshaw.com.<p>&#62; Browse and listen to music I’ve created.<p>If I type Miley Cyrus (just example, no offence), will it list only the songs she <i>wrote herself</i> or all those she <i>performed</i>? What exactly does 'created' mean?","time":1261605291,"type":"comment"}
{"by":"r11t","descendants":1,"id":1017740,"kids":[1017808],"score":9,"text":"","time":1261953928,"title":"bfc.rb : Compile BrainF*** code to Ruby, C, Haskell, Scheme and LLVM","type":"story","url":"http://ujihisa.blogspot.com/2009/12/bfc-brainfk-compilers.html"}
{"by":"MarcusL","dead":true,"descendants":13,"id":1022904,"kids":[1022921,1022924,1023050,1023040,1023022,1023041,1022987,1023072],"score":15,"text":"","time":1262198106,"title":"The Dark Side of Zipcar","type":"story","url":"https://www.blurpr.com/blog/?p=101"}
{"by":"jacquesm","dead":true,"descendants":12,"id":1030732,"kids":[1030779,1030760,1030995,1030997,1030996,1030828,1030938],"score":10,"text":"If you're not one of the silly downmodders you can stop reading here, but if you are please continue.<p>There is a trend that people tend to use the downmod option as a way to harass others or to express their personal disagreement.<p>You have to be aware though that you are probably actually <i>giving</i> points to the person that you've modded down.<p>Here is how it works:<p>Let's say a comment is at 1 point, and you mod it down to 0. After you lots of other people will load that page with the downmodded comment.<p>They'll all look at the comment, realize that some jerk modded it down for no good reason and they'll <i>all</i> mod it up.<p>So your -1 will turn into a +4.<p>I've seen this happen plenty of times now and I thought it worth telling you about the inadvertent result of your actions.<p>If you thought about it a bit longer you'd realize that the best way to show your discontent is to simply use the 'reply' option and state your reasons for disagreeing.<p>Then those 4 people that come after you will not mod up the comment you are replying to because of your undoubtedly great insight, in fact, they might mod you up and the person you are replying to down to express their agreement with you.","time":1262627083,"title":"Tell HN: I've got the anti-dote for the silly downmodders","type":"story","url":""}
{"by":"davidblair","descendants":14,"id":1068781,"kids":[1068877,1068971,1069025,1069021],"score":35,"text":"","time":1264119978,"title":"Scala: A Postfunctional Language","type":"story","url":"http://www.scala-lang.org/node/4960"}
{"by":"jerf","id":1068877,"kids":[1069003,1069247],"parent":1068781,"text":"This isn't describing \"post-functional\", it's just plain old \"multiparadigm\". Multiparadigm languages generally have a \"base\" language type that is at least slightly preferred or possibly what everything else compiles down to, with the tradeoff that anything you can't get without being \"pure\" in some paradigm won't be available to you. In practice this is often a good choice.<p>Lisp, Python, C++, Perl, it's a pretty well-populated space and nothing in that article leads me to believe that there's any particular innovation in the paradigm arena there. That is not to say the language itself is good or bad, just that this article is based on a really weird premise.","time":1264123493,"type":"comment"}
{"by":"sreque","id":1069003,"kids":[1069099,1069027,1069060],"parent":1068877,"text":"I think you give Scala a disservice by saying there is no innovation in it. I have programmed in Perl, PHP, Python, Ruby, C/C++, Java, C#, and even a tiny bit of Scheme and Clojure, but Scala is the first language I have seen to so successfully merge the ideas of OOP and functional programming. For instance, someone at EFPL did their PHD thesis on how to combine the features of functional pattern matching with the OOP concepts of encapsulation and information hiding, which you can read at <a href=\"http://biblion.epfl.ch/EPFL/theses/2007/3899/EPFL_TH3899.pdf\" rel=\"nofollow\">http://biblion.epfl.ch/EPFL/theses/2007/3899/EPFL_TH3899.pdf</a>.<p>Another example is their rich collections library, which contains mutable and persistent immutable versions of the standard data structures, and exposes them all through very clean OO abstractions. None of the above languages except maybe clojure even has such a rich collections library built into its standard library, and clojure's dynamic typing allows it to ignore some of the issues that come with designing a clean collections interface.<p>Of all the languages I have used extensively, Scala has the most functional features by far, and it is in this sense that Scala can claim to be a leader in helping functional features become more mainstream and make up new terms like \"post-functional\" :).","time":1264129453,"type":"comment"}
{"by":"yannis","descendants":61,"id":1076405,"kids":[1076488,1076534,1076696,1077558,1077517,1076448,1076743,1076736,1076556,1077506,1076726,1076644,1076613,1077456,1076882,1077466,1076680,1076602,1076447,1076549],"score":113,"time":1264458348,"title":"Why 30.1% of numbers start with 1","type":"story","url":"http://www.dspguide.com/ch34/1.htm"}
{"by":"jacquesm","id":1076488,"kids":[1076753],"parent":1076405,"text":"Benfords law is instrumental in fraud detection, the Enron guys were wise to it, but Bernie Madoff was not:<p><a href=\"http://falkenblog.blogspot.com/2008/12/benfords-law-catches-madoff.html\" rel=\"nofollow\">http://falkenblog.blogspot.com/2008/12/benfords-law-catches-...</a>","time":1264460243,"type":"comment"}
{"by":"syl","descendants":36,"id":1085135,"kids":[1085354,1085359,1085353,1085294,1085398,1085394,1085501,1085312,1085562,1085339,1085386,1085496,1085358,1085383,1085528,1085554],"score":149,"text":"","time":1264715349,"title":"Apple's New Thing (iPod) - Oct. 2001","type":"story","url":"http://forums.macrumors.com/showthread.php?t=500"}
{"by":"ugh","id":1085398,"kids":[1086016],"parent":1085135,"text":"Damn, digging for iPod articles from 2001 is fun! (For those who want to join the fun, October 23 is the exact date.)<p>“Apple’s Musical Rendition: A Jukebox Fed by the Mac”, New York Times (David Pogue, no less): <a href=\"http://www.nytimes.com/2001/10/25/technology/state-of-the-art-apple-s-musical-rendition-a-jukebox-fed-by-the-mac.html?scp=3&#38;sq=ipod&#38;st=nyt\" rel=\"nofollow\">http://www.nytimes.com/2001/10/25/technology/state-of-the-ar...</a><p>“Apple doesn’t change the world (yet)”, Der Spiegel (sorry, German): <a href=\"http://www.spiegel.de/netzwelt/tech/0,1518,164056,00.html\" rel=\"nofollow\">http://www.spiegel.de/netzwelt/tech/0,1518,164056,00.html</a><p>“Apple enters the hi-fi market”, heise (sorry, German): <a href=\"http://www.heise.de/newsticker/meldung/Apple-entert-den-HiFi-Markt-Update-47282.html\" rel=\"nofollow\">http://www.heise.de/newsticker/meldung/Apple-entert-den-HiFi...</a><p>What a strange world in 2001, though: no Gizmodo, no Engadget :)","time":1264722019,"type":"comment"}
{"by":"alexandros","descendants":121,"id":1142398,"kids":[1142656,1142427,1142684,1142722,1142539,1142578,1142433,1143100,1143640,1143237,1143700,1142418,1143915,1142629,1142414,1142673,1142777,1143599,1142453,1145255,1143319,1143445,1142727,1142692,1142838],"score":134,"time":1266836372,"title":"The Non-Programming Programmer","type":"story","url":"http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html"}
{"by":"edw519","id":1142656,"kids":[1143138,1143187,1143089,1142669,1142823,1142938],"parent":1142398,"text":"I was recently contacted by a head hunter for a job I thought was worth investigating.  I wanted to talk to the company directly, but the head hunter made it clear that Step 1 was <i>always</i> a web-based programming aptitude test, no matter who you were.  20 questions.  18 correct was considered passing.  They would only talk to candidates who got 19 or 20 correct.<p>So I took the test and got 20 correct (as I imagine many people here would do as well).  I thought it was very easy.  The headhunter later told me that in 9 months, she had sent 52 people to the test, only 2 of us got 19, and I was the only one who got 20.<p>I'm not really sure what this means.  That there are a lot of posers out there?  That she wasn't very good at screening talent?  That the companies seeking the best talent gladly pay $100 50 times to save their time?<p>I guess my biggest feeling is one of disappointment.  It's just not that hard to become a good enough programmer to get 20 right every time.  All it takes is study, passion, a lot of dedication, and a lot of hard work.  I wish more people would do that.  There aren't enough of us.","time":1266848158,"type":"comment"}
{"by":"mcantor","id":1142669,"kids":[1142685],"parent":1142656,"text":"Out of curiosity, what sort of questions were on the test?","time":1266848547,"type":"comment"}
{"by":"edw519","id":1142685,"kids":[1142741,1142766,1142902,1143399,1143450,1143035],"parent":1142669,"text":"The entire test was about a fictitious language, I forget what they named it.  Every question built upon the previous.<p>The first question was something like, \"These are the definitions of variables: A string is... An integer is...  A date is...\"  Then the question would be something like, \"What can '15232' be?  a. an integer  b. a string  c. a date  d. any of the above  e. a and c\".<p>Another question might be \"Here are the rules of precedence... What is (1 + 2) * (3 + 4) / 3  a. 4  b. 2  c. 7  d. 12  e. Can't tell for sure.\"<p>It got more and more complex, all in their own pseudocode.  They covered branching, iteration, arithmetic operations, Boolean algebra, etc.  Things most people here have seen a million times.  Kinda like SATs for programmers.","time":1266849200,"type":"comment"}
{"by":"wooby","descendants":10,"id":1175136,"kids":[1175365,1175196,1175328,1175195,1175776,1175799],"score":47,"text":"","time":1268046680,"title":"NCSA Mosaic on GitHub","type":"story","url":"http://github.com/alandipert/ncsa-mosaic"}
{"by":"nuclear_eclipse","descendants":3,"id":1175426,"kids":[1175496,1175790],"score":36,"text":"","time":1268060500,"title":"NCSA Mosaic 2.7 on Github","type":"story","url":"http://tomayko.com/linkings/a61915d5c7cd11d917c2a088e2374fa1"}
{"by":"jrockway","id":1175496,"kids":[1175552],"parent":1175426,"text":"Dupe.  You also misspelled the word \"on\".<p>Original: <a href=\"http://news.ycombinator.com/item?id=1175136\" rel=\"nofollow\">http://news.ycombinator.com/item?id=1175136</a>","time":1268062391,"type":"comment"}
{"by":"sireat","id":1175799,"kids":[1177210],"parent":1175136,"text":"Nice, couldn't build it though on U9.10, at least x11-proto-print-dev does not exist there.","time":1268068721,"type":"comment"}
{"by":"mattyb","descendants":3,"id":1223288,"kids":[1223492,1223651,1223554],"score":38,"text":"","time":1269711637,"title":"Fast Clojure Vectors and Multidimensional Arrays","type":"story","url":"http://measuringmeasures.com/blog/2010/3/27/fast-clojure-vectors-and-multidimensional-arrays.html"}
{"by":"henning","id":1223492,"kids":[1223518,1224044],"parent":1223288,"text":"Couldn't you make a Clojure macro that would let you type arithmetic expressions in infix? Not having Fortress-type support for math in a language is bad enough, but having to type everything prefix is really a PITA when you're just trying to type in a standard formula from a book or a paper.","time":1269718348,"type":"comment"}
{"by":"froo","descendants":182,"id":1226736,"kids":[1226850,1226785,1226893,1227256,1227218,1226996,1226847,1227078,1226986,1226877,1226762,1226901,1227156,1226916,1227652,1227054,1226994,1226906,1227237,1226975,1227113,1227073,1227466,1226816,1226988,1227014,1227163,1227291,1227095,1227269,1226778,1227367,1227991,1227060,1227068,1227405,1226868,1227141,1227716,1226941,1227602,1226925,1226813,1227228,1227009,1227139,1226747,1226793,1227374,1228258,1227147,1228638,1228436,1227801,1227208,1227085,1227056,1227142,1227033,1227188,1226753,1226794,1226812,1240128,1227097,1226905,1227238,1227285,1226874,1227707,1227440,1226923,1227855,1229041,1227529,1227384,1273331,1227294,1227055,1227103,1228194,1227721,1226892,1226841,1227259,1226921,1226953,1227354,1227151,1227545,1226928,1227525,1226915,1227675,1238099,1227627,1226792,1226952,1227174,1227034,1226972,1237586,1227214,1227154,1226942,1227744,1227011],"score":118,"text":"I was wondering what books people could recommend that would be relevant to the HN community and aren't related to software?","time":1269877921,"title":"Ask HN: Interesting (Non software) books?","type":"story"}
{"by":"roqetman","descendants":47,"id":1374718,"kids":[1375116,1375062,1375345,1377500,1375731,1375252,1375479,1375628,1375012,1375686,1375274,1375302,1375122,1375935,1375284],"score":76,"text":"","time":1274712219,"title":"Humans: Why They Triumphed","type":"story","url":"http://online.wsj.com/article/SB20001424052748703691804575254533386933138.html"}
{"by":"tysone","descendants":98,"id":1546500,"kids":[1546640,1546750,1546932,1546666,1547803,1546653,1546903,1549858,1547179],"score":100,"time":1280096762,"title":"The War Logs: An archive of classified military documents","type":"story","url":"http://www.nytimes.com/interactive/world/war-logs.html"}
{"by":"matt1","id":1546666,"kids":[1546808,1546691,1546815,1546792,1547013],"parent":1546500,"text":"Is it a crime to download or analyze the data in these documents?<p>Edit: Clearly it's not if the NYTimes is doing it, but out of curiosity, why <i>isn't</i> it?","time":1280102686,"type":"comment"}
{"by":"rdl","id":1546808,"kids":[1546898],"parent":1546666,"text":"Not a crime.  The US doesn't have an equivalent of the UK's official secrets act.  I don't think it's actually a crime, although there could be court injunction against publishing, which you could then be in contempt of if you went ahead.<p>If you have a security clearance, it's possibly unwise to download/have this information on your own, especially if you have had secret access to it, mainly because there is going to be a bunch of counterintelligence to figure out how things were leaked (presumably PFC Manning, but who knows?).  It would complicate things during an investigation if you had information on your hard drive, even if you could document that it had come from an outside commercial source.  With some information, even if it is \"known\" by the public, having access to it through classified channels is a way to vet the information, so if someone posted \"super secret a\" to a website, and you commented \"oh, yes, I've heard of that\", you would actually be corroborating information and leaking classified information.<p>FWIW, nothing in these seems to be particularly damning of the US.  It is basically \"war is hell\", \"mistakes are made\", \"we like to put a spin on things\".  It's pretty much par for the course for special operations forces to do things and then have the positive outcomes attributed to indigenous forces, and the negative outcomes hushed up.<p>There probably would be some net benefit to prompt declassification and publishing of much of this information.  I don't condone illegal leaks, but there is definitely a public interest in having the public informed about what is going on.  Aside from the reporting on TF 373, nothing in the NY Times or Guardian analysis of the documents (I haven't looked at the raw documents) is a big deal.  As far as I can tell, nothing particularly sensitive about 373 was published, either.","time":1280107768,"type":"comment"}
{"by":"grandalf","id":1546898,"kids":[1546924],"parent":1546808,"text":"I thought the finding that the insurgents are using US provided stinger missiles against US aircraft was fairly damning... it shows that past US intervention has unforeseen consequences.<p>Also, it's pretty significant (to a lot of people) to observe that all this continued under Obama... that there has been no improvement in the way the war effort is being waged.","time":1280110149,"type":"comment"}
{"by":"rdl","id":1546924,"kids":[1546982],"parent":1546898,"text":"I don't see anything saying the enemy is using US provided stinger missiles against US aircraft.  There was a report of \"smoke trail\", which may or may not be accurate.  If accurate, I would assume it's a soviet weapon (SA-7 or successor), or maybe a Pakistani stinger clone, but very unlikely a US stinger given in the early 1980s.<p>Yes, a lot of this is interesting, but isn't far beyond that is available in the news, at least if you have a basic understanding of military operations in Afghanistan.  If you read 2-3 of the popular military blogs (Michael Yon, especially), you would know 95+% of this.","time":1280111024,"type":"comment"}
{"by":"JBerlinsky","descendants":68,"id":1603381,"kids":[1603511,1603783,1603459,1603455,1603725,1603615,1603594,1603554,1604402,1603517,1603495,1604384,1603527,1603465,1603581,1603481,1604383,1603531,1603453,1603717,1603544,1603508,1603446,1604178,1603576,1603633,1603447,1603518,1603476,1605146,1604281,1604006,1603448,1603587,1604132,1603485],"score":44,"text":"I've got a ~35GB text file full of data, and I want to parse it so I only have unique results in the end file. In the past, I've had no problem with cat FILE | sort | uniq, but I've never worked with anything of this magnitude. Even running a line count takes an extraordinary amount of time:<p>time cat FILE | wc -l\n2608560847<p>real\t11m18.148s\nuser\t1m35.667s\nsys\t1m33.820s\n[root@server src]#<p>Any suggestions on how I can go about getting unique records from this type of file?","time":1281797492,"title":"Ask HN: Sorting massive text files?","type":"story"}
{"by":"shawndumas","descendants":5,"id":1621714,"kids":[1621953,1622047,1622828,1621896,1621944],"score":77,"time":1282340328,"title":"Jison","type":"story","url":"http://zaach.github.com/jison/docs/"}
{"by":"julien","descendants":25,"id":1622477,"kids":[1623207,1622730,1623188,1623248,1623242,1623154,1623253,1623021],"score":28,"text":"","time":1282379298,"title":"What's frustrating with XML?","type":"story","url":"http://stackoverflow.com/questions/3536893/whats-frustrating-with-xml"}
{"by":"pitdesi","descendants":52,"id":2214534,"kids":[2214835,2214806,2214919,2215140,2214955,2215336,2214676,2216800,2216403],"score":95,"text":"","time":1297641217,"title":"Peter Norvig: The machine age","type":"story","url":"http://www.nypost.com/p/news/opinion/opedcolumnists/the_machine_age_tM7xPAv4pI4JslK0M1JtxI"}
{"by":"abp","descendants":16,"id":2795803,"kids":[2796884,2795905,2795995,2797399,2796177],"score":81,"text":"","time":1311383705,"title":"Introducing ClojureScript","type":"story","url":"http://clojure.com/blog/2011/07/22/introducing-clojurescript.html"}
{"by":"ericmoritz","id":2795995,"kids":[2796026,2796021],"parent":2795803,"text":"Unless I'm doing something wrong, they need to do some optimizations to code size if this is going to be used client side nearly 30k is a lot of overhead for a function that returns \"Hello, world!\"<p><a href=\"http://pastebin.com/P5MTvP5Q\" rel=\"nofollow\">http://pastebin.com/P5MTvP5Q</a>","time":1311390063,"type":"comment"}
{"by":"omaranto","id":2796026,"kids":[2796035],"parent":2795995,"text":"I didn't read either the article or what you did carefully, but I do wonder if either (a) you're supposed to run the output of their compiler through Google Closure's compiler which removes most of the code (which is probably library functions unused by your little function), or (b) the 30K is a pretty much one time cost, and if your code grows the output increases moderately.","time":1311391277,"type":"comment"}
{"by":"ericmoritz","id":2796035,"kids":[2796309],"parent":2796026,"text":"I believe it's already going through Google Closure.  That's what {:optimizations :advanced} does.<p>I'm certain it's a one time cost.  Though I suspect that given that Closure [optimizes out unused code](<a href=\"http://blog.fogus.me/2011/07/21/compiling-clojure-to-javascript-pt1/\" rel=\"nofollow\">http://blog.fogus.me/2011/07/21/compiling-clojure-to-javascr...</a>) the more I use of the goog namespace, the larger that baseline will become.<p>That being said, 30k is the size of minified jQuery, so folks that are alright with building apps on jQuery won't find 30k to be that terrible.","time":1311391662,"type":"comment"}
{"by":"fogus","descendants":45,"id":3453208,"kids":[3453377,3453649,3453601,3453274,3455349,3456325,3455131,3454427,3453599],"score":214,"time":1326309693,"title":"ClojureScript One","type":"story","url":"http://clojurescriptone.com/"}
{"by":"jsavimbi","id":3453599,"kids":[3453655,3453648,3453623],"parent":3453208,"text":"How do I [intelligently] choose ClosureScript over say, Node.js?","time":1326314793,"type":"comment"}
{"by":"rgbrgb","id":3453648,"kids":[3453674,3453828,3454204],"parent":3453599,"text":"This is definitely a question worth asking. I think the audience ClojureScript is most appealing to is those who are already writing server-side stuff in Clojure and want to have a consistent front end or \"old-school Lisp hackers\" who are now writing web applications.<p>Personally, I'm attracted to Lisp/Clojure because of its AI history but haven't put the time in to build anything real with it yet. Are there people who have switched away from (Node || Python || Ruby) &#38;&#38; JS who could discuss their experience?","time":1326315503,"type":"comment"}
{"by":"jshen","id":3453674,"kids":[3455491,3454091,3454045,3453894,3453710,3453895],"parent":3453648,"text":"I've done Ruby for years and I've written one large commercial project in clojure. Clojure was great, and I would love to use it more, but I haven't been able to convince people to use a lisp.<p>It's very strange actually, I tried really hard to do a small project in clojure at my current job and got resistance from everyone. These same people were happy to try coffee script, scala, golang, etc, etc. There seems to be a true bias against lisps.","time":1326315975,"type":"comment"}
{"by":"pron","descendants":10,"id":3613634,"kids":[3614136,3616201,3613990],"score":100,"text":"","time":1329768202,"title":"All Conj 2011 Videos Available","type":"story","url":"http://clojure.com/blog/2012/02/20/all-conj-2011-videos-available.html"}
{"by":"dmix","id":3613990,"kids":[3614060],"parent":3613634,"text":"Some great talks.<p>Not a big deal, but I'm curious: why are the Clojure conj videos always on Blip.tv?","time":1329772939,"type":"comment"}
{"by":"Rayne","id":3614060,"kids":[3614186],"parent":3613990,"text":"Probably just historical reasons. The original Clojure videos from Rich Hickey were put there, so I suppose it makes sense to consolidate them all in one place.","time":1329774216,"type":"comment"}
{"by":"embwbam","descendants":48,"id":3614099,"kids":[3614238,3614633,3614813,3615807,3615503,3615682,3614550,3616163,3615800,3614473],"score":139,"time":1329774782,"title":"Learn from Haskell - Functional, Reusable JavaScript","type":"story","url":"http://seanhess.github.com/2012/02/20/functional_javascript.html"}
{"by":"ax","id":3614550,"kids":[3614592,3614613,3614595,3614824,3614714,3614567,3616708,3614749],"parent":3614099,"text":"One bit of trouble I have with functional style programming is something like the following example: if I have an array of people with firstName and lastName properties, how would I go about returning the person with the longest full name without adding any properties directly to the objects? It is a simple map then reduce to return the maximum length, a fairly trivial modification thereof to return the full name, but when I want to return the original object, I can't think of a good way to do this.<p>The best I can figure is first mapping to a nested array where the first element is the object and the second is the computed property but that seems really messy. Thoughts?","time":1329783399,"type":"comment"}
{"by":"jfager","id":3614613,"kids":[3615192],"parent":3614550,"text":"You don't need a map, just a reduce (foldl, really).  Using underscore, no double calculation:<p><pre><code>    _.reduce(arr, function(p1, p2) {\n        var len = p2.firstName.length + p2.lastName.length;\n        return (len &#62; p1[1]) ? [p2, len] : p1;  \n    }, \n    [null, -1]);</code></pre>","time":1329784513,"type":"comment"}
{"by":"noidi","descendants":90,"id":4444793,"kids":[4447554,4445061,4445802,4446798,4446210,4445584,4445019,4446648,4446612,4446391,4445220],"score":229,"time":1346174286,"title":"Rich Hickey: Deconstructing the Database","type":"story","url":"https://www.youtube.com/watch?v=Cym4TZwTCNU"}
{"by":"hobbyist","id":4446391,"kids":[4446666,4446413,4446704,4446668],"parent":4444793,"text":"I often wonder, is Phd in computer science really required to do awesome work?","time":1346196401,"type":"comment"}
{"by":"swannodette","id":4446668,"kids":[4446745],"parent":4446391,"text":"Rich Hickey never went to school for Computer Science as far as I know. He studied music composition.","time":1346203594,"type":"comment"}
{"by":"swannodette","descendants":51,"id":4697634,"kids":[4697869,4697828,4698310,4697874],"score":164,"time":1351172982,"title":"A Practical Optional Type System for Clojure","type":"story","url":"http://cloud.github.com/downloads/frenchy64/papers/paper.pdf"}
{"by":"dschiptsov","id":4697874,"kids":[4698032,4699056,4697995,4698566,4698140,4697981],"parent":4697634,"text":"One of the distinguishing features of a classic Lisp is that values, not variables have a type-tag and the type-safety checking is performed at runtime. Everything is a reference (a pointer), everything is a first-class object (could be passed anywhere), everything is an expression (uniform syntax).<p>Ironically, Clojure is, a Java in the land of Lisp. They broke the abstraction layers, mess up logic with implementation, introduce not just different kind of parenthesis, but redundant and irrelevant data-structures and ruined the magic of \"everything is a list\". Look what a classic 3-lines 'keep function became.)","time":1351177456,"type":"comment"}
{"by":"wooby","id":4699056,"kids":[4701476],"parent":4697874,"text":"Your example is nonsense. Clojure's keep is based on lazy sequences instead of concrete lists, and is also optimized for performance.<p>That said, you raise a point that occurred to me recently, and it relates to Clojure's literal representation of data beyond lists and your point about the \"ruined magic\".<p>In most Lisps, the only evaluation semantic is that of the \"operator form\": a list of operator car and arguments cdr, both of which are evaluated themselves.<p>Clojure, however, adds an evaluation semantic for its data literals.  Consider this code:<p>{(+ 1 2) (+ 3 4)}<p>It results in the map {3 7}, but where is the \"operator form\" that caused the top-level evaluation?<p>In Lisps with reader macros, an expression like above boils into code resembling (hash-map (+ 1 2) (+ 3 4)), a classic \"operator form\", which is then evaluated.<p>In Clojure, however, which does not provide reader macros, there is no intermediate list representation of the expression accessible to the programmer.  Effectively, Clojure adds evaluation semantics to Lisp beyond \"operator forms\": data literals evaluate their contents, and qualify in many ways as \"special forms\".<p>I have run into at least one implication of this design having to do with the structural representation of Clojure code.  With a \"classic\" Lisp, an IDE or editor is empowered to present to the user any representation of the code, and can convert it to Lisp expressions arbitrarily the same way reader macros do.<p>With Clojure, this type of \"skinning\" is harder, because IDE-like navigation of data implies ordering.  The ordering exists in the character-wise representation of a map like {3 4} but not in its evaluated counterpart.","time":1351192913,"type":"comment"}
{"by":"lucian1900","id":4701476,"kids":[4704149],"parent":4699056,"text":"All of Clojure's literals desugar to calls. They're reader macros you can't add to.","time":1351243083,"type":"comment"}
{"by":"davidbalbert","descendants":41,"id":4994208,"kids":[4994443,4994510,4995558,4994374,4994677,4994420,4995829],"score":109,"text":"","time":1357078249,"title":"List Comprehensions in Eight Lines of Clojure","type":"story","url":"https://www.hackerschool.com/blog/13-list-comprehensions-in-eight-lines-of-clojure"}
{"by":"aredington","id":4994374,"kids":[4994414,4994413,4995783,4996383],"parent":4994208,"text":"Someone's very happy to have authored Clojure's for special form.","time":1357081302,"type":"comment"}
{"by":"zachallaun","id":4994414,"kids":[4994624,4994995],"parent":4994374,"text":"Clojure's `for` is ~80 lines of code, and isn't particularly accessible. My goal here wasn't to reinvent the wheel, but to give an example of a not-totally-trivial macro that does something neat. :)<p>(Clojure is simply my lisp of choice. This could be just as easily implemented in elisp, which does not have this built in.)<p>[edit] For those interested, here's an elisp version: <a href=\"https://gist.github.com/4430934\" rel=\"nofollow\">https://gist.github.com/4430934</a>","time":1357081968,"type":"comment"}
{"by":"aredington","id":4994624,"kids":[4994836,4994690,4996097],"parent":4994414,"text":"I can appreciate the fun of doing things like implementing a list comprehension and the excitement of both applying macros in a useful way and being able to tell other people about it. I found the tone of the linked article to sound self impressed to a point I personally found distasteful, and after reviewing it again I don't see any mention of Clojure's built in for special form, and thusly reacted in a snarky manner.<p>But everyone should get an opportunity to see what you can do with things like macros, how useful list comprehensions are in general, and how a homoiconic language can make the simple things slightly less intuitive but the hard things vastly more tractable. I certainly have no business in detracting from your enjoyment of Clojure, so please don't allow me to.<p>Instead of being snarky may I offer some constructive criticism:<p>1) You don't mention the Clojure `for` special form, which is a built in list comprehension.\n2) There's a significant amount baked into Clojure's `for` special form. How does it compare to your macro? After reviewing the macro again I think you'll find there's some differing behaviors over when members of seqs are realized and bound between your implementation and that in clojure.core.\n3) I think reflecting on what the real power here is: that you are able to dictate the hows and whys of evaluation at what time, and discussing that matter, can make more salient the power of LISPs.<p>Please do continue to enjoy what you are building and what you learn, and don't let the jaded musings of crotchety old men like me get in your way!","time":1357085670,"type":"comment"}
{"by":"triberian","descendants":51,"id":6866085,"kids":[6866336,6866297,6866584,6866371,6866275,6866697,6866425,6867133,6866527,6866922,6867573,6866277,6866386,6866986,6866848,6866711,6869170],"score":55,"text":"","time":1386411775,"title":"BASH as a Modern Programming Language [ppt]","type":"story","url":"http://cdn.oreillystatic.com/en/assets/1/event/95/BASH%20as%20a%20Modern%20Programming%20Language%20Presentation%201.ppt"}
{"by":"Morgawr","descendants":29,"id":7051877,"kids":[7052055,7052347,7054168,7052016,7054720,7053096,7052510],"score":97,"time":1389633313,"title":"A Lisp interpeter in a thousand lines of Bash","type":"story","url":"https://github.com/alandipert/gherkin/blob/master/gherkin"}
{"by":"cbsw","id":7054720,"kids":[7054958,7058976],"parent":7051877,"text":"+ - * &#x2F; even doesn&#x27;t support multi-data. (+ 1 2 3) would be 3,stupid","time":1389661609,"type":"comment"}
{"by":"wooby","descendants":11,"id":8763060,"kids":[8765518,8765463,8763225,8763188],"score":25,"text":"","time":1418836018,"title":"Clojure build tool Boot 2.0 RC1 out now","type":"story","url":"http://adzerk.com/blog/2014/12/boot2-rc1-out/"}
{"by":"smrtinsert","id":8763225,"kids":[8763257,8763411],"parent":8763060,"text":"Interesting that a fileset concept has emerged.  I would draw parallels with Ant, but this project seems to have already zoomed past ant for ease of use.  Can boot be used to build pure java projects as well?","time":1418837876,"type":"comment"}
{"by":"onetom","id":8765518,"kids":[8765956],"parent":8763060,"text":"I was using `grunt` and `gulp` to build Node.js and AngularJS projects but I have to tell even boot 1.0 felt like a great step forward compared to them, despite of the abysmal startup times.<p>It allowed us to just jump into Clojure development from one day to the other while understanding what is the build system doing. I can&#x27;t tell the same about the prepackaged grunt and gulp files which come with certain key-turn projects.","time":1418865292,"type":"comment"}
{"by":"lynndylanhurley","id":8765956,"kids":[8767262],"parent":8765518,"text":"I&#x27;ve worked extensively with both grunt and gulp for the past couple of years (I&#x27;ve even written gulp plugins![1][2]), and I&#x27;m still shocked at how bad the tooling is compared to ruby (rails asset pipeline &#x2F; sprockets) and clojure (leiningen, chestnut, etc.).<p>For example, here is a simple gulpfile for a livereload environment that compiles sass and coffeescript [3]. It&#x27;s over 500 lines long, and it requires extensive knowledge of at least 20 plugins. And half of those plugins are there to address the shortcomings of other plugins, or of gulp itself [4].<p>But really the worst part is that every time some dependency of a dependency pushes a point release, it breaks the entire build. My team has resorted to passing around a stable `node_modules` dropbox folder. I&#x27;m literally terrified to run npm update!<p>Anyway boot looks cool, I can&#x27;t wait to try it out :)<p>[1] <a href=\"https://github.com/lynndylanhurley/gulp-rev-replace-stream\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;lynndylanhurley&#x2F;gulp-rev-replace-stream</a><p>[2] <a href=\"https://github.com/lynndylanhurley/generator-gulp-of-drano\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;lynndylanhurley&#x2F;generator-gulp-of-drano</a><p>[3] <a href=\"https://github.com/lynndylanhurley/generator-gulp-of-drano/blob/master/app/templates/_gulpfile.coffee\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;lynndylanhurley&#x2F;generator-gulp-of-drano&#x2F;b...</a><p>[4] <a href=\"https://www.npmjs.com/package/gulp-buffer\" rel=\"nofollow\">https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;gulp-buffer</a>","time":1418876533,"type":"comment"}
{"by":"wooby","descendants":32,"id":8923385,"kids":[8923816,8923776,8925386,8925045,8924018,8923499,8923521,8923558],"score":80,"text":"","time":1421853211,"title":"Feature Macros, an Alternative to Feature Expressions in Clojure","type":"story","url":"https://github.com/feature-macros/clojurescript/tree/feature-macros/feature-macros-demo"}
{"by":"brandonbloom","id":8923776,"kids":[8923835,8926408],"parent":8923385,"text":"Many of the most useful applications of feature expressions simply will not work as macros. You&#x27;d need to create one new feature-cond enabled macro for each other macro use case. Feature expressions, on the other hand, are a general solution that can be used at the call site without having to reinvent every macro that may ever need platform-conditional behavior, like your ns+ macro.<p>Consider the proposed +clj form in the body of an extend-protocol or a deftype:<p><pre><code>    (defmacro +clj\n      &quot;Form is evaluated only in the JVM.&quot;\n      [form]\n      (when (= :clj *host*) form))\n\n\n    (deftype Foo\n\n      SomeCommonProtocol\n      (aMethod [blah blah] ...)\n\n      (+clj\n        JvmOnlyInterface\n        (someMethod [blah] ...)\n        )\n    \n      )\n</code></pre>\nOf course, this <i>does not work</i>. The deftype macro gets the +clj form unmodified and must handle it on its own.<p>At best, you could have a syntax-quote style wrapper form:<p><pre><code>    (feature-quote\n      (deftype Foo\n\n        SomeCommonProtocol\n        (aMethod [blah blah] ...)\n\n        (+clj\n          JvmOnlyInterface\n          (someMethod [blah] ...)\n          )\n\n        ))\n</code></pre>\nHowever, this is essentially what Feature Expressions are anyway. Only broken, since macros don&#x27;t only operate on syntax&#x2F;edn, they can operate on any compile-phase value, like dates and times or the output of any tagged literal handler. Without being part of the phase before the macro expander, you can&#x27;t prevent platform specific types from reaching the macro body.<p>The reality is that Clojure, in the tradition of most lisps, has rigid read&#x2F;compile&#x2F;run phase separation where each phase has a varied evaluation strategy, but the phases run interleaved. Unlike say something like Mathematica, which does not run the reader interleaved with the evaluator - and the evaluator uses normal-order rather than applicative-order! Without such a uniform evaluation strategy (nevermind Mathematica&#x27;s evaluator&#x27;s other problems) it simply doesn&#x27;t make sense to fight so hard against beefing up the read phase.<p>Related: I&#x27;ve written before about how I don&#x27;t think that this impacts tooling as badly as you guys thing it does. I just don&#x27;t understand why you guys are so against feature expressions, nor do I think you&#x27;ve succeeded in proposing a desirable alternative.","time":1421857685,"type":"comment"}
{"by":"wooby","id":8923835,"kids":[8923939,8923889],"parent":8923776,"text":"What&#x27;s wrong with:<p><pre><code>    (deftype Foo\n      SomeCommonProtocol\n      (aMethod [blah blah] ...))\n\n    (+clj\n     (extend-type Foo\n       JvmOnlyInterface\n       (someMethod [blah] ...)))\n</code></pre>\nCan you come up with another example you consider intractable?","time":1421858342,"type":"comment"}
{"by":"brandonbloom","id":8923939,"kids":[8924093],"parent":8923835,"text":"Your change is invalid. I picked my example very carefully: You can not extend an interface to an object after the type has been created. That only works with protocols.<p>That said, there are countless examples. I already mentioned the proposed ns+ form, but there are a couple more in the design spec here: <a href=\"http://dev.clojure.org/display/design/Feature+Expressions\" rel=\"nofollow\">http:&#x2F;&#x2F;dev.clojure.org&#x2F;display&#x2F;design&#x2F;Feature+Expressions</a><p>I&#x27;m not going to bother constructing more concrete examples, since it&#x27;s trivial to do and each and everyone will have case-specific solutions that will seem &quot;nicer&quot; than feature expressions. But that&#x27;s just it: It will be a case-by-case solution, rather than a general solution. Case-by-case application-centric solutions are preferable for the platform abstractions of your major subsystems, but often you just want to hack it and feature-macros simply don&#x27;t offer the flexibility you need.","time":1421859486,"type":"comment"}
{"by":"wooby","id":8924093,"kids":[8924227],"parent":8923939,"text":"Ah, point taken.  Here is a valid version:<p><pre><code>    (case-host\n     :clj\n     (deftype Foo []\n       JvmOnlyInterface\n       (aMethod [blah blah] ...))\n     :cljs\n     (deftype Foo []))\n    \n    (extend-type Foo\n      SomeCommonProtocol\n      (someMethod [blah] ...))\n</code></pre>\nIt is true there are countless examples.  There are also countless counter-examples.  And for the examples that are competitive in terseness, there is already cljx.<p>I personally don&#x27;t &quot;just want to hack it&quot;, especially when it comes to writing portable code.  I agree that portability poses subtle new challenges to application design.  I just prefer to meet those challenges in a way that is programmable, which syntactic extension is definitely not.","time":1421860622,"type":"comment"}
{"by":"brandonbloom","id":8924227,"kids":[8924337],"parent":8924093,"text":"Let me rephrase &quot;just hack it&quot;: Feature expressions are a low-level primitive for platform switching. If you have cross platform abstractions, consumers of your code shouldn&#x27;t need to use feature expressions. However, they are very useful in the implementation of such abstractions.<p>As for the programability complaint: I just don&#x27;t see why it is important. If you are generating code, you can already add&#x2F;remove content from the generated code. That is: you can always just write a &quot;feature macro&quot;! Feature expressions don&#x27;t add any power you don&#x27;t already have: Only affordances for humans.<p>Unrelated thought: Haskell&#x2F;GHC uses the C preprocessor to address this problem.","time":1421861634,"type":"comment"}
{"by":"wooby","id":8924337,"kids":[8924545],"parent":8924227,"text":"I agree that Feature Expressions don&#x27;t add power, because yes, they are semantically equivalent to C preprocessing and orthogonal to the idea of Lisp.<p>What excites us most about Feature Macros is that they <i>do</i> add power.  Here is an example of something we think is powerful from the proposal - a cross-platform macro:<p><pre><code>    (case-host\n      :cljs nil\n      :clj  (defmacro my-macro [name &amp; body]\n              (case-target\n                :clj  `(.println (System&#x2F;-out) (str (do ~@body)))\n                :cljs `(.log js&#x2F;console (str (do ~@body))))))</code></pre>","time":1421862691,"type":"comment"}
{"by":"brandonbloom","id":8924545,"kids":[8924865],"parent":8924337,"text":"1) I don&#x27;t understand what this example is supposed to demonstrate.<p>2) By &quot;power&quot; I meant a formal notion of expressiveness: Neither feature expressions nor feature macros add anything to the language that you can&#x27;t already express with existing constructs. Like I said: It&#x27;s about affordances, not capability.","time":1421864758,"type":"comment"}
{"by":"michaniskin","id":8924865,"kids":[8925690],"parent":8924545,"text":"The example demonstrates how you can define a macro that runs its code in Clojure but can emit code to both Clojure and ClojureScript. How would you do this with feature expressions?","time":1421867206,"type":"comment"}
{"by":"jballanc","id":8925045,"kids":[8925338],"parent":8923385,"text":"It seems to me that Feature Macros will be trivially implementable as a library once Feature Expressions land:<p><pre><code>    #+clj (def *host* :clj)\n    #+cljs (def *host* :cljs)</code></pre>","time":1421868534,"type":"comment"}
{"by":"michaniskin","id":8925338,"kids":[8930026,8925376],"parent":8925045,"text":"They&#x27;re trivially implementable without feature expressions, as we demonstrated with our 20 lines of code.","time":1421870711,"type":"comment"}
{"by":"smrtinsert","id":8925376,"kids":[8925445],"parent":8925338,"text":"Except on Windows due to Boots current lack of support.","time":1421871039,"type":"comment"}
{"by":"lukev","id":8925690,"kids":[8926982],"parent":8924865,"text":"<p><pre><code>  #+clj\n  (defmacro my-macro []\n    (cond\n      (contains? *features* :clj)  `(some-clojure-thing)\n      (contains? *features* :cljs) `(some-cljs-thing)))\n</code></pre>\nIf that was too verbose for you, you could of course write a `feature-case` <i>function</i> that looks almost identical to what you have in that example.","time":1421873652,"type":"comment"}
{"by":"wooby","descendants":15,"id":8956313,"kids":[8957971,8961530,8956953,8958520,8958464,8957797],"score":61,"time":1422396063,"title":"Boot: Getting Started with Clojure","type":"story","url":"https://lionfacelemonface.wordpress.com/2015/01/17/boot-getting-started-with-clojure-in-10-minutes/"}
{"by":"thomasloh","id":8956953,"kids":[8957156],"parent":8956313,"text":"what&#x27;s the difference between boot and leiningen?","time":1422401854,"type":"comment"}
{"by":"hittaruki","id":8957971,"kids":[8959931],"parent":8956313,"text":"One of the things that nags me about boot, is that it recommends using file extension `.boot`. Is it just me?<p>Is there any specific advantages to using another file extension rather than using `.clj`","time":1422417032,"type":"comment"}
{"by":"BFay","id":8961530,"kids":[8963160],"parent":8956313,"text":"There&#x27;s some mention of clojure being used as a scripting language here that can be invoked with a shebang - does anybody know if the way this is done is any different (performance-wise) than compiling a leiningen project to an uberjar?<p>When I&#x27;ve tried using clojure for really simple things, like a &quot;Hello, World&quot; program, and compiled this to a jar to run with something like &quot;java -jar hello.jar,&quot; the time it takes to start up the program is pretty abysmal. I&#x27;d like to use clojure for something on the Raspberry Pi, but it can take about 30 seconds to run &quot;Hello, World!&quot;<p>Any secrets to getting it to start up faster, or am I just stuck?","time":1422469329,"type":"comment"}
{"by":"def-","descendants":44,"id":9145360,"kids":[9149904,9146206,9148380,9145998],"score":102,"time":1425486637,"title":"Make a Lisp in Nim","type":"story","url":"http://hookrace.net/blog/make-a-lisp-in-nim/"}
{"by":"shared4you","id":9146206,"kids":[9146272,9146220,9146334],"parent":9145360,"text":"Are your graphs up to date ? Seems just an hour ago [1]:<p>&gt;  Rust: build with --release. 10X performance boost!<p>That might mean that Rust would top the charts instead of Nim.<p>[1]: <a href=\"https://github.com/kanaka/mal/commit/434516e0d172904e06b05f6dee83ce2e7859b950\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;kanaka&#x2F;mal&#x2F;commit&#x2F;434516e0d172904e06b05f6...</a>","time":1425493243,"type":"comment"}
{"by":"pcwalton","id":9146272,"kids":[9146506,9147155,9154007],"parent":9146206,"text":"Just one glance at the Rust version (e.g. [1]) shows a lot of needless allocation. For example:<p><pre><code>    if *strn == &quot;&amp;&quot;.to_string() { ... }\n</code></pre>\nis a very slow (and verbose) way to write<p><pre><code>    if &amp;strn[..] == &quot;&amp;&quot; { ... }\n</code></pre>\nand<p><pre><code>    rr_string(&quot;&#x27;&quot;.to_string() + k.to_string() + &quot;&#x27; not found&quot;.to_string())\n</code></pre>\nis a very slow (and verbose) way to write<p><pre><code>    rr_string(format!(&quot;&#x27;{}&#x27; not found&quot;, k))`\n</code></pre>\nEtc. etc.<p>[1]: <a href=\"https://github.com/kanaka/mal/blob/master/rust/src/env.rs\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;kanaka&#x2F;mal&#x2F;blob&#x2F;master&#x2F;rust&#x2F;src&#x2F;env.rs</a>","time":1425493838,"type":"comment"}
{"by":"steveklabnik","id":9146506,"kids":[9147127],"parent":9146272,"text":"It&#x27;s also using some manual clone instead of Cargo overrides, and manually running rather than `cargo run`... time for some PRs, I guess!<p>EDIT: further, looks like it&#x27;s on a really old Rust: <a href=\"https://github.com/kanaka/rust-pcre\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;kanaka&#x2F;rust-pcre</a> wasn&#x27;t updated since October...<p>EDIT 2: I tried to update the code, but it&#x27;s really, really out of date, and will be a ton of work. So I&#x27;ve just submitted <a href=\"https://github.com/kanaka/mal/pull/23\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;kanaka&#x2F;mal&#x2F;pull&#x2F;23</a> instead. :(","time":1425495835,"type":"comment"}
{"by":"kanaka","id":9147127,"kids":[9147141],"parent":9146506,"text":"Well, I&#x27;m not going to remove it. But I will see if I can find some time to improve it in the next few days. I&#x27;ve been meaning to cycle back around. Of course, fixes from somebody who&#x27;s actually a Rust expert would have been preferred :-)<p>The reason it still uses the alternate pcre is because this still hasn&#x27;t been fixed: <a href=\"https://github.com/rust-lang/regex/issues/28\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;rust-lang&#x2F;regex&#x2F;issues&#x2F;28</a> I would love to get rid of that nastiness.","time":1425501235,"type":"comment"}
{"by":"steveklabnik","id":9147141,"kids":[9147640,9147170,9148117],"parent":9147127,"text":"That&#x27;s a bummer, because until then, you&#x27;ll be strongly mis-representing Rust :&#x2F;","time":1425501336,"type":"comment"}
{"by":"kristianp","descendants":68,"id":9940126,"kids":[9940736,9941004,9940809,9940947,9940780,9941257,9940969,9941154,9941829,9940788,9944402,9940760,9940743,9942357,9944679,9943713,9941360,9942859,9941889,9946537,9940881,9941062],"score":173,"time":1437712460,"title":"How to implement a spreadsheet","type":"story","url":"http://semantic-domain.blogspot.com/2015/07/how-to-implement-spreadsheet.html"}
{"by":"Keats","descendants":30,"id":10081305,"kids":[10081955,10082848,10082180,10084624,10081965,10082319,10082900,10083697,10084148],"score":137,"time":1439923756,"title":"Introducing Elm to a JavaScript Web App","type":"story","url":"http://noredinktech.tumblr.com/post/126978281075/walkthrough-introducing-elm-to-a-js-web-app"}
{"by":"wooby","id":10083697,"kids":[10087306],"parent":10081305,"text":"If you&#x27;re interested in bringing functional&#x2F;reactive style code to an existing application, you might also be interested in splint.js: <a href=\"https:&#x2F;&#x2F;github.com&#x2F;adzerk-oss&#x2F;splint.js\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;adzerk-oss&#x2F;splint.js</a><p>I wrote a blog post about it recently: <a href=\"http:&#x2F;&#x2F;adzerk.com&#x2F;blog&#x2F;2015&#x2F;06&#x2F;splint-functional-first-aid-jquery&#x2F;\" rel=\"nofollow\">http:&#x2F;&#x2F;adzerk.com&#x2F;blog&#x2F;2015&#x2F;06&#x2F;splint-functional-first-aid-j...</a><p>In a nutshell, it&#x27;s a jQuery-friendly packaging of the ClojureScript runtime and the Javelin cell library, usable in existing applications.  You basically write ClojureScript in JavaScript syntax.","time":1439958791,"type":"comment"}
{"by":"yogthos","id":10087306,"kids":[10088390],"parent":10083697,"text":"&gt;You basically write ClojureScript in JavaScript syntax.<p>Why?","time":1440007481,"type":"comment"}
{"by":"jessaustin","descendants":17,"id":10746336,"kids":[10751190,10751517,10751259,10751495,10751350],"score":37,"time":1450292024,"title":"Rx glitches aren't actually a problem","type":"story","url":"http://staltz.com/rx-glitches-arent-actually-a-problem.html"}
{"by":"landakram","descendants":36,"id":14619888,"kids":[14622552,14624192,14623027,14622215,14622050,14621658,14621996,14622683,14622018],"score":138,"time":1498231995,"title":"LambdaNative – Cross-platform mobile apps in Scheme","type":"story","url":"http://www.lambdanative.org"}
{"by":"winter_blue","id":14622552,"kids":[14622818,14624831,14626791],"parent":14619888,"text":"It&#x27;s a bit inaccurate of them to present the results of a 17-year old paper (published in 2000), as empirical evidence that development time in Scheme is shorter. These days there are plethora of language choices on the JVM, and if I were devloping a multi-platform app today, I would personally choose Kotlin along with the Intel Multi-OS Engine:<a href=\"https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;multi-os-engine\" rel=\"nofollow\">https:&#x2F;&#x2F;software.intel.com&#x2F;en-us&#x2F;multi-os-engine</a><p>Part of my motivation to prefer Kotlin over Clojure (the most popular LISP on the JVM langauge?) is that I am a huge proponent of static typing. Large programs written in statically typed languages are orders of magnitute <i>more readable</i>, more maintainable, easier to understand, and far less error-prone, than programs written in dynamically typed languages.<p>The recent surge in popularity of dynamically typed languages like JavaScript, Python, Ruby, etc, had been a source of horror and frustration to me. It feels like a huge segment industry is throwing away decades of advancement made in programming language research, and instead of moving to languages with more advanced type systems, they&#x27;re abandoning sound typing altogether (shudder).","time":1498250194,"type":"comment"}
{"by":"darwhy","descendants":63,"id":14637763,"kids":[14639321,14639054,14638851,14639110,14638918,14640025,14639120,14639394,14639200,14641086,14639269,14638856],"score":238,"time":1498492625,"title":"Improvements to the Xerox Alto Mandelbrot drop runtime from 1 hour to 9 minutes","type":"story","url":"http://www.righto.com/2017/06/improvements-to-xerox-alto-mandelbrot.html"}
{"by":"gumby","id":14639321,"kids":[14640597,14640683,14642742],"parent":14637763,"text":"Shutting off redisplay was not an uncommon technique on the Alto (the first time I saw it I was somewhat disconcerted, and though the machine had crashed as that wasn&#x27;t all that uncommon in those days).<p>The key, if you read Thacker&#x27;s original design paper, is that screen refresh rate was 2&#x2F;3 of the bus bandwidth.  This was considered absurd: why so much resource devoted to I&#x2F;O (many machines in those days still had channel controllers, a design which has implicitly returned).<p>These old tidbits are fun because they make you think about different design tradeoffs.  I love the line in K&amp;R (IIRC -- is it still in there?) where they explain that the standard library is required (and say, including the quotes &quot;you mean I have to call a function to do I&#x2F;O?&quot;).  And the implicit defense in the 801 paper (the original RISC paper) that yes, the compiler really could do a good job.","time":1498503646,"type":"comment"}
{"by":"wooby","descendants":39,"id":15710533,"kids":[15713904,15714169,15712870,15712878,15717558,15715942,15712710,15714097,15716872,15716450],"score":170,"time":1510811815,"title":"Vis – A vi-like editor based on Plan 9's structural regular expressions","type":"story","url":"https://github.com/martanne/vis"}
{"by":"PuercoPop","id":15712878,"kids":[15713642,15716007,15715818],"parent":15710533,"text":"I used Vis full time for a two weeks a couple of months ago. It was pretty nifty. (I&#x27;m Emacs user so this was an time-bounded experiment).<p>Vis is a great of example of the suckless philosophy and of Guy Steele&#x27;s point about removing the need of features by having synergy between other features. For example they have an immutable piece table to support undo by just moving a pointer. This would mean that as the buffer remains open one would use more and more memory. Instead of implementation a &#x27;garbarge collector&#x27; they chose to automatically close a file when its not shown on the screen.","time":1510843014,"type":"comment"}
{"by":"gwn7","id":15713904,"kids":[15716213,15718028],"parent":15710533,"text":"I&#x27;ve been using vis as my primary editor for six months, and I&#x27;m quite happy with it. (I&#x27;m a long time vim user.)<p>Main selling points for me:<p>- Simple editor, easy to learn, with a ~650 line man page as the documentation<p>- Simple, yet has the most useful features from the great vim and sam editors<p>- No feature bloat - unlike vim<p>- No vimscript (lua instead)<p>- Readable and hackable codebase - unlike vim<p>- Structural regular expressions<p>For now the unavailable features that I miss the most are tag browsing and code folding. I don&#x27;t miss them very much in sufficiently clean and modular codebases, but they are indispensable when analyzing large, complex, or badly written code. I switch to vim when that is the case. I should say that their implementation is considered though:<p><a href=\"https:&#x2F;&#x2F;github.com&#x2F;martanne&#x2F;vis&#x2F;issues&#x2F;547\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;martanne&#x2F;vis&#x2F;issues&#x2F;547</a><p><a href=\"https:&#x2F;&#x2F;github.com&#x2F;martanne&#x2F;vis&#x2F;issues&#x2F;342\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;martanne&#x2F;vis&#x2F;issues&#x2F;342</a><p>vis is highly recommended to anybody looking for a better vim and appreciate &amp; know how to use vim without a gazillion of plugins.","time":1510849550,"type":"comment"}
{"by":"selrond","descendants":125,"id":16400320,"kids":[16402080,16400776,16401055,16400528,16400478,16400443,16401886,16400795,16401170,16401199,16401136,16400669,16400524,16400445,16400486,16404646,16411814,16400697,16401285,16406238,16401066,16402532,16400667,16400870,16400557,16400649,16402355,16400475,16404637],"score":219,"time":1518868790,"title":"JMESPath – A query language for JSON","type":"story","url":"http://jmespath.org/"}
{"by":"LinuxBender","descendants":39,"id":18406684,"kids":[18410291,18409498,18409433,18409989,18408813,18410535,18411671,18408155,18410575],"score":70,"time":1541689525,"title":"The Lounge – Modern cross-platform, self-hosted web IRC client","type":"story","url":"https://github.com/thelounge/thelounge"}
{"by":"jgresty","id":18409989,"kids":[18410320,18410497,18410802,18410033,18410030,18411492],"parent":18406684,"text":"I&#x27;d be interested to know if anyone actually seriously uses something like this. I can&#x27;t imagine there is much crossover in the irc audience and the people who would want to use a web based client. Even less so when you need to self host it.","time":1541710893,"type":"comment"}
{"by":"ahungry","descendants":56,"id":18767592,"kids":[18774888,18774948,18775268,18775371,18776074,18775511,18775230],"score":198,"time":1545888930,"title":"Clojure is Capable","type":"story","url":"http://ahungry.com/blog/2018-12-26-Clojure-is-Capable.html"}
{"by":"lopatin","id":18774888,"kids":[18776215,18775792,18775106,18775304,18775775,18775023,18782677,18776277,18776876,18777502,18775185,18777899],"parent":18767592,"text":"So Clojure and CLJS are amazing. If I were to pick a Lisp for a real world project, Clojure is the obvious pick. The thing is, I&#x27;m curious to hear from people who DO use Lisp in the real world.<p>I would characterize my experience with it as 1: Really fun. 2: Productive on a small scale due to the tooling, interop, libraries, and community being innovative and awesome, and 3: Infinitely flexible, because you know .. it&#x27;s a Lisp. Development becomes like doodling on a piece of paper, like a stream of consciousness.<p>But I ended up choosing Scala for a recent, fairly large, project of mine and I&#x27;m convinced it was the right decision. Without a static type system I would have simply lost a handle on the complexity of the project. And this is while working alone (the case where Lisp traditionally has the upper hand).<p>A few questions for people who use Lisp in production. No need to answer all, just things I&#x27;m curious about:<p>* During refactoring, do you feel more flexible, or less? I can see both sides to the argument. On one hand, static types are more rigid, and getting something to compile during a refactoring can be a pain. Often for the right reasons, but often it&#x27;s due to some annoying technicality in the type system. But once you get there, &quot;if it compiles, it runs&quot; is a cliche that is pretty accurate in my experience. On the other hand, with a dynamic type system, you can slowly evolve a code base and see incremental progress during a refactoring, but I can never get over the dreadful feeling of &quot;what did I forget?&quot;. Has clojure.spec worked out in terms finding bugs during refactoring&#x2F;maintenance and general QA?<p>* Do you make use of the Lispy-ness (Homoionicity, macros, code is data, etc ...) or is it generally an anti-pattern to use these language features in daily development?<p>* Do you wish you had static types? If so, have you tried gradual typing like Typed Clojure? And if you don&#x27;t miss types, why? I remember someone saying of Typed Clojure &quot;We went to Clojure to get away from types!&quot;. And I&#x27;m still trying to understand the mindset.<p>I often have the feeling that I&#x27;m not smart enough to use Lisp. If I had 2x the brain power, I would be able to use macros to conjure up some black magic in 100 lines what would take a mortal 5k in a lesser language. But even if I manage such a feat, I couldn&#x27;t imagine bringing on another developer to that codebase.","time":1545971648,"type":"comment"}
{"by":"myth_drannon","descendants":134,"id":18834945,"kids":[18842078,18842004,18841420,18841707,18841462,18843285,18844148,18841534,18842902,18855087,18842457,18841575,18842949,18842121,18841526,18844310],"score":151,"time":1546729752,"title":"How innovative is Clojure as a Lisp dialect from Lisp expert's perspective?","type":"story","url":"https://www.reddit.com/r/lisp/comments/acid7a/how_innovative_is_clojure_as_a_lisp_dialect_from/"}
{"by":"jlarocco","id":18841707,"kids":[18841781],"parent":18834945,"text":"It&#x27;s kind of a trick question.  Clojure pulled together a bunch of ideas from other languages and packaged them on the JVM.  I&#x27;m not sure any single feature is particularly innovative.<p>Lisp is well known for its ability to adopt ideas from other languages, and most of the important Clojure features (immutable data, transactional memory, etc.) were already available for Common Lisp and Scheme, either built-in or as libraries.<p>My guess is that most Clojure users came from Java rather than another Lisp.  Moving from Java is an obvious win (IMO), but as a CL user I don&#x27;t see much reason to use Clojure.","time":1546820529,"type":"comment"}
{"by":"xiaq","id":18841781,"kids":[18842018,18841817],"parent":18841707,"text":"Scheme and CL have immutable data structures, but not persistent data structures.","time":1546821284,"type":"comment"}
{"by":"jlarocco","id":18841817,"kids":[18842012],"parent":18841781,"text":"Not built-in, but there are libraries.","time":1546821711,"type":"comment"}
{"by":"drcode","id":18842012,"kids":[18842024,18842131,18842163],"parent":18841817,"text":"But afaik most immutable,  persistent data structure libraries in other lisps either (1) had poor performance or (2) were developed after clojure and borrowed from clojure.","time":1546824197,"type":"comment"}
{"by":"chrisseaton","id":18842024,"kids":[18842694,18842046,18842274],"parent":18842012,"text":"Isn&#x27;t changing the head of a Lisp lisp by referring to the same tail from a new head an example of a persistent data structure?","time":1546824361,"type":"comment"}
{"by":"wooby","id":18842694,"kids":[18843888,18843232,18844415],"parent":18842024,"text":"Strictly speaking: yes. But whether conses (aka pairs), lists, or other derivative structures support pervasive FP in a language is probably most influenced by whether conses are mutable or not.<p>In Common Lisp, they are. In Scheme, they are not.<p>Mutable conses are useful because at least because values can be accumulated in a list from the end by retaining and mutating the tail.<p>However, the presence of mutable conses detracts from a language&#x27;s ability to support FP, since it must be done by convention and with much copying.<p>I see Clojure&#x27;s innovation in this area not in the fact that its lists are immutable (Scheme did this already) but in the fact that its lists are immutable <i>and</i> there&#x27;s never a need to mutate the tail, because lazy sequences are supported throughout the language. The icing on the top of the story is that concrete lists and lazy sequences both inhabit the &quot;Seq abstraction&quot;, and so don&#x27;t require different APIs most of the time.<p>Of course, I&#x27;m pretty sure lazy sequences existed before CL was standardized (they&#x27;re in SICP), but I can imagine how the designers would have preferred a simple, well-known tool (mutable conses) over admitting a whole other sequence abstraction. Plus, immutable conses would have been a breaking change.<p>So, it&#x27;s not that anything that Clojure does with regard to lists couldn&#x27;t have been done before, just that it wasn&#x27;t -- while also being packaged in a vehicle that was wildly compelling for many other unrelated reasons.","time":1546833865,"type":"comment"}
{"by":"fiddlerwoaroof","id":18843232,"kids":[18843341],"parent":18842694,"text":"Scheme&#x27;s conses are mutable: r7rs (and the previous standards) define set-car! and set-cdr! to mutate the parts of the conses.  One of the reasons why Racket is not a Scheme is that Racket&#x27;s conses are immutable.","time":1546842568,"type":"comment"}
{"by":"DyslexicAtheist","descendants":22,"id":19270886,"kids":[19271668,19272504,19271236,19271599,19271706,19276508,19274065,19278772,19277983,19271294],"score":183,"time":1551357205,"title":"Let’s LISP like it’s 1959 [video]","type":"story","url":"https://www.youtube.com/watch?v=hGY3uBHVVr4"}
{"by":"soheilpro","descendants":120,"id":20245913,"kids":[20246727,20246266,20246876,20249007,20248618,20247941,20246729,20248602,20247638,20246319,20249938,20248848,20249203,20246966,20246478,20249935,20248201,20248099,20249569,20249020,20246544,20282434,20246904,20246744,20246195,20248159,20248588,20246415,20246865,20247653,20254172,20246752,20249206,20248038,20247428,20247864,20248431,20247524,20246470,20246316],"score":388,"time":1561147810,"title":"Show HN: Catj – A new way to display JSON files","type":"story","url":"https://github.com/soheilpro/catj"}
{"by":"avidal","id":20246266,"kids":[20246309,20246785,20247828,20246536,20248056],"parent":20245913,"text":"Have you seen gron[0]? It&#x27;s similar: flattens JSON documents to make them easily greppable. But it also can revert (ie, ungron) so you can pipe json to gron, grep -v to remove some data, then ungron to get it back to json.<p>[0] <a href=\"https:&#x2F;&#x2F;github.com&#x2F;tomnomnom&#x2F;gron\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;tomnomnom&#x2F;gron</a>","time":1561150764,"type":"comment"}
{"by":"register","descendants":29,"id":21535165,"kids":[21567163,21564842,21564490,21564206,21564771,21564406,21565231,21564102,21565156,21565594,21564779],"score":68,"time":1573738008,"title":"PAIP: Run Common Lisp in Browser?","type":"story","url":"https://github.com/norvig/paip-lisp/issues/10"}
{"by":"rwmj","descendants":136,"id":22065632,"kids":[22066501,22066376,22066091,22066649,22066466,22066617,22066417,22067146,22065888,22067168,22066151,22067460,22067155,22066636,22067301,22066049,22066223,22066096,22066264],"score":210,"time":1579190046,"title":"Parachuting for Charity: A 5-year audit (1999)","type":"story","url":"https://www.ncbi.nlm.nih.gov/pubmed/10476298"}
{"by":"braythwayt","id":22066501,"kids":[22067438,22067326,22068055,22067376,22067817,22066804,22067395,22068229,22068292,22067506,22067975,22075324,22067101,22068193],"parent":22065632,"text":"Some years ago I organized some bridge* events for charity. It was as simple as selecting a worthy cause (a children’s hospital), signing an agreement that we were going to turn over the funds, collecting the funds, and handing them over.<p>These were a minuscule success, and I later thought that a “fun run” would be a good way to raise some money. I asked around about how to organize such things, and I was connected to a firm that organized these things as a service.<p>They took me to a nice lunch, which I thought was a bad sign. “Never buy anything in a room with a chandelier,” is the old saying, and while there was no chandelier in the restaurant, the metaphor was nevertheless on point.<p>When I finally got the actual details of how the run would operate, I realized that the firm’s fees would greatly exceed the amount of money that would end up going to the charity.<p>I speculate that the “market” for these services are people who want to buy some respectability. Had I gone though with the deal and the run was a success, everyone would think I was a nice person doing nice things for people in need, even if the actual numbers would show that I was a nice person doing nice things for a service company’s revenues.<p>N=1, of course, but I have had an extremely cynical view of charity events ever since. There appears to be an entire industry built around siphoning away 90%-99% of every dollar adjacent to charity.<p>———<p>* Bridge the card game, not the BASE-jumping location.","time":1579194630,"type":"comment"}
{"by":"todsacerdoti","descendants":368,"id":22737612,"kids":[22738221,22738795,22738176,22738082,22738824,22738438,22738068,22738335,22738306,22738111,22740209,22738457,22738799,22739847,22739740,22741167,22738036,22745013,22738316,22738336,22741595,22744636,22738539,22745955,22740643,22741778,22738105,22738109,22753106,22739927,22739502,22741836,22738732,22738367,22738020,22741228,22739321,22738076,22738748,22738194,22738098,22738712,22738150],"score":337,"time":1585663454,"title":"“C is how the computer works” is a dangerous mindset for C programmers","type":"story","url":"https://words.steveklabnik.com/c-is-how-the-computer-works-is-a-dangerous-mindset-for-c-programmers"}
{"by":"register","descendants":27,"id":22907138,"kids":[22914379,22911772,22912853],"score":62,"time":1587211532,"title":"JACL: JavaScript Assisted Common Lisp","type":"story","url":"https://tailrecursion.com/JACL/"}
{"by":"lgessler","id":22912853,"kids":[22913534],"parent":22907138,"text":"When I saw this I thought &quot;I wonder why someone would make a JS-hosted Lisp when ClojureScript exists and is used widely.&quot; I then found that the author has had significant involvement in the Clojure community, which piqued my curiosity even more. Alan, if you&#x27;re reading this, I&#x27;d be interested to hear about why you&#x27;re pursuing this project!","time":1587261921,"type":"comment"}
{"by":"wooby","id":22913534,"kids":[22914397,22916063],"parent":22912853,"text":"Hi, thanks for your interest. The main thing I&#x27;m after is a &quot;residential&quot; [1] Lisp development system, where applications and tools co-evolve in the same environment.<p>Most contemporary compile-to-JS languages <i>target</i> the browser, but do not <i>inhabit</i> it. I&#x27;m excited about a system that encourages apps and tools to evolve organically together, instead of tools developing separately from applications, which is the status quo.<p>Other than that, Common Lisp has some really interesting capabilities relative to ClojureScript, and is also fun!<p>1:<a href=\"http:&#x2F;&#x2F;bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;interlisp&#x2F;Interlisp_Reference_Manual_Oct_1983.pdf\" rel=\"nofollow\">http:&#x2F;&#x2F;bitsavers.org&#x2F;pdf&#x2F;xerox&#x2F;interlisp&#x2F;Interlisp_Reference...</a> section 1.2","time":1587270802,"type":"comment"}
{"by":"didibus","id":22914397,"kids":[22916723],"parent":22913534,"text":"I do think Common Lisp is fun and different form Clojure, and it&#x27;s cool to see it in the browser as well, and I totally support that effort.<p>But, with regards to your description of inhabiting the browser, what would differ with JACL say compared to self-hosted ClojureScript?","time":1587284801,"type":"comment"}
{"by":"mark_l_watson","id":22916063,"kids":[22918727],"parent":22913534,"text":"Sounds good to me!<p>Are you thinking of something like Amber Smalltalk? Amber is a complete development system, well worth experimenting with if you have not already done so. Good ideas should be shared.","time":1587305795,"type":"comment"}
{"by":"wooby","id":22916723,"kids":[22921171],"parent":22914397,"text":"The JACL reader is asynchronous, and so JACL can read characters from external sources (in-browser REPL, DevTools connection, websocket, experimental File API) without blocking the event loop and without relying on an external tool. JACL app artifacts will be created by dumping the Lisp image using a Lisp function.<p>Other than these technical differences, there seems to be a difference in &quot;philosophy of use&quot;. I have the sense that the ClojureScript project does not emphasize or particularly support the idea of using self-hosted ClojureScript to build web apps.","time":1587312201,"type":"comment"}
{"by":"didibus","id":22921171,"kids":[22947134],"parent":22916723,"text":"Hum, I see. Yes, the maintainers of ClojureScript believe the bundle sizes would be too big if you always had to include the compiler with the APP. (also because the Google Closure compiler JS implementation is not as full featured as the Java one)<p>But it sounds in your case, maybe that can be removed before shipping? But used while developing?","time":1587358067,"type":"comment"}
{"by":"dsr12","descendants":183,"id":22961296,"kids":[22970454,22965443,22969306,22965449,22969083,22965360,22969018,22967985,22965387,22967158,22965491,22965417,22969312,22965423,22965366,22965464,22965386,22965418,22970256,22968290,22965336,22965436,22971104,22965502,22968008,22965441,22970501,22972437,22969845,22965532,22968084,22965372,22968866,22971991,22965497,22971410],"score":130,"time":1587675435,"title":"I’ve made a conscious effort to stop apologizing for bugs in my code","type":"story","url":"https://blog.danslimmon.com/2019/08/02/stop-apologizing-for-bugs"}
{"by":"freediver","id":22968290,"kids":[22968756,22968658,22972192],"parent":22961296,"text":"Bugs are the responsibility of the process that brought them there. In most cases it is shared responsibility.<p>Why doesn&#x27;t your dentist mess up 1 out of 5 interventions? They have gone through years of strict training and there are giant liabilities in place.<p>In development? A lot of self-taught developers, who can always jump to a next gig because of never-ending demand. This sets up the scene for a totally different scenario - never-ending stream of bugs.<p>If you want your team to have less bugs, then as a manager make sure you have a process in place that optimizes for that. Start with your hiring process and add requirements for code quality practices. Then build a process that includes strict commit guidelines, documentation, code reviews and QA process. Most importantly, add time to estimates that ensures all of the above is checked properly. After all that is in place, define in a clear way some sort of liability for bugs.<p>Your dentist goes through all of that, why not your developers doing arguably equally important work?","time":1587738573,"type":"comment"}
{"by":"sohkamyung","descendants":150,"id":24209948,"kids":[24210196,24210082,24210208,24211149,24210523,24210864,24210601,24210090,24210785,24212882,24211898,24210691,24210109,24210828,24210999,24210949,24212196,24214714,24210987,24210506,24210169],"score":125,"time":1597842320,"title":"The antibiotic paradox: why companies can’t afford to create life-saving drugs","type":"story","url":"https://www.nature.com/articles/d41586-020-02418-x"}
{"by":"wooby","id":24210828,"kids":[24210997,24211317,24212157],"parent":24209948,"text":"&quot;Antibiotics present an enduring economic puzzle. These drugs changed the world. Yet despite their unique power, the free market doesn’t value them.&quot;<p>No. The free market -- people -- values these drugs. If there wasn&#x27;t demand, this article wouldn&#x27;t have been written. The problem is that drugs are too expensive to bring to market for their developers to profit, and that the single greatest cost is often FDA approval.<p>The article implies that the solution is to funnel more BARDA grants to companies in order to make drug development profitable. This amounts to using taxpayer money to help private companies pay government fees, with lots of bureaucratic overhead (employees, forms, computer systems, buildings) at each end of the transaction. This is dramatically suboptimal.<p>Instead of this, the FDA process should be cheaper, or the FDA itself should be privatized, and operate as an entity like Consumer Reports or any other review organization. Government need only be involved with prosecuting fake producers. The consumer requires only access to information, and assurances that a substance they bought is the same they have researched.<p>Paying government expenses with taxes is an unsustainable Ponzi scheme, and takes us further away from a real solution.","time":1597848011,"type":"comment"}
{"by":"digdugdirk","id":24210997,"kids":[24211437,24213445,24211422],"parent":24210828,"text":"The FDA approval process ensures both that drugs perform an intended function, and that drugs don&#x27;t harm people. Part of the expense of this process is making sure that both of these aspects are performed to sufficient standards.<p>It sounds like your suggestion would lower the bar for both these aspects, and only catch issues after the fact - something which could have fatal consequences.<p>I&#x27;m curious how you would see this playing out in a positive light, particularly given the money involved and the incentives to game the system.","time":1597848938,"type":"comment"}
{"by":"michaniskin","id":24211422,"kids":[24212492,24211854],"parent":24210997,"text":"Drugs are not somehow different from any other type of product. All products have some level of risk to the consumer, and may or may not do what they&#x27;re advertised to do.<p><pre><code>    The Car &amp; Truck Administration (CTA) approval process\n    ensures both that cars and trucks perform an intended\n    function, and that cars and trucks don&#x27;t harm people.\n    Part of the expense of this process is making sure that\n    both of these aspects are performed to sufficient\n    standards.\n</code></pre>\nAnd yet, we don&#x27;t seem to need an FDA of cars and trucks costing auto manufacturers $1.4B to develop a new car, and our cars don&#x27;t explode and kill us. The reason? A car maker who makes unsafe cars goes out of business. Consider Ralph Nader&#x27;s &quot;Unsafe At Any Speed&quot; did to the Corvair corporation.","time":1597851003,"type":"comment"}
{"by":"wooby","id":24211437,"kids":[24212027,24212220],"parent":24210997,"text":"Pharmaceutical companies have every incentive to make their drugs safe, because if their drugs hurt people, the drugs will not sell.<p>Many drugs have passed FDA approval but later killed people. If the FDA were a private company, it might have gone out of business. But as a government monopoly, it&#x27;s very hard to stop paying for. Between pharma companies, the government, and individual patients, the FDA has the least stake in the health of a particular patient.<p>UL is an example of a non-government organization that offers product safety certification. You see the UL seal on most consumer electric appliances. Imagine an FDA seal.<p>Drugs are not magical or special. They are a product like any other, and it is the consumer&#x27;s right to choose a doctor, and for that doctor to choose proper medication. We regularly choose the best mechanics, plumbers, and other specialists we can find, and their reputation is partly a function of the type and quality of the parts and tools they use.","time":1597851073,"type":"comment"}
{"by":"sithadmin","id":24211854,"kids":[24212155],"parent":24211422,"text":"Uh, what? In the US, the NHTSA and DOT enforce rather rigorous safety standards, and this requires automakers to front relatively expensive R&amp;D and certification costs. It&#x27;s a huge (and given the history of motor vehicle safety, necessary) barrier to market entry.","time":1597852854,"type":"comment"}
{"by":"sithadmin","id":24212027,"kids":[24213781],"parent":24211437,"text":"If you want to see where this kind of free-wheeling approach to cGMP certification and product quality gets you - just take a look at the developing world, where big-name generics manufacturers knowingly dump subpar-quality (or even outright dangerous or ineffective) drugs on the market with impunity. This leads to all sorts of unsavory outcomes, and puts healthcare providers in the position of resorting to incredibly unscientific approaches to dosage management (it&#x27;s not uncommon for physicians in such cases to recommend dosages many times in excess of what&#x27;s recommended due to extremely poor active ingredient potency, based mainly on strictly qualitative feedback from patients). It effectively reduces the pharmaceutical market to a guessing game. The quality issues seen in the developing world are also directly linked to antibiotics usage practices that directly contribute to development of resistant strains of bacteria.","time":1597853488,"type":"comment"}
{"by":"wooby","id":24212155,"kids":[24212253],"parent":24211854,"text":"Like the FDA, and as monopolies, NHTSA and DOT have much less stake in the safety of a consumer than do either car producers and drivers.<p>Personally, I trust myself not to buy a car that I&#x27;ve heard explodes. You may not, and I respect that. But I see no reason to pay for a service that assures you when I myself require no such assurance.<p>If NHTSA and DOT operated like UL, products that were less safe probably wouldn&#x27;t have NHTSA or DOT seals, and those products would be much cheaper. People willing to trade safety for cost would be able to own a car. People willing to pay for safety would pay more. Because of the lower barrier to production, there would be probably much greater choice in car buying, and cars would be universally cheaper. In either case, the choice would rest with individual consumers, who know best their situation and risk tolerance.","time":1597854038,"type":"comment"}
{"by":"orev","id":24212157,"kids":[24212860],"parent":24210828,"text":"You start going in the right direction by talking about the cost of the FDA process, but then veer off into the weeds with a solution from extreme Libertarianism. History has shown over and over and over again that this type of hands-off approach and “let the consumer decide” mumbo jumbo absolutely does not work. It’s just as debunked as the trickle down economics theories. They have been tried so many times and failed every time.<p>If I’m in the ER am I supposed to stop and check every single drug they give me before having emergency surgery? Is the hospital? Would we give the right for every citizen in the country to inspect the premises of every drug manufacturer? So now anyone must be allowed to walk into any factory whenever they want to see what’s going on? How should any layperson be expected to have the knowledge and expertise to even perform an evaluation?<p>I can imagine some kind of review site where people post 1-star reviews like “took drugs, died anyway”. How many bad reviews&#x2F;people dead would you say should be enough for a company to be removed?","time":1597854041,"type":"comment"}
{"by":"sithadmin","id":24212253,"kids":[24213376],"parent":24212155,"text":"You&#x27;re completely ignoring the fact that consumer choices about automobile safety have externalities beyond the buyer. Sure, maybe you and I care enough about auto safety standards to buy a vehicle that isn&#x27;t dangerous, but I don&#x27;t trust other consumers to necessarily do the same thing. I don&#x27;t want to be sharing the road with some corner-cutting jalopy that&#x27;s likely to throw a tire through my windshield while we&#x27;re passing each other on the highway, and I definitely don&#x27;t want a market that permits such low-quality products to be operated in public spaces.","time":1597854447,"type":"comment"}
{"by":"wooby","id":24212860,"kids":[24214538,24213200],"parent":24212157,"text":"If you have any choice in how you are treated, you will make your best judgement based on information available to you, such as by the recommendation of a friend, or a Yelp review. This is the same process you use to make any important purchase.<p>Before you have work done on your car, do you fly to China to inspect the part factory? You don&#x27;t, because the relatively low risk you perceive that these parts will fail doesn&#x27;t justify the expense of travel.<p>Do you perceive low risk because a government agency put a stamp of approval on the part? Probably not. Most likely, your risk assessment is based on information you&#x27;ve gathered about the final product, the auto shop -- that it is well-reviewed, and that your mechanic seems knowledgeable.<p>Furthermore, <i>only you</i> really know your exact needs. An expensive high-performance car part might provide you some marginal benefit, but not so much benefit that you&#x27;re willing to buy that part at the expense of something else that&#x27;s important to you, like your electric bill. A race car or Uber driver might make a different decision and choose a different part to suit their needs.<p>Medicine is like car parts. Bad ones can kill. But through the free market, a system of feedback is established that tends toward a wider variety, and higher quality, of parts overall.<p>When politicians prioritize some drugs over others, they interfere with this system, and money is spent on drugs and research that people don&#x27;t necessarily want or need. You can imagine race car drivers getting together and lobbying politicians to subsidize high performance parts. Because these subsidies are funded by taxes, money is effectively taken from individuals who might prefer a different part. Now, those individuals who are not race car drivers have less purchasing power, and fewer choices overall.<p>You&#x27;re correct that this is more or less the libertarian perspective, but I find it in no way extreme. I find it principled, direct, and humane. In our society, where nearly everyone has a smart phone and may conduct research at any time, I can&#x27;t imagine a more effective system. I&#x27;m sure it was much easier to criticize the free market in a time when people couldn&#x27;t read, or didn&#x27;t have a global information database accessible on their person at every waking moment.","time":1597857087,"type":"comment"}
{"by":"sithadmin","id":24213200,"kids":[24213432],"parent":24212860,"text":"&gt;Medicine is like car parts<p>Creating medicines is nothing like creating car parts. At all. There&#x27;s not a single aspect of drug discovery, manufacturing, or distribution logistics that in any way resembles something as crude as producing unregulated widgets for automobiles.<p>You&#x27;re simply highlighting how poorly you understand the pharmaceutical industry with this line of argumentation.","time":1597858230,"type":"comment"}
{"by":"wooby","id":24213432,"kids":[24215776],"parent":24213200,"text":"I mean only to say that they are both products, and that they may both result in injury or death if they are produced irresponsibly.<p>Would you not agree with those two points of comparison?","time":1597859139,"type":"comment"}
{"by":"tetrometal","id":24213445,"kids":[24217931],"parent":24210997,"text":"&gt; It sounds like your suggestion would lower the bar for both these aspects, and only catch issues after the fact - something which could have fatal consequences.<p>The other side of this is:<p>1) Since the FDA is a monopoly, it&#x27;s entirely possible (and probably demonstrable) that they&#x27;ve set the <i>wrong</i> bars, which could have fatal consequences.<p>2) It&#x27;s arguable that the costs imposed by the FDA may have fatal consequences themselves, in the form we&#x27;re seeing today, where life-saving drugs (antibiotics, in this case) can&#x27;t be developed because of them.<p>I&#x27;m interested in hearing your response to the above two points. I&#x27;d also be interested to hear what you&#x27;d think of a &quot;de-fanged&quot; FDA wherein they are able to approve or disapprove medications, but are not able to <i>enforce</i> those decisions. People would be allowed to do with their own bodies as they please, but they&#x27;d be able to reference the FDA to make those decisions.","time":1597859188,"type":"comment"}
{"by":"jcranmer","id":24214538,"kids":[24215041],"parent":24212860,"text":"Man, if only there were some way we could run an experiment where we could see how the industry would react if drugs were not required to be vouched for by a regulatory agency.<p>Wait, there is: the health supplement industry. You know, the people who can&#x27;t be bothered to even put in their claimed active ingredients because it&#x27;s all placebo anyways?<p>The FDA was set up literally because of these snake oil situations, and modern evidence suggests that snake oil still thrives wherever the FDA is banned from setting foot.","time":1597863215,"type":"comment"}
{"by":"wooby","id":24215041,"kids":[24215702],"parent":24214538,"text":"What upsets you about other people using their own money to buy placebos, other than the fact that you can&#x27;t understand why? At this very moment, millions of people across the globe are buying things for themselves you would never buy for yourself.<p>Has it occurred to you that the health supplement buyer is in a much better position to decide how to allocate their money than you are? You have limited, aggregate information; they have a total view of their own finances and life situation, and are willing to devote their own time to research their personal decision to buy. For example, they might discover through research that a supplement generally regarded as a placebo has a benefit under circumstances known only to the them.<p>When you limit the choices of others, based only on general information or your personal perspective, you limit the set of choices others may take. If you do this long enough, you might find yourself some day prohibited from buying something you desperately need, because your situation is an exception to some general rule that nobody ever considered.<p>The FDA might have made sense at a time when most people were illiterate and information was hard to come by. Now that most (at least in the US) are literate, and own smartphones, taking away choices for the benefit of some hypothetical illiterate serves only to worsen the life of the average person.","time":1597865213,"type":"comment"}
{"by":"jcranmer","id":24215702,"kids":[24215986,24215970],"parent":24215041,"text":"&gt; The FDA might have made sense at a time when most people were illiterate and information was hard to come by.<p>The FDA was established at a time when virtually the entire population of the US was literate [1]. While I don&#x27;t have the heart to look up statistics, I suspect that the US at the time had the highest (or at least among the highest) newspaper penetration of any country, and that newspaper penetration would have been quite higher than today. Public libraries and schools would have been in full flourish too, by that time. My grandparents grew up on farms on the edges of the High Plains--where you would expect to find the most bumpkin of country bumpkins--and illiterate and ignorant they were not.<p>For someone whose argument is that the federal agency is necessary only because of public ignorance, you sure seem to be modelling that ignorance you think no longer exists. The problem with your argument is that you neglect to reason that both information <i>and</i> misinformation are incredibly easy to come by, and most people are unwilling or unable to differentiate between them.<p>[1] It is worth pointing out that, if you measure literacy by the ability to read in your native language, Western Europe has been majority literate for over a millennium.","time":1597868037,"type":"comment"}
{"by":"sithadmin","id":24215776,"kids":[24217082],"parent":24213432,"text":"I think it&#x27;s an inane and inept comparison. The manner in which defects arise in each type of product, and the manner in which failure modes manifest are so different as to be incomparable.","time":1597868323,"type":"comment"}
{"by":"capableweb","descendants":91,"id":25006277,"kids":[25006837,25008733,25007883,25008609,25006859,25007300,25008077,25007450,25007134,25007387,25008169,25014900,25011938,25007937,25008640,25009122,25006944,25009079,25011231,25007733,25007957,25007339,25008051,25007349,25008007,25008596,25008116,25012192],"score":366,"time":1604654507,"title":"Gron – Make JSON Greppable","type":"story","url":"https://github.com/tomnomnom/gron"}
{"by":"kungfudoi","descendants":161,"id":25211212,"kids":[25212402,25212719,25212415,25212461,25212197,25212439,25213402,25213235,25211982,25212008,25212074,25212193,25211877,25212898,25212390,25213018,25212472,25212510],"score":124,"time":1606322941,"title":"Doctors and Nurses Are Running on Empty","type":"story","url":"https://www.nytimes.com/2020/11/25/health/doctors-nurses-covid-stress.html"}
{"by":"tootahe45","dead":true,"id":25212074,"kids":[25212206,25212121,25212104,25212173,25212209,25212211,25212090],"parent":25211212,"text":"Nobody is forcing them to work. My guess is that being massively overpaid for what they do makes it worth it for them, otherwise we would&#x27;ve seen mass walkouts.","time":1606327119,"type":"comment"}
{"by":"Red_Leaves_Flyy","id":25212121,"kids":[25212241],"parent":25212074,"text":"Dedication to, empathy for the humans that would otherwise die is the more likely conclusion.<p>Most people aren&#x27;t solely motivated by greed.<p>Many nurses have actually had their pay cut during this pandemic and have kept slaving away in garbage bags and cloth masks despite their wholesale mistreatment.","time":1606327351,"type":"comment"}
{"by":"woahAcademia","dead":true,"id":25212241,"kids":[25212526,25212360,25212540,25212362,25212289,25212692,25212736],"parent":25212121,"text":"Yeah it&#x27;s sad people feel pains.<p>I&#x27;m also unhappy that those same people have used Regulatory capture to increase their wages at the expense of public health.<p>Deregulate medical and there will be less burnout, but the pay will be cut in half.","time":1606327818,"type":"comment"}
{"by":"AlexandrB","id":25212289,"kids":[25212315],"parent":25212241,"text":"Healthcare is already under-regulated. That&#x27;s how shit like homeopathy keeps showing up on pharmacy shelves. I&#x27;d prefer to be treated by an actual doctor, not an alternative health practitioner posing as one thanks to deregulation.","time":1606328003,"type":"comment"}
{"by":"woahAcademia","id":25212315,"kids":[25212424,25212549],"parent":25212289,"text":"Alternative healthcare? Let me remind you of the opioid epidemic entirely caused by physicians.<p>To buy dandruff medicine you need to get approval from a Physician, a pharmacist, and pharmacy. Not to mention the actual product regulations.<p>We&#x27;ve had 140 years of regulation. It was to protect healthcare workers at our expense.","time":1606328163,"type":"comment"}
{"by":"AlexandrB","id":25212424,"kids":[25213086],"parent":25212315,"text":"The opioid epidemic was caused the the corrupting influence of money in the medical profession. And your solution is to remove the only countervailing force - regulation - and turn the whole thing over to money-driven incentives?<p>I&#x27;m sure you&#x27;re right, and without regulation doctors would be paid less. They&#x27;d make it up in direct sponsorships from pharmaceutical companies though.","time":1606328666,"type":"comment"}
{"by":"DanBC","id":25212526,"kids":[25212854,25212716],"parent":25212241,"text":"&gt; Regulatory capture<p>Next time you need surgery give me a call. I don&#x27;t have any relevant qualifications; I have no training; I don&#x27;t have a professional registration; I don&#x27;t have insurance; but yeah sure I can watch a few Youtube videos and give it a go.","time":1606329066,"type":"comment"}
{"by":"wooby","id":25212854,"kids":[25213165],"parent":25212526,"text":"If you have good Yelp reviews or if I could speak with happy patients I would consider taking you up on it. Seriously.<p>I&#x27;ve received enough terrible medical and dental care from various &quot;trained&quot; and &quot;registered&quot; practitioners to value referrals much more than any credential or certification.<p>If you yourself truly believe that a professional registration is satisfactory, then I trust you practice what you preach by never researching doctor reviews. To do so would invalidate your argument.","time":1606330539,"type":"comment"}
{"by":"wooby","id":25213086,"kids":[25218839],"parent":25212424,"text":"Arguably, regulatory forces <i>created</i> the environment in which money could be used to so effectively manipulate doctors at the cost of patient outcomes. If doctors stood to lose business when they lost patients -- instead of fearing only for their license being revoked -- perhaps they&#x27;d be incentivized more to treat patients well than to engage in opioid schemes.","time":1606331859,"type":"comment"}
{"by":"earthtolazlo","id":25213165,"kids":[25213735],"parent":25212854,"text":"Uber for surgery! Move fast and break people. I swear HN is a self-parody sometimes.","time":1606332319,"type":"comment"}
{"by":"Red_Leaves_Flyy","id":25218839,"kids":[25221146],"parent":25213086,"text":"Crazy thought:<p>Sometimes well intentioned regulation gets it wrong. Sometimes it&#x27;s perverted in Congress. Sometimes it&#x27;s designed to fail. It is congresses responsibility to police themselves as much as it is the people&#x27;s. When regulation fails fix the regulation. That&#x27;s hard when Republicans are dying on the hill of Government Bad.","time":1606388412,"type":"comment"}
{"by":"michaniskin","descendants":45,"id":28022363,"kids":[28023686,28022507,28024428],"score":7,"time":1627774393,"title":"The U.S. Government Can Nationalize the Bitcoin Network at Any Time","type":"story","url":"https://pastebin.com/7edhybHS"}
{"by":"theamk","id":28023686,"kids":[28023814,28027710],"parent":28022363,"text":"This seems highly inefficient - why give money to random people (many of them non-US citizens) when you don’t have to? Here is a much cheaper plan which grants US a lot of control over bitcoins:<p>- Some US government agency publishes “bad bitcoin address” list - this is initially a list of addresses of clearly evil people, like ransomware attackers.<p>- The new law is passed, requiring all US-based bitcoin firms to refuse any transactions that derive, in whole or in part, from “bad bitcoin” list. And KYC laws require passing identities of people who use “bad bitcoins” to FBI. All exchanges have to follow that rule or be fined.<p>- This will kill things like mixers (who wants a part of “bad bitcoin”), anonymous exchanges (if you receive money from stranger and it was “bad bitcoin”, FBI will visit you if it ever touches a legal exchange. Not a very pleasant situation).<p>- This will be US only, but it will propagate to other countries. Let’s say you are in Russia, and you are accepting bitcoins. At some moment in the future, you may want to buy a new iPhone using all those coins. But if they are on “bad bitcoin” list, you won’t be able to do so! So it makes a fill economic sense to refuse bad bitcoins, or maybe accept them at a heavy discount.<p>- Big players, such as investment funds or major payment processors, are almost unaffected. After all, only 0.001% of bitcoins are bad, and losing a few potential customers due to regulations is common in financial industry.<p>- Eventually everyone gets used to “bad bitcoin” system, and the US starts putting more addresses in it. “Terrorist activities”, “embargoed countries” and so on.<p>And that’s how US can get a fair amount of control over bitcoins, and without having to buy entire thing out!","time":1627790245,"type":"comment"}
{"by":"mikeblackson","id":28027710,"kids":[28032708,28027853],"parent":28023686,"text":"This will just fuel the rise of background mixing and decentralized exchanges. Many Bitcoin holders and devs will consider it an honor to make as much of the Bitcoin supply as &quot;dirty&quot; as possible and the community will mostly support it. Layer 2 also further hinders easy tracking of &quot;dirty&quot; addresses&#x2F;transactions.<p>The FBI wants to interact with and attack the 200M+ people that will eventually hold &quot;dirty bitcoin&quot;? Much of whom are non-KYC holders? Good luck accomplishing that with a limited budget and man power.","time":1627836567,"type":"comment"}
{"by":"michaniskin","id":28027853,"kids":[28027934],"parent":28027710,"text":"Exactly. Also the carrot is far more effective and palatable to citizens than the stick. The US government could deploy the attack described in the article under the guise of a stimulus program, with their hands completely clean. No legislation required, the Fed would just need to print a little fiat from the money printer and everyone is happy.<p>The government is happy because their fiat monetary system is secure from any threat crypto poses, bitcoiners are happy because the Fed buys their bitcoin for fiat at a good rate, the miners are happy because they got to sell their assets to the Fed for a sweet pile of fiat.<p>The only people crying is the middle class who bears the burden of all this currency debasement. I think we have more empirical data than we&#x27;d ever need to predict that nobody who matters politically cares about the tears of the middle class.","time":1627837335,"type":"comment"}
{"by":"mikeblackson","id":28027934,"kids":[28028005,28028059],"parent":28027853,"text":"One more thing that&#x27;s overlooked, the nodes control the Bitcoin network, not miners. In the face of a 51% attack, consensus would be reached that banning malicious miners is in the interest of the majority of node owners.<p>They would fork Bitcoin and the Fed would burn a ton of money with very little to show for it. The miners they bribed would pile into the non-Fed controlled fork using the Fed funds they received. The network may actually grow after this kind of attack is successfully sidestepped purely from the Streisand Effect and the corrective action proving what people theorized about the difficulty of censoring the bitcoin network.","time":1627837886,"type":"comment"}
{"by":"michaniskin","id":28028005,"kids":[28028172],"parent":28027934,"text":"But that&#x27;s just turtles all the way down. The Fed can mine that forked chain even more easily than the original one.<p>When one actor has a money printer they can use the permissionless, decentralized nature of the bitcoin network as a weapon. It&#x27;s a vulnerability they can exploit.","time":1627838211,"type":"comment"}
{"by":"mikeblackson","id":28028172,"kids":[28028542,28029041],"parent":28028005,"text":"Regardless of how much money can be printed, no government has enough resources to attack a perpetually moving and atomizing target.<p>As long as governments debase the currency to carry out this attack, they are also continuously creating more reasons for variations of Bitcoin to exist.","time":1627839038,"type":"comment"}
{"by":"michaniskin","id":28028542,"kids":[28032455],"parent":28028172,"text":"This &quot;perpetually moving target&quot; will need funding to operate. The Fed will always be able to afford to lose more money than the private sectors can afford to lose. Remember that the government doesn&#x27;t need infinite resources, they just need <i>more</i> resources than the private sector can muster.<p>This is something the Fed does all the time, this is exactly how they distort the economy to set interest rates and bond yields. They have been 51% attacking the bond markets for decades, and all the bond shorts who thought &quot;they can&#x27;t possibly keep printing at this rate&quot; lost their shirts.","time":1627841557,"type":"comment"}
{"by":"mikeblackson","id":28032455,"kids":[28032886],"parent":28028542,"text":"All these coins are funded by the people that adopt them, funding is not an issue for projects that solve the issues Bitcoin does. These projects exist because there is demand for the solutions they offer, attacking any single network does nothing to limit that demand.<p>I disagree with the 2nd part too, the idea that the Fed does anything tech related with a higher level of competency than the private sector has not been proven to me.<p>The idea that a centralized closed network that&#x27;s severely hampered by operating restrictions can beat a well designed adaptable open network in the long run is a joke.","time":1627873369,"type":"comment"}
{"by":"michaniskin","id":28032886,"kids":[28041728],"parent":28032455,"text":"&gt; funding is not an issue for projects that solve the issues Bitcoin does<p>Funding is far less of an issue for an attacker who has a printing press, and it&#x27;s the relative level of funding that matters. In order to defend against a 51% attack the defender must be able to spend more resources than the attacker. It&#x27;s the &quot;who can afford to lose more money game&quot;, where one side can just print as much money as they need while the other side has to earn every dollar. Are you really betting on the workin&#x27; man here? I wouldn&#x27;t.<p>&gt; attacking any single network does nothing to limit that demand<p>Demonstrating that they can afford a 51% attack on any blockchain they want to attack will affect the price of all crypto. Investors will need to discount that risk. This will surely affect demand.<p>&gt; The idea that a centralized closed network that&#x27;s severely hampered by operating restrictions can beat a well designed adaptable open network in the long run is a joke.<p>Nobody is claiming that the Fed&#x27;s intention is to compete with bitcoin. They only need to attack it and destroy it. Remember, they want people to be stuck using their fiat currency, they don&#x27;t want to make a competing type of sound money.","time":1627878384,"type":"comment"}
{"by":"mikeblackson","id":28041728,"kids":[28041804,28042351],"parent":28032886,"text":"They are competing with Bitcoin whether they like it or not. CBDCs are a result of Bitcoin applying pressure to central banks. As long as the money offered by central banks is censorable and heavily debased, they will be in this battle.<p>And no, they can&#x27;t destroy something that can be forked and updated an infinite number of times. Not sure why you don&#x27;t understand that its trivially easy to copy Bitcoin and build an alt. As long as that is the case, Bitcoin cannot be defeated.<p>If the current POW mechanism is repeatedly attacked and defeated it will adapt or projects will move to another consensus method. This is an arms race that CBs cannot win and they will burn a lot of money in process of losing, which is a beautiful thing.<p>Realize a successful 51% attack is just the beginning of the war, not the end of it.<p>*All the arguments you put forth so far are defeated by this simple flip of a consensus mechanism switch.","time":1627933723,"type":"comment"}
{"by":"lom","descendants":155,"id":34716924,"kids":[34720463,34719091,34719171,34718462,34718642,34721574,34718247,34724770,34718985,34722501,34719890,34718215,34719190,34718238,34724499,34720214,34723287,34718467,34725440,34722587,34719886,34719211,34719449,34723717,34719203,34718582,34724359,34718270,34718509,34720291,34720240,34721036,34720570,34721021,34719011,34718448,34718950,34721007,34719614],"score":501,"time":1675897564,"title":"Photoprism – open-source Google Photos Alternative","type":"story","url":"https://www.photoprism.app/"}
{"by":"nils-m-holm","descendants":104,"id":45037419,"kids":[45068913,45072886,45068299,45071254,45069824,45070906,45071000,45076040,45070447,45037420,45070089,45070495,45071926,45072712,45070199,45071629,45068475,45079898,45069121,45071449,45068230,45073879],"score":372,"time":1756288205,"title":"Lisp from Nothing, Second Edition","type":"story","url":"http://t3x.org/lfn/index.html"}
{"by":"wooby","descendants":1,"id":47141571,"kids":[47141876],"score":1,"time":1771961448,"title":"GridCalc: An RPN Spreadsheet for iOS","type":"story","url":"https://tailrecursion.com/~alan/GridCalc.html"}
{"by":"wooby","descendants":3,"id":47154127,"kids":[47154195],"score":4,"time":1772038450,"title":"GridCalc: An RPN Spreadsheet for iOS","type":"story","url":"https://tailrecursion.com/~alan/GridCalc.html"}
{"by":"wooby","id":47154195,"kids":[47154336],"parent":47154127,"text":"I built GridCalc because spreadsheets on phones feel fundamentally wrong.<p>On desktop, spreadsheets work because you can see formulas, references, and structure all at once. On mobile, that collapses. You’re constantly panning, zooming, tapping small cells, and losing context.<p>RPN (Reverse Polish Notation) removes parentheses and operator precedence by using a stack. Instead of writing = (a + b) * c, you enter a b + c *. The order of operations is explicit and linear.<p>GridCalc combines those ideas: a visible RPN stack with a reference grid.<p>It’s built for quick, ad-hoc modeling on a phone: loan calculations, position sizing, cash flow scenarios, engineering back-of-napkin math.<p>It’s not trying to replace Excel. It’s trying to make mobile calculation feel native instead of cramped.<p>Happy to answer questions about design decisions or implementation.","time":1772038722,"type":"comment"}
{"by":"_rend","id":47154336,"kids":[47154473],"parent":47154195,"text":"This is awesome! The design is slick, and it really does feel right at home on a portable device. Appreciate the work that went into this.<p>Even more so, huge kudos for the performance tuning! The app launches <i>instantly</i>, so much so that I was initially a bit shocked. I&#x27;d forgotten what it feels like to tap a button and have something functional appear on screen with <i>zero</i> delay. When even the simplest apps have loading screens (and even built-in Settings&#x2F;Reminders&#x2F;Notes&#x2F;Phone&#x2F;etc. have a delay), this was really refreshing to see! I legitimately force-quit a bunch of apps on my phone to compare and nothing comes close on cold launch. Great work!","time":1772039414,"type":"comment"}