DougHaber
Joined 12 years ago
Joined 12 years ago
One is a TRS-80 Model I emulator in JavaScript called Trash80. About 10 months ago I started this project just for fun while experimenting with what now seems to be called agentic loops. I got things working pretty well with the Z80 passing the ZEXALL suite and a lot of real TRS-80 software running fine. It sat for months untouched before I decided it is worth releasing and recently started it up again.
I didn't want to release it without a ROM, so I rigged up some agents to build a clean-room style L2 ROM w/ a fairly complete BASIC and even readline-style control commands, history, and a proper cursor. That went very well, but the agents cheated on floating point and implemented some weird Q5.2 like-thing. I told them to fix it, but I guess I didn't give clear enough instructions because they replaced it with a BCD hybrid monstrosity instead of proper floating point. The proper floating point is now underway, but I'm mostly using excess Codex credits before they expire, so it's only moving forward when I have credits I don't need.
I also built a silly ASCII fractal browser in Z80 assembly so that I can ship with a virtual disk that has software on it. The emulator works in the browser and the terminal. Unicode sextant block graphics map very well to TRS-80 Model I semigraphiccs/squots, so it really does run everything very well in the terminal, even games. I also added a line-mode for line-based applications, so you can use a readline-like interface and feel like it's native terminal app as well, though that has some issues I need to fix. And of course, you can shebang TRS-80 BASIC files and run them through the emulator too.
Another project was a demo of chromesthesia, a form of synesthesia where sounds trigger experiences of color. I thought it was done and ready to release, but then I had a new idea. The visualization while cool, was kind of boring. I decided to replace it with an attempt at a semi-physically accurate cymatics simulation with artificial coloring based on chromesthesia. Cymatics is the practice of making sounds visible by vibrating a surface, such as a plate with sand on it. As the sound changes, symmetrically interesting patterns form and evolve. I've got something working now with wave generation and microphone input, but sometimes it gets a bit stuck and stops evolving as it should, so I have to find time to figure that out.
Currently all unreleased, but when they do release it will be at www.leshylabs.com. I sometimes post updates on X, but not too often. (https://x.com/LeshyLabs)
This predates the WebAudio API, and so it builds data URLs as WAVs instead. Every sound can be represented as a short string, and the tool can be used as a library that procedurally generates the sounds from the strings. It also has a "song mode" where notes can be provided to guide the sound, which makes certain types of more complicated sounds possible to make, including jingles and short songs.
It's definitely dated now, but if anyone is interested, you can find it here
https://www.leshylabs.com/apps/sfMaker/
See the "Example Sounds" at the bottom of the page to hear what it can do.
I made some AI tools (https://github.com/DougHaber/lair) and added in a tmux tool so that LLMs could interact with terminals. First, I tried Nethack. As expected, it's not good at understanding text "screenshots" and failed miserably.
https://x.com/LeshyLabs/status/1895842345376944454
After that I tried a bunch of the "bsdgames" text games.
Here is a video of it playing a few minutes of Colossal Cave Adventure:
https://www.youtube.com/watch?v=7BMxkWUON70
With this, it could play, but not very well. It gets confused a lot. I was using gpt-4o-mini. Smaller models I could run at home work much worse. It would be interesting to try one of the bigger state of the art models to see how much it helps.
To give it an easier one I also had it hunt the Wumpus:
https://x.com/LeshyLabs/status/1896443294005317701
I didn't try improving this much, so there might be some low hanging fruit even in providing better instructions and tuning what is sent to the LLM. For these, I was hoping I could just hand it a terminal with a game in it and have it play decently. We'll probably get there, but so far it's not that simple.
We are building a best-in-class advertising platform for brands and advertisers to take full advantage of the massive reach on television. This is an opportunity to join a team of amazing engineers and data scientists.
We are currently looking for:
* Senior Software Engineer, Core Platform
https://jobs.lever.co/simulmedia/3f5416b2-b43b-4145-8017-fbb...
* Senior Software Engineer, Applications
https://jobs.lever.co/simulmedia/9c18cea4-d874-44c1-9a9f-343...
* Senior Software Engineer, Data Services
https://jobs.lever.co/simulmedia/25aa75bf-ee70-4ad4-8bf2-726...
* Senior Software Engineer, Machine Learning
https://jobs.lever.co/simulmedia/a0337745-ac19-4b59-b3e1-c84...
Please apply directly through: https://www.simulmedia.com/careers/
For those that don't know, the Brave browser has Tor tabs, which route through Tor. It also has the standard private tabs. Tor support currently exists only on the desktop Brave browser.
Here is the announcement: https://brave.com/tor-tabs-beta
Brave has been supporting Tor, and running Tor relays to improve the network.
Brave is newer at the game. They have had Tor tabs less than a year. They can do fingerprinting protection and no-script, but it's still a full featured web browser, with a lot of risks. The fingerprinting protection isn't as good as the Tor Browser, and unless they changed something, Javascript wasn't disabled by default in Tor tabs.
The Tor Browser has been around for a while and is meant to be a secure web browser from top to bottom. It has had a lot of development looking to find and fix possible leaks and to ensure security. That is its primary focus, and it is pretty good at it.
If you want to use Tor casually, maybe access an onion site, or just get a big boost in your level of privacy, the Tor tabs in Brave are a nice option. They are really easy to use and give great privacy. It is good for casual Tor use.
If you want (or need) serious privacy, the Tor Browser is a better choice. That is its purpose. It is developed to be hardened for protecting the user and it will provide better protection.
Our tech stack is written in Ruby, Python, and Javascript. We deploy microservices in Docker to AWS.
We are currently looking for:
* Software Engineer, Infrastructure (applications and tools development on an SRE / DevOps infrastructure team)
* Software Engineer, Front End - Applications
Please apply directly through: https://www.simulmedia.com/careers/
We are building a best-in-class advertising platform for brands and advertisers to take full advantage of the massive reach on television. This is an opportunity to join a team of amazing engineers and data scientists.
Our tech stack is written in Ruby, Python, and Javascript. We deploy microservices in Docker to AWS.
We are currently looking for:
* Software Engineer, Infrastructure (applications and tools development on an SRE / DevOps infrastructure team)
* Software Engineer, Applications / Full Stack
Please apply directly through: https://www.simulmedia.com/careers/
We are building a best-in-class advertising platform for brands and advertisers to take full advantage of the massive reach on television. This is an opportunity to join a team of amazing engineers and data scientists.
Our tech stack is written in Ruby, Python, and Javascript. We deploy microservices in Docker to AWS.
We are currently looking for:
* Software Engineer, Applications / Full Stack
* Software Engineer, Infrastructure (applications and tools development on an SRE / DevOps infrastructure team)
* Data Scientist (ML Pipeline / Operations Research)
Please apply directly through: https://www.simulmedia.com/careers/
After the change was announced, a number of people said they would fork and maintain the LGPL versions. One of the people behind EXT JS showed up in online discussions at the time and insisted that would be a violation.
The problem came from it not really being under LGPL. They tacked on this extra piece:
Ext is also licensed under the terms of the Open Source LGPL 3.0 license. You may use our open source license if you:
* Want to use Ext in an open source project that precludes using non-open source software
* Plan to use Ext in a personal, educational or non-profit manner
* Are using Ext in a commercial application that is not a software development library or toolkit, you will
meet LGPL requirements and you do not wish to support the project
There was some debate over this, since the GPL prohibits further restrictions in some cases, and a lot of people believed they could ignore those extra restrictions and treat it as true LGPL.The EXT JS company in online forums insisted they were wrong, and further outraged the community. A lot of people, myself included, decided to stop using EXT JS. We were planning on the commercial license, but the response of the company didn't feel right, and so like many others, we abandoned EXT JS.
Udo of Aachen (c.1200–1270) is a fictional monk, a
creation of British technical writer
Ray Girvan, who introduced him in an April Fool's hoax
article in 1999. According to the article, Udo was an
illustrator and theologian who discovered the Mandelbrot
set some 700 years before Benoît Mandelbrot.
Additional details of the hoax include the rediscovery of
Udo's works by the also-fictional Bob Schipke, a Harvard
mathematician, who supposedly saw a picture of the
Mandelbrot set in an illumination for a 13th-century carol.
Girvan also attributed Udo as a mystic and poet whose
poetry was set to music by Carl Orff with the haunting O
Fortuna in Carmina Burana.
https://en.wikipedia.org/wiki/Udo_of_AachenThe algorithm is very simple. Each screen is treated as a separate level. Commands are randomly chosen, and anything that helps the agent move forward is saved. If the score goes down or the player's height goes below the surface, the game resets and a bit of history is trimmed.
Here is a youtube video of a trained path for 20 minutes: https://www.youtube.com/watch?v=I4j8xWq1Jsc
This will not play an optimal game, which requires using the underground and not accidentally jumping over treasure.
Through the eyes of a person compelled to give testimony, we may reach a different conclusion. Consider a journalist who is granted immunity and asked to give up their source. They refuse and spend six months in jail, with few to no options to appeal for their freedom. This isn't theoretical. It happens occasionally.
The definition of due process can vary from the common definition of fair treatment under the law, to the view more often taken by lawyers and governments that it just means following the process of the law as accepted by the courts and respecting legal rights.
The reporter probably would feel as though they weren't treated fairly under the law, but the prosecutor would argue that they followed the law in full. I probably should not have used the phrase "without due process" in this case, since that will make it difficult to communicate with anyone holding views of the government or lawyers.