Monday, April 25, 2022

Show HN: Badkeys.info – checking cryptographic keys for known vulnerabilities https://ift.tt/X3uD70h

Show HN: Badkeys.info – checking cryptographic keys for known vulnerabilities https://badkeys.info/ April 25, 2022 at 08:51PM

Show HN: Voxel Lunar Lander in the Browser https://ift.tt/RfuNT4k

Show HN: Voxel Lunar Lander in the Browser https://ift.tt/iMEs4AS April 25, 2022 at 05:36PM

Show HN: M3O – Universal Public API Interface https://ift.tt/hgDRI6H

Show HN: M3O – Universal Public API Interface Hey all, I'm Asim Aslam, the founder of M3O, a curated catalog of APIs that provides simple abstractions for the most common API use cases. The idea is to create a single place to explore, discover and consume public APIs as higher level building blocks. Most of the time I don’t use all the features of an API and I assume most devs don't either, so picking and choosing the common patterns, abstracting it away and surfacing a new building block is useful. For example, Twilio has a lot of APIs but I only care about SMS. Even then I just want a quick way to send it. So stripping it all away results in something that's one endpoint and 3 fields (from, to and message). Another example is something like email. There are services like sendgrid that provide a really feature rich experience for email but I’m just looking for something simple that will let me send plain text or html. There are a number of API marketplaces out there, but we’re doing something different—our goal is to improve productivity. For example, RapidAPI has thousands of APIs, but there’s a lot of duplication. It’s overwhelming for developers. Choice is the enemy of productivity. AWS, on the other hand, focused on a curated catalog of services where each focuses on a specific problem. We feel the same: from an API perspective you only need one of each building block. You only need one SMS, Email or Geocoding service. My obsession with this problem goes back to working as an SRE at Google in 2011, seeing how the internal platform and APIs were being used by teams. I then worked at a ride hailing startup called Hailo where we got to build something similar, and experience the velocity of development in shipping products on top of simple, easily discovered APIs. I spent the next few years bootstrapping an open source project called Micro, trying to get people to standardize their API development to reach this goal. Ultimately it took raising funding to take a real shot at it. After seeing the productivity Google unlocked and what Hailo could have done with their platform, it was clear it could and should be a product: a single way to consume APIs with one platform, one account and one framework. Our goal is to build an API catalog that can act as the building blocks for most use cases, and then double down on services that have a lot of demand so we can improve the features and reliability. In the wild, every API looks different, the docs are different, you have to figure out if there's client libraries or not. We unify all that, so everything looks and feels the same. All our docs are generated based on OpenAPI specs, and we code generate examples/client libraries for JS, Go, Dart and the CLI. It means you only ever need one client to access all these APIs. Unifying API development and consumption requires a lot of resources to do at scale, hence its only happening inside fast growing startups and large tech cos. There are a lot of barriers to entry. Getting started isn't easy. Our approach has been to first nail API development for ourselves and then focus on API consumption by end users— ultimately we want to let anyone offer APIs on our platform. That requires enough large scale distribution and inbound traffic to make an attractive proposition to developers. We've spent a year building the product with a lot of feedback on what worked and what didn't. We’ve signed up 8000 people, served 5M API requests and have 60+ APIs on the platform. On billing: we're still figuring it out and would like feedback. It started as a free product, then moved into per request pricing. Unfortunately that's hard to scale without a lot of volume and it felt like people were more used to subscriptions for SaaS products so that's the route we've gone. Anyway that's us, hope you like the idea and try it out: https://m3o.com . Cheers Asim https://m3o.com?show=hn April 25, 2022 at 03:39PM

Show HN: I'm making a dynamic language in Rust https://ift.tt/JIxRljO

Show HN: I'm making a dynamic language in Rust https://ift.tt/lfAdGk3 An implementation of a dynamic programming language in Rust. Includes: Parser/Compiler, REPL, Virtual Machine, Bytecode Disassembler This started out as a learning project to teach myself Rust. It has grown into a decently substantial piece of software and I've learned quite a bit in the process! Some neat things: + A garbage collector that can store dynamically sized types without any double-indirection (i.e. I have my own Box implementation with manual alloc/dealloc) + The smart pointer used to reference GCed data is a thin pointer. The ptr metadata needed for DSTs is stored in the GC allocation itself, so that the GC smart pointer is just a single usize wide. This allows me to keep the core value enum Variant down to 16 bytes (8 bytes for data, the enum discriminant, and some padding). + The GC also supports weak references! + Statically dispatched type object model using a newtype wrapper and Rust's declarative macros. Ok, what that means is that I have a MetaObject trait that I can use to easily add new data types and define the behavior for specific types. Similar idea to Python's PyTypeObject though very different in implementation. However, I don't resort to dynamic dispatch or trait objects despite working with dynamically type data. Instead, I have a newtype wrapper over the core value enum Variant that statically dispatches to each of the enum branches! And then a few macros that minimize the boilerplate required if I want to add a new branch to Variant or a new method to MetaObject (just a single line in each case). + Different string representations! This was inspired by the flexstr crate. Strings that are short enough to fit inside a Variant are "inlined" directly in the value. Longer strings are either GCed or interned in a thread-local string table. All identifiers are interned. + An efficient implementation of closures inspired by Lua's upvalues. The language is still pretty WIP. I'm planning to add an import system, a small standard library, and a few other things (Yes, the name might not be the best, being also used by a well-known ReST docs generator, I'll take suggestions. I do like the name though, both as a reference to the mythological creature and the cat :D) April 25, 2022 at 05:16AM

Sunday, April 24, 2022

Show HN: Come&try Decision Intelligence version “Agar“ environment, Gobigger https://ift.tt/C5c6OU0

Show HN: Come&try Decision Intelligence version “Agar“ environment, Gobigger https://ift.tt/JX1blTx April 24, 2022 at 05:26PM

Show HN: I built a dashboard of official data ahead of French elections https://ift.tt/dtaV3K7

Show HN: I built a dashboard of official data ahead of French elections https://ift.tt/ckDGzeq April 24, 2022 at 04:14PM

Show HN: My typical working day as Software Engineer https://ift.tt/1mHw83O

Show HN: My typical working day as Software Engineer https://ift.tt/NhulpfU April 24, 2022 at 01:14PM

Show HN: Tablr – Supabase with AI Features https://ift.tt/uZsg6oX

Show HN: Tablr – Supabase with AI Features https://www.tablr.dev/ June 30, 2025 at 04:35AM