<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: aeijdenberg</title><link>https://news.ycombinator.com/user?id=aeijdenberg</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 11 Jun 2026 05:39:18 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=aeijdenberg" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by aeijdenberg in "Ask HN: What Are You Working On? (December 2025)"]]></title><description><![CDATA[
<p><a href="https://github.com/continusec/htvend/" rel="nofollow">https://github.com/continusec/htvend/</a><p>htvend is a tool to help you capture any internet dependencies needed in order to perform a task.<p>It builds a manifest of internet assets needed, which you can check-in with your project.<p>The idea being that this serves as an upstream package lock file for any asset type, and that you can re-use this to rebuild your application if the upstream assets are removed, or if you are without internet connectivity.<p>Has an experimental GitHub action to integrate within your GitHub build, archiving assets to S3.</p>
]]></description><pubDate>Mon, 15 Dec 2025 10:28:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46272643</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=46272643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46272643</guid></item><item><title><![CDATA[New comment by aeijdenberg in "The Deletion of Docker.io/Bitnami"]]></title><description><![CDATA[
<p>I've been thinking a lot about this kind of thing recently - and put a prototype up of htvend [1] that allows you to archive out dependencies during an image build. The idea being that if you have a mix of private/public dependencies that the upstream dependencies can be saved off locally as blobs allowing your build process to be able to be re-run in the future, even if the upstream assets become unavailable (as appears to be the case here).<p>[1] <a href="https://github.com/continusec/htvend" rel="nofollow">https://github.com/continusec/htvend</a></p>
]]></description><pubDate>Thu, 28 Aug 2025 05:57:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=45048912</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=45048912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45048912</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Show HN: Htvend, a tool to capture internet dependencies"]]></title><description><![CDATA[
<p>Thanks for taking a look.<p>The intent was to support basic build systems accessing package eco-systems that tend to always serve the same response for the same URL.<p>Docker registries do this reasonably well, as do Maven repos.<p>It wasn't intended to be a full on proper archiving proxy (and I'll admit I hadn't heard that term - I'll look into it and see what else exists in that space).<p>The main use-case I had in mind for this is private projects, that are developed on workstations which have internet access, but are deployed to other environments using CI/CD systems with less network access. If both systems have access to a common blob store, then that can be populated with htvend build on a workstation and replayed at build time with htvend offline.<p>For that, there's no need to capture additional request information, as the focus wasn't to support getting a manifest file and being able to reliably re-download all the blobs from internet (and often those responses may have changed in the interim). And for the same reason, would expect to only need to one response per URL, per assets.json file.<p>Does that make sense?</p>
]]></description><pubDate>Sun, 03 Aug 2025 23:19:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=44780663</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=44780663</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44780663</guid></item><item><title><![CDATA[Show HN: Htvend, a tool to capture internet dependencies]]></title><description><![CDATA[
<p>htvend is a tool designed to make it easy (or at least possible), to build OCI (ie Docker) images, in a more trustworthy and reliable way.<p>That is, in a way that tightly controls which assets that they pull in so that things can be easily rebuilt without needing internet access, for situations including air-gapped networks, or simply a desire to not inadvertently bring in upstream changes while trying to make a small tweak to a private script.<p>It works by starting a local HTTP/HTTPS proxy server, then starting a subprocess with appropriate environment variables and certificate files set. It has special support for passing these into the RUN context for building of images, so that existing Dockerfiles can be used without modification.<p>Let me know what you think.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44775660">https://news.ycombinator.com/item?id=44775660</a></p>
<p>Points: 3</p>
<p># Comments: 2</p>
]]></description><pubDate>Sun, 03 Aug 2025 10:54:15 +0000</pubDate><link>https://github.com/continusec/htvend</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=44775660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44775660</guid></item><item><title><![CDATA[New comment by aeijdenberg in "The Defer Technical Specification: It Is Time"]]></title><description><![CDATA[
<p>The TS doesn't seem to provide for a way to modify return values for the function. For example the following is a common pattern in Go using defer to ensure that errors closing a writeable file are returned:<p><pre><code>    func foo() (retErr error) {
        f, err := os.Create("out.txt")
        if err != nil {
            return fmt.Errorf("error opening file: %w", err)
        }
        defer func() {
            err := f.Close()
            if err != nil && retErr == nil {
                retErr = fmt.Errorf("error closing file: %w", err)
            }
        }()
        _, err = f.Write([]byte("hello world!"))
        return err
    }</code></pre></p>
]]></description><pubDate>Thu, 20 Mar 2025 07:58:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43420670</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=43420670</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43420670</guid></item><item><title><![CDATA[New comment by aeijdenberg in "An update on Sunday’s service disruption"]]></title><description><![CDATA[
<p>We use Terraform a lot too - and most of the time it's great, but not infallible.<p>Our team managed to screw-up some pretty major DNS due to a valid terraform plan that looked OK, but in reality then deleted a bunch of records, before failing (for some reason I can't remember) before it could create new ones.<p>And of course, we forgot that although we had shortened TTL on our records, the TTL on the parent records that I think get hit when no records are found were much longer, so we had a real bad afternoon. :)</p>
]]></description><pubDate>Tue, 04 Jun 2019 06:38:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=20092481</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=20092481</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20092481</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Boeing 787 Reaches 801 MPH as a Jet Stream Packs Record-Breaking Speeds"]]></title><description><![CDATA[
<p>Slight, but important (if you don't want to run out of fuel) nit, indicated airspeed (KIAS) is not the same as true airspeed (KTAS).<p>To calculate ground speed (as required for navigation and fuel planning) you need true airspeed (not indicated) as well as wind direction and speed.<p>See some discussion here: <a href="https://www.quora.com/In-aviation-what-is-the-difference-between-IAS-CAS-EAS-and-TAS" rel="nofollow">https://www.quora.com/In-aviation-what-is-the-difference-bet...</a></p>
]]></description><pubDate>Tue, 19 Feb 2019 22:31:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=19203549</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=19203549</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19203549</guid></item><item><title><![CDATA[DTA warns blockchain is still a solution looking for a problem]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.itnews.com.au/news/dta-warns-blockchain-is-still-a-solution-looking-for-a-problem-519195">https://www.itnews.com.au/news/dta-warns-blockchain-is-still-a-solution-looking-for-a-problem-519195</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=19141788">https://news.ycombinator.com/item?id=19141788</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 12 Feb 2019 07:48:41 +0000</pubDate><link>https://www.itnews.com.au/news/dta-warns-blockchain-is-still-a-solution-looking-for-a-problem-519195</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=19141788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19141788</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Go Modules in 2019"]]></title><description><![CDATA[
<p>False only for very small values of code.<p>ie if your code itself is split into modules, they won't work (as they are imported by their full path, not relatively), and anything in your vendor dir is also ignored when used outside of a GOPATH entry.</p>
]]></description><pubDate>Wed, 19 Dec 2018 22:11:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=18720258</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=18720258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18720258</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Amazon Quantum Ledger Database"]]></title><description><![CDATA[
<p>You can certainly claim something is centralized and tamper-evident. ie demonstrate proof that something has not been mutated over time.<p>See RFC6962 Certificate Transparency logs and their consistency proofs for a widely used example.</p>
]]></description><pubDate>Wed, 28 Nov 2018 23:59:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=18556872</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=18556872</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18556872</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Show HN: Interactive implementation of the NIST Blockchain use case flow chart"]]></title><description><![CDATA[
<p>Not quite as simple as a cryptographic hash alone - remember that if the set of possible inputs can be easily enumerated, then it's trivial to find the input data by brute force.<p>There are ways to work around this, for example objecthash[0] describes a small modification that prepends the input data with 32 bytes of random data before hashing in order to prevent this.<p>[0] <a href="https://github.com/benlaurie/objecthash#redactability" rel="nofollow">https://github.com/benlaurie/objecthash#redactability</a></p>
]]></description><pubDate>Mon, 05 Nov 2018 08:23:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=18380731</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=18380731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18380731</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Go programming language secure coding practices guide"]]></title><description><![CDATA[
<p>Glad to see any doc published that gets developers thinking more about security...<p>One "trend", or rather bad habit that I've noticed a lot in discussion with other developers recently, and this doc also falls into, is that there seems to more focus on "input sanitisation" rather than "output escaping".<p>Regardless of what's been done to input, if the result is that you have a string that you need to embed into another string, then you need to know how to escape that appropriately for the context in which it's being used. Whether the data is user generated, or taken from your database, always assume that it's trying to break your app, and always escape it on output.</p>
]]></description><pubDate>Wed, 26 Apr 2017 10:03:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=14201805</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=14201805</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14201805</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Binary Transparency for Firefox"]]></title><description><![CDATA[
<p>Making a hash of the release is just a small part of it (and is the first part of what they are doing).<p>The trick is to be confident that you're getting the same hash as everyone else - and that's what requiring a proof that it be added to a CT logs gives you some level of assurance about.</p>
]]></description><pubDate>Thu, 30 Mar 2017 00:49:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=13991989</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13991989</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13991989</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Binary Transparency for Firefox"]]></title><description><![CDATA[
<p>CT significantly pre-dates the recent Symantec issues, but yes, it does provide an excellent tool for providing evidence of misissuance [0] [1] - and that's the crux of it - in order for a certificate to be considered valid in a CT world, it must present proof that it has been publicly logged.<p>[0] <a href="https://security.googleblog.com/2015/09/improved-digital-certificate-security.html" rel="nofollow">https://security.googleblog.com/2015/09/improved-digital-cer...</a>
[1] <a href="http://searchsecurity.techtarget.com/news/450411573/Certificate-Transparency-snags-Symantec-CA-for-improper-certs" rel="nofollow">http://searchsecurity.techtarget.com/news/450411573/Certific...</a>
[2]</p>
]]></description><pubDate>Thu, 30 Mar 2017 00:39:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=13991948</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13991948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13991948</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Binary Transparency for Firefox"]]></title><description><![CDATA[
<p>CT logs are designed to be able to handle queries from <i>all</i> web browsers on a daily / more frequent basis, and the output from queries is easily cacheable (and the logs can be mirrored in a read-only manner).<p>If FF is already doing any log inclusion proofs for certificates, then I think including one more (for the FF release itself) would be pretty much line noise.<p>I think an interesting question arises as to how well with the CT logs themselves would scale to handle the same kinds of certificates for all binaries, if this ends up taking off as a good idea in general. They've had to handle quite an explosion in X509 certificates over the past year or two due to Let's Encrypt. Some of Google's logs now show more than 80,000,000 certificates [0] in there - IIRC 2 years ago it was a low single digit million.<p>[0] <a href="https://crt.sh/monitored-logs" rel="nofollow">https://crt.sh/monitored-logs</a></p>
]]></description><pubDate>Wed, 29 Mar 2017 22:37:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=13991277</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13991277</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13991277</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Binary Transparency for Firefox"]]></title><description><![CDATA[
<p>If I'm understanding correctly, the plan is to piggy-back on top of the existing Certificate Transparency [0] infrastructure by issuing a regular X509 certificate per Firefox release, but for a special domain name that includes a Merkle tree hash for the files in that release, with a known suffix (".fx-trans.net").<p>In that manner they can piggy-back on top of the CT ecosystem (including existing logs, including existing search / monitoring tools, and presumably gossip if/when that's solved).<p>This seems like a really cool hack! The state of binary software distribution is really pretty scary when you think about it - techniques like this have the potential to restore a lot of confidence.<p>[0] <a href="http://www.certificate-transparency.org/" rel="nofollow">http://www.certificate-transparency.org/</a></p>
]]></description><pubDate>Wed, 29 Mar 2017 22:22:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=13991184</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13991184</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13991184</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Intent to Deprecate and Remove: Trust in Existing Symantec-Issued Certificates"]]></title><description><![CDATA[
<p>As I understand it, Chrome (unlike Firefox) does not ship its own root CA store - rather it defers to the root store of the operating system that it's running on. It does however apply some form of blacklist / additional restrictions over what the OS may allow.</p>
]]></description><pubDate>Thu, 23 Mar 2017 22:20:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=13944869</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13944869</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13944869</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Son – A minimal subset of JSON for machine-to-machine communication"]]></title><description><![CDATA[
<p>If you're looking to be able to consistently hash JSON objects you might want to look at Ben Laurie's objecthash: <a href="https://github.com/benlaurie/objecthash" rel="nofollow">https://github.com/benlaurie/objecthash</a><p>It describes a consistent way to hash an object without defining a new format.</p>
]]></description><pubDate>Tue, 14 Mar 2017 20:37:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=13871254</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13871254</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13871254</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Data on the uselessness of LinkedIn endorsements"]]></title><description><![CDATA[
<p>I'd always assumed the primary goal of LinkedIn endorsements is the same as every other email I get from LinkedIn, to keep user engagement with the site - and based on the number of colleagues I see accepting them, I'd say it's been pretty successful at achieving that goal for LinkedIn.</p>
]]></description><pubDate>Mon, 27 Feb 2017 21:46:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=13748527</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13748527</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13748527</guid></item><item><title><![CDATA[New comment by aeijdenberg in "Perspectives Project: Connect securely to https websites"]]></title><description><![CDATA[
<p>What benefits does this approach give above those offered by Certificate Transparency [0]? I was surprised to see no mention of this as related work in either the linked paper or site FAQ.<p>[0] <a href="https://www.certificate-transparency.org/" rel="nofollow">https://www.certificate-transparency.org/</a></p>
]]></description><pubDate>Fri, 30 Dec 2016 09:00:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=13283357</link><dc:creator>aeijdenberg</dc:creator><comments>https://news.ycombinator.com/item?id=13283357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13283357</guid></item></channel></rss>