|
Tobin Fricke's Lab Notebook
|
|
|
| artificial firefly |
[Nov. 25th, 2009|01:39 am] |
I would like to build a tiny circuit to implement an 'artificial firefly'. It will simply flash a bright green LED periodically, and have some means of detecting such flashes from other fireflies, and synchronizing their flashes so that all the fireflies in an area will flash together.
What is the smallest circuit that could implement this? A tiny little all-analog phase-lock loop would be great. I imagine the pulses of light would actually be modulated at several kHz in order to distinguish the firefly flashes from ambient light (or perhaps that wouldn't be necessary?).
Extra credit if the electronic fireflies can successfully mingle with 'analog' fireflies in the wild.
I imagine a similar device placed on bikes, e.g. in a critical mass ride. When the mass gets together, some emergent behavior arises. |
|
|
| the magic of wings |
[Nov. 5th, 2009|09:03 pm] |
It is kind of counterintuitive that an airplane (a 737-800, say) weighing 100,000 pounds can be held aloft by engines with a total of 10,000 pounds of thrust. |
|
|
| airport nerdery |
[Nov. 5th, 2009|08:49 pm] |
On the Continental airlines flight status page, it tells you not only when a flight is expected to depart/arrive, but it also has a button labeled "Where is this aircraft coming from?" By clicking this repeatedly, you can see the route taken by a particular airplane. For example:
Boeing 737-800 aircraft #501
Flight 1016: RSW (Ft Myers, Florida) to CLE (Cleveland, Ohio) Flight 189: CLE to PHX Flight 363: PHX to CLE Flight 515: CLE to LAX Flight 1403: LAX to EWR (Newark, New Jersey) Flight 41: EWR to SFO (San Francisco)
I clicked many more times and never got back to San Francisco. |
|
|
| (no subject) |
[Nov. 5th, 2009|11:46 am] |
|
An interesting anagram of "BANACH TARSKI" is "BANACH TARSKI BANACH TARSKI". |
|
|
| cos[x]^n = sum over cos[k x] |
[Nov. 4th, 2009|05:19 pm] |
I want to write cos[x]^n as a sum of cos[kx] for integers k, i.e:
cos[x]^5 = (5/8)cos[x] + (5/16)cos[3x] + (1/16)cos[5x]
I'd like a nice closed form expression for those coefficients. It's easy to do, because you can just write
cos[x]^N = ((1/2)(exp(ix) + exp(-ix)))^N
and then apply the binomial theorem.
You get:
Cos[x]^n == 2^(1-n) (Sum[Binomial[n, k] cos[(n - 2 k) x], {k, 0, Floor[n/2]}] - If[Mod[n, 2] == 0, (1/2) Binomial[n, n/2], 0]
where the funny "If[Mod[n, 2] == 0, (1/2) Binomial[n, n/2], 0]" part corrects for double-counting the exp[0] term when n is even.
Anyone have a nicer way to write it? |
|
|
| HD radio is proprietary |
[Nov. 3rd, 2009|02:50 pm] |
You've probably heard about "HD radio"--the new digital radio technology rapidly being implemented in the United States--but probably don't know much about it. I offer two points:
1. It doesn't stand for "high definition". They want to fool you into thinking this, I think. Originally the HD stood for "hybrid digital" but now it officially doesn't stand for anything. The audio quality is not necessarily better than analog (FM) radio.
2. It's proprietary! Despite being the only approved digital radio technology for use on the FM band in the United States, the codec is protected by trade secret.
Point #2 makes me angry. |
|
|
| darpa balloon challenge |
[Nov. 3rd, 2009|12:01 pm] |
To mark the 40th anniversary of the Internet, DARPA has announced the DARPA Network Challenge, a competition that will explore the roles the Internet and social networking play in the timely communication, wide-area team-building, and urgent mobilization required to solve broad-scope, time-critical problems.
The challenge is to locate ten moored red weather balloons located at ten fixed locations in the continental United States. Balloons will be in readily accessible locations, visible from nearby roadways and accompanied by DARPA representatives. All balloons are scheduled to go on display at all locations at 10:00AM (ET) until approximately 4:00 PM (local time) on Saturday, December 5, 2009.
A single $40,000 cash prize will be awarded to the first participant to submit the correct latitude and longitude of all ten weather balloons within the contest period. Entries are accepted until noon, 12:00 PM (ET) December 14, 2009. No prize for second place will be awarded.
http://networkchallenge.darpa.mil/ |
|
|
| Renegade BBS in Ubuntu LINUX (Telnet|Multi-Node) |
[Oct. 11th, 2009|07:52 pm] |
This guy is clearly after my own heart:
http://geek.phatus.com/2009/08/renegade-bbs-in-ubuntu-linux-telnetmulti-node/
A while ago I began thinking back about the the good old days when a dial-up BBS was the only thing even remotely resembling a basic website. Back when kids would unplug their parents phones over night and run their underground boards participating in a brilliant scene of hackers and phreakers that was decades ahead of its time. Since most young hackers typically had little to no money, the free and legendary Renegade BBS always seemed to be at the heart of this scene. Dispensing tens, perhaps even hundreds of megabytes of underground information and warez to all who would dial-in and participate in her communities. Now days I pretty much only use Windows for games and recording so I wanted to find a way to run a multi-node Renegade BBS under my Ubuntu system that you could telnet to. Below is a tutorial explaining how to accomplish this. |
|
|
| adaptive fitting |
[Oct. 6th, 2009|01:11 am] |
In experimental physics, it is very common to measure many data points and then fit a model to the data. For example, I recently measured the spot size of a laser beam at several locations along the beam. Then, using a nonlinear least-squares fitter, I found the parameters of a gaussian beam best matching the data.
I would like to have a more interactive process, one in which, given the measurements made so far, an algorithm tells me what measurement to make next to produce the greatest improvement in the determination of the model.
It seems this ought to be a very routine process.
One idea: Given the model-so-far, produce a monte-carlo ensemble of possible experimental outcomes over all possible experiments. Find the experiment which has the highest variance in possible outcomes--perform this experiment to further refine the model. This idea has some obvious failures: i.e. it will suggest you perform experiments totally unrelated to the model. |
|
|
| ∂/∂t phase(z) = Im ∂/∂t log z |
[Aug. 12th, 2009|08:21 pm] |
The rate of change of the amplitude and phase of a complex-valued function may be found by taking the real and imaginary parts of the derivative of the logarithm of the function.
z(t) = A(t) exp(i φ(t))
∂/∂t log z = (∂/∂t log A) + i (∂/∂t φ)
another form that might be useful:
(1/z) ∂/∂t z = ∂/∂t log z
This also becomes obvious upon drawing a little picture. |
|
|
| ZPK → [B,A] in Matlab |
[Jul. 29th, 2009|06:15 pm] |
I just spent several hours banging my head against Matlab, trying to convert a filter described in terms of poles and zeros into IIR [b,a] coefficients suitable for the use by the filter function. The secret turned out to be, in part, the c2d ("continuous to discrete") function, followed by tfdata. For future reference:
% define the sample rate of our system [Hz] fs = 16384;
% define some poles and zeros [radians/second] z = -2*pi*[0]; p = -2*pi*[100]; k = 1;
% make a Bode plot of the continuous system (s-plane) sysc = zpk(z, p, k); bode(sysc);
% convert the continuous system to a discrete one (z-plane) sysd = c2d(sysc, 1/fs, 'tustin'); bode(sysd);
% compute the IIR filter coefficients and apply the filter to some data [b, a] = tfdata(sysd, 'v'); y = filter(b, a, x);
% plot the spectra of the original and filtered data bw = 0.1; % frequency resolution (binwidth) [Hz] nfft = fs/bw; [X, f] = pwelch(x, hanning(nfft), nfft/2, nfft, fs); [Y, f] = pwelch(y, hanning(nfft), nfft/2, nfft, fs); loglog(f, X, f, Y);
The default units on the Bode plot are radians/second. For a given plot, the units can be changed to Hertz using:
bode(sysd); h = gcr; h.AxesGrid.XUnits = 'Hz';
Any idea how to make Hz the default unit, so that the units don't have to be fixed every time? |
|
|
| crucial NASA research |
[Jul. 23rd, 2009|07:52 pm] |
Japanese scientists and origami masters propose to launch a flotilla of paper planes from space. The launch is tentatively slated for early 2009 from the International Space Station. Around 30 planes will make the descent, each gliding downward over what is expected to be the course of several months. If one of the planes survives to Earth, it will have made the longest flight ever by a paper plane, traversing some 400 km. http://en.wikipedia.org/wiki/Origami_airplane_launched_from_space |
|
|
| rocket science |
[Jun. 28th, 2009|03:01 am] |

This year's ICFP programming contest involves planning an optimal sequence of rocket burns to cause an orbiting spacecraft to visit a collection of other orbiting spacecraft. It's a cool problem—orbital mechanics is quite unfamiliar!
Fortunately, the contest contains three warm-up problems. The simplest is to just move from one circular orbit to another, which can be accomplished via the Hofmann transfer orbit (as suggested by the contest specification). The next requires that you meet up with another orbiting spacecraft in circular orbit. I've solved those two. The final warm-up problem is to leave one elliptical orbit to rendezvous with a spacecraft in another elliptical orbit.
The final problem that these warm-up problems lead to is to find an optimal procedure for visiting a collection of other spacecraft in various orbits—here's where the clever searching and optimization will come in.
As an added twist, the individual problems come packaged as binaries for a virtual machine that you have to implement. Unlike prior years, this virtual machine is quite simple. In fact, it has no branching instructions whatsoever, so it's hard to even call it a virtual machine. You could translate it directly into C, for example.
I think my approach is quite slick: I implemented the virtual machine in C, but then wrote a Matlab (.mex) interface to it, so I can implement the rest of my solutions in Matlab, employing all of Matlab's mathematics and visualization and interactiveness while still coupled to this physics engine implemented in the virtual machine.
However, I think it's time for one-man team "tensor" to get some sleep. (-:
EDIT: 24 hours into the contest, they added a moon! |
|
|
| C library manpages |
[Jun. 27th, 2009|03:49 am] |
My Ubuntu installation has annoyed me for a long time by not having manpages for the usual C library functions. Of course there's an easy fix:
sudo apt-get install manpages-dev ahh, such a relief. |
|
|
| (no subject) |
[Jun. 25th, 2009|01:24 am] |
Looking for the canonical geographical coordinates of the LIGO detectors (in order to correct the Wikipedia entry!), I happened across the document Provenance of Detector Geometry Values in LIGO Frame Files (LIGO document T060064-00).
(Here, "frame files" refers to the file format developed to store data from gravitational wave detectors. I'm not convinced this required a new file format, but that's another story.)
About the metadata stored in these files (at one time back in 2006), this document says:
These values are very wrong! ... The longitude and latitude values are swapped, and are expressed in degrees rather than radians, while the azimuth values are given as radians counter-clockwise from east rather than radians clockwise from north. /me weeps openly
How much more wrong could you get?
Who let anyone describe latitude and longitude in radians? |
|
|
| navigation |
| [ |
viewing |
| |
most recent entries |
] |
| [ |
go |
| |
earlier |
] |
| |
|
|