<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: damncabbage</title><link>https://news.ycombinator.com/user?id=damncabbage</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 26 Apr 2026 11:47:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=damncabbage" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by damncabbage in "Sketches of Elixir"]]></title><description><![CDATA[
<p>Relative to Ruby it has more upfront checking of some things. In Elixir, calling a function that doesn't exist or with the wrong number of arguments is something that will error out at compile-time; with Ruby, you don't find out until you run the code with the bad call.<p>I agree, though, that compared to Haskell and Rust it doesn't give you much. Dialyzer is (intentionally) a fail-open checker that doesn't allow expressing generics; I've had a rough time getting it to tell me my code is wrong. Credo is (intentionally) just a style linter. "Just let it crash" isn't useful when you're talking about code that is going to break because of its structural incoherence (a class of errors type-checker are good at catching), and not because of transient errors in external dependencies.</p>
]]></description><pubDate>Sat, 29 Dec 2018 07:06:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=18782398</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=18782398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18782398</guid></item><item><title><![CDATA[New comment by damncabbage in "Why Johnny Can't Code Good [video]"]]></title><description><![CDATA[
<p>> I checked out our shared Twitter history, we talked a fair bit in the past but I wasn't able to find _anything_ like this.<p>> I mean this sincerely — are you _sure_ you didn't get me confused with someone else? I was definitely a dick from what I can see from the Twitter history and I apologize. However, I cannot remember and cannot find myself ever saying or implying something as horrendous as what you're describing here.<p><a href="https://twitter.com/bitemyapp/status/477359528510382080" rel="nofollow">https://twitter.com/bitemyapp/status/477359528510382080</a><p><pre><code>  [@bitemyapp] @KirinDave my first workflow video is up to 
  1,535 views on Youtube so far. Who knows how many people 
  have used my guide. I'm feeling good.

  [@KirinDave] @bitemyapp It is not about your traffic, it is 
  about their excitement. Get over yourself.

  [@bitemyapp] @KirinDave Drinking the haterade tonight. Some 
  of those pregger hormones transfer over?
  
  Should ramp up theft of Clojure library authors >:)

  [@KirinDave] @bitemyapp Yeah I'm hysterical that's real cool.

</code></pre>
That covers a portion of the claim. (I'm trying to stay out of actually passing judgement on bitemyapp or his ">"-quoted defence or KirinDave's earlier claim.)</p>
]]></description><pubDate>Wed, 18 Oct 2017 05:25:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=15497071</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=15497071</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15497071</guid></item><item><title><![CDATA[New comment by damncabbage in "Announcing TypeScript 2.2"]]></title><description><![CDATA[
<p>There's also comments support in Flow directly, but it's sadly (but understandably) hideous:<p><pre><code>  function somefunction(somestring/*: string*/)/*: boolean */ {
     var ret/*: boolean */;
     ...
     return ret;
  }
</code></pre>
(See <a href="https://flowtype.org/blog/2015/02/20/Flow-Comments.html" rel="nofollow">https://flowtype.org/blog/2015/02/20/Flow-Comments.html</a>)</p>
]]></description><pubDate>Thu, 23 Feb 2017 01:04:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=13710766</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=13710766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13710766</guid></item><item><title><![CDATA[New comment by damncabbage in "Announcing TypeScript 2.2"]]></title><description><![CDATA[
<p>> It falls short on many things TS would immediately flag<p>I'm kind of curious what you've run into personally. Having a dependency without any type-defs get silently treated as `any` is my own beef, but I haven't hit much else yet.<p>(Some type-defs' use for `any` also gets my goat, such as Promise's catch argument and some of the lodash functions, but I'm considering that a separate thing.)<p>​<p>> And honestly, some of the decisions around the language just feel strange. Not knowing what kind of bool to use [0] is pretty emblematic of where it is going as a language.<p>This is more an existing JS weirdness (`true`/`false` vs `Boolean()`); Flow doesn't mess with runtime semantics, only adding a layer that you check with then strip out.<p>And TypeScript has the same thing:<p><pre><code>  var a: boolean = new Boolean(1);
  
  // Produces:
  // NewTypering.ts(29,5): error TS2322: Type 'Boolean' is not assignable to type 'boolean'.</code></pre></p>
]]></description><pubDate>Thu, 23 Feb 2017 00:53:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=13710716</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=13710716</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13710716</guid></item><item><title><![CDATA[New comment by damncabbage in "Selecting a platform: JavaScript vs Elm vs PureScript vs GHCjs"]]></title><description><![CDATA[
<p>It means restricting to where you can perform IO actions, eg. printing to a log, writing to a shared area of memory, etc.<p>Haskell does this by representing IO actions as values, eg. "IO String" (something like "IO<String>", for people more familiar with that syntax), representing an IO action that, when later evaluated, will yield a string that you can use in subsequent actions.<p>Haskell's "main" (entry-point) function is a value of type "IO ()" (IO of a value representing nothing useful; you don't get anything out of it, so you just have a nothing placeholder). When a Haskell program is run, it ostensibly (hand-waving here) takes that IO value and interprets it, performing the action IO.<p>You have functions like putStrLn (print a line) that takes a String, and returns an "IO ()" . Accordingly, if you have<p><pre><code>  main = putStrLn "Hello, World!"
</code></pre>
... you have a value that lines up with the expected return value of main "IO ()". More complicated examples, like<p><pre><code>  main =
    readLn >>= (\x -> putStrLn ("Hello, " ++ x))
</code></pre>
... are doing the same thing (checking the types line up), just with more moving parts (the Monad thing you mentioned, which we're using to relate the "read line" function with the "print line" function).<p>The key bit is that it's just "IO Blah" values standing in for IO actions, and like jigsaw pieces, these IO-returning functions only fit together where the types line up, restricting how you can use them.<p>Monads are tangential to this; the type-checking of that jigsaw puzzle is what matters here.</p>
]]></description><pubDate>Thu, 19 Jan 2017 02:47:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=13432547</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=13432547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13432547</guid></item><item><title><![CDATA[Seagate to Shut Down One of Its Largest HDD Assembly Plants]]></title><description><![CDATA[
<p>Article URL: <a href="http://www.anandtech.com/show/11037/seagate-to-shut-down-one-of-its-largest-hdd-assembly-plants">http://www.anandtech.com/show/11037/seagate-to-shut-down-one-of-its-largest-hdd-assembly-plants</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=13396715">https://news.ycombinator.com/item?id=13396715</a></p>
<p>Points: 106</p>
<p># Comments: 93</p>
]]></description><pubDate>Sat, 14 Jan 2017 03:40:20 +0000</pubDate><link>http://www.anandtech.com/show/11037/seagate-to-shut-down-one-of-its-largest-hdd-assembly-plants</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=13396715</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13396715</guid></item><item><title><![CDATA[New comment by damncabbage in "Parsing JSON is a Minefield"]]></title><description><![CDATA[
<p>A list of items in an array. Some items in that list are of particular note.<p>(Say you have 15 items in an array. For whatever reason, such as you not being in control of the expected input structure of whatever you're giving this JSON to, you have them grouped with comments at the top of each block.)</p>
]]></description><pubDate>Thu, 27 Oct 2016 01:10:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=12802159</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=12802159</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12802159</guid></item><item><title><![CDATA[New comment by damncabbage in "Frege – a Haskell for the JVM"]]></title><description><![CDATA[
<p>> I've used the Haste compiler which IS Haskell that supports ALL GHC extensions except TemplateHaskell, supports the Cabal build tool and in practice it has its own ecosystem; most of Hackage will not compile on it.<p>As someone who's standing on the precipice of GHCJS, Haste and PureScript, I'm very curious to hear about your Haste experiences in this regard.<p>(I've been using PureScript in my side-projects for a bit. For the sake of completeness of this list, I've tried Elm and am not interested.)</p>
]]></description><pubDate>Mon, 07 Mar 2016 00:09:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=11236301</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=11236301</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11236301</guid></item><item><title><![CDATA[New comment by damncabbage in "How We Get Things Done (2015)"]]></title><description><![CDATA[
<p>Agreed; HipChat is unfortunately a bit terrible about this. I'll often "lose" a notification from someone when I'm offline: it sends an email, yep, but the chat client itself loses the "unread message" bubble. I have to make sure I check email on every reconnect.</p>
]]></description><pubDate>Wed, 10 Feb 2016 12:44:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=11072331</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=11072331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11072331</guid></item><item><title><![CDATA[New comment by damncabbage in "Sit/Stand Desk: IKEA Skarsta Review"]]></title><description><![CDATA[
<p>I'd be cautious: the range is too small for me (6'1" / 188cm). On a regular desk that suits me, it doesn't go high enough, and if you prop things on the desks up a bit, you then need to remove them when you lower it.<p>(It's also a bit wobbly, which isn't great, but probably expected.)</p>
]]></description><pubDate>Sat, 30 Jan 2016 03:56:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=11000402</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=11000402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11000402</guid></item><item><title><![CDATA[New comment by damncabbage in "Why ML/OCaml are good for writing compilers (1998)"]]></title><description><![CDATA[
<p>> ... being signed in is in-memory state.<p><i>Can</i> be in-memory state. Everything beyond toy-sized I've ever worked on has externalised this sort of state to a database of some kind, if only so you can run a second copy for the sake of failover. I don't believe your example is relevant.</p>
]]></description><pubDate>Sat, 12 Dec 2015 02:52:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=10721601</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=10721601</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10721601</guid></item><item><title><![CDATA[New comment by damncabbage in "Gradual type checking for Ruby"]]></title><description><![CDATA[
<p>In case the question is actually "Why not 1.9.3?", it's likely because 1.9.3 is End Of Life, and doesn't even get security upgrades now:<p><a href="https://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will-end-on-2015/" rel="nofollow">https://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will...</a><p><a href="https://www.ruby-lang.org/en/news/2015/02/23/support-for-ruby-1-9-3-has-ended/" rel="nofollow">https://www.ruby-lang.org/en/news/2015/02/23/support-for-rub...</a></p>
]]></description><pubDate>Thu, 09 Apr 2015 05:11:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=9345878</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=9345878</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9345878</guid></item><item><title><![CDATA[New comment by damncabbage in "Ex Google engineer claims she was harassed and “Google did nothing about it”"]]></title><description><![CDATA[
<p>I recommend reading this (or at least pages 4-6 if you're in a rush) and the footnoted sources:<p><a href="https://docs.google.com/document/d/1soIYek-YEIvqtu9brv3ecdPbuVzQKp_GhAozC06UrLo/edit?usp=sharing" rel="nofollow">https://docs.google.com/document/d/1soIYek-YEIvqtu9brv3ecdPb...</a></p>
]]></description><pubDate>Sun, 08 Mar 2015 13:43:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=9165546</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=9165546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9165546</guid></item><item><title><![CDATA[New comment by damncabbage in "Be My Eyes – Lend your eyes to the blind"]]></title><description><![CDATA[
<p>The iPhone has VoiceOver, and there are bluetooth Braille keyboards/displays for typing.<p>This page goes into a bit more detail: <a href="https://andreashead.wikispaces.com/How+Do+Blind+People+Use+an+iPad,+iPod,+or+iPhone" rel="nofollow">https://andreashead.wikispaces.com/How+Do+Blind+People+Use+a...</a></p>
]]></description><pubDate>Fri, 16 Jan 2015 07:55:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=8897696</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=8897696</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8897696</guid></item><item><title><![CDATA[New comment by damncabbage in "Functional Programming in JavaScript: A Collection of Hands-on Exercises"]]></title><description><![CDATA[
<p>To just <i>see</i> the content on the page, paste this into the console:<p><pre><code>    $('body').append('<style>.lesson,.post{visibility:visible;}</style>');
</code></pre>
(I enjoyed reading the content, but found it infuriating to skim.)</p>
]]></description><pubDate>Sat, 18 Oct 2014 03:28:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=8474526</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=8474526</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8474526</guid></item><item><title><![CDATA[New comment by damncabbage in "Adobe joins the Chromebook party, starting with Photoshop"]]></title><description><![CDATA[
<p><i>"If network connectivity is lost, you will need to launch a new session."</i><p>As an Australian, I fear this is yet another one of those things we won't be able to use on our spotty 250KB/s connections.</p>
]]></description><pubDate>Tue, 30 Sep 2014 03:26:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=8386630</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=8386630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8386630</guid></item><item><title><![CDATA[New comment by damncabbage in "A live streaming platform dedicated to code"]]></title><description><![CDATA[
<p>I'd love to see how this goes. :D<p>I recommend having a read of this other discussion thread further up the page: <a href="https://news.ycombinator.com/item?id=8312701" rel="nofollow">https://news.ycombinator.com/item?id=8312701</a></p>
]]></description><pubDate>Sun, 14 Sep 2014 07:09:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=8314707</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=8314707</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8314707</guid></item><item><title><![CDATA[Getting Git Right]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.atlassian.com/git/">https://www.atlassian.com/git/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=8300518">https://news.ycombinator.com/item?id=8300518</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 11 Sep 2014 02:15:58 +0000</pubDate><link>https://www.atlassian.com/git/</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=8300518</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8300518</guid></item><item><title><![CDATA[New comment by damncabbage in "Rails 4.2.0 beta1: Active Job, Deliver Later, Adequate Record, Web Console"]]></title><description><![CDATA[
<p>This won't do anything for you there; it just collapses a Class and a record ID down into a string for you (and then pulls it back out of your database later with a <i>GlobalID::Locator.locate(string)</i> call).<p>It's not full-record-serialization, and it can't bring back deleted records for you.<p>(See <a href="https://github.com/rails/rails/tree/master/activejob#globalid-support" rel="nofollow">https://github.com/rails/rails/tree/master/activejob#globali...</a> for an example.)</p>
]]></description><pubDate>Wed, 20 Aug 2014 06:23:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=8201293</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=8201293</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8201293</guid></item><item><title><![CDATA[New comment by damncabbage in "Hotel fines $500 for every bad review posted online"]]></title><description><![CDATA[
<p>Spooky23 is being sarcastic.</p>
]]></description><pubDate>Mon, 04 Aug 2014 12:16:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=8131361</link><dc:creator>damncabbage</dc:creator><comments>https://news.ycombinator.com/item?id=8131361</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8131361</guid></item></channel></rss>