Readit News logoReadit News
Posted by u/graderjs 5 years ago
Ask HN: What are some tools / libraries you built yourself?
Many times you just want to plug something in. PostgreSQL, Node.JS Express, Java Spring, numpy, Three.js. There's many examples where the already existing solution fits well.

Sometimes that's not good enough tho. What are some tools, libraries or services you built, are they open-source and why weren't you satisfied using what already existed?

dceddia · 5 years ago
Last year I built Recut[0], a native Mac app that helps speed up video editing by automating the rough-cut process. It finds silence, gaps, and pauses and removes them, creating a cut list that you can import into editors like ScreenFlow, Final Cut, Premiere and Resolve. Here’s the Show HN [1] from a couple months ago.

I built it because I was making screencasts and cutting out silence + mistakes was 90% of my editing time. This makes it a ton faster. There were some command-line scripts to do a similar thing but I wanted something visual with a fast feedback loop, where I could quickly preview how it would sound and tweak the parameters in real time.

I didn’t know anything about video and had never built anything with Swift before so it’s been a fun way to learn a bunch of new stuff.

0: https://getrecut.com

1: https://news.ycombinator.com/item?id=26317265

exikyut · 5 years ago
I genuinely wonder what Taran Van Hemert (LTT video editor) would think of this.

It seems a reasonable part of his workflow (https://www.youtube.com/watch?v=O6ERELse_QY) is doing this exact thing.

dceddia · 5 years ago
Good thought! LTT was a big help when I was building a PC for the first time in years. Might see if he has any interest in trying it out.
thestephen · 5 years ago
This solves a huge problem for me, and is easily worth three times the amount I paid for it. Thank you!
dceddia · 5 years ago
Awesome, thanks! Let me know if you have any feedback/feature ideas.
ronyeh · 5 years ago
Genius. You need to find a way to market to the right audience and up your price to $79 or something. The current price seems too low for all the time it saves (if I'm a serious vlogger).

I'll definitely check it out (and maybe purchase it before your price increase, haha).

dceddia · 5 years ago
Hah, I’ve been thinking about exactly both of those things! $79 is the ballpark I was gonna aim for too.

I’m thinking the YouTuber audience might be a good place to start. People seem to “get it” right away, but nobody knows about it yet.

hivacruz · 5 years ago
I'm not a vlogger or anything but this is a great product. Nice job!
dceddia · 5 years ago
Thanks!
mavsman · 5 years ago
Starting to get more serious about video editing for my YouTube channel and I'll definitely be giving this a try, most likely purchasing it!
dceddia · 5 years ago
Great! I'd love to hear what you think, whether it fits your workflow or if there are missing pieces that you'd need. Contact info is in my profile if you're open to a chat!
apuchitnis · 5 years ago
This is awesome - love the landing page too. Great job!
dceddia · 5 years ago
Thanks!
vdraman259 · 5 years ago
Thats damm good.
feross · 5 years ago
In 2013, I started https://webtorrent.io the first torrent client that runs in a web browser. It’s open source here: https://github.com/webtorrent

I built it to make torrent technology more accessible to the masses. We’re still actively building it and we even have a slick desktop app that uses the same engine for streaming.

WebTorrent also powers https://wormhole.app an end-to-end encrypted file sending service that I built with my friend jhiesey.

tediousdemise · 5 years ago
Wormhole looks awesome!

I was looking for something just like this a few days ago since Firefox Send was shitcanned by Mozilla. I ended up using send-anywhere, but Wormhole looks so much better. I wish it showed up in my Google results when I needed it.

Is Wormhole p2p? If so, why the 10 GB limit? If it’s not p2p, why are you storing user data on servers (even if it’s E2E encrypted)?

indigo945 · 5 years ago
According to the explanation on the website, it appears that the 10GB limit only applies if you make the optional choice to also store a copy of the file on Wormhole's servers, to keep the file available after you close your browser.

Deleted Comment

smashah · 5 years ago
I'm looking forward to a npm ads follow up. I feel like opinions have changed around money and open source.
qorrect · 5 years ago
Say what now?
nneonneo · 5 years ago
I got WebTorrent running on iOS via play.js (Node, rather than Safari, so it supports native sockets etc.). Might be the first non-jailbroken torrent client for iOS :) Very nice project, and works extremely well!
easrng · 5 years ago
iTorrent[1] works non-jailbroken, however you need to sideload it with something like AltStore [2].

[1]: https://github.com/XITRIX/iTorrent

[2]: https://altstore.io

coconut_man · 5 years ago
kudos to you, I love Webtorrent. Thanks for making such great app!
vdraman259 · 5 years ago
Wormhole is Killer. Love it.
wenbin · 5 years ago
Early 2017, I built Listen Notes [1] , so I can search podcast episodes by keywords and listen to individual podcast episodes without subscribing to the entire podcast. A few years ago, most podcast apps assume you wanted to subscribe to podcasts first then listen. Maybe I’m not a typical podcast listener. I don’t like subscribing to podcasts. I just want to listen to individual episodes then move on. Similar to consuming web contents, I don’t bookmark entire websites. I just search on google, read the web page, then move on :)

[1] https://www.listennotes.com

[edit] This is my Show HN of Listen Notes in early 2017: https://news.ycombinator.com/item?id=13310834

mr_o47 · 5 years ago
I love listen notes, It has made it easier to search for specific podcast which I had to discover myself. now I just use Listen Notes to search with few keywords and I’m able to find the podcast for my taste.

Anyways love your product and I definitely enjoyed reading your article on medium where you talked about how you ran the entire company as a solo dev and that’s how I discovered ListenNotes back then

zigzaggy · 5 years ago
Whoa! I'm glad I found this. I think it'll fit into my writing workflow. Thanks!
wenbin · 5 years ago
Most searches are about people's names, e.g., book author's name, a celebrity's name, a CEO's name...

And you can curate playlists of episodes by topic / people, e.g.,

- Scott Galloway https://lnns.co/0LWEK3dhSfy

- Female VCs: https://lnns.co/depiDjM1XvQ

- More playlists: https://www.listennotes.com/podcast-playlists/

zachwill · 5 years ago
I'm a huge fan of Listen Notes!
wenbin · 5 years ago
Thank you :)
srhrshr · 5 years ago
I'm curious to know if you thought about building the capability of searching through the audio itself - did you run into transcription costs being a limitation?
theSealedTanker · 5 years ago
I applied for listen notes API request but didn't get a reply back. I hope you get this sorted out. Time is valuable
Moosdijk · 5 years ago
The captcha experience was awful but the search was perfect.
recursivedoubts · 5 years ago
I created intercooler.js in 2013 so I could do AJAX in HTML:

https://intercoolerjs.org

Last year I removed the jquery dependency and cleaned it up based on a lot of lessons that I learned, renaming it to hmtx:

https://htmx.org

Same idea: extends/complete HTML as a hypertext so you can build more advanced UI within the original hypermedia web model, with a cleaner implementation.

Part of that cleanup involved me pulling out some functionality around events and a proto-scripting language (ic-action), and I enjoy programming languages, so I created a front end scripting language to fill that need:

https://hyperscript.org

It's based on HyperTalk and has a lot of domain specific features for lightweight front end scripting, kind of a jQuery or AlpineJS alternative.

tiger3 · 5 years ago
Thank you for intercooler and htmx! It’s a godsend for someone like me that doesn’t want to get too deep in the weeds with frontend dev but still get some dynamic UI actions and lazy loading/click loading done.
mvolfik · 5 years ago
looks like you invented HTML-over-the-wire before it was cool :)
recursivedoubts · 5 years ago
in fairness I created intercooler based on pjax and turbolinks, because I wanted to do everything in HTML without magic

and jquery has had load for a long time too: https://api.jquery.com/load/

so I can't claim to be the inventor of the approach

just the perfecter :)

cperciva · 5 years ago
Open source spinoffs from Tarsnap: https://www.tarsnap.com/open-source.html

scrypt: Because the world didn't have any strong password-based key derivation functions.

spiped: Because using stunnel or ssh tunnelling to connect to servers is gross.

kivaloo: Because I wanted a high performance KV store optimized for small values (e.g. 40 bytes) rather than larger "items" (each containing multiple key-value pairs) or "blobs" (e.g. cached chunks of HTML).

papaf · 5 years ago
Did you also write bsdiff [1] or is that someone with a similar name?

[1] http://www.daemonology.net/bsdiff/

cperciva · 5 years ago
Yes, that was also me. A very long time ago -- I wrote it in 2003 when I was at university and I've barely touched it in the past 15 years.
justin_oaks · 5 years ago
Can you elaborate on what makes stunnel or ssh tunneling "gross"? Is it the network overhead they add or is it the complexity of the protocol, or is it something else?
cperciva · 5 years ago
Protocol complexity, number of vulnerabilities in the codebase, and for ssh there's reliability as well. (SSH tunnels multiplex connections over a single TCP connection, whereas TLS and spiped map one TCP connection to one TCP connection.)
H8crilA · 5 years ago
Not the author but the reliability of a simple SSH tunnel is horrible. I still use it occasionally because it's "always there".
wcarss · 5 years ago
I made a crappy little web tool[1] that lets me paste a timestamp into it, and will show me that time in my current timezone by default (I think that's just hardcoded haha), or in another one that I select. I mostly use it when reasoning about logs -- for some reason my mind has never gotten used to mapping UTC time to my time.

It also has a selector for the source timezone, but that doesn't work, for reasons I've forgotten. I think that part was intended to allow me to see times without tz data included, reinterpreted as being from other tzs, but I never ended up using it enough to fix.

I made this because I often read some logs, thought "hmm when was this again?", then typed "UTC to EDT" into a new tab, and then ended up on some ad-loaded page that with dropdowns to select things like the year. I don't want dropdowns! I've already got a timestamp. I made this over a year ago and I use it 2-3x/week.

1 - https://wcarss.ca/tz

nicoburns · 5 years ago
Yeah, nice benefit of living in the UK is local time is at most one hour out from UTC. Downside is it's easy to code timezone bugs in winter and not notic until summer!
graderjs · 5 years ago
Cool simple tool! :)

I think the reason the source zone might not work (and I'm not an expert, and date times in code are hard), is that all "timestamps" are in Zulu / GMT0 time, so it won't make sense if you try to source a Zulu time from like Hawaii time or whatever.

wcarss · 5 years ago
That was a good guess! Your comment provided some helpful motivation to go look into it. :)

It seems to have actually been a typo-misuse of moment.tz's very similar but very different constructor patterns. To illustrate, imagine we have a date "2020-01-01", an offset tz "America/Vancouver", and "America/Toronto" as the locale's timezone.

moment(date).tz(offset) says "interpret date in its given tz, falling back to the locale tz if not given, then reinterpret it via the offset tz". So the date "2020-01-01" with no encoded tz data is interpreted as midnight in the locale's tz, America/Toronto. That is then reinterpreted in the offset timezone America/Vancouver, so calling .format() on it gives the result "2019-12-31T21:00:00-08:00" -- midnight on New Year's Eve in Toronto was 9 PM on Dec 31st in Vancouver. Offset here is changing the output, not the input.

moment.tz(date, offset) says "interpret date in its given tz, falling back to offset as the tz if not given". So the date "2021-01-01" with no tz data is interpreted as midnight in the offset tz, "America/Vancouver". Now calling .format() gives "2020-01-01T00:00:00-08:00", or midnight in Vancouver, which would be 3 AM in Toronto.

Glad to have it fixed.

sarimabbas · 5 years ago
i made something similar that lets you map times between arbitrary timezones: http://getwaqt.netlify.app/. thanks for sharing!
aeroheim · 5 years ago
I wrote a library for animating image backgrounds on the web using After Effects style filters and transitions:

https://aeroheim.github.io/midori/

It's basically a post-processing pipeline implemented with Three.js and WebGL using a few shaders that I wrote.

I created it primarily because I needed it for one of my current projects, so the use case is fairly niche and mostly only relevant for stuff like creative coding. It was my first dive into computer graphics however, and I learned a TON about computer graphics in general and had a lot of fun writing the library.

maddyboo · 5 years ago
This is really cool! I’ve never seen a slideshow look that nice
aeroheim · 5 years ago
Thank you!
zachwill · 5 years ago
Wow, awesome work on this!
aeroheim · 5 years ago
Thank you - much appreciated!
graderjs · 5 years ago
This is shockingly good! I want to use this. Amazing work.
h3rald · 5 years ago
Here's most of the stuff that I built myself (and that I still use on a regular basis):

- fae [https://h3rald.com/fae] · a minuscule find and edit utility

- h3 [https://h3.js.org] · an extremely simple javascript microframework

- hastyscribe [https://h3rald.com/hastyscribe] · a professional markdown compiler

- hastysite [https://hastysite.h3rald.com] · a high-performance static site generator

- herald [https://h3rald.com/herald-vim-color-scheme] · a well-balanced vim color scheme

- litestore [https://h3rald.com/litestore] · a minimalist nosql document store

- min [https://min-lang.org] · a small but practical concatenative programming language

- mn [https://h3rald.com/mn] · a truly minimal concatenative programming language

- nifty [https://h3rald.com/nifty] · a tiny (pseudo) package manager and script runner

- nimhttpd [https://h3rald.com/nimhttpd] · a static file web server

NetOpWibby · 5 years ago
Well damn!