HNHacker News
TopNewBestAskShowJobs

ksbrooksjr

263 karma · joined April 11, 2017

Full-stack web developer specializing in TypeScript/JavaScript. Currently working on a Chrome extension called Freezetab. My links and contact info are below.

  Website: https://ksbrooksjr.com/
  Email: hn@ksbrooksjr.com
  Freezetab: https://freezetab.com/
submissionscomments
ksbrooksjr··on Bugs in Hello World
On node 16.9 console.log doesn't produce a non-zero exit code, but process.stdout.write does, and gives me a decent error message as well:

  internal/fs/utils.js:332
      throw err;
      ^
  Error: ENOSPC: no space left on device, write
      at writeSync (fs.js:736:3)
ksbrooksjr··on Show HN: Justyourip.com
I didn't know about the /cdn-cgi/trace Cloudflare trick. Here's a one-liner to print just the ip via curl:

  curl -s cloudflare.com/cdn-cgi/trace | grep ip | cut -d "=" -f 2 --
ksbrooksjr··on Using GroupBy on an array of objects in JavaScript
Unfortunately the typescript definitions for these two methods haven't been written yet [1].

[1] https://github.com/microsoft/TypeScript/issues/47171

ksbrooksjr··on macOS Monterey's new network quality tool is surprisingly good
This is much simpler than some of the other utilities mentioned, but I love pbcopy and pbpaste. Being able to pipe from stdout straight to the clipboard, or vice versa, is really useful.
ksbrooksjr··on Deno 1.13 Release
There used to be a '--lite' option that produced smaller binaries, but it looks like they removed it recently [0]. There's also a CLI called pkg that lets you achieve something similar with Node. It actually compiles the source code into V8 bytecode and bundles that with the Node binary [1].

[0] https://github.com/denoland/deno/issues/10507

[1] https://github.com/vercel/pkg

ksbrooksjr··on An Elixir adoption success story
You actually can spin up a background thread in the browser now using web workers[0]. Although, like you mentioned, you don't actually need threads for concurrency. The event loop handles concurrency even in a single threaded environment.

[0] https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers...

ksbrooksjr··on Node.js 16 Available Now
If you want to interface with Node from Rust there's a great library called Neon[0] that wraps the C/C++ Node addon api.

[0] https://github.com/neon-bindings/neon

ksbrooksjr··on Rust const generics MVP hits beta
You can do it like this:

  type RequiredKeys<O, K extends keyof O> = Omit<O, K> & Required<Pick<O, K>>
  type Person = {
    name?: string
    age?: number
  }
  type RequiredName = RequiredKeys<Person, 'name'>
The opposite (making some of the fields optional, without affecting the rest) would be written like this:

  type OptionalKeys<O, K extends keyof O> = Omit<O, K> & Partial<Pick<O, K>>
ksbrooksjr··on Show HN: Ktab – A better way to bookmark
True, but you still have to manually hover over each tab.
ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
I'm glad you like it Vlad. :)

I saw your email, and I'll personally send you an email when an Opera version is available. Given that Opera is just a fork of Chromium, you can actually install most Chrome extensions directly from the Chrome Webstore[1], although that's just a temporary fix. I plan on fully supporting Opera in the near future.

As to the business model, I certainly considered monetization while building the product, but my initial concern was just solving my own problem and getting Freezetab into the hands of users. Given how successful the launch was (it's the #1 product on Producthunt today[2]) I'm actively exploring monetization strategies.

Given how many requests there are for cross-platform availability, I think I'll set up an email list to notify everyone when it's available for Firefox and Opera. I'll update this thread accordingly.

[1] http://www.makeuseof.com/tag/how-to-install-google-chrome-ex...

[2] https://www.producthunt.com/posts/freezetab

ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
I didn't forget about FF users, a Firefox version is on its way :).
ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
Thanks for making the switch. Duplicate detection is a planned feature, and I'll definitely work on adding it to the next iteration of Freezetab.

Cloud syncing is certainly on my radar, but slightly more difficult. If Freezetab synced the saved links with Google Bookmarks it would lose all the metadata associated with each link. Freezetab assigns each saved link a unique ID for example — bookmarks don't allot any extra storage for this sort of custom metadata. I do plan on building a server side implementation of Freezetab to handle syncing if the extension gains enough traction.

ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
Thanks for trying Freezetab and leaving a review, I appreciate it. Restoring pinned status is a great idea. I've added that feature to the product roadmap and plan on implementing it soon.
ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
That sounds like a pretty brutal workflow. Freezetab would be great for your use case, so I'm glad you like it.

I definitely plan on expanding availability to Firefox and Opera in the short-term (and eventually Edge), because porting Chrome extensions to those platforms is pretty straight forward.

Safari on the other hand is a little bit more challenging. Most browsers implement extensions as plain HTML, CSS, and Javscript — they're essentially just websites. Safari requires developers to integrate native Swift and Objective C code into extensions, which means I might have to do a partial rewrite (and learn Swift or Obj C) to target Safari.

You also have to pay a 99 dollar annual fee to maintain a presence in the Safari Extension Gallery, which is somewhat exorbitant for a free extension. If users install the Safari extension directly from my website instead of the extension gallery, then they'll miss out on auto updates.

ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
Hopefully you won't be using bookmarks much longer :)
ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
Glad you like it! If you're a OneTab user I think you'll definitely enjoy using it. Like you said there are more features, but it's also much faster. If you have 1000 saved tabs, OneTab attempts to load all 1000 of them (and their favicons) every time you open your tab list.

Freezetab uses an infinite scrolling mechanism that loads your tabs as you scroll, so it's just as responsive when you have 1500 saved tabs as it is when you have 15 saved tabs.

ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
Before creating this extension I often faced the same problem. I would rarely return to my old bookmarks, and part of the issue was that there wasn't an easy way to sift through them.

I added some features to help people keep their saved links organized, so that it would be easier to parse them at a later date. You can of course just search through your browsing history, but all of that data is lost whenever you clear your history.

Even if you do refrain from clearing your browsing data, there aren't many options for organizing your browsing history. What if you want to view every link you've ever saved from Ycombinator? What if you want to find every link you've ever saved on a certain day of the month? Also, what if you want more control over which tabs are saved? Have you ever had so many tabs open that Chrome no longer displays their titles, making it extremely difficult to find the specific tabs you want to save?

These are the sort of problem sets that I set out to solve. Hopefully there are some power users here who are able to derive some value from it.

Give it a try, it's free.

ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
Freezetab saves a tab's url, title, favicon, and the date and time the tab was saved. When you reopen a tab, the extension opens a new tab and navigates to the saved url. The extension does not actually create bookmarks, nor does it save the content of a website. All of your data is stored via chrome's local storage api.

I used the words bookmark and tab on the landing page, because they are familiar words that provide a reference point for people trying to quickly grasp what the extension does (especially non-technical people). There's always a tradeoff between precision and concision when crafting marketing materials, but I hope most people are able to understand the project's basic functionality.

ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
I'm glad you like it! I didn't even think about saving the scroll position, that's actually a really good idea. The paper you're referring to sounds a lot like Vannevar Bush's concept of the "Memex", which was a precursor to modern hyperlinks.

I do think that a huge opportunity has been missed by the major browser vendors in relation to bookmarks. That area of technology has been pretty stagnant throughout the history of the internet, which seems odd given the fact that saving links is such a basic necessity.

ksbrooksjr··on Show HN: Freezetab – What browser bookmarks should've been
Unfortunately there's nothing wrong on your end, I haven't implemented that feature just yet. I have a long list of planned feature additions, and bookmark importing/exporting is at the top of the list. Thank you for the feedback, I appreciate it!
← PreviousPage 3 of 3