Profile cover photo
Profile photo
Steve Bian
I will make it work
I will make it work

Steve's posts

Post has attachment
IPython Notebook on GPS Timing and CDMA
In [1]: % matplotlib inline import matplotlib import numpy as np import matplotlib.pyplot as plt GPS Timing ¶ Carrier-phase detection is suppose to yield better timing information than tracking the pseudorandom code stream. The reason for this is supposedly...

Post has attachment
Blender, the poor man's solid works/inventor/etc

Post has attachment
Arduino-MK with Sparkfun Pro Micro 3.3V
Arduino-MK needed coaxing to in order to compile code targeting the SparkFun Pro Micro 3.3V. Major source of headache is the requirement for BOARD_SUB which isn't documented and required diving into the source code, and also the fact the Pro Micro has 2 PID...

Post has attachment
Method Forwarding in Objective-C Pitfall
A common pitfall of trying to use message forwarding in Objective-C is forgetting to implement - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector in addition to - (void)forwardInvocation:(NSInvocation *)anInvocation Another problem is that som...

Post has attachment
Permission Denied When Programming Arduino Micro/SparkFun Pro Micro
I recently started having trouble with Arduino 1.6.x not being able to program Arduino Micro or SparkFun Pro Micro, with avrdude complaining about permission denied when trying to open /dev/ACM0 . The usual solutions to this is to add oneself to the dialup ...

Post has attachment
Thinkpad Mute Buttons and Xubuntu
I recently acquired a used Lenovo X220 for use as a linux laptop, and needed the following in my openbox configuration XML to make the hardware speaker and mic mute buttons work: <!-- Modified for X220 -->
<keybind key="XF86AudioMute">
<action name="E...

Post has attachment
Notes on Migrating a Linux Install
Some issues I ran into when trying to move a Linux install from a 500 GB drive to a smaller 120 G SSD: When duplicating the filesystem, make sure that /proc exists, otherwise when you boot the new drive the kernel will complaint that /proc is missing and it...

WTF Arduino?

EEPROM.write(0, 0x9E);
EEPROM.write(1, 0xFE);

printf("0x%02x 0x%02x\n",,;
printf("0x%02x 0x%02x\n", EEPROM[0], EEPROM[1]);

Later in serial monitor:

0x9e 0xfe
0x00 0x01

This just cost me 30 minutes. God damn it.

Edit There is nothing wrong with the EEPROM library, it has to do with the interaction between printf and the EEPROM object.

Post has attachment
Reading Lecroy Binary Waveform in Python
I needed to read Lecroy binary waveforms files recently, and the one python script I had found didn't read them properly due to improper handling of 16 bit samples. I wrote an alternative that should be a drop-in replacement. It  handles 16 bit wa...

Post has attachment
On the Use of I/Q Signals
All signals are complex, that is they have the form of \[x(t)=A\exp(i\omega t)\]. I/Q presentation of a signal fully captures this by storing the real component in the I , the in-phase signal, and the complex component in Q , the quadrature signal. When we ...
Wait while more posts are being loaded