Show HN: Find the sickest motorcycle rides in your area with Peg Scraper Dear HN, This is a little weekend project I put together for a good friend of mine who loves to ride. It shows you the best, twistiest roads in your area and then randomly selects a few of them until you see a "loop" that you like—then it shoots you straight to Google Maps with the route pre-loaded. Thought I would drop it here because why not. https://ift.tt/fuEkhaD May 31, 2023 at 06:32PM
Show HN: Hnpes – Hacker News Previous Entry Search Hello HN, since i became a user of hackernews ( like ten or eleven years ago ) i used a bookmarklet to see if the URL i am browsing has already been submitted. Due to some CSP and CORS nonsense a lot of sites have been breaking this script, looking for solutions i found that the only way to bypass that is using a chrome extension ( A Browser extension, but i am a chrome user ), so that's what i did! I would love some feedback and feature suggestions, thank you! https://ift.tt/czQ6WNK May 31, 2023 at 05:41PM
Show HN: Jitar, a runtime that automates all end-to-end communication for TS Do you know where you will end at the start of a new application? Me neither. Change is the only constant, and it haunts me for decades. I think that applications should be able to change without making extensive modifications and regression testing. That is my goal. In the ideal world, a simple monolithic application can grow and transition into microservices without any refactoring. Defining what runs where should be a matter of configuration, and be changed any time. And this is exactly what Jitar brings to the table. https://ift.tt/0s3o19c May 31, 2023 at 05:25PM
Show HN: iOS iCal Helper Hello HN! Long time lurker and Apple user here. I made this simple tool to load .ics files client-side and open it in-browser so Apple's iCal integration enables adding it to their calendar. To say the app is barebones is an understatement: I made it in 2 minutes. Visual enhancements might come. Source: https://ift.tt/OySaQX3 Useful context: https://ift.tt/AGJPMRI https://ift.tt/7wIzHe9 May 30, 2023 at 01:14PM
Show HN: Plus AI Market Research Hi Team! Please add my app to your directory. Here's more info: App name: Plus AI Market Research Description: Give Plus AI a topic, and it will create a market or strategy report. Plus AI uses the latest AI technologies to create an easy-to-digest presentation. After creating the report, we send you the link to a slide deck, so you can customize it and share with your coworkers Link: https://ift.tt/M2kJvXH My best, Daniel Li https://ift.tt/M2kJvXH May 30, 2023 at 02:22AM
Show HN: Tiny – A 2D Game Engine in Kotlin Working with Lua I created a small 2D game engine named Tiny. The engine was created using Kotlin Multiplatform and can run on a JVM and JS. Funny things: Games can be created using the programming language Lua. Tiny is designed to help you create and test your ideas quickly and effectively. Not only can you run your games on your desktop computer, but you can also export them for the web, making it easy to share your creations with others. You can create games easily with the hot reload, small API and Lua, which is very easy to learn. If you want to test a game idea, to try to create your first game or just have fun, give it a try to Tiny. https://ift.tt/j0u3bGd May 30, 2023 at 12:49AM
Show HN: Candydate – TikTok Meets Tinder but for Recruitment HB here, sharing my first post ; ) I run a tech lab in the UK, and after several costly, poor hires over the years, we decided to build our own hiring tool with a focus on personality over skills. Here's the thing: resumes suck at showcasing personality! We've been using video and AI successfully and for quite some time to solve this problem. Now, we thought, why not spread the love? Especially if we can make it FREE for small businesses like ours? https://candydate.app , has the following goals: 1. Highlight true personalities using short videos, instead of relying on CVs or forms. 2. Employ AI to help rank applicants for each role, based on human factors and company culture. 3. Transform the selection process into something akin to scrolling through TikTok or using Tinder. Job seekers won't need to fill out forms, attach resumes, create an account or download anything. They just scan a QR code, record a short video, and they're done. It's truly simple! The aim was never to build an ATS (too complex for our needs) or a job listing site (there are many already). Instead, something simpler, to use wherever we already advertise vacancies, be it online or in print. We believe small businesses that lack recruitment tools (like we did) might appreciate it, although Candydate can certainly help businesses of all sizes. I have no idea how to launch or promote this type of tool, so any feedback or tips on spreading the word or improving the app would be immensely appreciated. Many thanks, HN! https://candydate.app May 29, 2023 at 08:04PM
Show HN: Cloud Agnostic AI Platform Hi HN, I'm currently working on an AI platform for training and deployment. I'm working on early access with the early users. It would be great if people with AI/ML experience who are interested in a way to reduce their costs and increase their performance check it out! Thanks! https://inferent.io/ May 29, 2023 at 06:34AM
Show HN: fastgron: A JSON to GRON Converter That's 40 Times Faster Than Gron Hello HN! I want to introduce fastgron, my new project. fastgron is a JSON to GRON converter, built to be incredibly fast – it's 40 times faster than Gron. GRON is a tool for making JSON greppable, but it can slow down with larger files. With fastgron, even a 200MB JSON file can be converted in just 1 second. Key features include streaming conversion for memory efficiency and an optimized path reconstruction for faster operations. It leverages C++ and the simdjson and fast_io libraries for speed. I welcome all feedback, suggestions, or questions. Thank you! https://ift.tt/oOkcenR May 28, 2023 at 05:36PM
Show HN: HNRelevant – Show related HN submissions in an integrated sidebar While browsing Hacker News, I wished for an easier way to find related submissions (instead of googling and going back and forth). So I made this small chrome extension that automatically shows relevant submissions on page load. It's intergrated as a sidebar right in the page (for ease & native look), with customization options for fine control. It's based on HN algolia search API[1] and uses the submission title as its initial query with the ability to customize the query if you're not satisfied with the initial results. Originally, I took it as an opportunity to try my hands at creating a browser extension, but I was quite satisfied with the result and so I decided to release it. [1] HN algolia search API: https://ift.tt/F9nzD0e https://ift.tt/8yhPmbr May 28, 2023 at 03:23PM
Show HN: No more copy-pasting – a ChatGPT plugin to read code from your computer Introducing the Code ChatGPT Plugin - a new era of seamless interaction between ChatGPT and your codebase. This TypeScript Code Analyzer furnishes a suite of utilities to analyze TypeScript code, enabling ChatGPT to "talk" with YOUR code. Fetch a list of all the files in your project, list of every function in a TypeScript or JavaScript file, or even get the content of a specific function, all while staying in your conversation with ChatGPT. With accessible API endpoints, you can effortlessly navigate your codebase and ask ChatGPT anything you can think of about it. Say goodbye to the days of incessant copy-pasting and welcome a more streamlined code discussion experience . I'd love to hear your thoughts, experiences, and suggestions for improvement. Let's discuss and evolve this tool together! https://ift.tt/kTUyZA3 May 28, 2023 at 05:03AM
Show HN: Open Fire Serverless CI Hello, HN community, I'm really excited to show you Open Fire a serverless CI, how does it work? relying on serverless technologies (firecracker) we can spin up a new VM in less than 200 ms running in a more powerful and newest CPU on the market, just change 1 line of code on your GitHub Actions Workflow and you're up and running! You can see our use case, where we implemented Open Fire in the NextJS repo taking down build time from 1 hour 17 minutes to 26 minutes which is a 66 % of improvement without any engineering effort! [1] The value of a CI/CD Pipeline is inversely proportional to how long the pipeline takes to run and is a limiting factor for companies to release quickly and often. For a little bit of background, I have been working in the CI/CD space for the last 9 years in small startups, my own CI/CD startup for mobile games, and big enterprises like PayPal and Binance, and you see the same pattern emerges In today's life developers are pretty good when they're building new features on their local machines, they have top-edge hardware like MacBooks with tons of core and RAM, but when they push and need to run all CI/CD steps building (multi-arch x86, x86_64, ARM), unit testing, e2e they start to feel very frustrated with the state of the art of their CI/CD pipeline because those will be running on some cloud provider crappy VM that has between 2vCPU 4 GiB to 4 vCPU 8 GiB of RAM, is in that place when they see that their local workflow from 2 minutes build time will become something in the range of 30 minutes to 1 hour! And if you want to migrate to self-hosted CI you will get: High cost of idle infrastructure waiting to pick up jobs to run. Big queues for accessing the resource to run your pipelines, because everyone is working at the same time frame the high demand overlaps and you can't scale your self-hosted solution that fast without building a team of ~ 20 people. Spent all day installing and updating all the dependencies of the VM and now have to maintain the software packages installed on that machine Companies tend to have 3 different kinds of CI/CD platforms inside them, legacy systems using Jenkins and for new systems GitHub or GitLab, and Buildkite, so you need to create and maintain new runners for all these CI/CD systems, pre-install software for all the build pipelines that may run in your runner Now you have a new platform to develop, update and support every day for the whole company. And the list goes on [1] - https://ift.tt/nbCPXOw... Thanks for reading, if you want to try us, want to say high, or give us some feedback just ping me jean _at_ open-fire.dev - Jean https://ift.tt/qDU0ZWO May 28, 2023 at 03:20AM
Show HN: A High-Performance CRC Hardware Generator in Bluespec SystemVerilog What is it and why make it? The Cyclic Redundancy Code(CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to digital data. And blue-crc repo provides a parallel, pipelined and highly-parameterized hardware implementation of CRC targeting high-throughput applications, such as network transmission. CRC is a mature and widely-adopted error-detecting technology, and there have been numerous hardware implementations of it. However, most existing hardware designs are either implemented using pure combinational logic or are only designed to process input data byte-by-byte serially, which results in extremely low throughput. Other designs targeting high-performance applications lack proper parameterization and only support some specific CRC configurations. Blue-crc aims to solve these problems by providing both high-throughput and well-parameterized CRC hardware implementation. Main Features of Blue-CRC Complete CRC Configuration: the implementation supports complete CRC configuration parameters, including polynomial, initVal(the initial CRC value), finalXor(the result is xor’d with this value if desired), reflectData(if True, the input bit order is reversed), and reflectRemainder(if True, the result bit order is reversed). Standard Interfaces: The input interface follows AxiStream protocol, with a parameterized data width. The output CRC result is guarded by the basic handshake protocol. Parallel: The IP is designed to process multiple bytes per cycle. Fully Pipelined: The implementation takes in raw data and produces results every cycle. High Throughput: The implementation, configured with 256-bit input and 32-bit CRC output, runs at 500MHz on Xilinx xcvu9p FPGA. Have a try? For BSV users, you can import our codes and instantiate CrcAxiStream interface in your design directly. Besides, we provide a script to generate custom Verilog CRC implementation automatically. If you are interested in high-performance CRC hardware acceleration, it’s worth giving it a try. We are also open to any recommendations for further improving our designs. Link GitHub: https://ift.tt/t4pIeQl References: https://ift.tt/14r9JC6 https://ift.tt/t4pIeQl May 27, 2023 at 01:14AM
Show HN: I made an in-browser code editor with code replay and REPL I made a Logicboard.com — A collaborative code editor with code-replay feature. Code-replay lets you run the coding session like a movie, I wrote a blog post on how I implemented this: https://ift.tt/tRboQXg You can try out the demo here: https://ift.tt/8mv1SX6 And play around with the code editor here: https://ift.tt/vogGtRp Logicboard also has an REPL shell, just type "start()" and hit enter in the output area. https://ift.tt/ecA13m4 May 27, 2023 at 12:36AM
Show HN: Private instances are the secret sauce for Unleash Hi HN, I want to share how important Private instances are for us, and how we build at Unleash. Hope you find this helpful and if you have any questions, ask away! In case you don't know - Unleash is an open source, enterprise-ready feature management solution built with privacy in mind. I would love to know your thoughts about this, and share your thoughts about Unleash or the way we build software. Questions about the setup are also welcome, if you would like to build something like this yourself! https://ift.tt/OPjkq3D May 25, 2023 at 11:30PM
Show HN: Open-Source Public Second Brain Built with Obsidian and Quartz My Public Second Brain (https://ift.tt/QmOc4sa) is built with the help of a wonderful tool called Quartz (https://ift.tt/FHBq03G). Obsidian (https://ift.tt/Ml46T02) has become my favorite for note-takers, given its flexible and linked structure that closely mirrors our natural way of thinking. With Quartz, I was able to seamlessly publish my Obsidian notes to a public vault, providing the groundwork for my Public Second Brain. The journey of making this possible involved some scripting as well. I wrote a python script, find-publish-notes.py (https://ift.tt/yJaF85o), which is integrated into the Makefile (https://ift.tt/wuqLWvO). This script's purpose is to locate all the notes in my Obsidian Vault tagged with #publish and copy them into the Quartz git-repo. When I'm ready to update my public brain, all it takes is a simple command - `make deploy`. This command will publish all the recently tagged notes to brain.sspaeti.com (https://ift.tt/QmOc4sa), ensuring the Second Brain stays updated. Want to see it in action? Here's a recorded example of How I upload to my Public Second Brain - asciinema (https://ift.tt/AxGgtMI). I'm excited about the transparency and accessibility that my Public Second Brain offers. It's a dynamic, growing entity, just like our human brains with backlinks and its graph view. You can find more details about my Public Second Brain here (https://ift.tt/9ZQnJHL). Stay curious, keep learning, and perhaps, see you in the world of open-source knowledge! By the way, I also wrote about Personal Knowledge Management (PKM) workflows (https://ift.tt/ecwBfV3), in case that is something you got interested in. May 26, 2023 at 12:19AM
Show HN: Hacker News in Slow Italian - AI-generated podcast (with code) There are plenty of podcasts to listen to some slow basic Italian, but often they just talk about random things I'm not that interested in. Nothing a few hours of tinkering with Python cannot solve these days! Introducing Hacker News in Slow Italian. Each episode is generated automatically, using GPT4 API to summarise the top articles on Hacker News and then fed to Play.ht for text-to-speech. The (very short) code is available on Github: https://ift.tt/yWAuinX https://hn.lingually.ai May 25, 2023 at 10:28PM
Show HN: Collaborative recipe manager for iOS, built with SwiftUI and Firebase I initially created Umami for my family. We'd been using a giant google sheet of recipes that my wife made (one recipe per tab plus a table of contents at the front), but the UX of that left much to be desired, especially on mobile. We also tried a bunch of other recipe apps like Paprika, Whisk, Mela, etc., but most of them don't let you create a shared collection of recipes without using the same login credentials, which we didn't want to share with extended family members. Anyways, I've steadily been working on Umami as a solo side project for about 3 years. At first, just my family and a few friends were using it, but now it's starting to get downloaded by other people. I'd love to get feedback here on what kinds of features would be helpful to y'all. Also happy to answer any questions about the tech stack. Thanks friends! https://ift.tt/6LehY5P May 25, 2023 at 11:07PM
Show HN: Gis.chat – a Geospatial Community Hi folks! I'm excited to show you gis.chat, a geospatial chat platform in both senses: a platform about geospatial topics and a geospatial platform itself, referencing the location of our communities. The setup is fairly simple and reproducible: a plain Zulip instance and a homepage with geospatial search capabilities. It seems almost trivial but it has some very nice features. I guess you should be familiar with Zulips stream/topic model to follow along ( https://ift.tt/JP7zkaL ). The core idea is that there are city-specific streams (currently represented by a pin), but there could just as well be streams about points of interest, line geometries (e.g. a river) or polygons (e.g. national park). - Every local stream can have the same topics, e.g. "general", "news", "meetups", "jobs" etc. - With Zulip's search you can either search for a particular topic, e.g. "news" in a local stream or instead in all streams and have some kind of news feed of the community with "topic:news" - Once more communities are added, specific filters could be added, e.g. country-wise or by drawing your own area of interest - Eventually, for the ones who like, users could associate themselves with a local community in their profile or add there main location so one could not only search for the local communities but instead also for individuals There are many nice features in Zulip's pipeline that would foster gis.chat: - Further nesting of streams/topics - Semantic search If for example Zulip would allow for saving coordinates (or better an entire geometry) in the Postgres DB, with the help of PostGIS, Zulip's search could allow for bounding boxes (or custom geometries). Let me know if you have any kind of other ideas or feedback! https://gis.chat May 23, 2023 at 11:54AM
Show HN: Yakread – An RSS reader powered by machine learning This is a web-based reading app I've been working on since August. The main differentiator is that Yakread uses machine learning to rank the articles in your feed: as you click on articles from a particular RSS/newsletter subscription, other articles from that subscription will tend to be ranked higher in the future (via a bandit algorithm). Yakread also uses ML to recommend articles that other users have read, so your feed will have articles in it even before you sign up and add your own subscriptions. For the recommendations, I'm using the collaborative filtering implementation from Spark MLlib[1]. I model RSS feeds instead of individual articles: when you click an article, that counts as a "point" for that article's RSS feed; at recommendation time, the algorithm first selects an RSS feed to recommend, and then it picks one of the popular/recent articles from that feed. To counter popularity bias, I have a pre-ranking step that probabilistically filters out RSS feeds that have already been recommended a lot. I manually approve all RSS feeds before they're eligible to be recommended. In addition to scrolling through the algorithmic feed, you can read articles chronologically on the subscriptions page, which I sometimes prefer when I have a larger chunk of reading time. There's also a daily digest email that lists new articles from your subscriptions; skimming that is part of my morning routine. I find the whole system gives me a nice balance between algorithmic filtering and manual control. This is the culmination of the past four years I've spent as a full-time bootstrapped founder; Yakread both scratches a personal itch and attempts to fix various deficiencies that my previous businesses have had. In a nutshell, I've come to believe that "discovery is a feature, not a product," which is why Yakread is a full reading app instead of a standalone recommender system like my previous products.[2] From a business perspective, the recommendation algorithm is primarily intended to help onboard new users quickly/easily. More ideologically, I think RSS is ready for a comeback :). [1] https://ift.tt/vFTeEKj... -- I'm using the implicit feedback setting. [2] Show HN for Yakread's immediate predecessor, The Sample: https://ift.tt/Npw4Cxv . The Sample does bring in $1k or so per month, but long-term retention is too low for me to grow it sustainably. https://yakread.com/ May 24, 2023 at 10:59PM
Show HN: Mental Models for Startup Founders Hello HN, I launched Wingify/VWO (Visual Website Optimizer) here on HN in 2010. The initial momentum and feedback I got from this place was a key reason I was able to profitably bootstrap the company to roughly ~$30MN ARR. Over the last 2 years, I have been writing a book for startup founders that's informed by my experience with Wingify and many failed attempts before it. It's finally done, so thought of launching it on the same forum where it all started for me :) There are a total of 68 mental models covering various aspects of building a startup: - Choosing markets - Building products - Ecosystems and partners - Thinking about Moats - Approaching marketing - B2B v/s B2C - Hiring & culture Unlike other books, I'm not sharing my story and neither take a very prescriptive approach. Rather, I use mental models to shine light and provide a tractable way of looking at problems an entrepreneur encounters during her startup. I understand that entrepreneurship cannot be systemized, but I'm hoping some of the mental models I share help in clearer thinking and faster decisions. Would love your feedback on the book: https://ift.tt/J2k7zA4... If you find it useful, please share it with others in your network. https://ift.tt/J64fMaw May 24, 2023 at 11:57AM
Show HN: Honda Civic Infotainment Reverse-Engineering I own a 2021 Honda Civic and have been annoyed by the lack of public documentation/hacking tools for the Android-based headunit. I hope to address this by publishing my research into the headunit and encouraging discussion and community contribution https://ift.tt/1wnF4WY May 24, 2023 at 06:35AM
Show HN: File-by-file AI-generated comments for your codebase My friends and I were complaining about having to decipher incomprehensible code one day and decided to pass the code through GPT to see if it could write easily understandable comments to help us out. It turns out that GPT can but it was still a hassle to generate comments for large files. So we decided to develop a basic web application that automatically integrates with your Github repository, generate comments, create a pull request and send you an email when it is all done. There is definitely a lot more that can be done but we wanted to gain feedback on whether this is a problem that you face too. Do you often find it challenging to understand complex code? Do you have difficulties in writing informative comments? And if so, would you find value in a tool that can automatically generate comments for your code? Really appreciate any feedback and suggestions! Thanks in advance! https://ift.tt/fBFK0JY May 23, 2023 at 07:46PM
Show HN: I made Hazumi, a modern HN reader for iOS Hello HN, I'm thrilled to announce the launch of my first app, Hazumi, a Hacker News reader, available for free on iOS! I’ve been lurking on HN for around 2 years while working on this project seeing people post amazing HN reader apps of their own. I’ve always figured Hazumi wasn’t good enough yet to post here but if I wait around until I’m ready, I’ll probably never share so here goes… Hazumi is a modern Hacker News app for your pocket with some intentional limitations. Stories are displayed on a simple colourful card, with images, that condenses all the information you need at a glance. Out of the box you get accessibility features for system settings like light/dark mode and text size. Others are controlled in app for opening stories in a Web View vs externally via Safari, defaulting to Reader Mode and reducing animation bounciness. You can browse top, new and best sections, limited to 30 stories each, which refresh every hour on the server. I’m not a fan of infinite scrolling or spending a lot of time reading news. I just want to get in and get out while keeping up on the latest. Other notable features: - Basic search - Widgets for your Home and Lock Screen - Apple Watch app - Warns you of non-HTTPS links There are a few “PRO” features that require a subscription ($/€1.99 monthly): - AI summaries of comments on stories that have at least 30 root level comments - In app newsletter (yesterday’s top 10 stories) - Bookmarking with iCloud support - Themes (change the colour of the cards) - Supporting indie developers and keeping the lights on for Hazumi Working on: - Better comments/tappable links - Enhancing search - More themes Being the first version, it's very early days for Hazumi and there are bugs that I’m working on fixing. I'm eager to improve it and shape its future based on your input. I welcome any feedback you may have, whether it's about existing features or ideas for new ones. Your thoughts will be instrumental in shaping Hazumi, making it an even more useful tool for tech news enthusiasts. Please give it a try and let me know your thoughts. P.S. Shout out to MB and MC for your awesome feedback during the TestFlight beta! https://ift.tt/8dXLxSW May 22, 2023 at 08:01PM
Show HN: Blotter – An interactive, never ending music video One day I was listening to a playlist and wished there could be some cool visuals to go along with it. Blotter is a proof of concept I hacked together that does a bit of audio recognition combined with a few generative AI models (both text and img) to create visuals that are relevant to the song. The video stream is generated in real time at 24fps - you can try it yourself by requesting visuals in the Twitch chat using the "!v" command! Right now it's mostly a fun hack project, but I am tinkering with new model architectures for higher fidelity video as well as an interactive tool so people can make videos with their own audio files. I'd love to hear any feedback or suggestions, thanks! https://ift.tt/azlgvP3 May 23, 2023 at 03:51AM
Show HN: Psychic - An open-source integration platform for unstructured data My cofounder and I used to work at Robinhood where we shipped the company’s first OAuth integrations, so we know a lot about how data moves between companies. For example, we know that the pain of building new API integrations scales with the level of fragmentation and number of competing "standards". In the current meta, we see this pain with a lot of AI startups who invariably need to connect to their customers data, but have to support 50+ integrations before they even scale to 50+ customers. This is the process for an AI startup to add a new integration for a customer: - Pore over the API docs for each source application and write a connector for each - Play email tag to find the right stakeholders and get them to share sensitive API keys, or give them an OAuth app. It can take 6+ weeks for some platforms to review new OAuth apps - Normalize data that arrives in a different formats from each source (HTML, XML, text dumps, 3 different flavors of markdown, JSON, etc) - Figure out what data should be vectorized, what should be stored as SQL, and what should be discarded - Detect when data has been updated and synchronize it - Monitor when pipelines break so data doesn’t go stale This is a LOT of work for something that doesn’t move the needle on product quality. That’s why we built Psychic.dev to be the fastest and most secure way for startups to connect to their customer’s data. You integrate once with our universal APIs and get N integrations with CRMs, knowledge bases, ticketing systems and more with no incremental engineering effort. We abstract away the quirks of each data source into Document and Conversation data models, and try to find a good balance to allow for deep integrations while maintaining broad utility. Since it’s open source, we encourage founders to fork and extend our data models to fit their needs as they evolve, even if it means migrating off our paid version. To see an example in action, check out our demo repo here: https://ift.tt/7ZpQE0J We are also open source and open to contributions, learn more at docs.psychic.dev or by emailing us at founders@psychic.dev! https://ift.tt/OWAoZCb May 22, 2023 at 08:11PM
Show HN: I built a web app for learning Vim from the browser as a 17-year-old Hey HN! After my own experiences with learning Vim, I wanted to skip the frustrating process of configuring a new tool before even learning how to use it. In an attempt to solve this problem, I started working on Vim Ninja, a web app that would allow developers to learn Vim through interactive lessons in the browser. It’s been a couple of months, and I’m proud to say that I’ve finally released https://VimNinja.com ! Check out a demo of the app here: https://youtu.be/reukQHKqMZE . On the technical side of things, I used SvelteKit to build the entire app and Tailwind, which turned out to be an amazing decision. I actually really like SvelteKit’s filesystem-based router as well as Svelte’s brevity, and Tailwind actually makes styling a fun task for me. I’m using CodeMirror 6 as a base for Vim Ninja’s code editor, and I really prefer it over more feature-packed alternatives like the Monaco Editor, which is what I started out with but soon abandoned due to its worse performance when compared to alternatives like CM6 and the sheer amount of bells and whistles that I just didn’t need. https://ift.tt/QlWy945 May 22, 2023 at 05:33PM
Show HN: WikTok – A Recommendation UI for Wikipedia Hi HN, WikTok is a UI for Wikipedia that lets you quickly swipe (or use your arrow keys) to navigate between random and recommended articles (based on the previous articles you interacted most with). It's just a fun project I hacked together this weekend, so may be a little rough around the edges, but I'd love to get your thoughts. Let me know if you have any suggestions (or find any interesting articles!) Cheers, https://wiktok.org/ May 22, 2023 at 02:29PM
Show HN: Horizon – Programmatic Prompt Generation and LLM Configurations Hi HN. I heard you like dev tools and AI, so we wanted to share our project that we’ve been working on. We’re working on Horizon [1] - a higher level abstraction for LLMs so that developers can spend less time trying to grapple with LLMs to make them work and more time with users. This is the starting feature set which takes an auto-ML approach to identify the optimal LLM model, hyperparameters, and prompt - instead of just giving you the tooling to figure it out yourself. You can read more about it in our documentations. Our view is that as LLMs become increasingly commoditized and prompts become easier to develop all the while fine-tuning is not realistic for the many organization out there - the configuration, optimization, and management will become much more difficult at-scale (consist with Andrej’s recent post [3]). The idea came as we were trying to build LLM apps (think sales outreach, ppt generation, support, etc. etc.) last fall and realized with this tool we could easily build many of the applications with Horizon in minutes versus that days it took us before. Let us know what you think! [1] https://ift.tt/zFkPV4J [2] https://ift.tt/9E7rLak [3] https://twitter.com/karpathy/status/1655994367033884672?s=20 https://ift.tt/hzbXJ6I May 22, 2023 at 07:16AM
Show HN: Planit Earth – Your AI-Powered Travel Planner Greetings Hacker News family! I'm excited to share with you the first version of our AI-powered travel planner. I'm a digital nomad/tech geek who loves traveling but admittedly am lazy about trip planning, so I created a tool built on ChatGPT that could help me jump start that. I simply enter a destination, the # of days, a budget preference, and it spits out a full travel itinerary with highlighted points of interest. The problem: Trip planning can be overwhelming and time consuming. While some may find excitement in planning, many folks are overwhelmed by the prospect of figuring out where to go and what to do once you arrive at your destination. The typically requires copious amounts of research in order to uncover the major attractions, determine their relative proximities, and weave everything together into an actionable travel itinerary. To complicate things, everyone has different preferences for the types of activities they would like to partake in. The solution: Planit Earth aims to help travelers shortcut this process by leveraging the power of AI to generate personalized itineraries with just a click. The vision over time is for Planit Earth to become the go-to resource for your trip planning needs. Look forward to hearing your thoughts! https://ift.tt/DHEb6wU May 22, 2023 at 03:00AM
Show HN: SpaceBadgers – Free and Libre SVG Badges Greetings, Hacker News community! I am thrilled to present SpaceBadgers, a new free and open-source SVG badge generator I've been working on. It's located at badgers.space. SpaceBadgers is born out of the desire to offer more flexibility and customization for project badges, often used in open-source projects. It's fully open source, provided under the permissive MIT license, and will always be provided for free. The core badge worker is written in Rust, and so is the library behind it, which you can also find on crates.io under the name spacebadgers. I am excited to receive your feedback and suggestions. Check it out and let me know what you think in the comments. Contributions are also welcomed and appreciated. You can find the source code here: https://ift.tt/idEUueI . https://badgers.space May 21, 2023 at 05:24PM
Show HN: Loofi – Our AI-Powered SQL Query Builder Hi HN Community, We're a team of software engineers who've experienced the complexity of crafting SQL queries. To address this, we've developed a tool that simplifies this process. Introducing Loofi, an AI-powered SQL Query Builder. Loofi streamlines query building and leverages AI algorithms for intelligent recommendations. We value community feedback and invite you to try out Loofi. Your thoughts and suggestions will help us improve our tool. Here's the link to Loofi: https://loofi.dev/ For any questions or assistance, feel free to reach out. We're eager to engage with this community. Your valuable feedback is much appreciated! https://loofi.dev/ May 21, 2023 at 07:49AM
Show HN: YouTube Full Text Search – Search all of a channel from the commandline yt-fts is a simple python script that uses yt-dlp to scrape all of a youtube channels subtitles and load them into an sqlite database that is searchable from the command line. It allows you to query a channel for specific key word or phrase and will generate time stamped youtube urls to the video containing the keyword. https://ift.tt/ncPXZuj May 20, 2023 at 11:48AM
Show HN: Swap.js – a JavaScript micro-framework (HTML fragments over the wire) Hi HN! I created this lib in the need of a simple and tiny framework to easily do AJAX-style navigation / replacement of fragments in the page, in a web application. For people who don't want to use client-side-rendering and complex frameworks à la React, there are nowadays a few "HTML-over-the-wire" libraries, like HTMX, Unpoly or this super-tiny one Swap.js :) One other key thing is that no external tool is needed: no bundler, no webpack, no TypeScript compiler, no minification needed. Just write HTML, JS (+ your preferred server-side language: PHP, Python, etc.) and it works. The framework makes use of fetch (of course) but also MutationObserver API to be able to launch actions when parts of the DOM change. Let me know what you think! https://ift.tt/uSgeaLy May 18, 2023 at 11:34PM
Show HN: Midjourney-Python-API This Python client is built for the unofficial MidJourney API, leveraging a Discord self bot and utilizing the Merubokkusu/Discord-S.C.U.M library. Please be mindful that there might be risks associated with the use of self bots, as per issue #66. Key Features: 1: Info retrieval 2: Imagine prompt 3: Image upscale and vectorization by label 4: All message returns via WebSocket, including banned words check and image processing 5: Auto reconnect WebSocket https://ift.tt/8Cl4n9s May 19, 2023 at 07:36AM
Show HN: Cosigny - Crowd source the best credit card and loan terms. The goal is to create spreadsheet with crowd sourced data regarding credit products and profiles so we can see how we measure up and find the best deals. Don't go too hard on me. I linked a few google sheets together. Hope you find it useful. https://ift.tt/53DQAqk May 18, 2023 at 10:41AM
Show HN: PENVM – Programmable, extensible, network virtual machine The PENVM platform provides the building blocks to facilitate the leveraging of networks. There is no lack of frameworks and tools for working with servers, communicating over the network, and processing. What PENVM does is make this simple and easy to use, reuse, and share. Low-level concerns with networking and communication are not exposed. Network setup and management is simple. Communication is uncomplicated. And integration within applications is smooth with freedom to apply as needed. PENVM provides the means to get up to speed quickly with little hassle. This kind of development does not need to difficult anymore. https://penvm.dev/ May 17, 2023 at 11:42PM
Show HN: Metatype – an open-source HTTP/GraphQL query engine for APIs and data Hey everyone, we built Metatype [0] as a different way to build APIs and backends based on 3 parts: 1. a Python package to build virtual graphs connecting all components of your stack (think databases, third-parties, and existing systems) 2. an HTTP/GraphQL query engine built in Rust/Deno that authorizes and optimizes queries over the graphs 3. a CLI to provide a nice developer experience and fast feedback cycle We developed this platform to tackle some of the challenges we often saw in tech teams we worked with: - most developers (especially backend) still spend too much time on tasks with no real added value (crud, data validation, compliance, etc.) - when growing a product, it is difficult keeping up with business needs and remaining agile/innovative with technology (especially when there is limited funding) We believe it provides multiple advantages over more traditional approaches: - it offers multiple runtimes [1] with pre-defined operations (e.g. Prisma) and can replace the needs for an ad-hoc backend - when the project grows, you can easily introduce new APIs or break existing ones in smaller parts while keeping the same interface - you can write complex business logic directly in Typescript or Python and run them directly inside the query engine - most of the frontend are today built on composable components, this brings a similar approach to backend development - third-parties APIs can be easily integrated, providing you visibility and control over them - it is interoperable with existing systems, and can be introduced step by step - it can be easily self-hosted or customized according to your needs The project is now in public beta, and is run in production by a few companies. We are looking to collect more feedback and early users to help us improve the platform. For the tech curious reader, we also had to build a few new open source pieces to make this happen: - a WASI runtime for Python [2] to run Python code inside WASM inside the engine - a task runner [3] supporting live reload and managing dependencies as DAGs - a way to inject secrets [4] from your preferred vaults into the engine [0]: http://metatype.dev [1]: https://ift.tt/UIPlGCL [2]: https://ift.tt/f0id2Sv [3]: https://ift.tt/kvtXLGf [4]: https://ift.tt/I3R9Dh5 https://ift.tt/uMKoX0i May 18, 2023 at 01:55AM
Show HN: Taskspace – Beautiful, simple, and customizable personal task manager Hello HN. I built a personal task manager https://taskspace.app to experiment with NextJS. Wanted something simple and clean that I could keep open in the browser while I work. Added in task history viewing for easy reference during daily standup and when I need to summarize my completed work throughout the year during performance reviews. Now opening to the public to get feedback and see if folks find the app useful. Wondering If I should invest time building out additional features or if I should continue using it only for my personal workflow. Thanks, Tyler https://taskspace.app May 17, 2023 at 09:22AM
Show HN: My solar-powered, ePaper digital photo frame This is version 2 of my ongoing heirloom device project, a digital photo frame built with the goal of lasting longer than your typical gadget. There's a part of me that wishes to commercialize a polished version of this product, but the more I speak to people, the more I become convinced that I belong to a very small minority. https://ift.tt/WbEHVgf May 16, 2023 at 10:06PM
Show HN: dreamGPT: What if LLM hallucinations were a feature and not a bug? The first GPT-based solution that uses hallucinations from LLMs for divergent thinking to generate new and novel ideas. Hallucinations are often seen as a negative thing, but what if they could be used for our advantage? dreamGPT is here to show you how. The goal of dreamGPT is to explore as many possibilities as possible, as opposed to most other GPT-based solutions which are focused on solving specific problems. https://ift.tt/I0QEczj May 16, 2023 at 04:32AM
Show HN: Legend-State 1.0 – The fastest React state library After almost a year of development and iterating, we just released Legend-State 1.0. It's the fastest React state library and is very easy to use, based on Observables (Signals) with fine-grained reactivity and built-in persistence. I'd love to know what you think, and I'm also happy to answer any general JavaScript performance questions if you want since I've gone very deep into optimizing . https://ift.tt/r8Q7AnB https://ift.tt/dRI7kCs May 16, 2023 at 04:36AM
Show HN: Openlayer – Test, fix, and improve your ML models Hey HN, my name is Vikas, and my cofounders Rish, Gabe and I are building Openlayer: http://openlayer.com/ Openlayer is an ML testing, evaluation, and observability platform designed to help teams pinpoint and resolve issues in their models. We were ML engineers experiencing the struggle that goes into properly evaluating models, making them robust to the myriad of unexpected edge cases they encounter in production, and understanding the reasons behind their mistakes. It was like playing an endless game of whack-a-mole with Jupyter notebooks and CSV files — fix one issue and another pops up. This shouldn’t be the case. Error analysis is vital to establishing guardrails for AI and ensuring fairness across model predictions. Traditional software testing platforms are designed for deterministic systems, where a given input produces an expected output. Since ML models are probabilistic, testing them reliably has been a challenge. What sets Openlayer apart from other companies in the space is our end-to-end approach to tackling both pre- and post-deployment stages of the ML pipeline. This "shift-left" approach emphasizes the importance of thorough validation before you ship, rather than relying solely on monitoring after you deploy. Having a strong evaluation process pre-ship means fewer bugs for your users, shorter and more efficient dev-cycles, and lower chances of getting into a PR disaster or having to recall a model. Openlayer provides ML teams and individuals with a suite of powerful tools to understand models and data beyond your typical metrics. The platform offers insights about the quality of your training and validation sets, the performance of your model across subpopulations of your data, and much more. Each of these insights can be turned into a “goal.” As you commit new versions of your models and data, you can see how your model progresses towards these goals, as you guard against regressions you may have otherwise not picked up on and continually raise the bar. Here's a quick rundown of the Openlayer workflow: 1. Add a hook in your training / data ingestion pipeline to upload your data and model predictions to Openlayer via our API 2. Explore insights about your models and data and create goals around them [1] 3. Diagnose issues with the help of our platform, using powerful tools like explainability (e.g. SHAP values) to get actionable recommendations on how to improve 4. Track the progress over time towards your goals with our UI and API and create new ones to keep improving We've got a free sandbox for you to try out the platform today! You can sign up here: https://ift.tt/Trha3ol . We are also soon adding support for even more ML tasks, so please reach out if your use case is not supported and we can add you to a waitlist. Give Openlayer a spin and join us in revolutionizing ML development for greater efficiency and success. Let us know what you think, or if you have any questions about Openlayer or model evaluation in general. [1] A quick run-down of the categories of goals you can track: - Integrity goals measure the quality of your validation and training sets - Consistency goals guard against drift between your datasets - Performance goals evaluate your model's performance across subpopulations of the data - Robustness goals stress-test your model using synthetic data to uncover edge cases - Fairness goals help you understand biases in your model on sensitive populations https://ift.tt/oSNHxTZ May 15, 2023 at 11:05PM
Show HN: Justpaid.io YC W23 - convert sales contracts into invoices Hi, its Anelya, cofounder and chief product officer of JustPaid.io, my background: I started an accounting firm 10 years ago and worked with fast-growing tech companies like Chart.io, Segment, TaskRabbit, CitusData, Parse, DrChrono, and hundreds of others. My cofounders are Daniel, who exited his last company, it made the top 30 biggest exit list from YC. Vinay, my other cofounder, is an expert in Machine Learning and LLMs. We learned from years of experience that converting sales contracts into recurring revenue is a painfully manual process to collect revenue. To report revenue on GAAP to have accurate reporting is a time suck. Reading contracts takes hours and is annoying and error-prone. We also have a process for bill pay. My problem was to check every bill that my clients received against the contracts. And as you might know, anyone from your company can sign a contract and the company is obligated to pay? I had to build an Excel database of all the vendors and check every bill against my secret sauce database to prevent my client from overpaying! JustPaid AI reads the contracts and creates a database of them so the next bill you get is validated that you are actually getting billed the correct amount, and you can keep track of everything you have signed. JustPaid AI also reads your sales orders and contracts (just forward them to our inbox), and we convert them into invoices > collect payments > Reconcile the invoice in the QBO, and create a revenue recognition schedule your investors and CPAs will love. We are building a product that helps to alleviate the pain for founders and teams that are growing. My team is eager to partner and get feedback. Please sign up here: Justpaid.io Any feedback is very much appreciated. May 15, 2023 at 10:19PM
Show HN: Tack, a fast lightweight scripting language for games and embedding https://ift.tt/og78qkN Hi HN! Tack is a scripting language I've been working on sporadically for the past year or so, and intensely for the past few weeks. It originated out of a desire for something that was like Lua, but with a more familiar syntax, and without some of the other surprises in Lua such as the 1-indexed tables. It's also been a great learning project, and a very satisfying challenge! While the current version is early beta at best, I hope to continue working on it and maybe see some adoption. Despite the relative lack of optimization, I'm very pleased with the performance so far - although I haven't done a huge amount of benchmarking, it seems to be significantly faster than the stock Lua 5.4 interpreter for the quicksort test, and the btrees test (copied from the Computer Language Benchmarks Game). The language is designed for embedding in C++ programs, and is written in C++ more or less from scratch including the handwritten recursive descent parser, and a register-based compiler/interpreter. The only dependency other than the standard library is my C++ adaptation of the khash library used for the object type - a from-scratch hashmap seemed not worth the trouble. Quick code example - more examples in the repo! fn quicksort(arr) { const n = #arr if n <= 1 { return arr } " find the midpoint " let l = min(arr) let r = max(arr) if r == l { return arr } const mid = (l + r) / 2 " split array into upper and lower " const upper = filter(arr, fn(x) { return x < mid }) const lower = filter(arr, fn(x) { return x >= mid }) " recursively sort the upper and lower sub-arrays and join the result" return quicksort(lower) + quicksort(upper) } let A = [] for i in 0, 1000000 { A << random() } let before = clock() let B = quicksort(A) let after = clock() print("Time taken: ", after - before, "seconds") Building requires just cmake and a C++20 compiler - tested with MSVC 2022, g++11 on WSL and Clang 15 on M1 https://craftinginterpreters.com was a great help with implementing closures, as I had gone down a blind alley with my first approach for locating the closed-over variables. However I have taken a slightly different approach towards boxing. As I do intend to use this for some small games myself going forward, there is a standard library already, and plans to expand it. I also intend to release a GLFW-based mini game framework along with precompiled binaries, so hobbyists (and younger relatives!) may use it without needing a full compiler toolchain. I would love if anyone is interested enough to try it out! James https://github.com/PlumeCat/tack May 14, 2023 at 11:09PM
Show HN: Botecko, a gpt4 client that simulates an instant messenger This is a simulation of an instant messenger running on the browser. It generates contacts (including the profile picture) based on a single sentence. All chat history is stored on your browser. Features: - Open source (apache 2) - Profile generation including picture - Prompt with plan-ahead in 4 steps. This improves the response and also gives a way to debug the character motivation. - Group Chat. Get new insights by making characters with different opinions talk to each other. If you don't have an openAi account you can check a demo here https://youtu.be/e07yjZJGnYo https://ift.tt/0xOmoiX May 14, 2023 at 06:07PM
Show HN: WhyBot, making GPT-4 question itself Hi HN — we’re John and Vish! We built WhyBot, a tool to help you deeply explore a question or topic. You ask a question, and WhyBot responds by building an ever-expanding knowledge graph. It does this by recursively generating answers and follow-up questions. You can change its persona to change the flavor of the generations (try toddler mode!). We originally built this for the AngelList Agent Hackathon ( https://twitter.com/AqeelMeetsWorld/status/16502799744050421... ) and got a lot of interest from folks asking to play around with it. So we thought it’d be fun to brush it up and release it as a web app! It’s a work in progress and we plan on adding more features, such as saving, sharing, focusing on one branch and potentially executing code. We hope you enjoy playing around with it and would love to hear any of your feedback or thoughts. https://ift.tt/tQHs2vI May 14, 2023 at 09:47AM
Show HN: Kaizen, music updated over time like software Hi, I'm co-founder and CTO of Kaizen. The project started as just a weekend project with me and a music producer friend. It has since grown into a community of artists looking to share their music more frequently and engage with their fans more consistently. We've just launched on ProductHunt: https://ift.tt/MLVI6Dx We would love any thoughts or feedback! https://kaizen.place/ May 13, 2023 at 01:16PM
Show HN: React.js LLM Agent (open-source) I've been working in the couple of months on an experiment, trying to make GPT-4 much more useful for web development / React, writing production code that is relevant to any repository without copy pasta from ChatGPT or having small snippets of auto-complete from Copilot that are not in your context. The agent is taking a user story text and generating and composing multiple react components to generate the relevant screens, based on atomic design principles, with Typescript, TailwindCSS and RadixUI. Is is still experimental but very interesting results, I would like to get your feedback on it! It is completely open-sourced, looking for contributors! https://ift.tt/FJcYjHa May 12, 2023 at 03:06PM
Show HN: Infinity Whiteboard, Designed for Teachers I've created a whiteboard which I use every lesson when teaching maths, though it can be used for anything. It currently has a few hundred teachers using it daily. It's designed for use with touch-screen interactive whiteboards in classrooms, and stays in sync with your phone/tablet/whatever without signup/login. You can also find me on Twitter where I post updates etc: https://twitter.com/jakegmaths Some features and cool things: * Sync devices without signup - offline by default, just hit 'sync devices' and use the same code on multiple devices to sync * Touch-first - 1 finger draws; 2 finger pan/zoom; 3 finger gestures like changing pen colour * Add images - when teaching, this is usually photos of student work taken on my phone and auto-sync'd to the whiteboard at the front of the room * Add PDFs - when teaching, these are usually past paper exams which I then annotate over with the class * Zen mode - 3 finger tap or hit the ∞ icon to hide the UI; something I use every lesson so students can focus on the actual maths (there's also a fullscreen button when not on iOS) * Visualiser - often when teaching we'll work on paper with a webcam aka 'visualiser' pointing down at it; this projects that to the main whiteboard, with optional cropping, freeze-frame and snapshots * Screencast - many teachers use eg PowerPoint to teach; instead, I'll use PowerPoint in edit/design mode rather than slideshow mode, with a locally-cast cropped portion of that on the main whiteboard at the front of the room. This enables me to eg edit my PowerPoint as I go and use all the PowerPoint tools not available in slideshow mode * Instant replay - hit the play button to play back all the scribblings currently showing on the screen * Magnet mode - when sync'd with another device, use the magnet icon so the other device follows you. Most of my teaching is now via a tablet-with-stylus anywhere in the room, and as I pan/zoom around with the tablet the main whiteboard comes with me... but only when I want it to by activating the magnet * Student mini-whiteboards (MWBs) - if my students have devices and I want them to use them, I 'sync devices' then enable student MWBs and each student has a live copy of the whiteboard, and I can see what they write and can showcase any student instantly on the main board * PWA support - install as a PWA and you can download whiteboards as .iwb files which can then be double-clicked to open/edit on desktop * Free - I have no plans to charge for this Other things you may find interesting from a tech perspective: * The client is a single <5,000 lines HTML file, with JS, CSS, SVG-favicon all inlined (plus PDF.js lazily loaded if you add a PDF) * This is vanilla Javascript with no frameworks or libraries (except PDF.js) and no minification or build scripts - just view-source and check out how ugly all my code is! * 77.6kB for everything (except PDF support)... the size of 'modern' websites frankly disgusts me * The server is just a single ~500 line Javascript file and runs on Deno (also ported to Bun but unstable for now) and really just serves some static files, deals with websockets and temporarily stores images people add * Costs ~£5/month on Heroku * There's no database or any long-term persistence - Heroku servers restart every 24h and nothing is saved beyond that; it's all ephemeral https://www.mathsuniverse.com/infinity May 12, 2023 at 06:56PM
Show HN: Browse, upvote and comment on HN from command line Hi HN! I've built hnterminal, a pip package that lets you browse, upvote, and comment on Hacker News from your terminal. To get started: $ pip install hnterminal $ hnterminal hnterminal is an interactive REPL environment with commands like "get_front_page", "get_tree", "upvote", "reply_to", etc, each of which supports rich arguments and comes with full help documentation. Checkout the readme. https://ift.tt/brOH7BJ May 11, 2023 at 09:57PM
Show HN: Oneleet – Penetration Testing for SOC 2 and beyond Hello HN, Over the past months at Oneleet (YC S22), our team has been building https://app.oneleet.com , a compliance-focused pentesting-as-a-service platform. It allows companies to easily schedule and manage penetration tests, designed for both compliance and security enhancement. We collaborate exclusively with top-tier vetted penetration testers based in NATO countries, ensuring superior quality results. Competitors like Cobalt work with just about anyone, of which they put multiple on a single engagement to ‘average out’ the quality. Despite their efforts, it is still hit-and-miss. By being very selective about who we work with (many Cobalt pentesters don’t make the cut), we are very consistent in the level of insight and quality we provide. Our team puts a lot of work into making sure that pentest results can be leveraged beyond security improvements. We are fully aware that with the current SOC 2 craze[1] most companies are just looking to tick their compliance and control boxes[2][3], but that doesn’t mean you can’t have both that box ticked and fundamentally improve your app’s security. Which is why we make sure our pentests serve both purposes: Present technical detail at a deep level but also provide documentation that is meant to be a sales and trust-building tool. Some of the things I used to hate when I worked as a pentester myself was seeing how common it had become for pentesters to just take Nessus findings, slap a pentest report title page on it and then proudly proclaim how they found these critical ‘SSL’ and ‘HTTP Header’ findings. Not to mention how much trouble it can get you in with your auditor when they see all those criticals they don’t understand the nature of. When those auditors then require you to fix all those criticals, you quickly find yourself going down a rabbit hole of unnecessary engineering effort. Great pentesters, on the other hand, use those exact same tools but know what to do with the information that they generate. Take a tool like Burp Suite, which is known among pentesters as the go-to tool for manual web app pentesting. Despite it primarily being used for manual testing, it also has ‘auto scanning’ functionality built in that is mostly useless without a human guiding the tool. More than once I heard both pentesters and clients state: “We already do Burp Suite scanning, so we have that covered.” Don’t get me wrong.. there are plenty of tools that provide a lot of insight without needing human guidance. Running Nuclei[4] frequently on your web-facing hosts is a great way to spot low-hanging fruit-type vulnerabilities, but it will require you to at least have some basic understanding of what the reported findings entail, and whether the associated severities are accurate or not (CVSS scores can be very random, so using them as a yardstick can be a terrible idea). This is why we’re strict about not allowing testers to inflate the severity of findings, or to revert to reporting boilerplate findings that many automated tools spit out by default. If you’re interested in having a pentest performed, you can get started by going to https://app.oneleet.com . After registration, you will be guided through an onboarding flow after which you can schedule a call with the founding team and a pentester. We’d love to get your feedback and answer any questions you might have! References: [1] https://ift.tt/snZmIiw ] [2] https://ift.tt/kVB650W [3] https://ift.tt/MjFS1AE [4] https://ift.tt/D4KUSbX https://ift.tt/DqRXlHW May 11, 2023 at 11:37PM
Show HN: BundleStore – increase revenue by offering your product in a bundle On BundleStore, users buy more to save more. By offering your product in a bundle, you can make your product instantly more attractive! Visit the website and tell me what your product is, and I'll do the rest. https://ift.tt/Ywh6trD May 11, 2023 at 02:28PM
Show HN: Deterministic objective Bayesian inference for spatial models [pdf] To give some context, objective Bayesian inference refers to Bayesian analysis (i.e. integrating over the parameter space) using a prior that is design to represent "minimal information" (see [1], [2], and [3] for an overview). Particularly in cases where a model's likelihood function is not strongly peaked about a point, objective Bayesian inference can give better results than methods based off of point estimates like Maximum Likelihood [4]. Reference priors provides a general approach to construct so-called noninformative priors that are suitable for Objective Bayesian analysis ([5], [6]). The approach takes a practical viewpoint of noninformative priors and looks to build priors that are both tractable and provide good performance on frequentist coverage simulations. See Section 2 for a description of how the process and frequentist simulations work and [7] for examples with some basic models (e.g. why 1/σ^2 is the noninformative prior for the variance of normally distributed data with known mean). [8] was the first to develop reference priors for Gaussian processes models, and [9] extended the work to handle Gaussian Processes with noise (or nugget effects). The project I'm working on provides software and algorithms to do deterministic inference using the prior from [9]. Typically, such inference has been done using MCMC sampling algorithms; but my belief is that deterministic algorithms can give results that are more consistent, less sensitive to parameter tweaking, and more efficient, at the expense of some engineering cost and loss of generality. For an example of how the algorithms work on a real-world data set of zinc measurements in a flood plain along the Meuse river [10], see https://ift.tt/BUK2a5h... References [1]: https://ift.tt/fp4J13g [2]: https://ift.tt/MeI6yfh... [3]: https://ift.tt/ynxzQaK [4]: https://ift.tt/aiGsRPv... [5]: https://ift.tt/6gevdCY... [6]: https://ift.tt/3agTX2Z [7]: https://ift.tt/kM1oH4p... [8]: https://ift.tt/IHkCgw7... [9]: https://ift.tt/dS9r2Bw... [10]: https://ift.tt/mDLeK1h... https://ift.tt/Ty01W9t May 10, 2023 at 08:37PM
Show HN: Mineo.app – Better Python Notebooks Hello everyone, I would like to introduce our startup to HN: Mineo.app. Mineo.app is a production-ready SaaS Python notebook that provides a complete environment for building your data applications: Dashboards, Reports, and Data Pipelines based on Python notebooks. Key features: * Superpowered jupyter-compatible Python notebooks with extra goodies like: version control, commenting support, custom docker images, etc... enhanced with no code components that allow to create beautiful dashboards and reports. * Data Pipelines: Ability to schedule and run one or more notebooks. * Integrated file system to manage your files and projects with detailed permissions and groups. We have a freemium licensing model, so you can start using Mineo just by registering with your Github/Google/Microsoft account for free without a credit card. And it's free for educational purposes ;-) Diego. https://www.mineo.app/ May 9, 2023 at 06:49PM
Show HN: Build progressively enhanced reactive HTML apps using Go and Alpine.js Fir leverages Golang’s standard library html/template package and a bit of alpinejs to allow building reactive UIs. You start with plain old html and use alpinejs to enhance it to bring no-page-reload interactivity to web apps. The Fir toolkit is designed for Go developers with moderate html/css & js skills who want to progressively build reactive web apps without mastering complex web frameworks. It includes a Go library and an Alpine.js plugin. How it works ? On receiving user-interactions the fir server re-renders html templates and sends it over the wire where the fir client library selectively updates the changed areas. When a user event is received by a Fir route, an array of html templates are rendered on the server and returned as an array of DOM events to the browser. The DOM events are consumed by the alpinejs plugin and dispatched within the DOM where listeners attached to elements can use the event to update the DOM. See the demo and quickstart here: https://ift.tt/8WfUh2c https://ift.tt/8WfUh2c May 10, 2023 at 05:33AM
Show HN: Card game where players write their own cards that get parsed into code Wordbots is a long-running side project I've been working on on-and-off for the past ~7 years that I finally feel comfortable enough with to share with the HN community. It's an online tactical card game (inspired by games like Hearthstone and Magic: the Gathering), where players write their own cards in natural language, that gets parsed down to JavaScript. The English-to-JavaScript translation is handled by a semantic parser operating on a hand-crafted CCG grammar – kind of an “old-school” approach in this age of LLMs but one that performs quite well on the very constrained language of Wordbots cards. The resulting game gets pretty wacky as players can create all sorts of cards, though there are some game formats that try to produce more balanced gameplay as well (e.g. one format in which both players shuffle their decks together, and various draft formats). If you're curious about how it all works, I made a write-up about it here: https://ift.tt/n2mYtb1 And if you want to chat about Wordbots beyond this thread, please don't hesitate to join our discord at https://ift.tt/RXkfU4K . I'd love to hear any and all feedback. -Alex https://ift.tt/i90Fn1H May 10, 2023 at 01:01AM
Show HN: Spiti – Private video library for high-performing teams Hi HN I’m Therese, one of the founders of Spiti. My co-founder, Sai, and I are thrilled to launch Spiti to the HN community! We’ve been working on a better way for teams to organize, access, share, and collaborate on internal videos. Recently, we built the ability to record, too. It is built specifically to enhance remote and hybrid teams’ access to internal knowledge and context lost in historical conversations. ------- *tl;dr backstory:* We’ve worked in start-ups and larger companies. In our previous stints, searching for stuff took up a lot of time. Tooling solved for better access and collaboration in most cases, except videos. Recorded meetings, webinars, product demos, explainer videos, customer conversations, etc. were always scattered around in various folders on the cloud, links in emails, and Slack. But those videos are important, and easy access would save the team and us at least a few hours every week. ---------- We designed and built Spiti Team Video Library to address these challenges head-on and provide teams with their own private video library or, as we describe it — an internal YouTube for your team. One of the things we crafted carefully is its intuitive interface, designed to ensure a delightful viewing experience for otherwise boring team videos. Spiti also integrates seamlessly with popular storage and collaboration tools — Zoom, Google Drive, and Slack— making it easy for teams to centralize their meeting recordings, onboarding, and customer conversations — no more hunting for a video lost in the cloud or links lost on Slack channels. *A few key capabilities:* - Native Screen Recorder (for MacOS) - Native integration with Zoom, Google Drive & Slack - Securely connect and collaborate with individuals or teams outside your organization through Spiti Connect - Organize videos into Playlists - Comments and keep the conversation going - Embed entire playlists in Notion, Coda, and webpages - Search in a video through auto transcriptions for every video *Interesting ways our customers use Spiti* - Adding clarity to bug reports - Product demo videos for your customers - Reviewing GitHub PRs faster - Employee onboarding made async and repeatable We'd love to talk to you and learn how Spiti can improve your remote team's productivity and provide feedback on what we have built so far. We understand that collaboration needs vary from team to team, and we're dedicated to tailoring our platform to meet those specific needs. We look forward to your comments! https://spiti.xyz May 9, 2023 at 10:45PM
Show HN: Interactive Git Training Use Cases Hello, I have been working for years with junior developers and I find that many of them struggle to get out of some "delicate situations". Example "detached head", "wrong rebase", "for some reason I see duplicate commits" and so on. To help my colleagues I came up with a list of git uses cases that can be tested in a sort of interactive playground using a shell script that will set-up the use case and then we can go ahead and try to solve the problem. The main advantage here is that all use cases are reproducible and that by looking at the shell script we can see how we got in the mess in the first place. Everything is written in posix shell and should work on linux, macos and windows (with git bash). Any comments, feedback and contributions are very welcome ! PS: This is somewhat inspired by https://ohshitgit.com/ https://ift.tt/qj10k7M May 9, 2023 at 08:35PM
Show HN: We built an end-to-end encrypted alternative to Notion Hello HN, Over the last year we've been building snote.app, a Privacy focused, End-to-End Encrypted alternative to Notion. You can write, plan, collaborate and get organized - it allows you to take notes, store files, add tasks, manage projects & more. Whether you're working solo or in a team. We are hoping to use this post as an opportunity to collect feedback from fellow hackers. If there's anything we can do better, please let us know https://www.snote.app/ May 9, 2023 at 07:17PM
Show HN: Cptn.io – open-source integration platform Hi, I am Krishna Thota. I am building an open source integration and data platform( https://cptn.io ). The product is MIT licensed and the repo is at https://ift.tt/Kjcub6l . I have started on my startup journey an year ago and launched a monitoring platform called DevRaven. Unfortunately the product did not takeoff as expected. That story is for another day. But during the course of building the product, I have built several integrations leveraging MQs and Cloud Functions. While building and deploying Cloud Functions for happy paths is easy, I had to monitor logs for failures, build retry mechanisms or manually process failed events, keep instances running to prevent cold start timeouts. It can also get expensive with charges for MQs, server time for running cloud functions etc and costs can be unpredictable. I thought of building a platform where I can build integrations quickly, have the ability to look at incoming/outgoing events, look at logs, retry any failed events etc. And finally, predictable costs for running the infrastructure. cptn.io provides all these capabilities and more. You can build pipelines to integrate with any cloud services, send data from your backend to data warehouses, listen to web hook events etc. The platform can be integrated into any stack by sending events to HTTP end points. Instead of trying to build a business first or launch an open source product under restrictive licenses, the platform will be available under MIT license so any user or customer can use it. There is no ee folder or complex dual licensing and I am also committing to releasing SSO under MIT. The plan is to offer a managed service in the cloud at a later time, accept sponsors for prioritizing features for enterprise customers and charge for enterprise support. It should take less than 5 minutes to get the platform running on your machine. Welcome any feedback, feature requests, PRs and bug reports. https://cptn.io May 8, 2023 at 11:15PM
Show HN: Automatic Domain Verification The Domain Verification protocol stores a DNS TXT record at a DNS name derived from a hashed "verifiable identifier" (email, telephone, DID), enabling anyone that can prove control over the verifiable identifier to prove authority for the domain name, whilst preserving the privacy of the authorised party. Once setup, the record enables automatic domain verification for any service provider. This record could be automatically setup by domain registrars upon domain registration (with registrant opt-in) creating a fast lane for verification with service providers many new small businesses use (eg Google Ads, Facebook, Office365, Dropbox, etc). ===== Quick sidebar: This was originally submitted to HN under the title "Show HN: Make domain verification as easy as verifying an email or phone number" 3 days ago [1]. It was doing really well (#3 on front page) then totally disappeared from front page and went to bottom of page 1 of Show HN. After an email exchange with dang (incredibly helpful as always), he explained that it got flagged with the "overheated discussion detector" and it turned out I caused this by diligently responding to every comment as fast as my fingers would type because I wanted to keep engagement going. Helpfully dang took the flag off it about 12 hours later after our email exchange, but understandably the momentum was lost. So I feel like it kinda got killed, just as it was picking up pace and as the US west coast was waking up. So I am humbly reposting it with a modified description based on the comments of the last post. ===== This is a project I've been working on for a little while and I'm interested in your feedback and point of view. Many of us would have verified a domain name by pasting a string into a DNS TXT record. These methods are currently being discussed and standardised at the IETF [2]. Let's Encrypt's DNS-01 method [3] is probably considered the state of the art. The differences between DNS-01 and Domain Verification protocol are: - DNS-01 requires a new TXT record for each service provider. With Domain Verification Protocol, multiple service providers can use the same record. - Instructions to setup a DNS-01 TXT record are instigated by the service provider, whereas a Domain Verification Protocol record can be setup independently by a user or a domain registrar. They could even pre-populated by a registrar upon domain registration (with registrant opt-in) - There’s no concept of permissions in DNS-01, the act of creating the record gives the user full access for the domain with the service provider. With Domain Verification protocol multiple records can be setup, limited permissions could be setup for different third parties. For example give a marketing agency authentication to claim the domain on social media but nowhere else. I'm still working on licensing but creating these records will always be free. I hope to find service providers that see significant upside in reducing friction for user onboarding that are willing to pay to license it. Worked example: Let's say you want to authenticate the user with the email user@example.com with the domain dvexample.com, these are the steps: a. HASH(user@example.com) -> 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg b. Store Domain Verification record at: 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg._dv.dvexample.com c. TXT record determines permissions and time limit: @dv=1;d=Example user email;e=2025-01-01;s=[seo;email];h=4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg Thanks for taking a look, Elliott 1. https://ift.tt/SigCFuO 2. https://ift.tt/vZPWb3B... 3. https://ift.tt/5fTkb17 https://ift.tt/WnFKdtb May 8, 2023 at 10:36PM
Show HN: Play SineRider, a math puzzle game built by teenagers at Hack Club Play now: https://sinerider.com Watch the trailer: https://www.youtube.com/watch?v=35nDYoIwiA8 Messing with your TI-84 graphing calculator is a rite of passage for every teenager who has ever been bored in a math class. In 2013 I was that teenager, and it gave me an idea for a tiny game about sledding on graphs. This project grew into my white whale, and I spent my twenties trying and failing to finish it alone. I shelved the game when I started working for Hack Club in 2018—until last May, when a few community members took it off the shelf and the project took on a life of its own. After a year of nights and weekends from a global team of 20+ teens from 8+ countries, SineRider enters public beta today! SineRider is literally an infinite universe of function composition puzzles, each with infinite solutions, that range from welcoming for 9th graders to difficult for even the most serious matlab user. And every day we tweet out a fresh one to be solved with your morning coffee. We hope you enjoy playing SineRider as much as we’ve enjoyed making it. And we’re not done! Mobile support, polar coordinates, and a level editor are all on the roadmap. SineRider is a living project, to be continuously built and maintained as free OSS by the Hack Club community: https://ift.tt/7Dti9Ky The team that built the game will try to be in the comments today between high school classes and AP tests. https://ift.tt/7Dti9Ky May 8, 2023 at 06:44PM
Show HN: Filter crowded places (bars, clubs, museums) per day in major cities Free tool to find and filter busy venues based on predicted crowd levels. This way you can find for example busy bars on Wednesday evening, or quiet museums on Sunday morning. It works in most big cities around the world. It makes it easy to find crowded places (or avoid them) when you are unfamiliar with the area. You can filter on days of the week, how busy a place is (quiet, normal, busy), and sort venues based on overall popularity, rating, dwell time, and price. https://ift.tt/q8ZOiuj May 8, 2023 at 12:14AM
Show HN: PostData – The No-Fuss Way to Store and Visualize Your IoT Data Hey everyone, I'm excited to announce the launch of PostData, a new service that simplifies IoT data storage and visualization. As developers, we know how frustrating it can be to set up complicated services like AWS just to store and view our data. That's why we created PostData – to offer a straightforward solution that gets the job done without all the hassle. With PostData, you can easily ingest, store, and visualize your IoT data in just a few clicks. We offer a forever-free plan that allows you to create new public devices with up to 20 metrics and a limit of 1000 messages per device. We also have two paid plans for private devices and higher limits for those who need them. We're looking for beta users to try out our service and provide feedback. So if you're tired of struggling with complicated IoT data storage and visualization tools, give PostData a try and let us know what you think! Thanks for your time, and I look forward to hearing from you. https://postdata.cloud/ May 7, 2023 at 02:39PM
Show HN: PitchPal – Generate startup funding applications using AI Hey HN! PitchPal is an AI-powered tool that simplifies the process of applying to accelerators (YC, Techstars, etc.). Simply describe your startup, select the accelerator you want to apply to, and watch as PitchPal AI auto-magically generates a perfect application for you. Check it out - https://ift.tt/HJONw8R https://ift.tt/HJONw8R May 7, 2023 at 06:12PM
Show HN: ChatGPT powered AI chatbot for your website Introducing Chabotix.com - the no-code chatbot builder powered by ChatGPT! With Chabotix.com, you can easily create a custom chatbot for your website without any coding skills. Simply upload your document and get a link to your chatbot. Your users can then interact with the chatbot, ask questions, and get answers - all without leaving your website! Whether you're a small business owner, a blogger, or a website owner, Chabotix.com is the perfect solution for enhancing your online presence and engaging your audience. Say goodbye to expensive developers and complicated code - with Chabotix.com, you can create a chatbot in minutes and start reaping the benefits of enhanced user engagement and improved customer support. Visit Chabotix.com today and start building your own chatbot! You upload a text file like this one in Chabotix website. Then you receive a personalized link to your AI chat bot. To get your own chabotix, follow simple steps: 1- Sign in to Chabotix.com, 2- Upload your document 3-You get a link to your personalized AI chatbot. Add it to your website. To add chabotix to your website, follow simple steps: 1-Add that Javascript link to your website, before closing html tag. Check this page to see an example. 2- Also use our CSS file to style it. You can also style your Chabotix bot according to your taste by using your own CSS file. Any time if you have any questions, either ask Chabotix directly here or send me a message on Twitter. https://ift.tt/0f4SXiA May 7, 2023 at 02:04PM
Show HN: I made an open source desktop magnifier for demo and presentations I wanted a cool magnifier for my presentations, but couldn't find one (the default windows one was not really usable for my case) So I built one using Vue and Tauri (weird stack for such a tool, huh?). It was a pretty fun little project, hope you guys can have some use. Here's how it works: - When you press the shortcut, it takes a screenshot and store it in a temp folder - It then displays an HTML window and passes the screenshot URL to it - The HTML window has no "decorations" (top bar) and only contains an empty div - This div uses the screenshot as a background and updates the background position based on the cursor location - The window location is also updated according to the cursor location using a requestAnimationFrame (so that it does not get triggered too often) - The wheel event impacts the size of the window, as well as a transform:scale on the background. https://ift.tt/SA3oWly May 6, 2023 at 04:14PM
Show HN: UnionX – GPT4-powered Copilot for Work with Jupyter-style notebooks Hey HN community! We're excited to introduce UnionX, an AI Copilot for Work designed to revolutionize the way you perform research, write long documents, and extract insights. Our platform is perfect for PMs, students, lawyers, finance professionals, and more. UnionX is built on cutting-edge technology, leveraging OpenAI's GPT4 model and Jupyter notebook-style workflows to create a seamless, AI-powered experience. Our block-based editor allows you to easily upload documents, analyze them, and generate new insights or docs with the help of AI. If you don't have ideas about what to do with your data, UnionX provides AI Actions that provide common and AI-generated suggestions to help you transform your documents and deliver your work on time. Some key features include: - Jupyter-style notebooks - Document & spreadsheet editors - AI action & chat blocks - Knowledge bases with large document support - Visualizations (coming soon) - Form filling (coming soon) Give our GPT4-powered beta a try for free and let us know what you think! Check it out: https://unionx.io -David https://www.unionx.io/ May 6, 2023 at 05:44AM
Show HN: Make domain verification as easy as verifying an email or phone number Hi HN, This is a project [1] I've been working on for a little while and I'm interested in your feedback and point of view. Many of us would have verified a domain name by pasting a string into a DNS TXT record. Some providers ask us to store this DNS TXT record at a domain using a DNS label like "_provider" e.g. _provider.yourdomain.com, and some providers ask that you do it at the zone apex (God help us [2]). The Domain Verification protocol stores a DNS TXT record at a DNS name derived from a hashed "verifiable identifier" (think email, telephone, DID), enabling anyone that can prove control over the verifiable identifier to prove authority for the domain name. For example, the domain verification record giving the email address user@example.com authority over the domain dvexample.com can be seen with this terminal command: dig 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg._dv.dvexample.com TXT The record can specify what type of services the authorised party is allowed to use (e.g. SEO, Storage, Advertising) or specify an exact provider (ads.google.com), you can also specify an expiry date. The benefits of this approach are: - Domain owners can grant time-limited, granular permissions for third parties to verify a domain - Every service provider could use the same verification record - Once a domain owner creates a verification record by following instructions from one service provider, that same record could be used by other service providers - Domain registrars could set these records up on behalf of users, perhaps even upon domain registration (with registrant opt-in). This would provide domain registrants with a fast lane for signing up to services like Google Ads, Facebook Ads, Dropbox, whatever I'm still working on licensing but creating these records will always be free. I hope to find service providers that see significant upside in reducing friction for user onboarding that are willing to pay to license it. Worked example: Let's say you want to authenticate the user with the email user@example.com with the domain dvexample.com, these are the steps: 1. HASH(user@example.com) -> 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg 2. Store Domain Verification record at: 4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg._dv.dvexample.com 3. TXT record determines permissions and time limit: @dv=1;d=Example user emali;e=2025-01-01;s=[seo;email];h=4i7ozur385y5nsqoo0mg0mxv6t9333s2rarxrtvlpag1gsk8pg BTW, if you're interested the syntax of that DNS record is a compact data serialisation format I created especially for DNS [3]. Thanks for taking a look, Elliott 1. https://ift.tt/pskgH5n 2. dig target.com TXT 3. https://ift.tt/CXVBGM0 (edit: formatting) https://ift.tt/pskgH5n May 5, 2023 at 05:10PM
Show HN: Hypertune – Visual, functional, statically-typed configuration language Hey HN! I'm Miraan, the founder at Hypertune, and I'm excited to be posting this on HN. Hypertune lets you make your code configurable to let teammates like PMs and marketers quickly change feature flags, in-app copy, pricing plans, etc. It's like a CMS but instead of only letting you set static content, you can insert arbitrary logic from the UI, including A/B tests and ML "loops". I previously built a landing page optimization tool that let marketers define variants of their headline, CTA, cover image, etc, then used a genetic algorithm to find the best combination of them. They used my Chrome extension to define changes on DOM elements based on their unique CSS selector. But this broke when the underlying page changed and didn't work with sites that used CSS modules. Developers hated it. I took a step back. The problem I was trying to solve was making the page configurable by marketers in a way that developers liked. I decided to solve it from first principles and this led to Hypertune. Here's how it works. You define a strongly typed configuration schema in GraphQL, e.g. type Query { page(language: Language!, deviceType: DeviceType!): Page! } type Page { headline: String! imageUrl: String! showPromotion: Boolean! benefits: [String!]! } enum Language { English, French, Spanish } enum DeviceType { Desktop, Mobile, Tablet } Then marketers can configure these fields from the UI using our visual, functional, statically-typed language. The language UI is type-directed so we only show expression options that satisfy the required type of the hole in the logic tree. So for the "headline" field, you can insert a String expression or an If / Else expression that returns a String. If you insert the latter, more holes appear. This means marketers don't need to know any syntax and can't get into invalid states. They can use arguments you define in the schema like "language" and "deviceType", and drop A/B tests and contextual multi-armed bandits anywhere in their logic. We overlay live counts on the logic tree UI so they can see how often different branches are called. You get the config via our SDK which fetches your logic tree once on initialization (from our CDN) then evaluates it locally so you can get flags or content with different arguments (e.g. for different users) immediately with no network latency. So you can use the SDK on your backend without adding extra latency to every request, or on the frontend without blocking renders. The SDK includes a command line tool that auto-generates code for end-to-end type-safety based on your schema. You can also query your config via the GraphQL API. If you use the SDK, you can also embed a build-time snapshot of your logic tree in your app bundle. The SDK initializes from this instantly then fetches the latest logic from the server. So it'll still work in the unlikely event the CDN is down. And on the frontend, you can evaluate flags, content, A/B tests, personalization logic, etc, instantly on page load without any network latency, which makes it compatible with static Jamstack sites. I started building this for landing pages but realized it could be used for configuring feature flags, in-app content, translations, onboarding flows, permissions, rules, limits, magic numbers, pricing plans, backend services, cron jobs, etc, as it's all just "code configuration". This configuration is usually hardcoded, sprawled across json or yaml files, or in separate platforms for feature flags, content management, A/B testing, pricing plans, etc. So if a PM wants to A/B test new onboarding content, they need a developer to write glue code that stitches their A/B testing tool with their CMS for that specific test, then wait for a code deployment. And at that point, it may not be worth the effort. The general problem with having separate platforms is that all this configuration naturally overlaps. Feature flags and content management overlap with A/B testing and analytics. Pricing plans overlap with feature flags. Keeping them separate leads to inflexibility and duplication and requires hacky glue code, which defeats the purpose of configuration. I think the solution is a flexible, type-safe code configuration platform with a strongly typed schema, type-safe SDKs and APIs, and a visual, functional, statically-typed language with analytics, A/B testing and ML built in. I think this solves the problem with having separate platforms, but also results in a better solution for individual use cases and makes new use cases possible. For example, compared specifically to other feature flag platforms, you get auto-generated type-safe code to catch flag typos and errors at compile-time (instead of run-time), code completion and "find all references" in your IDE (no figuring out if a flag is in kebab-case or camelCase), type-safe enum flags you can exhaustively switch on, type-safe object and list flags, and a type-safe logic UI. You pass context arguments like userId, email, etc, in a type-safe way too with compiler errors if you miss or misspell one. To clean up a flag, you remove it from your query, re-run code generation and fix all the type errors to remove all references. The full programming language under the hood means there are no limits on your flag logic (you're not locked into basic disjunctive normal form). You can embed a build-time snapshot of your flag logic in your app bundle for guaranteed, instant initialization with no network latency (and keep this up to date with a commit webhook). And all your flags are versioned together in a single Git history for instant rollbacks to known good states (no figuring out what combination of flag changes caused an incident). There are other flexible configuration languages like Dhall (discussed here: https://ift.tt/PBGxelm ), Jsonnet (discussed here: https://ift.tt/Q7e6THj ) and Cue (discussed here: https://ift.tt/CuTyt37 ). But they lack a UI for nontechnical users, can't be updated at run-time and don't support analytics, A/B testing and ML. I was actually going to start with a basic language that had primitives (Boolean, Int, String), a Comparison expression and an If / Else. Then users could implement the logic for each field in the schema separately. But then I realized they might want to share logic for a group of fields at the object level, e.g. instead of repeating "if (deviceType == Mobile) { primitiveA } else { primitiveB }" for each primitive field separately, they could have the logic once at the Page level: "if (deviceType == Mobile) { pageObjectA } else { pageObjectB }". I also needed to represent field arguments like "deviceType" in the language. And I realized users may want to define other variables to reuse bits of logic, like a specific "benefit" which appears in different variations of the "benefits" list. So at this point, it made sense to build a full, functional language with Object expressions (that have a type defined in the schema) and Function, Variable and Application expressions (to implement the lambda calculus). Then all the configuration can be represented as a single Object with the root Query type from the schema, e.g. Query { page: f({ deviceType }) => switch (true) { case (deviceType == DeviceType.Mobile) => Page { headline: f({}) => "Headline A" imageUrl: f({}) => "Image A" showPromotion: f({}) => true benefits: f({}) => ["Ben", "efits", "A"] } default => Page { headline: f({}) => "Headline B" imageUrl: f({}) => "Image B" showPromotion: f({}) => false benefits: f({}) => ["Ben", "efits", "B"] } } } So each schema field is implemented by a Function that takes a single Object parameter (a dictionary of field argument name => value). I needed to evaluate this logic tree given a GraphQL query that looks like: query { page(deviceType: Mobile) { headline showPromotion } } So I built an interpreter that recursively selects the queried parts of the logic tree, evaluating the Functions for each query field with the given arguments. It ignores fields that aren't in the query so the logic tree can grow large without affecting query performance. The interpreter is used by the SDK, to evaluate logic locally, and on our CDN edge server that hosts the GraphQL API. The response for the example above would be: { "__typename": "Query", "page": { "__typename": "Page", "headline": "Headline A", "showPromotion": true } } Developers were concerned about using the SDK on the frontend as it could leak sensitive configuration logic, like lists of user IDs, to the browser. To solve this, I modified the interpreter to support "partial evaluation". This is where it takes a GraphQL query that only provides some of the required field arguments and then partially evaluates the logic tree as much as possible. Any logic which can't be evaluated is left intact. The SDK can leverage this at initialization time by passing already known arguments (e.g. the user ID) in its initialization query so that sensitive logic (like lists of user IDs) are evaluated (and eliminated) on the server. The rest of the logic is evaluated locally by the SDK when client code calls its methods with the remaining arguments. This also minimizes the payload size sent to the client and means less logic needs to be evaluated locally, which improves both page load and render performance. The interpreter also keeps a count of expression evaluations as well as events for A/B tests and ML loops, which are flushed back to Hypertune in the background to overlay live analytics on the logic tree UI. It's been a challenge to build a simple UI given there's a full functional language under the hood. For example, I needed to build a way for users to convert any expression into a variable in one click. Under the hood, to make expression X a variable, we wrap the parent of X in a Function that takes a single parameter, then wrap that Function in an Application that passes X as an argument. Then we replace X in the Function body with a reference to the parameter. So we go from: if (X) { Y } else { Z } to ((paramX) => if (paramX) { Y } else { Z } )(X) So a variable is just an Application argument that can be referenced in the called Function's body. And once we have a variable, we can reference it in more than one place in the Function body. To undo this, users can "drop" a variable in one click which replaces all its references with a copy of its value. Converting X into a variable gets more tricky if the parent of X is a Function itself which defines parameters referenced inside of X. In this case, when we make X a variable, we lift it outside of this Function. But then it doesn't have access to the Function's parameters anymore. So we automatically convert X into a Function itself which takes the parameters it needs. Then we call this new Function where we originally had X, passing in the original parameters. There are more interesting details about how we lift variables to higher scopes in one click but that's for another post. Thanks for reading this far! I'm glad I got to share Hypertune with you. I'm curious about what use case appeals to you the most. Is it type-safe feature flags, in-app content management, A/B testing static Jamstack sites, managing permissions, pricing plans or something else? Please let me know any thoughts or questions! https://ift.tt/ie36jIw May 4, 2023 at 08:31PM