Friday, July 19, 2024

It’s Getting Easier to Use Parking Meters – Learn How and Explore their History

It’s Getting Easier to Use Parking Meters – Learn How and Explore their History
By Pamela Johnson and Kelley Trahan

Our staff are installing thousands of these new single-space meters across the city. They'll make it easier to pay for parking. San Francisco has 27,000 metered parking spaces, and we're working hard to upgrade every single one. The goal: replace outdated technology with meters that are easier to use. It's all part of our Parking Meter Replacement Project. We'll share how the upgrades help and look back on the history of parking meters in the city. For even more details, you can check out our Illustrated History of San Francisco’s Parking Meters webpage. Upgrading thousands of meters: how the...



Published July 18, 2024 at 05:30AM
https://ift.tt/eYd0j92

Show HN: How we leapfrogged traditional vector based RAG with a 'language map' https://ift.tt/3KFdsy8

Show HN: How we leapfrogged traditional vector based RAG with a 'language map' TL;DR: Vector-based RAG performs poorly for many real-world applications like codebase chats, and you should consider 'language maps'. Part of our mission at Mutable.ai is to make it much easier for developers to build and understand software. One of the natural ways to do this is to create a codebase chat, that answer questions about your repo and help you build features. It might seem simple to plug in your codebase into a state-of-the-art LLM, but LLMs have two limitations that make human-level assistance with code difficult: 1. They currently have context windows that are too small to accommodate most codebases, let alone your entire organization's codebases. 2. They need to reason immediately to answer any questions without thinking through the answer "step-by-step." We built a chat sometime a year ago based on keyword retrieval and vector embeddings. No matter how hard we tried, including training our own dedicated embedding model, we could not get the chat to get us good performance. Here is a typical example: https://ift.tt/IeFHCKf... If you ask how to do quantization in llama.cpp the answers were oddly specific and seemed to pull in the wrong context consistently, especially from tests. We could, of course, take countermeasures, but it felt like a losing battle. So we went back to step 1, let’s understand the code, let’s do our homework, and for us, that meant actually putting an understanding of the codebase down in a document — a Wikipedia-style article — called Auto Wiki. The wiki features diagrams and citations to your codebase. Example: https://ift.tt/AcqDyH0 This wiki is useful in and of itself for onboarding and understanding the business logic of a codebase, but one of the hopes for constructing such a document was that we’d be able to circumvent traditional keyword and vector-based RAG approaches. It turns out using a wiki to find context for an LLM overcomes many of the weaknesses of our previous approach, while still scaling to arbitrarily large codebases: 1. Instead of context retrieval through vectors or keywords, the context is retrieved by looking at the sources that the wiki cites. 2. The answers are based both on the section(s) of the wiki that are relevant AND the content of the actual code that we put into memory — this functions as a “language map” of the codebase. See it in action below for the same query as our old codebase chat: https://ift.tt/IeFHCKf... https://ift.tt/IeFHCKf... The answer cites it sources in both the wiki and the actual code and gives a step by step guide to doing quantization with example code. The quality of the answer is dramatically improved - it is more accurate, relevant, and comprehensive. It turns out language models love being given language and not a bunch of text snippets that are nearby in vector space or that have certain keywords! We find strong performance consistently across codebases of all sizes. The results from the chat are so good they even surprised us a little bit - you should check it out on a codebase of your own, at https://wiki.mutable.ai , which we are happy to do for free for open source code, and starts at just $2/mo/repo for private repos. We are introducing evals demonstrating how much better our chat is with this approach, but were so happy with the results we wanted to share with the whole community. Thank you! https://twitter.com/mutableai/status/1813815706783490055 July 19, 2024 at 12:10AM

Thursday, July 18, 2024

Show HN: SQLite Transaction Benchmarking Tool https://ift.tt/xTm7eUN

Show HN: SQLite Transaction Benchmarking Tool I wanted to make my own evaluation of what kind of performance I could expect from SQLite on a server and investigate the experimental `BEGIN CONCURRENT` branch vs the inbuilt `DEFERRED` and `IMMEDIATE` behaviors. Explanatory blog post: https://ift.tt/pVezU9E https://ift.tt/62Ee9Dd July 18, 2024 at 03:14AM

Show HN: Product Hunt for Music https://ift.tt/NOTqSct

Show HN: Product Hunt for Music https://tracklist.it/ July 18, 2024 at 01:01AM

Show HN: Blitzping – A far faster nping/hping3 SYN-flood alternative with CIDR https://ift.tt/RfdaEeh

Show HN: Blitzping – A far faster nping/hping3 SYN-flood alternative with CIDR I found hping3 and nmap's nping to be far too slow in terms of sending individual, bare-minimum (40-byte) TCP SYN packets; other than inefficient socket I/O, they were also attempting to do far too much unnecessary processing in what should have otherwise been a tight execution loop. Furthermore, none of them were able to handle CIDR notations (i.e., a range of IP addresses) as their source IP parameter. Being intended for embedded devices (e.g., low-power MIPS/Arm-based routers), Blitzping only depends on standard POSIX headers and C11's libc (whether musl or gnu). To that end, even when supporting CIDR prefixes, Blitzping is significantly faster compared to hping3, nping, and whatever else that was hosted on GitHub. Here are some of the performance optimizations specifically done on Blitzping: * Pre-Generation : All the static parts of the packet buffer get generated once, outside of the sendto() tightloop; * Asynchronous : Configuring raw sockets to be non-blocking by default; * Multithreading : Polling the same socket in sendto() from multiple threads; and * Compiler Flags : Compiling with -Ofast, -flto, and -march=native (though these actually had little effect; by this point, the bottleneck is on the Kernel's own sendto() routine). Shown below are comparisons between the three software across two CPUs (more details at the GitHub repository): # Quad-Core "Rockchip RK3328" CPU @ 1.3 GHz. (ARMv8-A) # +--------------------+--------------+--------------+---------------+ | ARM (4 x 1.3 GHz) | nping | hping3 | Blitzping | +--------------------+ -------------+--------------+---------------+ | Num. Instances | 4 (1 thread) | 4 (1 thread) | 1 (4 threads) | | Pkts. per Second | ~65,000 | ~80,000 | ~275,000 | | Bandwidth (MiB/s) | ~2.50 | ~3.00 | ~10.50 | +--------------------+--------------+--------------+---------------+ # Single-Core "Qualcomm Atheros QCA9533" SoC @ 650 MHz. (MIPS32r2) # +--------------------+--------------+--------------+---------------+ | MIPS (1 x 650 MHz) | nping | hping3 | Blitzping | +----------------------+------------+--------------+---------------+ | Num. Instances | 1 (1 thread) | 1 (1 thread) | 1 (1 thread) | | Pkts. per Second | ~5,000 | ~10,000 | ~25,000 | | Bandwidth (MiB/s) | ~0.20 | ~0.40 | ~1.00 | +--------------------+--------------+--------------+---------------+ I tested Blitzping against both hpign3 and nping on two different routers, both running OpenWRT 23.05.03 (Linux Kernel v5.15.150) with the "masquerading" option (i.e., NAT) turned off in firewall; one device was a single-core 32-bit MIPS SoC, and another was a 64-bit quad-core ARMv8 CPU. On the quad-core CPU, because both hping3 and nping were designed without multithreading capabilities (unlike Blitzping), I made the competition "fairer" by launching them as four individual processes, as opposed to Blitzping only using one. Across all runs and on both devices, CPU usage remained at 100%, entirely dedicated to the currently running program. Finally, the connection speed itself was not a bottleneck: both devices were connected to an otherwise-unused 200 Mb/s (23.8419 MiB/s) download/upload line through a WAN ethernet interface. It is important to note that Blitzping was not doing any less than hping3 and nping; in fact, it was doing more. While hping3 and nping only randomized the source IP and port of each packet to a fixed address, Blitzping randomized not only the source port but also the IP within an CIDR range---a capability that is more computionally intensive and a feature that both hping3 and nping lacked in the first place. Lastly, hping3 and nping were both launched with the "best-case" command-line parameters as to maximize their speed and disable runtime stdio logging. https://ift.tt/D4f2Bjb July 15, 2024 at 02:28PM

A New Transportation Option is Coming to the Bayview – Learn How to Get Involved

A New Transportation Option is Coming to the Bayview – Learn How to Get Involved
By Justin Horng

Students learning about the Bayview Community Based Transportation Plan project. The new Bayview Shuttle is part of this work. We’re one step closer to bringing an on-demand shuttle to the Bayview early this fall. The SFMTA Board of Directors recently approved our vendor contract for the “Our Community, Our Shuttle” Bayview Shuttle Program. It will include the new shuttle and a range of other resources. The pilot program aims to address decades of disinvestment by providing services that are directly recommended by the community. After the Board’s decision, we can now move forward with Via...



Published July 17, 2024 at 05:30AM
https://ift.tt/fa7helg

Wednesday, July 17, 2024

How We’re Educating Scooter Riders to Improve Safety for Everyone

How We’re Educating Scooter Riders to Improve Safety for Everyone
By Nervana Fadle

From our new scooter safety video: Scooter riding is joyful if we all ride safely. We’re excited to announce the launch of phase two of our scooter safety campaign! Education is at the heart of this video campaign. We’re reminding scooter riders about a range of tips in order to improve safety for everybody. Riding a scooter safely can still be a fun and joyful experience. And everyone can feel more comfortable getting where they need to go. We’ll share more about the campaign and the safety tips it features. We’ll also cover what we’re doing year-round to support safe scooter riding and why...



Published July 16, 2024 at 05:30AM
https://ift.tt/ocBsSp4

Show HN: Do You Know RGB? https://ift.tt/t8kUpbO

Show HN: Do You Know RGB? https://ift.tt/OWhvmMT June 24, 2025 at 01:49PM