Does Library Bloat Make Your Smartphone App Look Fat?

While earlier smartphones seemed to manage well enough with individual applications that only weighed in at a few megabytes, a perusal of the modern smartphone software store uncovers some positively monstrous file sizes. The fact that we’ve become accustomed to mobile applications requiring 100+ MB downloads on what’s often a metered Internet connection in only a few short years is pretty crazy if you stop to think about it.

Seeing reports that the Nest app for iOS tipped the scales at nearly 250 MB, [Alexandre Colucci] decided to investigate. On his blog he not only documents the process of taking the application apart piece by piece to find out just what’s eating up all that space, but lists some potential fixes which could shave a bit off the top. Even if you aren’t planning a spelunking expedition into your pocket supercomputer’s particular variant of the Netflix app, the methodology and tools he uses here are fascinating in their own right and might be something worth adding to your software bag of tricks.

By passing the application’s files through a disk usage visualizer called GrandPerspective, [Alexandre] immediately identified some rather large blocks of content. The bundled Apple Watch version of the app takes up 23 MB, video and audio used to walk the user through the device setup weigh in at 22 MB, and localization files for various languages consumes a surprising 33 MB. But the biggest single contributor to the application’s heft is the assorted libraries and frameworks which total up to an incredible 67 MB.

Of course the question is, how much of it is really necessary? It’s hard to be sure from an outsider’s perspective, but [Alexandre] notes that a few of the libraries used seem to be redundant or obsolete. In some cases this could be the result of old code still lurking in the project, but the four different libraries used for user tracking probably aren’t in there by accident. It also stands to reason that the instructional videos could be offloaded to something like YouTube, so that only users who need to view them have to expend their bandwidth on it.

Getting a little deeper into things, [Alexandre] notes that some of the localization images appear to be redundant. As a specific example, he points to the images of the Nest itself displaying Fahrenheit and Celsius temperatures. While logically this should only be two image files, there are actually eight copies of the Celsius image, each filed away as language-specific. These redundant localization images could easily be stripped out, but with gains measured in only a few hundred kilobytes, it probably wasn’t considered worth the effort during development.

In the end there’s really not as much bloat as we might like to believe. There were some redundant files, maybe a few questionable library inclusions, and the Apple Watch version of the app could surely be separated out. All together, it might get you a savings of 30 – 40%, but still not enough to bring it down under 100 MB.

All signs point to the fact that modern smartphone software development is just a lot more burdensome than us hackers might like. Save for projects looking to put control back into the hand’s of the users, it looks like mobile operating systems aren’t going to be slimming down anytime soon.

Arduino One Pixel Camera Sees All (Eventually)

Taking pictures in the 21st century is incredibly easy. So easy in fact that most people don’t even own a dedicated camera; from smartphones to door bells there are cameras built into nearly electronic device we own. So in this era of ubiquitous photography, you might think that a very slow and extremely low resolution camera wouldn’t be of interest. Under normal circumstances that’s probably true, but this single pixel camera built by [Tucker Shannon] is anything but normal.

Continue reading “Arduino One Pixel Camera Sees All (Eventually)”

Welcome To The Slow Death Of Satellite TV In America

During an earnings call on November 29th, CEO of AT&T Communications John Donovan effectively signed the death warrant for satellite television in the United States. Just three years after spending $67 billion purchasing the nations’s largest satellite TV provider, DirecTV, he made a comment which left little doubt about the telecom giant’s plan for the service’s roughly 20 million subscribers: “We’ve launched our last satellite.

The news might come as a surprise if you’re a DirecTV customer, but the writing has been on the wall for years. When the deal that brought DirectTV into the AT&T family was inked, they didn’t hide the fact that the actual satellite content delivery infrastructure was the least of their concerns. What they really wanted was the installed userbase of millions of subscribers, as well as the lucrative content deals that DirecTV had already made. The plan was always to ween DirecTV customers off of their satellite dishes, the only question was how long it would take and ultimately what technology they would end up using.

Now that John Donovan has made it clear their fleet of satellites won’t be getting refreshed going forward, the clock has officially started ticking. It won’t happen this year, or even the year after that. But eventually each one of the satellites currently beaming DirecTV’s content down to Earth will cease to function, and with each silent bird, satellite television (at least in the United States) will inch closer to becoming history.

Continue reading “Welcome To The Slow Death Of Satellite TV In America”

AI Bot Plays Castlevania So You Don’t Have To

We’re not allowed to have TV here in the Hackaday Wonder Bunker, but occasionally we’ll pool together the bandwidth credits they pay us in and gather ’round the old 3.5 inch TFT LCD to watch whatever Netflix assures us is 93% to our liking. That’s how we found out they’ve made a show based on, of all things, one of the Castlevania games for the NES. We wanted to play the game to understand the backstory, but since it hails from the era of gaming where primitive graphics had to be supplemented with soul-crushing difficulty, we didn’t get very far.

But thanks to a very impressive project developed by [Michael Birken] maybe we’ll have it all figured out by the time we’ve saved enough credits to watch Season 2 (no spoilers, please). The software, which he’s quick to point out is not an example of machine learning, is an attempt to condense his personal knowledge of how to play Castlevania into a plugin for the Nintaco NES emulator. The end result is CastlevaniaBot, which is capable of playing through the original Castlevania from start to finish without human intervention. You can even stop and start it at will, so it can play through the parts you don’t want to do yourself.

[Michael] started this project with a simple premise: if he could make a bot successfully navigate the many levels of Dracula’s castle, then getting it to kill a few monsters along the way should be easy enough. Accordingly, he spent a lot of time perfecting the path-finding for CastlevaniaBot, which included manually playing through the entire game in order to get an accurate map of the background images. These images were then analyzed to identify things like walls and stairs, so the bot would know where it could and couldn’t move protagonist Simon Belmont. No matter what the bot is doing during the game it always considers where it is and where it needs to be going, as there’s a time limit for each stage to contend with. Continue reading “AI Bot Plays Castlevania So You Don’t Have To”

Maze Generator Keeps Plotter (and Kids) Busy

We can tell that [Jon Howell] is our kind of guy. After updating his vintage 1985 Hewlett-Packard plotter with WiFi and the ability to load SVG files, he obviously needed to find a bunch of stuff to run off with it. Gotta justify those hacks somehow. So he doubled down and decided support a hack with another hack by writing a maze generator to keep his plotter well fed. He was kind enough to unleash his creation on an unsuspecting Internet as an open source project, and now we all can benefit from a couple of reams worth of mazes.

The generator itself is written in Java, and should work on whatever operating system your box happens to be running thanks to the *nix and Windows wrapper scripts [Jon] provides. To create a basic maze, one simply needs to provide the script with the desired dimensions and the paper size. You can define the type of paper with either standard sizes (such as --paper a4) or in the case of a plotter with explicit dimensions (--paper 36x48in).

If you aren’t a big fan of right angles, there’s support for changing the internal geometry of the maze to use a hexagonal or triangle grid. You can even pass the program a black and white PNG “mask” which it will use as the boundaries for the maze itself, allowing for personalized puzzles of whatever shape catches your fancy. [Jon] even ran the Wrencher though his software, leading to the creation of a maze which we can neither confirm nor deny will be making an appearance on our Christmas cards this year.

Whether you need to prove to your significant other that the hours you spent fiddling with your plotter are well spent, or an easy way to entertain the junior humans in your life, you can thank [Jon] for your solution.

Vintage Plotter Turned Fruit Spectrometer

Fruit can be a tricky thing: if you buy it ripe you’ll be racing against time to eat the pieces before they turn into a mushy mess, but if you buy the ones which are a bit before their prime it’s not always easy to tell when they’re ready to eat. Do you smell it? Squeeze it? Toss it on the counter to see if it bounces? In the end you forget about them and they go bad anyway. That’s why here at Hackaday we sustain ourselves with only collected rainwater and thermo-stabilized military rations.

But thankfully Cornell students [Christina Chang], [Michelle Feng], and [Russell Silva] have come up with a delightfully high-tech solution to this decidedly low-tech problem. Rather than rely on human senses to determine when a counter full of fruit has ripened, they propose an automated system which uses a motorized spectrometer to scan an arrangement of fruit. The device measures the fruit’s reflectance at 678 nm, which can be used to determine the surface concentration of chlorophyll-a; a prime indicator of ripeness.

If that sounds a bit above your pay grade, don’t worry. The students were able to build a functional prototype using a 1980’s era plotter, a Raspberry Pi, and a low-cost AS7263 NIR spectral sensor from SparkFun which just so happens to have a peak responsivity of 680 nm. The scanning is performed by a PIC32MX250F128B development board with an attached TFT LCD display so the results can be easily viewed. The Raspberry Pi is used in conjunction with a Adafruit PCA9685 I2C PWM driver to control the plotter’s stepper motors. The scanning and motor control could be done with the PIC32 alone, but to save time the students decided to use the Raspberry Pi to command the PCA9685 as that was what the documentation and software was readily available for.

To perform a scan, the stepper motors home the AS7263 sensor module, and then passes it under the fruit which is laying on a clear acrylic sheet. Moving the length of the acrylic sheet, the sensor is able to scan not only multiple pieces of fruit but the entirety of each piece; allowing it to determine for example if a section of a banana has already turned. The relative ripeness of the fruit is displayed to the user on the LCD display as a heatmap: the brighter the color the more ripe it is.

At the end of their paper, [Christina], [Michelle], and [Russell] note that while the scanner worked well there’s still room for improvement. A more scientific approach to calculating how ripe each fruit is would make the device more accurate and take out the guess work on the part of the end user, and issues with darker colored fruit could potentially be resolved with additional calibration.

While a spectrometer might sound like the kind of equipment that only exists in multi-million dollar research laboratories, we occasionally see projects like this which make the technology much more accessible. This year we saw a compact spectrometer in the Hackaday Prize, and going a bit farther back in time we even featured a roundup of some of the most impressive spectrometer builds on Hackaday.io.

Continue reading “Vintage Plotter Turned Fruit Spectrometer”

Arduino-Powered Rocket Test Stand

If you’re into amateur rocketry, you pretty quickly outgrow the dinky little Estes motors that they sell in the toy stores. Many hobbyists move on to building their own homebrew solid rocket motors and experimenting with propellant mixtures, but it’s difficult to know if you’re on the right track unless you have a way to quantify the thrust you’re getting. [ElementalMaker] decided he’d finally hit the point where he needed to put together a low-cost test stand for his motors, and luckily for us decided to document the process and the results.

The heart of the stand is a common load cell (the sort of thing you’d find in a digital scale) coupled with a HX711 amplifier board mounted between two plates, with a small section of vertical PVC pipe attached to the topmost plate to serve as a motor mount. This configuration is capable of measuring up to 10 kilograms with an 80Hz sample rate, which is critically important as these type of rocket motors only burn for a few seconds to begin with. The sensor produces hundreds of data points during the short duration of the burn, which is perfect for graphing the motor’s thrust curve over time.

Given such a small window in which to make measurements, [ElementalMaker] didn’t want to leave anything to chance. So rather than manually igniting the motor and triggering the data collection, the stand’s onboard Arduino does both automatically. Pressing the red button on the stand starts a countdown procedure complete with flashing LED, after which a relay is used to energize a nichrome wire “electronic match” stuck inside the motor.

In the video after the break you can see that [ElementalMaker] initially had some trouble getting the Arduino to fire off the igniter, and eventually tracked the issue down to an overabundance of current that was blowing the nichrome wire too fast. Swapping out the big lead acid battery he was originally using with a simple 9V battery solved the problem, and afterwards his first test burns on the stand were complete successes.

If model rockets are your kind of thing, we’ve got plenty of content here to keep you busy. In the past we’ve covered building your own solid rocket motors as well as the electronic igniters to fire them off, and even a wireless test stand that lets you get a bit farther from the action at T-0.

Continue reading “Arduino-Powered Rocket Test Stand”