The best Hacker News stories from Show from the past day
Latest posts:
Show HN: Bike – macOS Native Outliner
Bike’s most original feature is the “fluid” text editing. Lots of text editors have animated some interactions (cursor movement, insert newline, etc), but I think Bike is the first designed from the ground up to support fluid editing.<p>Give it a try, it feels different. (movie on home page if you don't have Mac)<p>Other Features:<p>• In text mode Bike works like a normal text editor. In outline mode rows are constrained to outline hierarchy.<p>• .bike file format is HTML subset, so files are easy to parse and manipulate. Bike also supports .opml and .txt.<p>• Scriptable via AppleScript. Javascript plugin API also expected in future, though no timing on that.<p>• Architecture needed to support fluid editing also makes Bike faster/more scalable than most (all?) outliners and many text editors. I test performance using the Moby Dick Workout[^1].<p>Implementation Notes:<p>• View is built using CALayers[^2].<p>• Animations are performed by Core animation and Motion[^3] lib.<p>• View performance is determined by visible text, not document size.<p>Model representation is interesting in that it’s just a flat list of rows. Each row has a `level` property, outline structure is determined dynamically. View implementation requires that each row has a unique ID.<p>I’m using OrderedDictionary from Swift Collections[^4] to store rows. This is Bike’s performance bottleneck for large outlines. Eventually I may change to augmented b+tree and then should be able to work with gigabytes worth of outline. That will be fun, but not sure it’s actually needed. Already probably fast enough for 99% of use cases as is.<p>Hope you find Bike interesting. I’m happy to answer any questions.<p>[^1]: <a href="https://www.hogbaysoftware.com/posts/moby-dick-workout/" rel="nofollow">https://www.hogbaysoftware.com/posts/moby-dick-workout/</a><p>[^2]: <a href="https://developer.apple.com/documentation/quartzcore/calayer" rel="nofollow">https://developer.apple.com/documentation/quartzcore/calayer</a><p>[^3]: <a href="https://github.com/b3ll/Motion" rel="nofollow">https://github.com/b3ll/Motion</a><p>[^4]: <a href="https://github.com/apple/swift-collections" rel="nofollow">https://github.com/apple/swift-collections</a>
Show HN: Bike – macOS Native Outliner
Bike’s most original feature is the “fluid” text editing. Lots of text editors have animated some interactions (cursor movement, insert newline, etc), but I think Bike is the first designed from the ground up to support fluid editing.<p>Give it a try, it feels different. (movie on home page if you don't have Mac)<p>Other Features:<p>• In text mode Bike works like a normal text editor. In outline mode rows are constrained to outline hierarchy.<p>• .bike file format is HTML subset, so files are easy to parse and manipulate. Bike also supports .opml and .txt.<p>• Scriptable via AppleScript. Javascript plugin API also expected in future, though no timing on that.<p>• Architecture needed to support fluid editing also makes Bike faster/more scalable than most (all?) outliners and many text editors. I test performance using the Moby Dick Workout[^1].<p>Implementation Notes:<p>• View is built using CALayers[^2].<p>• Animations are performed by Core animation and Motion[^3] lib.<p>• View performance is determined by visible text, not document size.<p>Model representation is interesting in that it’s just a flat list of rows. Each row has a `level` property, outline structure is determined dynamically. View implementation requires that each row has a unique ID.<p>I’m using OrderedDictionary from Swift Collections[^4] to store rows. This is Bike’s performance bottleneck for large outlines. Eventually I may change to augmented b+tree and then should be able to work with gigabytes worth of outline. That will be fun, but not sure it’s actually needed. Already probably fast enough for 99% of use cases as is.<p>Hope you find Bike interesting. I’m happy to answer any questions.<p>[^1]: <a href="https://www.hogbaysoftware.com/posts/moby-dick-workout/" rel="nofollow">https://www.hogbaysoftware.com/posts/moby-dick-workout/</a><p>[^2]: <a href="https://developer.apple.com/documentation/quartzcore/calayer" rel="nofollow">https://developer.apple.com/documentation/quartzcore/calayer</a><p>[^3]: <a href="https://github.com/b3ll/Motion" rel="nofollow">https://github.com/b3ll/Motion</a><p>[^4]: <a href="https://github.com/apple/swift-collections" rel="nofollow">https://github.com/apple/swift-collections</a>
Show HN: Bike – macOS Native Outliner
Bike’s most original feature is the “fluid” text editing. Lots of text editors have animated some interactions (cursor movement, insert newline, etc), but I think Bike is the first designed from the ground up to support fluid editing.<p>Give it a try, it feels different. (movie on home page if you don't have Mac)<p>Other Features:<p>• In text mode Bike works like a normal text editor. In outline mode rows are constrained to outline hierarchy.<p>• .bike file format is HTML subset, so files are easy to parse and manipulate. Bike also supports .opml and .txt.<p>• Scriptable via AppleScript. Javascript plugin API also expected in future, though no timing on that.<p>• Architecture needed to support fluid editing also makes Bike faster/more scalable than most (all?) outliners and many text editors. I test performance using the Moby Dick Workout[^1].<p>Implementation Notes:<p>• View is built using CALayers[^2].<p>• Animations are performed by Core animation and Motion[^3] lib.<p>• View performance is determined by visible text, not document size.<p>Model representation is interesting in that it’s just a flat list of rows. Each row has a `level` property, outline structure is determined dynamically. View implementation requires that each row has a unique ID.<p>I’m using OrderedDictionary from Swift Collections[^4] to store rows. This is Bike’s performance bottleneck for large outlines. Eventually I may change to augmented b+tree and then should be able to work with gigabytes worth of outline. That will be fun, but not sure it’s actually needed. Already probably fast enough for 99% of use cases as is.<p>Hope you find Bike interesting. I’m happy to answer any questions.<p>[^1]: <a href="https://www.hogbaysoftware.com/posts/moby-dick-workout/" rel="nofollow">https://www.hogbaysoftware.com/posts/moby-dick-workout/</a><p>[^2]: <a href="https://developer.apple.com/documentation/quartzcore/calayer" rel="nofollow">https://developer.apple.com/documentation/quartzcore/calayer</a><p>[^3]: <a href="https://github.com/b3ll/Motion" rel="nofollow">https://github.com/b3ll/Motion</a><p>[^4]: <a href="https://github.com/apple/swift-collections" rel="nofollow">https://github.com/apple/swift-collections</a>
Show HN: Bike – macOS Native Outliner
Bike’s most original feature is the “fluid” text editing. Lots of text editors have animated some interactions (cursor movement, insert newline, etc), but I think Bike is the first designed from the ground up to support fluid editing.<p>Give it a try, it feels different. (movie on home page if you don't have Mac)<p>Other Features:<p>• In text mode Bike works like a normal text editor. In outline mode rows are constrained to outline hierarchy.<p>• .bike file format is HTML subset, so files are easy to parse and manipulate. Bike also supports .opml and .txt.<p>• Scriptable via AppleScript. Javascript plugin API also expected in future, though no timing on that.<p>• Architecture needed to support fluid editing also makes Bike faster/more scalable than most (all?) outliners and many text editors. I test performance using the Moby Dick Workout[^1].<p>Implementation Notes:<p>• View is built using CALayers[^2].<p>• Animations are performed by Core animation and Motion[^3] lib.<p>• View performance is determined by visible text, not document size.<p>Model representation is interesting in that it’s just a flat list of rows. Each row has a `level` property, outline structure is determined dynamically. View implementation requires that each row has a unique ID.<p>I’m using OrderedDictionary from Swift Collections[^4] to store rows. This is Bike’s performance bottleneck for large outlines. Eventually I may change to augmented b+tree and then should be able to work with gigabytes worth of outline. That will be fun, but not sure it’s actually needed. Already probably fast enough for 99% of use cases as is.<p>Hope you find Bike interesting. I’m happy to answer any questions.<p>[^1]: <a href="https://www.hogbaysoftware.com/posts/moby-dick-workout/" rel="nofollow">https://www.hogbaysoftware.com/posts/moby-dick-workout/</a><p>[^2]: <a href="https://developer.apple.com/documentation/quartzcore/calayer" rel="nofollow">https://developer.apple.com/documentation/quartzcore/calayer</a><p>[^3]: <a href="https://github.com/b3ll/Motion" rel="nofollow">https://github.com/b3ll/Motion</a><p>[^4]: <a href="https://github.com/apple/swift-collections" rel="nofollow">https://github.com/apple/swift-collections</a>
Show HN: Babeloop, a new music sight-reading webapp
Backstory: I have a kid learning to play the clarinet in a music conservatory, which involves compulsory sight reading classes. Teaching for sight reading is done on books. The idea for this app is to port the method online, so that it's easier to practice and follow one's progress. It should also be more fun, and, for those so inclined, competitive.<p>The learning method is based on landmarks: for each clef one first learns the position of 2-3 landmarks, and then each note is in relation to a landmark. So for example, if you know where the middle G is on the treble clef, then you can learn fast that 2 positions up (next line) is B, and two positions down is E. (Anecdotally, in an earlier iteration of the app, landmark notes were displayed using specific colors; but users learned colors instead of the note position on the staff, and when they moved to a level without colors (or an actual score) they were completely lost.)<p>The app doesn't try to teach keyboard playing, or fingering for any other instrument for that matter. It only helps associate the position of a note on the staff with a name, in a given clef. It doesn't deal with octaves: a C3 is a C4 is a C; or accidentals: a sharp G is a flat G is a G. It also doesn't wait for user input, as other apps do. Music doesn't work that way; but more importantly, the point is to learn to recognize intervals instantly, <i>not</i> count them.<p>No account is necessary to use the app, only to participate in the leaderboard, and save one's score in case of device reset (or to use more than one device). When an account is created, the data is stored on the server in SQLite; I'm curious to see how far it can go. (Without an account, no data leaves the device.)<p>It's still a little rough around the edges but should work ok in reasonably recent browsers. On the client side, it uses VexFlow to display notes, staff and clefs, but animations are done using CSS transitions (not JS), to be mobile friendly. Tone.js helps provide a more accurate timing than a simple setInterval. Icons are coded in SVG by hand; for simple shapes, this is surprisingly fun and straightforward to do.
Show HN: Organize your open Chrome Tabs like apps on a desktop
Show HN: IT-Security for Developers
Show HN: What dogs can eat? (Web App)
Show HN: I built a minimal website for Los Angeles
I built <a href="https://veryla.io" rel="nofollow">https://veryla.io</a> - a minimal website for Los Angeles.<p>After growing tired of the chaotic, fast paced, attention-economy focused state of the web, I decided to build something simple and quiet. A site with no "real" database (just a json file I update by hand), no email signups, no ads, no pop ups, no data collection (besides google analytics), and no comment section filled with highly polarized politics. A site updated only 1-2 times per week.<p>It's just unique information in a simple and accessible format. The goal is for people to <i>not</i> check veryLA every day. I don't want people hitting refresh for emotionally charged SEO packed news to react to. My goal is for people to check out veryLA 1-2 per week and then go into the real world and have fun with the information they found.<p>Hope you enjoy if you live in Los Angeles or are planning to visit!
Show HN: I built a minimal website for Los Angeles
I built <a href="https://veryla.io" rel="nofollow">https://veryla.io</a> - a minimal website for Los Angeles.<p>After growing tired of the chaotic, fast paced, attention-economy focused state of the web, I decided to build something simple and quiet. A site with no "real" database (just a json file I update by hand), no email signups, no ads, no pop ups, no data collection (besides google analytics), and no comment section filled with highly polarized politics. A site updated only 1-2 times per week.<p>It's just unique information in a simple and accessible format. The goal is for people to <i>not</i> check veryLA every day. I don't want people hitting refresh for emotionally charged SEO packed news to react to. My goal is for people to check out veryLA 1-2 per week and then go into the real world and have fun with the information they found.<p>Hope you enjoy if you live in Los Angeles or are planning to visit!
Show HN: I built a minimal website for Los Angeles
I built <a href="https://veryla.io" rel="nofollow">https://veryla.io</a> - a minimal website for Los Angeles.<p>After growing tired of the chaotic, fast paced, attention-economy focused state of the web, I decided to build something simple and quiet. A site with no "real" database (just a json file I update by hand), no email signups, no ads, no pop ups, no data collection (besides google analytics), and no comment section filled with highly polarized politics. A site updated only 1-2 times per week.<p>It's just unique information in a simple and accessible format. The goal is for people to <i>not</i> check veryLA every day. I don't want people hitting refresh for emotionally charged SEO packed news to react to. My goal is for people to check out veryLA 1-2 per week and then go into the real world and have fun with the information they found.<p>Hope you enjoy if you live in Los Angeles or are planning to visit!
Show HN: KittenDNS – Easy to setup, rule engine, LetsEncrypt compatible
My goal was to create a DNS server as simple as the LDAP server I've been contributing to (glauth) and here it is: https://github.com/fusion/kittendns<p>A few things to know about it:
- It is easy to configure using a Toml file
- I am using it to bail my coredns/etcd instances when under attack
- (yes, it also works as a service location server)
- It comes with a simple, plain English, rule engine that doesn't do much at this point
- It can be used with LetsEncrypt. I use it to retrieve certificates for my home servers.
- RFC: all the nice ones :)<p>Anyway, feedback is welcome.
Show HN: KittenDNS – Easy to setup, rule engine, LetsEncrypt compatible
My goal was to create a DNS server as simple as the LDAP server I've been contributing to (glauth) and here it is: https://github.com/fusion/kittendns<p>A few things to know about it:
- It is easy to configure using a Toml file
- I am using it to bail my coredns/etcd instances when under attack
- (yes, it also works as a service location server)
- It comes with a simple, plain English, rule engine that doesn't do much at this point
- It can be used with LetsEncrypt. I use it to retrieve certificates for my home servers.
- RFC: all the nice ones :)<p>Anyway, feedback is welcome.
Show HN: KittenDNS – Easy to setup, rule engine, LetsEncrypt compatible
My goal was to create a DNS server as simple as the LDAP server I've been contributing to (glauth) and here it is: https://github.com/fusion/kittendns<p>A few things to know about it:
- It is easy to configure using a Toml file
- I am using it to bail my coredns/etcd instances when under attack
- (yes, it also works as a service location server)
- It comes with a simple, plain English, rule engine that doesn't do much at this point
- It can be used with LetsEncrypt. I use it to retrieve certificates for my home servers.
- RFC: all the nice ones :)<p>Anyway, feedback is welcome.
Show HN: I made a body-interactive music app
I made this iPhone app called "Affine Tuning" which is a collection of body-interactive musical pieces:
https://affinetuning.com/
It uses body tracking (Motion Capture from RealityKit) to shape dynamic compositions. The app is completely free and will be updated in the future with more songs and other interactive features.
Show HN: I made a body-interactive music app
I made this iPhone app called "Affine Tuning" which is a collection of body-interactive musical pieces:
https://affinetuning.com/
It uses body tracking (Motion Capture from RealityKit) to shape dynamic compositions. The app is completely free and will be updated in the future with more songs and other interactive features.
Show HN: I made a body-interactive music app
I made this iPhone app called "Affine Tuning" which is a collection of body-interactive musical pieces:
https://affinetuning.com/
It uses body tracking (Motion Capture from RealityKit) to shape dynamic compositions. The app is completely free and will be updated in the future with more songs and other interactive features.
Show HN: A collaborative pixel drawing game for when you're bored (Attempt #2)
Previous thread: <a href="https://news.ycombinator.com/item?id=30167391" rel="nofollow">https://news.ycombinator.com/item?id=30167391</a><p>Hello again HN!
It's been 3 months since I last submitted this project and the back-end server software melted down.<p>I was really bummed that many people didn't get to play, so I've spent most of my spare time since that last post completely rewriting the back-end server software using small, carefully selected dependencies (C99, sqlite, mongoose.ws & cJSON)
I've done some basic performance testing and I'm cautiously optimistic that it can now handle up to ~1000 concurrent users.<p>If you have any ideas for improvements, do let me know! Bots are permitted, but try and do something creative instead of just filling the canvas with junk :^)<p>You can view the source code for the new back-end here: <a href="https://github.com/vkoskiv/nmc2" rel="nofollow">https://github.com/vkoskiv/nmc2</a>
You can also check out a recent time-lapse here: <a href="https://www.youtube.com/watch?v=FUmnUvTqn6M" rel="nofollow">https://www.youtube.com/watch?v=FUmnUvTqn6M</a>
The time-lapse gets generated from the server log output using this tool: <a href="https://github.com/zouppen/pikselipeli-parser/" rel="nofollow">https://github.com/zouppen/pikselipeli-parser/</a><p>(Note to HN staff: It wouldn't let me repost this unless it had a 'slightly different url', hence the sneaky redirect there. If this is a big no-no, I apologize, otherwise feel free to swap out the URL to the redirected one :^))
Show HN: A collaborative pixel drawing game for when you're bored (Attempt #2)
Previous thread: <a href="https://news.ycombinator.com/item?id=30167391" rel="nofollow">https://news.ycombinator.com/item?id=30167391</a><p>Hello again HN!
It's been 3 months since I last submitted this project and the back-end server software melted down.<p>I was really bummed that many people didn't get to play, so I've spent most of my spare time since that last post completely rewriting the back-end server software using small, carefully selected dependencies (C99, sqlite, mongoose.ws & cJSON)
I've done some basic performance testing and I'm cautiously optimistic that it can now handle up to ~1000 concurrent users.<p>If you have any ideas for improvements, do let me know! Bots are permitted, but try and do something creative instead of just filling the canvas with junk :^)<p>You can view the source code for the new back-end here: <a href="https://github.com/vkoskiv/nmc2" rel="nofollow">https://github.com/vkoskiv/nmc2</a>
You can also check out a recent time-lapse here: <a href="https://www.youtube.com/watch?v=FUmnUvTqn6M" rel="nofollow">https://www.youtube.com/watch?v=FUmnUvTqn6M</a>
The time-lapse gets generated from the server log output using this tool: <a href="https://github.com/zouppen/pikselipeli-parser/" rel="nofollow">https://github.com/zouppen/pikselipeli-parser/</a><p>(Note to HN staff: It wouldn't let me repost this unless it had a 'slightly different url', hence the sneaky redirect there. If this is a big no-no, I apologize, otherwise feel free to swap out the URL to the redirected one :^))
Show HN: A collaborative pixel drawing game for when you're bored (Attempt #2)
Previous thread: <a href="https://news.ycombinator.com/item?id=30167391" rel="nofollow">https://news.ycombinator.com/item?id=30167391</a><p>Hello again HN!
It's been 3 months since I last submitted this project and the back-end server software melted down.<p>I was really bummed that many people didn't get to play, so I've spent most of my spare time since that last post completely rewriting the back-end server software using small, carefully selected dependencies (C99, sqlite, mongoose.ws & cJSON)
I've done some basic performance testing and I'm cautiously optimistic that it can now handle up to ~1000 concurrent users.<p>If you have any ideas for improvements, do let me know! Bots are permitted, but try and do something creative instead of just filling the canvas with junk :^)<p>You can view the source code for the new back-end here: <a href="https://github.com/vkoskiv/nmc2" rel="nofollow">https://github.com/vkoskiv/nmc2</a>
You can also check out a recent time-lapse here: <a href="https://www.youtube.com/watch?v=FUmnUvTqn6M" rel="nofollow">https://www.youtube.com/watch?v=FUmnUvTqn6M</a>
The time-lapse gets generated from the server log output using this tool: <a href="https://github.com/zouppen/pikselipeli-parser/" rel="nofollow">https://github.com/zouppen/pikselipeli-parser/</a><p>(Note to HN staff: It wouldn't let me repost this unless it had a 'slightly different url', hence the sneaky redirect there. If this is a big no-no, I apologize, otherwise feel free to swap out the URL to the redirected one :^))