(date: 2024-12-10 07:09:07)
date: 2024-12-10, from: 404 Media Group
Congress is asking Apple, Google, Microsoft, and other big tech companies why they can’t get their deepfake problem under control.
https://www.404media.co/congress-pushes-apple-to-remove-deepfake-apps-after-404-media-investigation/
@Dave Winer’s linkblog (date: 2024-12-10, from: Dave Winer’s linkblog)
Yesterday I did a podcast about why it's important to choose humble names for groups of developers working on open formats.
https://shownotes.scripting.com/scripting/2024/12/09/weAllOwnAndNoOneOwnsPodcasting.html
@Dave Winer’s linkblog (date: 2024-12-10, from: Dave Winer’s linkblog)
The social web is much bigger than ActivityPub.
https://socialwebfoundation.org/2024/11/01/fosdem-2025-social-web-devroom-call-for-participation/
date: 2024-12-10, updated: 2024-12-10, from: One Foot Tsunami
https://onefoottsunami.com/2024/12/10/golden-artches/
date: 2024-12-10, from: 404 Media Group
Fog Data Science is a location tracking company that takes data harvested from smartphones and makes it accessible to cops. A document obtained by 404 Media shows the company explicitly says it will use doctors visits to unmask a target if needed.
https://www.404media.co/location-data-firm-offers-to-help-cops-track-targets-via-doctor-visits/
date: 2024-12-10, from: Liliputing
The M8S Twin Lake mini PC features a 6-watt Intel N150 quad-core processor, 12GB of LPDDR5-4800 RAM, and an M.2 slot for solid state storage. It also features plenty of ports, including two Gigabit Ethernet ports, two HDMI ports, and a DisplayPort, allowing you to use the computer as a networking device, digital signage system, or multimedia PC, […]
The post This 3.4 inch mini PC has an Intel N150 processor, 2 LAN ports, and supports 3 displays appeared first on Liliputing.
@Dave Winer’s linkblog (date: 2024-12-10, from: Dave Winer’s linkblog)
The creator of ChatGPT's voice wants to build the tech from 'Her,' minus the dystopia.
date: 2024-12-10, from: O’Reilly Radar
Alibaba’s latest model, QwQ-32B-Preview, has gained some impressive reviews for its reasoning abilities. Like OpenAI’s GPT-4 o1,1 its training has emphasized reasoning rather than just reproducing language. That seemed like something worth testing out—or at least playing around with—so when I heard that it very quickly became available in Ollama and wasn’t too large to […]
https://www.oreilly.com/radar/generative-logic/
date: 2024-12-10, from: Gary Marcus blog
Exactly as I warned in February
https://garymarcus.substack.com/p/sora-still-appears-to-have-trouble
date: 2024-12-10, from: Dave Winer’s linkblog
A typeface of people sillhouettes, to make it easy to build web graphics featuring little people instead of dots.
https://github.com/propublica/weepeople?tab=readme-ov-file
date: 2024-12-10, from: 404 Media Group
In what might be the first assassination in the United States using a 3D printed weapon, multiple people told 404 Media an image of the weapon found on the person of interest in the shooting of the UnitedHealthcare CEO looks like a specific design of 3D printed Glock.
https://www.404media.co/unitedhealthcare-shooting-person-of-interest-had-3d-printed-glock/
@Dave Winer’s linkblog (date: 2024-12-09, from: Dave Winer’s linkblog)
I did a podcast interview with with George Lakoff in 2008 in Berkeley, where I was living at the time. Pretty sure it was his first podcast.
http://scripting.com/stories/2008/02/25/interviewWithGeorgeLakoff.html
date: 2024-12-09, from: Liliputing
Google announced two years ago that it was killing its short-lived Stadia game streaming service. and while the company was refunding customers who’d purchased games and hardware, folks who’d purchased the Stadia Controller weren’t thrilled that Google’s original plans would have led to the device becoming useless once the servers shut down. Fortunately Google later […]
The post Lilbits: New software can breathe new life into discontinued hardware appeared first on Liliputing.
https://liliputing.com/lilbits-new-software-can-breath-new-life-into-discontinued-hardware/
@IIIF Mastodon feed (date: 2024-12-09, from: IIIF Mastodon feed)
Unfortunately, the December #IIIF Community Call has been cancelled. Please be on the lookout for a rescheduled date in early 2025.
https://glammr.us/@IIIF/113595996406055008
https://glammr.us/@IIIF/113624648832187901
@Dave Winer’s linkblog (date: 2024-12-09, from: Dave Winer’s linkblog)
Person of Interest in UnitedHealthcare CEO’s Killing Identified as Prep School Valedictorian.
https://www.yahoo.com/news/person-interest-unitedhealthcare-ceo-killing-181942543.html
date: 2024-12-09, from: Michael Tsai
Matthias Gansrigler: But once the Mac App Store hit, I transitioned all my apps to it pretty much right away. It’s just so convenient: no license creation, no license verification (apart from receipt validation, but that has become more convenient recently), easy updating, no handling of payments, invoices, refunds, and the potential of getting featured […]
https://mjtsai.com/blog/2024/12/09/selling-outside-of-the-mac-app-store/
date: 2024-12-09, from: Michael Tsai
Brent Simmons (release notes): The theme of this release is using less bandwidth (and, as a consequence, less battery). It fixes a conditional GET issue and it now pays attention to Cache-Control response headers and 429 response codes. It also fixes an AppleScript bug I reported. Previously: ReadKit 3.3 News Explorer 2.0 NetNewsWire and Conditional […]
https://mjtsai.com/blog/2024/12/09/netnewswire-6-1-6/
date: 2024-12-09, from: Michael Tsai
FTC (tweet): The Federal Trade Commission will prohibit data broker Mobilewalla, Inc. from selling sensitive location data, including data that reveals the identity of an individual’s private home, to settle allegations the data broker sold such information without taking reasonable steps to verify consumers’ consent. Under the FTC’s proposed settlement order, Mobilewalla will also be […]
https://mjtsai.com/blog/2024/12/09/ftc-and-cfpb-reigning-in-data-brokers/
date: 2024-12-09, from: Michael Tsai
Steven Levy (MacRumors): We are here to discuss Cook’s big move in this high-stakes environment: the impending release of Apple Intelligence, the company’s first significant offering in the white-hot field of generative AI. Some consider it belated. All year, Apple’s competitors have been gaining buzz, dazzling investors, and dominating the news cycle with their chatbots, […]
https://mjtsai.com/blog/2024/12/09/tim-cook-interview-about-ai-and-avp/
date: 2024-12-09, from: Computer ads from the Past
Do you want one? Maybe two?
https://computeradsfromthepast.substack.com/p/cards-cards-cards
date: 2024-12-09, from: Liliputing
The Google Pixel Tablet, Amazon’s Fire Tablets, and several Samsung tablets are all on sale with prices matching their Black Friday and/or Cyber Monday pricing. Best Buy is running a sale on a bunch of laptops. And you can score a popular Bluetooth speaker for $40 off at the moment. Meanwhile Lenovo is running a […]
The post Daily Deals (12-09-2024) appeared first on Liliputing.
https://liliputing.com/daily-deals-12-09-2024/
@Dave Winer’s linkblog (date: 2024-12-09, from: Dave Winer’s linkblog)
Why is America "Trumpomuskovia"?
@Dave Winer’s linkblog (date: 2024-12-09, from: Dave Winer’s linkblog)
Bluesky is missing the one thing that would make it convincingly open, simplicity. They're blowing a lot of smoke at the idea of whether they're open or not. There could be a pony behind the smoke, or not.
https://battellemedia.com/archives/2024/11/bluesky-twitter-and-the-open-network
date: 2024-12-09, from: Liliputing
The MeLE QuieterDL is a small computer that’s just a little larger than two big smartphone stacked atop one another. But it’s a full-fledged computer with an Intel N100 quad-core processor, Windows 11 Home pre-installed, and support for up to 16GB of RAM and 512GB of storage. It’s similar in a lot of ways to the MeLE […]
The post MeLE QuieterDL is a fanless mini PC with Intel N100 and two 2.5 GbE LAN ports appeared first on Liliputing.
date: 2024-12-09, from: 404 Media Group
404 Media’s reporting on an internal Google privacy violation database has been subpoenaed by the State of Texas. We are fighting it.
date: 2024-12-09, from: Liliputing
The Raspberry Pi 500 is a compact desktop computer that combines a 2.4 GHz Broadcom BC2712 quad-core ARM Cortex-A76 processor, 8GB of LPDDR4x-4267 memory, and support for WiFi 5, Bluetooth 5.0, and Gigabit Ethernet. It’s also the second computer-in-a-keyboard device from Raspberry Pi. The first was the Raspberry Pi 400, which launched in 2020 with the […]
The post Raspberry Pi 500 computer-in-a-keyboard is now available for $90 appeared first on Liliputing.
https://liliputing.com/raspberry-pi-500-computer-in-a-keyboard-is-now-available-for-90/
date: 2024-12-09, updated: 2024-12-09, from: One Foot Tsunami
https://onefoottsunami.com/2024/12/09/somewhere-along-the-way-a-mistake-had-been-made/
@Dave Winer’s linkblog (date: 2024-12-09, from: Dave Winer’s linkblog)
These guidelines evolved over many years of trying to reason with trolls and spammers.
https://this.how/commentGuidelines/
date: 2024-12-09, from: One Useful Thing
Notes on the Practical Wisdom of AI Use
https://www.oneusefulthing.org/p/15-times-to-use-ai-and-5-not-to
date: 2024-12-09, from: Aaron Bos blog
I have mixed feelings about social media and the value it provides, but I’ve recently joined Bluesky in hopes of regaining the value that I used to get out of Twitter/X from a developer’s perspective.
https://aaronbos.dev/posts/find-me-on-bluesky
date: 2024-12-09, from: Raspberry Pi News (.com)
Announcing the hotly anticipated Raspberry Pi 500, available now at $90, and Raspberry Pi Monitor, on sale at $100.
The post Raspberry Pi 500 and Raspberry Pi Monitor on sale now appeared first on Raspberry Pi.
https://www.raspberrypi.com/news/raspberry-pi-500-and-raspberry-pi-monitor-on-sale-now/
date: 2024-12-09, from: Tedium site
Based on the sharp decline of the G rating, apparently not. Let’s look at the oddities of the broadest film rating.
https://feed.tedium.co/link/15204/16914237/mpaa-g-rating-history
date: 2024-12-09, from: Curious about everything blog
The many interesting things I read in November 2024
https://jodiettenberg.substack.com/p/forty-five
date: 2024-12-09, from: Advent of Computing
In 1961 Texas Instruments unveiled the Molecular Electronic Computer, aka: Mol-E-Com. It was a machine that fit in the palm of your hand, but had all the power of a much larger computer. This was in an age of hefty machines, which made the achievement all the more marvelous. How was this even possible? It was all thanks to the wonders of molecular electronics, and a boat load of funding from the US Air Force.
Selected Sources:
https://web.archive.org/web/20160304071831/http://corphist.computerhistory.org/corphist/documents/doc-496d289787271.pdf - Invention of the Integrated Circuit, Kilby
https://archive.org/details/DTIC_AD0411614/page/n15/mode/2up - Investigation of Silicon Functional Blocks, TI
https://apps.dtic.mil/sti/tr/pdf/AD0273850.pdf - Silicon Semiconductor Networks, TI
https://adventofcomputing.libsyn.com/episode-127-molecular-electronic-computer
@Dave Winer’s linkblog (date: 2024-12-09, from: Dave Winer’s linkblog)
Severance Season 2 Official Trailer.
https://m.youtube.com/watch?v=_UXKlYvLGJY&t=68s&pp=2AFEkAIB
date: 2024-12-09, updated: 2024-12-09, from: Inlets.dev, cloud tunneling
Inlets Uplink is a complete solution for automating tunnels, that scales from anywhere from ten to tens of thousands of tunnels.
https://inlets.dev/blog/tutorial/2024/12/09/quickstart-uplink.html
date: 2024-12-09, updated: 2024-12-09, from: Tom Kellog blog
You want to be an AI Engineer? Do you even have the right skills? What do they do? All great questions. I’ve had this same conversation several times, so I figured it would be best to write it down. Here I answer all those, and break down the job into archetypes that should help you understand how you’ll contribute.
http://timkellogg.me/blog/2024/12/09/ai-engineer
date: 2024-12-09, from: LLVM Blog
Some time ago I was talking about an ahead-of-time Ruby compiler.We started the project with certain goals and hypotheses in mind, and while the original compiler is at nearly 90% completion, there are still those other 90% that needs to be done.
In the meantime, we decided to strip it down to a bare minimum and implement just enough features to validate the hypotheses.
Just like the original compiler we use MLIR to bridge the gap between Ruby VM’s bytecode and the codegen, but instead of targeting LLVM IR directly, we go through EmitC dialect and targeting C language, as it significantly simplifies OS/CPU support. We go into a bit more details later.
The source code of our minimalistic Ruby compiler is here: https://github.com/dragonruby/lightstorm.
The rest of the article covers why we decided to build it, how we approached the problem, and what we discovered along the way.
Our use case is pretty straightforward: we are building a cross-platform game engine that’s indie-focused, productive, and easy to use. The game engine itself is written in a mix of C and Ruby, but the main user-interface is the Ruby itself.
As soon as the game development is done and the game is ready for “deployment,” the code is more or less static and so we asked ourselves if we can pre-compile it into machine code to make it run faster.
But given all the dynamism of Ruby, why would a compilation make it faster?
So here comes our hypothesis. But first let’s look at some high-level implementation details to see where the hypothesis comes from.
While a language itself cannot be strictly qualified as compiled or interpreted, the typical implementations certainly are.
In case of a “compiled” language the compiler would take the whole program, analyze it and produce the machine code targeting a specific hardware (real or virtual), while an interpreter would take the program and execute it right away, one “instruction” at a time.
The definition above is a bit handwavy: zoom our far enough and everything is a compiler, zoom in close enough and everything is an interpreter. But you’ve got the gist.
Most Ruby implementations are interpreter-based, and in our case we are using mruby.
The mruby interpreter is a lightweight register-based virtual machine (VM).
Let’s look at a concrete example. The following piece of code:
42 + 15
is converted into the following VM bytecode, consisting of various operations (ops for short):
LOADI R1 42LOADI R2 15ADD R1 R2HALT
The VM’s interpreter loop looks as follows (pseudocode):
dispatch_next: Op op = bytecode.next_op(); switch (op.opcode) { case LOADI: { vstack.store(op.dest, mrb_int(op.literal)); goto dispatch_next; } case ADD: { mrb_value lhs = vstack.load(op.lhs); mrb_value rhs = vstack.load(op.rhs); vstack.store(op.dest, mrb_add(lhs, rhs)); goto dispatch_next; } // More ops... case HALT: goto halt_vm; }halt_vm: // ...
For each bytecode operation the VM will jump/branch into the right opcode handler, and then will branch back to the beginning of the dispatch loop.In the meantime, each opcode handler would use a virtual stack (confusingly located on the heap) to store intermediate results.
If we unroll the above bytecode manually, then the code can look like this:
goto loadi_1;loadi_1: // LOADI R1 42 mrb_value t1 = mrb_int(42); vstack.store(1, t1); goto loadi_2;loadi_2: // LOADI R2 42 mrb_value t2 = mrb_int(15); vstack.store(2, t2); goto add;add: // ADD R1 R2 mrb_value lhs = vstack.load(1); mrb_value rhs = vstack.load(2); mrb_value t3 = mrb_add(lhs, rhs); vstack.store(1, t3); goto halt;halt: // shutdown VM
Many items in this example can be eliminated: specifically, we can avoid
load/stores from/to the heap, and we can safely eliminate
goto
s/branches:
mrb_value t1 = mrb_int(42); mrb_value t2 = mrb_int(15);; mrb_value t3 = mrb_add(t1, t2); vstack.store(1, t3); goto halt;halt: // shutdown VM
So here goes our hypothesis:
Hypothesis
By precompiling/unrolling the VM dispatch loop we can eliminate many load/stores and branches along with branch mispredictions, this should improve the performance of the end program.
We can also try to apply some optimizations based on the high-level bytecode analysis, but due to the Ruby’s dynamism the static optimization surface is limited.
As mentioned in the beginning, building a full-fledged AOT compiler is a laborious task which requires time and has certain constraints.
For the minimalistic version we decided to change/relax some of the constraints as follows:
Unlike the original compiler, we are not targeting machine code directly, but C instead.This eliminates a lot of complexity, but it also means that we only support a subset of the language (e.g., blocks and exceptions are missing at the moment).
This is obviously not ideal, but it serves important purpose - our goal at this point is to validate the hypothesis.
A classical compilation pipeline looks as follows:
To build a compiler one needs to implement the conversions from the raw source file all the way down to machine code and the language runtime library.Since we are targeting the existing implementation, we have the benefit of reusing the frontend (parsing + AST) and the runtime library.
Still, we need to implement the conversion from AST to the machine
code.And this is where the power of MLIR kicks in: we built a custom
dialect
(Rite)
which represents mruby VM’s bytecode, and then use a number of builtin
dialects (cf
, func
, arith
,
emitc
) to convert our IR into C code.
At this point, we can just use clang to compile/link the code together with the existing runtime and that’s it.
The final compilation pipeline looks as follows:
With the benefit of MLIR we are able to build a funtional compiler in just a couple of thousands lines of code!
Now let’s look at how it performs.
Benchmarking is hard, so take these numbers with a grain of salt.
We run various (micro)-benchmarks showing results in the range of 1% to 1200% speedups, but we are sticking to the aobench as it is very close to the game-dev workloads we are targeting.
mruby also uses
aobench
as part of its benchmark suite, though we slightly modified it to
replace Number.each
blocks with explicit while
loops.
Next we used excellent
simple-kpc
library to capture CPU counters on Apple M1 CPU, namely we collect total
cycles, total instructions count, branches, branch mispredictions, and
load/stores (FIXED_CYCLES
, FIXED_INSTRUCTIONS
,
INST_BRANCH
, BRANCH_MISPRED_NONSPEC
, and
INST_LDST
respectively).
Naturally, we also collect the total execution time.
All the benchmarks compare vanilla bytecode interpretation against the “unrolled” compiled version.
We are using mruby 3.0. While it’s not the most recent version at the time of writing, it was the most recent version at the time we’ve build the compiler.
The following chart shows the results of our measurements.The three versions we compare are the baseline on the left, compiled version without optimizations in the middle, and the compiled version plus simple escape analysis and common subexpression elimination (CSE) on the right side.
The raw data and the formulas are here.
With all the current optimizations in place both the number of cycles and the total execution time went down by roughly ~30%.
We are able to eliminate ~17% of branches and ~28% of load/stores, while the branch misses were cut in half with ~55% decrease.
The numbers look promising, although the amount of load/stores and branches will certainly go up as we implement all the language features due to the way blocks and exceptions are handled.
On the other hand, we didn’t touch the runtime implementation which together with LTO will enable some more improvements due to more inlining.
As mentioned in the beginning, some parts of the engine itself are written in C with and some of them are purely due to performance reasons. We are looking into replacing those critical pieces with compiled Ruby. While we may still pay performance penalty, we hope that ease of maintenance will be worthwile.
In the meantime, do not hesitate to give it a shot, and if you have any questions reach out to Alex or Amir!
https://blog.llvm.org/posts/2024-12-03-minimalistic-ruby-compiler/