HNHacker News
TopNewBestAskShowJobs

snake_case

1,274 karma · joined December 22, 2014

https://github.com/jacobdeichert
submissionscomments
snake_case··on Reducing Rust Incremental Compilation Times on macOS
Author here. I just tried disabling debug info (debug = 0) for the first time and it looks like my recompile times shave off another 500-1000ms which isn't bad!
snake_case··on Reducing Rust Incremental Compilation Times on macOS
Author here. How long do your dev builds take, and what is it that you are building? Curious what kind of improvement you get with split-debuginfo enabled!

This project is a very small hyper/tokio backend API. However, I also work on a CLI tool [1] I created which has very fast recompile times, usually less than a second. Mostly because it's pretty light on dependencies.

[1]: https://github.com/jakedeichert/mask

snake_case··on Rust is for Professionals
A few years back I chose Rust as the language I was going to build side projects with. I started out building a wasm A* pathfinding demo [1] to get a better hang of it.

A little bit later I wrote a CLI task runner [2] which is defined by a simple markdown file. I find Rust to be perfectly aligned with the goals of a CLI utility: single deployable binary and very low startup cost.

Most recently I launched a side project [3] (a jigsaw puzzle website) using Rust as my backend API service. I've been slowly building up a server framework over the years and finally was able to put it to use! Yes, it took me much longer to ship something in Rust versus other languages I'm more familiar with. But after learning Rust for a few years now, it doesn't take me much more time to build a feature than it would in another language.

Early on, I ran into a lot of borrower issues and got stuck many times. But after I got over those problems, I realized that for any future hurdles I would face, I just needed to keep pushing and eventually I would find a solution. I have found that with game development or heavily stateful apps, I tend to run into borrower issues more often. But for an API service with a simple input and output, I almost never run into borrower issues.

[1]: https://github.com/jakedeichert/wasm-astar

[2]: https://github.com/jakedeichert/mask

[3]: https://puzzlepanda.com

snake_case··on The Decline of Heroku
Yeah, DigitalOcean's App Platform recently added support for custom images this year [1] (I was also waiting for that). I'm currently running a $5 droplet for my service [2] powered by docker-compose, but really looking forward to deleting some bash scripts and going all in on Render or Fly.io :)

[1]: https://www.digitalocean.com/blog/introducing-bring-your-own...

[2]: https://puzzlepanda.com

snake_case··on The Decline of Heroku
I've been thinking about switching to Render recently, but there's one feature blocking me: the ability to deploy an existing docker image from a private registry [1]. As far as I can tell, you have to connect a repo to deploy a Render service.. and monorepos are not fully supported yet either.

Is your 2021 roadmap public, or is Canny your official roadmap? Really interested to see what's coming soon :)

[1]: https://feedback.render.com/features/p/deploy-docker-images-...

Btw, I've been working at Canny for the past year and was pleasantly surprised to see your feedback site!

snake_case··on Cloudflare Pages is now Generally Available
I've migrated my blog [1] and another landing page from Netlify to Cloudflare Pages so far and have been pretty happy with it!

@rita3ko I would love the ability to disable automatic preview builds. My "production" branch which Cloudflare Pages deploys from has a /public directory which I ship, but my other branches are not structured the same and therefore cause build failures. I just don't need preview builds for my use case.

[1]: https://jakedeichert.com

snake_case··on Speed Is the Killer Feature
Thanks for trying it out!

Yupp, it's on my todo list to give users the option on how difficult they want the rotation to be. So far I have users that want click-to-rotate and even no rotation at all.

snake_case··on Speed Is the Killer Feature
You're exactly right! Building a slow web app is only one npm install away.

It takes someone who really cares about performance and monitors it to make a fast web app and to keep it that way. Unfortunately it's still too easy to accidentally make it slow.

snake_case··on Speed Is the Killer Feature
I agree that the web is generally more bloated and slow than native apps. However, native apps don't magically become performant by being native.

As an example, my grandmother-in-law has been putting up with Microsoft Jigsaw's desktop app for years. Last time I watched her load it, we sat there for awhile and had to restart multiple times because it was getting stuck loading some advertisements. The startup time was absolutely brutal and the run-time performance while playing wasn't great either, even with a decent laptop.

So when I saw how slow, bloated and laggy this app was, I wanted to try to make her a better jigsaw app for the web and I think I succeeded [1]. It loads almost instantly, has no advertisements, and feels super smooth while playing... and it's mostly just js, svelte and a little bit of Rust WASM.

Anyway, I do prefer a good native app over a web app when available. But with native apps, it's also harder to block ads and other trackers compared to the web.

[1]: https://puzzlepanda.com

snake_case··on Rust Foundation: Hello, World
I mentioned elsewhere in this thread that I built a jigsaw puzzle website [1] with a Rust API backend and I launched it last week. It definitely took longer than if I had used Node, but I enjoy working with Rust much more.

Apart from that website, I have also open sourced a Rust CLI task runner [2] which uses markdown files as a command definition format. This is probably the most important tool I've ever written, as I have used it every single day since.

[1]: https://puzzlepanda.com

[2]: https://github.com/jakedeichert/mask

snake_case··on Rust Foundation: Hello, World
I just launched a jigsaw puzzle website last week that has a backend API written in Rust and uses the postgres crate [1].

Since this is a side project for me, there wasn't much risk if it ended up being a bad decision. Multiple times throughout the project I got frustrated with the DX of existing http frameworks I tried and ended up building my own [2] on top of hyper. However, after launching my site and seeing how it performs in production, I could not be happier with the result! I had a bit of Rust experience before the project but learned a lot more through building this.

For you and others, I think it really depends on the situation. Building a Rust CRUD app will likely take longer than the other languages you're used to as the ecosystem is under heavy development, especially with async/await. So if you or your team are in a rush, I'll just echo that you should build with the tools you already know. If you have time and budget to experiment like I did, it might be worthwhile and I can promise it will be fun :)

[1]: https://github.com/sfackler/rust-postgres

[2]: https://twitter.com/jakedeichert/status/1205230350160539650

snake_case··on Ask HN: What is your “I don't care if this succeeds” project?
Puzzle Panda – https://puzzlepanda.com

I recently just launched this jigsaw puzzle website!

The reason I originally built it was for a few family members who were tired of how slow other jigsaw apps were. I wanted to build something faster and easier to use.

Even if it doesn’t take off, I have a few players already that want me to keep updating it. I don’t mind since it’s pretty cheap to host and doesn’t require any maintenance. It also serves as my first attempt at running a side business with an optional premium subscription tier. And the last thing is that it’s an experiment for me to see how well Svelte and Rust perform in production :)

snake_case··on Show HN: I built a jigsaw puzzle website
Thanks for giving it a try! That’s really great feedback.

I was planning on adding scrollwheel zoom support soon for computers, and pinch to zoom on mobile is a must have.

Regarding snapping pieces inadvertently and cheating, I might try to reduce the snap distance if someone is dragging a piece above a certain speed. That should help a bit.

For auto rotation, I’ve heard from a few people that they want rotation completely disabled, while others want it to be more challenging and not automatic. I might need to offer users an option around this.

EDIT: just noticed your point about preventing snapping to hidden pieces on a stack. Great idea too! I’ll likely give that a try :)

snake_case··on Show HN: I built a jigsaw puzzle website
Ahh, I see that might be a bit confusing, thanks for pointing this out!

When you first tap or click on a piece, it auto rotates to its correct rotation.

I'm thinking about adding an option to let people choose if they want to click-to-rotate or even disable rotation completely.

snake_case··on Show HN: I built a jigsaw puzzle website
Thanks for trying it out!

Great point about the demo not being visible enough. I'm going to try to improve that right now.

EDIT: I just deployed an update to include the demo button near the top of the landing page :)

snake_case··on Show HN: I built a jigsaw puzzle website
Hi HN!

I built this website last year for family members who enjoy playing jigsaw puzzles on their computers. I decided to build it because I frequently heard complaints about how slow some of the more popular jigsaw apps are and how they are filled with annoying advertisements. So, over the course of many weekends and weeknights, I slowly developed this site with the helpful feedback I received from my family and friends.

The site is completely free to use. No advertisements, and no selling of user data. However, I do offer a paid tier for users that want more jigsaw puzzles, a harder difficulty mode, and a few other perks.

On the technical side, I'm using Svelte on the frontend with a tiny bit of wasm, and Rust for my backend API. I hope the site feels snappy, it's one of the main reasons why I decided to build it.

There's a demo puzzle linked on the home page for anyone who doesn't want to sign up! I'd recommend trying it on a computer or tablet as mobile is still a little rough around the edges :)

Happy to answer any questions about it!

snake_case··on Ask HN: What are you working on?
Hey, I used to have that same itch too! Curabase looks almost identical to the app I was building as a side project back in 2017. Column-based bookmarks, easy to categorize and reorganize, though I was using Material UI back then and was consumer focused.

Never launched... it became another unfinished project. I eventually realized that I don't really need to store that many bookmarks.

snake_case··on Ask HN: What are you working on?
Happy to send you the link! My profile has an email you can contact me at, or my twitter.
snake_case··on Ask HN: What are you working on?
I'm working on a jigsaw puzzle website that started out as a fun side project last year. A few of my relatives are currently using it and enjoying it.

Fun fact, the client is very lightweight and completely written in svelte, except for a tiny rust/wasm helper lib. The backend is 100% rust paired with postgres. I wrote my own tiny server framework on top of hyper which is much nicer to use than most of the heavier frameworks I've tried.

Anyway, the site is almost complete, just finishing up a few minor details before launching it to the public! It has a free tier as well as a paid tied for users that want more.

If you're interested in trying it, please do reach out :)

After launch, I plan on tweeting about it and about building my first business as a solo dev.

snake_case··on No script is too simple
If you're not opposed to installing another tool for scripting, then check out my project mask [1]. It's a CLI task runner (made with rust, single binary) that supports multiple scripting languages and it's defined with a simple, human-readable markdown file :)

I used to have a scripts directory for each project, but I really wanted basic argument/options parsing and subcommands. That's mostly why I made mask. Now I use it daily as a project-based task runner, as well as a global utility command.

[1]: https://github.com/jakedeichert/mask

snake_case··on Show HN: A CLI task runner defined by a markdown file
Hey! So this tool is something that I've wanted to build for a while now and it was a good opportunity to improve my Rust skills. It's inspired by a few other tools such as just [1] and maid [2]. The readme's faq section has some more background on why I wanted to build this.

To summarize mask, it's a cli tool that looks for a maskfile.md in the current directory and parses it for commands. A maskfile.md is both a human-readable document and a simple command definition format. Tasks can be defined in sh, bash, zsh, fish, js, python, php, and ruby.

Though it's not at v1.0 yet, I've been using it daily in personal projects and also as a global system utility for handy commands and automation tasks.

Happy to answer any questions!

[1]: https://github.com/casey/just

[2]: https://github.com/egoist/maid

snake_case··on Ask HN: Who wants to be hired? (November 2019)
Senior Software Developer - Focusing on back-end architecture and API design

Location: Toronto

Remote: Yes (Remote only)

Willing to relocate: No

Technologies: Rust, TypeScript/Node, GraphQL, Go, PostgreSQL, MySQL, Stripe checkout & subscriptions, Kubernetes, WebAssembly, React, Svelte

Résumé/CV: email me to request it!

GitHub: https://github.com/jakedeichert

Email: see profile :)

snake_case··on Gatsby raises $15M Series A for its modern web development platform
> Development mode does not serve html files like production builds do. The site behaves differently in that mode, and some issues only happen in actual builds. When you encounter one such issue, the feedback loop becomes "full build for every change" == ~10min of waiting to try every single change. This is a HUGE productivity killer.

This got me so many times. I was frustrated enough that I set up a headless chrome prerenderer to snapshot my gatsby-built site before every single deploy just so I could verify the html diff to make sure my site looked correct still.

The trust issues alone were enough to make me switch off of it.

snake_case··on Gatsby raises $15M Series A for its modern web development platform
I switched my personal Jekyll site to Gatsby 2 years ago. I ran into some minor bugs and even contributed 3 PRs that got merged. I loved working with it for a few weeks. Two months after switching, it too dawned on me how over-engineered it is. I switched off of it to a custom static site generator I made (admittedly it was also over-engineered), but I'm finally back to a simple static generator called zola [1] and it feels so refreshing.

Not only is Gatsby over-engineered, it's also bloated IMO. I think one of their main selling points it that page loads seem instant. Preloading other pages in the background seems needless to me when we're talking about a simple blog. Sure, it might be good for apps, but forcing my (few) visitors to download needless mbs on desktop or mobile seems like a bad user experience to me.

[1]: https://github.com/getzola/zola

snake_case··on Ask HN: What technologies did you learn in 2018?
I got back into Rust this year via WebAssembly! It was really fun to make this little A* pathfinding demo: https://github.com/jakedeichert/wasm-astar

After that little project, I got started on an api service in Crystal. Crystal was interesting to try out, but I decided to switch to Rust after a few weeks since the ecosystem/community is much larger. I first chose to use the Rocket framework [0] but switched to actix-web [1] after a few weeks so I didn't have to use nightly anymore. So far actix-web has been great, but I'll be keeping my eye on Rocket going stable hopefully sometime in 2019, and also another library called warp [2].

I've also got another wasm project in the works... hoping to finish that off soon and publish sometime next month.

[0]: https://github.com/SergioBenitez/Rocket

[1]: https://github.com/actix/actix-web

[2]: https://github.com/seanmonstar/warp

snake_case··on Introduction to A* (1997)
Amit always produces such great content. I can't even count the number of times I've landed on his site... such a useful resource!

A* was probably one of the most fun projects I did back in school a few years ago. If anyone is interested, last winter I ported an old C#/Unity A* implementation of mine to Rust and compiled it to WebAssembly for a small demo. It was my first time trying out wasm and really getting into Rust.

Repo: https://github.com/jakedeichert/wasm-astar

Live demo: https://jakedeichert.github.io/wasm-astar/

snake_case··on Crystal 0.25.1 released
Thanks! These instructions seem to have less warnings than I saw last time, which implies it's more stable now.
snake_case··on Crystal 0.25.1 released
That's great! I've only heard complaints that it's difficult to statically compile. Sounds like a solved problem though.
snake_case··on Crystal 0.25.1 released
Thanks for explaining! In other threads, I've seen people refer to them as fat binaries, but yes, I've also seen them referred to as statically linked binaries.
snake_case··on Crystal 0.25.1 released
I'm referring to fat binaries like the one Golang would compile too. Apologies if I have some terms mixed up here!

Golang produces one single binary you can deploy to your target environment and doesn't really require anything else installed.

From what I've read, Crystal generates a binary but you also need to ensure Crystal is installed on your target environment.

← PreviousPage 2 of 4Next →