HNHacker News
TopNewBestAskShowJobs

breadchris

332 karma · joined April 6, 2020

I think about things here: https://breadchris.com

I am building this: https://github.com/justshare-io/justshare

submissionscomments
breadchris··on Ask HN: Anyone learned art (drawing, caricature etc.) as an adult?
as an engineer, Drawing Ideas: a hand-generated approach for better design has changed my life. My girlfriend is an artist but I never tried drawing until this book caught my eye on the shelf of a book store. I love having some basic sketching skills to help make my thoughts come to life. When I write blog posts, I try to throw in a sketch or two now.

http://www.drawingideasbook.com/book.html https://breadchris.com/blog/the-figma-plugin-system/

breadchris··on Show HN: htmgo - build simple and scalable systems with golang + htmx
I would take a look at this demo [1]. Pay close attention to what is being interpreted vs bound as a symbol to compiled code. The `yaegi extract` command will not work on exported generics atm.

If you want to collab more, shoot me an email: chris@breadchris.com

[1] https://github.com/DCjanus/yaegi_demo

breadchris··on Show HN: htmgo - build simple and scalable systems with golang + htmx
I love this! I have been working on something similar recently [1] and it is exciting to think about the possibility of building full stack components for the web that are not going to break in the foreseeable future. Even if I need to swap languages/frameworks go is easy to parse and transpile!

I dream of a library like ours to take on the likes of React, and to get there the devex needs to have some key features. Most notably, imo, is live reload. You could use air, but I find it still to be too slow to recompile the entire app. I have had some success so far with yaegi to interpret the go at runtime [2]. It isn't perfect, but the full language spec is implemented.

My personal goal is to build the Go equivalent of rails/django. Live reloading is needed in addition to plugins that provide web app primitives (auth, storage, logging, metrics, etc). Additionally, I think the network effect of React is a powerful value driver, so some easy way to include React in an app is also important. Thankfully evanw has made this trivial with esbuild [3]

[1] https://github.com/breadchris/share/blob/master/html2/html.g... [2] https://github.com/traefik/yaegi [3] https://github.com/breadchris/share/blob/master/graph/build....

breadchris··on Good programmers worry about data structures and their relationships
I think of code vs types analogous to the function vs form argument in design. If a website needs to be shipped ASAP, I should prioritize types less. If hundreds of engineers rely on some code, I care about types.

Language also influences how important types are, regardless of function. Haskell is strict, LISP is less so. Python, being closer to LISP in syntax, but surfacing powerful C (closer to Haskell) primitives has proven valuing function over form can be empowering.

Premature modeling of a domain in verbose types (ex. struct vs any) can slow down rapid iteration in comprehending what is valuable from data or how users may actually use code. Someone might need not just one, but infinite cat pictures in their file upload, but the code _and the types_ treat this as a single value. Another example is using JSONB columns in their RDS initially and normalizing fields into columns when needed. A more flexible type system saves time in early iteration cycles.

breadchris··on Using ClickHouse to scale an events engine
ClickHouse is awesome, but as the post shows, some code is involved in getting the data there.

I have been working on Scratchdata [1], which makes it easy to try out a column database to optimize aggregation queries (avg, sum, max). We have helped people [2] take their Postgres with 1 billion rows of information (1.5 TB) and significantly reduce their real-time data analysis query time. Because their data was stored more efficiently, they saved on their storage bill.

You can send data as a curl request and it will get batch-processed and flattened into ClickHouse:

curl -X POST "http://app.scratchdata.com/api/data/insert/your_table?api_ke..." --data '{"user": "alice", "event": "click"}'

The founder, Jay, is super nice and just wants to help people save time and money. If you give us a ring, he or I will personally help you [3].

[1] https://www.scratchdb.com/ [2] https://www.scratchdb.com/blog/embeddables/ [3] https://q29ksuefpvm.typeform.com/to/baKR3j0p?typeform-source...

breadchris··on How is this blog built?
love it. It also makes me sad there arent more technical blogs. I have been building an offline-first writing/publishing platform built on top of hugo. https://justshare.io
breadchris··on Sensible Web Stack Decisions
hadnt heard of this, thanks for sharing!
breadchris··on Show HN: AboutIdeasNow – search /about, /ideas, /now pages of 7k+ personal sites
yes, this. it feels pretty magical to immediately find people across the Internet who have most likely "gone deep" on something I also have. it is surprisingly hard to connect with people like this in 2024.
breadchris··on After 14 years in the industry, I still find programming difficult
I like the comparison to writing. In order to be a better writer, you must read works that are well written. The most common way that I read code are by traversing my source tree into the code I depend on (stdlib/third-party). When dependencies are compiled in some way, reading the code is not possible. It makes learning different code patterns impossible and causes a lot of "reinventing of the wheel"
breadchris··on Go run
yeah it looks like you are right: https://arc.net/l/quote/veycnsqt
breadchris··on Go run
> I don't understand what the problem is here. Every installation of Node comes bundled with npm. If it doesn't, that is a package maintenance problem.

Node and npm are two commands, and when you go to find packages, you will see people telling you to use pnpm, yarn, or npm. I would expect one tool to do this for me, especially for the most popular language in the world.

> This feels like a massive antipattern. Why is this lauded as a "feature"? Why do I want my build system to automatically reach out to the Internet and download random code without an explicit request, like "npm install"?

https://chat.openai.com/share/8bd82c15-c939-4e82-aad8-086995...

> This is even more antipattern-ish when you consider that Go dependencies are just repoed on GitHub (or possibly on some random git server) instead of a centralized and moderated registry like npmjs.org.

I find this to lend itself to a more decentralized future. I see notable projects owning their code and distributing it positively. You still need the source code for something to run at the end of the day. If you are worried about the code continuing to be there, that is the purpose of a proxy cache, which makes it very easy: https://proxy.golang.org/. Also, the code is distributed on github. So, if github working is a concern, we probably have much bigger problems.

> So it's now considered harmful to have multiple implementations of an open standard, compared to the exclusively Google-developed Go runtime? This sounds akin to arguing for a monopoly over a competitive market with consumer choice.

A hammer looks like a hammer because that is the most effective way to hit a nail. Since I am "building" code, I want my tools to feel as reliable as a hammer. I will not argue that Go is the best language ever invented; I see it as the most accessible language to make things happen fast and reliably until a better one emerges. When that happens, AI-generated refactoring tools will be so good, and Go code is so quickly parseable that I will let it loose in my Go code bases to refactor them into that language.

breadchris··on Go run
if I were a beginner developer, I now have to have the tribal knowledge of the difference between .js and .mjs. I don't see anyone widely using .mjs to write their code either.
breadchris··on Go run
bazel is pretty cool, I have seen it work at Uber for the go monorepo at impressive scale (and of course it works for google). When I need to scale up the build process this will be the tool i reach for, but for starting out it is another technology that someone would have to learn.
breadchris··on Go run
an interesting project. go contains many source artifacts which make decompilation a bit more straight forward as well. I havent seen anyone really attempt this for go, but would be notable research
breadchris··on Go run
have you ever used tinygo? I have been curious how much that project gets used. It seems to me that rust is probably going to be the language of choice some point in the future.
breadchris··on Go run
great point, this is the one thing that I wish was more intuitive. You don't have to do this if main.go is the only file in the main package and all other code is referenced by a package.
breadchris··on Launch HN: Zenfetch (YC W23) – Turn notes/browser history into an AI assistant
Depending on who your market is (sales leads, researchers, developers) it may not make sense to support local/OSS. Posting this on hn will always bring a bearded dev, me, into the comments to rant about the way things should be, but this doesn't always reflect the path to product success. Right now your tool is too general, find a use case and crush it. Find some inspiration from this ext: https://chrome.google.com/webstore/detail/workona-spaces-tab...
breadchris··on PWAs wont replace native iOS apps
"you must show the notification when you receive it", is it not possible to filter the notifications on the server before sending them down?
breadchris··on Launch HN: Zenfetch (YC W23) – Turn notes/browser history into an AI assistant
I have been building something similar [1] with the goal to make it easy to save and share things you find. I will not use SaaS for saving content anymore as I find myself wanting to build larger compositions of work and dealing with APIs just isn't it. Maybe the SaaS works today, but you will always end up wanting a plaintext, offline-first experience.

[1] https://github.com/justshare-io/justshare

breadchris··on Ask HN: How do you come up with side project ideas in 2024?
we love happy accidents
breadchris··on Ask HN: How do you come up with side project ideas in 2024?
Care less about the idea, and more about the effort. When your goal is to work on something that makes you personally happy, it is something you return to everyday organically. The effort you put in doesn't feel like work. Even if you don't reach your goal, what you have learned makes the next objective/project that much easier. The more you learn, the faster you can iterate, whatever the task may be.
breadchris··on Becoming a dungeon master for an interview
wow awesome analogy. I got rejected because my leet code solution wasn't fast enough for a security engineer position. The person who referred me was furious. Meanwhile, another interviewer did just this to me and it let me flex my knowledge.

Would love to see this more. There is also the inevitable future where someone publishes a book on it and it gets cargo-culted. C'est la vie.

breadchris··on Browser extensions are underrated: the promise of hackable software (2019)
What has always blown my mind is the lack of documentation/open source projects. With such powerful data we come across while browsing the web, it would only make sense to me there would be more tools to use an extend in this space. Browsing history is especially under valued. Even though the data technically exists, it is quite difficult to retrieve pages that have been visited, imo because of poor UX. Most people keep every Internet journey opened in hopes they will remember to return to it. I have been taking a stab at improving the UX with a history browser extension [1] which I have found myself legitimately finding value in using (a first for my personal projects lol).

[1] https://github.com/lunabrain-ai/lunabrain/tree/main/js/exten...

breadchris··on Apprise: Open-Source, Self-Hosted, Push Notifications
what is going on with those Dockerfiles?
breadchris··on Show HN: Stanchion – Column-oriented tables in SQLite
that is what i was thinking about, which is encouraging.
breadchris··on Show HN: Stanchion – Column-oriented tables in SQLite
It seems like there are a lot of extensions that are being built for sqlite. I would like to use these extensions, but I am skeptical about their support over time. I like sqlite for how freakin stable it is. How do people feel about sqlite extensions?
breadchris··on JSONB has landed
I didnt understand the purposes of document stores until the past couple of years and they are fabulous for building POCs. Enhanced JSON support will help a lot for making sqlite a suitable document store.

I get full type support by serializing and deserializing protobuf messages from a db column and not making this column JSONB means i can filter this column too, instead of having to flatten the searchable data to other columns.

breadchris··on Mystery-o-matic.com random murder generator is open-source
I have been running a murder mystery competition where you solve cyber security challenges for the past 7 years[1]. We come up with a story and then build an evidence graph for competitors to traverse. Challenges can be as simple as a Caesar cipher, or more involved like analyzing a clone of Twitter for clues. The challenge infrastructure is all defined with configs and gets deployed automatically to kubes. It is all open source too if you want to check it out[2].

[1] https://mcpshsf.com/ [2] https://github.com/xctf-io/chalgen

breadchris··on Grimoire: Open-Source bookmark manager with extra features
I used to use Pocket extensively until I realized it wasn't going anywhere with features. I have since moved to Omnivore [1] and I couldn't be happier.

The devs are also ex-Pocket users and have worked hard to get feature parity and then some. There are mobile apps too for reading on the go (and work offline) which I use extensively when I am on flights. There is a graphql API and webhooks you can use for extending its functionality. Search could be a little better, but I use the labeling system which works well. I also use the logseq integration to keep a persistent log of articles I read on any given day.

[1] https://github.com/omnivore-app/omnivore

breadchris··on Ask HN: What are you reading these days?
same!
← PreviousPage 2 of 4Next →