Saturday, November 30, 2024
Show HN: SurveyMoji – An easy way to get realtime feedback with a link/QR code https://ift.tt/20AbRBM
Show HN: SurveyMoji – An easy way to get realtime feedback with a link/QR code Hi HN - I've been working on this site on and off for awhile. It started out as a personal tool and fun thing to hack on in my spare time. I recently added some UI improvements and a landing page and thought maybe it would be nice for other people to use as well. The idea was to create the fastest/easiest way to share a link to collect realtime feedback from a person's phone during a presentation or video call. Would love to hear any feedback, especially on UI design as it is the first time I've tried to create something that has a modern SaaS look to it. Built with go/htmx/alpinejs https://surveymoji.com November 30, 2024 at 09:47AM
Show HN: Jinbase – Multi-model transactional embedded database https://ift.tt/1CNZ8G3
Show HN: Jinbase – Multi-model transactional embedded database Hi HN ! Alex here. I'm excited to show you Jinbase ( https://ift.tt/7AZGMkO ), my multi-model transactional embedded database. Almost a year ago, I introduced Paradict [1], my take on multi-format streaming serialization. Given its readability, the Paradict text format appears de facto as an interesting data format for config files. But using Paradict to manage config files would end up cluttering its programming interface and making it confusing for users who still have choices of alternative libraries (TOML, INI File, etc.) dedicated to config files. So I used Paradict as a dependency for KvF (Key-value file format) [2], a new project of mine that focuses on config files with sections. With its compact binary format, I thought Paradict would be an efficient dependency for a new project that would rely on I/O functions (such as Open, Read, Write, Seek, Tell and Close) to implement a minimalistic yet reliable persistence solution. But that was before I learned that "files are hard" [3]. SQLite with its transactions, BLOB data type and incremental I/O for BLOBs seemed like the right giant to stand on for my new project. Jinbase started small as a key-value store and ended up as a multi-model embedded database that pushes the boundaries of what we usually do with SQLite. The first transition to the second data model (the depot) happened when I realized that the key-value store was not well suited for cases where a unique identifier is supposed to be automatically generated for each new record, saving the user the burden of providing an identifier that could accidentally be subject to a collision and thus overwrite an existing record. After that, I implemented a search capability that accepts UID ranges for the depot store, timespans (records are automatically timestamped) for both the depot and key-value stores and GLOB patterns and number ranges for string and integer keys in the key-value store. The queue and stack data models emerged as solutions for use cases where records must be consumed in a specific order. A typical record would be retrieved and deleted from the database in a single transaction unit. Since SQLite is used as the storage engine, Jinbase supports the relational model de facto. For convenience, all tables related to Jinbase internals are prefixed with "jinbase_", making Jinbase a useful tool for opening legacy SQLite files to add new data models that will safely coexist with the ad hoc relational model. All four main data models (key-value, depot, queue, stack) support Paradict-compatible data types, such as dictionaries, strings, binary data, integers, datetimes, etc. Under the hood, when the user initiates a write operation, Jinbase serializes (except for binary data), chunks, and stores the data iteratively. A record can be accessed not only in bulk, but also with two levels of partial access granularity: the byte-level and the field-level. While SQLite's incremental I/O for BLOBs is designed to target an individual BLOB column in a row, Jinbase extends this so that for each record, incremental reads cover all chunks as if they were a single unified BLOB. For dictionary records only, Jinbase automatically creates and maintains a lightweight index consisting of pointers to root fields, which then allows extracting from an arbitrary record the contents of a field automatically deserialized before being returned. The most obvious use cases for Jinbase are storing user preferences, persisting session data before exit, order-based processing of data streams, exposing data for other processes, upgrading legacy SQLite files with new data models and bespoke data persistence solutions. Jinbase is written in Python, is available on PyPI and you can play with the examples on the README. Let me know what you think about this project. [1] https://ift.tt/gFyOCuV [2] https://ift.tt/BXJk8tH [3] https://ift.tt/k7oeq09 https://ift.tt/7AZGMkO November 30, 2024 at 12:25AM
Show HN: wazero compiler ported to 4 new OSes https://ift.tt/VEFsKSu
Show HN: wazero compiler ported to 4 new OSes Release 1.8.2 of wazero, the zero dependency WebAssembly runtime for Go, brings the amd64 compiler to 4 new OSes: NetBSD, DragonFly BSD, illumos and Solaris. The compiler also supports Linux, FreeBSD, macOS and Windows, on amd64 and arm64. This didn't require any changes to the compiler, just enabling it after setting up tests to validate that it already worked. Now the HN hook: noticeably absent is OpenBSD, which I failed to get working, even after taking W^X into account (we already had that for arm64 on macOS). If you wanna help, please drop us a note! https://ift.tt/wEGSO62 November 30, 2024 at 10:48PM
Friday, November 29, 2024
Show HN: Gogo installs your shell tools https://ift.tt/1NWUeSk
Show HN: Gogo installs your shell tools Trying to be as friction-less as possible, allowing you go quickly gather your favorite command-line tools in a new environment. And keep them updated too. This is an open-source, personal project, hope someone else finds it useful. https://ift.tt/CLkN921 November 30, 2024 at 03:40AM
Show HN: It took me 5() months to build a Plausible alternative https://ift.tt/AUifEpX
Show HN: It took me 5() months to build a Plausible alternative After months of using Google Analytics I realized only about 50% of people accepted my cookie-popup. I had months of incorrect data for my website. I started looking for alternatives and eventually found Plausible, which is great (and open-source). Problem is, I didn't feel like paying 9$ a month to see the amount of visitors on a website i didn't even earn anything on, it was just a hobby project. Eventually I started making my own web analytics. Which actually isn't that hard. It took me about a month of working on my spare time every now and then. Being GDPR compliant basically means to not save any personal identifiers. At first I thought it would be easy since something like a public IP adress can't count as a personal identifier right? I was very wrong. How it works: When a user visited my website I saved the IP and Header for 24 hours. Then if they visited again I checked the combination of IP and Header against the ones saved in my DB. If they were the same I simply added 1 view to my data. If they weren't the same I added 1 unique daily user and 1 view. That's in short how it works. A few weeks later I realized if I had this problem then other would also have it. So I started working on Simplytics.dev. I had to do a lot of new stuff and re-build my code from the ground-up twice. Small things like OAuth was completely new to me and took up a lot of time. But eventually I got here and just launched something that with the knowledge I have today wouldn't even take a third of the time recreating today. It's my first real "Launch" and it feels really good finally creating something AND publishing it. Instead of a montly fee I opted to make it a pay-once service. Right now it's priced at 49$ but I'll see how it works out. If you got any questions on how it works Id love to answer them. November 25, 2024 at 07:35PM
Show HN: Built This in 3 Hours Using Bolt (No React Knowledge) https://ift.tt/XekfU3l
Show HN: Built This in 3 Hours Using Bolt (No React Knowledge) It's blowing my mind that I could build an app from scratch in 3 hours and deploy it with the click of a button - without writing a single line of code myself CacheNotes is a browser-based note-taking app that saves your notes, threads, and AI conversations securely in your browser's local storage 100% free. No login required. You get, - simple, minimal note taking app in your browser - no login required - you can connect your claude api key for the ai integration - visualise notes and twitter threads Check it out! Would love some feedback :) https://ift.tt/eJgaDuT November 29, 2024 at 11:09PM
Show HN: I built an extension to contact Airbnb hosts direcly https://ift.tt/dt1hOsy
Show HN: I built an extension to contact Airbnb hosts direcly Hey HN, Over the years, I’ve found myself frustrated with the extra fees Airbnb. While they provide a lot of convenience, the service fees often stack up to a point where they overshadow any potential savings. I started wondering if there was a way to connect directly with property hosts and skip the middleman entirely. That curiosity led me to build getaway.direct, a free Chrome extension that helps travelers save money. It works like this: 1. You browse listings on Airbnb. 2. The extension scans for direct booking links, host websites, or social media profiles where you can reach out to the host directly. 3. It shows those results instantly, so you can compare prices, avoid service fees, and book smarter. The main idea is to provide transparency. A lot of hosts already have their own websites but rely on platforms like Airbnb for visibility. This tool helps surface those direct options, which can often save you 10-20% per booking. I’d love to hear your thoughts: Would something like this be helpful to you? Also, I’m curious to get feedback on ways to improve the tool—whether it’s adding more integrations, improving usability, or something else entirely. Thanks for reading! Let me know what you think. https://ift.tt/3hywj2M November 29, 2024 at 03:18PM
Subscribe to:
Posts (Atom)