<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: dhuan_</title><link>https://news.ycombinator.com/user?id=dhuan_</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 03 Jul 2026 09:11:02 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=dhuan_" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What are you working on? (May 2026)"]]></title><description><![CDATA[
<p>I have been working on two opensource tools:<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a>
Command line utility that lets you build APIs with just one command.<p><a href="https://github.com/dhuan/dop" rel="nofollow">https://github.com/dhuan/dop</a>
JSON/YAML manipulation with AWK style approach.</p>
]]></description><pubDate>Sun, 10 May 2026 23:11:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48089114</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=48089114</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48089114</guid></item><item><title><![CDATA[New comment by dhuan_ in "Lute: A Standalone Runtime for Luau"]]></title><description><![CDATA[
<p>well done! wouldn't it nice if something like this existed in Lua as well (or maybe it does and I haven't seen it yet)?<p>I've built a data transforming tool powered by Lua[1] and would definitely like to benefit from an general purpose api/library like Lute.<p>1: <a href="https://github.com/dhuan/dop" rel="nofollow">https://github.com/dhuan/dop</a></p>
]]></description><pubDate>Sat, 25 Apr 2026 22:00:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47904967</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=47904967</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47904967</guid></item><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What Are You Working On? (April 2026)"]]></title><description><![CDATA[
<p>I have been working on two opensource tools:<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a><p>^Command line utility that lets you build APIs with just one command.<p><a href="https://github.com/dhuan/dop" rel="nofollow">https://github.com/dhuan/dop</a><p>^JSON/YAML manipulation with AWK style approach.</p>
]]></description><pubDate>Sun, 12 Apr 2026 23:21:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47745547</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=47745547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47745547</guid></item><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What are you building that's not AI related?"]]></title><description><![CDATA[
<p>I have been working on two opensource tools:<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a><p>^Command line utility that lets you build APIs with just one command.<p><a href="https://github.com/dhuan/dop" rel="nofollow">https://github.com/dhuan/dop</a><p>^JSON/YAML manipulation with AWK style approach.</p>
]]></description><pubDate>Thu, 09 Apr 2026 09:02:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47701024</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=47701024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47701024</guid></item><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What dev tools do you rely on that nobody talks about?"]]></title><description><![CDATA[
<p>For me it has to be mock. With it I can create and automate APIs easily.<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a></p>
]]></description><pubDate>Wed, 01 Apr 2026 19:44:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47605600</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=47605600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47605600</guid></item><item><title><![CDATA[Show HN: Dop, Awk-like processing for JSON/YAML/TOML with Lua]]></title><description><![CDATA[
<p>dop reads JSON, YAML, or TOML from stdin, walks the structure field by field, and lets you transform values with Lua. It can also query nested paths and
convert between formats.<p>It weights just 800kb and you don't need Lua installed in your pc.<p>A few examples:<p>echo '{"list":[1,2,3]}' | dop -e '
if type(VALUE) == "number" then
set(VALUE * 2)
end
'
# => {"list":[2,4,6]}<p>echo '{"data":{"some_list":[1,2,3]}}' | dop -q data.some_list
# => [1,2,3]<p>What I wanted was:
- something simpler to reason about for non-trivial transforms
- one tool for JSON/YAML/TOML
- embedded scripting without needing Lua installed separately<p>Repo:
<a href="https://github.com/dhuan/dop" rel="nofollow">https://github.com/dhuan/dop</a><p>Any feedback is welcome.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47547070">https://news.ycombinator.com/item?id=47547070</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 27 Mar 2026 19:20:17 +0000</pubDate><link>https://github.com/dhuan/dop</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=47547070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47547070</guid></item><item><title><![CDATA[New comment by dhuan_ in "A Faster Alternative to Jq"]]></title><description><![CDATA[
<p>I agree, even trivial tasks require us to go back to jq's manual to learn how to write their language.<p>this and other reasons is why I built:
<a href="https://github.com/dhuan/dop" rel="nofollow">https://github.com/dhuan/dop</a></p>
]]></description><pubDate>Fri, 27 Mar 2026 19:18:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47547045</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=47547045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47547045</guid></item><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What Are You Working On? (March 2026)"]]></title><description><![CDATA[
<p>mock, an API creation and testing utility. Any feedback is welcome.<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a></p>
]]></description><pubDate>Mon, 09 Mar 2026 00:49:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47303442</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=47303442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47303442</guid></item><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What are you working on? (January 2026)"]]></title><description><![CDATA[
<p>mock, an API creation and testing utility. Any feedback is welcome!<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a></p>
]]></description><pubDate>Sun, 11 Jan 2026 23:42:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46581778</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=46581778</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46581778</guid></item><item><title><![CDATA[New comment by dhuan_ in "Charles Proxy"]]></title><description><![CDATA[
<p>I’ve found tools like Charles really useful for understanding what’s happening on the wire. When I need something more repeatable (tests, offline work), I usually reach for a mock server instead. I ended up building a small one for my own use and later open-sourced it:<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a></p>
]]></description><pubDate>Sat, 20 Dec 2025 11:36:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46335447</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=46335447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46335447</guid></item><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What Are You Working On? (December 2025)"]]></title><description><![CDATA[
<p>mock, an API creation and testing utility. Any feedback is welcome!<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a></p>
]]></description><pubDate>Sun, 14 Dec 2025 21:19:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46267037</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=46267037</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46267037</guid></item><item><title><![CDATA[New comment by dhuan_ in "An overly aggressive mock can work fine, but break much later"]]></title><description><![CDATA[
<p>Great article. In addition, updating your mocking code can often be time-consuming. To try to make this easier, I built mock[1], which streamlines the process of setting up mock services for testing.<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a></p>
]]></description><pubDate>Mon, 17 Nov 2025 08:45:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45951893</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45951893</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45951893</guid></item><item><title><![CDATA[New comment by dhuan_ in "Ask HN: What Are You Working On? (Nov 2025)"]]></title><description><![CDATA[
<p>mock, an API creation and testing utility. Any feedback is welcome!<p><a href="https://dhuan.github.io/mock/latest/examples.html" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html</a></p>
]]></description><pubDate>Mon, 10 Nov 2025 13:00:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45875538</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45875538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45875538</guid></item><item><title><![CDATA[New comment by dhuan_ in "Show HN: Command line YouTube downloader,a universal media solution for everyone"]]></title><description><![CDATA[
<p>It's also possible create an HTTP service that acts as a wrapper to yt-dlp with just a few lines of shell, I created this example in the following link:<p><a href="https://dhuan.github.io/mock/latest/examples.html#youtube-downloader-web-service" rel="nofollow">https://dhuan.github.io/mock/latest/examples.html#youtube-do...</a></p>
]]></description><pubDate>Sat, 08 Nov 2025 21:08:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45859993</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45859993</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45859993</guid></item><item><title><![CDATA[New comment by dhuan_ in "Mock – An API creation and testing utility: Examples"]]></title><description><![CDATA[
<p>Swagger is a tool for API design and documentation.<p>Mock on the other hand is an actual API creation utility with which you can define endpoints, execute some logic for each endpoint and then return some data to the client. There are other similar features which are covered in the user guide.<p>Mock is not:
- A tool for API Specs or documentation
- A GUI tool.<p>I admit explaining the usefulness of this tool is not the easiest thing.<p>Any feedback is welcome!</p>
]]></description><pubDate>Sun, 02 Nov 2025 15:31:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45791018</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45791018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45791018</guid></item><item><title><![CDATA[New comment by dhuan_ in "Mock – An API creation and testing utility: Examples"]]></title><description><![CDATA[
<p>I think you intended to post here: <a href="https://news.ycombinator.com/item?id=45789474">https://news.ycombinator.com/item?id=45789474</a></p>
]]></description><pubDate>Sun, 02 Nov 2025 14:55:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45790759</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45790759</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45790759</guid></item><item><title><![CDATA[New comment by dhuan_ in "Mock – An API creation and testing utility: Examples"]]></title><description><![CDATA[
<p>Hi! Not yet, unless you use it with containers.</p>
]]></description><pubDate>Sun, 02 Nov 2025 13:23:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=45790135</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45790135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45790135</guid></item><item><title><![CDATA[New comment by dhuan_ in "Mock – An API creation and testing utility: Examples"]]></title><description><![CDATA[
<p>Hi, thanks for the feedback! I hope it's useful to you.</p>
]]></description><pubDate>Sun, 02 Nov 2025 13:16:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=45790086</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45790086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45790086</guid></item><item><title><![CDATA[New comment by dhuan_ in "Mock – An API creation and testing utility: Examples"]]></title><description><![CDATA[
<p>Hi, thanks for the feedback!<p>That's true, it's not a very unique name. I started building it, but only months later I thought of making it public. And then never thought of renaming it.</p>
]]></description><pubDate>Sun, 02 Nov 2025 13:14:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=45790068</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45790068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45790068</guid></item><item><title><![CDATA[New comment by dhuan_ in "Mock – An API creation and testing utility: Examples"]]></title><description><![CDATA[
<p>Hi thanks for the feedback checking out the project.<p>> What's the main motivation for creating this tool?<p>Similar tools exist out there for sure, but they are either complex (more than I wish they'd be) or somehow require you to use a specific programming languages. Mock lets you accomplish this without telling you which language you should use.<p>Also if you're using mock inside CI pipelines, it also helps the fact that you can just download a executable tool that does not require you the java platform or any other dependency.<p>> How hard/easy is it to make responses dynamic, i.e. to use something from the request data like query/path param or a body to execute function instead of hardcoding the response<p>With mock you can use shell scripts as "request handlers". With that said, capturing a query param or a JSON field from the request body is as simple as:<p>> $ USER_NAME=$(mock get-payload user.name)<p>> $ SOME_QUERY_STRING_PARAM=$(mock get-query foo)<p>You can see more of this topic here: <a href="https://dhuan.github.io/mock/shell_scripts.html" rel="nofollow">https://dhuan.github.io/mock/shell_scripts.html</a><p>> I feel like every programming language have similar tool already - WireMock for Java etc. Why should people switch?<p>True. If people are happy with these tools and needing to use java (or any other lang the tool pulls you into), then there's not much reason to switch.</p>
]]></description><pubDate>Sun, 02 Nov 2025 13:09:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=45790031</link><dc:creator>dhuan_</dc:creator><comments>https://news.ycombinator.com/item?id=45790031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45790031</guid></item></channel></rss>