The best Hacker News stories from Show from the past day
Latest posts:
Show HN: Brew.fm – Let bots discover new music on Spotify for you
Use Spotify? This tool will automate your music discovery for you. Join here (100% perpetually free with no strings attached): <a href="https://brew.fm" rel="nofollow">https://brew.fm</a><p>Some time ago, I built and showed HN[1] brew.fm, a tool helping artists remix each other’s work. It had been quiet, and I remembered how fun it was to work with the Spotify API, so I repurposed the tool to solve one of my own problems: missing out on new music of my favorite artists. I shared it on Reddit yesterday[2], and this seems to hit a spot for more people: so far 833 people connected their Spotify account.<p>How it works: The tool simply shows your top 50 artists on Spotify over short, medium and long term, and checks those artists for new music. If you select a playlist, every artist involved in the tracks will be checked for new music, after which new releases are shown sorted by most recent release date.<p>Here’s a video of me demoing the tool: <a href="https://youtu.be/Nh2Ognb4PgU" rel="nofollow">https://youtu.be/Nh2Ognb4PgU</a>. Enjoy! Very open to feedback.<p>[1] <a href="https://news.ycombinator.com/item?id=29952633" rel="nofollow">https://news.ycombinator.com/item?id=29952633</a><p>[2] <a href="https://www.reddit.com/r/spotify/comments/wsq8rl/let_a_1000_bots_discover_new_music_on_spotify_for/" rel="nofollow">https://www.reddit.com/r/spotify/comments/wsq8rl/let_a_1000_...</a>
Show HN: ClavaScript: a ClojureScript syntax to JavaScript compiler
Show HN: Bandhiking (Unofficial Bandcamp Radio)
Show HN: An attempt to make a reduce-palette/dither filter for 2d canvas images
Show HN: An attempt to make a reduce-palette/dither filter for 2d canvas images
Show HN: Euporie Console – a terminal console for Jupyter kernels
I've been working on a new terminal console for interacting with Jupyter kernels.<p>It can display rich output in the terminal, including images (using Sixel / Kitty / iTerm2 terminal graphics protocols), ipywidgets, LaTeX, and HTML. You can also save your terminal session as a Jupyter notebook.
Show HN: Euporie Console – a terminal console for Jupyter kernels
I've been working on a new terminal console for interacting with Jupyter kernels.<p>It can display rich output in the terminal, including images (using Sixel / Kitty / iTerm2 terminal graphics protocols), ipywidgets, LaTeX, and HTML. You can also save your terminal session as a Jupyter notebook.
Show HN: Euporie Console – a terminal console for Jupyter kernels
I've been working on a new terminal console for interacting with Jupyter kernels.<p>It can display rich output in the terminal, including images (using Sixel / Kitty / iTerm2 terminal graphics protocols), ipywidgets, LaTeX, and HTML. You can also save your terminal session as a Jupyter notebook.
Tell HN: A new way to use GPT-3 to generate code (and everything else)
Hi HN,<p>One of the things that frustrates me about Copilot is that all tasks posed to it must be in the form of a completion. By writing clever comments you can get it to generate a few lines of code or a short function body, but you never get coherent long-form generations just from mashing the tab key.<p>I’m working on a different approach. Instead of requiring you specify your code generation task through stilted comments, you can use GPT-3 to fill in what I call “instructional templates”. They’re like f-strings, except the English goes on the inside and the Python goes on the outside. Additionally, each instruction’s location and surrounding context can aid in interpreting it, allowing instructions to be impressively terse.<p>I’ve collected 10 examples of the method on a Twitter thread here. Most code examples are in Python, but I also demonstrate generating CSV, NDJSON, R, Markdown, and HTML: <a href="https://twitter.com/goodside/status/1559801520773898240?s=21&t=-r-dR8pkhZ3lfCpeLOWqvw" rel="nofollow">https://twitter.com/goodside/status/1559801520773898240?s=21...</a><p>I also have a few examples of more creative, non-program output in HTML and Markdown in this thread: <a href="https://twitter.com/goodside/status/1560953991722418177?s=21&t=-r-dR8pkhZ3lfCpeLOWqvw" rel="nofollow">https://twitter.com/goodside/status/1560953991722418177?s=21...</a><p>Interested in any feedback, especially from anyone who’s tried to apply my method to their own problems.
Show HN: Create Native Desktop Apps from WebAssembly
Show HN: Create Native Desktop Apps from WebAssembly
Show HN: Create Native Desktop Apps from WebAssembly
Show HN: Create Native Desktop Apps from WebAssembly
Show HN: MyNotifier – Simple Notifications
Show HN: I created a library to create product tours / walkthroughs
This is significantly different in its feature set than the existing open source alternatives, I made this to be a more complete library, and well, as a portfolio artefact.
Any comment is greatly appreciated. Thank you!<p>Code: <a href="https://github.com/lusift/lusift" rel="nofollow">https://github.com/lusift/lusift</a>
Show HN: I created a library to create product tours / walkthroughs
This is significantly different in its feature set than the existing open source alternatives, I made this to be a more complete library, and well, as a portfolio artefact.
Any comment is greatly appreciated. Thank you!<p>Code: <a href="https://github.com/lusift/lusift" rel="nofollow">https://github.com/lusift/lusift</a>
Show HN: I created a library to create product tours / walkthroughs
This is significantly different in its feature set than the existing open source alternatives, I made this to be a more complete library, and well, as a portfolio artefact.
Any comment is greatly appreciated. Thank you!<p>Code: <a href="https://github.com/lusift/lusift" rel="nofollow">https://github.com/lusift/lusift</a>
Show HN: Pi-hole deployed at the edge on Fly.io and accessed via TailScale
Hi, I just saw this tweet[^1] by @QuinnyPig that mentions accessing your Pi-hole while traveling thanks to TailScale and wondered how to deploy Pi-hole at the edge, instead of a home lab, for improved latency.<p>My simple solution involves running it on Fly.io to make it easy to relocate anywhere, and embedding tailscale into the same firecracker VM (né docker container) to keep the infra dead simple and cheap.<p>Naively deploying a publicly accessible DNS resolver is not ideal[^2] so the main constraint was to secure the VM by 1) keeping all public ports closed and 2) having Pi-hole listen only on the private network interface created by TailScale.<p>It's all very straightforward but it's noticeably improved my bandwidth usage and page loading times across my laptop and mobile phone, so I figured I'd share. Suggestions for improvement are also welcome!<p>[^1]: <a href="https://twitter.com/QuinnyPig/status/1558521941538983936" rel="nofollow">https://twitter.com/QuinnyPig/status/1558521941538983936</a><p>[^2]: <a href="https://www.cloudflare.com/learning/ddos/dns-amplification-ddos-attack/" rel="nofollow">https://www.cloudflare.com/learning/ddos/dns-amplification-d...</a>
Show HN: Modifying Clang for a Safer, More Explicit C++
Modified C++<p>Inspired by the paper "Some Were Meant for C" by Stephen Kell, I decided to show that it's possible to iterate C++ to be safer, more explicit, and less error-prone.<p>Here's a possible starting point: I didn't invent a new language or compiler, but took the world's best compiler, clang, and modified it to begin iterating towards a new furture of C++. Naming things is hard, so I call this 'Modified C++'. Some of the following could be implemented as tooling in a linter or checker, but the idea is to update the compiler directly. I also wanted to learn more about clang. This compiler needs a flag to enable/disable this functionality so that existing library code can be used with a 'diagnostic ignored' pragma.<p>You can build clang using the normal non-bootstrap process and you'll be left with a clang that compiles C++ but with the following modifications:<p><pre><code> - All basic types (excluding pointers and references) are const by
default and may be marked 'mutable' to allow them to be changed after
declaration
- Lambda capture lists must be explicit (no [&] or [=], by themselves)
- Braces are required for conditional statements, case and default
statements within switches, and loops
- Implicit conversions to bool are prohibited (e.g., pointers must be
compared against nullptr/NULL)
- No goto support
- Explicit 'rule of six' for classes must be programmer-implemented
(default, copy, and move c'tors, copy and move assignment, d'tor)
- No C style casts
</code></pre>
Here's an example program that's valid in Modified C++:<p><pre><code> mutable int main(int, char**)
{
mutable int x = 0;
return x;
}
Here's another that will fail to compile:
mutable int main(int, char**)
{
int x = 1;
x = 0; // x is constant
return x;
}
</code></pre>
I'd like your feedback. Future changes I'm thinking about are:<p><pre><code> - feature flag for modified c++ to enable/disable with 'diagnostic ignored'
pragma, to support existing headers and libraries
- support enum classes only
- constructor declarations are explicit by default
- namespaces within classes
- normalize lambda and free function syntax
- your ideas here</code></pre>
Show HN: Modifying Clang for a Safer, More Explicit C++
Modified C++<p>Inspired by the paper "Some Were Meant for C" by Stephen Kell, I decided to show that it's possible to iterate C++ to be safer, more explicit, and less error-prone.<p>Here's a possible starting point: I didn't invent a new language or compiler, but took the world's best compiler, clang, and modified it to begin iterating towards a new furture of C++. Naming things is hard, so I call this 'Modified C++'. Some of the following could be implemented as tooling in a linter or checker, but the idea is to update the compiler directly. I also wanted to learn more about clang. This compiler needs a flag to enable/disable this functionality so that existing library code can be used with a 'diagnostic ignored' pragma.<p>You can build clang using the normal non-bootstrap process and you'll be left with a clang that compiles C++ but with the following modifications:<p><pre><code> - All basic types (excluding pointers and references) are const by
default and may be marked 'mutable' to allow them to be changed after
declaration
- Lambda capture lists must be explicit (no [&] or [=], by themselves)
- Braces are required for conditional statements, case and default
statements within switches, and loops
- Implicit conversions to bool are prohibited (e.g., pointers must be
compared against nullptr/NULL)
- No goto support
- Explicit 'rule of six' for classes must be programmer-implemented
(default, copy, and move c'tors, copy and move assignment, d'tor)
- No C style casts
</code></pre>
Here's an example program that's valid in Modified C++:<p><pre><code> mutable int main(int, char**)
{
mutable int x = 0;
return x;
}
Here's another that will fail to compile:
mutable int main(int, char**)
{
int x = 1;
x = 0; // x is constant
return x;
}
</code></pre>
I'd like your feedback. Future changes I'm thinking about are:<p><pre><code> - feature flag for modified c++ to enable/disable with 'diagnostic ignored'
pragma, to support existing headers and libraries
- support enum classes only
- constructor declarations are explicit by default
- namespaces within classes
- normalize lambda and free function syntax
- your ideas here</code></pre>