Wednesday, December 28, 2016

Load Hangouts Messages into BigQuery

I use Google Hangouts to talk to my girlfriend. I like it because it's a part of the Google stack and it's cross platform. It also supports some decent voice and video calling. Just like with any data you have in Google's system, you can download it in bulk. I decided to take the JSON data you can get from Hangouts and put it into Bigquery to run some interesting analytics on it. Let's see what we can do!

Monday, December 5, 2016

Another Printer Partout

Welcome to another edition of "Taking Apart Printers!" Today, we're taking apart a HP Photosmart C4680. I'm kinda excited about this one because it has a scanner and a tiny LCD screen, so that's pretty exciting. This was my printer, so I'm glad I'm recycling it. It's nice to at least try in full faith to reuse some parts to make something else, even though I'm only learning how. It beats the hell out of buying parts, right? Also, taking things apart is fun.

Wednesday, November 30, 2016

Taking Apart Toy Video Cameras

Toy cameras. They're fun to give to kids so they can take pictures without ruining your camera. They're low quality and cheap. But what's powering them? Anything cool? Anything useful? Many of them at least have an LCD screen, but what other treasures are they hiding?

Tuesday, November 29, 2016

DJ Hard Drive Turn Table Part 3 - Playing Audio

So now the turn table is writing output to the serial connection off of the Arduino. This is very good. But what good is it if we can't play audio with it? That's what this part is all about: translating the signals from the turntable into audio modulations that we can hear. In this case, we're speeding up and slowing down a audio track. Let's get started!

Monday, October 31, 2016

State of the Blog

About one year ago, I started this blog as a place for interesting computer stuff I did so people could learn as I did about new and often undocumented things and how to break them. Even with the very well documented stuff, I still had to figure some implementation details out. I know I had a blast learning and writing about this stuff, but I'd like to address some of the more meta things about this blog in this post. I try to keep it to one meta post a year, and this is it for this year.

Sunday, October 30, 2016

DJ Hard Drive Turn Table Part 2

Welcome back to this episode of "Why isn't this working?" This week, we have the DJ Hard Drive Turn Table. When we left off, we weren't getting accurate directional readings from the drive. Needless to say, that kinda sucked. So I took it to an oscilloscope to figure out what was going on with the output of the op amps. It turns out it was a really weird problem.

Thursday, September 29, 2016

Virtual Reality Using Your Computer as a Controller

I've been playing around with ThreeJS more and more now and I'm still not getting the hang of it. But I still enjoy using it even though I'm struggling through the darkness. I wanted to do something with its VR capabilities, but I also didn't want to pay an arm and a leg to get a decent VR headset. So I did the next best thing. I broke out my cardboard and played around with it. The results weren't Vive quality for sure, but for $15, it's exceptional what you can do with it. Unfortunately, it's hard to control something like this without a controller like the Vive. So I did something like Oculus did - made the computer the controller - but I did it without wires.

Monday, September 26, 2016

DJ Hard Drive Turn Table Part 1

There are tons of tutorials on how to do this on the internet. The hard drive is an amazing part to do this with because the motor and bearings are so smooth and provide very low resistance of rotation while still being light. It could also turn itself (having a motor and all) and, best of all, it was free because my roommate dropped it and it stopped working. Which is a shame because it was 2.5TB. Regardless, I knew what I wanted to do with it almost immediately.

Tuesday, August 30, 2016

Quick Computer Teardown

I was moving out of my apartment, but I didn't want to take these two computers I found in the dumpster. At least, not all of them. The big bulky cases were stupid to take with me, so I decided to tear them down and see how compact we could make it while still keeping it reasonably usable. These were two old computers, but I imagine I could do something fun with them at one point.

Wednesday, August 17, 2016

Render Farm - 3D Edition!

A few months ago I wrote a simple render farm in PHP using imagemagick. But it could only deal with very simple animations in 2D space. What if we could deal with complex scenes in 3D space? And, what if instead of using hacky HTTP transactions to move data back and forth, we used Socket.io to form a true protocol? Well, that's exactly what we're going to do here.

Wednesday, July 27, 2016

Unraveling Samsung PC Studio 3's SMS Database

Back in the days of flip phone popularity, Samsung was a very popular name. My first phone was a Samsung SGT-T339 (T-Mobile exclusive). This got me through middle school, so as you can imagine the text message functionality was used a lot. Sagas of he said/she said nonsense and other various 7th grade nonsense. I was not above it by any stretch of the imagination. Being as I was (and still am) addicted to archiving everything, I used a program called Samsung PC Studio 3 to unload my text messages when it got full. The database was in some nonstandard format. I wanted to convert it to something I could open in excel, like CSV. So it's time to reverse engineer!

Tuesday, July 26, 2016

Make Your Own Firebase

You read right. We're going to be duplicating what I think is the best part of Firebase (before Google made everything the coolest part): the real time database. This is really neat because essentially every client will have the same copy of an object in the database, essentially removing the need to keep asking the server for updates. We're going to be copying the very basics of this behavior, but it can be extended way beyond what we're doing here.

Saturday, June 25, 2016

Running Your Own Cloud (Not the Google Drive Kind)

What does one mean when they say "cloud?" This buzzword is used to describe so many things. Google Drive is a cloud where you can store all of your documents and access them from anywhere. AWS is a cloud where you can create VMs and store objects and data for pragmatic retrieval. The difference between these two clouds lies in the audience; the concept remains the same: using resources that are managed remotely and without impact on your local system. That's the point of the cloud, and its been around for ages. We've just never called it the cloud. Today, we're going to be constructing the latter: we're going to make our own personal AWS or Google Cloud.

Saturday, June 4, 2016

For Pete Sakes, Erase Your Hard Drives!

I get that some people don't know as much about computers as some other people. But there are things that certainly should be common sense. And if they're not, we need to make it common sense. I don't want this to be a rant, but rather I want to create a brief guide on how to safely erase your Hard Drive. I've bought hard drives that weren't wiped and had all sorts of personal information on them. There was one I bought that had about 18 partitions where each one was somebody's computer. On it were personal pictures, documents, even correspondence with what seemed like Russian wife penpals. I'm sure whoever wrote that didn't want that to get out, and whoever maintained and sold that hard drive was very irresponsible and reckless. That being said, I'm going to go over a vast multitude of methods of wiping your hard drive so that before you sell, throw away, or recycle your computer, you know that your data is not on it.

Wednesday, May 25, 2016

Hacking Knock Off Smartwatches from China

Is it possible? From the very onset I feel like I'm way over my head here. But we'll try to get our own software to run on one of these bad boys. We'll see just what happens.

I have two cheap smartwatches at my disposal. The one that we'll be focusing on for this post is this one. Now, don't let the picture fool you. This smartwatch isn't nearly as good looking as that. The screen resolution is probably 320x240, but it technically does everything that it says it does. The goal is to take it apart, see what it's running on the inside (chipset and whatnot), and see if we can load something back on that isn't stock software.

Monday, May 23, 2016

Easy Parallel Computing with Old Android Phones

I have some relatively old Android phones lying around (including the Nexus 4 with a broken screen I rooted) and I wanted to cluster them together in some way to see what they were capable of. But the problem was that none of them had the same platform. They all had different Android flavors and different permissions. So I made a few crucial design decisions up front to make this method of clustering as compatible with everything as possible. Here's the outline of how this is going to work.

Thursday, April 21, 2016

Graphics Card for Desert

I have some old AGP Graphics cards that have failed and I wanted to try baking them to try and make them work again. I'm either going to get them to work, or take them apart and see what I can save. It probably won't be a lot, but it'll be fun to do. And that's what this is really all about, right?

Wednesday, April 6, 2016

Rooting a Broken Android Phone

I love the Nexus 4. It was an exceptional phone for its time. I had mine for 3 years before upgrading to the Nexus 6P, but it is still a great phone. Sure it wasn't without its flaws, but what phone is? I got my hands on a Nexus 4 with a broken screen. Like, really broken screen. It was bad. Only the top quarter of the screen was touch sensitive. The crack had gone all the way through. The only way to control it would be to root it so that we could use a mouse with it. But how do you do that with a phone that only has a quarter of its screen usable (so we can't unlock it with the pattern) and USB Debugging Off? I guess the real question here is "is it possible?" We're about to find out.

Thursday, March 31, 2016

Building a Basic Render Farm


Parallel computing is really neat. Obviously, it's important in science where you can break computational tasks into smaller parts and distribute the work among many discrete systems. But for rendering, it's incredibly important. Take Pixar, for example. They have a massive rendering farm and yet it sometimes takes them more than a day to render a single frame because of the complexity of the scene (hundreds of lights, shadows, etc.) This project clearly won't reach those levels, it's just to show that it can be done fairly easily to tween images across another using ImageMagick on multiple computers.

Wednesday, March 23, 2016

Web Development on Windows Made Easier With Virtual Box

Let's face it. Windows just isn't great for development. You can argue against this point, but in general it just doesn't as well as it may with Linux operating systems. Even Mac OS X is somewhat better. But forget that. I don't know if there's a purpose to this tutorial, but I know that it could help somebody.

Working in a VM is tedious at times. The purpose of this is to set up a development environment where you can work in Windows, save to your host hard drive, but use a Linux based server to test it in real time. How, you ask? We're going to tweak a Linux VM to do just this.

Wednesday, February 24, 2016

The Complexity of GTA V

I've been playing Grand Theft Auto 5 for about 80 hours now. I've beaten the game on story mode. But when I first started playing, was was absolutely blown away by the graphics and the amount of just pure stuff that was in the game. People talk to each other and interact on the streets, buildings are more than just storefronts, the island is a gradient from wealthy to poor, etc. But it got me thinking, how do certain things in this game actually behave? Is it random? Or is there some basic AI behind it? I decided to find out.

Wednesday, February 3, 2016

Repurposing a Printer's Parts

I'm sure there are a billion things out on the web that show how to repurpose a printer. But I'm doing this for the purpose of making that damned CNC machine that the CD Drives just weren't good enough to do. I bought four of them and, wouldn't you know it, only two of them had stepper motors in them. That's okay though, because I still got the other two motors out (a brushless, and a DC) and kept the other laser movement motors just in case. I said I'd be taking the laser apart, and I have, and I'll post that next time. But let's just say that I didn't get any of them to light up like I had planned to. In fact, one of the chips on the laser box kinda blew up. So yeah, the whole laser thing is bust. But hey, we got this neat printer to take apart!

Sunday, January 17, 2016

Graphing Every Debian Package

I decided to try and graph every Debian Package and its dependencies. And thus was born the Blogger label "Not Worth The Time Invested" with which this was tagged.

The first part was fairly easy to do: gather data. I wrote a short PHP script to read the package lists and write a DOT digraph with every package pointing to its dependencies. This file was sorta big, but that was expected. I then proceeded to try to put it through GraphViz. This was an utter failure, and the search for better graph rendering software was on.

Friday, January 8, 2016

Hidden TeX Commands in Google Docs

I use TeX to do my math homework on Google Docs. I quickly realized that it supported more symbols than the documentation leads on. I dug through the editor source and found the list of the TeX commands that the Google Docs Editor currently supports. Here are all of them. Let me know if I'm wrong on the name of the symbol/operator.