Create your own arcade-style continue screen | Wireframe #19

Raspberry Pi’s Rik Cross shows you how to create game states, and rules for moving between them.

Ninja Gaiden’s dramatic continue screen. Who would be cruel enough to walk away?

The continue screen, while much less common now, was a staple feature of arcade games, providing an opportunity (for a small fee) to reanimate the game’s hero and to pick up where they left off.

Continue Screens

Games such as Tecmo’s Ninja Gaiden coin-op (known in some regions as Shadow Warriors) added jeopardy to their continue screen, in an effort to convince us to part with our money.

Often, a continue screen is one of many screens that a player may find themselves on; other possibilities being a title screen or an instruction screen. I’ll show you how you can add multiple screens to a game in a structured way, avoiding a tangle of if…else statements and variables.

A simple way of addressing this problem is to create separate update and draw functions for each of these screens, and then switch between these functions as required. Functions are ‘first-class citizens’ of the Python language, which means that they can be stored and manipulated just like any other object, such as numbers, text, and class instances. They can be stored in variables and other data types such as lists and dictionaries, and passed as parameters to (or returned from) other functions.

the continue screen of SNK’s Fantasy

SNK’s Fantasy, released in 1981, was the first arcade game to feature a continue screen.

We can take advantage of the first-class nature of Python functions by storing the functions for the current screen in variables, and then calling them in the main update() and draw() functions. In the following example, notice the difference between storing a function in a variable (by using the function name without parentheses) and calling the function (by including parentheses).

[Ed. comment: We have to use an image here because WordPress doesn’t seem to allow code indentation. We know that’s annoying because you can’t copy and paste the code, so if you know a better solution, please leave us a comment.]

The example code above calls currentupdatefunction() and currentdrawfunction(), which each store a reference to separate update() and draw() functions for the continue screen. These continue screen functions could then also include logic for changing which function is called, by updating the function reference stored in currentupdatefunction and currentdrawfunction.

This way of structuring code can be taken a step further by making use of state machines. In a state machine, a system can be in one of a (finite) number of predefined states, and rules determine the conditions under which a system can transition from one state into another.

Rules define conditions that need to be satisfied in order to move between states.

A state machine (in this case a very simplified version) can be implemented by first creating a core State() class. Each game state has its own update() and draw() methods, and a rules dictionary containing state:rule pairs – references to other state objects linked to functions for testing game conditions. As an example, the continuescreen state has two rules:

  • Transition to the gamescreen state if the SPACE key is pressed;
  • Transition to the titlescreen state if the frame timer reaches 10.

This is pulled together with a StateMachine() class, which keeps track of the current state. The state machine calls the update() and draw() methods for the current state, and checks the rules for transitioning between states. Each rule in the current state’s rules list is executed, with the state machine updating the reference to its current state if the rule function returns True. I’ve also added a frame counter that is incremented by the state machine’s update() function each time it is run. While not a necessary part of the state machine, it does allow the continue screen to count down from 10, and could have a number of other uses, such as for animating sprites.

Something else to point out is the use of lambda functions when adding rules to states. Lambda functions are small, single-expression anonymous functions that return the result of evaluating its expression when called. Lambda functions have been used in this example simply to make the code a little more concise, as there’s no benefit to naming the functions passed to addrule().

State machines have lots of other potential uses, including the modelling of player states. It’s also possible to extend the state machine in this example by adding onenter() and onexit() functions that can be called when transitioning between states.

Here’s Rik’s code, which gets a simple continue screen up and running in Python. To get it working on your system, you’ll need to install Pygame Zero. And to download the full code, visit our Github repository here.

Get your copy of Wireframe issue 19

You can read more features like this one in Wireframe issue 19, available now at Tesco, WHSmith, and all good independent UK newsagents.

Or you can buy Wireframe directly from Raspberry Pi Press — delivery is available worldwide. And if you’d like a handy digital version of the magazine, you can also download issue 19 for free in PDF format.

Make sure to follow Wireframe on Twitter and Facebook for updates and exclusive offers and giveaways. Subscribe on the Wireframe website to save up to 49% compared to newsstand pricing!

The post Create your own arcade-style continue screen | Wireframe #19 appeared first on Raspberry Pi.

Hosting a Booth at a STEM Event or Maker Faire

Jesse Brockmann is a senior software engineer with over 20 years of experience. Jesse works for a large corporation designing real-time simulation software, started programming on an Apple IIe at the age of six and has won several AVC event over the years. Jesse is also a SparkFun Ambassador so make sure your read down today’s post to find out where he’ll be next!

I’ve been doing various STEAM/STEM events for years to promote my JRover/DIYRovers project. I recently had a booth at the Kansas City Maker Faire to promote SparkFun and my latest project BotzFight (more on that at a later date). I thought I would share my experiences and maybe convince you to host your own booth.

This is a picture of my booth at the Kansas City Maker Faire

My booth at the Kansas City Maker Faire.

Hosting a booth is a lot of fun but it can be tiring. You will get a lot of the same questions over and over, but once in a while you will get a truly brilliant question that really makes you think. The more events you do, the more you’ll realize a lot of people will look at your display and not ask any questions. Try to engage them by talking to them. Ask them questions, like what their favorite booth is, or whether they are working on a project – anything to get them talking and try to see where it goes. Kids are the hardest and you have to realize you just won’t get through to some of them. Your best bet is to have something interactive they can move, touch or play with. I used a plasma globe to do this for the last year and so many kids just want to touch it, which gives you a chance to interact with them.

Rover booth

If you decide to host a booth, look for local STEM groups or maker spaces. Where I’m at in Iowa, the local region has a group specifically to promote STEM. I signed up to get notices of all upcoming events. I also go to // and look for possible events that are close enough to attend.

Things to think about before you apply: Will you need to bring your own table or chairs? If provided, what size are the tables? Will power and wifi be provided? There are also safety considerations if you have fire or anything that could be dangerous as part of your display. Once you find an interesting event, apply for it sooner rather than later, in case the number of spots is limited.

You often can get a booth for free if you are just promoting STEM and not trying to sell product or promoting a business. Selling your product is a whole other ballgame which I won’t cover, but if you do decide to sell keep in mind sales taxes and other permits you might need.

Rover booth

Before you go to an event, figure out how long you think it will take to set up, and double it. The more events you do, the more you can refine this. I’ve found a cart or wagon is a great way to reduce the number of trips for loading in or out. For Maker Faires I try to get set up early, then visit the other booths before the event starts. You will have very little time during an event to step away from your booth. I often get a lot of enjoyment out of talking to the other makers at these events.

cart full of booth supplies

Small things like a tablecloth, banners and some display stands can go a long way to making your booth look more professional. I suggest having some type of business card or email address easily visible for those that are really interested in what you are doing. Having free swag is always a bonus as well!

people interacting at the booth

Keep a drink nearby, and bring some snacks to eat during the down time. You might also want to bring a small paper bag or something for your trash. It’s generally fine if you need to step away from your booth for a bit for a restroom break or something, but if you have anything valuable make sure someone else is watching your booth or put it out of sight. If you can, having two people run a booth will really optimize this situation and you will be able to enjoy doing things at a bit of a slower pace. It really improves the set-up and teardown time as well.

Please, do not pack up until the time the event is over – it’s rude to pack up early. Otherwise try to leave the place as clean or cleaner than when you got there. Do your part to help, and double check you have everything before you leave. Try to find the organizer, and thank them for letting you participate if you didn’t run into them already.

tank maze table

I really enjoyed hosting a booth at the Kansas City Maker Faire and plan on doing many more STEM events this year. I hope to have a booth at the Milwaukee Maker Faire in September. If you are in the area then please stop in and say hi and try driving the tanks!

tank maze table

comments | comment feed

6CY7 dual triode valve amplifier


Josh built this 6CY7 dual triode valve amplifier:

I’ve always wanted to know what the “tube magic” was all about. There is much opinion in the science of music production, probably because music and its perception is highly personal and subjective. Ive always imagined that since transistor amplifiers were “perfect” with their large amounts of negative feedback, great linearity, and low THD that tube amplifiers must add something to sound that generates their appeal. From the reading I’ve done it has to do with harmonics.

More details on imsolidstate blog.

Friday Product Post: Enjoy the Ambience

Hello and welcome! We only have a couple products to show off today, because we’re getting Artemis ready for a full production run (let’s be honest, everything looks better in red), and we have a mid-week release next Wednesday! This week, we have a new Qwiic-enabled Ambient Light Sensor along with an updated LilyPad LED board.

Before we get into new products, we wanted to give you an early heads-up that we are having a sale tomorrow (Saturday, July 20th) in celebration of the 50th anniversary of the Apollo 11 moon walk. From 12:00 a.m. MT through 11:59 p.m. MT, use the promo code APOLLO11 to receive $50 off our SparkFun Inventor’s Kit for RedBot and the Arduino Engineering Kit. Please be aware that this sale is for in-stock items only, some exclusions do apply, and it’s only while supplies last.

Do you see what I see?

SparkFun Ambient Light Sensor - VEML6030 (Qwiic)

added to your cart!

SparkFun Ambient Light Sensor – VEML6030 (Qwiic)

In stock


The VEML6030 is a high accuracy ambient light sensor with 16-bit resolution. Even more impressive is that it can detect ligh…


Looking for an option to sense ambient light? The SparkFun VEML6030 Ambient Light Sensor is a great starter option. The VEML6030 is a high accuracy ambient light sensor with 16-bit resolution. Even more impressive is that it can detect light similarly to the way the human eye does. Utilizing our handy Qwiic system, no soldering is required to connect it to the rest of your system. However, we still have broken out 0.1″-spaced pins in case you prefer to use a breadboard.


added to your cart!


In stock


Blink any color you need!


Blink any color you need! Use the LilyPad RGB LED board as a simple indicator or, by pulsing the red, green and blue channels, you can produce a broad variety of colors. Each of the colors in the RGB LED is connected to one of the sew tabs on the board labeled R, G and B.

That’s it for this week! As always, we can’t wait to see what you make! Shoot us a tweet @sparkfun, or let us know on Instagram or Facebook. We’d love to see what projects you’ve made!

comments | comment feed

Don’t Let Encrypted Messaging Become a Hollow Promise

Why do we care about encryption? Why was it a big deal, at least in theory, when Mark Zuckerberg announced earlier this year that Facebook would move to end-to-end encryption on all three of its messaging platforms? We don’t just support encryption for its own sake. We fight for it because encryption is one of the most powerful tools individuals have for maintaining their digital privacy and security in an increasingly insecure world.

And although encryption may be the backbone, it’s important to recognize that protecting digital security and privacy encompasses much more; it’s also about additional technical features and policy choices that support the privacy and security goals that encryption enables.

But as we careen from one attack on encryption after another by governments from Australia to India to Singapore to Kazakhstan, we risk losing sight of this bigger picture. Even if encryption advocates could “win” this seemingly forever crypto war, it would be a hollow victory if it came at the expense of broader security. Some efforts—a recent proposal from Germany comes to mind—are as hamfisted as ever, attempting to give government the power to demand the plaintext of any encrypted message. But others, like the GCHQ’s “Ghost” proposal, purport to give governments the ability to listen in on end-to-end encrypted communications without “weakening encryption or defeating the end-to-end nature of the service.” And, relevant to Facebook’s announcement, we’ve seen suggestions that providers could still find ways of filtering or blocking certain content, even when it is encrypted with a key the provider doesn’t hold.

So, as governments and others try to find ways to surveil and moderate private messages, it leads us to ask: What policy choices are incompatible with secure messaging? We know that the answer has to be more than “don’t break encryption,” because, well, GCHQ already has a comeback to that one. Even when a policy choice technically maintains the mathematical components of end-to-end encryption, it can still violate the expectations users associate with secure communication.

So our answer, in short, is: a secure messenger should guarantee that no one but you and your intended recipients can read your messages or otherwise analyze their contents to infer what you are talking about. Any time a messaging app has to add “unless…” to that guarantee, whether in response to legislation or internal policy decisions, it’s a sign that messenger is delivering compromised security to its users.

EFF considers the following signs that a messenger is not delivering end-to-end encryption: client-side scanning, law enforcement “ghosts,” and unencrypted backups. In each of these cases, your messages remain between you and your intended recipient, unless…

Client-side scanning

Your messages stay between you and your recipient….unless you send something that matches up to a database of problematic content.

End-to-end encryption is meant to protect your messages from any outside party, including network eavesdroppers, law enforcement, and the messaging company itself. But the company could determine the contents of certain end-to-end encrypted messages if it implemented a technique called client-side scanning.

Sometimes called “endpoint filtering” or “local processing,” this privacy-invasive proposal works like this: every time you send a message, software that comes with your messaging app first checks it against a database of “hashes,” or unique digital fingerprints, usually of images or videos. If it finds a match, it may refuse to send your message, notify the recipient, or even forward it to a third party, possibly without your knowledge.

Hash-matching is already a common practice among email services, hosting providers, social networks, and other large services that allow users to upload and share their own content. One widely used tool is PhotoDNA, created by Microsoft to detect child exploitation images. It allows providers to automatically detect and prevent this content from being uploaded to their networks and to report it to law enforcement. But because services like PhotoDNA run on company servers, they cannot be used with an end-to-end encrypted messaging service, leading to the proposal that providers of these services should do this scanning “client-side,” on the device itself.

The prevention of child exploitation imagery might seem to be a uniquely strong case for client-side scanning on end-to-end encrypted services. But it’s safe to predict that once messaging platforms introduce this capability, it will likely be used to filter a wide range of other content. Indeed, we’ve already seen a proposal that Whatsapp create “an updatable list of rumors and fact-checks” that would be downloaded to each phone and compared to messages to “warn users before they share known misinformation.” We can expect to see similar attempts to screen end-to-end messaging for “extremist” content and copyright infringement. There are good reasons to be wary of this sort of filtering of speech when it is done on public social media sites, but using it in the context of encrypted messaging is a much more extreme step, fully undermining users’ ability to carry out a private conversation.

Because all of the scanning and comparison takes place on your device, rather than in the cloud, advocates of this technique argue that it does not break end-to-end encryption: your message still travels between its two “ends”—you and your recipient—fully encrypted. But it’s simply not end-to-end encryption if a company’s software is sitting on one of the “ends” silently looking over your shoulder and pre-filtering all the messages you send.

Messengers can make the choice to implement client-side scanning. However, if they do, they violate the user expectations associated with end-to-end encryption, and cannot claim to be offering it.

Law enforcement “ghosts”

Your messages stay between you and your recipient…unless law enforcement compels a company to add a silent onlooker to your conversation.

Another proposed tweak to encrypted messaging is the GCHQ’s “Ghost” proposal, which its authors describe like this:

It’s relatively easy for a service provider to silently add a law enforcement participant to a group chat or call. The service provider usually controls the identity system and so really decides who’s who and which devices are involved—they’re usually involved in introducing the parties to a chat or call. You end up with everything still being end-to-end encrypted, but there’s an extra ‘end’ on this particular communication. This sort of solution seems to be no more intrusive than the virtual crocodile clips that our democratically elected representatives and judiciary authorize today in traditional voice intercept solutions and certainly doesn’t give any government power they shouldn’t have.

But as EFF has written before, this requires the provider to lie to its customers, actively suppressing any notification or UX feature that allow users to verify who is participating in a conversation. Encryption without this kind of notification simply does not meet the bar for security.

Unencrypted backups by default

Your messages stay between you and your recipient……unless you back up your messages.

Messaging apps will often give users the option to back up their messages, so that conversations can be recovered if a phone is lost or destroyed. Mobile operating systems iOS and Android offer similar options to back up one’s entire phone. If conversation history from a “secure” messenger is backed up to the cloud unencrypted (or encrypted in a way that allows the company running the backup to access message contents), then the messenger might as well not have been end-to-end encrypted to begin with.

Instead, a messenger can choose to encrypt the backups under a key kept on the user’s device or a password that only the users know, or it can choose to not encrypt the backups. If a messenger chooses not to encrypt backups, then they should be off by default and users should have an opportunity to understand the implications of turning them on.

For example, WhatsApp provides a mechanism to back messages up to the cloud. In order to back messages up in a way that makes them restorable without a passphrase in the future, these backups need to be stored unencrypted at rest. Upon first install, WhatsApp prompts you to choose how often you wish to backup your messages: daily, weekly, monthly, or never.  In EFF’s Surveillance Self-Defense, we advise users to never back up their WhatsApp messages to the cloud, since that would deliver unencrypted copies of your message log to the cloud provider. In order for your communications to be truly secure, any contact you chat with must do the same.

Continuing the fight

In the 1990s, we had to fight hard in the courts, and in software, to defend the right to use encryption strong enough to protect online communications; in the 2000s, we watched mass government and corporate surveillance undermine everything online that was not defended by that encryption, deployed end-to-end. But there will always be attempts to find a weakness in those protections. And right now, that weakness lies in our acceptance of surveillance in our devices. We see that in attempts to implement client-side scanning, mandate deceptive user interfaces, or leak plaintext from our devices and apps. Keeping everyone’s communications safe means making sure we don’t hand over control of our devices to companies, governments, or other third parties.

Featured artist: Sash Zats

Sash Zats is a designer and generative artist working with AxiDraw. You can find him on instagram and twitter. One of the things about Sash’s work that I enjoy is his choices of materials. He often uses bold papers and subtle pen colors to bring his designs to life.

The sun and the moon

The Sun and the Moon are a compelling pair of drawings with gold and silver ink on black. The rich texture of the overlapping lines almost looks like textile work rather than ink.

maps on white

In describing these map drawings, Sash says:

For my dad’s 65th birthday I plotted places that are significant for our family.

maps on black

Continuing in the tradition of tool sharing that we have seen in generative artists, Sash included information about how he created the drawings, starting with calculating tile indices from coordinate bounds, parsing vector tiles protocol buffers, and converting to vectors before plotting with the AxiDraw.

Manhattan drawing

In a similar vein, this drawing of Manhattan buildings, blocks and neighborhood used data from NYC OpenData. Sash outlined his process for this one:

• data from NYC OpenData using httpie to filter unrelated data with
• process using #swift Xcode Playgrounds
• generate 3D geometry using #SceneKit
• export to .stl (.dae crashes #blender)
• export to SVG using Freestyle SVG to maintain occlusion
Svg Spatial Sort to optimise SVG for faster plotting
• plot using #axidraw v3 plotter

He published his Manhattan model as well.

Penrose tiling

Sash posted this Interrupted Penrose tiling with a link to Penrose’s lecture on tiling.

Anatomical heart of triangles

Delaunay triangulation is a familiar tool for generative artists, and is used in a series of drawings, including this anatomical heart drawn in white on bold red paper.

Drawing of a protein

The last picture I want to share is of the protein 5B0R, which Sash says, “when plotted looks like a badass graffiti.” I enjoy seeing science as an inspiration for art, and while I’ve seen a couple of artists plot proteins, the combination of the teal paper and light ink on this one give it a completely different perspective.

Thank you, Sash, for sharing your photos and processes! You can find more of his work, including videos of the drawing process on instagram and twitter.

Bitcoin mining on an Apollo Guidance Computer: 10.3 seconds per hash


Ken Shirriff implemented the SHA-256 hash algorithm and ran it on the vintage Apollo Guidance Computer (AGC) that they’re restoring:

We’ve been restoring an Apollo Guidance Computer. Now that we have the world’s only working AGC, I decided to write some code for it. Trying to mine Bitcoin on this 1960s computer seemed both pointless and anachronistic, so I had to give it a shot. Implementing the Bitcoin hash algorithm in assembly code on this 15-bit computer was challenging, but I got it to work. Unfortunately, the computer is so slow that it would take about a billion times the age of the universe to successfully mine a Bitcoin block.

See the full post on Ken Shirriff’s blog.

New AxiDraw Software v 2.5

We’re pleased to announce the release of the latest version of the AxiDraw software, 2.5. which includes a number of frequently-requested features that we’ve been working on over the last year.

An expanded user guide

Perhaps foremost, we have updated and greatly expanded the PDF AxiDraw user guide, which covers how to use the AxiDraw, including every part of the software. In addition to sections that go over the new features, we have thoroughly revised the rest, including a larger and clearer section on getting started.

A new SVG optimization tool

In normal use, the AxiDraw software plots elements in the same order that they occur in the file. However, depending on how your file was generated, that may not be the most efficient way to do things. If the order of the elements in the file is poor enough, the plot time can actually be dominated not by writing and drawing time, but by pen-up movements (illustrated here in red) between objects.

We’ve written a new SVG ordering utility, that can sorting of objects in an SVG document, re-ordering them as needed to reduce pen-up travel. It’s also a layer-aware and group-aware sorting tool, that can process a full document and reorder elements on each layer of the document and either respect or break apart other groups in your document. This tool is available in two versions: An individual Inkscape extension as well as an integrated version that you can use automatically within the AxiDraw software.

Better support for using multiple machines

The new AxiDraw software supports assigning names to individual AxiDraw units over USB, which you can use as semi-permanent labels when printing to a particular machine. You can also now plot to a specific AxiDraw, or simultaneously plot the same document to a number of connected machines.

A new version of Hershey Text

This release includes an all-new version of Hershey Text, our software for creating stroke-based text within Inkscape. You can about the new features in our blog post announcing it.

And more!

Amongst other improvements in the new software are the following:

  • Updated to use Inkscape 0.92
  • Paths in the document are now clipped gracefully and precisely at the boundaries of both the artboard (drawing canvas) and machine travel.
  • Supports more SVG object and layout types natively
  • Faster plotting on paths with very high vertex density
  • Online version check added
  • Improves behavior of Hatch Fill extension
  • Bug fixes galore

We recommend this new version to all AxiDraw users; you can download it for Mac, Windows, or Linux, following our guide here.

Life-Altering Copyright Lawsuits Could Come to Regular Internet Users Under a New Law Moving in the Senate

The Senate Judiciary Committee intends to vote on the CASE Act, legislation that would create a brand new quasi-court for copyright infringement claims. We have expressed numerous concerns with the legislation, and serious problems inherent with the bill have not been remedied by Congress before moving it forward. In short, the bill would supercharge a “copyright troll” industry dedicated to filing as many “small claims” on as many Internet users as possible in order to make money through the bill’s statutory damages provisions. Every single person who uses the Internet and regularly interacts with copyrighted works (that’s everyone) should contact their Senators to oppose this bill.

Take Action

Tell the Senate Not to Enable Copyright Trolls

Easy $5,000 Copyright Infringement Tickets Won’t Fix Copyright Law

Making it so easy to sue Internet users for allegedly infringing a copyrighted work that an infringement claim comes to resemble a traffic ticket is a terrible idea. This bill creates a situation where Internet users could easily be on the hook for multiple $5,000 copyright infringement judgments without many of the traditional legal safeguards or rights of appeal our justice system provides.

The legislation would allow the Copyright Office to create a “determination” process for claims seeking up to $5,000 in damages:

Regulations For Smaller Claims.—The Register of Copyrights shall establish regulations to provide for the consideration and determination, by at least one Copyright Claims Officer, of any claim under this chapter in which total damages sought do not exceed $5,000 (exclusive of attorneys’ fees and costs). A determination issued under this subsection shall have the same effect as a determination issued by the entire Copyright Claims Board.

This could be read as permission for the Copyright Office to dispense with even the meager procedural protections provided elsewhere in the bill when a rightsholder asks for $5000 or less. In essence, what this means is any Internet user who uploads a copyrighted work could find themselves subject to a largely unappealable $5,000 penalty without anything resembling a trial or evidentiary hearing. Ever share a meme, share a photo that isn’t yours, or download a photo you didn’t create? Under this legislation, you could easily find yourself stuck with a $5,000 judgment debt following the most trivial nod towards due process.

Every Internet User Could Face Life-Altering Money Judgments Thanks to Statutory Damages

Proponents of the legislation argue that the bill’s cap on statutory damages in a new “small claims” tribunal will protect accused infringers. But the limits imposed by the CASE Act of  $15,000 per work are far higher than the damages caps in most state small claims courts—and they don’t require any proof of harm or illicit profit. The Register of Copyrights would be free to raise that cap at any time. And the CASE Act would also remove a vital rule that protects Internet users – the registration precondition on statutory damages.

Today, someone who is going to sue a person for copyright infringement has to register their work with the Copyright Office before the infringement began, or within three months of first publication, in order to be entitled to statutory damages. Without a timely registration, violating someone’s copyright would only put an infringer on the hook for what the violation actually cost the copyright holder (called “actual damages”), or the infringer’s profits. This is a key protection for the public because copyright is ubiquitous: it automatically covers nearly every creative work from the moment it’s set down in tangible form. But not every scribble, snapshot, or notepad is eligible for statutory damages—only the ones that U.S. authors make a small effort to protect up front by filing for registration. But if Congress passes this bill, the timely registration requirement will no longer be a requirement for no-proof statutory damages of up to $7,500 per work. In other words, nearly every photo, video, or bit of text on the Internet can suddenly carry a $7,500 price tag if uploaded, downloaded, or shared even if the actual harm from that copying is nil.

For many Americans, where the median income is $57,652 per year, this $7,500 price tag for what has become regular Internet behavior would result in life-altering lawsuits from copyright trolls that will exploit this new law. That is what happens when you eliminate the processes that tend to ensure only a truly motivated copyright holder can obtain statutory damages.

Censorship of Speech Will Become More Pervasive Under this Legislation

Another major problem with the CASE Act is how it transforms a Digital Millennium Copyright Act (DMCA) Notice into a long-term censorship tool. Under current law, if a copyright holder submits a takedown notice to an online platform alleging that your post infringed their copyright, you have a right to file a counter-notice if you disagree. There are many times when false takedown claims occur on the Internet and perfectly lawful speech is suppressed, and counter-notices are an important, though flawed, check on abuse. But the CASE Act would allow a party that filed a takedown notice to also bring a claim with the new “small claims” tribunal. When they do so, the Internet platform doesn’t have to honor the counter-notice by putting the posted material back online within 14 days. Already, some of the worst abuses of the DMCA occur with time-sensitive material, as even a false infringement notice can effectively censor that material for up to two weeks during a newsworthy event, for example. The CASE Act would allow unscrupulous filers to extend that period by months, for a small filing fee.

If all these outcomes sound terrible to you and you want to send a clear message to Congress not to move forward, then you need to contact your Senators right away to tell them you oppose the CASE Act (S. 1273) and want them to oppose it on your behalf.

Take Action

Tell the Senate Not to Enable Copyright Trolls

Weekly Editorial Round-Up: Machine learning bubble blowing, Raspberry Pi 4, 6,000 thanks & more

INewImage 21 1 1


We’ve got so much happening here at Adafruit that it’s not always easy to keep up! Don’t fret, we’ve got you covered. Each week we’ll be posting a handy round-up of what we’ve been up to, ranging from learn guides to blog articles, videos, and more.


Machine learning bubble blowing … Tiny Machine Learning on the Edge with TensorFlow Lite Running on SAMD51

You’ve heard of machine learning (ML), but what is it? And do you have to buy specialty hardware to experiment? Nope! If you have some Adafruit hardware, you can build some Tiny ML projects today!

We’ve wrappered the TensorFlow Lite micro speech demo to Arduino so you can do basic speech recognition on our SAMD51 boards. Read more

More BLOG:


Program in Logo on an Apple II

Learn how to program 80s-style with Logo running on an Apple II – it’s Turtles all the way down!

You may have seen the turtle graphics library that ladyada ported to CircuitPython and thought, “Wow, that’s cool! But can I do that on 30+ year old hardware?” Or if you’re above a certain age you may remember doing something similar in school on an Apple II. Learn more.


Browse all that’s new in the Adafruit Learning System here!