<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: thurston</title><link>https://news.ycombinator.com/user?id=thurston</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 06 Apr 2026 00:18:53 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=thurston" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by thurston in "Details of the Cloudflare outage on July 2, 2019"]]></title><description><![CDATA[
<p>Sorry I didn't see the parent you were responding too, so my point is actually the same as you already made. Thanks.</p>
]]></description><pubDate>Wed, 17 Jul 2019 16:12:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=20461038</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=20461038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20461038</guid></item><item><title><![CDATA[New comment by thurston in "Details of the Cloudflare outage on July 2, 2019"]]></title><description><![CDATA[
<p>Ragel has the advantage that CPU blowups happen at compile time, rather than run-time. Other risks aside, they would have avoided this problem had they been using ragel or something similar to pre-compile their patterns into deterministic machines.</p>
]]></description><pubDate>Wed, 17 Jul 2019 16:10:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=20461012</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=20461012</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20461012</guid></item><item><title><![CDATA[New comment by thurston in "Rust at CloudFlare"]]></title><description><![CDATA[
<p>What rarely gets discussed in this case was that old, working code was modified in a critical way in order to accommodate new code when that didn't need to be done at all. It was actually a failure in the software development process.</p>
]]></description><pubDate>Sat, 19 May 2018 17:13:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=17108734</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=17108734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17108734</guid></item><item><title><![CDATA[New comment by thurston in "Additional Target Languages Return to Ragel 7"]]></title><description><![CDATA[
<p>Initial list:<p>C, C++, Objective-C, Objective-C++, ASM, Crack, C#, D, Go, Java, JavaScript, Julia, OCaml, Ruby, Rust<p>Others can be added.</p>
]]></description><pubDate>Fri, 18 May 2018 19:01:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=17104038</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=17104038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17104038</guid></item><item><title><![CDATA[Additional Target Languages Return to Ragel 7]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.colm.net/news/2018/05/18/new-target-langs.html">https://www.colm.net/news/2018/05/18/new-target-langs.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=17104003">https://news.ycombinator.com/item?id=17104003</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 18 May 2018 18:57:41 +0000</pubDate><link>https://www.colm.net/news/2018/05/18/new-target-langs.html</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=17104003</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17104003</guid></item><item><title><![CDATA[Changes to Ragel in Response to the CloudFlare Incident]]></title><description><![CDATA[
<p>Article URL: <a href="http://colm.net/news/2017/02/28/changes-to-ragel-cloudflare.html">http://colm.net/news/2017/02/28/changes-to-ragel-cloudflare.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=13751918">https://news.ycombinator.com/item?id=13751918</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 28 Feb 2017 07:13:46 +0000</pubDate><link>http://colm.net/news/2017/02/28/changes-to-ragel-cloudflare.html</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=13751918</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13751918</guid></item><item><title><![CDATA[New comment by thurston in "Cloudflare Reverse Proxies Are Dumping Uninitialized Memory"]]></title><description><![CDATA[
<p>Well doing that would mean ragel would incorrectly read one character, rather than run off forever. Personally I'd rather have the latter. Much easier to catch with memory checkers. Eventually you try to read some thing you're not allowed to read, or blow something else up, instead of just read the first byte of the int following the buffer, or whatever.<p>There would have to be an additional bounds check when issuing a goto in an error action, but doing that is contrary to the simple execution model that ragel users have come to rely on.<p>Gotta ask the question, where was the testing when they altered 7 year old code without the involvement of the original developer?</p>
]]></description><pubDate>Fri, 24 Feb 2017 11:53:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=13722799</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=13722799</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13722799</guid></item><item><title><![CDATA[New comment by thurston in "Cloudflare Reverse Proxies Are Dumping Uninitialized Memory"]]></title><description><![CDATA[
<p>Author of Ragel here.<p>An experienced Ragel programmer would know that when you start setting the EOF pointer you are enabling code paths that never executed before. Like, potentially buggy ones. Eek!</p>
]]></description><pubDate>Fri, 24 Feb 2017 06:50:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=13721617</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=13721617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13721617</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>Thanks!</p>
]]></description><pubDate>Tue, 17 Nov 2015 15:47:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=10581783</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10581783</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10581783</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>WRT Lua, not at this time, but it is one I would like to support. Won't be too much work to add it.</p>
]]></description><pubDate>Tue, 17 Nov 2015 15:46:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=10581779</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10581779</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10581779</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>Keep using them is how you overcome this ;)</p>
]]></description><pubDate>Tue, 17 Nov 2015 15:44:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=10581766</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10581766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10581766</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>At their core they target different language classes. Ragel deals with regular, whereas LPeg deals with context-free grammars.</p>
]]></description><pubDate>Tue, 17 Nov 2015 15:43:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=10581753</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10581753</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10581753</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>My pleasure, thank you for the note!</p>
]]></description><pubDate>Mon, 16 Nov 2015 20:46:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=10577031</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10577031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10577031</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>Not at this time. But yes Ragel 7 will make it much easier. The first round of new languages I added helped me polish the technique. Once 7 is out and vetted it will make sense to add more.</p>
]]></description><pubDate>Mon, 16 Nov 2015 20:46:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=10577027</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10577027</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10577027</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>Same reason you would want to use yacc to write a parser. A grammar annotated with code is a nice way to express a parser. If the language happens to be regular, you can use ragel to generate a directly executable deterministic state machine. The code is simple and fast.</p>
]]></description><pubDate>Mon, 16 Nov 2015 18:11:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=10575975</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10575975</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10575975</guid></item><item><title><![CDATA[New comment by thurston in "Ragel State Machine Compiler"]]></title><description><![CDATA[
<p>Ragel allows embedding actions into the subexpressions of a regular expression. This allows one to compose a parser using a single regular expression.</p>
]]></description><pubDate>Mon, 16 Nov 2015 14:30:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=10574589</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=10574589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10574589</guid></item><item><title><![CDATA[New comment by thurston in "Open letter to FB from protest leaders in macedonia."]]></title><description><![CDATA[
<p>help me!<p><a href="http://www.complang.org/dsnp/" rel="nofollow">http://www.complang.org/dsnp/</a></p>
]]></description><pubDate>Sat, 18 Jun 2011 00:39:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=2667607</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=2667607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2667607</guid></item><item><title><![CDATA[New comment by thurston in "Colm programming language released: best parser-writer ever"]]></title><description><![CDATA[
<p>Just plain old text as it came in. I see now that is not what you were referring to. You're talking about JSON, XML, etc I now think.<p>There is also a print_xml function, which puts the tree into XML, but it's mostly used for debugging at this point, not export to other systems. I'm hoping that with time these kinds of features will crop up.</p>
]]></description><pubDate>Wed, 18 May 2011 20:35:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=2561683</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=2561683</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2561683</guid></item><item><title><![CDATA[New comment by thurston in "Colm programming language released: best parser-writer ever"]]></title><description><![CDATA[
<p>They are related systems. DMS is much more mature.</p>
]]></description><pubDate>Wed, 18 May 2011 20:33:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=2561671</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=2561671</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2561671</guid></item><item><title><![CDATA[New comment by thurston in "Colm programming language released: best parser-writer ever"]]></title><description><![CDATA[
<p>Ya it's currently hard to find. <a href="http://d-cent.org/fsw2011/" rel="nofollow">http://d-cent.org/fsw2011/</a><p>I need help from people like you actually. What I've done.<p>1. defined the protocol<p>2. implmented it in a C++ daemon that<p><pre><code>   a) talks to other daemons

   b) serves the content managers (frontend UIs)
</code></pre>
3. written a (crappy) example content manager.<p>What needs to happen next is step 3 needs to be repeated by other people who know what they are doing. They don't need to understand the details of the protocol, they just need to understand the basic model, which is just message broadcast, distributed agreement, etc.<p>Email me for more details, will get back to you later tonight.</p>
]]></description><pubDate>Wed, 18 May 2011 20:30:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=2561662</link><dc:creator>thurston</dc:creator><comments>https://news.ycombinator.com/item?id=2561662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2561662</guid></item></channel></rss>