Coding as a Foreign Language

How many of you speak more than one language? Since Hackaday is an English-language site whose readership is world-wide, we are guessing quite a lot of you are not monoglots. Did you learn your second or third languages at school, and was it an experience you found valuable? How about your path into software? If you are a coder, were you self-taught or was your school responsible for that as well?

It’s been a constant of the last few decades, officials and politicians in charge of education worrying that tech-illiterate children are being churned out of schools ill-equipped for the Jobs Of Tomorrow, and instituting schemes to address the issue. One of the latest of these ideas has come our way from Florida, and it’s one that has sparked some controversy. It sounds simple enough, make coding equivalent to language learning when it comes to credits in Floridian high schools.

You might think that this idea would be welcome, but instead it has attracted criticism from those concerned that it will become an either-or choice in cash-strapped school districts. This could lead to kids without an extra language being at a disadvantage when it comes to applying for higher education. There are also concerns that the two subjects are not equivalent, and should not be conflated.

It’s difficult from the perspective of an adult technical journalist without a background in education to speculate on the relative benefits to young minds of either approach. It is very likely though that just as with previous generations the schools will discover that there is limited benefit in pushing coding at kids with little aptitude or interest in it, and that the benefits in terms of broader outlook and intellectual exercise gained by learning another language might be lost.

Which was more valuable to you at school, coding or learning a language? Were you of the generation that learned coding through BASIC from the manual that came with your home computer, and should today’s kids be doing the same with Scratch and Python on boards like the Raspberry Pi? Let us know in the comments.

Child at computer image: Nevit Dilmen [CC-BY-SA-3.0], via Wikimedia Commons.

Electric Train Demonstrator

If you ever want to pique a kid’s interest in technology, it is best to bring out something simple, yet cool. There was a time that showing a kid how a crystal radio could pull in a radio station from all the way across town fit the bill. Now, that’s a yawner as the kid probably carries a high-tech cell phone with a formidable radio already. Your latest FPGA project is probably too complicated to grasp, and your Arduino capacitance meter is–no offense–too boring to meet the cool factor criterion.

There’s an old school project usually called an “electromagnetic train” that works well (Ohio State has a good write up about it as a PDF file). You coil some bare copper wire around a tubular form to make a tunnel. Then a AAA battery with some magnets make the train. When you put the train in the tunnel, the magnetic forces propel the train through the tunnel. Well, either that or it shoots it out. If that happens, turn the train around and try again. There’s a few of these in Internet videos and you can see one of them (from [BeardedScienceGuy]) below.

Continue reading “Electric Train Demonstrator”

Unary Clock for the Binary-Challenged

If binary clocks have you confused by all the math required to figure out what time it is, we have the solution for you: a unary clock. After all, what’s simpler than summing up powers of two? Powers of one! To figure out the time, you start with the ones digit. If it’s on, you add one to the total. Then move on to the next digit. Since 12 equals one, you add another one if it’s lit. Then on to the third LED. 13 = 1, so if it’s lit, you add another one, and so on.

OK, we’re messing around. Calling this a “unary” clock is ridiculous. When it’s seven o’clock, there are seven LEDs lit. Nice and easy to read. Sixty minute LEDs is silly, so here each minute LED stands for five minutes. Good enough.

What we really like about this clock is the build. It’s intended as educational for school kids, so it has to be simple to build and easy to personalize. Building the body out of Lego bricks fits the specs nicely. Transparent Lego bricks are used to give the white LEDs some color. That was too bright, so [Shrimping It] added paper cutouts from a hole punch as diffusers.

Clock builds are a great intro to electronics because they offer so many possibilities. Whether you want to go geary, use the clock as an excuse to try out fabrication techniques, or showcase a neat display technology, your imagination has a lot of room to wander. Show us yours?

Kids and Hacking: The One Hour Egg Drop

In the last Hacking and Kids post, I talked about an activity you can do with kids when you don’t have a lot of time or resources. The key idea was to have fun and learn a little bit about open and closed loop control. One of the things I usually briefly mention when I do that is the idea of a design trade: Why, for example, a robot might use wheels instead of legs, or treads instead of wheels.

Engineers and makers perform trades like this all the time. Suppose you are building a data logging system. You want precise samples, large storage capacity, and many channels. But you also want a low cost and low power drain. You might also want high reliability. All of these requirements will lead to different trades. A hard drive would provide a lot of space, but is more expensive, less reliable, larger, and more power hungry than, say, an SD card. So there isn’t a right choice. It depends on which of the factors are most important for this particular design. A data logger in a well-powered rack might be well served to have a terrabyte hard drive, while a battery powered logger in a matchbox that will be up on the side of a mountain might be better off with an SD card.

We can all relate to that example, but it is pretty boring to a kid. You probably can’t get them to design a data logger, anyway. But if I have about an hour and a little prep time, I have a different way to get the same point across. It is a modified version of the classic “egg drop”, but it is simple enough to do in an hour with very little preparation time.

Continue reading “Kids and Hacking: The One Hour Egg Drop”

Flat Pack Elastic Band Lamp is a Thing of Beauty

[Matt] was looking for a project for his senior industrial design studio at Wentworth Institute of Technology. He ended up designing a clever lamp that can be flat packed. [Matt] started by drawing out designs on paper. He really liked the idea of combining curves with straight lines, but he wanted to translate his two-dimensional drawings into a three-dimensional shape.

zOz0ys6 - ImgurHaving access to a laser cutter made the job much easier than it could have been and allowed [Matt] to go through many designs for the lamp frame. The two main pieces were cut from acrylic and include mounting pegs for the elastic bands. The two plastic pieces are designed to slot together, forming a sort of diamond shape.

The final version of the lamp required that the elastic bands had holes punched in them for mounting. The holes were placed over the small pegs to keep the bands in place. [Matt] used 3/4″ industrial elastic bands for this project. He then used a 120V 15W candelabra light bulb to illuminate the lamp. The final design is not only beautiful, but it can be flat packed and manufactured inexpensively.

If you want more inspiration for artistically designed lamps check out this one that uses the corrugation in cardboards as a shade pattern.

[via reddit]

Hacking Oklahoma State University’s Student ID Cards

[Sam] took an information security class at Oklahoma State University back in 2013. For his final project, he and a team of other students had to find a security vulnerability and then devise a theoretical plan to exploit it. [Sam’s] team decided to focus on the school’s ID cards. OSU’s ID cards are very similar to credit cards. They are the same size and shape, they have data encoded on a magnetic strip, and they have a 16 digit identification number. These cards were used for several different purposes. Examples include photo ID, physical access to some areas on campus, charges to an online account, and more.

[Sam] and his team analyzed over 100 different cards in order to get a good sample. They found that all cards started with same eight digits. This is similar to the issuer identification number found in the first six digits of a credit card number. Th analysis also showed that there were only three combinations used for the next two digits. Those were either 05, 06, or 11. With that in mind, the total possible number of combinations for card numbers was mathematically calculated to be three million.

OSU also had a URL printed on the back of each card. This website had a simple form with a single field. The user can enter in a 16 digit card number and the system would tell the user if that card was valid. The page would also tell you if the card holder was an employee, a student, or if there were any other special flags on the card. We’re not sure why every student would need access to this website, but the fact is that the URL was printed right on the back of the card. The website also had no limit to how many times a query could be made. The only hint that the university was aware of possible security implications was the disclaimer on the site. The disclaimer mentioned that usage of the tool was “logged and tracked”.

The next step was to purchase a magnetic card reader and writer. The team decoded all of the cards and analyzed the data. They found that each card held an expiration date, but the expiration date was identical for every single card.  The team used the reader/writer to copy the data from [Sam’s] card and modify the name. They then wrote the data back onto a new, blank magnetic card. This card had no printing or markings on it. [Sam] took the card and was able to use it to purchase items from a store on campus. He noticed that the register reached back to a server somewhere to verify his real name. It didn’t do any checks against the name written onto the magstripe. Even still, the cashier still accepted a card with no official markings.

The final step was to write a node.js script to scrape the number verification website. With just 15 lines of code, the script will run through all possible combinations of numbers in a random sequence and log the result. The website can handle between three and five requests per second, which means that brute forcing all possible combinations can be completed in roughly two days. These harvested numbers can then be written onto blank cards and potentially used to purchase goods on another student’s account.

[Sam’s] team offers several recommendations to improve the security of this system. One idea is to include a second form of authorization, such as a PIN. The PIN wouldn’t be stored on the card, and therefore can’t be copied in this manner. The primary recommendation was to take down the verification website. So far OSU has responded by taking the website offline, but no other changes have been made.

Arduino Tetris on a Multiplexed LED Matrix

[Alex] needed a project for his microcomputer circuits class. He wanted something that would challenge him on both the electronics side of things, as well as the programming side. He ended up designing an 8 by 16 grid of LED’s that was turned into a game of Tetris.

He arranged all 128 LED’s into the grid on a piece of perfboard. All of the anodes were bent over and connected together into rows of 8 LED’s. The cathodes were bent perpendicularly and forms columns of 16 LED’s. This way, if power is applied to one row and a single column is grounded, one LED will light up at the intersection. This method only works reliably to light up a single LED at a time. With that in mind, [Alex] needed to have a very high “refresh rate” for his display. He only ever lights up one LED at a time, but he scans through the 128 LED’s so fast that persistence of vision prevents you from noticing. To the human eye, it looks like multiple LED’s are lit up simultaneously.

[Alex] planned to use an Arduino to control this display, but it doesn’t have enough outputs on its own to control all of those lights. He ended up using multiple 74138 decoder/multiplexer IC’s to control the LED’s. Since the columns have inverted outputs, he couldn’t just hook them straight up to the LED’s. Instead he had to run the signals through a set of PNP transistors to flip the logic. This setup allowed [Alex] to control all 128 LED’s with just seven bits, but it was too slow for him.

His solution was to control the multiplexers with counter IC’s. The Arduino can just increment the counter up to the appropriate LED. The Arduino then controls the state of the LED using the active high enable line from the column multiplexer chip.

[Alex] wanted more than just a static image to show off on his new display, so he programmed in a version of Tetris. The controller is just a piece of perfboard with four push buttons. He had to work out all of the programming to ensure the game ran smoothly while properly updating the screen and simultaneously reading the controller for new input. All of this ran on the Arduino.

Can’t get enough Tetris hacks? Try these on for size.