<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: desmondl</title><link>https://news.ycombinator.com/user?id=desmondl</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 27 May 2026 17:43:03 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=desmondl" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by desmondl in "I'm Tired of Talking to AI"]]></title><description><![CDATA[
<p>I work on a small team. I talk to coding agents a lot. I also talk to my human team members a lot. So I have decent experience with interacting with both LLMs and humans.<p>My two ¢: I also get fatigue when reading too much AI generated words. There's something about the over-polished nature of AI text and the missing feeling that you are interacting with a real human that makes it tiring to engage with for long periods of time. I don't have any evidence to support this, but my gut feeling is that - in contrast to AI - there is some "roughness" with interacting with humans that makes it easier for me to mentally "latch on to" their words that doesn't come with AI.</p>
]]></description><pubDate>Wed, 27 May 2026 16:14:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=48296449</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=48296449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48296449</guid></item><item><title><![CDATA[New comment by desmondl in "Launch HN: Indy (YC S21) – A support app designed for ADHD brains"]]></title><description><![CDATA[
<p>This new product might be better, but Shimmer was publicly criticized exploitative when it launched. I saw those criticisms at the time, gave the product a fair chance anyway, and unfortunately found them to be accurate.<p>I used Shimmer in 2022. The app had poor UX and frequent bugs, and the core offering (weekly Google Meet sessions with a “coach”) felt like generic self-help and not personalized coaching. The promised between-session support mostly consisted of DM'd article links, even after I raised that concern directly.<p>The sessions themselves often felt unprofessional, with background noise, unstable connections, and poor audio quality. The coach WFM'd on their couch during call. Given the price (hundreds of dollars per month at the time), the gap between what was marketed and what was delivered was significant.<p>Hopefully the new product addresses these issues, but I’d encourage people evaluating it to look at Shimmer’s prior execution and customer feedback, not just the announcement.</p>
]]></description><pubDate>Fri, 16 Jan 2026 18:47:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46650310</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=46650310</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46650310</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>Yeah true, I'm starting to remember the headaches with yaml when I was using kubernetes or cloudformation....</p>
]]></description><pubDate>Mon, 11 Mar 2024 21:15:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=39673318</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39673318</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39673318</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>Yep, I think the compelling reason of humans writing code is key here. SQLite would make it less accessible for people to write external tooling to integrate with an obsidian vault. There are lots of existing and open that support diffing/parsing/syncing/manipulating json, while with sqlite you have to not only know sql but support another application’s database schema, which third party developers are less likely to do</p>
]]></description><pubDate>Mon, 11 Mar 2024 20:55:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=39673139</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39673139</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39673139</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>I haven’t had any issues with yaml in markdown frontmatter or openapi specs. What kind of issues do you see with list and maps that make you against yaml? I agree that for computers and consistency json is preferred. I already use a linter for my markdown files so I would do the same with yaml to keep lists and maps consistent</p>
]]></description><pubDate>Mon, 11 Mar 2024 20:49:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=39673081</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39673081</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39673081</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>I completely agree. Even if they completely tank I can open my obsidian directory in a text editor or command line and still use it. I would still have access to features that are common in other apps like full text search or plain file sync. Attachments are just files in the filesystem that can be opened in any image viewer. Basically if i can’t use obsidian anymore i can still use my notebook and take notes without implementing or finding new software</p>
]]></description><pubDate>Mon, 11 Mar 2024 20:45:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=39673037</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39673037</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39673037</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>Any reference for obsidian's specs? The closest thing I could find is this: <a href="https://docs.excalidraw.com/docs/codebase/json-schema" rel="nofollow">https://docs.excalidraw.com/docs/codebase/json-schema</a> but it seems to be really minimal and doesn't go into detail on what properties belong in elements</p>
]]></description><pubDate>Mon, 11 Mar 2024 20:38:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=39672983</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39672983</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39672983</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>Sometimes you have nodes that overlap each other, so you want to control whether or not a node is in front of or behind another node.<p>Though yes, they could have explicitly defined a z-index or defined a convention on how the ordering should work (first nodes top and last nodes bottom or vice versa?). It's interesting to think about the trade offs between explicitly defining these things vs. leaving the application to implicitly make the choice. JSON Canvas seems to be designed to use in tandem with markdown files in a note taking app, so it makes sense why they opted for the more implicit design to be similar to markdown</p>
]]></description><pubDate>Mon, 11 Mar 2024 20:33:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=39672945</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39672945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39672945</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>I think you're talking about the trade offs between supporting features like "DOM manipulation, state management, animation, etc." and "shipping updates" out of the box, versus only storing the data as simple files and leaving everything else to the implementation.<p>Sqlite as an application file format is great [1], but for a knowledge base / note taking app the benefits are not worth the tradeoffs in my opinion.<p>Sqlite is more performant more performant and provides lots of built-in features. However, most note taking users do not have enough notes or files to benefit from that performance. Sqlite will also lock the user into the application, whereas a "pack of files" can be used in the shell as a text editor. Using markdown files + a open json format has the benefit of being supported by multiple applications (e.g. sometimes i open my obsidian vault in vscode), while a sqlite database would need a proprietary schema coupled with a single application<p>I prefer an open file format that isn't tied to a vendor. A "data bridge" might handle syncing and diffing more efficiently than plain files, but it is still tied to the vendor. For example, I prefer not to pay for Obsidian Sync, and I'm able to use a git plugin and storing my files on nextcloud to sync between my devices. This leverages existing tech without having to implement features from the ground up<p>[1] <a href="https://www.sqlite.org/appfileformat.html" rel="nofollow">https://www.sqlite.org/appfileformat.html</a></p>
]]></description><pubDate>Mon, 11 Mar 2024 20:25:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=39672851</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39672851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39672851</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>An object in JSON is meant to be unordered [1], so arrays are better if you want order to be preserved.<p>[1] <a href="https://www.json.org/json-en.html" rel="nofollow">https://www.json.org/json-en.html</a></p>
]]></description><pubDate>Mon, 11 Mar 2024 20:06:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39672686</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39672686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39672686</guid></item><item><title><![CDATA[New comment by desmondl in "JSON Canvas – An open file format for infinite canvas data"]]></title><description><![CDATA[
<p>I agree with a lot of comments that it's minimal, but in my opinion that is a good thing. I'm a big fan of Obsidian, and of the things I like about it is the data source is all markdown files. Markdown is meant to be very lightweight and portable, and overcomplicating it will limit adoption and extensibility (imagine markdown vs pdf).<p>JSON Canvas seems to follow in that spirit by being very lightweight, so a lot of implementation details (i.e. how are files rendered, what file formats are supported, etc), edit tags, etc) are left open to implementation.<p>Markdown and JSON are meant to be non-opague file formats that prioritizes portability and human readability over other features. An application format like Sqlite has a lot of benefits over markdown, but it loses the benefits of text based formats like being compatible with git and is less portable.<p>What I would like to see is a convention for extending the node and edge definitions, similar to frontmatter in markdown files- something that is not <i>required</i> for basic rendering but is a nice-to-have for applications to consume) - that way portability between apps of varying complexity can be maximized while still allowing for more complex features that some apps might implement. Markdown has the benefit of supporting extensions (for example like tables in GFM) - apps that are not compatible can still render the unsupported markup. But there should be an explicit way to extend open JSON formats.<p>Some feedback off the top of my head and from reading the comments:<p>1. *Specifying node ordering*. Obsidian seems to just send whatever is last touched to the top, but this makes a common feature in many apps (move up/down/back/front) more difficult to impement<p>2.*More explicit definition for line shape*. Adding a way to "bend" a line in a specific way. Useful for creating more complex diagrams.<p>3. *Relations between nodes*. Group nodes contain child nodes, but the spec doesn't specify how the child nodes are defined. I would expect it to have a `children` property to nest nodes. Obsidian seems to implicitly link nodes to groups based on whether their bounds intersect. This makes it difficult to implement some common features:<p>a. nodes that exist outside of the bounds of its group, for example a node that "floats" just outside of the edge of the group's borders.<p>b. nodes that are not part of a group even though it exists within the bounds of that group.<p>There are many different ways for a canvas app to extend the spec to implement those features, but it seems like something that should be defined in the spec to maximize portability<p>4. *Extensibility.* Either explicitly support or provide a standard for defining more styles for nodes and edges, such as stroke width, stroke style, rotation, etc. It seems like "color" should be a part of this as well, rather than being an explicit property of a node.<p>5. *Embeds.* Supporting "embeds" as a node type. I even think the "file" node should be redefined as `embed` with a `uri` property to support different schemes (`file://`, `oembed://`, `<a href="https://" rel="nofollow">https://</a>`) and maybe a `mime-type` (`text/markdown`, `image/webp`). The file node's "subpath" property seems to be only relevant for markdown files, so I think that should be an extension rather than an explicitly defined.<p>6.*YAML* :) (Should just seemlessly convert from json, but yaml is more readable than json)<p>Being able to design standards that evolve over time and making tough decisions about what what to make explicit and what to leave implicit is a skill I want to improve on as a developer this year. Does anyone have any resource recommendations or best practices to recommend for me to research?</p>
]]></description><pubDate>Mon, 11 Mar 2024 19:37:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=39672401</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39672401</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39672401</guid></item><item><title><![CDATA[New comment by desmondl in "What if serverless meant no backend servers?"]]></title><description><![CDATA[
<p>Looking at this with an open mind, I'm curious what benefits running SQLite in WebAssembly with a proxied web worker API layer gives compared to using localStorage or something similar.<p>* Using SQL has clear benefits for writing an application. You can use existing stable tools for performing migrations.<p>* Using SQLite in a filesystem offers many advantages w.r.t performance and reliability. Do these advantages translate over when using WebAssembly SQLite over OPFS?<p>* How does SQLite / OPFS performance compare to reading / writing to localstorage?<p>* From what I know about web workers, the browser thinks it is making http requests to communicate with subzero, while the web worker proxies these requests to a local subzero server. What is the overhead cost with doing this, and what benefits does this give over having the browser communicate directly with SQLite?<p>* I remember seeing a demo of using [SQLite over HTTP](<a href="https://hn.algolia.com/?q=sqlite+http" rel="nofollow">https://hn.algolia.com/?q=sqlite+http</a>) a while back. I wonder if that can be implemented with web workers as an even simpler interface between the web and SQLite and how that affects bundle size...</p>
]]></description><pubDate>Tue, 23 Jan 2024 21:23:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=39110059</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=39110059</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39110059</guid></item><item><title><![CDATA[New comment by desmondl in "Windows 11 may not be as popular as Microsoft had hoped"]]></title><description><![CDATA[
<p>I somewhat agree, because as an end user all I had to do is disable the bundled apps (teams, etc) and switch the default browser to firefox. I agree with the criticism though, it really leaves a bad taste in my mouth to see all the extra prompts encouraging me to keep Edge, and the social media links (instagram, tiktok) in my start menu. But for someone who experienced bloatware, this stuff was pretty easy to remove / change. The main difference is that this "bloatware" came directly from Microsoft and not third parties.</p>
]]></description><pubDate>Mon, 04 Apr 2022 21:03:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=30911906</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=30911906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30911906</guid></item><item><title><![CDATA[New comment by desmondl in "Tell HN: YouTube is banning accounts that support Ukraine"]]></title><description><![CDATA[
<p>Did your entire Google account get deactivated? My Google account is linked to Gmail, GCP/Firebase, Youtube, Drive, and a ton of SSO apps. Used it for the past decade, but I know now not to put all my eggs in one basket so I have backups of my most important data. Still, what happened to you is a big fear of mine.</p>
]]></description><pubDate>Fri, 25 Feb 2022 18:14:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=30470282</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=30470282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30470282</guid></item><item><title><![CDATA[New comment by desmondl in "Kubernetes Documentary: A Critical Review"]]></title><description><![CDATA[
<p>Agreed, I have a small 3 node cluster at home and I use all of those things you listed. I had to dive <i>very</i> deep in the details and learn a ton of new things to get it right, and I had all the time I wanted because it was just for fun and learning. It's almost like having my open source self-hosted AWS (in terms of abstraction from infra, not in reliability)<p>Would I host any of my critical side projects on my cluster? Probably not. Kubernetes was made with large organizations (google made it after all) in mind. As a solo developer, it's better for me to host my apps on a VM and move to AWS/Azure/GCP if I need to scale.</p>
]]></description><pubDate>Mon, 21 Feb 2022 17:31:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=30418331</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=30418331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30418331</guid></item><item><title><![CDATA[New comment by desmondl in "1Password Has Raised $620M"]]></title><description><![CDATA[
<p>Agreed, I used lastpass in 2016 and tried to switch to keepass. I'm more than technical enough to use keypass and sync a vault across all my devices, but I needed this to be as easy as possible. I know myself enough to understand if something doesn't feel as easy as humanly possible, I'm much less likely to use it. A decent chunk of people are not like this, which is why I believe there is this huge debate over "Keepass vs 1Password". But anyway, I switched to bitwarden and the UX was more than good enough for me. It "just works".<p>I even started self hosting it this year and it continues to "just work" - although I don't recommend it to most people since I now have to manage a server. I was already self hosting a lot of other things last year (wanted to move away from google/apple services) so the "cost" of self hosting Bitwarden was negligible.<p>Anyway I know I rambled a lot, but just wanted to chime in and throw in my opinion about bitwarden</p>
]]></description><pubDate>Wed, 19 Jan 2022 16:33:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=29995881</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=29995881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29995881</guid></item><item><title><![CDATA[New comment by desmondl in "Show HN: Write universally accessible SQL, not library-specific ORM wrapper APIs"]]></title><description><![CDATA[
<p>I got pretty proficient at using vim in vscode, and personally for me the investment was worth it. It's great for working in HTML with chords like `va"p` (replace selection around quote with clipboard) and `dip` (cut out the contents inside this xml tag). YMMV depending on the type of work you do.</p>
]]></description><pubDate>Tue, 10 Aug 2021 17:58:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=28132036</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=28132036</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28132036</guid></item><item><title><![CDATA[New comment by desmondl in "Build a hit counter for Gatsby with React, AWS Lambda, and FaunaDB"]]></title><description><![CDATA[
<p>I understand where you're coming from, but I'm going to play devil's advocate and think through everything that needs to be considered for a simple, "back in the day" solution that involves apache, php, and a mysql database:<p>1. Provisioning the server, either via VPS or setting it up on your local machine and exposing port 443.<p>2. Installing Apache on your operating system<p>3. Installing a cert, getting it signed by an authority<p>4. Installing php, enabling it in apache<p>5. Installing mysql<p>At this point you'll have to write your php from scratch or use something like wordpress. Assuming we want to keep it as simple as possible and write php from scratch, you'll want to consider file permissions so your database credentials aren't accidentally leaked.<p>6. Creating the schema and tables on your database<p>7. Distributing your site's static content through a CDN<p>And this doesn't even involve automated deployments, which these services give out of the box.<p>My point is that a "traditional" approach can appear just as overengineered and convoluted if we want to replicate the scalability, stability and security of solid PaaS services like Vercel and Fauna.<p>I get that a hit counter is very simple, but I assume the point of this article is to provide a simple "hello world" example that uses these PaaS services, which again, provide a lot of benefits over manually configuring infrastructure.</p>
]]></description><pubDate>Mon, 28 Sep 2020 16:45:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=24618580</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=24618580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24618580</guid></item><item><title><![CDATA[New comment by desmondl in "Show HN: Darklang"]]></title><description><![CDATA[
<p>Brain dump: Looks very cool. From what I can tell...<p>pros:<p>* No tooling to set up, don't have to think about project structure or computation (VMs or cloud functions)<p>* Don't have to think about databases, connection strings, etc<p>* Fast deployments<p>* Perfect for rapid prototyping or hackathons<p>cons:<p>* Vendor lock-in at the language and infrastructure level<p>* Not open source<p>* Have to learn a new language<p>Compared to serverless (for a CRUD application), I wouldn't have to write configuration to set up the API endpoints / dynamodb tables. Also, deployments would be super fast which closes the developer feedback loop. I shouldn't have to worry about emulating my stack locally or deploying my stack every time I want to test my code.<p>The cons make this very hard for me to buy though. My ideal framework would be open source in a popular language (JS / Go), runs on cloud (AWS / Azure / GCP), fast deployments (no cloudformation), low configuration / convention based (like nextjs), and integrates with popular NoSQL data stores (mongo, redis, etc). Basically it would be completely conventional with an opinioned data access and the ability to override features to add more complicated functionality like optimizing data access after the initial prototyping.</p>
]]></description><pubDate>Mon, 16 Sep 2019 20:24:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=20988204</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=20988204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20988204</guid></item><item><title><![CDATA[New comment by desmondl in "Show HN: Zero – A fast, zero-configuration server for React, Node.js, Markdown"]]></title><description><![CDATA[
<p>Are there any plans to make this support Typescript in the future? :)</p>
]]></description><pubDate>Tue, 26 Feb 2019 15:59:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=19255307</link><dc:creator>desmondl</dc:creator><comments>https://news.ycombinator.com/item?id=19255307</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19255307</guid></item></channel></rss>