Tuesday, November 20, 2007


Yesterday I noticed that National Instruments was coming to campus to do a LabVIEW workshop. It has been fairly interesting.

Tuesday, November 13, 2007

DVD Player

My DVD player has gradually died. It started as no longer being able to play CDs, then it would hang in the middle of movies, then it wouldn't play movies. It is a Symphonic WF803 DVD Player / VCR Combo and is apparently a common problem with this DVD player. It doesn't look like this product is still available, but if you find one I would recommend NOT purchasing this specific DVD player.

So I am in the market for a new DVD player, looking at edealinfo first.

Saturday, November 10, 2007

iTunes 7.5 install problems (and fix)

I just got back from Australia and saw that a new version of iTunes is available. Great. So I download and install it. Then I get an error message when I try to run it that says "iTunes cannot run because some of its required files are missing. Please reinstall iTunes." Fine. I run the repair option from the setup. Same message, only it pops up while I am repairing. Fine. I uninstall and then reinstall. Same message, also during the actual installation. Fine. Do it again, just for good measure. Same message, same time. Fine. I uninstall and then install an older version of iTunes. Same message. This is not the first time iTunes has broken badly on my computer. I know there are a lot of apple fanboys out there who will sing their praises as "it just works," but iTunes is the only program I've had working which an update then breaks to a point that even uninstall and reinstall does not fix the problem. Stupid Apple.

Updated (11/11):

I found a work around. The problem is discussed and some "fixes" are suggested in this thread:
The solution I used was to uninstall Quicktime and install version 7.2 instead. No official fix from Apple that I know of, yet.

Updated (11/16):

It looks like the unofficial work around I found has become the official temporary fix!

Thursday, November 08, 2007

SenSys 2007

Greetings from Australia! I flew down to Sydney a few days ago for SenSys 2007. Visiting Sydney has been a strange experience, but the purpose of this post will be to summarize some information from the conference itself.

The keynote speaker for the conference was Seth Goldstein. The title of his talk was "On the Path Towards Programmable Matter." At first a lot of his thoughts and ideas sounded like a bunch of science fiction (see this video used in his talk). However, he then proceeded to show prototypes for the ideas! I thought this was an excellent keynote and look forward to hearing more about this area in the future. For now, you can look at the claytronics website.

The "best paper" award for the conference went to Tracking Mobile Nodes Using RF Doppler Shifts. Apparently it stood out above all the other submissions through multiple reviews. The work does seem really neat, since there are a number of things which immediately come to mind about how one would think this is a bad idea.

The "best talk" award for the conference went to CargoNet: A Low-Cost MicroPower Sensor Node Exploiting Quasi-Passive Wakeup for Adaptive Asynchronous Monitoring of Exceptional Events. This work also seems really neat, and the presentation was pretty good. Here is the website.

I presented our work on Safe TinyOS on the second day of the conference. The presentation went well, if I say so myself. I could have handled the questions a bit better, but I also could have handled them much worse too. Dave Culler is anxious to push Safe TinyOS into the main TinyOS distribution and calling it TinyOS 2.1. I have a feeling that is going to be a lot of pain coming in my direction, but it is still cool.

Look at the conference program for more information about which talks and presentations were given.

Tuesday, October 23, 2007

Optimal Resume

U of U career services rolled out a new tool this week. At first I laughed it to scorn, but it has grown on me. I might incorporate it into my suite of tools for job searching. I believe it is technically supposed to be for only U of U students and alumni, but there seemed to be nothing which kept other people from using it as well. I am sure that will change.

The tool is a school specific version of Optimal Resume. The application guides the user through inputting necessary information for the resume and then pops out a fairly nice looking resume in a variety of formats. This, by itself, is not that neat. It is my personal opinion that if you really care about the job search, you should learn how to format your resume nicely. Plus, if all the students at the U start using this tool, a way to stand out will be to NOT use this tool and look different than the rest.

Although it is pitched as a resume builder, that is not the functionality that is cool. The cool functionality is all the additional tools. For example, it automatically adds functionality so that someone viewing the resume online will see mouse-over effects. There is also a letter builder, a skill assessment, and a few other useful builders. It also provides an easy way to publish the information on the web, hosting it for free.

You can find my web page for this site at http://utah.confidentialresume.com/coop. Right now it only contains a semi-direct copy of my resume, but I will be updating my information soon to see what it can really do!

The portal I use and that you should probably check out (especially if you are a U of U alumni or student) is https://utah.optimalresume.com. The big question is if employers and recruiters will actually look at these resumes and if the cool gimmicks and stuff will actually make a difference. I believe the answer is that only time will tell, but apparently career services thinks it will help and is worth it!

Thursday, October 18, 2007

Career fair

Today I attended the career fair at the University of Utah. As I told my brother before he went to the career fair down at BYU, I am not entirely sure of the best way to approach these things. I spoke to a number of different companies, the major ones being National Instruments, Marvell, Raytheon, and Sandia. The email I received from my career counselor indicated that Microsoft was also going to be here, but they were not. I collected some interesting fliers and information, plus some need little gadgets. However, most recruiters just tell us to look at the company web site and to submit a resume there.

In other news, my proposal presentation is in its final format. It is a good thing, since I am presenting it tomorrow.

Wednesday, October 17, 2007

Real-time issues

During my interview with Sandia this morning, the recruiter asked me about if I dealt with real-time issues when working with cXprop. Unfortunately, I had to explain that I did not worry about those types of constraints when working on my tool. Basically, I worry about code size, data size, and duty cycle. That seems to be it. Occasionally we used to through stack size in there as well, but John does not maintain stacktool anymore, so it does not work for TinyOS 2.

Other than that and a few fumbles here and there, the interview went fairly well. It sounds like they are doing some really neat stuff that I would be happy to work on. I just have to make sure they would be happy to have me work on it for them!

Monday, October 15, 2007

Local view

Last week I spent a little bit of time making internal information from cXprop available to Will Archer for use in his Caduceus-using tool. Unfortunately, I came at the problem with the wrong set of assumptions and it has ground the idea to a temporary halt. Hopefully we can resolve the issues during our group meeting on Thursday.

My faulty assumption was that cXprop was going to be used on whole-program code, and probably on TinyOS code. Although it works on other things, that is normally the target. It turns out Will is using it on single files that may or may not have anything to do with TinyOS. This means that I do not know any order of execution inside the functions, so I basically have to assume ALL orders of execution.

The problem is that this model does not exist in cXprop, except for interrupts. I would have to adapt that model to functions in files. Which should not be too hard, but John wants me to stop hacking on code and keep working on my "critical path" writing/presenting projects. Which is why I have not actually done it yet. There might also be little nuances I have not thought of yet. Until I create this model, Will uses a version that assumes "bottom" for incoming entry-point function state, which basically means nothing gets learned.

Entry-point functions are defined as those which are visible outside the file. This essentially means anything not labeled as static, although there are a few other less-common cases.

Friday, October 12, 2007

Car Mechanics

This post is mostly about car mechanics, but it also relates them to computer repair services so I feel justified in posting it here.

My car started acting up a few months ago. Various circumstances prevented me from taking it in until a week ago. Up until now I had been going to the dealer, since I knew they would know what they were doing and would have the parts. However, I called the dealer up this time and the mechanic said it would be at least a day and at least $95 to just look at it. That was such a blatant attempt to rip me off that I did not make the appointment and resolved to find someone else to fix my car.

Luckily, my wife listens to Car Talk and has often sucked me in as well. Although we have not listened as regularly as we used to, we still trust those two guys. I knew that their website had a forum for recommending auto mechanics, so I checked it out. After doing a bit more research, I settled on a group of three to try. The first one couldn't see me until next week, and my life starts getting REALLY busy again next week. The second one could see me today, so I made the appointment.

Dropping the car off this morning, I had a little apprehension as I walked away. The repair shop was definitely a lot less "classy" than the dealer. As I thought about it, though, this made sense. The mechanic actually knew how to fix cars. He didn't charge me to look at my car. As of writing, I am still waiting to hear back from him. I'll probably call him in another twenty minutes.

The point is that I realized that computer service repairmen are like auto mechanics. Places like Geek Squad know they can take the average person to the cleaners because the average person has no clue how to self diagnose a computer and fix minor problems. The only way to REALLY protect oneself when dealing with computer repair people or auto mechanics is to actually know a fair amount about what they are fixing.

Otherwise, you end up like me, getting worked over by the mechanics. When I was ignorant/scared of computers, I had a "friend" help me fix an old laptop. Only it really didn't take much/anything. Then the "friend" expected me to give him rides to school every day, even though he had only done about half an hours worth of work.

Knowledge is power, and reading up a little bit can save a lot of money/time.

Tuesday, October 09, 2007

Digital Photos

I have several gigabytes of digital photos. Because they are essentially "free," I take a lot more digital photos than I would if I had a regular camera. I almost never get these digital photos actually developed. Part of me feels that this is wrong and we still need to have hard copies of photos.

But then part of me says that having a hard copy is no longer important, as long as the digital copies are backed up and dispersed. A set of hard copies can be destroyed in a fire, just like there are several ways to destroy the digital versions. Plus, with applications like Quark or Pagemaker, making "scrapbooks" can become an ALL digital process.

I guess then there wouldn't be scraps, though.

Sad but true

This sums up what it feels like to have a meeting with my advisor, John Regehr:

I'm not even kidding. That was definitely what it was like at first, at least. I think I have built up some immunity over the years.

Monday, October 08, 2007

PhD Proposal

I finally got my thesis proposal past my advisor and onto my committee. So I also put it up on my web page. You can read it here, or the main point is copied below:


A straightforward instantiation of traditional dataflow analysis techniques fails to provide adequate precision for aggressive optimization of interrupt-driven MCU systems. These systems contain features which either must be dealt with because they hinder the analysis, or should be leveraged because they represent an untapped potential for information. The pivotal features in interrupt-driven MCU systems are the interrupts and the microcontroller themselves.

An interrupt complicates the dataflow analysis for a given code segment because during the segment it may fire at any time, it may fire repeatedly, or it may never fire at all. To avoid unnecessary degredation of the results, an analysis must have a better coping strategy for multiple flows due to interrupts than just modeling all possible interleavings of the flows. On the other hand, interrupts also provide useful divisions between program elements. Some data and code may be only accessed inside a single interrupt, inside multiple interrupts, or outside of any interrupt. Not capitalizing on the isolation of accesses due to interrupts will unnecessarily reduce analysis precision.

Low-level systems programming on MCUs often involves inline assembly and directly accessing specific parts of the MCU. For example, the status register may be directly read, shifted and masked in order to determine the status of the interrupt bit. Naively and pessimistically analyzing all hardware accesses degrades the analysis of systems code very quickly. Leveraging the information is crucial for the success of
the analysis.


I am developing a framework to enable sound and accurate dataflow analysis for interrupt-driven microcontroller programs. This framework adapts existing abstract interpretation ideas to system-level C code. My framework integrates several synergistic analyses such as value-flow analysis, pointer analysis, and callgraph construction. Contributions of my work include using pluggable abstract interpretation domains, providing a novel model of interrupt-driven concurrency, allowing dataflow through volatile variables when safe to do so, and tracking interrupt firing dependencies. When compared to a highly optimizing C compiler, my framework improves traditional code optimizations such as conditional constant propagation, dead code elimination, redundant synchronization elimination, and inessential-safety-check removal. It also enables new transformations such as RAM compression, the sub-word packing of statically allocated global variables. These transformations help microcontroller programs meet stringent resource requirements.

Thursday, October 04, 2007

Nearly All Binary Searches and Mergesorts are Broken

A paper from POPL that we are reading in John's Research group refers to this blog post: Official Google Research Blog: Extra, Extra - Read All About It: Nearly All Binary Searches and Mergesorts are Broken. Scary and funny at the same time.

The problem occurs with int mid =(low + high) / 2; and statements like it. If low and high are integers, then there is not a problem. Since they are int typed instead, there is a possibility for overflow. An easy solution is to add in a subtraction or do some fancy shifting (see the original Google blog).

John mentions this type of thing a lot. It seems that a lot of formal methods people make assumptions about an int acting like an integer. Software engineers, on the other hand, are painfully aware that the problems normally come because int types do NOT act like integers. This is why there are some many complicated transfer functions in cXprop. The paper we are reading is Types, Bytes and Separation Logic by Harvey Tuch, Gerwin Klein, and Michael Norrish.

Wednesday, October 03, 2007

Distributed Cognition

I recommended we read a paper on distributed cognition as part of the seminar on ultra-large scale systems. The paper I chose was Distributed Cognition: Toward a New Foundation for Human-Computer Interaction Research by James Hollan, Edwin Hutchins, and David Kirsh (all at UCSD). The paper led to some interesting discussion about human computer interaction (HCI). Eric was particularly excited about it, as it directly relates to the FLUX workbench project, which he is in charge of.

I found the paper to be an interesting and informative read, but I would prefer to read the follow-up paper. The ethnographic studies they highlight emphasize the importance of considering the environment as part of the cognitive process, but they do not actually include multiple people in that environment. They explain how such a study does not exist yet, but that does not make me feel any better. Unfortunately, I have not been able to find a paper which does do this study.

Tuesday, October 02, 2007

RTSS PhD Student Forum

Yesterday I submitted my proposal to the RTSS PhD Student Forum. I am fairly happy with how my submission turned out.

Tuesday, September 18, 2007

Apple's mistake?

On the way to work today I listened to the This Week in Tech podcast from last week. A new episode came out yesterday, but I did not plug in my iPod last night. Since I had not listened to any of my podcasts (I rarely do), this one was still available. Anyway, I listened to it and the discussion revolved mostly around Apple and their "announcements" of two weeks ago.

The main debate centered around the $200 price cut in the iPhone. The host tried to see the best in Apple, while the rest seemed to think Apple made a huge mistake. They also talked about why this was a mistake (bad publicity, overshadow new releases, etc). Even though they were disagreeing, I think everybody was making strong and reasonable arguments. I have to say I am in the "apple made a mistake" category, but I agree with the host that the true shame is the overshadowing of their new releases.

In particular, the new iPod nano. Sure, the iPod touch is what is REALLY cool, but the iPod nano puts video in such a small scale and for so cheap! That commercial for it is also strangely addicting and too catchy. The biggest problem I have with the nano is all the choices! Not only do we have to decide which iPod to get, we also have to decide which color. And if we want to surprise someone with a gift, that makes things difficult.

Monday, September 17, 2007

Open-source in ULS systems

In the Ultra-Large-Scale Systems (ULS) seminar we are reading the Carnegie Mellon report which makes a case for ULS systems as a new and legitimate area of research. This seems to be somewhat of a hot topic right now, including a special discussion session at OOPSLA last year and a workshop earlier this year. The fundamental problem with this research is that it involves considering things that most systems computer scientists do not consider (such as the social and economic aspects).

One particularly prevalent consideration is how the open-source movement fits into the models (See the Cathedral and the Bazaar). The semi-altruistic behavior of open-source software development has proven its staying power. However, these ULS systems will be developed by and for the government (at least initially), and will therefore not be open-source in the conventional sense. However, open-source-development-like behavior may be exhibited by competing government contractors.

Also the longevity of ULS systems may necessitate open-source models in order to remain relevant. These systems will take a long time to build, and will take even longer to be replaced. "Many eyes makes all bugs shallow," so open source may be the way to go. However, how does one put automatic driving, a hospital, or the military in the hands of open-source and feel good about it?

Friday, September 14, 2007

CS PhD jobs

I'm meeting with the career counselor for computer science students today at the U. We are going to look over my resume. I think this comic sums up things nicely:

Thursday, September 13, 2007

Embedded languages

Some time ago I read Stephen A. Edwards' article called Design Languages for Embedded Systems. Although it is now over four years old, it did and still mostly does provide a nice survey of a embedded programmer's language options. I wanted to review four that he mentions and one that he does not:

  • C - This is pretty much the current lingua franca for embedded systems, and it will probably stay this way for many years (fears of my previous post aside). Often classified like a big gun, one can do whatever they want with C. That include writing really really really BAD programs.
  • Java - Object-oriented, automatic garbage collection, and lots of other goodness. real-time java attempts to provide embedded developers necessary tools, but it has not completely caught on yet.
  • VHDL - This is a hardware description and modeling language. Reminds me of the good ol' days in CS 224. I must admit I did not actually use much VHDL then, but one or two people in the class did. So I am actually not really familiar with it.
  • Esterel - I am not really familiar with this either. However, at LCTES '06 I heard a number of talks from researchers using and/or improving it. Edwards was one of them (showcasing SHIM) and in his paper he classifies Esterel as a hybrid language.
  • OCaml - This is the language I am currently using the most, so I have to mention it. Unfortunately, I am not using it to do embedded programming but to analyze embedded programs instead. OCaml does not seem to be suited for really tiny MCUs, but it might work with other embedded programming

Wednesday, September 12, 2007

C in the future

During the last meeting of the Compiler's Reading Group (CRG) here at the University of Utah, the discussion moved to our future vision for users of the C language. The question put forth by Jay (if I remember correctly) was whether C (and C++) is going the way of Fortran, or if people will continue to use it as it is, or if people will use some "safe" variant of it. My advisor, John Regehr, asserted that both the first and third options will occur. Specifically, that C will become (it already has, to some degree) a niche and/or legacy language and that the version of it to be used will be made safe.

I think this answer will probably be correct eventually. It is supported by by Kathryn McKinley's talk from a few months ago. One poor student decided to take her on and say he did not believe that java garbage collection could do a better job than his own memory management. After some back and forth, she eventually said "you're wrong!" When it was her credibility vs. his, she wins. The point of that is programs have become so complex that a compiler usually beats the programmer. That makes languages which rely more on the compiler, like Java, seem a little more appealing and languages which give total control to the programmer, like C, seem a little more out-dated.

You may or may agree with this. My impulse is to fight long and hard against this. A lot of us like the "freedom" C gives us and hate having hands tied in any way. However, maybe the time has come to face the music and switch to another language...

Tuesday, September 04, 2007

Social networking

I decided that it was time to update my social networking and web 2.0 sites on the web. I thought it would take a few minutes and then all would be well. I also figured that while I was at it I would sign up for facebook. Well, a day and a half later I am done. Of course, part of that delay was time taken to watch my newborn and 19 month old, but it still took longer than I thought. I think in the future I might let some of these die off (again), but I hope to keep some of them up to date (more or less):

Wednesday, January 24, 2007

Research tools

Talking with other PhDs, there seems to be a universal paradox with doing thesis work. More often than not, our small projects become big projects. This means that the big projects need documentation, maintainability, usability, and all those other -ities for significant pieces of software. However, for small projects we just want to hack them up and get it out the door so we can move on to something important. Those two do not mix, so the question is how to balance and transition between them.

My thoughts on this now (in retrospect) is that every small project should be treated like a big project unless there are significant time constraints or it is a perl/python script. Anything else should be expected to be used/extended by someone, possibly not yourself. If the project stays small, the documentation will be insignificant. Plus, if you are in academics you are going to write a paper about it anyway.