<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: erlehmann_</title><link>https://news.ycombinator.com/user?id=erlehmann_</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 04 May 2026 09:57:16 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=erlehmann_" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by erlehmann_ in "Snap, Flatpak and AppImage, package formats compared"]]></title><description><![CDATA[
<p><a href="http://flatkill.org/" rel="nofollow">http://flatkill.org/</a> claims that “The sandbox is a lie”:<p>> Almost all popular applications on flathub come with filesystem=host, filesystem=home or device=all permissions, that is, write permissions to the user home directory (and more), this effectively means that all it takes to "escape the sandbox" is echo download_and_execute_evil >> ~/.bashrc. That's it.<p>> To make matters worse, the users are misled to believe the apps run sandboxed. For all these apps flatpak shows a reassuring "sandbox" icon when installing the app (things do not get much better even when installing in the command line - you need to know flatpak internals to understand the warnings).<p>I have not used flatpack. Is this description accurate? Also:<p>> Up until 0.8.7 all it took to get root on the host was to install a flatpak package that contains a suid binary (flatpaks are installed to /var/lib/flatpak on your host system). Again, could this be any easier? A high severity CVE-2017-9780 (CVSS Score 7.2) has indeed been assigned to this vulnerability. Flatpak developers consider this a minor security issue.</p>
]]></description><pubDate>Mon, 15 Oct 2018 01:00:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=18216646</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=18216646</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18216646</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Itty Bitty: Sites contained within their own links"]]></title><description><![CDATA[
<p>I strongly suggest to not use this. Instead, create URIs that contain arbitrary content with the data URI scheme: <a href="https://en.wikipedia.org/wiki/Data_URI_scheme" rel="nofollow">https://en.wikipedia.org/wiki/Data_URI_scheme</a><p>The data URI scheme is standard and widely supported, does not rely on the host bitty.site being reachable and does not need JavaScript. One can even create data URIs with a small shell script that is given a filename argument:<p><pre><code>  #!/bin/sh -eu
  printf 'data:%s;base64,%s' "$(file -bi "$1"|tr -d ' ')" "$(base64 -w 0 "$1")"</code></pre></p>
]]></description><pubDate>Thu, 05 Jul 2018 16:49:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=17464762</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=17464762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17464762</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Qwant, a European search engine that respects your privacy"]]></title><description><![CDATA[
<p>Basic web site functionality should work in any browser.</p>
]]></description><pubDate>Mon, 06 Nov 2017 00:48:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=15632777</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15632777</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15632777</guid></item><item><title><![CDATA[New comment by erlehmann_ in "A Tutorial on Portable Makefiles"]]></title><description><![CDATA[
<p>I use strace(1) look for stat(2) syscalls that fail with ENOENT. An advantage of this approach is that I do not have to imitate the C preprocessor, so parser differentials can never happen. The following default.o.do file from my blog post [1] handles the case:<p><pre><code>  #!/bin/sh
  redo-ifchange $2.c
  strace -e stat,stat64,fstat,fstat64,lstat,lstat64 -f 2>&1 >/dev/null\
   gcc $2.c -o $3 -MD -MF $2.deps\
   |grep '1 ENOENT'\
   |grep '\.h'\
   |cut -d'"' -f2 2>/dev/null\
   >$2.deps_ne
  
  read d <$2.deps
  redo-ifchange ${d#*:}
  
  while read -r d_ne; do
   redo-ifcreate $d_ne
  done <$2.deps_ne
  
  chmod a+x $3
</code></pre>
This approach is also used for building Liberation Circuit if strace is installed [2].<p>I think the compiler should output the necessary information. To quote Jonathan de Boyne Pollard [3]:<p>>  As noted earlier, no C or C++ compiler currently generates any redo-ifcreate dependency information, only the redo-ifchange dependency information. This is a deficiency of the compilers rather than a deficiency of redo, though. That the introduction of a new higher-precedence header earlier on the include path will affect recompilation is a fact that almost all C/C++ build systems fail to account for.<p>>  I have written, but not yet released, a C++ tool that is capable of generating both redo-ifchange information for included files and redo-ifcreate information for the places where included files were searched for but didn't exist, and thus where adding new (different) included files would change the output.<p>JdeBP, could you please release your tool under a free software license? I suspect it has fewer errors than the similar CMake approach [4].<p>[1] <a href="http://news.dieweltistgarnichtso.net/posts/redo-gcc-automatic-dependencies.html#dependency-graph-visualization" rel="nofollow">http://news.dieweltistgarnichtso.net/posts/redo-gcc-automati...</a><p>[2] <a href="https://github.com/linleyh/liberation-circuit/blob/master/src/default.o.do" rel="nofollow">https://github.com/linleyh/liberation-circuit/blob/master/sr...</a><p>[3] <a href="http://jdebp.eu./FGA/introduction-to-redo.html#CompilerDeficiencies" rel="nofollow">http://jdebp.eu./FGA/introduction-to-redo.html#CompilerDefic...</a><p>[4] <a href="https://github.com/Kitware/CMake/blob/master/Source/cmDependsC.cxx" rel="nofollow">https://github.com/Kitware/CMake/blob/master/Source/cmDepend...</a></p>
]]></description><pubDate>Mon, 21 Aug 2017 12:07:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=15063926</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15063926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15063926</guid></item><item><title><![CDATA[New comment by erlehmann_ in "A Tutorial on Portable Makefiles"]]></title><description><![CDATA[
<p>Please elaborate: What do you find amazing about scons?<p>Also, how does scons handle non-existence dependencies?<p>What would be a scons dependency graph for this C code?<p><pre><code>  #include<stdio.h>
  main() {
   printf("hello, world\n");
   return 0;
  }
</code></pre>
You can see a dependency graph I generated with redo here: <a href="http://news.dieweltistgarnichtso.net/posts/redo-gcc-automatic-dependencies.html#dependency-graph-visualization" rel="nofollow">http://news.dieweltistgarnichtso.net/posts/redo-gcc-automati...</a></p>
]]></description><pubDate>Sun, 20 Aug 2017 21:08:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=15060258</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15060258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15060258</guid></item><item><title><![CDATA[New comment by erlehmann_ in "A Tutorial on Portable Makefiles"]]></title><description><![CDATA[
<p>There exists DJB's redo approach [0], which i implemented [1], where dependencies and non-existence dependencies are only recorded after the build. A typical dofile is a shell script, so you do not need to learn another language. Targets also automatically depend on their own build rules (I have seen such a thing only in makefiles authored by DJB).<p>I wrote a blog post to show how to integrate dependency output for both dependency and non-existence dependency generation [2]. The game “Liberation Circuit” can be built with my redo implementation; you can output a dependency graph usable with Graphviz [4] using “redo-dot”.<p>There is only one other redo implementation that I would recommend, the one from Jonathan de Boyne Pollard [5], who rightly notices that compilers should output information about non-existence dependencies [6].<p>I would not recommend the redo implementation from Avery Pennarun [7], which is often referenced (and introduced me to the concept), mainly because it is not implemented well: It manages to be both larger and slower than my shell script implementation, yet the documentation says this about the sqlite dependency (classic case of premature optimization):<p>> I don't think we can reach the performance we want with dependency/build/lock information stored in plain text files<p>[0] <a href="http://cr.yp.to/redo.html" rel="nofollow">http://cr.yp.to/redo.html</a><p>[1] <a href="http://news.dieweltistgarnichtso.net/bin/redo-sh.html" rel="nofollow">http://news.dieweltistgarnichtso.net/bin/redo-sh.html</a><p>[2] <a href="http://news.dieweltistgarnichtso.net/posts/redo-gcc-automatic-dependencies.html" rel="nofollow">http://news.dieweltistgarnichtso.net/posts/redo-gcc-automati...</a><p>[3] <a href="https://github.com/linleyh/liberation-circuit" rel="nofollow">https://github.com/linleyh/liberation-circuit</a><p>[4] <a href="https://en.wikipedia.org/wiki/Graphviz" rel="nofollow">https://en.wikipedia.org/wiki/Graphviz</a><p>[5] <a href="http://jdebp.eu./Softwares/redo/" rel="nofollow">http://jdebp.eu./Softwares/redo/</a><p>[6] <a href="http://jdebp.eu./FGA/introduction-to-redo.html#CompilerDeficiencies" rel="nofollow">http://jdebp.eu./FGA/introduction-to-redo.html#CompilerDefic...</a><p>[7] <a href="https://github.com/apenwarr/redo" rel="nofollow">https://github.com/apenwarr/redo</a></p>
]]></description><pubDate>Sun, 20 Aug 2017 20:49:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=15060193</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15060193</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15060193</guid></item><item><title><![CDATA[New comment by erlehmann_ in "A Tutorial on Portable Makefiles"]]></title><description><![CDATA[
<p>An issue I have with make is that it can not handle non-existence dependencies. DJB noted this in 2003 [1]. To quote myself on this [2]:<p>> Especially when using C or C++, often target files depend on nonexistent files as well, meaning that a target file should be rebuilt when a previosly nonexistent file is created: If the preprocessor includes /usr/include/stdio.h because it could not find /usr/local/include/stdio.h, the creation of the latter file should trigger a rebuild.<p>I did some research on the topic using the repository of the game Liberation Circuit [3] and my own redo implementation [4] … it turns out that a typical project in C or C++ has lots of non-existence dependencies. How do make users handle non-existence dependencies – except for always calling “make clean”?<p>[1] <a href="http://cr.yp.to/redo/honest-nonfile.html" rel="nofollow">http://cr.yp.to/redo/honest-nonfile.html</a><p>[2] <a href="http://news.dieweltistgarnichtso.net/posts/redo-gcc-automatic-dependencies.html" rel="nofollow">http://news.dieweltistgarnichtso.net/posts/redo-gcc-automati...</a><p>[3] <a href="https://github.com/linleyh/liberation-circuit" rel="nofollow">https://github.com/linleyh/liberation-circuit</a><p>[4] <a href="http://news.dieweltistgarnichtso.net/bin/redo-sh.html" rel="nofollow">http://news.dieweltistgarnichtso.net/bin/redo-sh.html</a> (redo-dot gives a graph of dependencies and non-existence dependencies)</p>
]]></description><pubDate>Sun, 20 Aug 2017 20:37:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=15060146</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15060146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15060146</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Afraid of Makefiles? Don't be"]]></title><description><![CDATA[
<p>While you are right about POSIX problems (like using “local”) I actually targeted Dash and older versions of BusyBox – not Bash.<p>I plan to work on POSIX compatibility for my redo implementation.</p>
]]></description><pubDate>Sun, 20 Aug 2017 12:34:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=15058159</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15058159</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15058159</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Afraid of Makefiles? Don't be"]]></title><description><![CDATA[
<p>Why do you think the problem can not be fixed?<p>Also, have you looked at the redo tool redo-ifcreate? <a href="http://news.dieweltistgarnichtso.net/bin/redo-sh.html" rel="nofollow">http://news.dieweltistgarnichtso.net/bin/redo-sh.html</a></p>
]]></description><pubDate>Sun, 20 Aug 2017 01:07:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=15056458</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15056458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15056458</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Afraid of Makefiles? Don't be"]]></title><description><![CDATA[
<p>Almost all other systems have this flaw because they require dependencies before a build. If recording dependencies after the build, the entire problem becomes very simple. See here:<p><a href="http://news.dieweltistgarnichtso.net/posts/redo-gcc-automatic-dependencies.html" rel="nofollow">http://news.dieweltistgarnichtso.net/posts/redo-gcc-automati...</a></p>
]]></description><pubDate>Sat, 19 Aug 2017 00:42:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=15050875</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15050875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15050875</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Afraid of Makefiles? Don't be"]]></title><description><![CDATA[
<p>The following sentence about my redo implementation is wrong:<p>> In 2014, Nils Dagsson Moskopp re-implemented Pennarun redo, retargetting it at the Bourne Again shell and BusyBox.<p>I targeted the Bourne Shell (sh), not the Bourne Again Shell (bash). Also, my redo implementation contains redo-dot that paints a dependency-tree – I have not seen this otherwere.</p>
]]></description><pubDate>Sat, 19 Aug 2017 00:40:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=15050860</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=15050860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15050860</guid></item><item><title><![CDATA[New comment by erlehmann_ in "VBScript Injection via Gnome Thumbnailer"]]></title><description><![CDATA[
<p>I have only tested with GNOME Files. James Lu tested other file managers, see here: <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868705#msg46" rel="nofollow">https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868705#msg...</a><p>Quote:<p><pre><code>   * Add Enhances: caja, tumbler (>= 0.1.92~), nautilus, nemo
     These are some of the many file managers/thumbnailer programs that support
     desktop thumbnailers like exe-thumbnailer, and I have verified (at some
     point) that all of these work.</code></pre></p>
]]></description><pubDate>Wed, 19 Jul 2017 14:25:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=14804463</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14804463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14804463</guid></item><item><title><![CDATA[VBScript Injection via Gnome Thumbnailer]]></title><description><![CDATA[
<p>Article URL: <a href="http://news.dieweltistgarnichtso.net/posts/gnome-thumbnailer-msi-fail.html">http://news.dieweltistgarnichtso.net/posts/gnome-thumbnailer-msi-fail.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=14790446">https://news.ycombinator.com/item?id=14790446</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 17 Jul 2017 17:08:34 +0000</pubDate><link>http://news.dieweltistgarnichtso.net/posts/gnome-thumbnailer-msi-fail.html</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14790446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14790446</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Universal Jinja: a crazy idea for a Python-ready front end"]]></title><description><![CDATA[
<p>Yes, all of those are reasons. None of those reasons apply if users wwant something understandable, maintainable and secure.<p>Separation of concerns is a thing that can help designers, no?</p>
]]></description><pubDate>Sat, 15 Jul 2017 20:16:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=14778704</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14778704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14778704</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Universal Jinja: a crazy idea for a Python-ready front end"]]></title><description><![CDATA[
<p>Note that I made a different proposal above the quote.<p>I think SPAs are either fundamentally dishonest engineering, in the same way that a microwave wrapped in artificial wood veneer is (and a stainless steel microwave is not) or should result in such a template. If you really think that this is too much, IMO you should not make an SPA in the first place.</p>
]]></description><pubDate>Sat, 15 Jul 2017 20:08:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=14778672</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14778672</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14778672</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Universal Jinja: a crazy idea for a Python-ready front end"]]></title><description><![CDATA[
<p>Templates cause bugs. The solitary appropriate solution is an unparser – a component that walks an AST and serializes it.<p>Making sure the result conforms to the grammar of the output language without any unparser would always involve a parser.<p>> As soon as I'm looking at more than one programming or markup language in the same file, I'm looking at spaghetti code.<p>Iain Dooley, December 2011<p><a href="http://www.workingsoftware.com.au/page/Your_templating_engine_sucks_and_everything_you_have_ever_written_is_spaghetti_code_yes_you" rel="nofollow">http://www.workingsoftware.com.au/page/Your_templating_engin...</a></p>
]]></description><pubDate>Sat, 15 Jul 2017 16:29:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=14777463</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14777463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14777463</guid></item><item><title><![CDATA[New comment by erlehmann_ in "How to Learn Solidity: The Ultimate Ethereum Coding Guide"]]></title><description><![CDATA[
<p>> Ethereum contracts are unstoppable and uncensorable until a core developer loses money<p>Source: <a href="https://news.ycombinator.com/item?id=14162399" rel="nofollow">https://news.ycombinator.com/item?id=14162399</a></p>
]]></description><pubDate>Mon, 05 Jun 2017 19:40:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=14490808</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14490808</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14490808</guid></item><item><title><![CDATA[New comment by erlehmann_ in "A prototype watch, raising hope for Parkinson’s"]]></title><description><![CDATA[
<p>No answer. I wrote to Hayan Zhang <haiyan@gmail.com> btw.</p>
]]></description><pubDate>Wed, 31 May 2017 00:28:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=14449675</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14449675</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14449675</guid></item><item><title><![CDATA[New comment by erlehmann_ in "Scala: Consider syntax with significant indentation"]]></title><description><![CDATA[
<p>What kind of version number scheme does Scala use where breakage is allowed in point releases?</p>
]]></description><pubDate>Wed, 31 May 2017 00:14:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=14449619</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14449619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14449619</guid></item><item><title><![CDATA[New comment by erlehmann_ in "A prototype watch, raising hope for Parkinson’s"]]></title><description><![CDATA[
<p>I wrote Hayan Zhang the following Email with the subject line “Source code & schematics for Parkinson's device?”:<p>Hello Hayan Zhang,<p>I have read several articles about the “Emma device” you have built, but
could not find any details. Have you published source code & schematics?<p>The BBC has a GitHub repository for code related to the documentary. The
one open issue on it is from a person who wants to help their father who
has been affected by Parkinson's <<a href="https://github.com/bbc/MiD/issues/3>" rel="nofollow">https://github.com/bbc/MiD/issues/3></a>:<p>> I am hoping to design a similar item to help my father with both
> writing, and potentially in continuing other activities that his
> Parkinson's is starting to inhibit, and while the Big Life Fix episode
> covering it gave some hints at the details, there wasn't that much
> concrete information.<p>In a Reddit thread, other people also want to know how the “Emma device”
works and built it for their relatives who are afflicted by Parkinson's:
<<a href="https://www.reddit.com/r/Parkinsons/comments/5hh2fx/emmas_watch_a_few_engineering_thoughts/>" rel="nofollow">https://www.reddit.com/r/Parkinsons/comments/5hh2fx/emmas_wa...</a><p>Since you seem to have zero interest in commercializing your findings, I
do not understand why the information on the details seems hard to find.
Have you published something (like a scientific article) on the subject?<p>Greetings,</p>
]]></description><pubDate>Sun, 21 May 2017 21:04:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=14389251</link><dc:creator>erlehmann_</dc:creator><comments>https://news.ycombinator.com/item?id=14389251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14389251</guid></item></channel></rss>