<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: datastack</title><link>https://news.ycombinator.com/user?id=datastack</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 26 Apr 2026 17:07:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=datastack" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>I agree it seems more common. However back-up time and data movement should be equivalent if you follow the algo steps.<p>According to chat GPT the forward delta approach is common because it can be implemented purely append only, whereas reverse deltas require the last snapshot to be mutable. This doesn't work well for backup tapes.<p>Do you also think that the forward delta approach is a mere historical artifact?<p>Although perhaps backup tapes are still widely used, I have no idea, I am not in this field. If so the reverse delta approach would not work in industrial settings.</p>
]]></description><pubDate>Sun, 29 Jun 2025 08:02:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=44411157</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44411157</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44411157</guid></item><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>Exciting!<p>Yes, the deduplicated approach is superior, if you can accept requiring dedicated software to read the data or can rely on a file system that supports it (like Unix with hard links).<p>I'm looking for a cross-platform solution that is simple and can restore files without any app (in case I didn't maintain my app for the next twenty years).<p>I'm curious if the software you were working on used  proprietary format, was relying on Linux, or used some other method of duplication.</p>
]]></description><pubDate>Sun, 29 Jun 2025 07:57:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44411130</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44411130</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44411130</guid></item><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>Nice to realize that this boils down to copy on write. Makes it easier to explain.</p>
]]></description><pubDate>Sun, 29 Jun 2025 06:43:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=44410810</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44410810</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44410810</guid></item><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>Great resource in general, will look into it if it describes how to implement this backup scheme</p>
]]></description><pubDate>Sun, 29 Jun 2025 06:41:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44410800</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44410800</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44410800</guid></item><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>This sounds more like a downside of single site backups</p>
]]></description><pubDate>Sun, 29 Jun 2025 06:39:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=44410792</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44410792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44410792</guid></item><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>You can see in step 2 and 3 that no full copy is written every time. It's only move operations to create the delta, and copy of new or changes files, so quite minimal on IO.</p>
]]></description><pubDate>Sun, 29 Jun 2025 06:38:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=44410791</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44410791</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44410791</guid></item><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>Thank you for bringing this to my attention. Knowing that there is a working product using this approach gives me confidence. I'm working on a simple backup app for my personal/family use, so good to know I'm not heading in the wrong direction</p>
]]></description><pubDate>Sun, 29 Jun 2025 06:37:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=44410784</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44410784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44410784</guid></item><item><title><![CDATA[New comment by datastack in "A reverse-delta backup strategy – obvious idea or bad idea?"]]></title><description><![CDATA[
<p>In this algo nothing is rewritten. A diff between source and latest is made, the changed or deleted files archives to a folder and the latest folder updated with source, like r sync. No more IO than any other backup tool. Versions other than the last one are never touched again</p>
]]></description><pubDate>Sun, 29 Jun 2025 06:35:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44410779</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44410779</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44410779</guid></item><item><title><![CDATA[A reverse-delta backup strategy – obvious idea or bad idea?]]></title><description><![CDATA[
<p>I recently came up with a backup strategy that seems so simple I assume it must already exist — but I haven’t seen it in any mainstream tools.<p>The idea is:<p>The latest backup (timestamped) always contains a full copy of the current source state.<p>Any previous backups are stored as deltas: files that were deleted or modified compared to the next (newer) version.<p>There are no version numbers — just timestamps. New versions can be inserted naturally.<p>Each time you back up:<p>1. Compare the current source with the latest backup.<p>2. For files that changed or were deleted: move them into a new delta folder (timestamped).<p>3. For new/changed files: copy them into the latest snapshot folder (only as needed).<p>4. Optionally rotate old deltas to keep history manageable.<p>This means:<p>The latest backup is always a usable full snapshot (fast restore).<p>Previous versions can be reconstructed by applying reverse deltas.<p>If the source is intact, the system self-heals: corrupted backups are replaced on the next run.<p>Only one full copy is needed, like a versioned rsync mirror.<p>As time goes by, losing old versions is low-impact.<p>It's user friendly since the latest backup can be browsed through with regular file explorers.<p>Example:<p>Initial backup:<p>latest/
  a.txt     # "Hello"
  b.txt     # "World"<p>Next day, a.txt is changed and b.txt is deleted:<p>latest/
  a.txt     # "Hi"
backup-2024-06-27T14:00:00/
  a.txt     # "Hello"
  b.txt     # "World"<p>The newest version is always in latest/, and previous versions can be reconstructed by applying the deltas in reverse.<p>I'm curious: has this been done before under another name? Are there edge cases I’m overlooking that make it impractical in real-world tools?<p>Would love your thoughts.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44408821">https://news.ycombinator.com/item?id=44408821</a></p>
<p>Points: 12</p>
<p># Comments: 26</p>
]]></description><pubDate>Sat, 28 Jun 2025 22:50:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44408821</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=44408821</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44408821</guid></item><item><title><![CDATA[New comment by datastack in "Show HN: I made an app that consolidated 18 apps (doc, sheet, form, site, chat…)"]]></title><description><![CDATA[
<p>Nosql doesn't solve the schema migration problem. It just means you don't formalize your schema. But your code will implicitly require a certain schema anyway. Changing the schema means changing the code and migrating data. You'll have to write migration scripts and think about backward compatibility. 
Same problems as in sql.</p>
]]></description><pubDate>Mon, 08 Jan 2024 10:27:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=38910229</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=38910229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38910229</guid></item><item><title><![CDATA[New comment by datastack in "Produce HTML from S-Expressions"]]></title><description><![CDATA[
<p>Nice, thanks for sharing. Curious what your motivation was for making it. Perhaps include a "why" at the start of the repo. As evidenced by some comments, depending on whether the goal was to write HTML with a lisp compatible syntax, vs, a more concise but simple xml alternative, it creates different expectations. Personally I'm just interested from a parser/ compiler perspective.</p>
]]></description><pubDate>Wed, 30 Aug 2023 19:09:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=37327354</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=37327354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37327354</guid></item><item><title><![CDATA[New comment by datastack in "Server-side rendering is a better choice for many applications (2020)"]]></title><description><![CDATA[
<p>Interesting take. Haven't heard the argument before that it saves server costs. Not convinced that this is the case, but perhaps, for a google.<p>Reflecting, I suppose that businesses relying on Php/Laravel or Ruby are probably still enjoying simple SSR development. I've personally transitioned to Java and then .NET, and haven't seen SSR since. Which corner of software are you in, where you see SSR still being dominant?</p>
]]></description><pubDate>Wed, 23 Aug 2023 14:25:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=37236464</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=37236464</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37236464</guid></item><item><title><![CDATA[New comment by datastack in "Server-side rendering is a better choice for many applications (2020)"]]></title><description><![CDATA[
<p>that's the point, glad you understood</p>
]]></description><pubDate>Wed, 23 Aug 2023 12:46:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=37234969</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=37234969</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37234969</guid></item><item><title><![CDATA[New comment by datastack in "Server-side rendering is a better choice for many applications (2020)"]]></title><description><![CDATA[
<p>Lot of bashing of this idea, not sure why. The entire industry has shifted from "web developer" to frontend/backend developers. What used to be a web developer is now called full stack.<p>It seems like a big deal to me and the entire shift is an indicator of how much the IT community is behind front end clients talking to a separate back end. Server side rendering is no longer considered normal. Server site rendering now means something entirely different. It is about running your frontend code on the back end, So you still have the separation, but instead running it on the same machine. Now the same ui code has to be compatible with two different run times. This is much, much more complex than traditional server side rendering.<p>I'm glad we now have things like single page apps and client site interactive applications, because some apps were really not possible with server side rendering unless with a lot of Jquery hackery that quickly becomes unmaintainable...<p>However, I do think that front end technologies are overused, so I agree with the author, And I also think this is objectively a contrarian opinion, considering my initial point.</p>
]]></description><pubDate>Wed, 23 Aug 2023 12:17:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=37234707</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=37234707</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37234707</guid></item><item><title><![CDATA[New comment by datastack in "Merging End-to-End Testing and Implementation with Macro Abstractions"]]></title><description><![CDATA[
<p>A thought experiment on a new AI assisted programming paradigm. Your ideas are welcome.</p>
]]></description><pubDate>Fri, 11 Aug 2023 13:40:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=37088580</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=37088580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37088580</guid></item><item><title><![CDATA[Merging End-to-End Testing and Implementation with Macro Abstractions]]></title><description><![CDATA[
<p>Article URL: <a href="https://gist.github.com/boukeversteegh/291c372ab0121166132a5fac657600f3">https://gist.github.com/boukeversteegh/291c372ab0121166132a5fac657600f3</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37088579">https://news.ycombinator.com/item?id=37088579</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 11 Aug 2023 13:40:12 +0000</pubDate><link>https://gist.github.com/boukeversteegh/291c372ab0121166132a5fac657600f3</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=37088579</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37088579</guid></item><item><title><![CDATA[New comment by datastack in "Taskfile: A Modern Alternative to Makefile"]]></title><description><![CDATA[
<p>some tasks a developer might need to do besides just building the application:<p>- copying a database from production to local for bug reproduction/fixes
- inserting seed-data into the local database
- creating a migration after changing records
- applying the migration
- rolling back the migration
- running a tool to copy configuration from a keyvault
- running the end to end tests
- generate certificates
- set up an ssh tunnel to a remote server or database<p>All of these things are part of the development process, and cannot be part of the build system. Each of them has their own commands and tools.<p>All developers need to easily be able to do these things, without asking help each time, or learning the syntax of each command.<p>One easy way is to stuff all of them in a task runner with simple aliases. Another could be writing a document that you can copy/paste from. I prefer a task runner, since you can memorize the alias and work from the terminal without looking things up.</p>
]]></description><pubDate>Sun, 16 Jul 2023 08:25:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=36744766</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=36744766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36744766</guid></item><item><title><![CDATA[New comment by datastack in "InternLM – new open source 7B LLM"]]></title><description><![CDATA[
<p>I guess going with a parameter count that matches existing models makes it easier to compare benchmarks. Perhaps there is another particular reason like required memory, but momentum is probably also significant.</p>
]]></description><pubDate>Thu, 06 Jul 2023 09:52:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=36613581</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=36613581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36613581</guid></item><item><title><![CDATA[New comment by datastack in "AI Terminal Assistant"]]></title><description><![CDATA[
<p>Quick prototype, but already very useful!<p>Use with your own OpenAPI Key.<p>Never google a CLI command again :-)</p>
]]></description><pubDate>Wed, 15 Mar 2023 01:08:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=35162263</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=35162263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35162263</guid></item><item><title><![CDATA[AI Terminal Assistant]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/boukeversteegh/ai-terminal-assistant">https://github.com/boukeversteegh/ai-terminal-assistant</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=35162262">https://news.ycombinator.com/item?id=35162262</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 15 Mar 2023 01:08:05 +0000</pubDate><link>https://github.com/boukeversteegh/ai-terminal-assistant</link><dc:creator>datastack</dc:creator><comments>https://news.ycombinator.com/item?id=35162262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35162262</guid></item></channel></rss>