<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: SebastianFish</title><link>https://news.ycombinator.com/user?id=SebastianFish</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 18:07:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=SebastianFish" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by SebastianFish in "Ask HN: Language design to mitigate supply chain attacks?"]]></title><description><![CDATA[
<p>I think you have good points about the file signature and key-verification. I was hoping that we could expand the conversation around static analysis of library functionality as some languages offer features to simplify certain kinds of static analysis. For instance, Rust's borrowing semantics are a language feature that make certain memory usage attributes possible to verify statically.<p>From a run-time perspective, there are lots of instances where untrusted code has to be executed and there are various sandboxing related approaches there (running in a walled off-VM for instance). From a deployment standpoint that doesn't scale if you need to have an actual VMware instance running per package/dependency. My hope is that a language implemented over a virtual machine might be able to achieve similar levels of security with less overhead.</p>
]]></description><pubDate>Mon, 25 Oct 2021 19:11:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=28991828</link><dc:creator>SebastianFish</dc:creator><comments>https://news.ycombinator.com/item?id=28991828</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28991828</guid></item><item><title><![CDATA[Ask HN: Language design to mitigate supply chain attacks?]]></title><description><![CDATA[
<p>Question: Hacker News, if someone were designing a new programming language (or library system within an existing language) to mitigate supply chain attacks, what features would be most important to you?<p>Background: Open-source code has been an amazing boon for software productivity. However, I believe that most of the code that companies run isn't written by their own developers, it is from various packages and frameworks written by outside individuals and groups. My main focus is writing data intensive software where malicious actors, or just poorly written code, could compromise the confidentiality and/or integrity of customer data via a popular package/dependency. Better sandboxing of relatively untrusted code could be a huge boon for applications that have lots of plugins (think Chrome of VS code).<p>A few thoughts I have had on this front is limiting access of untrusted code to system calls that control file and network access is critical. Also, there would be a need to ensure that dependencies can't "takeover" a process by overwriting the call-stack to run their own code or spawning a new thread / process. Interested in your thoughts.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=28988755">https://news.ycombinator.com/item?id=28988755</a></p>
<p>Points: 2</p>
<p># Comments: 8</p>
]]></description><pubDate>Mon, 25 Oct 2021 15:16:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=28988755</link><dc:creator>SebastianFish</dc:creator><comments>https://news.ycombinator.com/item?id=28988755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28988755</guid></item><item><title><![CDATA[New comment by SebastianFish in "Show HN: Symbolica – Try our symbolic code executor in the browser"]]></title><description><![CDATA[
<p>I think the problem this product is trying to solve, making it easier to implement rigorous testing, is an important one. When I talk to junior developers I compare enterprise software development to painting. When you paint a room, most of your time is actually spent taping out all of the edges and boundaries. The verb painting is a misnomer. Similarly, it isn't a fast or easy for devs to see all of the boundary conditions in inherited code bases and write meaningful tests for them.<p>You mention in the description about testing code for all possible inputs. Are you all actually doing this behind the scenes with an SMT solver? Are you using some other proof assistant (COQ, HOL, etc) to be able to use proof-by-induction techniques and thus manage the path explosion problem?<p>I tried out an example comparing two multiplication algorithms (see below) and the tool said it couldn't find any issues in about a minute. Curious whether it will scale to larger problem sizes.<p>// implementation 1
int mult(int x, int y)
{
    return x*y;
}
// implementation 2
int slow_mult(int x, int y)
{
    int result=0;
    if(x<0)
    {
        for(int i=x; i<0; i++)
        {
            result-=y;
        }
    }
    else
    {
        for(int i=0; i<x; i++)
        {
            result+=y;
        }
    }
    return result;
}</p>
]]></description><pubDate>Thu, 09 Sep 2021 03:04:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=28465750</link><dc:creator>SebastianFish</dc:creator><comments>https://news.ycombinator.com/item?id=28465750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28465750</guid></item><item><title><![CDATA[New comment by SebastianFish in "Software engineering research is a train wreck"]]></title><description><![CDATA[
<p>I think you are speaking to one of the core tensions in formal methods. The difference between a specification and an implementation can get blurry. Where formal methods get interesting is statically proving properties about the specification.  Take a simple example of a sorting algorithm. The two most commonly proved properties of these algorithms are that they 1) return a permutation of the input list (no items removed or duplicated) and 2) that the output of the list follow some sort of ordering.<p>One way to look at things is to say the permutation and ordering property checkers are the specification and the actual sorting algorithm is the implementation.<p>To your point about the specifications being Turing complete, some tools will put restrictions on the specifications to make function termination highly likely. COQ for instance requires that recursive functions be "decreasing in their inputs" AKA that subsequent calls to the same function are passed fewer items or elements than the parent.</p>
]]></description><pubDate>Tue, 20 Jul 2021 16:20:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=27895746</link><dc:creator>SebastianFish</dc:creator><comments>https://news.ycombinator.com/item?id=27895746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27895746</guid></item><item><title><![CDATA[New comment by SebastianFish in "Software engineering research is a train wreck"]]></title><description><![CDATA[
<p>Testing different methods of development in terms of speed, cost and quality is really hard. The most convincing approach to me would be a single blind experiment to hire two software development teams and have them build to the same set of requirements in two different ways. But then it is hard to know whether you are really comparing the method of software development or the quality of the software teams. So two software teams isn't enough to get a statistically valid inference. You can see that, given software development rates, this could become a very expensive experiment.<p>Last point. I think that even writing a specification down to the level that it could be implemented using formal methods might be the biggest game changer. Agile stories rarely come even close to covering all of the potential edge cases. If we had a process that required product owners to literally think through all possible failure modes (what systems of formal methods do) and write out how to handle them then the cost of writing specifications would go way up. Per economics, I think we would end-up with simpler specifications which might be its own benefit.</p>
]]></description><pubDate>Tue, 20 Jul 2021 15:00:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=27894573</link><dc:creator>SebastianFish</dc:creator><comments>https://news.ycombinator.com/item?id=27894573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27894573</guid></item><item><title><![CDATA[New comment by SebastianFish in "GitHub Copilot"]]></title><description><![CDATA[
<p>What interests me most about the development of tools like this is how it might go on to influence the evolution of programming languages. The article that was posted on the CompCert verified C-compiler for instance. What if machine learning could make the cost of developing using more programming languages with stronger guarantees (ie rust, coq, etc) easier? Using languages with more internal checks could also help manage risk the the co-pilot gave a buggy/insecure suggestion.</p>
]]></description><pubDate>Tue, 29 Jun 2021 16:18:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=27678033</link><dc:creator>SebastianFish</dc:creator><comments>https://news.ycombinator.com/item?id=27678033</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27678033</guid></item></channel></rss>