<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: DavidMcLaughlin</title><link>https://news.ycombinator.com/user?id=DavidMcLaughlin</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 06 May 2026 23:44:56 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=DavidMcLaughlin" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by DavidMcLaughlin in "Meta and YouTube found negligent in landmark social media addiction case"]]></title><description><![CDATA[
<p>A/B testing is very, very different to handing over control of your content to a reward function that optimizes for time spent over any other criteria.<p>We had 10 years+ plus of having products like Facebook, Twitter, YouTube, hell even LinkedIn with a basic content model of "you build your own graph of people who you pull content from" and their job was to show it to you and puts ads in there to fund the whole enterprise. If I decided to follow harmful content? That was a pact between me and the content creator, and YouTube was nothing more than a pipe the content flowed through. They were able to build multi-billion dollar businesses off of this. That's really important, this was enormously profitable. But then the problem happened that people's graphs weren't interesting enough, and sometimes they'd go on the thing and there were no new posts from people they followed, and this was leaving money on the table. So they took care of that problem by handing over control of the feed to the reward function.<p>More accurately, especially for Meta products: they completely took control away from you. You didn't even have the option to retain the old, chronological social graph feed anymore. And it was ludicrously profitable. So now the laws of capitalism dictate that everyone else has to follow suit. I now have extensions on my browser for Instagram and YouTube to disable content from anything I don't follow - because I still find these apps useful for that one original purpose they had when they blew up and became mainstream. Why are these browser extensions? Why can't I choose to not see this stuff in their apps? That's the major regulation hole that led to this lawsuit, imo.<p>It's the same thing you see with people blaming smartphones for brainrot. We've had 15 to 20 years of smartphones with more or less the same capabilities as they have today and for the vast majority of that time my phone didn't make books less interesting or make me struggle to do chores or manage my time. For a full decade or more I saw my phone as a net positive in my life, was proud to work for Twitter and generally saw technology like the Louis CK bit about the miracle of using a smartphone connected to WiFI on an airplane. But in the last five years or so, things have noticeably and increasingly gone to shit. Brainrot is a thing. All my real life friends who are the opposite of terminally online or technical are talking about it. I don't use TikTok but it seems like that is absolutely annihilating attention spans. The topic of conversation over drinks is how we've collectively self-diagnosed with ADHD and struggle with all kinds of executive function.. but also are old enough to remember a time when none of this existed. Complete normies are reading Dopamine Nation and listening to Andrew Huberman trying to free themselves.<p>I don't know what the exact solution is, but there's at least a simpler time we can point to when we all had smartphones and we were all connected via platforms and we all posted and consumed stupid pictures of each other and it wasn't.... _this_.</p>
]]></description><pubDate>Thu, 26 Mar 2026 13:47:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47530435</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=47530435</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47530435</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Writing code is cheap now"]]></title><description><![CDATA[
<p>He posted about it here: <a href="https://simonwillison.net/2026/Feb/19/sponsorship/" rel="nofollow">https://simonwillison.net/2026/Feb/19/sponsorship/</a></p>
]]></description><pubDate>Tue, 24 Feb 2026 12:54:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47136500</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=47136500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47136500</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Ask HN: Who is hiring? (June 2017)"]]></title><description><![CDATA[
<p>Cloud Platform @ Twitter | San Francisco, CA | ONSITE<p>We're looking for engineers to come work on Twitter's Cloud Platform team in downtown San Francisco. All of Twitter's stateless services run on our platform, and this means we need to support hundreds of thousands of tasks running across tens of thousands of machines (and growing every day!).<p>Our platform is almost entirely open sourced via Apache Mesos and Apache Aurora, and we're looking to push on and improve the efficiency, usability and reliability of our platform at our unique scale.<p>We have the following technologies on our team:<p>* Mesos - C++ - Isolation and resource management (<a href="https://github.com/apache/mesos" rel="nofollow">https://github.com/apache/mesos</a>)<p>* Aurora - Java - Service scheduler. (<a href="https://github.com/apache/aurora" rel="nofollow">https://github.com/apache/aurora</a>)<p>* Workflows - Scala/ReactJS - our internal Continuous Delivery platform<p>* Analytics Pipeline - Scala/Python - our data pipeline to feed back to users to help them make smarter decisions about how they use our platform.<p>* Operations - Python/Go/Puppet/etc. - The tooling we use to do all of this with a pretty painless oncall and only two SREs.<p>As you can imagine, it's a great team for an experienced generalist who enjoys all parts of building a product, but we also have problems that a specialist in any of these areas would have a field day with.<p>We're mostly looking for candidates who have at least a couple years experience designing (and implementing) complex systems in a team environment, as well as candidates excited about this space.<p>If this interests you at all or you'd like more information on the work we're doing, our roadmap or any other questions, please get in touch at dm@twitter.com</p>
]]></description><pubDate>Thu, 01 Jun 2017 17:56:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=14462690</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=14462690</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14462690</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Repairing My Tesla Model S Has Been a Nightmare"]]></title><description><![CDATA[
<p>You know there are places where they use Teslas as taxis right? I was picked up in a Tesla at the standard Schipol Airport taxi line.</p>
]]></description><pubDate>Wed, 08 Mar 2017 17:27:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=13821750</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=13821750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13821750</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Ask HN: Who is hiring? (March 2017)"]]></title><description><![CDATA[
<p>Twitter | Software Engineer | San Francisco, CA | ONSITE<p>We're looking for engineers to come work on Twitter's Cloud Platform team. The majority of this work revolves around developing Apache Mesos[1] and Aurora[2].<p>Aside from the constant challenge of making sure our platform can scale with the company (we have the largest Mesos clusters in the world), Twitter is in an exciting stage where efficiency (and thus hard performance problems) are becoming more and more important.<p>Because most of our platform is open sourced, contributions you make on this team will also be felt across a huge number of companies in the community. Mesos is used at companies like Apple and Netflix and Aurora adopters include Paypal, Uber and Electronic Arts. Twitter's commitment to OSS as well as our unique position in terms of platform size gives us a huge opportunity to lead development of key features.<p>One of my favorite things about working on this team for the last few years has been that I get to touch literally every part of the stack. It's a constant learning process. Mesos is written in C++ and is very heavy on systems, Aurora is on the JVM, much of our developer tooling and automation is in Python, and then we also have a product layer and other tooling that are written in a modern JS stack (React/redux/etc.). So no matter your interests, you can make a huge impact here.<p>From a product point of view - trying to keep thousands of developers happy and productive in the face of constant comparisons to public offerings like Heroku and AWS, as well as other platforms like Kubernetes, Docker Swarm, etc. is also a huge (but fun) challenge. So if you're a product-focused engineer, this is also a great opportunity.<p>We have a great team that's based in SF and within six months will be completely onsite. So we're not looking for remote workers right now.<p>If this interests you at all or you'd like more information, please get in touch at dm@twitter.com for my work e-mail or david@dmclaughlin.com for my personal e-mail.<p>[1] - <a href="http://mesos.apache.org/" rel="nofollow">http://mesos.apache.org/</a>  
[2] - <a href="http://aurora.apache.org/" rel="nofollow">http://aurora.apache.org/</a></p>
]]></description><pubDate>Thu, 02 Mar 2017 02:42:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=13770978</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=13770978</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13770978</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Ask HN: Who Is Hiring? (August 2012)"]]></title><description><![CDATA[
<p>We're hiring at Twitter (San Francisco, CA - H1B welcome).<p>My team is working on monitoring and alerting for all of the different services at Twitter. Zipkin (<a href="https://github.com/twitter/zipkin/" rel="nofollow">https://github.com/twitter/zipkin/</a>) is an example of the kinds of tools our team is building right now. The two central components are a dashboard/charting monitoring service as well as our own alerting system.<p>Most of our infrastructure challenges stem from the sheer number of writes we need to deal with as well as the temporal nature of what we're doing - all of our writes need to happen within certain time periods and reads have to be consistent within certain time-frames to avoid engineers being woken up at 4am due to incorrect data from a dirty read. Given that we're the service which observes all the other critical components - our reliability requirements are also a huge challenge.<p>The product challenge on this team is making sense of a whole lot of data. So there is a lot of cutting-edge data visualisation work. You have certain services running on thousands of nodes and teams want to use our product to quickly find outliers and scan their dashboards with key metrics. This means you have potentially thousands of timeseries with thousands of data points on the screen at the same time. This is a JavaScript gig where you get to think about algorithms and performance on a daily basis. We're also an internal tool, so we have the option of targeting cutting edge, modern browser features. In reality it means 90% of your time is working on cool stuff and not on getting IE to work.<p>I think the biggest benefit of working on our product team is that you a level of autonomy which is hard to find on a user-facing product. So if you're the creative type who doesn't want to be micro-managed or told where to push those pixels, I think this is a really good gig.<p>Right now we're looking for experienced engineers for both infrastructure and product. Our infrastructure is JVM-based and written in Scala, with some Python. Our product is written in JavaScript and we have some Ruby to deal with. Knowledge of these platforms is beneficial, but solid experience and passion for this problem domain is even better.<p>A systems position: <a href="https://twitter.com/jobs/positions?jvi=ospeWfwL,Job" rel="nofollow">https://twitter.com/jobs/positions?jvi=ospeWfwL,Job</a>
A dataviz position: <a href="https://twitter.com/jobs/positions?jvi=og12VfwY,Job" rel="nofollow">https://twitter.com/jobs/positions?jvi=og12VfwY,Job</a><p>The dataviz position doesn't accurately reflect the open rec we have for my team, so don't worry if you don't match the skills exactly.<p>I work on both infrastructure and product for the positions I described, so if you're interested you can send your resume to me directly at david @ dmclaughlin.com to speed up the process.<p>Also - we're hiring across the board at Twitter so also take a look at all open positions here: <a href="https://twitter.com/jobs" rel="nofollow">https://twitter.com/jobs</a></p>
]]></description><pubDate>Wed, 01 Aug 2012 17:36:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=4324367</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=4324367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=4324367</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "How Doctors Die"]]></title><description><![CDATA[
<p>I think this is a great way to think about it. People who try everything to extend their life do not die in vain. Over ten people in my family in the last ten years have been diagnosed with cancer and so far we've only lost one. The person who didn't make it was the youngest of all the victims, but his tumour was also somewhere the doctor's didn't see that often  - the bile duct near the liver.<p>The number of operations and suffering he had to endure still lives with me to this day and I could see why any doctor would choose not to go through this if they had to see such futile attempts at extending life end the same way. They flew in special equipment from the USA that was deemed highly experimental and would cut him open and try it out, only to have to cut him back open a few weeks later to remove what they put in. They tried surgery after surgery in the hopes something would be successful. They did not save his life but I like to think they at least learnt something about a cancer they simply don't see that often, that gave the next person a better shot. When they finally told him there was nothing more they could do, he asked them to stop all further treatment and to let him die on his terms.<p>The outlook for patients with breast, stomach, lung, testicular, skin or any other form of "common" cancer used to be as bad as pancreatic or bile duct cancer, but these days it's not a death sentence and a lot of people had to lose hard fought battles to get to this point.</p>
]]></description><pubDate>Mon, 05 Dec 2011 12:04:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=3314268</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=3314268</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3314268</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Doom 3 source released"]]></title><description><![CDATA[
<p>> Then I use "sudo !!"<p>Wow. For six years I've been doing "UP + CTRL^A + sudo + SPACE" instead. This is much better.</p>
]]></description><pubDate>Wed, 23 Nov 2011 12:41:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=3269830</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=3269830</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3269830</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Why I do not want to work at Google"]]></title><description><![CDATA[
<p>One:<p>The anti-spam systems work because they are based on content of emails and properties across the providers entire user-base. Every time you click "Mark as spam" you are contributing data for all users in the service. In a decentralised service, even if people agreed to submit all their emails and information for the greater good (which they probably wouldn't), the data still needs to be centralised somewhere and secured by experts. The blacklist/whitelist of notorious spammers and servers needs to be maintained somewhere. You end up having a committee to do that, an elected/trusted group of people and they need to deal with appeals, etc.<p>Two:<p>If the logic for blocking spam were public, don't you think that would make it much easier for spammers to circumvent?<p>Edit - I can't reply to the user below. Must be some HN feature. But the logic for accepting an email is essentially a decision tree, it is based on data and evolves over time. It is a very different problem from something like encryption.</p>
]]></description><pubDate>Sun, 28 Aug 2011 11:25:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=2933762</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2933762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2933762</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Why I do not want to work at Google"]]></title><description><![CDATA[
<p>This guy really should go work for Google and figure out the problems they need to deal with running a service like Gmail. Even for just a little while.<p>At work we had a researcher from Yahoo Mail come in and give a presentation on the machine learning techniques they use to try and stop spammers abusing their mail servers. It was eye-opening to learn just what kind of hourly battle they face to keep spam out of their systems and the ways they are trying to combat it. It was even more enlightening when the presenter told stories about the problems that machine learning can't solve - like people within the company being bribed to whitelist spam companies based in Vegas.<p>On the surface it's such a simple problem, and I'm sure anyone who's tried to prevent their web application's outgoing mail being marked as spam by the evil corporations of Yahoo and Google will have had the desire to go write a blog post saying what a crock of shit the whole thing is and how they would never take part in that. But here's the thing - those systems are in place because if they weren't, email would be a completely useless form of communication at this point.<p>The people sending spam make _millions_ of dollars abusing a system which is popular because its open and based on trust. That kind of money combined with greed gives people all different levels of drive and incentive to get their emails about bigger penises and viagra through to your inbox. Every time they prevent one form of attack, these guys will create a new one.<p>To do this they do things like install mail servers on unsuspecting user's machines, specifically targeting Yahoo/Hotmail/Google users because their IP will obviously need to be trusted by those companies. They will also hack into other people's private mail servers. They will spoof email headers and pretend they're someone else. They will hire people, experts, who will find new ways of breaking in to servers they detect as having mail servers running on them. All this just to get past the spam filters and prevention that make email a useful form of communication to begin with.<p>And let's forget the people who couldn't set up their own mail server for just a second. I like to think I know what I'm doing. After installing Postfix and jumping through all the hoops to get my emails whitelisted by Gmail and making sure I didn't have an open relay on my mail server, you know what happened? Someone managed to hack in by brute force anyway. I only noticed because of the _millions_ of automated replies that were coming in every day from dead email accounts or people that were out of office.<p>Now, I could have worked hard to fight this. I could have did something other than changing my passwords and hoping they didn't get crack them again. But the point is - I only ran a mailserver to get email delivered to me on my personal domain. I didn't want to have to fight and battle and dedicate myself to solving this problem. I wanted to take this thing for granted. I just wanted to send and receive email. Instead bad people could not only sit there and read all my incoming mail - but they could use my server to spam people and get me blacklisted and blocked from so many other services I worked so hard to be trusted by. And they did all this without even specifically targeting me. I was a statistic to them, someone who simply didn't know what they know. In the end, I moved my personal mail account to Google Apps, free of charge. Problem solved.<p>By using Gmail or Yahoo Mail or Hotmail - you are almost definitely more secure than setting up your own mailserver. You have people paid hundreds of thousands of dollars a year working full time to make sure your data is secure. I mean if privacy is your reason not to use Gmail, then I hope for your sake your mail server is secure. Maybe you think it is. I know I did too.<p>And all these people complaining about advertisements based on the content of their emails. Yahoo Mail had a team of like 30 people just doing _research_ on how to stop spammers. Then all these other people working on support. How does that service get provided to us _free of charge_ without advertisements or some sort of monetisation? I know in some people's heads they think it's literally just a Bayesian classifier and some hand-coded rules, but it's so beyond that.<p>And of course, let's not forget the fact that a lot of people would not be able to set up their own mail server anyway. Maybe you don't need them, but Hotmail, Gmail and Yahoo Mail enable hundreds of millions of people to communicate _for free_ with other people around the world that otherwise wouldn't be technically competent enough to buy a domain name and set up a local mail server. It lets you communicate with them too, because they don't get frustrated wading through hundreds of spam emails just to read the good stuff.<p>And that system only works because we have good guys that are fighting the bad guys who want to ruin it for the rest of us. And this is just the one example of email. Which has all this decentralised and open properties that you desire. I am reminded of Diaspora when they released a first beta of their code and it got absolutely torn to shreds for security reasons, and we haven't heard much since.<p>The real world sucks.<p>That's why I think it might be a good idea for you to go work for Google.</p>
]]></description><pubDate>Sun, 28 Aug 2011 10:43:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=2933720</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2933720</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2933720</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Twitter Bootstrap"]]></title><description><![CDATA[
<p>You're comparing Apples to Oranges here. Bootstrap is not a template, it's a framework for people who know what they're doing to quickly build fully customized but aesthetically pleasing websites with a lot of the pain removed from cross-browser CSS.<p>It is similar to something like Blueprint (<a href="http://www.blueprintcss.org/" rel="nofollow">http://www.blueprintcss.org/</a>), which I have used for my prototypes with a lot of success, but just taken much further.</p>
]]></description><pubDate>Fri, 19 Aug 2011 22:20:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=2905100</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2905100</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2905100</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "A test which predicts ability to program before the start of training"]]></title><description><![CDATA[
<p>Using Java as the language to detect if someone has the "programming gene" does not make any sense. There is so much cognitive overhead to writing a simple program in Java compared to, say, Python that there will be many other factors involved in why a student would end up performing badly.<p>In my own case I disliked Java so much in my first year of University because I couldn't understand why there was so much effort just to get this little black screen to print "Hello, World."<p>I would go on but I actually already wrote about this a couple years ago on Reddit: <a href="http://www.reddit.com/r/programming/comments/84c90/i_fear_as_far_as_i_can_tell_that_most/c087mnf" rel="nofollow">http://www.reddit.com/r/programming/comments/84c90/i_fear_as...</a></p>
]]></description><pubDate>Fri, 19 Aug 2011 13:45:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=2903325</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2903325</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2903325</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Cutting-edge IT firms need experts in 'dead' languages"]]></title><description><![CDATA[
<p>> While our universities are turning out very able graduates, well versed in the sexy new languages of Java, .net and the like<p>I have been flirting recently with a return home to Scotland (from Berlin) recently, and have found it extremely difficult to find any interesting opportunities on par with what I'm doing right now. The quote above reminds me why I had to leave to stay sane.</p>
]]></description><pubDate>Wed, 17 Aug 2011 13:40:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=2895298</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2895298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2895298</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Stanford Fall 2011 - Machine Learning"]]></title><description><![CDATA[
<p>Note for anyone signing up for this who has been in industry for a while: the prerequisites for this class really are prerequisites and it can be quite difficult to follow along if you're too busy trying to get your head around the basic math. You can check out the existing lectures on iTunes U to see what I mean.<p>Completing the Khan Academy playlists for Linear Algebra and Probability would be pretty useful if you want to be prepared in time for October.</p>
]]></description><pubDate>Tue, 16 Aug 2011 05:37:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=2890035</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2890035</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2890035</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "How to improve your programming skills"]]></title><description><![CDATA[
<p>"Learn a new programming language"<p>I would rephrase this to learn a new programming <i>paradigm</i>. There are fundamental differences between static typing and dynamic typing, object orientation and functional, manual memory management and garbage collection. There are also "pure" single-paradigm languages and multi-paradigm languages. If you learn the same type of language multiple times, you're really just learning new syntax and probably a couple of extra idiosyncrasies, so it's important that you pick languages with fundamental differences.<p>Compare going through this learning path:<p>Perl -> PHP -> JavaScript -> Python -> Ruby -> Node.js<p>To going through this:<p>Java -> C -> Scheme -> JavaScript -> Erlang<p>For example.</p>
]]></description><pubDate>Thu, 30 Jun 2011 14:09:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=2714062</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2714062</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2714062</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "Why Scala seems difficult but really isn’t"]]></title><description><![CDATA[
<p>Most of the complaints I see from Java programmers amount to this:<p><a href="http://blog.tmorris.net/anti-intellectual-euphemisms/" rel="nofollow">http://blog.tmorris.net/anti-intellectual-euphemisms/</a><p>Specifically:<p>> using the word complex, unnatural, academic, “your world” or unintuitive to mean “I am not able nor am I willing to invest the effort to come to to understand this.”<p>Other than those people:<p>The blog author I quote above is one of the many "PL gurus" you speak of that rip into Scala because of its various deficiencies when compared to the likes of Haskell. The ones I am smart enough to understand mostly revolve around the type inference and type erasure problems. You mentioned those but I have already run into issues where I did care about them so I don't think its fair to dismiss them as you did.<p>The amount of hyperbole that comes from elements of the Scala community on actors I think is a cause of a fair amount of vitriol, mostly because actors are not a silver bullet and come with their own host of problems. Akka is trying to solve some of those problems of course :)<p>And of course the lack of tools. It's hard for me to talk about this because I loathe IDEs. So far I have been writing my medium sized project entirely in vim + NERDTree and it's been great. I imagine with enterprise scale projects I would start to miss Eclipse though.</p>
]]></description><pubDate>Wed, 22 Jun 2011 16:59:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=2683999</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2683999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2683999</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "You should learn to type (properly)"]]></title><description><![CDATA[
<p>I don't know how to touch type, I have a "two fingers and thumb" approach and never have to look at the keyboard (I was given a German keyboard at work and I never noticed until a German sat down and tried to use it). I was curious what "fast" is so I just took this test:<p><a href="http://speedtest.10-fast-fingers.com/" rel="nofollow">http://speedtest.10-fast-fingers.com/</a><p>You reached 395 points, so you achieved position 14664 of 1148922 on the ranking list<p>You type 588 characters per minute
You have 98 correct words and
you have 6 wrong words<p>Which is close to 99th percentile, although that website may have a bias towards slow typists. What speed would a touch typist expect?</p>
]]></description><pubDate>Sat, 18 Jun 2011 19:48:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=2669369</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2669369</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2669369</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "ORM is an anti-pattern"]]></title><description><![CDATA[
<p>> Yes, the ORM layer makes it easier to have structured queries that can be cached . . . it also makes it harder to have one-off queries that can be tuned easily based on exactly what data is needed and tweaked to convince the database to generate the right query plan, and it makes it much harder to look at some DB stats, identify a poorly-performing query, and then map it back to the code that generated that query.<p>The problem I have with your post is that you are repeatedly mistaking the high level idea of an ORM with the (seemingly) Spartan implementations that you have used.<p>Here is an ORM that provides support for automatically profiling the performance of queries over a period of time:<p><a href="http://squeryl.org/performance-profiling.html" rel="nofollow">http://squeryl.org/performance-profiling.html</a><p>Sample output:<p><a href="http://squeryl.org/profileOfH2Tests.html" rel="nofollow">http://squeryl.org/profileOfH2Tests.html</a><p>I cannot begin to tell you how much time this has saved me when optimising performance of my webapp.<p>Note that that particular ORM also has the advantage of having type safe queries - i.e. it can tell at compile time if there's a syntax error in your query (subject to bugs in the ORM :)) - even in dynamically generated queries. In practice this is a fantastic feature as it is so much safer than building up SQL queries with string manipulation and dealing with multiple code paths that depend on user input. The test paths alone in such code (even if you have a "query builder" layer) are the stuff of nightmares.<p>There are many features missing from Squeryl though that I've had in other ORMs because it makes different trade-offs. But this is what you do when you choose a library, and it's important to understand what trade-offs you're making upfront... otherwise you might find yourself writing off an entire approach to software development as an anti-pattern because you picked the wrong library.</p>
]]></description><pubDate>Wed, 15 Jun 2011 22:15:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=2659260</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2659260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2659260</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "ORM is an anti-pattern"]]></title><description><![CDATA[
<p>This seems incredibly naive.<p>ORMs reduce code duplication. They speed up development, especially when you're treating the underlying data storage as a "dumb" datastore that could just as easily be sqlite or H2 as MySQL or Postgres.<p>As for ORMs having some sort of negative impact on the queries sent to the underlying database - it really depends on what ORM you use but any ORM I've used had support for pre-loading relationships in advance when required, removing that N+1 problem.<p>I also want to add that I wrote an ORM for the first company I worked for and when it was finished it was a drop-in replacement for 90% of the queries in our application - and I mean that literally the SQL generated by the ORM was exactly the same as the SQL being replaced. The queries that it couldn't replace (mainly reporting queries) <i>already had an aggressively tuned caching layer in front of them anyway because they were so hairy</i>.<p>But the real point is this: the performance of the ORM didn't really matter because we were a database driven website that needed to scale - so we had layers upon layers of caching to deal with that issue.<p>And that is an extremely important point - the way ORMs generalise a lot of queries (every query for an object is always the same no matter what columns you really need) lends itself to extremely good cache performance. Take the query cache of MySQL for example - it stores result sets in a sort of LRU. If you make n queries for the same row in a DB but select different columns each time - you store the same "entity" n times in the query cache. Depending on how big n is, that can cause much worse cache hit performance than simply storing one representation of that entity and letting all n use cases use the attributes they need.<p>Now, relying on MySQL's query cache for anything would not be smart, but replace it with memcached or reddis or whatever memory-is-a-premium cache and the same point stands. 
Another example to drive the point home is a result set where you join the result entities to the user query so that you can get all the results back in a single query. In theory this is a great way to reduce the number of queries sent to your DB but if you have caching then there are many times where you could have very low cache hit ratios for user queries since they tend to be unique (for example they use user id) but where you could still get great cache hit performance if certain entities appear often across all those result sets by leaving out the join and doing N+1 fetches instead.<p>ORMs prevent you from scaling as much as using Python or Ruby over C does.<p>So I guess that leaves the point about leaky or broken abstractions. Well I would never claim that you can abstract across a whole bunch of databases anyway, I think that's a ridiculous claim that most ORMs make. These types of abstractions when people try to hide the underlying technology are really just a lowest-common-denominator of all the feature sets. So if you chose some technology because you really wanted a differentiating feature then most likely you will find yourself working against such abstractions. Interestingly enough, the dire support for cross-database queries which are perfectly legal in MySQL but not in other vendors is the reason I had to roll my own ORM. But the productivity and maintainability benefits were well worth it.<p>So yeah I guess what I'm saying is: premature optimization is the root of all evil, there are no silver bullets and performance and scalability is about measuring and optimising where needed. And finally: ORMs are not an anti-pattern.</p>
]]></description><pubDate>Wed, 15 Jun 2011 18:34:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=2658443</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2658443</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2658443</guid></item><item><title><![CDATA[New comment by DavidMcLaughlin in "If you develop web apps, don't do this."]]></title><description><![CDATA[
<p>The real point is: don't do two-level ACL on websites.<p>At my previous company we had these "auto-login" links in emails and they are extremely powerful.<p>But maybe once every six months people would call or write in and say "I forwarded a job posting from one of your email alerts to a friend and they had full access to my account!" and we'd have to revisit the issue again, but the conclusion was always the same - we were getting absolutely ridiculous user engagement from emails because of this feature and this was too valuable to give up.<p>Before I left the solution I had started to push was to introduce a new intermediate user level - "logged in but not trusted" - to the standard logged out/logged in two-level ACL. The basic implementation would have looked like this:<p>1) A logged in but not trusted cookie is set on both manual login or auto-login from marketing materials. It allows us to assume that this is user X and they are taking action Y on website Z. It also allows the user to receive the user logged in view where that UX has been tweeked to minimise effort for logged in users.<p>2) A logged in and trusted cookie is only set on an explicit manual login, and is required to perform _any_ write operation as well as to read certain sensitive information.<p>Where the practical implementation gets difficult is you really need to refine when to require the trusted cookie - at what point in your UX - to keep the engagement high. It will almost definitely go down, you just want to minimise that.<p>For an example, say you're a service like LinkedIn. You send emails to your users whenever they get a private message and you want to make it easy as possible for that user to reply because recruiters getting candidate engagement happens to be one of your key metrics. User clicks on the message in their email and instantly gets a login page, they might have been 50/50 about engaging with this recruiter so now that you presented an obstacle they just close the tab and get back to what they were doing. Alternatively, you show them the message from the recruiter and allow them to type up a reply and only ask for a password confirmation when they hit send, and it's possible your engagement will go up.<p>It requires more thought and is surprisingly tricky to implement once you get past the really easy "read-only" versus "write" type security checks, but it seems to be the way things are going.</p>
]]></description><pubDate>Tue, 14 Jun 2011 10:05:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=2652406</link><dc:creator>DavidMcLaughlin</dc:creator><comments>https://news.ycombinator.com/item?id=2652406</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2652406</guid></item></channel></rss>