As a Nix user, I'm actually really excited to try this out.
I want to run sandboxes based on Docker images that have Nix pre-installed. (Once the VM boots, apply the project-specific Flake, and then run Docker Compose for databases and other supporting services.) In theory, an easy-to-use, fully isolated dev environment that matches how I normally develop, except inside of a VM.
Microsandbox's primary goal is to make it easy to build environments for running untrusted code.
Nix, on the other hand, solves the problem of building reproducible environments... but making said environments safe for running untrusted code is left as an exercise for the reader.
Great list. Small correction: the latest version of Scoot (admittedly, I haven't updated it in quite some time) offers both grid and accessibility-based navigation modes.
Thank you so much for creating Scoot, by the way. I wanted to create my own ShortCat like app for macOS, and Scoot has been a great source of inspiration (on top of being useful, of course!).
Hi HN! I started building Scoot as an experiment, to see if it was possible to meaningfully reduce my reliance on a physical mouse and trackpad during day-to-day usage of my Mac.
Quick backstory: I was experiencing pain in my ulnar nerve, which was definitely exacerbated by using a mouse. I was making a lot of changes to get that under control, but was curious if there was also a software-based solution that I could throw into the mix. As it happens, I had recently started using the excellent avy [0] Emacs package, and wondered if some of the ideas in avy could be brought to the operating system level.
(Quick sidenote: some physical keyboards, e.g. those running the QMK firmware, support mouse emulation, which allows you to move your mouse by pressing keys. I like this feature, but it's not as efficient as what I had in mind.)
I threw together a prototype, to see what was possible. The initial version subdivided the screen into a grid of equally-sized cells, and assigned each cell a unique character sequence. Type the character sequence, and your mouse cursor moves right to that location. (You can also move the mouse cursor up, down, left, and right, using similar keyboard shortcuts for text editing. The app also lets you click and drag with your keyboard.)
Over the holiday break, I added a new navigation mode that leverages the Mac OS accessibility APIs (like a screenreader) to find relevant UI elements on the screen (buttons, hyperlinks, etc.). Each element is assigned a unique character sequence, just like the grid-based navigation mode.
Now, with element-based navigation, Scoot feels much more useful, and I thought it would be worth sharing more broadly in case anyone else finds it useful. (Note that Scoot is Mac only, relying heavily on Apple-provided frameworks.)
Usage details (and a more detailed description) are available in the README. [1]
Feedback is much appreciated! (And the app is open source, with a lot of missing features and bugs to squash. All contributions are welcome.)
In your first CS courses, you learn how to build linked lists, sets, etc., and implement your very first algorithms using these data structures.
Relational databases come later, and many of the important concepts (set theory, tuples, etc.) build on knowledge learned by studying and implementing and using these initial data structures. It is in this way that I believe lists, sets, etc. are more fundamental than relational database tables, columns, and rows.
Some people learn set theory before data structures and algorithms. People focusing on math rather than computer science, for example. As long as we're speculating about hypothetical aliens, I wouldn't reject that possibility.
Arrays, linked lists, binary trees and mergesort could be more fundamental than the relational model, but the relational model in turn may be simpler than (say) red-black trees, BSPs, skiplists (depending on how the aliens view randomness), or OOP.
It's an interesting thought-experiment, though - if CS were being re-invented from the ground up, which things would be more fundamental and likely to be discovered first, especially with significantly different hardware?
Well in a limited fashion this experiment could be actually be done. I'm not sure how this would be modeled, but I guess giving smart young guys that don't know nothing about programming a set of "tools" in a simulation that can be used to create the building blocks of many different data structures.
Then provide problems, and look at what they do and invent in order to solve such problems.
Will be very hard to do this in an unbiased fashion actually...
Having programmers explore in a (to them) really weird language (like Prolog or Haskell) and seeing what they come up with might be a good approximation, though.
I may never have thought of difference lists, but then Prolog made them seem obvious. :)
There is an easy hack, given a known list of RSS feeds that do not offer full content and that one desires to be searched --
Simply run the links in the original feed through something like arc90's Readability and produce a new feed with the output, ingesting this new feed back into Superfeedr.
If this hack is being used only for search-related purposes, then I would hazard that there is enough existing precedent here to claim legality.
On paper it is a nice solution. However, I would assume Arc90 would see considerable load on their systems (esp by feeds that are not generating any page views) and shut this off. Also it's another point of failure and latency.
NewsBasis is looking to do the same processes Arc90 are doing, however, to ensure a 'full content' payload is held for every source.
I've been using this in production for the past few months and and it's been solid.
(If you're working in Python, you can use http://github.com/krobertson/python-ernie with the Erlang server. Note that it's not as fast as running a Ruby handler because the BERT serialization is not done natively.)
The first bottleneck on the MySQL set-up is the reading, not the writing. Even with the indices stored entirely in RAM (as the author pointed out in his blog post), the MySQL box can't keep up. (Consider the workflow of a software system that needs to parse hundreds of thousands of feeds on a continual basis. Each feed you download will have dozens of entries, and most of the time you'll have already processed the entry, so it can be ignored -- but the only way to know is to do a look-up.)
Regardless, A 68GB EC2 instance costs ~$1700/month. Four 2GB slices on Slicehost are priced at $520/month, with the cheaper set-up performing significantly better.
I think the only way to is add RAM when your indices grow.. that's what we did up until now. There is absolutely now way a data store to keep this kind of performance as soon as you involve a disk, so, yes, the secret of whatever datastore is to _always_ keep everything in memory.
I want to run sandboxes based on Docker images that have Nix pre-installed. (Once the VM boots, apply the project-specific Flake, and then run Docker Compose for databases and other supporting services.) In theory, an easy-to-use, fully isolated dev environment that matches how I normally develop, except inside of a VM.