Recently, I decided to try the now inbuilt LSP client called Eglot. I’ve been using the lsp-mode package for some years and while I don’t have any problems with it, I decided to try the in-house solution. Though, I already tried Eglot in the past, and it didn’t work for me, due to some complications with the language I’ve tried to use it with. At the time it didn’t support Clojure, and while adding it wasn’t hard, some features did not work. Which wasn’t the case with lsp-mode, thus I used it instead. In this post, I’ll outline some problems I encountered, which are mostly Clojure-related. At this point, I can’t say if I will actually move to Eglot, but I plan to use it for some time to see if I miss any features from lsp-mode. Until then, it will stay in my private configuration. Configuration and installation I often see claims that lsp-mode packs too many features. While true, they’re all mostly optional and individually configurable. Over the years, I’ve configured lsp-mode in a fairly minimal way. You see, with Clojure, and other lisps for that matter, language servers are somewhat inferior, because there’s a much more accurate way to obtain information about the code. I, of course, talk about the REPL. Being a dynamic environment, we can ask it about its state, known functions, macros, available modules, etc. Of course, it depends on the implementation of the REPL, and not all are created equally, but the one I’m using (nREPL) is quite capable. Language server has to do all of that statically, using their own parsers, tracking of variables, modules, and so on. Because of that, I don’t really use most of the language server’s features - only linting, and occasionally go to definition. If it wasn’t for one specific feature missing from CIDER, I wouldn’t use language server at all, I think. Here’s my lsp-mode configuration: (use-package lsp-mode :ensure t :hook ((lsp-mode . lsp-diagnostics-mode) (lsp-mode . lsp-completion-mode-maybe)) :preface (defun lsp-completion-mode-maybe () (unless (bound-and-true-p cider-mode) (lsp-completion-mode 1))) :custom (lsp-keymap-prefix "C-c l") (lsp-diag
(read more)
Home > Lawsuits > Apps and Sites > Several film companies are continuing efforts to obtain piracy-related information in connection with Reddit users. While Reddit declined to comply with recent subpoenas for subscriber information, it handed over the personal details of one user last year. A new court filing sheds some light on the type of evidence being sought by the filmmakers, which includes BitTorrent activity and pirate site visits. Early last year, a group of filmmakers obtained a subpoena which required Reddit to reveal the identities of users who commented on piracy-related topics. The movie companies said they were not planning to go after these people in court but wanted to use their comments as evidence in an ongoing piracy lawsuit against Internet provider RCN. Reddit wasn’t willing to go along with the request, at least not in full. The company objected, arguing that handing over the requested information would violate its users’ right to anonymous speech. R
(read more)
In the Before Times, you just came to the office every day. It wasn’t even a question; “working from home” was just not practical. “Going to work” meant leaving the house. Then the pandemic happened.Now that it’s over, even coming in three days a week is so controversial that unions are getting involved:The union representing employees of the National Science Foundation are fighting orders reducing the number of days they can telework, warning people will quit if greater flexibility isn't preserved.NPR tells us that back-to-office is facing stiff resistance. Some companies are resorting to bribery:Salesforce, the business software behemoth, announced that for a 10-day period, it will give a $10 charitable donation per day on behalf of any employee who comes into the office (or for remote employees who attend company events). A spokeswoman said it was only natural the company would want to find moments for “doing well and doing good.” But to some employees, it might feel like a tonal shift, given that the company’s previous workplace plans were announced with fanfare for a future in which much of its staff could be fully or partially remote forever. (The company emphasized that this remains the case.)Oh no! Employees don’t want to come back. Whatever are we doing wrong? Take a look at this and see if you can spot the problemBe honest now: would you want to work in that?From 1977 to 1983, I worked for Xerox; not at PARC but in the Systems Development Division that was charged with commercializing PARC’s well-known inventions (graphical user interface, laser printing, Ethernet, etc.). You would think that, with all this ground-breaking creativity going on, they must have been working in some hip environment like the photo above?“Hey, Dave!” they must have yelled to each other across the room, “come and see this cool new use of the mouse!” Some wonderful open office layout surely stimulated this epochal explosion of invention, right?Nope. It looked like thisIn El Segundo, it looked pretty much the same, but drabber. I had a private office from my first days there, occasionally sharing with one other person.Now the work environment is symbolized in this iconic image (from Office Space):In the 1960s, Robert Propstheaded the research arm of Herman Miller, whose office chairs you can still buy. His story has been told in many places, including the Wall Street Journal (look on archive.ph if you get paywalled on that link).Propst actually invented cubicles to get away from the open office plans of the day:The offices Propst so loathed were largely open, of the type we now see on "Mad Men": row after orthogonal row of serried desks, where accountants or typists clacked away from 9 to 5, often surrounded by a corridor of closed-door offices for managers and executives.(I can’t help thinking of A Wand’ring Minstrel, I (from The Mikado) when I hear the word “serried.”)His concept was the “Action Office.” The history.com article saysThere had to be a better way. For Propst, the answer was in the “Action Office,” an office layout that relied on lightweight sitting and standing desks and filing systems. Acoustical panels helped insulate workers from the noise of telephone calls and typing.But American offices didn’t exactly take to the new Action Office plan. The components were more geared to individual workers than to large companies that needed to accommodate large numbers of people, and they were hard to put together. And the concept of a completely customizable workspace didn’t sit well with executives who didn’t value the individuality of their workers. Instead, they often purchased the furniture for their own homes rather than placing them in offices. Action Office was beloved by designers—and dismissed by just about everyone else.This is hilarious if you think about it: the Action Office furniture was too nice to waste on ordinary peons, so the executives took it home instead.Propst reworked his design, and Action Office II was the result. It was a smash hit.Faced with the failure of his first concept, Propst went back to the drawing board and created the Action Office II. The new design took his acoustical panel concept to the next level. The panels became miniature walls of multiple heights that separated each space into its own office without completely cutting a worker off from colleagues. Lightweight and easier to assemble, it made more sense to executives.But companies didn’t use the Action Office II, and the many knockoffs it inspired, the way Propst intended. Instead of going for roomy desk spaces with different designs and walls of different heights, they opted for tiny, boxed-in desks instead. They ignored Propst’s vision of a flexible workspace and visual sightlines. Using Propst’s brainchild, cubicles were used to cram even more workers into offices. The office he had invented shrank and shrank until it became impersonal and crowded. The age of the cubicle farm had begun.Propst had an Oppenheimer moment when he saw what his invention had turned into (this is the WSJ article again):The real problem isn't the furniture; it is how the furniture represents the arbitrariness of power in the workplace. "The dark side of this is that not all organizations are intelligent and progressive," Propst said two years before he died. "Lots are run by crass people who can take the same kind of equipment and create hellholes. They make little bitty cubicles and stuff people in them. Barren, rathole places…I never had any illusions that this was a perfect world."In 1985, I had a half hour private interview with Eric Schmidt at Sun Microsystems (yes, that Eric Schmidt). Sun had mostly private offices, maybe shared, and “cubes vs. offices” was a hot topic even then.I didn’t end up going to work at Sun (I should have, but didn’t), but the one thing I still remember from that interview was that he said (a paraphrase, not an exact quote):If you look at the total costs of private offices versus cubes, they come out about the same, and economics tells you that they have to. It’s just like owning versus leasing works out to be the same, because the market forces it to.I also worked at Google in the same building as Eric for a while, and I recalled this event for him. He smiled and said (again, this is a paraphrase):The one big thing I forgot about that was the value of the employee communications you get with cubes.So that’s the conventional management story in a nutshell: We need those random encounters that you get with openness! People in private offices don’t talk to each other.I’ve heard that argument over and over. It’s even employed to justify getting rid of the cubicle walls and making everything open (like the photo at the top of this article).It’s utter bullshit and executive fantasy. If you walked around Google and their open offices, almost half the workers are wearing headphones to screen out the noise. Do you just yell over and communicate with people, like in the executives’ fantasy? No, first you have to wave your hand in front of their face to get their attention.This CNBC article lays it out:In open environments, executives imagine social collaboration and surreal collision between disparate disciplines. Executives wish for the the next magical idea born from the random chaos of the corporate universe. To executives, easy access means easy sharing and easy success; we should always be able to yell at our coworkers within 25 feet whenever the mood strikes.At Google (actually, the years when I did work near Eric’s office), the best and most fun working environments I ever had were in shared offices, with walls and a door and a window. Even with three other people in there, it was still better than being out in the open.Two of my officemates in one of those ended up marrying each other! I didn’t even know anything was going on, which tells you something about their discretion, or maybe my obliviousness.My personal space allotment got steadily worse at Google. You can’t really blame REWS (Real Estate and Workplace Services) for that; they were forced to cram more
(read more)
On February 14, 2024, the Court of Appeal of Paris issued an order stating that Orange, a major French telecom provider, had infringed the copyight of Entr’Ouvert’s Lasso software and violated the GPL, ordering Orange to pay €500,000 in compensatory damages and €150,000 for moral damages. This case has been ongoing for many years. Entr’ouvert is the publisher of Lasso, a reference library for the Security Assertion Markup Language (SAML) protocol, an open standard for identity providers to authenticate users and pass authentication tokens to online services. This is the open protocol that enables single sign-on (SSO). The Lasso product is dual licensed by Entr’Ouvert under GPL or commercial licenses. In 2005, Orange won a contract with the French Agency for the Development of Electronic Administration to develop parts of the service-public.fr portal, which allows users to interact online with the government for administrative procedures. Orange used the Lasso software in the solution, but did not pass on the rights to its modifications free of charge under GPL, or make the source code to its modifications available. Entr’Ouvert sued Orange in 2010, and the case wended its way through the courts, turning on, among other things, issues of proof of Entr’Ouvert ‘s copyright interest in the software, and whether the case properly sounded in breach of contract or copyright infringement. On March 19, 2021, the Appeals Court first rejected Entr’Ouvert’s claims for copyright infringement, saying that the case was a breach of contract claim. The Court of Cassation, which is the supreme court of France, reviewed the case and issued an order on October 5, 2022 overturning the decision of the Court of Appeal. The case was then remanded to the Court of Appeal, which issued its order this week. The compensatory damages were based on both lost profits of the plaintiff and disgorgement of profits of Orange. Moral damages compensate the plaintiff for harm to reputation or other non-monetary injury. Note: I patched this information together from various articles, mostly read in translation. The dates in the lawsuit process
(read more)
PITTSBURG, Calif. (KGO) -- Nestled into a corner of Pittsburg's Steeltown Coffee, PG&E is buying coffee for customers and answering questions at their ninth Coffee Connect event on Friday morning.Customers were invited in to ask any questions they wanted, whether it was about recent power outages, storm damage or bills."It was just a great way to disarm them and inform them," said Rob Stillwell, a spokesperson for PG&E.And while the coffee might have brough everyone together, it didn't solve everyone's problems."He was very pleasant and answered questions as best he could, but my rate is not g
(read more)
Pierre Cusa November 2022 (history) "Torusphere Accelerator", the animation that motivated this article. What happens if you take motion blur past its logical extreme? Here are some fun observations and ideas I encountered while trying to answer this question, with an attempt to apply the results in a procedural animation. What is motion blur supposed to look like? Motion blur started out purely as an film artifact, the result of a subject moving while the camera's shutter is open. This artifact turned out to be desirable, especially f
(read more)
By Shaun Mirani Near the end of 2022, Trail of Bits was hired by the Open Source Technology Improvement Fund (OSTIF) to perform a security assessment of the cURL file transfer command-line utility and its library, libcurl. The scope of our engagement included a code review, a threat model, and the subject of this blog post: an engineering effort to analyze and improve cURL’s fuzzing code. We’ll discuss several elements of this process, including how we identified important areas of the codebase lacking coverage, and then modified the fuzzing code to hit these missed areas. For example, by setting certain libcurl options during fuzzer initialization and introducing new seed files, we doubled the line coverage of the HTTP Strict Transport Security (HSTS) handling code and quintupled it for the Alt-Svc header. We also expanded the set of fuzzed protocols to include WebSocket and enabled the fuzzing of many new libcurl options. We’ll conclude this post by explaining some more sophisticated fuzzing techniques the cURL team could adopt to increase coverage even further, bring fuzzing to the cURL command line, and reduce inefficiencies intrinsic to the current test case format. How is cURL fuzzed? OSS-Fuzz, a free service provided by Google for open-source projects, serves as the continuous fuzzing infrastructure for cURL. It supports C/C++, Rust, Go, Python, and Java codebases, and uses the coverage-guided libFuzzer, AFL++, and Honggfuzz fuzzing engines. OSS-Fuzz adopted cURL on July 1, 2017, and the incorporated code lives in the curl-fuzzer repository on GitHub, which was our focus for this part of the engagement. The repository contains the code (setup scripts, test case generators, harnesses, etc.) and corpora (the sets of initial test cases) needed to fuzz cURL and libcurl. It’s designed to fuzz individual targets, which are protocols supported by libcurl, such as HTTP(S), WebSocket, and FTP. curl-fuzzer downloads the latest copy of cURL and its dependencies, compiles them, and builds binaries for these targets against them. Each target takes a specially structured input file, processes it using the appropriate calls to libcurl, and exits. Associated with each target is a corpus directory that contains interesting seed files for the protocol to be fuzzed. These files are structured using a custom type-length-value (TLV) format that encodes not
(read more)
Jon Sebastiani saw fancy marshmallows for the first time in Paris, and thought they looked like money.A scion of a big-deal winemaking family from California, Sebastiani was already rich. He ran one of the family wineries for a while, but that wasn't his big hit. "When you grow up in a small town like Sonoma, in a notorious family business where everybody knows who you are — it was important to me to carve my own path," he says.That path led to snacks. In 2009, inspired by the offerings at a local butcher shop, Sebastiani founded an upscale beef-jerky business called Krave. Easier to chew and sweeter than convenience-store jerky, Krave got huge during the paleo craze. In 2015, Sebastiani sold the company to Hershey, the chocolate-bar people, for $240 million.He ran the company for Hershey for a year, then left to found a food-focused investment firm. But Krave had been more than a financial success. It created a whole new category in the snack industry. And Sebastiani found himself jonesing for that high. In search of it, he went to Paris. There — in cute bakeries, in nice shops, on haute dessert menus — he discovered next-level marshmallows.These weren't the pot-bellied, chemical-laden puffballs that Americans roast on sticks and slap on s'mores. They were toothsome little pastel-shaded cubes, in a range of classy flavors that called to mind meringues and Michelin stars. "When you peel back the layers of a marshmallow, it's actually a better product for you, with less sugar, than most candies," Sebastiani realized. "We could be a less-guilty, better-for-you sweet indulgence."The plan: Create a premium snack by using (nominally) healthier ingredients than commodity marshmallows and smashing together flavors and colors inspired by Paris. That was the source of the new company's name: Smashmallow. "I don't want to say it was the Krave playbook," Sebastiani says. "But it was my next concept that I believed was going to disrupt a category."Maybe you've heard of Smashmallow; maybe you even bought some. In the couple of years before the pandemic, they were everywhere. Now? Pfft. The problem wasn't the marshmallows — they were, by all accounts, delicious. The problem was scale. Smashmallows were designed to look like an artisanal, boutique product, but that wasn't enough for Sebastiani: He wanted to manufacture billions of them, to build a company that would bestride Candyland like a squishy colossus. That meant he had to grow fast and figure out the engineering on the fly — the classic entrepreneurial strategy of Silicon Valley. When it works, you get Tesla; when it doesn't, you get Theranos.This is the story of the Theranos of marshmallows. Liam Eisenberg for BI
(read more)
I think filing bugs on browsers is one of the most useful things a web developer can do. When faced with a cross-browser compatibility problem, a lot of us are conditioned to just search for some quick workaround, or to keep cycling through alternatives until something works. And this is definitely what I did earlier in my career. But I think it’s too short-sighted. Browser dev teams are just like web dev teams – they have priorities and backlogs, and they sometimes let bugs slip through. Also, a well-written bug report with clear steps-to-repro can often lead to a quick resolution – especially if you manage to nerd-snipe some bored or curious engineer. As such, I’ve filed a lot of bugs on browsers over the years. For whatever reason – stubbornness, frustration, some highfalutin sense of serving the web at large – I’ve made a habit of nagging browser vendors about whatever roadblock I’m hitting that day. And they often fix it! So I thought it might be interesting to do an analysis of the bugs I’ve filed on the major browser engines – Chromium, Firefox, and WebKit – over my roughly 10-year web development career. I’ve excluded older and lesser-known browser engines that I never filed bugs on, and I’ve also excluded Trident/EdgeHTML, since the original “Microsoft Connect” bug tracker seems to be offline. (Also, I was literally paid to file bugs on EdgeHTML for a good 2 years, so it’s kind of unfair.) Some notes about this data set, before people start drawing conclusions: Chromium is a bit over-represented, because I tend to use Chromedriver-related tools (e.g. Puppeteer) a lot more than other browser automation tools. WebKit is kind of odd in that a lot of these bugs turned out to be in proprietary Apple systems (Safari, iOS, etc.) rather than WebKit proper. (At least, this is what I assume the enigmatic rdar:// response means.) I excluded one bug from Firefox that was actually on MDN (which uses the same bug tracker). The data So without further ado, here is the data set: Browser Filed Open Fixed Invalid Fixed% Chromium 27 4 14 9 77.78% Firefox 18 3 8 7 72.73% WebKit 25 6 12 7 66.67% Total 70 13 34 23 72.34% Some things that jump out at me from the data set: The “Fixed%” is pretty similar for all three browsers, although WebKit’s is a bit lower. When I look at the unfixed WebKit bugs, 2 are related to iOS rather than WebKit, one is in WebSQL (RIP), and the remaining 3 are honestly pretty minor. So I can’t really blame the WebKit team. (And one of those minor issues wound up in Interop 2024, so it may get fixed soon.) For the 3 open Firefox issues, 2 of them are quite old and have terrible steps-to-repro (mea culpa), and the remaining one is a minor CSS issue related to shadow DOM. For the 4 open Chromium issues, one of them is actually obsolete (I pinged the thread), 2 are quite minor, and the remaining one is partially fixed (it works when BFCache is enabled). I was surprised that the total number of bugs filed on Firefox wasn’t even lower. My hazy memory was that I had barely filed any bugs on Firefox, and when I did, it usually turned out that they were following the spec b
(read more)
Change Date: 02-Mar-2024 Current Conditions for Major Reservoirs 02-Mar-2024
(read more)
SuperKalamIndia's first personal mentor & discipline inducing learning ecosystem₹25K - ₹35K INRConnect directly with founders of the best YC-funded startups.Apply to role ›Vimal Singh RathoreFo
(read more)
18:43 - 14.02.2024 In an unprecedented move, US Special forces troops will be permanently stationed in Taiwan, Republic of China. According to Taiwan's United Daily News (UDN), the American 1st Special Forces Group is deployed for a permanent training mission on the island. The 1st Special Forces Group is permanently stationed this year at two bases of the 101st Amphibious Reconnaissance Battalion, a Taiwanese army special operations force. Some of the US troops are based on Kinmen, a group of Taiwanese-controlled islands 10 kilometers from Xiamen, a Chinese port city. Another group is located on the Pescadores islands off the Taiwanese coast
(read more)
Dame Stephanie Shirley In the realm of computing pioneers, Dame Stephanie “Steve” Shirley is one of the most celebrated, not only for building a $3 billi
(read more)
Last update: February 24, 2024  Translated From: e-maxx.ru The Aho-Corasick algorithm allows us to quickly search for multiple patterns in a text. The set of pattern strings is also called a dictionary. We will denote the total length of its constituent strings by $m$ and the size of the alphabet by $k$. The algorithm constructs a finite state automaton based on a trie in $O(m k)$ time and then uses it to process the text. The algorithm was proposed by Alfred Aho and Margaret Corasick in 1975. Construction of the trie¶ A trie based on words "Java", "Rad", "Rand", "Rau", "Raum" and "Rose". The image by nd is distributed under CC BY-SA 3.0 license. Formally, a trie is a rooted tree, where each edge of the tree is labeled with some letter and outgoing edges of a vertex have distinct labels. We will identify each vertex in the trie with the string formed by the labels on the path from the root to that vertex. Each vertex will also have a flag $\text{output}$ which will be set if the vertex corresponds to a pattern in the dictionary. Accordingly, a trie for a set of strings is a trie such that each $\text{output}$ vertex corresponds to one string from the set, and conversely, each string of the set corresponds to one $\text{output}$ vertex. We now describe how to construct a trie for a given set of strings in linear time with respect to their total length. We introduce a structure for the vertices of the tree: const int K = 26; struct Vertex { int next[K]; bool output = false; Vertex()
(read more)
We all have pet peeves, even though there’s a lot going on in the world that makes them pretty insignificant. While acknowledging that there are many more important things in life, I write this post about my own personal illustration pet peeve in the hopes that maybe, just maybe, it’ll make a little teeny difference. Here goes: I love butterflies. They’re one of my favorite subjects to illustrate and one of my favorite sights in nature. To me, they’re a symbol of hope, an embodiment of beauty, and a sign of what’s right in the world. I think that’s why it bothers me when depictions of butterflies often fail to do them justice, whether they are in a work of art, a website, a product, an animation, or in print. My explanation needs to begin with a description of a dead butterfly. When a butterfly is placed in an insect collection, the person who prepares it positions its wings according to a convention that facilitates identification. In the photo of a dead, pinned butterfly below, note that the trailing edge of the forewings (blue line) is perpendicular to the body’s axis (red line). When the insect has just been
(read more)
One of the most persistent, frustrating, and entirely valid, criticisms of Sourcehut that I’ve heard has been that git operations over SSH are too slow. The reason this is a frustrating complaint to hear is that the git.sr.ht SSH pipeline is a complicated set of many moving parts, and fixing the problem involved changes at every level. However, as many of you will (hopefully) have noticed by now, pushing to and pulling from git.sr.ht is quite snappy now! So after a huge amount of work overhauling everything to get us here, I thought it would be nice to reflect on what caused these issues, how this system is structured, and how the problem was eventually solved. There are several major tasks that need to happen when you push or pull to git.sr.ht. In order, they are: Dispatch Which system are you SSHing into? git.sr.ht? builds.sr.ht? Identification Who are you? Authorization Are you allowed to do what you’re trying to do? Execution Hand things off to git to complete your operation. Follow-up Do we need to submit any CI jobs? Webhooks? During each of these steps, your terminal is blocked. You have to wait for all of them to complete. Well, most of them, at least. Let’s discuss each step in detail. Dispatching There are several Sourcehut services which you can log onto using SSH: git.sr.ht, hg.sr.ht, and builds.sr.ht, and perhaps more in the future. Before we overhauled it, man.sr.ht used to have a dedicated SSH service as well. In our case, we run each of these services on their own servers at their own IP addresses. However, this was not always the case, and we still support third-party installations of Sourcehut services which are all sharing a single server. Therefore, we have to have a way of identifying which service you’re trying to SSH into, and for this purpose we use the user. You use [email protected], [email protected], and [email protected], to log onto each respective service. This phase is handled by our gitsrht-dispatch binary, whose source code you can view here. This is run by OpenSSH in order to generate an authorized_keys file, with a list of SSH keys which are allowed to log into Sourcehut. That’s beyond the scope of dispatch, howev
(read more)
DEATH VALLEY NATIONAL PARK, Calif. — If it weren’t for all the floating, the paddling, the sloshing around, the lake smack in the middle of this desert might be mistaken for a mirage.This is the driest place in America, a place famous for sweltering 120-degree summers, a place whose very name suggests inhospitableness. It is perhaps the last corner of the continent one might expect to stumble upon miles of water.But Lake Manly is no illusion. Instead, it’s more like a ghost from Death Valley’s prehistoric past, temporarily resurrected by the fast-changing, climate-churning present.Thanks to the record-setting rain that has washed over California during the last six months, Lake Manly — which dried up thousands of years ago — has reformed on the floor of Badwater Basin, the lowest point in North America. This unlikely and exceedingly rare comeback is a message from the warming climate, which baked the region in a years-long megadrought and has now flooded it with rain.At the same time, it is delighting visitors, park rangers and the scientists who have devoted their careers to studying Death Valley and have called the lake’s reappearance one of the most spectacular natural phenomena they have ever witnessed. But perhaps most profoundly, it shows that the desert is a dynamic place, home to complex and vibrant ecosystems — not the desolate and barren expanse of popular imagination.Like an uncommon desert super bloom, the return of Lake Manly serves as a powerful declaration: Death Valley is alive.“This is the desert announcing its vitality,” said Mason Voehl, the executive director of the Amargosa Conservancy, a nonprofit that advocates for the protection of the Amargosa River, which historically fed into Lake Manly.For weeks, since the latest rainstorm in early February, crowds have flocked to this park near California’s border with Nevada, setting new high marks for attendance. On a recent day, cars lined the preserve’s roads and overflowed a parking lot near the lake’s entrance. Sightseers cruised on kayaks, clambered onto paddleboards and waded in up to their knees.The lake itself was placid and shallow, tranquil and still. The water,
(read more)
December 14, 2022Volume 20, issue 5   PDF Designing an algorithm with reduced connection churn that could replace deterministic subsetting Peter Ward and Paul Wankadia with Kavita Guliani In recent years, the Autopilot system at Google has become increasingly popular internally for improving resource utilization. Autopilot can do multiple things: It can be configured to perform horizontal scaling, which adjusts the number of tasks a service has running to meet the demand; and it can be configured to perform vertical scaling, which adjusts the CPU/memory resources provisioned per task. Autopilot is also effective in preventing outages: It can respond to increased demand by scaling up a service faster than the human operators. As the usage of Autopilot became widespread, servi
(read more)
using a solar oven as a radiant refrigerator at night my first experiments were during a winter in 1997 in kalgoorlie, an inland location of western australia: the ambient nighttime minimum was getting down to 2-3 degrees above zero (celsius). using a box-cooker with a black base, i poured about half a centimeter deep of water into the bottom of the cooker and put it outside at night. the glass lid had to be removed as glass is opaque to infrared and would inhibit the cooling. i put the cooker (uncooker?) in a location where it saw a maximum amount of sky and no trees or buildings (on the roof of my house). the sky needed to be clear all night, with still air. i was using rainwater as the town water contained additives which may have lowered the freezing point. i would set the
(read more)
U.S. Department of Commerce Publishes Proposed Rule Imposing “Know Your Customer” and Reporting Requirements on U.S. Infrastructure as a Service Providers Thursday, February 1, 2024 The U.S. Department of Commerce (“Commerce”), Bureau of Industry and Security (“BIS”) recently issued a proposed rule aimed at preventing foreign actors from utilizing U.S. Infrastructure as a Service (“IaaS”) products (i.e., cloud computing services) to engage in malicious cyber-enabled activity, specifically by imposing certain due diligence and reporting requirements on U.S. IaaS providers and their foreign resellers. The January 29, 2024, Notice of Proposed Rule Making (“NPRM”) follows Executive Order ("EO") 13984 (“Taking Additional Steps To Address the National Emergency With Respect to Significant Malicious Cyber- Enabled Activities”), issued by President Trump in January 2021, and EO 14110 (“Safe, Secure, and Trustworthy Development and Use of Artificial Intelligence”), issued by President Biden in October 2023. BIS has invited the public to submit comments on the proposed rule by
(read more)
Back to writing Table of contentsIntroductionSample files@page@media printWidth, height, margin, and paddingElement positioningMulti-page documents with repeating elementsPortrait / Landscape modeData sourceEssentials cheatsheet Introduction (§) At work, one of the things I do pretty often is write print generators in HTML to recreate and replace forms that the company has traditionally done handwritten on paper or in Excel. This allows the company to move into new web-based tools where the form is autofilled by URL parameters from our database, while getting the same physical output everyone's familiar with. This article explains some of the CSS basics that control how your webpages look when printed, and a couple of tips and tricks I've learned that might help you out. Sample files (§) Here are some sample page generators to establish some context, and perhaps a shred of credibility. I'll be the first to admit these pages are a little bit ugly and could use more polish. But they get the job done and I'm still employed. Invoice generator Coversheet with sidebar inputs Coversheet with contenteditable QR code generator @page (§) CSS has a rule called @page that informs the browser of your website's printing preferences. Normally, I use @page { size: Letter portrait; margin: 0; } I will explain why I choose margin: 0 in the later section about margins. You should use Letter or A4 as appropriate for your relationship with the metric system. Setting the size and margin of @page is not the same as setting the width, height, and margin of your or element. @page is beyond the DOM — it contains the DOM. On the web, your element is bounded by the edges of your sc
(read more)
Atom­ic physi­cist Niels Bohr is famous­ly quot­ed as say­ing, “Pre­dic­tion is very dif­fi­cult, espe­cial­ly if it’s about the future.” Yet despite years of get­ting things wrong, mag­a­zines love think pieces on where we’ll be in sev­er­al decades, even cen­turies in time. It gives us com­fort to think great things await us, even though we’re long over­due for the per­son­al jet­pack and moon colonies. And yet it’s Asi­mov who appar­ent­ly owned the only set of post­cards of En L’An 2000, a set of 87 (or so) col­lectible artist cards that first appeared as inserts in cig­ar box­es in 1899, right in time for the 1900 World Exhi­bi­tion in Paris. Trans­lat­ed as “France in the 21st Cen­tu­ry,” the cards fea­ture Jean-Marc Côté and oth­er illus­tra­tors’ inter­pre­ta­tions of the way we’d be living…well, 23 years ago. The his­to­ry of the card’s pro­duc­tion is very con­vo­lut­ed, with the orig­i­nal com­mis­sion­ing com­pa­ny going out of busi­ness before they could be dis­trib­uted, and whether that com­pa­ny was a toy man­u­fac­tur­er or a cig­a­rette com­pa­ny, nobody seems to know. And were the ideas giv­en to the artists, or did they come up with them on their own? We don’t know. One of the first things that stands out scan­ning through these prints, now host­ed at The Pub­lic Domain Review, is a com­plete absence of spac
(read more)
i,D`0$U.0gKBn0TL$[NGukn'''35X2D95WudK1&`NFA"rnQH*0b"]:/Mu5hdCFf (NgmlPUj9IEF=E8WK6ZKnf%i$jS^/18-'u8'c?9mZ/$kDC1*0\W?c_45@9DH5ZG endstream endobj 105 0 obj << /Filter [ /ASCII85Decode /FlateDecode ] /Length 421 /Subtype /Type1C >> stream 8;Ued?t!MPA7QBrFE\77En:d-0lf!(a>YdQ$#9F#i=YDDQ=8s=@81C">JT1EeG-ej )p[AMs2b4/Yl";R+U08_7Xg2WU;W;Ggr,rRima^H1k\^7%#jQr(!KIbq./+[0*+c\ r@,WBkB@h[#$^,eMB-t8o,%;Ldd#rhF,`=lEn7<1\_1!+=uQ%mAGgn\Nd]*V8[G>< c^?S7m;AmFf@WeZ6^e?t1.hluX6_i%f]IQWA,TO]p-"T+qnYLX^/+XrM"Q+!#$YP@ IWK?87pSi1G-obkB_IO%)%3J*Ai)&Q>6cqWiB$[4$i;[email protected]$qDh>I$Q[ 7h,@afmb;N,M7HPr:--H:BGn(j@j+9FK
(read more)
I’m a child of a therapist. What that means is that I was expertly listened-to most of my life. And then, wow, I met the rest of the world. This is a skill that need not be rare. After all, one unquestionably unique human attribute—that no other animal seems to be capable of—is the desire to link our minds. We want to know what the other is thinking. We want to know what our whole species thinks (written language) and has learned (school). And yet, minds are not directly observable. We have to talk about them. We have a seemingly endless interest in stories, because there i
(read more)
R/OR/O (HTTP)R/W (SSH) R/W (HTTPS)Fork Nix flake for RPython interpreters Release FilesNo download files. Recent CommitsRev.TimeAuthorMessage RSS67a448752024-03-02 17:02:10CorbinUse Cachix. 443b16032024-03-02 15:02:08CorbinAdd pyrolog. eb4df1f42024-03-01 17:48:47CorbinUse setup hooks to prepare build directories. This was f...33974c3e2024-03-01 15:08:45CorbinSupport all upstream systems. Note that I have not *test...d0f70b512024-03-01 14:35:46CorbinDocument licenses, when possible. Some code, particularl...ce1d6da52024-03-01 10:36:21Corbinpysom: Add check phase. These tests are hermetic, s
(read more)
Running GTA: Vice City on a TP-Link TL-WDR4900 wireless routerWhat is it?A TP-Link wireless router, with an external AMD Radeon GPU connected via PCIe,running Debian Linux and playing games: What makes this router so special?TP-LINK’s TL-WDR4900 v1 is a very interesting WiFi router:Instead of the typical MIPS or ARM CPUs found in normal WiFi routers, the WDR4900 features a PowerPC-based CPU by NXP.The NXP/Freescale QorIQ P1014 CPU used in the WDR4900 is a PowerPC e500v2 32bit processor.These CPUs offer a full 36bit address space, a lot of performance (for a router released in 2013) and they have excellent PCIe controllers.They quickly gained popularity in the OpenWrt and Freifunk communities for being cheap routers with a lot of CPU performance. Both 2.4 GHz and 5 GHz WiFi chipsets (made
(read more)
American and Vietnamese student peace delegations in Hanoi, Vietnam pose for a photo in December 1970. Delegation leader David Ifshin, president of the National Student Association in front row (with beard). Click for full list by Larry Magid In 1973, the delegates to the official Paris Peace Talks to end the war in Vietnam came to an agreement, but, by the time hostilities came to an end, more than a million people had died. What many people don’t know is that students from those same countries came to an agreement two years and tens of thousands of deaths earlier. This is the story of the “People’s Peace Treaty” from my perch as one of people who helped it along. In August, 1970, the United States National Student Association (NSA) held its annual National Student Congress
(read more)
A fascinating article was recently uncovered and posted to Reddit that was originally published on May 17, 1994, in The Village Voice. For those that don't know, the Voice was an American news and culture publication based in Greenwich Village, New York City, known for being the country's first alternative newsweekly. The printed newspaper edition ceased publication in 2017, while the online version lives on. A user on Reddit that goes by the moniker 8bitaficionado actually made a special trip to New York Public Library in order to look up an archive of the periodical and laboriously transcribed its contents. The issue in question is nowhere to be found online in its entirety. In the May 17 issue, Noah Green, in an article titled, "Goodbye Mr. Chips: Could Commodore Have Changed the Worl
(read more)
ArrowArtboardCreated with Sketch.ArtboardCreated with Sketch.Title ChevronTitle ChevronIcon Mail ContactPath LayerPositive ArrowDefenseNavy secretary visits Hyundai, Hanwha and Mitsubishi to invite investment The 1,000-ton deckhouse of a destroyer at General Dynamics' Bath Iron Works in Bath, Maine. The company is one of seven shipbuilders to construct naval ships in the U.S. today. (U.S. Navy photo) March 4, 2024 00:48 JST | U.S.WASHINGTON -- Struggling to keep up with China's naval shipbuilding spree, the U.S. is looking to reopen closed or inactive American shipyards with the help of Asian capital, engineers and shipbuilding expertise.Last week, Secretary of the Navy Carlos Del Toro visited two shipyards in South Korea and one in Japan, pitching at each stop the idea of joining p
(read more)
In the history of education, the question of how computers were introduced into European classrooms has so far been largely neglected. This edited volume strives to address this gap. The contributions shed light on the computerization of education from a historical perspective, by attending closely to the different actors involved – such as politicians, computer manufacturers, teachers, and students –, political rationales and ideologies, as well as financial, political, or organizational structures and relations. The case studies highlight differences in political and economic power, as well as in ideological reasoning and the priorities set by different stakeholders in the process of introducing computers into education. However, the contributions also demonstrate that
(read more)
3rd March 2024 Mike Bostock, Announcing: Observable Framework: Today we’re launching Observable 2.0 with a bold new vision: an open-source static site generator for building fast, beautiful data apps, dashboards, and reports. Our mission is to help teams communicate more effectively with data. Effective presentation of data is critical for deep insight, nuanced understanding, and informed decisions. Observable notebooks are great for ephemeral, ad hoc data exploration. But notebooks aren’t well-suited for polished dashboards and apps. Enter Observable Framework. There are a lot of really interesting ideas in Observable Framework. A static site generator for data projects and dashboards JavaScript in Markdown Everything is still reactive Only include the code that you u
(read more)
Using playing cards to store hidden data: The implied card method for encoding data into playing cards [2nd March, 2014][Updated in July 2016][Improved grammar in September 2021] Introduction: This is an explanation of my method of storing messages and data in a deck of playing cards. The method encodes binary bits into the cards, usually resulting in many more bits of data being stored than there are cards. Depending on the nature of the particular bits being encoded, it can store from 52 to 1,378 bits of data. I have no idea if this method already exists, but I haven't seen it anywhere else. The method can also be used to encode letters of the alphabet (English or otherwise) in a way that, on average, fewer than two cards are needed to represent one letter. In more straigh
(read more)
Download PDF HTML (experimental) Abstract:The Quantum Cheshire Cat experiment showed that when weak measurements are performed on pre- and post-selected system, the counterintuitive result has been obtained that a neutron is measured to be in one place without its spin, and its spin is measured to be in another place without the neutron. A generalization of this effect is presented with a massive particle whose mass is measured to be in one place with no momentum, while the momentum is measured to be in another place without the mass. The new result applies to any massive particle, independent of its spin or charge. A gedanken experiment which illustrates this effect is presented using a nested pair of Mach-Zehnder interferometers, but wit
(read more)
AI has made remarkable strides in the medical field, with capabilities including the detection of Parkinson’s disease via retinal images, identification of promising drug candidates, and prediction of hospital readmissions. While these advance are exciting, I’m wary of the practical impact AI will have on patients. I recently watched a late-night talk show where skeptics and enthusiasts debated AI safety. Despite their conflicting views, there was one thing they could all agree upon. “AI will cure cancer,” one panelist declared, and everyone else confidently echoed their agreement. This collective optimism strikes me as overly idealistic and raises concerns about a failure to grapple with the realities of healthcare. AI models can use retinal images to accurately detect Pa
(read more)
Marketing, solicitations, advertising, political contact, direct mailers, email campaigns, cookies, ads — it's all opt out. It puts the burden on you to opt out of each communication each message, each outreach from a loyalty program. It can feel like weeding a garden, but that garden is your attention. The weeds keep returning, insisting upon their removal. One after another.Marketing, solicitations, advertising, political contact, direct mailers, email campaigns, cookies, ads — it's all opt out. It puts the burden on you to opt out of each communication each message, each outreach from a loyalty program. It can feel like weeding a garden, but that garden is your attention. The weeds keep returning, insisting upon their removal. One after another.I don't want to be sent weekly emails
(read more)
Last month I wrote about Neal Agarwal’s web game Infinite Craft. Tom Fang wrote to tell me he’s created a dictionary of Infinite Craft elements, along with their uses and recipes. This got me thinking about the game’s mathematical structure. By “mathematical structure,” I mean something like how we make recipes and the metrics by which we might compare one recipe to another. For example, if our goal is to make Sandwich, we could do it like this: Wave = Water + Wind Steam = Fire + Water Plant = Earth + Water Sand = Earth + Wave Tea = Plant + Steam Sandwich = Sand + Tea Or like this: Wave = Water + Wind Sand = Earth + Wave Glass = Fire + Sand Wine = Glass + Water Sandwich = Sand + Wine If we diagram these recipes, we find that the first one is shallower, in the sense th
(read more)
Making sense of the USB standard Starting out new with USB can be quite daunting. With the USB 2.0 specification at 650 pages one could easily be put off just by the sheer size of the standard. This is only the beginning of a long list of associated standards for USB. There are USB Class Standards such as the HID Class Specification which details the common operation of devices (keyboards, mice etc) falling under the HID (Human Interface Devices) Class - only another 97 pages. If you are designing a USB Host, then you have three Host Controller Interface Standards to choose from. None of these are detailed in the USB 2.0 Spec. The good news is you don’t even need to bother reading the entire USB standard. Some chapters were churned out by marketing, others aimed at the lowe
(read more)
Work THIS COULD HAVE BEEN AN EMAIL. Photo illustration by Slate. Photo by Sefa Kart/iStock/Getty Images Plus. When the hiring manager messages you to invite you to a video call, you’re thrilled—this must be the offer, you think, or at least a step closer to one. You clear your afternoon, make yourself and your space look presentable, and eagerly log into Zoom … only to discover you’ve taken all this trouble just so the hiring manager can reject you on live video. Now you’ve got to process the bad news while simultaneously controlling your face and your tone and ensuring you sound professional—the whole time wondering, Why wasn’t this an email? Why indeed. No one likes being rejected for a job, no matter what form it comes in, but turning down candidates on live video is a spectacularly bad idea that’s inexplicably gaining in popularity—at least according to the letters flooding my inbox. Although live video rejections might sound like a deliberate act of cruelty, they’re not intended to be. Instead, some hiring managers genuinely believe that rejecting candidates on a video call is more polite, even more thoughtful. Here’s what one interviewer wrote to me about the practice: We do it as a matter of policy. If you make it to the final interview stage, HR wants us to reject people by Zoom or at least over the phone. They say it’s kinder and doesn’t feel as impersonal after people have invested their time interviewing with us. Supposedly we owe them the courtesy of a real conversation. But every time I’ve done it, the person sounds
(read more)
Mar 2024 - 16 min readI recently upgraded from a Ryzen 3700X to a 5959X. Double the cores, and nearly double the potential heat output. I didn’t upgrade my cooling solution, a 240mm Kraken X53 AIO liquid cooler.Doing any real work with the 5950X made my PC significantly louder, and worse yet the fans were now spinning up and down suddenly and erratically.1The reason for this is the radiator fans are controlled based on the CPU temperature, which quickly ramps up and down itself. This is the only option using the motherboard based fan control configurable in the UEFI for me – the X53 cannot control fans by itself.I presume the quick temperature rises are specific to modern Ryzen CPUs, perhaps others too. Maybe this is due to more accurate sensors, or even a less-than-ideal thermal interface. Right now, I’m uncertain it’s not my thermal compound even.I know modern CPUs – particularly Ryzen 5000/7000 or intel 13th/14th gen – are designed to boost as much as possible with tight margins around temperature and power limits.2The kraken cooler is by default designed to vary the pump speed based on liquid temperature. I think this is not optimal for cooling – it does reduce the slight whine of the pump however.The ideaAs I use liquid cooling, there’s significant thermal mass available which really should mean the sudden ramping behaviour of the fans is not required.If I could instead control the pump speed based on CPU temperature and the fan speed based on liquid temperature, I could take advantage of the thermal mass of the liquid to avoid ramping up the fans unnecessarily as the liquid takes some time to heat.The CPU would also be cooled more effectively, and th
(read more)
By , the Cut’s financial-advice columnist.  In addition to “My Two Cents,” she writes about work and parenting for the site. Previously, she was the senior features editor at Harper's Bazaar and a senior editor at the Cut. She was also the editorial director for MM.LaFleur. Her work has also been published in Glamour, Art in America, Politico, and other places. Photo-Illustration: by The Cut; Photo: Getty Images If you’ve ever wondered how billionaires actually spend their money in private, few people know better than George Ralph Dunn, the director of a London-based recruiting agency that staffs the homes of the super-rich. Within the industry, these ultra-high-net-worth clients (or UHNWs) are known as “principals,” and Dunn headhunts the people who “make their lives as easy as possible,” he says. In addition to filling roles you might expect — caregiver, chauffeur, personal assistant — Dunn has hired a chef just for Dobermans and staffed enormous parties on private islands. It sounds outrageous (if not downright gross), but Dunn takes it in stride. “Sometimes, if I take a step back, I’m like, whoa, that was pretty crazy,” he says. Here, he talks about navigating a notoriously secretive industry, how he manages clients who mistreat their staff, and what it’s like to recruit a dog nanny. How did you get into this business?After university, I worked in a couple of Michelin restaurants in London. From there, I became a private chef. The hours and compensation were far better than working in restaurants. It’s a massive step up from your basic hospitality job. For me, it was also more interesting. I was packing up at a moment’s notice, going to the British Virgin Islands and then Gstaad on a private jet. Wh
(read more)
Work together With Joplin Cloud, share your notes with your friends, family or colleagues and collaborate on them. You can also publish a note to the internet and share the URL with others. Try it now Save web pages as notes Use the web clipper extension, available on Chrome and Firefox, to save web pages or take screenshots as notes. Get the clipper Customise it Customise the app with plugins, custom themes and multiple text editors (Rich Text or Markdown). Or create your own scripts and plugins using the Extension API. Find out more
(read more)
Among a certain tech set, Kubernetes has earned a reputation as an unnecessarily complicated time-sink that startups should avoid. Using Kubernetes with a small team is seen as a sign of over-engineering. I’m guilty of taking pithy jabs myself. I might gripe about Kubernetes sometimes, but it really is a great piece of technology. I highly recommend it to all my competitors.— Paul Butler (@paulgb) September 9, 2022 Despite my snark, “great piece of technology” truly is sincere; at the time of that post I had recently written about how much of Kubernetes’ complexity is necessary for what it does. We’ve been running Kubernetes in production for a few years now at Jamsocket, and I’ve found a good flow with it. Kubernetes serenity has been achieved internally. A big key to this has been carving out a small chunk of Kubernetes’ features and pretending the rest don’t exist. This post started as an internal guide to the way we use Kubernetes, so it’s not meant to apply prescriptively to every startup; nonetheless I think it’s a good starting place for avoiding many of the sandbars in the vast seas of Kubernetes. Why use Kubernetes at all? As I see it, Kubernetes is the best-travelled path if you want all three of these things: To run multiple processes/servers/scheduled jobs. To run them redundantly and load balance across them. To configure them, and the relationships between them, as code. At its most basic, Kubernetes is just a layer of abstraction that lets you think about a pool of computers if it were one (headless) computer. If that’s your use case, and you can avoid the other parts of it, you can get pretty far. Some people have told me that #2 is overkill, startups shouldn’t focus on zero-downtime deploys or high availability. But we often do multiple deploys per day, and when our products break, our customer’s products break for their users. Even a minute of downtime is noticed by someone. Rolling deploys give us the confidence to deploy unceremoniously and often. How we use Kubernetes For background, Jamsocket is a service for dynamically spinning up processes that a web app can talk to. Kind of like AWS Lambda, but where the p
(read more)
A team at my company ran into a peculiar and unexpected behavior with std::shared_mutex. This behavior only occurs on Windows w/ MSVC. It does not occur with MinGW or on other platforms. At this point the behavior is pretty well understood. The question isn't "how to work around this". The questions are: Is this a bug in std::shared_mutex? Is this a bug in the Windows SlimReaderWriter implementation? I'm going to boldly claim "definitely yes" and "yes, or the SRW behavior needs to be documented". Your reaction is surely "it's never a bug, it's always user error". I appreciate that sentiment. Please hold that thought for just a minute and read on. Here's the scenario: Main thread acquires exclusive lock Main thread creates N child threads Each child thread: Acquires a shared lock Yields until all children have acquired a shared lock Releases the shared lock Main thread releases the exclusive lock This works most of the time. However 1 out of ~1000 times it "deadlocks". When it deadlocks exactly 1 child successfully acquires a shared lock and all other children block forever in lock_shared(). This behavior can be observed with std::shared_mutex, std::shared_lock/std::unique_lock, or simply calling SRW functions directly. If the single child that succeeds calls unlock_shared() then the other children will wake up. However if we're waiting for all readers to acquire their shared lock then we will wait forever. Yes, we could achieve this behavior in other ways, that's not the question. I made a StackOverflow post that has had some good discussion. The behavior has been confirmed. However at this point we need a language lawyer, u/STL, or quite honestly Raymond Chen to declare whether this is "by design" or a bug. Here is code that can be trivially compiled to repro the error. #include #include #include #include #include #include #include struct ThreadTestData { int32_t numThreads = 0; std::shared_mutex sharedMutex = {}; std::atomic readCounter = 0; }; int DoStuff(ThreadTestData* data) { // Acquire reader lock data->sharedMutex.lock_shared(); // wait until all read threads have acquired their shared lock data->rea
(read more)
In the wave of AI controversies and lawsuits, CNET has been publicly admonished since it first started posting thinly-veiled AI-generated content on its site in late 2022— a scandal that has culminated in the site being demoted from Trusted to Untrusted Sources on Wikipedia [h/t Futurism].Considering that CNET has been in the business since 1994 and maintained a top-tier reputation on Wikipedia up until late 2020, this change came after lots of debate between Wikipedia's editors and has drawn the attention of many in the media, including some CNET staff members.It's important to remember th
(read more)
I read a novel where the rules for inheriting witchcraft resembles the real-world gene drive, so I developed a simulation and queried 86 million genealogy profiles to see how witchcraft would spread in real life. This blog post combines my two hobbies: programming and reading kids’ books. (No, really.) You might think I’m immature because I’m an adult reading kids’ books. I disagree. Middle-grade books (novels written for 9-12 year olds) distill a wide variety of topics, human nature, and life lessons into a short and concise format: I can finish one
(read more)
Paper Your browser does not support the video tag. Abstract Multi-view stereo reconstruction (MVS) in the wild requires to first estimate the camera parameters e.g. intrinsic and extrinsic parameters. These are usually tedious and cumbersome to obtain, yet they are mandatory to triangulate corresponding pixels in 3D space, which is the core of all best performing MVS algorithms. In this work, we take an opposite stance and introduce DUSt3R, a radically novel paradigm for Dense and Unconstrained Stereo 3D Reconstruction of arbitrary image collections, i.e. operating without prior information about camera calibration nor viewpoint poses. We cast the pairwise reconstruction problem as a regression of pointmaps, relaxing the hard constraints of usual projective camera models. We show that this formulation smoothly unifies the monocular and binocular reconstruction cases. In the case where more than two images are provided, we further propose a simple yet effective global alignment strategy that expresses all pairwise pointmaps in a common reference frame. We base our network architecture on standard Transformer encoders and decoders, allowing us to leverage powerful pretrained models. Our formulation directly provides a 3D model of the scene as well as depth information, but interestingly, we can seamlessly recover from it, pixel matches, relative and absolute camera. Exhaustive experiments on all these tasks showcase that the proposed DUSt3R can unify various 3D vision tasks and set new SoTAs on monocular/multi-view depth estimation as well as relative pose estimation. In summary, DUSt3R makes geometric 3D vision tasks easy. An all-in-one method Demonstration Input images previous scene next scene 3D reconstruction output Other outputs input image depth map confidence map Visualizations input image #1 input image #2 output point-cloud Your browser does not support the video tag.
(read more)
By the time the US and UK were preparing to invade Iraq, Saddam Hussein was spending much of his time hidden away writing novels and obsessing over Arabic grammar, according to a new book based on previously unpublished transcripts and documents from his regime.Very much like Richard Nixon, Saddam taped many conversations with his officials. The tapes were seized by US forces after the 2003 invasion, shipped to Washington to be transcribed and translated, but not made public.“There are hundreds of hours, if not more than 1,000, of Saddam talking to his comrades and generals, which have never seen the light of day,” Steve Coll said. “They have been reviewed by government historians and they have been indexed, but we don’t really know what’s on them.”Coll, an American journalist and author, fought a legal battle to gain access to a tranche of the material which is now the basis for his book, The Achilles Trap: Saddam Hussein, the CIA, and the Origins of America’s Invasion of Iraq.It is a tale of mutual misunderstanding, often told from a western perspective but now, for the first time in depth, from Saddam’s idiosyncratic point of view. The Iraqi dictator believed the CIA to be all-knowing and all-powerful, so assumed George W Bush’s administration knew very well Iraq had no weapons of mass destruction (WMD) left after Saddam ordered their destruction in the 1990s.The threatening rhetoric coming out of Washington was just propaganda, Saddam concluded, as he kept up a pretense of possessing WMD to deter his enemies, Iran in particular.“He was trying to signal his pride and his fear of humiliation and of vulnerability to both internal attacks and potential
(read more)
East Asian businesses often go out drinking. Why is this such an important part of corporate culture, relative to other world regions?A month ago, I didn’t know. Now, after my interviews with people in China and Korea, the answer is very obvious. Collective harmony and hierarchy are strongly idealised across East Asia. Communication is thus implicit and indirect. Conflict aversion and emotional suppression make it harder to learn what someone else really thinks. So what’s the solution?Alcohol reduces people’s inhibitions. This promotes social bonding and information-sharing. As argued in Edward Slingerland’s book “Drunk”, it benefits businesses! But this exact same cognitive shift also elevates risks of sexual abuse. Women may prefer to leave early. By doing so, they miss out on homosocial boozing and schmoozing.Late night in Seoul, my photoCultures vary in how much they value direct or indirect communication. In “The Culture Map”, Erin Meyer helpfully details the global heterogeneity of communication styles. Americans are extremely direct, they say what they think. Brits are a bit more subtle. To be polite we sugar-coat criticism, in ways that can be confusing for outsiders. Japanese are even more indirect: one must read between the lines.The Dutch and Israelis are famously direct. They don’t mind confrontation, so usually speak their mind and take no offence. By contrast, East Asians are more likely to value collective harmony. This means that they avoid d
(read more)
A datalog system that makes it easy to query the web / integrate with existing APIs. This has been running through my head for a few years now and I do occasionally try to work on it, but it’s a big project and I feel like I need my time outside of work to unwind. It pains me how much data / information just floats about but we don’t have anything generic to interact with it. The whole semantic web / RDF / SPARQL story comes close to providing a solution to this problem, but it’s way too unergonomic. Reminds me of Pengines, have you heard of it? If not there’s a nice talk about it by Anne Ogborn from StrangeLoop 2014. Working on something like this, but as a general programming language. Do you know about trustfall? You still would need to write the adapters, but from a query engine standpoint it is really nice. I’ve posted this in the past, but one of my dream tool is a micro package manager that quickly vendor 1-file packages. Python micro libraries management could look like: $ micro-pip install "is-even>0.1" -o utils $ cat utils.py # micro-pip: is-even==0.1.1 def is_even(x): return x % 2 == 0 $ micro-pip upgrade utils $ cat iseven.py # micro-pip: is-even==0.2.0 def is_even(x: int) -> int: return x % 2 == 0 Or even simpler: $ micro-pip install https://github.com/acme/is-even/blob/main/src/is_even.py -o utils Keep the file tracked in source repository, metadata is as simple as a comment. The micro-package could be a good old setup.py. With some smarter parsing, it could be possible to allow edit to vendored functions and use merging techniques to apply upgrade. Could also be possible to keep multiple micro-package in the same file. This would fix many of the arguments against micro libraries: Keep them in the VCS and reviewable while keeping them easy to upgrade and test. I had a weird dream at some point of a personal mediawiki like software. You could use it as a personal wiki, and put key/value tags on pages that could be used to search for things later. You could also ask it to suck in all your personal information (calendar, bank statements, etc) and had pre-built pages that gave you breakdowns of spending by category and so on, or a calendar of when you had various expenses. It would suck in your email and annotate expenses with the receipts from your inbox. it had a bunch of input plugins that would scrape data from various places the data was all piled into one big datastructure (something like a RDF triplestore?) there were a bunch of templates that would take data out of the datastructure and render them. (perhaps based on schema.org schemas?) for example, for data with dates, render it as a timeline, calendar, iCal etc. For things with a location, render them on a map, etc. people as vCard or
(read more)
We’ve been talking about systems performance a lot lately. Few days back Groq made news for breaking LLM inference benchmarks with their language processing unit hardware (LPU). The success of LPU is due to the innovative design of its hardware architecture, combined with a powerful compiler. As we have been focusing on performance lately, I think understanding what lies underneath the LPU hardware and compiler would be very relevant to our discussion. Groq has not published any papers on the LPU itself, but in the previous years they have published two papers (see this 2020 paper and this 2022 paper) explaining the design and implementation of their tensor streaming processor (TSP), and how they built a distributed inference engine using TSPs. Although they have not officially stated this, the LPU most likely is based on this distributed system or an extension of its design. In this article we are going to break down the architecture of a TSP and its compiler, followed by that we will see how Groq built a reliable and high throughput distributed AI inference engine using these TSPs.The architecture of the TSP is very different from a conventional CPU or GPU chip, mostly to make the TSP hardware more deterministic. Let’s first talk about what causes non-determinism in a CPU or GPU.The microarchitecture of CPUs and GPUs has many features which make the execution of instructions on these devices non-deterministic, i.e., you cannot guarantee when a particular instruction will execute, how long it will take to finish and when the results will be available.For instance, the modern CPU has:Super scalar architecture: capable of issuing multiple instructions per cycleOut-of-order execution: it can execute instructions in any orderSpeculative execution: In case of branches, it will make a guess on the branch condition being true or false and speculatively execute that branch ahead of time to improve throughput. If it is wrong, it has to discard its current work and go back to execute the other path of the branch.Instruction pipelining: It divides instruction execution into multiple stages and executes them in a pipelined manner. So that as one instruction moves onto the 2nd stage of the pipeline, the CPU can put a new instruction into the first stage of the pipeline. This again improves the instruction throughput.Multiple levels of caches: CPUs have 2-3 levels of caches to cut down the latency of instructions if they need to load data from memory.All of these make the order and timing of instruction execution in the CPU non-deterministic and hard to reason about. GPUs also have several sources of non-determinism, such as, caches, shared and global memory, dynamic resource partitioning.The problem with this inherent non-determinism in these devices is that it makes it hard to reason about the performance of a program and it is hard to guarantee a worst case performance bound. As a result, Groq came up with a radical new design for their tensor streaming processor (TSP) which has a ton of parallelism but zero non-deterministic behavior. They eliminated a lot of complexity from the hardware to give the compiler more power and control over the exac
(read more)
Your request was blocked. If you are the owner of the website: The Website Application Firewall that is protecting your website has blocked this request for being suspicious. You can see the detailed reason for this in your webserver logs. If you are the visitor: The public IP address assigned to you, by your internet provider, might be suffering from poor reputation: Look up IP reputation here. IP addresses from VPN providers or public networks often have poor reputation. 35.203.251.41
(read more)
An up-to-date Chromium-based web browser compatible with Windows XP, 2003, Vista, 7, 8.x, and newer. The official homepage for the Supermium projectSupermium is a drop-in replacement for Google C
(read more)
magical shell history English | 简体中文 Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server. exit code, duration, time and command shown As well as the search UI, it can do things like this: # search for all successful `make` commands, recorded after 3pm yesterday atuin search --exit 0 --after "yesterday 3pm" make You may use either the server I host, or host your own! Or just don't use sync at all. As all history sync is encrypted, I couldn't access yo
(read more)
Want another comic like this in your email every Saturday? Sign up here! I'll send you one of my favourite comi
(read more)
There’s a 2013 Black Mirror episode in which a young widow played by Hayley Atwell signs up to an online service that scrapes a person’s entire digital footprint to create a virtual simulation. She soon starts chatting online with her late husband (Domhnall Gleeson), before things inevitably get Black Mirror-y.Laurie Anderson, the American avant garde artist, musician and thinker, hasn’t seen the episode but, in the last few years, has lived a version of it: growing hopelessly hooked on an AI text generator that emulates the vocabulary and style of her own longtime partner and collaborator, Velvet Underground co-founder Lou Reed, who died in 2013.“People are like, ‘Wow, you were so prescient; I didn’t even know what you were talking about back then’,” she says on a video call from New York.A new Anderson exhibition, I’ll Be Your Mirror, has just opened in Adelaide, where Anderson will be doing an In Conversation event via live stream on Wednesday 6 March. The last time Anderson was in Australia, in March 2020, she spent a week working with the University of Adelaide’s Australian Institute for Machine Learning. Before the pandemic forced her to catch one of the last flights home, they had been exploring language-based AI models and their artistic possibilities, drawing on Anderson’s body of written work.In one experiment, they fed a vast cache of Reed’s writing, songs and interviews into the machine. A decade after his death, the resulting algorithm lets Anderson type in prompts before an AI Reed begins “riffing” written responses back to her, in prose and verse.Laurie Anderson and Lou Reed in Spain in 2009. Photograph: Robin Towsend/EPA“I’m totally 100%, sadly addicted to this,” she laughs. “I still am, after all this time. I kind of literally just can’t stop doing it, and my friends just can’t stand it – ‘You’re not doing that again are you?’“I mean, I really do not think I’m talking to my dead husband and writing songs with him – I really don’t. But people have styles, and they can be replicated.”The results, Anderson says, can be hit and miss. “Three-quarters of it is just completely idiotic and stupid. And then maybe 15% is like, ‘Oh?’. And then the rest is pretty interesting. And that’s a pretty good ratio for writing, I think.”On her side of the call, Anderson starts typing. “You know what, I’ll just bring it up right now while we’re talking and you can give me a phrase.”Looking at the morning traffic outside my window, I offer the very mundane, “bus idling on the street”. She feeds it in as we keep talking.‘I really do not think I’m talking to my dead husband … but people have styles, and they can be replicated.’ Photograph: Stephanie DianiBack in 2020, Anderson said the institute’s work was “like collaborating with the biggest brain you could imagine”.This was before ChatGPT and Midjourney, when for most people AI remained a far-off concept without mainstream applications – just fodder for sci-fi.These newer developments have brought fresh creative, ethical and legal questions, from concerns over AI porn to copyrighted works being used with
(read more)
"班長, hanchō - "Squad leader”, from 19th c. Mandarin 班長 (bānzhǎng, “team leader”)" Hancho is a simple, pleasant build system with few moving parts. Hancho fits comfortably in 500 lines of Python and requires no installation, just copy-paste it into your source tree. Hancho is inspired by Ninja (for speed and simplicity) and Bazel (for syntax and extensibility). Like Ninja, it knows nothing about your build tools and is only trying to assemble and run commands as fast as possible. Unlike Ninja, you don't need a separate build rule invocation for every single output file. Like B
(read more)
What is pyproject.nix Pyproject.nix is a collection of Nix utilities to work with Python project metadata in Nix. It mainly targets PEP-621 compliant pyproject.toml files and data formats, but also implement support for other & legacy formats such as Poetry & requirements.txt. Pyproject.nix aims to be a swiss army knife of simple customizable utilities that works together with the nixpkgs Python infrastructure. Foreword This documentation only helps you to get started with pyproject.nix. As it's a toolkit with many use cases not every use case can
(read more)
Published on 26 February 2024 “Tell me what you like about Go” A few weeks ago I was asked what I like about the Go language. It was during a job interview, and at that moment I realized I hadn't really given much thought to that, even though I use Go for almost every project for a while. After some thought, I decided to write it down. I share my experience from two perspectives: Ops perspective: on deploying and managing Go compiled programs. (Maybe my most important aspect) Developer perspective: on the Go language itself, the tooling, and the ecosystem. The Ops Perspective Performance. For my purposes and the kind of services I write, Go offers performances that are more than decent and it allows me to run Go programs on small cheaper instances and limited serverless runtimes, such as AWS Lambda Functions and Scaleway Serverless Jobs. For serverless execution, good performance is important because I am charged based on the execution time. Okay, maybe Go is not as efficient as Rust or C++, but coming from a heavy Python background, Go speed seems just stratospherical to me. Cross-compilation is a breeze. Ease of deployment on heterogeneous environments with multiple architectures is paramount. I write services running in the Cloud (serverless or IaaS), on bare-metal servers, on my laptop, and even on my Raspberry Pi 4. With the dawn of Arm64 servers (and maybe RISC-V 64 in the future?), I need cross-compilation that just works on my machine and the CI without turmoil. Static binaries and containerization. As previously stated, some of my projects run on heterogeneous environments. Naturally, containerization is thus the privileged method to package and deploy my services. Containerizing Go programs is quite easy, and since Go compiles fast, multi-stage image builds are pretty fast as well. Having static Go binaries allows me to choose very lightweight base images for containers, such as Alpine Linux, without worrying about libc dependencies. My images are typically a few megabytes. Startup time. When I work with orchestrators such as Kubernetes or AWS ECS I need containers to start fast, so rolling a new version or scaling out takes less time, which is always nice. As for serverless services that charge based on the execution time, lower startup times also mean saving money. The Developer Perspective The sweet spot between low-level and high-level. Before learning Go, I did a lot of Python (that I still use), which is considered a high-level language. In contrast, Go is a pretty low-level programming language, but it's certainly not as low-level as C either. I like this balance Go has. Not too low-level so I can ignore irrelevant details, but not too high-level when I need to use some low-level primitives such as atomic instructions, or want finer control of the layout of a struct. Type system. This one is highly subjective. I like static typing because I make many obvious silly errors that can be caught at compile-time easily. Go also has structural typing, which seems more intuitive than nominal typing to me. Ergonomic concurrent programming. That does not mean concurrent programming is easy just because of
(read more)
March 2024 Go to: Baseline | Solutions | Table of results | Final comments I saw the One Billion Row Challenge a couple of weeks ago, and it thoroughly nerd-sniped me, so I went to Go solve it. I’m late to the party, as the original competition was in January. It was also in Java. I’m not particularly interested in Java, but I’ve been interested in optimising Go code for a while. This challenge was particularly simple: process a text file of weather station names and temperatures, and for each weather station, print out the minimum, mean, and maximum. There are a few other constraints to make it simpler, though I ignored the Java-specific ones. Here are a few lines of example input: Hamburg;12.0 Bulawayo;8.9 Palembang;38.8 St. John's;15.2 Cracow;12.6 ... The only catch: the input file has one billion rows (lines). That’s about 13GB of data. I’ve already figured out that disk I/O is no longer the bottleneck – it’s usually memory allocations and parsing that slow things down in a program like this. This article describes the nine solutions I wrote in Go, each faster than the previous. The first, a simple and idiomatic solution, runs in 1 minute 45 seconds on my machine, while the last one runs in about 4 seconds. As I go, I’ll show how I used Go’s profiler to see where the time was being spent. The run-down of solutions is as follows, slowest to fastest: r1: simple and idiomatic r2: map with pointer values r3: parse temperatures by hand r4: fixed point integers r5: avoid bytes.Cut r6: avoid bufio.Scanner r7: custom hash table r8: parallelise r1 r9: parallelise r7 I wanted each of the solutions to be portable Go using only the standard library: no assembly, no unsafe, and no memory-mapped files. And 4 seconds, or 3.2GB/s, was fast enough for me. For comparison, the fastest, heavily-optimised Java solution runs in just under a second on my machine – not bad! There are several other Go solutions out there already, and at least one nice write-up. Mine is faster than some solutions, but slightly slower than the fastest one. However, I didn’t look at any of these before writing mine – I wanted my solutions to be independent. If you just care about the numbers, skip down to the table of results. Baseline Here are a few different baseline measurements to set the stage. First, how long does it take to just read 13GB of data, using cat: $ time cat measurements.txt >/dev/null 0m1.052s Note that that’s a best-of-five measurement, so I’m allowing the file to be cached. Who knows whether Linux will allow all 13GB to be kept in disk cache, though presumably it does, because the first time it took closer to 6 seconds. For comparison, to actually do something with the file is significantly slower: wc takes almost a minute: $ time wc measurements.txt 1000000000 1179173106 13795293380 measurements.txt 0m55.710s For a simple solution to the actual problem, I’d probably start with AWK. This solution uses Gawk, because sorting the output is easier with its asorti function. I’m using the -b option to use “characters as bytes” mode, which makes things a bit faster: $ time gawk
(read more)
March 1, 2024• Physics 17, 37Experiments demonstrate some of the unusual features of molecular reactions that occur in the deep cold of interstellar space. NASA; JPL-Caltech; UCLA Old flame. The Flame Nebula and two others shown here are part of the Orion Molecular Cloud. Researchers have now observed some carefully controlled reactions of the type that could occur in these nebulae. Many common small molecules are formed in interstellar space, and their low temperatures are expected to have profound effects on their chemical reactions because of quantum-mechanical effects that are masked at higher temperatures. Researchers have now demonstrated some of these cold chemistry phenomena—such as the effects of molecular rotation and collision energy on reaction rates—in a reaction between a hydrogen ion and an ammonia molecule in the lab. The results, while intuitively surprising at first glance, can be explained by a careful theoretical analysis of the quantum chemistry. Measuring reaction rates at low temperatures is useful for testing quantum-chemical theory because in those conditions molecules may occupy only a few well-defined quantum states. Such experiments could also offer insights into chemical processes in the cold clouds of gas in star-forming regions of interstellar space, where many of the simple molecules that make up solar systems are formed. But low-temperature experiments are difficult, especially for charged atoms and molecules (ions), because they are very sensitive to stray electric fields in the environment, which accelerate and heat up the ions. Given this difficulty, “until recently, hardly any experimental information on ion–molecule reactions at low temperatures was available, and theoretical predictions made many years ago were never tested,” says physical chemist Frédéric Merkt of the Swiss Federal Institute of Technology (ETH) in Zurich. To address this challenge, Merkt and his ETH colleagues studied reactions between two molecules that are common in interstellar clouds: hydrogen ions ( H2+) and ammonia ( NH3). They used heavy hydrogen (deuterium) molecular ions, D2+, because it is easier to match the speeds of these heavier molecules with the slower ammonia molecules and thereby to minimize their collision energy. In the reactions, D2+ steals an electron from NH3 and may also exchange a hydrogen for a deuterium, making HD and NH2D+. The researchers also looked at the collision with deuterated ammonia, ND3. D. Schlander/ETH Zurich Cold collisions. An ammonia molecule (NH3, blue and white) collides with a deuterium molecular ion (light blue). One of the deuterium’s electrons (yellow) is in a highly excited (Rydberg) state, which means that the ammonia “sees” a charged ion, even though the outside world does not. The ETH team allowed molecular beams of their two reactant molecules to converge in a reaction chamber and then measured the product molecules. To make the reactions insensitive to stray electric fields, Merkt and colleagues used a trick. Starting with D2, they effectively converted it to D2+, not by removing one of the electrons, but by boosting it with a
(read more)
A few months ago I introduced you to one of the more notable Apple pre-production units in my collection, a late prototype Macintosh Portable. But it turns out it's not merely notable for what it is than what it has on it: a beta version of System 6.0.6 (the doomed release that Apple pulled due to bugs), Apple sales databases, two online services — the maligned Mac Prodigy client, along with classic AppleLink as used by Apple staff — and two presentations, one on Apple's current Macintosh line and one on the upcoming System 7. Now that I've got the infamous Conner hard drive it came with safely copied over, it's time to explore its contents some more. We'll start with this Macintos
(read more)
A few months ago I introduced you to one of the more notable Apple pre-production units in my collection, a late prototype Macintosh Portable. But it turns out it's not merely notable for what it i
(read more)
I’ve been thinking about writing this post for a long time. Normally I haunt the comment section on Hacker News and whenever an article about GA comes up I post something to the effect of: “GA is okay but it’s not as good as those people say, there’s something wrong with it, what you really want is the wedge product on its own!” Which is not especially productive and probably slightly unhinged. So today I want to actually make that point in one central place that I can link to instead. To be clear I’m not opposed to GA per se. What I have a problem with is some of the details of GA, and the fact that the proponents of GA haven’t fixed those details yet. In particular: He
(read more)
Before the widespread existence of software repositories like CPAN, NPM, and PyPI, developers seeking to reuse an existing algorithm or library of routines would either check books or journal
(read more)
the perils of pause(2) November 30, 2023 [c, posix, coccinelle] I recently had a bug in a simple program that has a form I've seen a lot in the last few years: loops and signal handling without masking. The worst thing about these kinds of bugs is that they don't rear their heads immediately – they fall into the class of "huh, it's blocked in a syscall and I'm sure it should have woken up" bugs. Let's look at the problem and then how to lint it. 1. A common mistake I had some tooling for a test suite that would wait for a specified signal, and then print the name of that signal on stdout. I did this by setting up a signal handler, and then calling pause(), which suspends the program until a signal is delivered (i.e., it always returns EINTR). The program indicates to its cooperating programs that it's ready for the signal by printing "ok". static sig_atomic_t got; static void h(int n) { got = n; } //... if (sigaction(sig, &(struct sigaction){.sa_handler=h}, NULL)) abort(); write(1, "ok\n", 3); do { pause(); } while (sig != got); Every so often, this program will just hang and the test would time out. Worse yet, it's rare enough that I didn't really notice it when I wrote the code.1 (Why loop when we only expect one signal? There are other signals that will interrupt pause unless you've gone out of your way to ignore them all; for example, SIGTSTP.) One possible problematic execution is this: we print ok; before we get to pause, the other program sends the signal; now sig == got, but we pause anyway, and wait for another signal that will never come. Another common execution with this pattern is this: we pause, and get interrupted by some other signal; we test got against our desired sig and see it hasn't triggered; now our desired signal is delivered, and sig == got, but we're already past the test; we pause again, and have to wait arbitrarily long (till some other signal wakes us up). This also happens often in loops with poll or select: for (;;) { // A) either there's fd activity, or we get EINTR int n_active = poll(fds, n_fds, INFTIM); // [...] handle fds // B) check variables set by signal handl
(read more)
A giant anaconda species captured recently in the Amazon of Ecuador by a team of scientists is the largest to ever be documented, USA TODAY previously reported, and now, there are images showing just how massive the snake really is.The group of scientists from The University of Queensland, led by professor Bryan Fry, uncovered the nearly 10 million-year-old species with help from the Indigenous Huaorani people while filming "Pole to Pole with Will Smith," a National Geographic series that will stream on Disney+.Fry, as well as other scientists who studied the new species, shot incredible photos of the newly discovered snake in action.Here are some images of the northern green anaconda found in the Orinoco Basin of the Amazon.Images show 'magnificent' size of northern green anacondaThe invitation by Huaorani Chief Penti Baihua to enter the Baihuaeri Huaorani Territory in the Ecuadorian Amazon was "one of only a handful granted since the tribe’s first contact in 1958," Fry told USA TODAY.“The size of these magnificent creatures was incredible," Fry said in a news release earlier this month. "One female anaconda we encountered measured an astounding 6.3 meters (20.8 feet) long."Fry's team alongside the Huaorani people took canoes downriver in the Bameno region, where t
(read more)
2 high speed DACs, 1 high speed ADC. Just what you need to control the beam and get an image. Built on Glasgow, written in Amaranth. Glasgow makes getting bytes in and out of the FPGA over USB radically more accessibe. We use that to make getting data into and out of your microscope radically more accessible. Glasgow handles getting the bytes in and out of your computer. Our software takes those bytes and forms an image, while simultaneously streaming bytes to Glasgow to support raster and vector pattering applications. Order and test rev 1 PCBs (Design not uploaded, required significant rework) Capture 16,384 x 16,384 images Live viewer fast enough to focus and stigmate with Raster pattern mode at 16,384 x 16,384 image resolution, with 8 bit grayscale dwelltimes Order and test V1.0 PCBs Refactor gateware to support 16 bit grayscale vector and raster patterning (thanks Whitequark) Intergrate refactored gateware with UI Make minor desing-for-manufacturing and thermal changes to V1.1 PCBs (V1.1 uploaded in progress state) Order and test blanking and external/internal scan sellect PCBs Implement UI for new 16 bit grayscale imaging, vector and raster patterning modes. Implement Metadata for saved images We have crafted this board to support as many microscopes as possible. We do not know of a SEM or FIB that specifically does not have these signals somewhere inside that can be tapped. Many microscopes have an existing dedicated connector for external scan inputs. This was in general originally for external beam control coming from EDS or other X-Ray mapping systems. For microscopes that do not have a dedicated external scan connector, the X and Y ramps that drive the scan coils exist somewhere. A relay can be installed to flip between internal and external scan. Sometimes even when microscopes have a dedicated connector it is better to tap the X and Y signals somewhere else. Has a XY scan input that is either: ±1-10V differential ±1-10V single ended Has a video output that is: ±1-10V single ended Tapping into the signal path may require fabricating a custom cable. Specifically Tested Microscopes Microscopes the board has been
(read more)
Maritime Morse code was formally phased out in 1999, but in California, a group of enthusiasts who call themselves the “radio squirrels” keeps the tradition alive.“Calling all. This is our last cry before our eternal silence.” With that, in January 1997, the French coast guard transmitted its final message in Morse code. Ships in distress had radioed out dits and dahs from the era of the Titanic to the era of Titanic. In near-instant time, the beeps could be deciphered by Morse-code stations thousands of miles away. First used to send messages over land in 1844, Morse code outlived the telegraph age by becoming the lingua franca of the sea. But by the late 20th century, satellite radio was turning it into a dying language. In February 1999, it officially ceased being the standard for maritime communication.Nestled within the Point Reyes National Seashore, north of San Francisco, KPH Maritime Radio is the last operational Morse-code radio station in North America. The station—which consists of two buildings some 25 miles apart—once watched over the waters of the Pacific and Indian Oceans. Both KPH sites shut down in 1997, but a few years later, a couple of radio enthusiasts brought them back to life. The crew has gotten slightly larger over the years. Its members call themselves the “radio squirrels.” Every Saturday, they beep out maritime news and weather reports, and receive any stray messages. Much of their communication is with the SS Jeremiah O’Brien, a World War II–era ship permanently parked at a San Francisco pier.Explore the April 2024 IssueCheck out more from this issue and find your next story to read.View MoreLast July, the photographer Ann Hermes visited the radio squirrels and stepped into their time machine. To send a message, they tapped each Morse-code letter into a gadget called a “bug,” generating a loud, staticky noise that reverberated throughout the whole building. “It’s almost like jazz,” Hermes told me—a music of rhythm and timing that can sound slightly different depending on who is doing the tapping.Some of the hulking machines date back to World War II. The squirrels do their own repairs, and scrounge eBa
(read more)
Publication date 1981-08-01 Topics CADR, MACLISP, Interlisp-D, Artificial Intelligence, IJCAI Language English Interlisp-D and MIT CADR Lisp Machine demos for Vancouver IJCAI Conference - Tape #1 Addeddate 2024-02-19 05:08:06 Ccnum asr Closed captioning yes Collection-catalog-number V-141_1 Color color
(read more)
¶ A tale of two devices. Two digital devices debuted in 2007. One promised to revolutionize publishing but didn’t; the other made no such promises but still could.When Jeff Bezos launched Amazon’s Kindle ebook reader, publishing pundits said it would completely upend the industry as digital distribution had done for music. Publishing would surely follow suit. Print would be reduced to a relic.Ebooks began to gobble up market share almost immediately, growing by leaps and bounds. Initially. But then the trend hit a ceiling. While I was at Thomas Nelson I don’t recall ebooks ever exceeding a quarter of sales. The total probably stood lower.An Amazon Kindle taking center stage when the real star of the show, the iPhone, sits to the side. Photo by @felipepelaquim on UnsplashEbook sales
(read more)
Download PDF HTML (experimental) Abstract:Safety is critical to the usage of large language models (LLMs). Multiple techniques such as data filtering and supervised fine-tuning have been developed to strengthen LLM safety. However, currently known techniques presume that corpora used for safety alignment of LLMs are solely interpreted by semantics. This assumption, however, does not hold in real-world applications, which leads to severe vulnerabilities in LLMs. For example, users of forums often use ASCII art, a form of text-based art, to convey image information. In this paper, we propose a novel ASCII art-based jailbreak attack and introduce a comprehensive benchmark Vision-in-Text Challenge (ViTC) to evaluate the capabilities of LLMs in recognizing prompts that cannot be solely interpreted by semantics. We show that five SOTA LLMs (GPT-3.5, GPT-4, Gemini, Claude, and Llama2) struggle to recognize prompts provided in the form of ASCII art. Based on this observation, we develop the jailbreak attack ArtPrompt, which leverages the poor performance of LLMs in recognizing ASCII art to bypass safety measures and elicit undesired behavi
(read more)
February 29, 2024Getting a fiber Internet connection to your home is a big deal! It’s probably the last physical connection you’ll ever need, due to the virtually unlimited bandwidth, stability, performance, and attainable speeds.Having your ISP drop it off on the building entrance however is not enough. Wiring within a building is often needed, especially if you need to reach apartments, mechanical rooms, and all sorts of places where networking may be required.In the spirit of DIY, as I’m the ISP, I decided to upgrade my existing wiring in my home and document the process here, for everyone to read, learn from, and enjoy. So to get started, let’s understand what we’re dealing with.The buildingThe building I am installing fiber to has 4 floors, it has access to two streets, on opposite sides, and has three vertical paths that cut almost across its entire height. There are also two manholes, one on each street, where it’s possible to accept fiber optic cables from the outside world. Here’s a visual representation of that, using my advanced architectural design skills:These vertical paths are either pre-existing, or they were created in previous work, and they allow for the easy traversal of cables within conduit across floors, following all building and safety codes. As buildings in Europe have concrete slabs and single or dual brick walls, insulation layers, pipes, cables, including within each floor, having these there helps immensly in implementation time, cost, and overall effort involved.The designDoing work on Layer 1 of the TCP/IP model is tedious and slow, requires extra materials that may not be in stock at home, and creates a mess. You’re drillin
(read more)
Recently, tsnsrv has been getting a lot of high-quality contributions that add better support for Headscale and custom certificates, among other things. As they always do when things change, bugs crept in, and frustratingly, not in a way that existing tests could have caught: Instead of the go code (which has mildly decent test coverage), it was bugs in the nixos module!This was a great opportunity to investigate if we can test the tsnsrv NixOS module, and maybe improve the baseline quality of the codebase as a whole.A recent blog post series on the NixOS test driver (part1, part2) made the rounds showing off what it can do, so this felt like a tractable project to take on. Here’s my experience with it.If you haven’t read the blog post series above, here’s a quick summary: Your nix flake has an attribute set called checks that each define a test. Each test has definition for a set of NixOS machines (built as VMs) and a test script written in typechecked & linted python. Each machine exists as a variable in that python script, and you tell it things like wait_for_unit (wait until a systemd unit is started) or get_screen_text (OCR the pixels on the VM’s screen).To a jaded programmer, this sounds like the typical e2e/high-level integration test disaster: The environment in which you run the tests can cause variances in how programs interact, leading to such delightful test failures as “Waiting for a thing timed out” (more on that later). But.To say I was surprised th
(read more)
Publish your site with one command When your site is ready to be published, copy the files to our server with a familiar command: rsync -rv public/ pgs.sh:/myproj That's it! There's no need to formally create a project, we create them on-the-fly. Further, we provide TLS for every project automatically. Manage your projects with a remote CLI Use our CLI to manage your projects: ssh pgs.sh help Instant promotion and rollback Additi
(read more)
Autopilot Speed: Navigation: Drag to look around. Click to go somewhere. Toggle the autopilot anytime.
(read more)
The requested URL was rejected. Please consult with your administrator.Your support ID is: <13667626699990903781>[Go Back]
(read more)
Copyright © 2017 Google, Inc. Published by O'Reilly Media, Inc. Licensed under CC BY-NC-ND 4.0
(read more)
Loading... (If this doesn't load, you may have to enable WebGPU in your browser and reload this page)
(read more)
Please enable JS and disable any ad blocker
(read more)