<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: strmpnk</title><link>https://news.ycombinator.com/user?id=strmpnk</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 12:26:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=strmpnk" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by strmpnk in "Irish police to be given powers over passwords"]]></title><description><![CDATA[
<p>I had a diplomatic passport for many years as a kid. It was definitely handy in our case as cops were quite corrupt where we were living and would try to con us out of money all the time. I don't know how far it'd go in court or under a serious warrant but in practice they always left us alone once we showed our passports.</p>
]]></description><pubDate>Mon, 14 Jun 2021 23:15:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=27509573</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=27509573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27509573</guid></item><item><title><![CDATA[New comment by strmpnk in "New proof reveals that graphs with no pentagons are fundamentally different"]]></title><description><![CDATA[
<p>Quanta Magazine does an excellent job with balancing accessible writing and advanced topics. It's just enough to get someone interested in the problem and the basic ideas to start thinking about it.</p>
]]></description><pubDate>Mon, 26 Apr 2021 16:58:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=26944869</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=26944869</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26944869</guid></item><item><title><![CDATA[New comment by strmpnk in "Elixir and Phoenix after two years"]]></title><description><![CDATA[
<p>I wouldn’t call twice as fast neck and neck (others seem to show that the old interpreter is neck and neck) but the primitive JIT is clearly pulling ahead here.</p>
]]></description><pubDate>Wed, 07 Apr 2021 12:48:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=26724060</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=26724060</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26724060</guid></item><item><title><![CDATA[New comment by strmpnk in "Elixir and Phoenix after two years"]]></title><description><![CDATA[
<p>I was curious to see what my JIT build looked like for me so I ran the following: <a href="https://gist.github.com/cararemixed/c232b888b9dbdaeb67967f357a3605df" rel="nofollow">https://gist.github.com/cararemixed/c232b888b9dbdaeb67967f35...</a><p>This shows a significantly different story between the two with at least similar code. Note I am not trying to optimize for the fastest factorial here as both can be made much quicker but roughly equivalent code seems to tell a different story for me.<p>(NOTE: I put the code in a module as iex interpreted expressions on the top level are always slower than compiled modules, even when pasting them into iex. Doing the same for Ruby didn't show any difference for me.)</p>
]]></description><pubDate>Tue, 06 Apr 2021 03:09:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=26707585</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=26707585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26707585</guid></item><item><title><![CDATA[New comment by strmpnk in "A few notes on message passing"]]></title><description><![CDATA[
<p>This is sort of what Pony did with its ORCA based GC. It has some tricky edge cases to optimize in practice but it can be made to work especially well if data is immutable.</p>
]]></description><pubDate>Mon, 22 Mar 2021 09:15:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=26538417</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=26538417</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26538417</guid></item><item><title><![CDATA[New comment by strmpnk in "A few notes on message passing"]]></title><description><![CDATA[
<p>The analog for that would be shared literals which are not copied (super important for small map overhead reduction if the constructor initialized a fix set of keys like elixir structs as the key index is shared). The persistent_term module allows any value to be registered as such at runtime and avoids a lot of caveats that came with mochi_global and the like. While they aren’t ref counted it can definitely help cut down on copying in my experience.</p>
]]></description><pubDate>Mon, 22 Mar 2021 08:53:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=26538286</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=26538286</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26538286</guid></item><item><title><![CDATA[New comment by strmpnk in "Browsers eating RAM"]]></title><description><![CDATA[
<p>I’d suppose some of it relates to sites with heavy ads. Safari with no extensions will likely require more resources which makes the comparison a little skewed vs Safari with some ad blocker support added via extensions.<p>It looks like their test includes plenty of ad heavy sites like news articles which seems to confirm that the results are cherry picked.</p>
]]></description><pubDate>Thu, 18 Feb 2021 15:13:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=26180705</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=26180705</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26180705</guid></item><item><title><![CDATA[New comment by strmpnk in "Ask HN: Does your employer want you to state pronouns in email signature?"]]></title><description><![CDATA[
<p>I’m trans and agree with this, though I offer another reason to avoid making it compulsory.<p>Before I came out I felt very awkward with regards to my own pronoun display. I wasn’t ready on one hand and on the other I felt terrible seeing other pronouns even if it was attached to my deadname only.<p>I’d encourage people to do it if they’re comfortable with it on a personal level as it can be a very personal thing. I also want to thank all of those who do add it. It’s a big deal for many of us and can make a real difference in exchange for very little effort.</p>
]]></description><pubDate>Thu, 14 Jan 2021 14:32:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=25776700</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=25776700</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25776700</guid></item><item><title><![CDATA[New comment by strmpnk in "Oso – open-source policy engine for authorization in Rust"]]></title><description><![CDATA[
<p>I looks like it’s written in Rust which isn’t super special but would be far easier to embed as a library in other languages compared to Go in OPA’s case. Polar also seems like a nicer policy language (strong Prolog vibes) though this is subjective as I’ve not done a deep comparison yet.</p>
]]></description><pubDate>Wed, 16 Dec 2020 14:14:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=25442665</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=25442665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25442665</guid></item><item><title><![CDATA[New comment by strmpnk in "Bunnie's Precursor Crowdfunding Begins"]]></title><description><![CDATA[
<p>This is true, but the difficulty of making a general purpose FPGA fabric manipulate generic bitstream descriptions in an undetectable way is much harder than putting hidden backdoors in well defined ISAs. What amount of hardware validation is reasonable?<p>It depends on what you'd like to accomplish, but given that powerful FPGAs are now more affordable and plenty of great FPGA friendly libraries are emerging which work with open source tools, the barrier for Soft-CPU implementations has lowered significantly. This sort of project looks great for cases where trusting blackbox chips was questionable.</p>
]]></description><pubDate>Sun, 01 Nov 2020 19:50:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=24961964</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24961964</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24961964</guid></item><item><title><![CDATA[New comment by strmpnk in "Show HN: Compose Key on macOS"]]></title><description><![CDATA[
<p>The other plus of text replacement is synchronization. I have a bunch of LaTeX style symbol names mapped on my Mac but they work just as well on my phone. I’m typing this on a phone and \Omega is automatically replaced with Ω or a favorite of mine \shrug becomes ¯\_(ツ)_/¯.<p>I also spend time on Windows and nothing seems to come close to this convenient (win-. has a few useful things like the character picker panel in macOS but to get more, tools like autohotkey feel really cumbersome).</p>
]]></description><pubDate>Tue, 22 Sep 2020 14:16:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=24554580</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24554580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24554580</guid></item><item><title><![CDATA[New comment by strmpnk in "Bitstring Matching and Construction in OCaml"]]></title><description><![CDATA[
<p>I don't think this is the issue the prior article mentions about the bit string syntax. It's a notational problem paired with the combination of bit numbering and byte endianness.<p>The article makes it look trivial but if you note the ASCII diagram starts by labeling each byte-row with 7 not 0. Without some way to switch bit numbering (kind of like bit endianness) of the entire expression, we can't make something that looks like continuous bits in one view look continuous in the other.<p>A reduced example:<p><pre><code>     7   6   5   4   3   2   1   0
   ------------------------+-------+
 0   5         X         0 |   Y   |
   ------------------------+-------+
 1  13            X              6
</code></pre>
Here we can't say <<Y:2/little, X:14/little>> (Y is bits [0,1], X is bits [2,15]) because we need to read <<X1:6/little, Y:2/little, X2:8/little>> (X1 is bits [0,5], Y is bits [6,7], X2 is bits [8,15]).<p>The interpretation of the contents of those bits will be done in "little endian order" (odd term since endianness is a byte order not bit numbering concern) as the expression says but because Erlang or similar syntax has no knowledge of the bit numbering we have in this diagram, it can't automatically assume that the first bit is numbered 7 not 0.<p>Laying the bytes out on a line makes the notational problem more obvious:<p><pre><code>     7   6   5   4   3   2   1   0 |  15  14  13  12  11  10  9   8
   ------------------------+-------+---------------------------------
     5         X1        0 |   Y   | 13            X2             6
   ------------------------+-------+---------------------------------
</code></pre>
Even if we know that we interpret each number with a given endianness, the bit stream numbering here needs to be expressed separately at the top level. Generally, this is why serialized protocols prefer to start bit numbering at 0 like the written in the IPv4 header example.</p>
]]></description><pubDate>Tue, 22 Sep 2020 13:19:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=24554063</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24554063</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24554063</guid></item><item><title><![CDATA[New comment by strmpnk in "Implement BeamAsm – A JIT for Erlang/OTP"]]></title><description><![CDATA[
<p>It does apply to Elixir. It will help all around performance but more so it does this on a per-instruction level by reducing dispatch cost in that the interpreter pays (as well as managing to specialize things a little better than what the fixed instruction tables can express).<p>To get an idea of the instruction stream of the BEAM (not the same as .beam asm), you can use the erts_debug module:<p><pre><code>    iex> :erts_debug.df(String)
</code></pre>
This will dump a BEAM machine instruction stream to a file named Elixir.String.dis in your current working directory. You'll see things like:<p><pre><code>    000000001B81AFB0: i_func_info_IaaI 0 `'Elixir.String'` `at` 2 
    000000001B81AFD8: is_integer_fx f(000000001B81AFB0) x(1) 
    000000001B81AFE8: is_ge_literal_fxc f(000000001B81B008) x(1) `0` 
    000000001B81B000: i_call_only_f loc(`'Elixir.String'`:`do_at`/2) 
    000000001B81B008: allocate_tt 2 2 
    000000001B81B010: move_window2_xxy x(1) x(0) y(0) 
    000000001B81B018: i_call_f loc(`'Elixir.String'`:`length`/1) 
    000000001B81B020: i_plus_xyjd x(0) y(0) j(0) x(0) 
    000000001B81B030: is_ge_literal_fxc f(000000001B81B060) x(0) `0` 
    000000001B81B048: move_shift_yxx y(1) x(0) x(1) 
    000000001B81B050: i_call_last_fQ loc(`'Elixir.String'`:`do_at`/2) 2 
    000000001B81B060: move_deallocate_return_cQ `nil` 2
</code></pre>
Each of those instructions are what the .beam file loader currently generates. With the JIT, these will be replaced by machine code.</p>
]]></description><pubDate>Fri, 11 Sep 2020 19:43:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=24446561</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24446561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24446561</guid></item><item><title><![CDATA[New comment by strmpnk in "Scaling Erlang Developer Experience at WhatsApp [pdf]"]]></title><description><![CDATA[
<p>I remember that year. I was giving a talk at EF during the same time slot but the schedule originally had me in the large room and they had a much smaller one.<p>When the news of the acquisition hit, everyone wanted to see the WhatsApp talk. The organizers knew this so we swapped rooms. So, I started my talk by asking if anyone in the room was here for the WhatsApp talk and told them they could quietly leave and I wouldn't mind and a bunch of people got up.<p>Heheh. I don't blame them. I didn't really like my talk and Rick Reed is very good at what he does and the talk is no exception.</p>
]]></description><pubDate>Fri, 11 Sep 2020 17:52:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=24445383</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24445383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24445383</guid></item><item><title><![CDATA[New comment by strmpnk in "Implement BeamAsm – A JIT for Erlang/OTP"]]></title><description><![CDATA[
<p>This is far from the first JIT effort for BEAM. I'm sure the authors have rolled many years of learnings and experience into this one. Still, you make a good point, it will need a lot of testing by the community before I'd trust it in production.</p>
]]></description><pubDate>Fri, 11 Sep 2020 16:52:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=24444665</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24444665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24444665</guid></item><item><title><![CDATA[New comment by strmpnk in "Elixir Is Erlang, not Ruby"]]></title><description><![CDATA[
<p>I believe the distribution layer built on top of ETS and DETS you’re trying to name is mnesia. It supports distribution and allows a variety of interesting topologies. It’s not the only distributed data store available on the BEAM but it’s well tested, mature, and comes as part of the OTP libraries.</p>
]]></description><pubDate>Tue, 08 Sep 2020 14:15:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=24408578</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24408578</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24408578</guid></item><item><title><![CDATA[New comment by strmpnk in "Elixir Is Erlang, not Ruby"]]></title><description><![CDATA[
<p>I can also mirror this general guideline. I've run 250+ node erlang clusters just fine in the past. There were some caveats to how some built-in OTP libraries behaved but they were easy to replace or workaround in the past.<p>That was many years ago as well. The distributed erlang story has improved with more recent releases (better performance on remote monitors for example) which might push the number a little higher than 300 if you are careful. Keep in mind the default style of clustering is fully connected so there is some danger in managing that many network connections (quadratically scaling for each node added) during network partitions which can be a problem if you're not tuning things like TCP's TIME_WAIT for local networking conditions.<p>Even better, these days there are great libraries like partisan (<a href="https://github.com/lasp-lang/partisan" rel="nofollow">https://github.com/lasp-lang/partisan</a>) which can scale to much larger cluster sizes and can be dropped in for most distributed erlang uses cases w/o much effort.</p>
]]></description><pubDate>Mon, 07 Sep 2020 14:34:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=24399679</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=24399679</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24399679</guid></item><item><title><![CDATA[New comment by strmpnk in "W64devkit: A Portable C and C++ Development Kit for Windows"]]></title><description><![CDATA[
<p>WSL is available on Home (including WSL2, you just don’t get access to all of hyper-v even if it’s running).</p>
]]></description><pubDate>Mon, 25 May 2020 14:48:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=23301619</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=23301619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23301619</guid></item><item><title><![CDATA[New comment by strmpnk in "OTP 23"]]></title><description><![CDATA[
<p>Much of the erl_interface functionality prefixed with erl_ names has been deprecated since OTP 22 and has been removed. The API has shifted to newer ei_ prefixed functions. I believe there are some new deprecations in place as well which you can find the longer form release notes.<p>erl_interface itself is not going away but it is evolving with the BEAM VM. Deprecation warnings should be checked when compiling code on each major release to avoid surprises as features are usually deprecated for one release and then removed in the next release each year. The erl_interface documentation should be up to date with regards to new APIs and might be worth browsing again to get an idea of the what changes look like.</p>
]]></description><pubDate>Wed, 13 May 2020 23:57:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=23173342</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=23173342</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23173342</guid></item><item><title><![CDATA[New comment by strmpnk in "“What Alan Kay Got Wrong About Objects”"]]></title><description><![CDATA[
<p>It’s technically the receive primitive doing this using the after clause. The addition of unique references and selective receive then allows “call” style interactions to built (like gen_server).<p>Likewise, links and monitors are used for lifetime concerns instead of reference counting actors like Pony or using a global tracing collector. This has some advantages and disadvantages but for the most part I personally find it far more practical than other models which are more like the classic actor model.</p>
]]></description><pubDate>Mon, 18 Nov 2019 14:24:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=21564497</link><dc:creator>strmpnk</dc:creator><comments>https://news.ycombinator.com/item?id=21564497</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21564497</guid></item></channel></rss>