<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: Sean1708</title><link>https://news.ycombinator.com/user?id=Sean1708</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 30 Oct 2026 02:08:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Sean1708" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Sean1708 in "🥺: the best sudo replacement"]]></title><description><![CDATA[
<p>2006, I think. Or _maybe_ the early part of 2007, I can't remember exactly. Didn't really get popular until 2014 though.</p>
]]></description><pubDate>Sat, 21 Jan 2023 09:00:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=34464992</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=34464992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34464992</guid></item><item><title><![CDATA[New comment by Sean1708 in "FreeBSD has removed GCC from its base system"]]></title><description><![CDATA[
<p>As other top-level posts have pointed out they're only removing it from the <i>build</i> process, it's still available to users. I wouldn't worry too much about about GCC going away, it's still the default compiler for most (all?) Linux distros.</p>
]]></description><pubDate>Tue, 03 Mar 2020 14:15:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=22474570</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22474570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22474570</guid></item><item><title><![CDATA[New comment by Sean1708 in "Little known features of iTerm2"]]></title><description><![CDATA[
<p>> Somehow this works even across SSH connections…<p>The source code[1] is quite simple to read (as long as you know Bash) but basically imgcat prints a special OSC[2] sequence (some bytes that tell the terminal to do something special) to stdout followed by the image data which iTerm then handles specially because of the OSC sequence, as far as SSH knows they're just some bytes that it needs to send (no different than running normal cat on a text file). You can kind of think of this as the opposite of what bracketed paste[3] does, in bracketed paste the terminal tells the program to treat some data specially but with imgcat the program tells the terminal to treat some data specially.<p>[1]: <a href="https://iterm2.com/utilities/imgcat" rel="nofollow">https://iterm2.com/utilities/imgcat</a><p>[2]: <a href="https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences" rel="nofollow">https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequen...</a><p>[3]: <a href="https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode" rel="nofollow">https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-B...</a></p>
]]></description><pubDate>Mon, 02 Mar 2020 14:20:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=22464626</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22464626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22464626</guid></item><item><title><![CDATA[New comment by Sean1708 in "Rust Ownership Rules"]]></title><description><![CDATA[
<p>WRT your edit:<p><pre><code>  #[lang = "unsafe_cell"]
</code></pre>
This tells you that UnsafeCell is a Language Item[1], which basically means that the compiler <i>does</i> have knowledge of it.<p>[1]: <a href="https://doc.rust-lang.org/beta/unstable-book/language-features/lang-items.html" rel="nofollow">https://doc.rust-lang.org/beta/unstable-book/language-featur...</a></p>
]]></description><pubDate>Mon, 02 Mar 2020 13:44:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=22464327</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22464327</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22464327</guid></item><item><title><![CDATA[New comment by Sean1708 in "Don’t try to sanitize input – escape output"]]></title><description><![CDATA[
<p>The article refers to that as escaping output rather than sanitising input:<p>> And of course use your SQL engine’s parameterized query features so it properly escapes variables when building SQL:</p>
]]></description><pubDate>Thu, 27 Feb 2020 13:36:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=22433077</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22433077</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22433077</guid></item><item><title><![CDATA[New comment by Sean1708 in "Quadsort: a stable non-recursive merge sort"]]></title><description><![CDATA[
<p>The most annoying part of development, your users can and <i>will</i> rely on any observable behaviours of your software.</p>
]]></description><pubDate>Fri, 14 Feb 2020 10:44:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=22325508</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22325508</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22325508</guid></item><item><title><![CDATA[New comment by Sean1708 in "Quadsort: a stable non-recursive merge sort"]]></title><description><![CDATA[
<p>Nope, if you hash the inputs then you won't be able to order them properly.</p>
]]></description><pubDate>Fri, 14 Feb 2020 10:09:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=22325356</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22325356</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22325356</guid></item><item><title><![CDATA[New comment by Sean1708 in "Questions to ask before adopting microservices"]]></title><description><![CDATA[
<p>> an incomplete microservice migration where you've now got hobbled together half-service weirdware that you have to support forever.<p>Ugh I have to deal with this at my current job, except it's not an incomplete microservice migration it's <i>by design</i> and comes with a weird hobbled-together event queue implemented as a table in the DB and that has a known race condition that pops up every couple of weeks.</p>
]]></description><pubDate>Thu, 13 Feb 2020 11:55:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=22317027</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22317027</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22317027</guid></item><item><title><![CDATA[New comment by Sean1708 in "Shit – An implementation of Git using POSIX shell"]]></title><description><![CDATA[
<p>Am I reading that correctly? A porcelain command is one that's <i>not</i> supposed to be used in scripts, but the --porcelain flag is for when you <i>do</i> want to use things in scripts?</p>
]]></description><pubDate>Wed, 12 Feb 2020 10:51:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=22307757</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22307757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22307757</guid></item><item><title><![CDATA[New comment by Sean1708 in "Shit – An implementation of Git using POSIX shell"]]></title><description><![CDATA[
<p>> what is the benefit of the line format being character strings? Wouldn't a binary package not be just as easy translatable into human readable JSON formatted output as a compacted JSON string is?<p>One benefit is that I can look at an arbitrary file/response and be able to tell with a fairly high certainty whether it's JSON, YAML, or TOML, but there's no way that I tell whether it's messagepack, bson, or protobufs.</p>
]]></description><pubDate>Wed, 12 Feb 2020 10:17:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=22307579</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22307579</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22307579</guid></item><item><title><![CDATA[New comment by Sean1708 in "I Was Wrong about Nix"]]></title><description><![CDATA[
<p>I think it's a lot more complicated than that. Yes there are plenty of people that use Docker as a package manager, but I think that's a failing of traditional package managers rather than a failing of Docker. You could, for exactly the same reasons, say that Nix is Nix Containers[1] Done Right but if that were true then Nix Containers wouldn't need to exist in the first place.<p>[1]: <a href="https://nixos.org/nixos/manual/#ch-containers" rel="nofollow">https://nixos.org/nixos/manual/#ch-containers</a></p>
]]></description><pubDate>Tue, 11 Feb 2020 12:58:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=22298078</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22298078</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22298078</guid></item><item><title><![CDATA[New comment by Sean1708 in "I Was Wrong about Nix"]]></title><description><![CDATA[
<p>> If I can reduce my entire desktop environment into a single config file and have it reliably reconstruct itself, it would be magical.<p>I might be missing something, but it sounds like that's what home-manager[1] was designed to do. Certainly works pretty well for me.<p>[1]: <a href="https://github.com/rycee/home-manager" rel="nofollow">https://github.com/rycee/home-manager</a></p>
]]></description><pubDate>Tue, 11 Feb 2020 12:40:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=22297973</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22297973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22297973</guid></item><item><title><![CDATA[New comment by Sean1708 in "SciPy 1.0: fundamental algorithms for scientific computing in Python"]]></title><description><![CDATA[
<p>I actually did some benchmarking on this once upon a time[1] and it turns out that it's actually really easy to write something that is only ~5x slower[2] (until you get to matrices that don't fit in RAM):<p><pre><code>           (4, 4, 4) (5, 5, 5) (32, 32, 32) (33, 33, 33) (256, 256, 256) (257, 257, 257) (512, 512, 512) (513, 513, 513) (1024, 1024, 1024) (1025, 1025, 1025)
  –––––––– ––––––––– ––––––––– –––––––––––– –––––––––––– ––––––––––––––– ––––––––––––––– ––––––––––––––– ––––––––––––––– –––––––––––––––––– ––––––––––––––––––
  :naive         0.0       0.0       1.3e-5       2.0e-5          0.0114          0.0133          0.0942           0.106               3.25               2.39
  :tiled         0.0       0.0       2.7e-5       2.2e-5          0.0139          0.0121           0.154           0.101               1.25              0.888
  :fastf77       0.0       0.0       8.0e-6       8.5e-6         0.00543         0.00563          0.0426          0.0445              0.437              0.448
  :blas       4.5e-6    4.0e-6       1.9e-5       2.1e-5        0.000972         0.00109         0.00712         0.00744             0.0582             0.0607
</code></pre>
(Units are seconds per multiplication.)<p>Obviously OpenBLAS is so easy to package that it's not really worth avoiding it, but it was very eye-opening to see just how easy it is to get within an order of magnitude (easier, in fact, than getting into the 10x-20x range).<p>[1]: <a href="https://gist.github.com/Sean1708/69c5694048e9a9ca7bd84fcbc9ea6f45" rel="nofollow">https://gist.github.com/Sean1708/69c5694048e9a9ca7bd84fcbc9e...</a><p>[2]: 8-core 3.4GHz Haswell i7 with 32kB L1, 256kB L2, 8MB L3, and 8GB RAM.</p>
]]></description><pubDate>Tue, 11 Feb 2020 10:53:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=22297526</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22297526</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22297526</guid></item><item><title><![CDATA[New comment by Sean1708 in "Python dicts are now ordered"]]></title><description><![CDATA[
<p>What would it even mean for a container to be ordered if you can't iterate through it?</p>
]]></description><pubDate>Fri, 07 Feb 2020 16:14:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=22267403</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22267403</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22267403</guid></item><item><title><![CDATA[New comment by Sean1708 in "Python dicts are now ordered"]]></title><description><![CDATA[
<p>It's extra annoying because collections.OrderedDict has been in the standard library for ages.</p>
]]></description><pubDate>Fri, 07 Feb 2020 16:11:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=22267354</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22267354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22267354</guid></item><item><title><![CDATA[New comment by Sean1708 in "Python dicts are now ordered"]]></title><description><![CDATA[
<p>My main issue with it is that if someone figures out an even better way to do dictionaries but it doesn't preserve insertion order, then that technique can't be used. But I certainly wouldn't call it a <i>stupid</i> decision, the problem is that once a behaviour is observable then people absolutely will start relying on it.</p>
]]></description><pubDate>Fri, 07 Feb 2020 16:06:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=22267300</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22267300</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22267300</guid></item><item><title><![CDATA[New comment by Sean1708 in "Why Discord is switching from Go to Rust"]]></title><description><![CDATA[
<p>It is but in the context of this discussion it's very clear that they meant a tracing garbage collector, which has a very different cost than atomic reference counting. Or to put it another way: you're technically correct, the worst kind of correct.</p>
]]></description><pubDate>Wed, 05 Feb 2020 09:20:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=22245242</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22245242</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22245242</guid></item><item><title><![CDATA[New comment by Sean1708 in "Null Values in SQL Queries"]]></title><description><![CDATA[
<p>Nah, it's true for all columns:<p><pre><code>  SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 3 15:56:30 2020
  
  Copyright (c) 1982, 2013, Oracle.  All rights reserved.
  
  
  Connected to:
  Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
  
  SQL> create table foo(fook varchar2(10) not null);
  
  Table created.
  
  SQL> insert into foo values ('');
  insert into foo values ('')
                          *
  ERROR at line 1:
  ORA-01400: cannot insert NULL into ("SPORTSBOOK_DOCK"."FOO"."FOOK")
  
  
  SQL> create table bar(bark varchar2(10));
  
  Table created.
  
  SQL> insert into bar values ('');
  
  1 row created.
  
  SQL> insert into bar values ('a');
  
  1 row created.
  
  SQL> insert into bar values (null);
  
  1 row created.
  
  SQL> select * from bar;
  
  BARK
  ----------
  
  a
  
  
  SQL> select * from bar where bark = '';
  
  no rows selected</code></pre></p>
]]></description><pubDate>Mon, 03 Feb 2020 15:58:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=22225284</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22225284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22225284</guid></item><item><title><![CDATA[New comment by Sean1708 in "The Rust Compilation Model Calamity"]]></title><description><![CDATA[
<p>> AFAICT there's no easy way to measure the LoC actually compiled<p>I take it you can't just run it through the preprocessor then count the lines of code that are output from that?</p>
]]></description><pubDate>Fri, 31 Jan 2020 14:12:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=22201769</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22201769</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22201769</guid></item><item><title><![CDATA[New comment by Sean1708 in "Let's Destroy C"]]></title><description><![CDATA[
<p>Firstly, I think you're taking this waaaayyyy more seriously than it was intended. Secondly<p><pre><code>  double foo = 1.2;
  printf(foo);
  puts(foo);
</code></pre>
won't compile, while<p><pre><code>  double foo = 1.2;
  display(foo);
</code></pre>
works fine.<p>Incidentally I actually think display is the only thing on this list that is probably worth using, you could also probably extend it to accept multiple arguments relatively simply as well.</p>
]]></description><pubDate>Thu, 30 Jan 2020 09:59:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=22190211</link><dc:creator>Sean1708</dc:creator><comments>https://news.ycombinator.com/item?id=22190211</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22190211</guid></item></channel></rss>