If you’re serious about developing secure web applications, the OWASP Testing Guide will help to improve your security consciousness (and, hopefully, the security of your web applications). It is available in PDF format from https://www.owasp.org/images/1/19/OTGv4.pdf.
A few years ago, I wrote a very short bit called “Yankee Carpenter” in a larger essay about gender. I had the feeling that, when this day came around, it would be the piece I would offer to remember my grandfather by.
While I didn’t read the original piece at the memorial service, I did read a version written only a few minutes before the service.
Because the piece was written on notebook paper, and my chances of keeping a dislodged piece of notebook paper are slim, I’m publishing the memorial version of “Yankee Carpenter” here.
My grandfather was a Yankee carpenter. I should point out that the word “carpenter” is heavily modified by the word “Yankee”. Whereas a carpenter is someone who builds things, a Yankee carpenter is someone who finds a tree, chops it down with his bare hands, uses his fingernails to whittle it down to a two-by-four, puts it next to a similarly-crafted board, and holds the two together through the power of will alone.
Everything my grandfather ever did was, if not perfect, pretty darn close.
Every time I sit down to work on anything, I try to take the same combination of planning and adaptability that he showed me on the countless jobs I helped him with.
Though my father is a banker and I am a computer technician, because of Gramps, we were also Yankee carpenters.
Along with the new version of “Yankee Carpenter”, I have uploaded a presentation in tribute to him at http://plex.saranhold.com/gshow/.
As you may be able to guess by the title of this post, I’m enjoying my set of very specific, useful skills right now. Why is my being online a miracle, though? Isn’t everybody practically always online?
No. Sometimes, things go wrong. For no apparent reason, my ISP doesn’t want to talk to my modem. This is beyond my control. Fortunately, though, I’m in a place where 4G is abundant.
Am I marveling at my ability to utilize my phone’s network access on my computer? Yes I am, but achieving this wasn’t as simple as downloading an app. I used to have an app, of course, but then it stopped working when I installed an over-the-air update. Sad story short, my phone was (up until today) unable to share its network connection (for free).
Fortunately for me, my phone is rooted. I’ve got the Android SDK on my laptop, so I fired up an adb shell and had a poke around. I quickly learned that my phone had an inbuilt USB tethering driver, and that I could load that driver up by turning on the OEM tether option. Of course, I would only be switching the USB mode this way: I wouldn’t actually be using their tethering system (which costs money). I quickly threw a MASQUERADE rule into the POSTROUTING table, statically allowed my laptop’s IP to forward packets (FILTER:FORWARD chain), and successfully ssh’d into saranhold.com.
Unfortunately, my poor office computer was still offline. I connected my laptop to my switch via ethernet, brought its ethernet interface up, and established another NAT forwarding scheme for my office machine (which has another NAT to allow a shitty Cisco SIP phone to connect to the Internet), then reconfigured the routing table on the office machine.
TL;STETRTTL;DR (Too long; skipped to the end to read the tl;dr):
Everything is beautiful when you have rudimentary knowledge of kernel-level packet filtering mechanisms.
Despite the fact that I spend the majority of my time being awake at odd hours in the morning, this is one occasion that is markedly different. Rather than sitting alone in my office, I’m chaperoning a group of students in my brother’s class. This has placed me in the middle of a festival ground, which is definitely an odd place for a madman to be.
I was, thankfully, tasked with getting everyone to shut up. As the group that showed up was exponentially larger than what we expected to see (two or three guys), the amount of work needed to keep the peace was quite a bit higher than normal. I’ve guarded this particular festival ground in several previous iterations, but this is the first time I’ve not done it with a highly disciplined organization.
Now that I’ve put a television screen, powered by a Raspberry Pi, out in front of their eyeballs, they’ve quieted down enough for me to finger-ramble. Admittedly, The Secret Life of Walter Mitty has been a good enough movie for me to be kept from this highly unusual forum of personal expression.
When I actually opened WordPress’s administrative panel, I found that, over the last two weeks, I’d accumulated over a thousand new comments. That’s bullshit, so I opened up my mysql client (the official command line client) and ran a query that looked something like:
update wp_comments set comment_approved = “spam” where comment_approved = “0″;
So that took care of that.
The stuff that high-school kids can come up with is insane. Even though I have only been outside of that environment for a short time, I can’t recall that I (or the rest of my class) was crazy enough to pull a car into a covered stage area. If the light was appropriate, I would be able to take a picture of said car parked under the said covered stage area. However, the insanity of that concept is lower than that of my television’s current position: sitting atop a microwave.
At some point earlier in the night, someone put a Pepsi into the microwave, supposedly to keep mosquitoes from entering it. When we went to move the microwave to act as the base for the TV, we were surprised by the outpouring of cola. I feel sorry for whoever’s microwave it is, because they’re going to have to clean the poor thing.
If you haven’t noticed by now–and it’s entirely possible that you haven’t, since I can’t remember what kinds of articles have survived on this site–I anthropomorphize technology on a regular basis. I’m not sure why, but I’m almost positive that it’s simply due to my own personal collection of oddities.
Well, I think I’m going to wrap this blathering up by saying “Hi there, I’m back.”
Hi there, I’m back.
I think some random spambot threw a large portion of their spam generation text at me. Here’s a copy for your amusement! (I hope Google doesn’t kill my site for posting this, xD.)
In this lab, we sought to produce a pure-breeding strain of white-eyed, ebony, vestigial-winged fruit flies. The challenge was designed to demonstrate the properties and principles of genetic inheritance. Prior to beginning work on the flies, a clear plan needed to be decided upon. After a few hours worth of researching the genetics of fruit flies, the plan was finalized. Following is a list of our desired traits:
|Fly Trait||Dominant/Recessive||Extra Notes|
Very early in the challenge, we decided that we would have two separate strains of flies running simultaneously to both increase the speed of the experiment and decrease the number of generations the experiment would take. We decided that the most useful beginning crosses would be White-Eyed Female x Ebony Male and Ebony Female x Vestigial Male.
White-Eyed Female x Ebony Male’s cross produced, as expected, apricot-eyed males with grey bodies, and normal-eyed females with grey bodies. White-eyes, being X-linked and recessive, are guaranteed to be passed on to any male children of a white-eyed female. Because the female flies had both the recessive white-apricot gene, as well as the recessive ebony-body gene, they were chosen for the third cross.
The Ebony Female x Vestigial Male cross produced grey, non-vestigial flies. Both traits being recessive, and neither being X-linked, neither was able to express itself. However, the genes were present. Mating the males with their white-eyed counterparts would bring all of the needed genes into one group of flies.
The third cross, Apricot-Ebony x Vestigial-Ebony, produced a few different types of flies. The ones we were interested in keeping were the ones containing the apricot, ebony, and vestigial genes. We transferred the females without ebony bodies, as well as the males without ebony bodies and apricot eyes, to a holding tube. What remained was a collection of males with apricot eyes and ebony bodies, and females with ebony bodies, which we put into yet another new tube. There was a slight risk involved in making this move: there was no way to guarantee that the vestigial genes were still in the pool. However, the chances of that were low, and we’d be able to tell in the next generation.
The fourth cross, produced by inbreeding a selection of the third cross, contained a lot more variety than the third. This time, there were uniform ebony bodies, but there were very few flies who had both apricot eyes and vestigial wings. It took a few days to gather enough of these to begin the final cross.
Unfortunately, at the time of writing, the final cross has not yet begun to emerge, so it is impossible to say whether the venture was a success. There shouldn’t be, however, much (if any) variation in the flies, since their parents all exhibited recessive traits.
Flies have a very simple genetic code. Controlling their phenotypes through selective breeding alone is, in itself, a huge hassle. If the genes weren’t on different chromosomes, it would’ve been nearly impossible to finish this assignment due to the complexity of the task. Fortunately, drosophila melanogaster is a great critter for this specific topic.
I recently picked up a Raspberry Pi from Adafruit Industries (http://adafruit.com/). While the Pi itself ran for less than $40, I couldn’t help but buy a few thousand accessories to complement it. The final order came out to around $110, but it’s proven its worth.
At the moment, I’m doing nothing but experiments with it. Recently, I’ve been contemplating the possibility of building a miniature cluster of Pi servers. Pis, which are relatively cheap, as far as electricity goes, could easily do the job of my web server (a very low-traffic system) for a much lower cost. While building a Pi cluster could easily cause enough heat to be generated to require ventilation, the single Pi that I’m currently working with barely generates enough heat to be noticeable, unless it’s doing a resource-intensive task, such as compiling the webserver package that I use for all my web hosting needs.
All in all, power consumption is low. I’m able to power my Pi using either a wall socket, or my computer’s USB port (which provides enough power, despite USB specifications saying it shouldn’t be able to). As with all but two of my computers (my laptop and main desktop), I operate the Pi headlessly. While it’s perfectly equipped for TV-out, I already have a machine that’s perfectly capable of supporting the same feature. Possibly the most useful TV-out that it has is a natively-supported HDMI-out, which is something my already-existing machine doesn’t support, while my main desktop and laptop do, but, due to software errors, are incapable of utilizing.
I’ve thought up many different devices to build with the Pi, but I won’t be able to implement many of them without further planning and resources. The Pi is, without a doubt, an awesome tool, toy, platform, and computational resource. Despite its awesome capabilities, however, it is not able to do anything about Taco Bell’s inability to produce food that doesn’t make me ill. ¡No te puedes matarme!
The title says it all. I’m removing the advertisement from my webpage. I’ll keep my adsense account active, though, in case I decide to add it to a later project. Hopefully that’s okay with Google’s guidelines. If not, I’ll use another advertising group.
Thoughtless, I sit looking out upon an empty horizon.
Waves crash at the rocks below my feet.
An empty horizon is a lonely thing.
Over the horizon, a lone ship fights to meet my eyes.
Its burning sail steals my attention.
The Warpath overpowers the way of peace, and is darkened by it.
Restoration of ancient ways will not provide ancient innocence.
What was lost cannot be found.
All logical assertions depend upon mutual truth.
The enkindled ship announces future events, but not resolutions.
An empty horizon is a lonely thing, but this is something else.
This is the Warpath.
I have no idea what this means. This is partially because it was written while I was purposely trying to waste time, but also because I was trying to write it from the standpoint of a figure who only exists in my personal mythology.
I’ve been computer-obsessed for a number of years (a very large number that’s nearly equal to my age). This obsession has lead to my amassing a small battalion of machines. The majority of them, being completely incapable of doing anything, have been carelessly tossed into a closet and forgotten about. Those lucky enough to be worth keeping alive, however, were given places atop my desks and shelves that line my cave (also known as my office (which also happens to function as a bedroom (unless it’s the other way around))).
All of the machines in my cave run either a GNU/Linux distribution or OpenBSD. I don’t often use OpenBSD, but I completely agree with the project’s mission of building a secure system. The two GNU/Linux distributions that I prefer are Debian GNU/Linux and Slackware Linux.
I realize that my Slackware machines are horrendously out of date (Slackware 14.1 was released a few days ago and I’m still running Slackware 13.37 like a pathetic weirdo), but I keep them around because I find them useful for development-related tasks. While Debian is fully capable of replacing Slackware on these boxes, Debian is a mind-numbing system that eases the pain of manually editing text files to configure software packages. Because of the pain and devotion that it takes to get anything to run properly in Slackware, I’ve long thought that anything capable of compiling and running under a Slackware environment deserves to consider itself ‘stable’. This is entirely superstition, however, and I do not base my code-maturity ratings on whether or not said code is capable of being compiled under Slackware. At the same time, I develop things on Slackware because I feel that its KISS (Keep It Simple, Stupid) attitude is contagious.
Despite the fact that Debian is mind-numbing, I use it on the rest of my boxes (I actually have more Debian boxes now than I do Slackware boxes) because Slackware is hard to work with when deadlines are involved. Spending four hours trying to get an office suite to compile and having a huge English project due the next day (I’m such a horrible procrastinator in this example which I’ll claim is not based on reality) is unreasonably painful.
My actual hardware is a collection of (mostly) recycled, self-refurbished machines. I’ll now go on to list them, along with their functions.
My main desktop is named ‘valerie’. I chose the name because, at the time, my brother was (alright, so he still is) attracted to a girl by the same name. I succeeded in pissing him (and said girl (probably)) off, but I later came to realize that I’d broken my cardinal rule of computer-naming: not to name them after people. However, since I have only spoken to the girl a few times, and because she’s forked my lawn more times than I’ve talked to her, I decided that I would rename her within my own mind (to ‘Morris’ (I always give people (especially girls) names that are as far from my computer-naming scheme as possible)), therefore mitigating the harm done to my naming scheme.
Getting back to the topic, valerie runs Debian GNU/Linux. I use her (boxen are feminine, I won’t back down from this position, especially if someone asks me nicely) as a desktop machine, as well as a network bridge. She provides Internet connectivity to the rest of the boxes in the cave. When I first got her, her BIOS needed to be restored. Sadly, the company that built her (Gateway) never released the data I needed to flash her. I searched for a few hours and discovered that eMachines had released a single model that had the same motherboard as valerie. I downloaded the eMachines ROM and flashed it. Thankfully it worked. Now when she turns on (which rarely happens, she hasn’t been shut down in forty days), she displays an eMachines logo.
The second box on my network is called ‘vixen’. She needs a new name, unfortunately, as animal-related names are reserved for Slackware boxes, and she’s been running Debian since the beginning of this summer. vixen acts as a very hackish NAS (Network Attached Storage). She has a 3TB hard disk attached to her, which I use to store random things, such as pictures, backups, and my humongous tarball collection. She is also responsible for handling my Debian repo, which is my local copy of Debian 7.1.0 x86. vixen is a refurbished machine. The majority of her parts were originally used by my old school district, and I bought them for $1 at a sale. I added the parts from a few other machines I picked up at the same sale, as well as a TV-Out card that I picked up a few months later. Now she uses a TV as a monitor whenever she has need for such a thing.
The third box on my network is called ‘wolf’. This one is a Slackware box, and she is my main test environment. She is my only unmodified box: a Dell Dimension 3000 with a Celeron (ick). While I don’t throw any resource-intensive tasks her way, I do use her to test my Slackware Autoconfiguration Script, host one of my two development webservers (the one that’s configured to support CGI execution), and burn CDs. I’ve only had her for about a year, and she’s one of the few boxes I allow to be shut down regularly.
The fourth box on the network is ‘rose’, a Dell OptiPlex with a Celeron (ick). rose doesn’t really do anything right now, as wolf has basically taken over as the development webserver.
The fifth and final box (outside of laptops) in the cave is ‘allison’. allison has been in the cave longer than any of the other machines. It used to be my desktop machine, and I never moved any of the files from that time to any of my newer machines. Because of that, I rarely fire her up to acquire old files (mostly music that vixen doesn’t handle). She’s more powerful than wolf, but she is one of the few machines left that has irreplaceable data on her. If there were a machine on my network that I’d store secret information on, it would be her because she’s unplugged when not in use.
Anyway, that’s a hopelessly overcomplicated review of my boxes. I’d go further into implementation of their activities by talking about the software that they run, but I doubt a casual reader would care. (if you’re reading this as a casual reader, I urge you to consider whether or not the time you spent reading this article was ‘valuable’. I apologize in advance for wasting your time.)