Starting a new job

October 17th, 2011

For the past six years I’ve been working for a small defense contractor here in Oxford, writing software for airborne radar. I enjoyed it, and I learned a lot along the way. Unfortunately, we were primarily funded by Congressional earmarks, which have fallen out of favor as of late. To make a long story short, I was laid off four weeks ago. I harbor no ill will, because I feel like they held on as long as they could, but it still sucked, a lot.

There aren’t many high-paying software jobs here in Oxford. We briefly considered moving elsewhere, but ultimately decided to stay in Oxford, at least for now. Most of you will recall that Cassie does not work outside the home, so it was a little scary until I got an actual job offer.

Luckily, there was a timely opening at the University, and I’ll start today as a High Performance Computing Specialist for the Mississippi Center for Supercomputing Research (MCSR). We have two SGI Altix supercomputers and a large Linux cluster. I’ll be working with researchers from all of Mississippi’s public universities to help them utilize the supercomputers, provide training, etc. I’m looking forward to it, and it’ll be nice to be back on campus where I have several friends from previous stints as a student and as a Network Administrator for the Computer Science department (my first “real” job).

There’s also a research component to my new job, which I’m hoping will accelerate my PhD research. I haven’t been very productive in that area lately.

Hopefully I’ll find a little more time to blog and tweet as well, but no promises.

Microcontroller course

June 6th, 2011

As I mentioned in my last post, nearly six months ago, I taught an “Embedded Development” course in the Computer Science department at the University of Mississippi. It was a highly practical course, and the Arduino was our hardware platform of choice. The “brain” of the Arduino is an Atmel AVR ATmega328P microcontroller with 2kB of RAM and running at 16MHz. Instead of using the Arduino language and development environment, we used C and Eclipse.

We started out learning to blink LEDs, to calculate the value of current limiting resistors, and the difference between sinking and sourcing current. We then learned how to use the hardware timers on the AVR to time events (interrupts) and output Pulse Width Modulation signals to vary the brightness of LEDs and create simple sounds.

Four digit, seven segment display setup

Four digit, seven segment display setup

Next, we learned to use a four digit, seven segment display from Sparkfun. This is a fairly common display, and there are lots of examples of how to use it on the Internet. However, I wasn’t happy with any of them. They either ran the display at low currents (resulting in low brightness) or used standard shift registers at higher currents than they were designed for. I came up with a design that used a TPIC6C595 power shift register to control the segments and four 2N3906 transistors that switched power to each digit. I was quite proud of my design, as I’m definitely a programmer, not a hardware guy. We also learned how to convert numbers into binary coded decimal (BCD) for display on the seven segment display.

Read the rest of this entry »

Embedded Development Course

December 19th, 2010

Below is the description of a course I’ll be teaching in the spring. It’s the first time I’ve been able to teach a special topics course (i.e., have complete control of the content of the course), and I’m really looking forward to it.

CSci490: Embedded Development
Instructor: Ben Pharr
M W 5:30 PM – 6:45pm
Weir 235

Embedded systems are all around us and are becoming more common by the day. Embedded systems typically perform a few dedicated functions as part of a larger system such as a vehicle, appliance, vending machine, etc. They are often resource constrained in some way, yet must respond in near real-time to events happening in the physical world. Obviously, developing for these systems can be quite different from developing in Java for a desktop application.

This class will use the Arduino hardware to explore embedded development. The Arduino is a development board powered by an Atmel AVR ATmega328 microcontroller. It runs at 16 MHz and has 2kB of SRAM and 32kB of flash.

Instead of the usual Arduino language, we will use ANSI C in order to build skills that are transferable to other embedded platforms.

Topics will include:

  • The C Programming Language
  • Data Representation
  • Computer architecture
  • General Purpose Input/Output
  • Basic electronic concepts
  • Timers
  • Pulse width modulation
  • Analog to Digital Conversion (ADC)
  • Interrupts
  • Serial communication
  • Embedded debugging and troubleshooting

Textbook:
Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment

Morgan and Claypool Publishers (July 12, 2010)
ISBN: 978-1608454983

Related links:
http://arduino.cc/en/
http://arduino.cc/en/Main/ArduinoBoardUno

Understanding Basic Electronics

October 19th, 2010

Several months ago I started reading Understanding Basic Electronics, 2nd Edition, released this year by the ARRL. I was just nearly finished with it when I decided I should get serious about studying for comps. Last week I picked it back up and finished it.

During my Computer Science education I’ve only had one Electrical Engineering course, ELE335, Principles of Digital Systems. There was an accompanying lab where we played with logic gates, but there was no mention of resistors, capacitors, etc.

Over the past several years, both before and since getting my amateur radio license, I’ve picked up several beginners’ books on electronics. Understanding Basic Electronics is the best I’ve read so far. Most of the material was already familiar to me, but I learned and relearned several things.

It’s a relatively short and quick read. The chapters are broken into 2-3 page lessons. It covers all the basics: Ohm’s law, DC concepts, AC concepts, capacitance, inductance, power, frequency, transformers, impedance, resonant circuits, semiconductors, diodes, transistors, and integrated circuits. There are no experiments, as such, but it gives you a good base with which to move on to other books that do have experiments, like Make: Electronics.

It’s the first in a three book series. I already have the other two, Basic Radio and Basic Antennas, and I’ll be starting on them as soon as I catch up with the reading for my classes.

PhD Comps

October 12th, 2010

Last week I took the comprehensive exams (“comps”) for my PhD in Computer Science. There were four of them: Theory, Programming Languages, Software Engineering, and Systems. I won’t know for certain how I did for a few weeks or so, but I feel good about all of them. I’d be shocked if I failed any of them.

For the past month or so I’ve been spending every spare moment studying for comps. I started studying a long time before that, but really didn’t get started in earnest until about a month ago. Cassie and the kids gave me a few weekends to myself so I could get a lot of studying done.

I was most concerned about the Theory and Programming Languages tests (the latter due to the Automata section), so I spent most of my time studying for those. Of course, I ended up feeling really good about those, but trying to cram the night before for Software Engineering and Systems. While I managed to stress myself out over the last two, and missed a fair amount of sleep from the cramming, I ended up doing fine on them too.

Studying for comps was an interesting exercise on its own. I learned and relearned a lot. I also convinced myself that I’m definitely in the right field. I found virtually everything I read to be fascinating.

It’s quite liberating to have comps over with. They’ve been looming for a few months now. Now I can spend time on other things…like my really tough Machine Learning course. I hope to find a little time for some ham stuff and some backpacking soon too.

I’ll finish the coursework for my PhD in the spring. I also hope to propose a topic for my dissertation in the spring. If I can stay motivated, with a little luck, I’ll defend my dissertation in spring of 2012. It’s certainly an optimistic schedule, but that’s what I’m shooting for.

Thoughts on Alaska plane crash

August 10th, 2010

It’s interesting to me how slowly details about the plane crash in Alaska are trickling out. The crash happened yesterday (Monday) around 7pm local time. A rescue team, including a doctor with a satellite phone, arrived sometime last night and stabilized the survivors.

About 10am CDT this morning CNN started reporting that former NASA Administrator Sean O’Keefe was on board the plane. Shortly after that, reports started coming out that former Senator Ted Stevens was possibly on board. About 2pm we learned that Stevens had died.

A coworker and I speculated that they were just looking for O’Keefe’s body, because surely we’d know it by now if he was alive. About 3pm we finally learned that O’Keefe was alive. Initial reports seemed to indicate that he only had minor injuries, but around 10pm tonight they announced he was in critical condition.

I understand the remoteness of the crash site and the poor weather, and the fact that getting information to the media isn’t the first concern, but it still seems like information was trickling out awfully slow.

I would imagine surviving a plane crash is something that weighs heavily on one’s mind. Especially when someone else doesn’t make it. The late Sen. Ted Kennedy survived a plane crash in 1964, less than a year after his brother, President John F. Kennedy, was assassinated.

The plane involved in this crash was a de Havilland Canada DHC-3 Otter, an amphibious plane. They haven’t been produced since 1967. The US Army was once the largest operator of the Otter, having 184 of them.

After leaving NASA in 2005, Sean O’Keefe was the chancellor of LSU for three years. He is currently the CEO of EADS North America. A subsidiary of EADS North America, American Eurocopter, produces the UH-72 Lakota Light Utility Helicopter in Columbus, Mississippi for the US Army.

Free Socket 939 MB, Processor, and Memory

August 8th, 2010

I have an ASUS Socket 939 motherboard, AMD Athlon64 X2 dual-core processor, and two DIMMs of 1GB PC3200 RAM free for the taking. The catch is that one of them is bad. Based on past experience, I’d say the motherboard is toast and the processor and memory are just fine. That’s just a guess though.

I replaced the ensemble with a Core 2 Duo setup a few months ago when one of them went bad. Let me know via email if you want it.

The development and use of the first nuclear weapons

August 6th, 2010

A few weeks ago, I read virtually everything Wikipedia has on the development of the nuclear weapons used on Hiroshima and Nagasaki. I hadn’t planned on writing a blog post on this topic, but something interesting came up yesterday that I did want to post about and this seemed like a good introduction. It wasn’t until I after I had decided to write this post that I realized today was the 65th anniversary of the bomb being dropped on Hiroshima.

Numerous books have been written about the Manhattan Project, so I won’t even attempt an outline here, but below are the main Wikipedia articles for your reference:

Read these and some of the links on these pages and you’ll know a lot about the bombs, their development, why they were used, etc. Below are a few of the facts that were new to me or that I find particularly interesting. I’m sure there were more, but I didn’t take notes.

One of the things that makes the Manhattan Project so interesting is that these scientists took a completely theoretical idea and made a working weapon in less than four years (12/1941 – 8/1945). Granted, they did have virtually limitless resources and some of the brightest minds of their time.

In my opinion, the single most interesting person involved in the project was Robert Oppenheimer, the scientific director. He famously lost his security clearance in 1954 for having ties to Communism. History has cleared his name regarding any spying. It is now known that the KGB tried to recruit him numerous times, but they were always turned down.

The project actually produced two different types of nuclear weapons: one based on Uranium-235 and another on Plutonium-239. The element Plutonium had only been discovered in February, 1941.

The Uranium-235 was produced in Oak Ridge, Tennessee. The site was picked, in part, due to the availability of cheap hydroelectric power from TVA. At one time, the site used over a sixth of the electrical power produced in the United States. Due to security concerns, the Governor of Tennessee did not know Oak Ridge existed for some time, even though it would soon become the fifth largest city in Tennessee. Perhaps unsurprisingly, the area of the Oak Ridge complex where the Uranium was enriched is now an EPA Superfund site.

Copper was in short supply during World War II, so Oak Ridge was loaned 14,700 tons  of coinage silver (currently worth $7.3 billion) from the US Treasury to create massive electromagnetic coils. Approximately 99.965% of it was returned to the Treasury after the war.

Due to the small amount of Uranium-235 available and the confidence of the scientists, a test was never carried out using the Uranium design. They didn’t know for certain it would work until it was dropped on Hiroshima. As an engineer, I’m astounded that they pulled this off in such a short time with no final test.

On July 16th, 1945, a Plutonium weapon was tested at the White Sands Proving Ground in New Mexico. The test was code-named Trinity. The explosion was heard 200 miles away. The Army put out a press release explaining that a remote ammunitions magazine had exploded. Near the explosion, the sand was turned to a light green, radioactive glass that came to be called Trinitite.

In the brainstorming stage of target selection, Kyoto was a favorite. Supposedly Kyoto was taken off the list by Secretary of War Henry Stimson who had honeymooned there.

On July 26th, 1945, the Potsdam Declaration was released, in which the Allies requested an unconditional surrender from Japan. It promised “prompt and utter destruction” if they did not surrender. The Japanese did not respond.

On August 6th, 1945, three B-29s left Tinian headed toward Hiroshima by way of Iwo Jima, a six hour flight. They were picked up by the Japanese on radar, and the alert was initially raised, but after determining there were only three planes, the air raid sirens were turned off. The Japanese had previously decided not to intercept small formations with fighters to conserve fuel and planes, which is what happened on August 6th. When the planes arrived at Hiroshima it was clear. Had it been cloudy, they would have diverted to Kokura.

“Little Boy” was dropped from the Enola Gay at 8:15 local time. It detonated 1900 feet above the city, as designed. Approximately 70,000 people (~30% of Hiroshima’s population) died immediately. It is estimated that up to a total of 200,000 people died by 1950 due to effects from the bomb.

On August 8th, the Soviet Union finally declared war on Japan and invaded Manchuria.  Japan had been hoping to avoid war with the Soviets. They still did not surrender.

On August 9th, Bockscar and its supporting B-29s headed for Kokura. They had orders to drop the bomb only if they could see their target. Weather scouting planes flying an hour ahead reported clear skies. Bockscar was delayed due to a supporting plane missing its rendezvous. By the time it arrived in Kokura, it was cloudy. They diverted to the secondary target, Nagasaki.

At 11:01 local time, “Fat Man,” a Plutonium bomb similar in design to the one tested previously, was dropped on Nagasaki. Between 40,000 and 70,000 people died immediately.

At this point the officials in Japan were still split on the issue of surrender. Early on August 10th the Emperor himself came out in favor surrender, as long as he could retain his power. The Allies continued to demand an unconditional surrender. Finally, on August 14th, the Emperor and his government agreed. The was an unsuccessful coup d’état by elements of the military that did not want to surrender.

The US planned to have another nuclear weapon ready by August 17th, and it would have most likely been used had Japan not surrendered.

There is, of course, a debate about whether or not nuclear weapons should have been used on Japan. I have my opinion. I encourage you read up on the facts and develop your own.

If you know of any related, interesting facts that I missed, please post them in the comments.

Update

August 5th, 2010

I haven’t posted anything in a while, so I thought it was time to post a quick update.

I’ll be taking two classes again this fall in the continuing pursuit of my PhD in Computer Science at Ole Miss. I’ll also be teaching CSci259/390 (C++) on Monday and Wednesday nights.

Sometime in late September or early October I’ll be taking my comprehensive exams, the first of three major milestones in the PhD process. There are four exams, covering Systems, Algorithms, Programming Languages, and Software Engineering. I’m not worried about them, but I’ll be glad when they’re over. Right now I feel guilty if I do anything other than study for “comps.”

I’ve recently finished my Small Wonder Labs SW-40+, a small Morse code radio for the 40m ham band. I’ll be posting about it soon. There are also several other ham radio and electronics projects I need to post about. Back in the spring I presented a tutorial on microcontrollers at the ACM Southeast conference.

James and I have another backpacking trip tentatively planned for September, which I’m really looking forward to. We had intended to go in the spring but got busy and never planned anything.

Of course, I need to post an update about Luke and Liam, which I will try to do soon.

Obviously, I plan on posting to my blog a little more frequently. I’ll continue to post shorter stuff over on Twitter.

Make: Electronics

February 24th, 2010

For about two months now, I’ve been spending most of my spare time reading and doing experiments out of Make: Electronics. My spare time has dwindled now that I’m back to teaching and taking classes. It’ll dwindle even more as I get into semester projects.

I’m now up to Experiment #16 in Make: Electronics; about half way through. I’ve learned a good bit, even though the book is definitely aimed at newbies. I have skipped a couple of experiments that didn’t seem like they offered enough new experience for the amount of effort they would require.

I would recommend the book to anyone with one disclaimer: be prepared to spend a lot on tools and supplies. I’m also not terribly fond of the author’s recurring intruder alarm example. I feel like he could have come up with a better project. On the other hand, I don’t know of a better hands-on, beginner’s guide to electronics.

For now, I’m suspending my efforts on the book to finish up my DDS-60 card. More on that soon.