Thomas Hakes's 2013 Student Opus
I can fit my entire fist in my mouth, wanna see?
Loading Swag… ████████████████ 100% Complete.
4:00AM - 6:00AM Working on logic gates for Joe's class. Right now I have a working not and a broken or.
2:00PM - 3:00PM we finished all the logic gates and have moved on to bigger and badder things
10:00AM - 11:00AM finished building the individual programs for not and & or.
4:00AM - 6:30AM slowly changing each program into a function so i can later add it to a larger program.
3:30AM - 6:30AM Worked on the user interface for my and or not implementations. I learned that by using getchar() you are able to get the new line character without it messing up your program. With that in mind, it can now pass numbers to the parameters and work from there. SEXY.
2:00PM - 3:00PM Stopped into Joe's for help on the implementation of the half adder and full adder. I wasn't understanding the concepts of what the differences between them does.
A half adder only adds a single group of bits, while the full adder can add multiple bits with carry. If you have a full adder, you basically have a half adder.
11:00pm - 12:00pm started working on my NAND, using stdargs to catch how many arguments i will be manipulating.
9:00AM - 10:15AM working on multiple and, catching a bit of crap from the program when i try to use full adder
I plan on working on a PISC computer simulator within the next couple of days. It is a simple CPU simulator that functions off of two clock cycles to execute one string of code. Inefficient yet efficient size in a CPU.
Here are some sources reguarding PISC, and the next couple of steps involving the datasheet for the ALU.
http://www.bradrodriguez.com/papers/piscedu2.htm
ALU
http://www.datasheetcatalog.com/datasheets_pdf/7/4/1/8/74181.shtml
6:00 PM - 11:00 PM
Found the iso of arch linux that I needed to get to install it onto my laptop. Using the DD command, I wrote the disc to a flash drive for boot. After pushing the iso over, i proceeded to booting off of the usb.
zsh shell is very weird. instead of the normal bash tab complete, it lists available options and allows you to scroll through and choose what you want to complete too.
Grub gave me the worst trouble in the world. I couldn't tell what the arch script installed, so I could never find out how much in depth it went with grub. Turns out it never installed it at all. Had to configure grub using “grub-install”. Make sure you have your boot mounted.
Sources used: https://wiki.archlinux.org/index.php/Beginners_Guide
9:00AM - 2:00PM
When installing arch, I had the biggest struggle installing anything. Pacman (The arch package manager) is very different from apt or yum. You basically sync packages from a repository instead of installing them.
Basic usage: pacman -S emacs ↔ sync pacman -R emacs ↔ remove
Arch linux does not come stock with net-tools. What… They expect you to use this new iproute thing, but tons of people still use this late and great tool. Had to install that + dialog + wpa_supplicant just to use the preloaded script to connect to the wireless. That is a very strange way to get into business.
Now that I finally have a working console, and a connection to the internet, I try installing awesome. I've never used it before, and I've always wanted too. I have to install Xorg first, and then gdm to handle the login screen.
After installing awesome, I had to edit the configuration file to enable my browser (firefox).
More to come on the next installment of 1)
This is my report on how I successfully hacked Shawn's computer in it's entirety. I waited for everyone to be cleared out of the room, then proceeded to his computer.
I booted up my live CD of debian ( just grab an iso and write “ dd if=where/is/debian.iso of=/dev/sd*(whateverthedeviceis) ) and then proceeded to mount his hard drive to my /mnt portion of the flash drive.
For whatever reason, his partition scheme is really messed up. /dev/sda1 was his primary home directory, /dev/sda5 was boot and /dev/sda8 was swap. SO STRANGE
from here i used the chroot command, to change my root directory to his hard drive on /mnt. that made all my environment variables his. after this, i needed to install openssh. a simple apt-get install openssh will suffice.
after installing openssh, i needed to drop an ssh key into his authorized_keys2 and then boom. massive hax
The MK802 Android stick computer is a computer with 1080p resolution, 1 GB of ram, various inputs, and a wireless controller, all within a tiny stick that resembles a USB drive. It is a very powerful computer given it's small size and when put to the test, it shows that ARM based computers will be competitors in the near future.
After obtaining one of these small stick computers, they very first thing I noticed was that it needed a hard drive. The computer takes a micro-SD card that will contain an operating system.
***Note- there are several linux based operating systems that will run and function on this computer. I decided to try two different operating systems for the level of support.
* Ubunutu has a fork that will run on the MK802, but unfortunately it is quite buggy, the resolution slips, the wireless will not work, and it is missing some core files needed for wireless to be rigged
* Linero is a Debian fork that was created to work on ARM based computers. They are a not-for-profit company assembled to make utilities and operating systems that will run on ARM based computers.
I had first tried ubuntu, but because of the snafu's, I quickly switched to Linero.
Linero runs smoothly. It takes about one full minute to boot up, but once it does it is decently fast given the size of the computer. The version of Linero that I am running contains a GUI, as well as a window manager and login manager. It is a full fledged computer with the design to work as a regular out of the box OS.
Installing this OS is a simple task, but it takes a very long time for it to be installed to the disk. When you obtain a disk image of the file, it's roughly 4 GiB. That's a huuuuuuge bitch. Afterwords, you must bit-by-bit transfer the file onto the drive. For this, I cannot think of any better of a program than dd.
dd is the GNU utility that allows you to transfer a file bit wise onto a drive.
The command i used was
homebrew~# dd if=linero_arm.iso of=/dev/mmcs0s0
where the “if” means the in file, “of” being the out file, and /dev/mmcs0s0 is the actual card itself.
Finding the card wasn't quite simple until i thought about it. The computer keeps record of everything plugged into it at once, and from then on adds devices as it obtains them. What I ended up doing was porting a directory listing on /dev/, plugging the card in, porting another listing of /dev/, and then doing a “diff” on those two files. Simple enough.
So now I have the operating system required for boot, I have the computer, the disk, and I'm all set to go.
Unfortunately the ARM pc only works in 1080p, and also has a 25h refreshing rate. That makes it not work on anything that isn't a 1080p television. I was planning on it being headless anyhow.
Now that it's started up, I installed emacs, vim, nano, firefox, and now it is one fully functional machine. :)
The LAIR WALL was a project developed prior to my becoming of CCC. It is an interesting little setup, as it uses a very old operating system and very old means to produce it's output. My idea is, with the help of these new machines so graciously donated to us by corning, I hope to bring it to the 21'st century by updating the OS from Debian sid, to Debian weezy; and also by updating the driver libDMX, allowing us to add more functionality to it, web browsers, apps, ect.
GNOME 3 has a feature that when you type in the wrong password three times, it just refreshes the screen, rather than locking a user out of their profile.
4:00PM - 5:30PM: Jake and I sat down and built a couple computers up to run debian so we can begin testing the new configurations for libdmx. It will be fun getting into this more, I can't wait.
12:00pm - 3:00pm Casey and I began work on a multi-seat linux enviorment project. We started editing the xorg configuration file located under /etc/X11/xorg.conf. To obtain this file, you must run the preliminary command “X –config”.
5:00pm - 6:00pm I have edited the xorg config some more… I now have two server layouts for each seat. for some reason, the x config will skip over the second seat without informing me.
Matt had asked me to document my findings for NCMPCPP && it's many joining files. That information will be stored in this classes's project one
I was recently contacted by a local business near Waverly NY that needs a simplistic website. Seeing as though I know little about web services, I figure i'm going to give it a shot.
I have bought a hosting service off of the online partner siteground, who use a linux based computer for all of their hosting. It is very interesting, and it also allows me to manipulate things using ssh. I am eager to dive in, but there are some interesting quirks with the server.
* It is a jailed version of linux, I cannot get any version history or anything regarding the type of operating system or what it is using for the hosting of the web pages
* It does not contain a modern text editor other then nano, and nano is a basic version in DOS mode.
* No compilers, no interpreters, this really is a JAILED version of an OS
I'm a little saddened by this
I ate a sub today, yummy
Also, I've been working with a new shell. Zsh ( or z shell ) is an interactive unix shell as well as a powerful interpreter for shell scripting. It has many features that allow it to be compared to ksh, sh, and bash.
It's really quite a thing, now I need a cool PS1 and i'm all set to go!
Been looking at zsh a little more, and I keep liking what I'm seeing. It has it's own line editor for editing lines on the screen, but with EOL's. It breaks up the extremely long and strenuous commands, and allows you to edit it on the fly. pretty neat
4:30AM - 6:00AM : I had spent a good portion of the time looking over the SDL.h header file. Just noticing how things linked together and how they worked. Afterwords, I devised a scheme for developing a game at the insta-LAIR : by writing all of the code and compiling on lab46, I can then run the executable off of one of the pod computers.
11:30AM - 1:00PM : I had learned that by using gcc's -l option for linking, you can link a library as easy as ”-lSDL“. Mathmatical! I have finished the first trial and am moving onto the other lessons.
Something neat i've noticed as I am progressing through the second trial is this neat little SDL_Surface data type.
What is this data type? what does it do? well it's not a data type. It is a struct. I have found this link ( http://sdl.beuc.net/sdl.wiki/SDL_Surface ) that further explains what this structure is.
1 typedef struct SDL_Surface { 2 Uint32 flags; /* Read-only */ 3 SDL_PixelFormat *format; /* Read-only */ 4 int w, h; /* Read-only */ 5 Uint16 pitch; /* Read-only */ 6 void *pixels; /* Read-write */ 7 SDL_Rect clip_rect; /* Read-only */ 8 int refcount; /* Read-mostly */ 9 10 /* This structure also contains private fields not shown here */ 11 } SDL_Surface;
listing from top to bottom: *format is the format of pixels stored within the surface; w,h are the surface's width and heights; pitch is the length of a surface's scan-line in bytes; pixels is a pointer to the location where the pixels are actually stored; clip_rect is the surface's clip rectangle; and lastly refcount is the reference count, which is used later when freeing the surface from memory.
5:00AM - 5:30AM : Finished the second tutorial, by linking the SDL library while compiling, I am able to display these images in the correct manor. Sweet.
5:20PM - 6:00PM: In this third tutorial, there is something I'd like to elaborate on further. On lazy foo's entry for GNU/Linux on cli, he mentions a couple libraries without really explaining what they are or what they are doing.
SDL_Mixer → is a library to include if you want to include music to your project.
SDL_Tff → is a library to include if you want truetype font included on your project.
These are not libraries that we are doing something with immediately. He's not very clear with that, and that is something that I got hung up on for a few minutes trying to think why he talked about them.
8:00PM - 10:40PM : Lesson 3 and 4 were pretty cool. I got hung up at one point trying to compile with the string header. I fought that battle what seemed like forever, come to find out I was using the wrong compiler (gcc vs g++). Lesson learned I guess.
5:00AM - 6:00AM: nothing really to report, just slamming down tutorial 5
9:00AM - 12:00PM: still plugging along
Having an interesting problem with the SDL tutorials, I'm not able to exit the windows i create in tutorial 4 and i cannot load certain images. How very interesting
10:30 - 11:30: continuing de-bugging my tutorial 5 to finish it.
15:00 - 15:25 I just added all of my current tutorials to bitbucket so that I may clone the repo and work on them from any computer. This relieves me of the stress of scp'ing a tarball of everything that i've been working on just to run it on a different platform. Later today I should be plugging along on some moar tutorials.
I have been slacking on the SDL tutorials. I need to get some time to work on these more.
1:30PM - 2:00PM began working on the SDL Tutorial to enable SDL coding in xcode. Massive errors.
4:00AM - 6:00AM continued working on finding a way to run SDL tutorials on my mac without massive errors on Xcode. Probably going to have to run it in a virtual machine
6:00PM - 8:00PM worked on setting up an SDL enviorment in an ubuntu install. Tomorrow i will begin massive headway on SDL
8:00am - 9:00am started fixing my lesson4.cc, ended up looking at the source code and re-writing it completely. For some reason i couldn't get the other program to exit gracefully. OH WELL
12:00pm - 2:00pm Finished fixing lesson5.cc, getting images both jpg and png to blit. SWEET
9:00pm - 10:00pm lesson6 worked like-a charm
11:00am - 2:00pm Finished lesson 7, working on lesson 8, had a weird dump of information…. need to check it out.
3:30pm - 4:15pm finished lesson8, I wasn't properly checking to see if the message was not null.
11:00am - 11:30am working on lesson 9, capturing mouse movements on the screen. It's all pretty neat, but it involves classes, which is something I will need to look into more before I fully understand what is happening.
2:30PM - 3:30PM finished lesson 10 and moving past lesson 11
1:30PM - 2:15PM worked on lesson 11
12:00 - 12:40 I can not get lesson 11 to stop seg faulting. for some reason, it will overflood the SDL_LowerBlit() and return a seg fault. will report later with info
finished lesson 11, good stuff
11:30 AM - 1:30 PM started the excelent work on lesson 12