Wednesday, January 7, 2009

North Is..⇡

the enemy’s gate is down.

Cell Phones as clients for pervasive computing

Posted by adam On April - 2 - 2007

I have believed for a number of years now that the convergence device for computing is the cell phone. The phone is the perfect convergence device because everybody already has one, they carry it around with them, and they get a new one every two years. Now it may be a long while before phones actually replace conventional computers (if they ever do). But it will not be long before they will be able to do most of the things we want out of our home computers. The iPhone is an excellent example of a small device that is powerful enough to do such tasks. It can check my e-mail and browse the web (and I mean the real web, not the ‘mobile web’ which is severely crippled). The iPhone is, unfortunately, not a typical phone it is a super phone. A more typical phone is the RAZR from Motorolla. It is popular, small, and most importantly for this research has bluetooth capabilities. So for our project we will look at more commonplace phones. The only assumption we make is that the phone has bluetooth.

Specifically we are looking at how to use a centralized server and the internet to collect presence information from bluetooth enabled phones. When a computer detects a nearby bluetooth device it will send its id to the server, the server then record the location of the device and send the computer a variety of information.

Here are two examples of use:
1) Suppose I have a 9:00 meeting that has been changed to 8:30, and suppose its a large meeting (like a shareholders meeting) so it is not practical or possible to call everybody in attendance. The new time could be posted in vCal format to the server and as soon as I walk by a computer with bluetooth that computer would tell the server I just walked by and the server would respond with the vCal information. This could then be pushed to the phone using bluetooth’s OBEX protocol. My phone would beep and I would know the new meeting time.

2) Suppose a network of computers in an office, often it is useful to know about the network topology of the office, but what about the physical topology? If every computer comes equipped with bluetooth then we can use this system to have each computer detect its neighbors and we can make some assumptions about the physical topology.

After the framework is built there are many areas of interest:

  • What is the most efficient way to detect phones?
  • What about devices that aren’t mobile? ie. two desktops which continually report back to the server that they are next to each other, is this useful?
  • If computer A detects B but B does not detect A what does that mean?
  • How do you resolve conflicts when two computers can both detect the same phone?
  • Is this limited to only phones? clearly not! so what are other applications?
  • How do you ensure security? privacy? anonymity?
  • How do you handle devices with partial support for bluetooth?
  • We assume that phones are only receivers in this scheme, can a phone initiate contact?
  • What if we could put programs on the phones? Could we hook them into sensor networks?
  • If phones can push data to the server could this be used to track medical conditions? environmental conditions? safety conditions?
  • Courses for fall 2007

    Posted by adam On March - 26 - 2007

    Thus far I have chosen Parallel Computing and Distributed Computing Systems. The parallel class will have a greater emphasis on OpenMP opposed to years past where the focus was MPI. This is because of the increasing trend of multi core chips. The distributed computing class will focus on reliability, security, and other related issues. Most exciting is the possibility to use Xgrid for the research project in both classes!

    Projects I've been up to

    Posted by adam On April - 29 - 2006

    Operating Systems
    In my OS class we did more than most universities; we wrote our own operating system almost entirely from scratch. We used the Geek OS project which was quite an experience, as it is in the early stages of development itself (and not quite ready for educational use). When we did this project Geek OS was not very well documented so we, as new OS hackers, had quite an adventure exploring how exactly to complete each of the five projects.

    The first project was simply to get user processes running in the user memory space. This involved researching the ELF header format and Intel documentation in great depth to determine exactly how to load a binary from disk into memory. Once in memory an inefficient Round-Robin scheduler would schedule processes and threads.

    In project two we had to create a scheduling algorithm that would do better than FIFO or Round-Robin. We ended up using a Multi-Level Feedback Queue with four tiers that worked quite well.
    In project three we implemented virtual memory so a process could have up to 4GB memory outside of the ~64KB we were emulating.

    For project four we implemented a virtual file system that could work with both FAT and the filesystem we created called GOSFS.

    For our fifth and final project we used our semaphores and virtual memory to create a shared memory region between (up to 16) processes. This project was especially interesting as it accompanied my studies in High Performance Computing where we were looking at SMP systems and other shared memory systems.

    This class, along with High Performance Computing, ignited my interest in systems, which is what I am now looking at grad schools for.

    I have put my OS projects in the downloads section for the time being. It will be taken down when the school year begins as it contains the solutions for GeekOS projects. If you wish to see it (and I have taken it down) e-mail me and I'll send it to you (if you are not a student).

    High Performance Computing
    In HPC we studied many kinds of multi processor systems and the strengths/weakness of each one with projects accompanying each kind of system. We covered using homogeneous and heterogeneous MPI systems using computer labs at my school as a multi processor system as well as machines at the Ohio Supercomputer Center that use a shared memory architecture. We studied the difference in performance between using MPI on our own lab, our 16 node Gigabit Beowulf cluster, and the clusters at OSC.

    Our projects included integration of a curve using MPI, solving the n-body problem on MPI and OpenMP, and implementing various parallel image processing on OpenMP.

    For our final project my group chose to generate large prime numbers using MPI and OpenMP. We originally planned to use a lab of Macintoshes with dual 1.25 G4 processors so we could use OpenMP on each machine as well as the AltiVec instruction set on each machine, then use MPI between all the machines. Unfortunately the generation of prime numbers lends itself best to OpenMP on a shared memory system, so we ended up using the 32 processor SGI Altix at OSC.

    I have put my HPC projects in the downloads section.

    Databases
    In my databases class we spent the first few weeks solely on database theory, then we started on simple database projects. Ultimately each of us had to make a creative database (of sufficient complexity) that could be deployed in an enterprise scale. Whether or not any of us made “enterprise strength” databases I don't know, but some of them were really cool.

    Mine was called “A Novel Idea” and was a system for students to get better prices when selling textbooks at the end of the year by selling the to other students instead of the book store. It included a web interface using cgi scripts.

    I have put my Database project in the downloads section.

    Computer System Architecture
    This class focused on how a computer works at a hardware level. We studied the pipeline within a processor and how to exploit it in assembly code. Our semester long project was to implement the entire IEEE floating point library in RISC assembly on an IRIX 64 bit workstation.

    I have put my IEEE floating point project in the downloads section.

    Stibitz Society

    Posted by adam On May - 1 - 2005

    The Stibitz Society is the computer science organization at Denison University. It was founded to promote logical and mathematical thought and discussion. It is named after Denison alumnus George Stibitz whom, as you may know, created the first binary adder. Since he worked for Bell labs it was made out of mechanical telephone switches making it far slower, but much more reliable than, the its vacuum tube followers.

    As the current president of Stibitz Society I felt that we should go to the bar with our Professors.
    Here are some pics [broken] [offsite link, may be slow].

    We also participate in the fall ACM programing contest each year as well as hosting our own in the spring semester. This year we only placed in the top 16 (of ~160 I believe) where we were in the top 8 the year before. We have taken top prize at the Denison Programing Contest for the past three years. This year, however, the competition was steep and the problems difficult; we came in third having solved five of six problems

    Upsilon Pi Epsilon

    Posted by adam On March - 14 - 2005

    I was just accepted into the Honor Society for the Computer Sciences! There is currently much rejoicing in me right now as I was one of two in my class selected for induction.
    So yeah,
    m super honored about this.
    [center][img]{E_IMAGE}newspost_images/upelogosmalltrans.gif[/img][/center]
    Upsilon Pi Epsilon (UPE) was founded in 1967 as an honor society for the computing sciences by students at Texas A&M University. UPE is an independent organization which has received recognition from both the ACM (1967) and the IEEE-CS (1992) as an official honor society. At this writing, there are more than 120 UPE chapters worldwide.

    The Binary digits across the key represent the number one thousand nine hundred and sixty seven, the year of the organization's founding