The best Hacker News stories from Show from the past week
Latest posts:
Show HN: Postgres.js – Fastest Full-Featured PostgreSQL Client for Node and Deno
Show HN: Bionic Reading – Formats text to make it faster to read
Show HN: Bionic Reading – Formats text to make it faster to read
Show HN: Lunar XDR Brightness control
Show HN: We made an open-source personalization engine
Hey, HN! You probably know that the ordering of products on Amazon, posts in FB, and search results in Google is personalized for each visitor, as it directly affects conversion, click rate and engagement. But not everyone can afford to hire an army of PhDs to squeeze every penny out of the ranking, and not everyone agrees on the current (im)balance between privacy and profits.<p>So we built Metarank, an open-source and privacy-focused personalization engine. It can rerank in real-time any type of content, using only the data you allow, and optimize metrics you define.<p>We made a lot of proprietary DIY services for personalization in e-commerce in our past careers and heard so many complaints from other companies also struggling to implement personalization. It’s often considered "too risky" to spend 6+ months on an in-house moonshot project to reinvent the wheel without an experienced team and no existing open-source tools. Like other people in the industry, we were tired of building everything from the bottom up each time we approached personalization - it should be easy not only for Amazon to do such magical ML tricks, but for everyone else.<p>A small demo of the tool with personalized recommendations: <a href="https://demo.metarank.ai" rel="nofollow">https://demo.metarank.ai</a><p>A blog post on how this demo was made: <a href="https://medium.com/metarank/personalizing-recommendations-with-metarank-f2644112536b" rel="nofollow">https://medium.com/metarank/personalizing-recommendations-wi...</a><p>The project itself: <a href="https://github.com/metarank/metarank" rel="nofollow">https://github.com/metarank/metarank</a>
Show HN: We made an open-source personalization engine
Hey, HN! You probably know that the ordering of products on Amazon, posts in FB, and search results in Google is personalized for each visitor, as it directly affects conversion, click rate and engagement. But not everyone can afford to hire an army of PhDs to squeeze every penny out of the ranking, and not everyone agrees on the current (im)balance between privacy and profits.<p>So we built Metarank, an open-source and privacy-focused personalization engine. It can rerank in real-time any type of content, using only the data you allow, and optimize metrics you define.<p>We made a lot of proprietary DIY services for personalization in e-commerce in our past careers and heard so many complaints from other companies also struggling to implement personalization. It’s often considered "too risky" to spend 6+ months on an in-house moonshot project to reinvent the wheel without an experienced team and no existing open-source tools. Like other people in the industry, we were tired of building everything from the bottom up each time we approached personalization - it should be easy not only for Amazon to do such magical ML tricks, but for everyone else.<p>A small demo of the tool with personalized recommendations: <a href="https://demo.metarank.ai" rel="nofollow">https://demo.metarank.ai</a><p>A blog post on how this demo was made: <a href="https://medium.com/metarank/personalizing-recommendations-with-metarank-f2644112536b" rel="nofollow">https://medium.com/metarank/personalizing-recommendations-wi...</a><p>The project itself: <a href="https://github.com/metarank/metarank" rel="nofollow">https://github.com/metarank/metarank</a>
Show HN: BoxyHQ – open-source alternative to Auth0/WorkOS
Hi HN, we are Deepak and Sama, co-founders of BoxyHQ (<a href="https://boxyhq.com/" rel="nofollow">https://boxyhq.com/</a>). BoxyHQ provides an open-source platform for developers to quickly integrate enterprise features into their software solutions. These include SAML Single Sign-On (SSO), Audit logs, with more to come :)<p>Every B2B startup faces a common challenge when it comes to selling into the Enterprise; they need to allocate time and resources to support all the requirements to make their offering enterprise-grade. Supporting these requirements is a significant undertaking for the engineering team, especially since they already have their hands full with the core product. We experienced this problem ourselves and that is why we built BoxyHQ, a platform to integrate enterprise features in any SaaS app with just a few lines of code.<p>The main difference with Auth0 and WorkOS is that BoxyHQ is being built on an open source ethos. Our focus is to be a developer-first security platform, putting developers at the centre of our holistic approach and help them close the gap between compliance and security.<p>Please let me know if you have any questions, you can also reach out to me at deepak@boxyhq.com
Show HN: Appwrite – Open-Source and Self Hosted Firebase Alternative
Show HN: Typebeat: Keyboard-controlled music sequencer, sampler, and synth
Show HN: A game that tests how well you know your local area
Show HN: A game that tests how well you know your local area
Show HN: Calenday, real-time collaborative calendars for trip planning
Show HN: I'm writing an MMORPG game for learning programming
Hi, I've been developing an HTML5 MMORPG game where people can submit code to play a game, like collect items, destroy defense towers or kill monsters, etc.. I've been working on this for over 1.5 yrs (all my spare time) and now it's ready for preview, does anyone want to try it out? It's mostly opensource (and the rest will be opensource sooner or later)<p>Please access it with PC, it's an HTML5 game: <a href="https://bytelegend.com/" rel="nofollow">https://bytelegend.com/</a><p>I really want it to expand to more languages, but right now I've only finished Java part. I wonder if anyone can help me with other languages. Besides, I'm not a good game story designer, but I really really want it to be a game with a fantastic story. Any help will be appreciated.
Show HN: Oh-heck, a terminal command for when you forget other terminal commands
Show HN: PDF API – Generate, convert, and modify PDF documents
Hi HN,<p>Arek here. We’re super excited to officially launch PSPDFKit API [1].<p>PSPDFKit API is a collection of HTTP APIs that enable you to convert, generate, and edit documents without running any service on your infrastructure.<p>What differentiates our API from others is that you can chain together multiple “actions” as part of a single API request. For example, you can convert, OCR, watermark, edit, and flatten a document — all in one call.<p>Available actions [2]:<p>- PDF Generator<p>- PDF Converter<p>- Image Converter<p>- OCR<p>- Watermark<p>- Merge<p>- Split<p>- Duplicate<p>- Delete<p>- Flatten<p>Our documentation includes sample code for JavaScript [3], Python [4], Java [5], C# [6], PHP [7], and the command line. We also have a Postman collection [8].<p>Let us know what you think or if you have any questions.<p>[1] <a href="https://pspdfkit.com/api/" rel="nofollow">https://pspdfkit.com/api/</a><p>[2] <a href="https://pspdfkit.com/api/documentation/tools-and-api/" rel="nofollow">https://pspdfkit.com/api/documentation/tools-and-api/</a><p>[3] <a href="https://pspdfkit.com/api/tools/javascript/" rel="nofollow">https://pspdfkit.com/api/tools/javascript/</a><p>[4] <a href="https://pspdfkit.com/api/tools/python/" rel="nofollow">https://pspdfkit.com/api/tools/python/</a><p>[5] <a href="https://pspdfkit.com/api/tools/java/" rel="nofollow">https://pspdfkit.com/api/tools/java/</a><p>[6] <a href="https://pspdfkit.com/api/tools/csharp/" rel="nofollow">https://pspdfkit.com/api/tools/csharp/</a><p>[7] <a href="https://pspdfkit.com/api/tools/php/" rel="nofollow">https://pspdfkit.com/api/tools/php/</a><p>[8] <a href="https://pspdfkit.com/api/documentation/getting-started/postman-collection/" rel="nofollow">https://pspdfkit.com/api/documentation/getting-started/postm...</a>
Vim Reference Guide
Hello!<p>"Vim Reference Guide" is intended as a concise learning resource for beginner to intermediate level Vim users. I hope this guide would make it much easier for you to discover Vim features and learning resources than my own blundering experience.<p>To celebrate the release, ebook version is free to download till 31-Mar-2022:<p>* <a href="https://learnbyexample.gumroad.com/l/vim_reference_guide" rel="nofollow">https://learnbyexample.gumroad.com/l/vim_reference_guide</a><p>* <a href="https://leanpub.com/vim_reference_guide" rel="nofollow">https://leanpub.com/vim_reference_guide</a><p>Some of my other ebooks and bundles are on sale and I'm currently creating short 1-3 minute videos to highlight Vim features. You can find these details in the above links.<p>Visit <a href="https://github.com/learnbyexample/vim_reference" rel="nofollow">https://github.com/learnbyexample/vim_reference</a> for markdown source and other details related to the book.<p>Hope you find these resources useful. Let me know your feedback.<p>Happy learning :)
PartialExecuter: Reducing WebAssembly size by exploring all executions in LLVM
WebAssembly is commonly used as part of web applications, and minimizing its size is especially important.<p>As part of the latest release of Cheerp, our C++ to WebAssembly/JavaScript compiler, we have introduced a powerful new LLVM optimization that aggressively reduce WebAssembly output size at compile time.<p>We have named this optimization 'PartialExecuter', the key idea behind it being taking advantage of known function parameters to find inner code blocks that cannot ever be possibly executed.<p>Such blocks can then be completely removed from the compiled output, significantly reducing its size.<p>What makes this pass more powerful than typical Dead Code Elimination is the ability of reasoning over all the possible executions that the code can take, while being robust to memory stores and side-effects. Moreover, PartialExecuter can even reason over loads as far as they refer to read-only memory. This latter capability is especially useful to drop code from complex functions whose behavior depend on input strings (i.e. printf).<p>We think this work may be of interest for the HN community, and we welcome feedback and questions.<p>In-depth blog post: <a href="https://leaningtech.com/reducing-webassembly-size-by-exploring-all-executions-in-llvm/" rel="nofollow">https://leaningtech.com/reducing-webassembly-size-by-explori...</a>
Show HN: I made Devzat – It's like Discord but in the terminal, over SSH
Run `ssh devzat.hackclub.com` to try it out! The repo is here: https://github.com/quackduck/devzat (golang).
It has markdown and emoji support, DMs, channels, and it can show images too. You can send code, and it gets syntax highlighted (you can change the theme). You can ping people like so: @user and it sends them a \a, which should play an audible sound if the terminal allows it. There's inbuilt games and rainbow names and a lot of other small things I don't remember right now.<p>You might find the auth system interesting: it's based on a hash of ssh pubkey (bans use that and a hash of IP, so it isn't so easy to get around a ban)<p>Also an interesting issue: bots that go around trying to brute force ssh into random IPs with common usernames. My current solution is banning if rapid successive joins are detected.
Show HN: HN Avatars in 357 bytes
Paste the following into the console of any HN page - for annotated avatars on all HN comments. (self contained code)<p><pre><code> for(u of document.querySelectorAll('.hnuser'))for(u.prepend(c=document.createElement('canvas')),x=c.getContext('2d'),c.width=18,c.height=14,s=u.innerText,r=1,i=28+s.length;i--;i<28?r>>>29>X*X/3+Y/2&&x.fillRect(6+2*X,2*Y,2,2)&x.fillRect(6-2*X,2*Y,2,2):r+=s.charCodeAt(i-28,x.fillStyle='#'+(r>>8&0xFFFFFF).toString(16)))r^=r<<13,r^=r>>>17,r^=r<<5,X=i&3,Y=i>>2</code></pre>
Show HN: HN Avatars in 357 bytes
Paste the following into the console of any HN page - for annotated avatars on all HN comments. (self contained code)<p><pre><code> for(u of document.querySelectorAll('.hnuser'))for(u.prepend(c=document.createElement('canvas')),x=c.getContext('2d'),c.width=18,c.height=14,s=u.innerText,r=1,i=28+s.length;i--;i<28?r>>>29>X*X/3+Y/2&&x.fillRect(6+2*X,2*Y,2,2)&x.fillRect(6-2*X,2*Y,2,2):r+=s.charCodeAt(i-28,x.fillStyle='#'+(r>>8&0xFFFFFF).toString(16)))r^=r<<13,r^=r>>>17,r^=r<<5,X=i&3,Y=i>>2</code></pre>