Techno Spot Archive
I have a love of technology and I'd like to write about various things I find fascinating that relate to technology here. This is separate from the blog because the content will probably differ considerably and I think technology deserves its own highlight.
Major UI overhall coming soon to a computer near you!
It's been a while since I've posted anything, let alone anything tech related, but this isn't to say I haven't been busy at all. In fact I've been busier than usual recently. I'm trying to do an overhall of my site's UI using the wonderful Twitter Boostrap framework. It's actually nearing completion, there are just a few more little odds and ends to tidy up. It's a great framework and I can really see how it makes website development--especially mobile responsive development--a lot faster, but there is certainly a learning curve associated with the framework and that's what I've been dealing with for the last few weeks. It's a nice platform though and I'm excited to be working on something that looks a little more polished that my current site, which I have never been totally satisfied with for some reason. I'm also kind of working on (read: thinking of how to work on) a project with a friend building a really simple content management system (CMS), but I haven't actually gotten around to working on anything for it yet, mainly just thinking and ideas.
You can see from the picture above that things just aren't quite right yet. I still have a bit of tweaking to do with the tags for pictures and captions to make sure they show up in the right spot and with borders and whatnot. But overall I think the UI change is a major upgrade. The site will automatically update when you change pages and highlight the current page's tab (see how the "Tech" tab is the only white one at the top?), a feature that I wanted to add a long time ago but didn't really know how. Thanks Rohan. Also the content will be pushed to the left of the page to make way for a new section that will allow users to select older blogs to read, as I will be relegating each blog page to only show the latest content. The section shown there probably isn't exactly what it will look like, but it is close to what I want. If you have any comments about the design, please feel free to send me an email or get in contact with me on one of many social media sites.
Another excuse for why I haven't put anything else up for a little while is that I am trying to help a friend create a website to show off her artwork and provide information about any shows she might be doing currently or in the future. A lot of this work coincides with the UI overhall that I am doing (which is heavily inspired by a mockup of her site she sent me) because I am also using the Bootstrap framework to develop her site. Unfortunately I haven't got to work on customizing my site-plan to fit her needs as much as I would like because I was in Rome most of last week (blog forthcoming). I know, poor me.
Well I really just wanted to get a quick post up about what I am working on so people don't think I've disappeared (not that anyone reads these anyway). I hope that this will tide anyone who does read over until I can get some more in-depth content up and I hope you're all enjoying the incipient Spring weather. It's really gorgeous over here in Nuremberg.
-- MM 11-03-2014
One objectively cool thing I've worked on
During my time at Berea I worked on several different projects in several different fields; like a paper on America's quest to forget the Vietnam War through film, a short story turned into a short film (in German), or a video game involving a rabbit in space. I thought they were all pretty interesting, but that doesn't mean much in the wider world of things. There was one project that I worked on that was (and is) undeniably pretty cool. It was for my CSC 435 Computer Organization class. I worked with a friend, William Tolley, to create the DO-HAS system (pictured above), a "Distributed Optical Harvard Architecture System."
This name was really just an attempt on our part to tie in the name with the functionality of the device, but we unfortunately never got this far in our project. What we invisioned would be a set of machines that would communicate via infrared light (mainly because that's just cool) and execute two different classes of commands, "do" and "has." These would be respectively CPU and memory instructions. These machines would form a distributed computing system that would use different devices to perform different tasks, but all of the devices would be part of the same system. We envisioned a future where some of these devices would concurrently perform operations so if any of them failed during an operation that another device would still be capable of completing it, or perhaps the devices would be split into some kind of parallel computing system (albeit one on a somewhat low power scale, as each machine comes in at a whopping 16 MHz clock speed).
Unfortunately we never made it this far into our implementation. We built two units of the DO-HAS system and used these two devices to prove that our concept would work, and we partially succeeded in this regard. We successfully completed tests to make sure that each device could communicate with the other, but we ran into some problems when trying to seperate operations between the devices. It seemed like the devices would interfere with each other when they would be simultaneously sending and receiving data via the infrared light and sensor. We devised a few ways to solve this issue, such as putting the devices on a clock system similar to what a CPU does to ensure that things are only being sent or received when they are ready to be executed, but we ran out of time towards the end of the semester before we could implement it.
This was one project that I was actually really proud of. As part of the assignment we were to create an "instructable" on how to build and test our system, which we actually uploaded to instructables.com for a bit of extra credit, and we were very surprised to see our small school project to get the kind of attention it did. The project was featured on the main page of instructables.com and was also the featured technology instructable for the better part of a day, which is a pretty cool thing to see happen to something you actually worked on. If you would like to see how to build your own DO-HAS system, feel free to check out our instructable linked here. If you have any questions or would like to talk about this kind of stuff, please feel free to email me. Thanks for reading!
Automating tasks, and a lot of learning along the way
I was randomly going through comics on xkcd today when I ran across the above comic, and I realized just how true this rings for me. There are multiple times in my life when I've taken hours to program a solution to a menial task that I was faced with or something that I do quite often, and more often than not writing the program actually takes longer than completing the task itself. The process of creating a solution is incredibly rewarding though, and I think the real value in such exercises lie in that fact, and I've got two examples to help make this point.
Just two days ago I was poking around at this site, procrastinating on writing a new blog entry when I realized that the way I was adding content to my webserver was just taking too long. I was using Filezilla, which is a great piece of software actually, but it just seemed like it was taking forever. I would have to open up the program, connect to my server, navigate to the proper directories, choose which files to upload, etc. This wasn't that time consuming, sure, but it was getting a little annoying when I would start an upload to a wrong directory or something similar, and I thought to myself, this can probably be handled very easily with a nice script to add all the files to my website whenever I want.
Since my site is pretty lightweight, mainly text and a few images, it isn't resource intensive to add all of the files each time I want to update the site, and this way I don't forget to update some small part on accident. Doing this with Filezilla took approximately two minutes each time I needed to upload something. Developing a script to do this for me took literally hours. Honestly, this could have been done much faster (really in a few minutes or even less if you know what you're doing), but I took the opportunity to learn more about what was being done and how to do it, in the process streamlining almost everything I do related to maintaining this website and learning some key differences between a few different file transport mechanisms. So in the end, was it worth it? Absolutely. Also, you can take a look at all that was needed below.
The other example I have is from when I first started learning to program. I was working during the summer at the Berea College Special Collections & Archives as the digitization intern. I was put in charge of transcribing, annotating, and digitizing the writings of a Berea College alumnus named Harold H. Johnston. This process was often quite tedious, and transcribing handwritten manuscripts consisting of over 35,000 words was certainly time consuming. After transcribing all of these documents it was time to upload the documents into a database along with high-quality scans of the original manuscripts (us historians like to keep everything possible it seems; never know what might be important later).
There was only one small problem when it came to uploading my transcripts. The database wanted a separate file for each page being added to the database, but I had made each document its own transcript. Now I would have to go back through and seperate each file into upwards of a dozen other files based on where each page started and ended. There were dozens of documents and each would have several pages. I groaned and started seperating the files manually, copying and pasting each page into a new document. When I was almost finished with the first transcript, I realized that I had written a program that did something similar for my Introduction to C++ the previous semester, and I decided that modifying the program might serve me better in the end. So I started modifying the program and developed a working prototype that would take a text file in a directory and create a seperate file for each 'page.' Luckily I had already marked where each page began and ended in the transcripts I created, so the process didn't take too long. All in all the program probably took two hours or so to make, and it might not have saved me that much time altogether, but now this tool is available to anyone in these (oddly specific) circumstances and could save them time as well. If you would like to take a look at the tool I created, you can follow this link to a gist of it.
So perhaps writing programs to help with tasks doesn't always actually save you time, but, to paraphrase Miley, it's not about how fast you get there, it's the climb (note: intentionally used humurously).
My first laptop and recent changes
I've you've looked at my site's homepage, there is no doubt that you will see Berea College featured prominently; I'm proud of the college I went to and what they have done for me. On move-in day (a day that was, for me, plagued by turmoil in all forms) was a very important day for my growth in the world of technology. On that day, I received a Berea issued Dell Latitude E6400 laptop, my first laptop, mine to keep--the laptop that I am writing this very post on.
This laptop has been pretty good to me over the years. I've written many an essay, done some programming, and generally made a mess of things with it, but I was recently having some issues with Windows verifying itself as a genuine copy of Windows 7 obtained by legal means (this is actually my fault, but we won't get into that) and I don't currently have access to my Windows disk to verify it ,so I decided to try my hand at another operating system that would have a little more leniency in this regard. I also wanted something that was pretty up-to-date that my older machine would actually run, so I took a look at Linux (which I already had a very little experience in) and came up with two different options:
These are both pretty solid options, but I had very different reasons for looking at each one. I was looking at Ubuntu because I already had some experience dual-booting it beside my main Windows 7 partition, so it's familiar. I also like the style of the OS quite a bit, and, believe it or not, I actually like the new(ish) Unity UI. Familiarity is one thing, but I was also hoping to get more into mobile development for smartphones, and I think that the new Ubuntu Touch OS provides a nice, new development ecosystem that will probably be easier to break into than, say, the well-developed likes of the Android or iOS equivalents.
So Ubuntu was the major frontrunner for me, but I was also taking a look at the OpenSUSE variant of Linux for one main reason: the distribution was developed in the city that I am completing my Fulbright English Teaching Assistantship in. I thought that this was pretty cool. I even contacted the company to see if I could work out some kind of internship while I am staying in Nuremberg, but it was not to be unfortunately. Also, just in case anyone is interested in the name of this distribution, it stands for (or used to stand for) Software und System Entwicklung, only the last part of which should be confusing for you English monoglots, and it means "development." The other reason I was considering this distribution is because I was hosting this website on an Amazon EC2 server that was running a form of the OpenSUSE distro, and since that has been my latest exposure to Linux and command line stuff, it actually felt more familiar.
So which did I end up choosing? Actually neither of these precisely; I did end up going the Ubuntu route, but after experiencing some problems with running Ubuntu 13.10, I opted to run a slightly older verion of the OS, 12.04, which is a "Long Term Service" release of the OS, and is generally a little more stable. This version has worked much better for me, and after a mildly difficult acclimation period (which basically consisted of finding a way to stream Netflix in a Linux machine), I have begun to settle into my new Ubuntu skin. The diffculty of this process has really made me consider why people do opt to pay for having Windows on their machine instead of free, open alternatives, a few of which I have named above, and I think that it is often done with good reason. Without some level of technical expertise, and a willingness to wade through forum post after forum post, the process of getting accustomed to a new operating system can be daunting and downright miserable. Heck, even with a certain level of expertise it can be, so it makes more sense to me now. That being said, I'm glad I have made this change right now. It's pushing my boundaries and making me realize how much I love new or different technologies and, sometimes, making me forget that I do need to eat, and I think that says something about it, but I'm not sure what...