<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: wolfspider</title><link>https://news.ycombinator.com/user?id=wolfspider</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 22 Apr 2026 08:51:41 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=wolfspider" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by wolfspider in "Skia Canvas: Browserless implementation of the HTML Canvas drawing API for node"]]></title><description><![CDATA[
<p>Automattic created node-canvas a long time ago which was based around Cairo.</p>
]]></description><pubDate>Tue, 03 Dec 2024 18:25:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=42309410</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=42309410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42309410</guid></item><item><title><![CDATA[New comment by wolfspider in "Show HN: A retro terminal text editor for GNU/Linux coded in C (C-edit)"]]></title><description><![CDATA[
<p>Well yeah, Seph is right as usual I’ve been updating my MLIR generation code to use Twine lately: <a href="https://llvm.org/doxygen/classllvm_1_1Twine.html#details" rel="nofollow">https://llvm.org/doxygen/classllvm_1_1Twine.html#details</a><p>LLVM has been using rope data structures for some time. There is more discussion about it here:<p><a href="https://lists.llvm.org/pipermail/llvm-dev/2011-July/041639.html" rel="nofollow">https://lists.llvm.org/pipermail/llvm-dev/2011-July/041639.h...</a><p>In my situation when parsing lines of code Twine stores the file path and concats the line number and column when getting the location within a file. It does this a lot so using Twine there really helps. The rope data structure can be used in a number of ways.</p>
]]></description><pubDate>Sun, 01 Sep 2024 04:50:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=41414389</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=41414389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41414389</guid></item><item><title><![CDATA[New comment by wolfspider in "Translating All C to Rust (TRACTOR)"]]></title><description><![CDATA[
<p>I’ve spent the past few months translating a C library heavy in pointer arithmetic to TypeScript. Concessions have to be made here and there but ended up making utility classes to capture some of the functionality. Structs can be represented as types since they are able to also to be expressed as unions similar to structs. These const types can have fields updated in place and inherit properties from other variables similar to passing by reference which JS can do (pass by sharing) or use a deep clone to copy. As far as affecting the underlying bytes as a type I’ve come up with something I call byte type reflection which is a union type which does self-inference on the object properties in order to flatten itself into a bytearray so that the usual object indexing and length properties automatically only apply to the byte array as it has been expressed (the underlying object remains as well). C automatically does this so there is some overhead for this that cannot be removed. Pointer arithmetic can be applied with an iterator class which keeps track of the underlying data object but sadly does count as another copy. Array splicing can substitute creating a view of a pointer array which is not optimal but there are some Kotlin-esque utilities that create array views which can be used. Surprisingly, the floating point values which I expected to be way off and can only express as a number type are close enough. I use Deno FFI so plenty of room to go back to unmanaged code for optimizations and WASM can be tapped into easily. For me those values are what is important and it does the job adequately. The code is also way more resilient to runtime errors as opposed to the C library which has a tendency to just blow up. TLDR; Don’t let it stop you until you try because you might just be surprised at how it turns out. If the function calls of a library are only 2-3 levels deep how much “performance” are you really gaining by keeping it that way? Marshalling code is the usual answer and Deno FFI does an amazing job at that.</p>
]]></description><pubDate>Wed, 31 Jul 2024 02:39:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=41115989</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=41115989</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41115989</guid></item><item><title><![CDATA[New comment by wolfspider in "LeanDojo: Theorem Proving in Lean Using LLMs"]]></title><description><![CDATA[
<p>I was recently using Low* with ChatGPT and amazed it could actually explain it to me so I’m looking forward to using this.</p>
]]></description><pubDate>Mon, 29 Jul 2024 13:59:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=41100503</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=41100503</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41100503</guid></item><item><title><![CDATA[New comment by wolfspider in "Ask HN: What's Prolog like in 2024?"]]></title><description><![CDATA[
<p>Formal verification uses Prolog a lot. System on TPTP at U of Miami utilizes this for many of the formally verified tests on there. It is just a more intense discipline than general programming which is why I’m perpetually drawn to it trying to find more real world applications. It is not exactly Prolog but close enough to mention the similarities.</p>
]]></description><pubDate>Fri, 19 Jul 2024 00:31:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=41001030</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=41001030</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41001030</guid></item><item><title><![CDATA[New comment by wolfspider in "H.264 Is Magic (2016)"]]></title><description><![CDATA[
<p>Well sure, but the hardware encode and decode isn’t completely widespread yet. I’ve been patiently waiting for what has felt like an eternity. From the developer perspective everyone needs to have access to it or I’m just sitting on my hands waiting for the capabilities to trickle down to the majority of users. Hopefully more users will purchase hardware if it features AV1 encode/decode. They need a logo that says “AV1 inside” or something. So, for example only the iPhone 15 pro offers hardware decode so far in the iPhone lineup.</p>
]]></description><pubDate>Fri, 14 Jun 2024 23:47:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=40686261</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=40686261</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40686261</guid></item><item><title><![CDATA[New comment by wolfspider in "ROOT: analyzing petabytes of data scientifically"]]></title><description><![CDATA[
<p>The part of Root I use is Cling the C++ interpreter along with Xeus in a Jupyter notebook. I decided one night to test the fastest n-body from benchmarkgames comparing Xeus and Python 3. With Xeus I get 15.58 seconds and running the fastest Python code with Python3 kernel, both on binder using the same instance, I get 5 minutes. Output is exactly the same for both runs. Even with an overhead tax for running dynamic C++ at ~300% for this program Cling is very quick. SIMD and vectorization were not used just purely the code from benchmarkgames. I use Cling primarily as a quick stand-in JIT for languages that compile to C++.</p>
]]></description><pubDate>Sat, 01 Jun 2024 17:42:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=40547664</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=40547664</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40547664</guid></item><item><title><![CDATA[New comment by wolfspider in "Looking into an apparently scammy looking zsh plugin manager called “zi”"]]></title><description><![CDATA[
<p>Well then there is Emacs which is like an entire ripscrip BBS in your terminal if you configure it that way. If the Lisp you hand edit to actually make the plugin start up works you may want to also see what it’s doing apparently. Even though that happens sometimes Emacs is very good at what it does.</p>
]]></description><pubDate>Tue, 09 Apr 2024 01:52:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=39975601</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=39975601</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39975601</guid></item><item><title><![CDATA[New comment by wolfspider in "C++ left arrow operator (2016)"]]></title><description><![CDATA[
<p>MFC also has CComPtrBase which uses & to represent pointer lifetimes to COM objects such as while(pEnum->Next(1, &pFilter, &cFetched) == S_OK). Especially fun when debugging DirectShow filtergraphs someone made in the UI completely. There is more of an explanation here: <a href="https://devblogs.microsoft.com/oldnewthing/20221010-00/?p=107269" rel="nofollow">https://devblogs.microsoft.com/oldnewthing/20221010-00/?p=10...</a></p>
]]></description><pubDate>Mon, 25 Mar 2024 03:22:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=39812595</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=39812595</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39812595</guid></item><item><title><![CDATA[New comment by wolfspider in "Pains of building your own billing system"]]></title><description><![CDATA[
<p>I built one for the government keeping track of licensed professionals and receiving their payments for things reported in the field (mobile first web app). It collected over a quarter million dollars in 30-40 dollar payments with different tiers, refunds, overrides, and even penalties for non-payment all while being PCI compliant. One thing that helped a lot- create an auth system that lets the admin impersonate the customer to walk them through it. It’s a tough paradigm to start with but pays off immensely. Another was generating excel files and reports on demand from any view of the data in the app. One of the developers on the project implemented a simple state machine for payment histories and stored it in a number of tables with FK constraints. Do not do this! That means in the future your app will need to deserialize every customer’s history and after a few years the app will grind to a halt. This was the one issue with the app looking back. A state machine looks like a good fit for billing but if my future self could go back in time and warn everyone it would be with this one common problem or I wouldn’t even make this comment in the first place. If you do consider using a state machine just create thousands of customers with long detailed histories up front and if you can load them all up quickly then that is a good sign. Your billing system will only perform as well as you can transform and index data from customer history in bulk.</p>
]]></description><pubDate>Mon, 26 Feb 2024 17:20:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=39514014</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=39514014</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39514014</guid></item><item><title><![CDATA[New comment by wolfspider in "Intel's Humbling"]]></title><description><![CDATA[
<p>My own humble opinion is that Intel has always suffered from market cannibalization. They are a brand I look for but many times the iteration of products will force me to go a generation or two older because I can’t argue with the price and features. By the time I was sold on a NUC they were discontinued. I wanted a discrete GPU when they announced Xe but it has become Xe ARC alchemist, battlemage, celestial, and druid. By the time I’m ready to spend some money it will become something else usually. Also, they should have snapped up Nuvia. I’m still rooting for them but really if they could streamline their products and be willing to take a leap of faith on others in the same space it would help out a lot.</p>
]]></description><pubDate>Wed, 31 Jan 2024 02:36:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39199078</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=39199078</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39199078</guid></item><item><title><![CDATA[New comment by wolfspider in "The SuperH-3, part 1: Introduction (2019)"]]></title><description><![CDATA[
<p>Was really looking forward to the j-core project and got into SH4 emulating the Dreamcast port of NetBSD which is currently available for the latest version which is 9.3 I believe.<p><a href="http://wiki.netbsd.org/ports/dreamcast/" rel="nofollow">http://wiki.netbsd.org/ports/dreamcast/</a><p>GXemul is what I used at the time.<p><a href="https://gavare.se/gxemul/gxemul-stable/doc/machine_dreamcast.html" rel="nofollow">https://gavare.se/gxemul/gxemul-stable/doc/machine_dreamcast...</a><p>There are also lots of interesting things going on with NAOMI emulation on the gaming side. All of it is very hackable and j-core would have made a great addition to that.</p>
]]></description><pubDate>Mon, 22 Jan 2024 03:38:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=39085908</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=39085908</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39085908</guid></item><item><title><![CDATA[New comment by wolfspider in "Decompilation of Paper Mario for N64"]]></title><description><![CDATA[
<p>I’m just blown away by how clean the code is for the mod version and how well the documentation is written.</p>
]]></description><pubDate>Sun, 14 Jan 2024 02:00:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=38986678</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=38986678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38986678</guid></item><item><title><![CDATA[New comment by wolfspider in "Hard-to-swallow truths they won't tell you about software engineer job"]]></title><description><![CDATA[
<p>The time you spend on projects is, according to what the PM tells sales, two weeks for a feature and three weeks for bare minimum requirements new product. Outside of that your own company will guilt you into some feeling of inverse wage theft where you make up for it by donating your free time. Realistically, three months to build an app you can demo is tight but those are competitive timelines and you want to be competitive don’t you? AI I’m sure has skewed this towards less effort to meet those timelines (I hope). Another hard to swallow truth is that sometimes you are just given a project there is no optimal solution for because you were meant to fail at it. Usually it’s a problem client or impossible task. The more skilled you are the more likely it gets assigned to you. Developers that get to cherry-pick all of their assignments are also the ones that get to lie about their time allocations on projects (to add insult to injury). If you are a new hire you will be doing a lot of their work for them so climbing up the ladder takes a lot of humility. Most devs super concerned about other people’s mistakes usually cause a ton of problems themselves and this concern is directly related to all the things they are actually hiding/covering up in reality. It’s not uncommon to find that the Super Saiyan coder is actually keeping a proverbial building from falling down with a toothpick but they are very concerned about the formatting of everybody’s code. Younger developers think, by default, everything is crap but they don’t even bother to hide any of their screwups and they have the energy to keep screwing up for a long time and at an accelerated pace. This, ironically, does mean more money for the company so hiring a lot of young developers is good for the bottom line and makes customers seem very engaged.</p>
]]></description><pubDate>Wed, 08 Nov 2023 18:39:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=38194881</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=38194881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38194881</guid></item><item><title><![CDATA[New comment by wolfspider in "Willingness to look stupid"]]></title><description><![CDATA[
<p>Intelligence is cultural and I think many people don’t realize that. If I were to be dropped off in a random place on Earth I would encounter people, most likely, I wouldn’t be able to communicate with and even if they did understand me based upon who they are I may seem very stupid. In the wilderness I don’t have a lot of real survival skills and if someone discovered what I was doing to survive I may come off as very stupid in that context as well. Lots of examples and scenarios for this. For myself I have to consider things like just because someone hasn’t read history or literature and doesn’t understand the references I’m making does that make them stupid? Does their culture even concern itself with these things? Who am I to judge ultimately what makes someone stupid or not?</p>
]]></description><pubDate>Thu, 21 Oct 2021 14:59:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=28945412</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=28945412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28945412</guid></item><item><title><![CDATA[New comment by wolfspider in "Afternotes III: The Lonely Crowd Within"]]></title><description><![CDATA[
<p>Well as much as I can understand the author of this article wanting to get past Riesman’s ideas in “The Lonely Crowd” the time period his predictions occur is during the age of “incipient decline” which is definitely right now and hasn’t ended yet. I do think Riesman predicted the rise of social media in the context of other-directedness without directly describing social media itself. Riesman’s work is still relevant but sure- it’s time for new voices to be heard.</p>
]]></description><pubDate>Wed, 07 Jul 2021 21:11:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=27765773</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=27765773</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27765773</guid></item><item><title><![CDATA[New comment by wolfspider in "Software Verification and Analysis Using Z3"]]></title><description><![CDATA[
<p>Well, optimizing similar to how Rust guides the developer to write more optimized code. Comparing them is comparing apples to oranges however. There are many ways to get there. With Z3 you can do symbolic testing and it’s very much about defining if the expected output of the constructed IR is the same as the real output. When it comes to the IR I like to think of Z3 as almost an abstract assembler. Usually a separate language altogether is assembled via the IR that’s produced based on the rules given to SMT. LLVM optimization occurs after it’s been “assembled” but it’s the rules in place given to SMT which guides the developer to write code which can be optimized better by LLVM. Otherwise you could just write anything and hope that LLVM optimizes it. Personally, I wouldn’t want an extra application that tries to silently fix things beyond what LLVM does with IR because it would feel compulsory for everything. There should be an end goal for what it’s optimizing and why in the form of a proof or lemma for it to make sense in the context of Z3. So yes, definitely possible but probably more useful if you are building a new compiler for a new platform rather than trying to do better than an existing one.</p>
]]></description><pubDate>Sun, 31 Jan 2021 01:52:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=25974988</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=25974988</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25974988</guid></item><item><title><![CDATA[New comment by wolfspider in "Verified Programming in F*: A Tutorial"]]></title><description><![CDATA[
<p>I would also say take a look at Bosque it is also from the same camp as F* but much simpler to use Z3 with.</p>
]]></description><pubDate>Mon, 04 Jan 2021 16:59:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=25634081</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=25634081</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25634081</guid></item><item><title><![CDATA[New comment by wolfspider in "Engineers, not racers, are the true drivers of success in motor sport"]]></title><description><![CDATA[
<p>For me between 2000-2005 F1 was fun to watch though after 2005 there were too many regulations and all the cars were too similar. If you want to see some overtaking and drama those were some great races.</p>
]]></description><pubDate>Sat, 17 Oct 2020 03:04:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=24807151</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=24807151</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24807151</guid></item><item><title><![CDATA[New comment by wolfspider in "The evidence which suggests that Covid-19 is not a naturally evolved virus [pdf]"]]></title><description><![CDATA[
<p>The evidence is pretty compelling and I’ve suspected something was up the whole time in fact I began social distancing November of last year after hearing reports of a mystery virus. At some point in my life I met a mechanical engineer while helping out a friend who lost his job. This guy happened to be his neighbor and was the only one who was willing to run an electrical cable to my friend’s unit for a small sum since his electric got cut off. This guy explains he was working in a lab that did continuous culture experiments and explained how it worked. He had the blueprints in his unit so I had no reason to doubt him and paperwork from the lab. Long story short he quit due to military influence on the project and was pushed out over his concerns which were ethical in nature. He opened my eyes to the fact a virus can be evolved rapidly and made extremely resistant without specific genetic modification. A little bit of googling and I could see the same company was involved in research going on in that Wuhan lab. The point here is how do we define “modified” as it is certainly possible through rapid continuous cultures and selective survival of strains any virus can be modified. This happened in the early aughts and so it’s been nearly two decades this research technique has been in play. If it wasn’t for that chance encounter I’d naturally be more skeptical about possible modifications of the virus but just so happens that I’m not as a result.</p>
]]></description><pubDate>Sat, 18 Jul 2020 04:05:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=23878808</link><dc:creator>wolfspider</dc:creator><comments>https://news.ycombinator.com/item?id=23878808</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23878808</guid></item></channel></rss>