Featured post

INTERVIEW WITH frankie(n)

 https://whatsmusic.de/frankien-interview-creating-the-singer-songwriter-genre-standing-against-racism-and-a-memorable-open-mic-episode/

Showing posts with label Hacker News. Show all posts
Showing posts with label Hacker News. Show all posts

Monday, May 8, 2023

Show HN: AI Poetry Contest https://ift.tt/3uznvO8

Show HN: AI Poetry Contest Hi HN! Me and my buddy made this in a weekend as an experiment in 1. building something quickly and putting it out there and 2. using AI in an interesting way; in this case a poetry judge. Our “judge” isn’t perfect, but the hope is that at least it’s a relatively fair system that everyone can be sure evaluates their work. Anyway, we wanted to see what the lovely people of HN think of it. Some background on the idea; I like poetry and thought it would be cool if there was a big competition with a large financial incentive that scales with the number of participants. Using AI as a judge allows us to handle any number of submissions in a consistent and fair way. It also opens up the competition to poetry written in other languages, although for now we’re only promoting in the US. Happy to answer any questions! Also any feedback is much appreciated, thanks! https://ift.tt/CJl5vy6 May 7, 2023 at 11:21PM

Sunday, May 7, 2023

Show HN: Git Hooting https://ift.tt/oqkNrH1

Show HN: Git Hooting 00's called, they want their RSS feeds back. I was looking at my growing Github gist collection when a sudden urge to blog and make a name for myself "by not programming" struck. Part way into implementing my oh so special static website generator it occurred to me that, quite frankly, Github gists is a pretty decent publishing platform. I mean, it gives you reasonably extended markdown with previews, heck I could even write in org-mode, has comments, follower - followee relationship, extended search with filters, check out locally and push your edits. Did someone say "edit button"? Thus the idea behind https://git.ht was born: collect gists into RSS feeds and force everyone, kicking and screaming, into the good old days when Google Reader was king. Well, it's a bit more than that now. But basically, you create a gist or grab an old one, name its main file `hoot.md` or `hoot.org` if org-mode is your poison, make it public and voila. These "hoots" make it into your RSS feed and will get permalinks with social graph metatags, so you get nice previews when you share them on Twitter and such. To take it for a spin: - pick a subdomain e.g. foo.git.ht, - navigate you browser there, - login with Github. I still consider it alpha, but it should work. Report any issues as you would normally on Github https://ift.tt/U7EPKmZ . Thank you https://git.ht May 7, 2023 at 12:29AM

Saturday, May 6, 2023

Show HN: Telegram Bot for Surf Conditions https://ift.tt/JEPZzHt

Show HN: Telegram Bot for Surf Conditions I got tired of checking different weather apps every time my surf group wanted to go out. This bot shares the current conditions whenever you message /conditions to the group! https://ift.tt/x4KXbkL May 5, 2023 at 09:01PM

Friday, May 5, 2023

Show HN: Hypertune – Visual, functional, statically-typed configuration language https://ift.tt/GrBfwaE

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/w8Kzx5H ), Jsonnet (discussed here: https://ift.tt/MivxAS1 ) and Cue (discussed here: https://ift.tt/0N2V8ou ). 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/AkaRgEu May 4, 2023 at 03:01PM

Thursday, May 4, 2023

Show HN: Simple TODO with tag based filtering https://ift.tt/QGXFm8v

Show HN: Simple TODO with tag based filtering A custom app I made quickly to better represent how I work. I have 1 long list of tasks from different projects I can easily see any time. Throughout the day I focus on the different projects by filtering them through tags. Does anyone else manage multiple projects like me? What do you use to focus on the different projects? https://ift.tt/nlkjumB May 3, 2023 at 10:26PM

Show HN: The worlds most influencial people dance in sync using AI https://ift.tt/1CrLBMk

Show HN: The worlds most influencial people dance in sync using AI I made 25 of the worlds most influencial people dance in sync using AI. Worked on this art project all day, it would make my day if it blew up! https://dance.notpink.xyz May 3, 2023 at 09:26PM

Wednesday, May 3, 2023

Show HN: Stickdeck – Turn your Steam Deck as a Bluetooth joystick on PC https://ift.tt/9kbUIHZ

Show HN: Stickdeck – Turn your Steam Deck as a Bluetooth joystick on PC https://ift.tt/If38EgP May 3, 2023 at 02:16AM

Tuesday, May 2, 2023

Sunday, April 30, 2023

Show HN: Open-Source Implementation of John Conway's Mathy Game of Hackenbush https://ift.tt/cGPuhzk

Show HN: Open-Source Implementation of John Conway's Mathy Game of Hackenbush Hackenbush is a fascinating game that led to leaping developments in combinatorial game theory. It caused the discovery of the surreal numbers - an absolutely, incredibly, tremendously large field of numbers. To help it find more popularity, I made an open-source version, mainly for mobile platforms. https://ift.tt/kAsV73f April 30, 2023 at 06:11AM

Show HN: ChatGPT on Your Watch https://ift.tt/cF07gTw

Show HN: ChatGPT on Your Watch https://ift.tt/04mUePx April 29, 2023 at 05:51PM

Friday, April 28, 2023

Show HN: Code-Narrator: Automating Documentation with GPT-4 https://ift.tt/XhYqONk

Show HN: Code-Narrator: Automating Documentation with GPT-4 As a solo developer on a sizeable project, I found myself facing the challenge of creating documentation, a task I admittedly do not enjoy. Fortunately, ChatGPT arrived just in time. After experimenting with it, I discovered that it generates high-quality documentation for code files, even better than what I could produce manually. This realization led me to develop Code-Narrator, a client that simplifies the documentation process. Code-Narrator ( https://ift.tt/gIXVare ) utilizes GPT-4 to analyze your code files and automatically generate documentation. The tool is language-agnostic and has been tested with TypeScript, GraphQL, Solidity, C#, Kotlin, and more. As long as the files are in plain text, Code-Narrator should work seamlessly. The primary goal of Code-Narrator is to ease the documentation process for developers, transforming them from writers to editors. While developers are still responsible for verifying the accuracy of the generated documentation, the initial writing is handled by the AI. If GPT-4 produces incorrect documentation, it typically indicates that the code needs clarification, or a brief comment should be added to guide the AI. A general rule of thumb is that if GPT-4 cannot comprehend the code, it may be too complex for the next developer. However, Code-Narrator is constrained by GPT-4's 8192-token limit, which can be problematic for extensive code files. Those with access to the gpt-4-32k variant should expect better results. Upon its first run, Code-Narrator creates a configuration file by analyzing your project, and then prompts you to review it for accuracy. The key configuration aspects include the "include," "config_files," and "source_path" settings. In its second run, Code-Narrator generates documentation for your entire project. The process is time-consuming, taking approximately 45 minutes to complete from scratch. However, the tool is: - Flexible, allowing for the creation of custom pages such as How-To guides, tutorials, FAQs, READMEs, and other bespoke content. - Multilingual, supporting 25+ languages (as many as GPT-4 supports). - Versatile, capable of generating documentation in various formats (LaTeX, HTML, with the default being Markdown). For a demonstration on transforming a few lines into a How-To guide, watch this video: https://www.youtube.com/watch?v=uJtVCUOTkvw . Remember that brevity is key, as the more concise the input, the more GPT-4 can contribute. Code-Narrator also supports custom plugins, with tutorials available at https://ift.tt/67Hclw0... . In terms of size and cost, Code-Narrator consists of 45 files and 1712 lines of code. The total cost of generating documentation for the entire project is approximately $2.5, a significant savings compared to manual documentation. During the development of Code-Narrator, I noticed several benefits: - Improved function naming: Reading the generated documentation led me to revise vague or overly general function names, resulting in better code and documentation. - Concise input: Focusing on reducing the size of the input file (liquid) became a fun challenge, helping to optimize the process. - Enjoyable interaction: Working with ChatGPT proved more enjoyable than manually writing documentation, and the more I experimented, the better the results. - Minimal input for tutorials: I was pleasantly surprised by how little input was required to create How-To guides and tutorials using GPT-4. - Encouragement to refactor: The 8K token limitation may be restrictive, but it also encourages developers to refactor their code for improved readability and structure. As a prototype and proof of concept, Code-Narrator has some limitations. I'm excited to see where Code-Narrator goes from here, and your feedback is invaluable. Thank you for taking the time to explore this project! https://ift.tt/gIXVare April 28, 2023 at 10:19AM

Thursday, April 27, 2023

Show HN: Web app turns your text into p5js (graphics) code using GPT https://ift.tt/2axdnOP

Show HN: Web app turns your text into p5js (graphics) code using GPT Text → GPT → p5 | An app that turns your text prompt into p5js code (computer graphics) using OpenAI's GPT and displays it. Under the hood: Nextjs, React, CodeMirror, p5js I got into programming through arduino and processing. I've always thought about how to lower the barriers for people to start programming. With GPT, we can now turn plain text into code, allowing people to start coding without knowing code. OpenAI APIs don't come cheap! If you like the project, consider sponsoring access for others here: https://ift.tt/crvjX6F Cheers! https://ift.tt/N9KTG3g April 27, 2023 at 03:28AM

Show HN: I built an online programming language https://ift.tt/E4vTV0t

Show HN: I built an online programming language https://ift.tt/jD4nkdc April 27, 2023 at 12:38AM

Wednesday, April 26, 2023

Show HN: Turn your screenshots into beautifual posts https://ift.tt/KTM0AvP

Show HN: Turn your screenshots into beautifual posts https://ift.tt/EXsLOtH April 26, 2023 at 03:43AM

Show HN: Use ChatGPT on a 2 Dimensional Interface https://ift.tt/pOQz9b4

Show HN: Use ChatGPT on a 2 Dimensional Interface I build ChatGPT-2D with the idea to enable people to branch AI conversations interactively, pose contextual questions based on AI response and visualize your entire dialogue on a 2 dimensional map interface. What do you think? https://ift.tt/UuZycqz April 26, 2023 at 02:26AM

Show HN: Neat, the Minimalist CSS Framework https://ift.tt/NXbIqZu

Show HN: Neat, the Minimalist CSS Framework Today I fixed a couple little bugs and released a new version of my minimalist CSS framework. I built this to scratch my own itch and I've been using it for a few years as the starting point for most of my own websites. I noticed I hadn't shared this with HN for about 18 months (5 or 6 minor version changes) so I thought it might be okay to do that now. Edit: Err, I missed a post from 7 months ago. Previous Posts: https://ift.tt/pJE6SHX (7 months ago) https://ift.tt/4MoezpC (Sept 25, 2021) https://ift.tt/GdgUNAq (March 1, 2021) https://ift.tt/lAq6nz2 (January 20, 2021) https://ift.tt/QGsnqXM (May 28, 2020) https://ift.tt/7AsQd1h April 26, 2023 at 12:56AM

Show HN: ChatGPT Code Assistant https://ift.tt/Frv4yuJ

Show HN: ChatGPT Code Assistant ChatGPT is excellent but you need to do a lot of copy and pasting for using it as a coding assistant. I created a simple plugin to give ChatGPT access to the web for documentation and also to the local file system. https://ift.tt/HS9ryoO April 26, 2023 at 12:28AM

Monday, April 24, 2023

Show HN: Q&A Bot talking in Hinglish about PDFs https://ift.tt/9DLBpRa

Show HN: Q&A Bot talking in Hinglish about PDFs Such an amazing time to build applications that can actually make a difference in everyday lives! We've built a simple Q&A bot that can answer your questions in 𝐇𝐢𝐧𝐠𝐥𝐢𝐬𝐡 about any pdfs, wrapped it with a simple command 𝐥𝐜-𝐬𝐞𝐫𝐯𝐞 𝐝𝐞𝐩𝐥𝐨𝐲 𝐩𝐝𝐟_𝐪𝐧𝐚, your bot is now ready to be part of your application stack, I've uploaded a demo where I talk to the bot in half-hindi & half-english about an insurance document - https://twitter.com/_deepankarm_/status/1650447522111029248 https://ift.tt/dnZjM7S April 24, 2023 at 10:37AM

Show HN: Smart Social News Service (In Development) https://ift.tt/nJgHv8y

Show HN: Smart Social News Service (In Development) https://ift.tt/VWkUoY3 April 24, 2023 at 09:01AM

Show HN: ChatGPT-Powered AI Girlfriend App – Experience the Future of Romance https://ift.tt/b5xawX4

Show HN: ChatGPT-Powered AI Girlfriend App – Experience the Future of Romance https://ift.tt/HIraJB6 April 23, 2023 at 06:24PM