iSeismometer Update Report - Do iPhones dream of Fourier’s Cat?
First, I would like to appreciate for all feedbacks from you. More than 200,000 users downloaded iSeismometer so far. iSeismometer is a simple iPhone app to show slight motion of the iPhone itself. We’ve started another development cycle to add more features. This update includes some visual improvements and algorithm changes on the Spectrum screen.
[caption id=“attachment_725” align=“alignnone” width=“200” caption=“New Version Main Screen”][/caption]
Before going to the detail, let’s cover things that we updated.
- Alarm when it detects shaking motion
- Sampling rate is adjustable
- Show time lines On/Off option
- Real-Time Drawing On/Off option for stable sampling rate
- High-Pass Filter On/Off option
- Send Data without location information
- Report the Earthquake option
- Better Web Interface with Flash Chart Module (available only from your desktop/laptop)
- Improved Spectrum Drawing
Since some people suggested us to place some indicators that you can drag and scroll the screen while it’s stopped. We placed the arrow indicators. Please try pausing it and scroll with your finger.
[caption id=“attachment_726” align=“alignnone” width=“200” caption=“Drag with your finger to scroll back”][/caption]
It draws lines with anti-aliasing. We will increase the capture length and multiple saving slots in the next update (ver 1.2).
[caption id=“attachment_728” align=“alignnone” width=“200” caption=“New Settings Screen”][/caption]
[caption id=“attachment_729” align=“alignnone” width=“200” caption=“Alarm Screen”][/caption]
I am also a graduate student in Earth and Environment Science major in Long Island University, and that’s why iSeismometer project started. Recently, Dr. Kennelly who is Assistant Professor of Geography and I published a research paper. We also submitted grant proposal to USGS to get more funding. Daily News covered us about this project . We asked a web designer to create flash movie to introduce our concept. A lot of activities are going on here. Let’s see how it goes.
Another big improvement is on the Spectrum screen. This is a bit geek talk so you can skip if you are not interested in (let’s go download iSeismometer in iTunes).
The Spectrum screen is my journey to find out “how many times you shake your iPhone within certain duration?“. Hopefully, this is going to detect the earthquake waves in the future because seismic waves often shows repetitive patterns. Our first version of iSeismometer draws the spectrum with a regular Fourier transform algorithm. This works ok on my macbook while I’m developing. Then, I had a performance problem on my device because the resource is limited. It was taking forever to calculate data for more than 1500 signals (you know, meaning of forever in our generation). In the current version, it incorporates the fast Fourier transform. This dramatically improved the performance of drawing spectrum analysis based on “divide and conquer” method. However, there is a drawback; which is the number of samples is limited to 2^n (e.g. 128,256, and 1024). This is the actual performance improvement:
[caption id=“attachment_735” align=“alignnone” width=“300” caption=“Regular FT vs. FFT”][/caption]
The graph shows different performance for each data. As we expected when we changed the algorithm from O(N^2) to O(N.log N), time to calculate larger amount of data increases a lot for the first version while the new version stays within 0.1 second. The cost of computation stabilized just like the textbook’s sorting algorithm demo. This is very good example for Computer Science 102 kind class.
Very good!
[caption id=“attachment_730” align=“alignnone” width=“200” caption=“Spectrum Screen”][/caption]
Nowadays, we use powerful machines and mature high-level language with garbage collectors. We, programmers, often forget those basic tune-ups what Dijkstra offered long time ago. Programming in Objective-C with a limited environment (e.g. mobile phones) is a nice training for me because I’m one of .NET developers who use very rich resources in my work place.
I still remember that my first Computer Science professor told me. “Memorizing API is not so important. Understanding the algorithms is important. Because those API might be dead in few years but the algorithm is not. You can use the core idea in everywhere, over and over again.”