Skip to main content

Posts

Showing posts from March, 2016

The Effective Engineer

I began reading The Effective Engineer by Edmond Lau. I really wish I had discovered (or looked for) the book 10 years ago! Back when I was starting out in my career, I spent a lot of time wandering. What I mean is that if I didn't know something, I wouldn't ask someone for help; I'd google and google until I found something. My rate of learning was pretty slow in the beginning and a lot of time passed before I had a good grasp of basic web technologies. During my job search, I've heard feedback from hiring managers, and from time to time (much more than I wished to hear, but it's good that I heard it) I would get this: "You're not senior enough." It was rather frustrating for me to hear this because in all the positions I've held in the last few years, I was considered one of the "senior" members of the team. Naturally, I felt unsettled, at first. Then this unsettled feeling gave way to curiosity; of course, there was something I coul

Arduino-CHDK camera triggering

I finally made some progress on my Arduino-CHDK camera trigger! When I first began this project, I wanted to use my Linkit One board since it already has GPS and SD card functionality (big win, because I would have less parts to buy...). I wrote a really simple script to set D13 high for 2s, then low for 2s, and set CHDK to do USB remote triggering. void setup() { pinMode(12, OUTPUT); } void loop() { digitalWrite(12, HIGH); delay(2000); digitalWrite(12, LOW); delay(2000); } It didn't work. My multimeter only read 3.3V... wonder why. I read the docs for the Linkit One and it says that the digital out pins only output 3.3V. I don't have a voltage regulator handy either (I'm not actually sure it would work either? It's been more than 10 yrs since I did anything useful with electronics). Good thing I have my Arduino Uno, because for sure it will output 5V. I set up the script on the Uno and the trigger worked! So now, I guess I ne

Growing up

... as an engineer. I've spent some time reading and thinking about my career. One of the hiring managers I talked to recently in an interview took some time to tell me what he considered a "senior engineer" according to his criteria. It was probably the most humbling but insightful experience during my job search (the whole job search was quite humbling, but not always so insightful) and I am really thankful he took the 10 minutes to tell me what I was missing. 1. Depth. The tools I had the most exposure (in terms of time) to, I wasn't actually an expert in any of them, like Java or Javascript. Just because you write a lot of code doesn't mean you're really good at it. 2. Breadth. I had a lot of exposure to a lot of different technologies, but I certainly could learn a lot more. 3. Communication. Be direct, succinct, and honest in all things, especially when responding to questions. I think I can sum it all up in one phrase: Always be coding and alway

Using the CropScape API

Recently, I have been trying to use their ExtractCDLByValues API to get the CDL file filtered on a particular crop value. Using the endpoint they provide (and changing the year/fips values) didn't work for me. Instead, I had to: 1. Invoke GetCDLFile (e.g. GET https://nassgeodata.gmu.edu/axis2/services/CDLService/GetCDLFile?year=2009&fips=19015) 2. From the response, use the URL for the "file" parameter for ExtractCDLByValues. From there, I was able to download my CDL file.

Reading accountability

I've amassed a ton of books just in the last month and currently have no accountability system. I'll attempt to write about what I'm reading and how I'm putting things to use (whether it's a small assignment or something I am allowed to talk about from work). One of my really big goals is to learn operating systems on somewhat of a university level. Here's where I've begun reading: 1. The Little Book of Semaphores 2. Beej's Guide to Unix IPC 3. Think OS: A Brief Introduction to Operation Systems 4. Operating Systems: Three Easy Pieces Progress summary: I haven't started #1, but I read the intro for 2 and 4. Reading about files and file systems (ch 4) from #3. I've also been trying to read more about distributed systems and working with big data. 1. Designing Data Intensive Applications 2. High Scalability blog 3. Miscellaneous engineering companies' blogs (e.g. Uber, Netflix)

Kite photography rig progress

I'm slowly getting all my materials together for the kite photog rig. Just ordered a delta kite (have to learn how to fly a big kite first, without a payload) and got Dacron kite string. I also did a bit of reading about picavet rigs, so I'm pretty excited. Next steps: 1. Hack up my mini usb cables to trigger the Arduino and camera. 2. Learn to fly my new kite! 3. Build a picavet. Need to acquire materials for this.

pgmodeler build in Debian Jessie

This is my qmake version: $ qmake -v QMake version 3.0 Using Qt version 5.3.2 in /usr/lib/x86_64-linux-gnu I had to edit linuxdeploy.sh: 1. Add "-makefile" to the QMAKE_ARGS variable: $ qmake -h Usage: /usr/lib/x86_64-linux-gnu/qt5/bin/qmake [mode] [options] [files] where mode is either "-makefile" (default) or "-project" QMAKE_ARGS="-makefile -r -spec linux-clang" 2. Right before "Running qmake...", I added another line to include pgmodeler.pro in the qmake invocation: QMAKE_ARGS="$QMAKE_ARGS pgmodeler.pro" Then I ran ./linuxdeploy.sh -no-qt-libs (https://github.com/pgmodeler/pgmodeler/issues/674)

PyImageSearch Gurus Debian setup (Jessie)

sudo apt-get install build-essential cmake pkg-config sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev sudo apt-get install libgtk2.0-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libatlas-base-dev gfortran sudo apt-get install libboost-all-dev sudo apt-get build-deb opencv sudo apt-get source opencv patch opencv_src/modules/highgui/src/cap_ffmpeg_impl.hpp < apt_opencvsrc/debian/patches/libav10.patch Compile opencv2 from source, then make install symlink the cv2.so and cv2.py to your virtualenv cd ~/.virtualenvs/gurus/lib/python2.7/site-packages ln -s /usr/local/lib/python2.7/dist-packages/cv2.so cv2.so ln -s /usr/local/lib/python2.7/dist-packages/cv.py cv.py

Starting my biggest side project

I've had this idea kicking around for a long time now, to use a camera on some kind of moving thing that takes pictures and puts it on the web. (http://www.uncommonprojects.com/uplog/2008/10/14/coding-a-networked-bike/) But instead of using a bike, since I don't bike often, I want to do this with a kite. "Drones can do that for you so you don't have to fly the kite", you might say. And yes, I do have a drone! But before I sink a lot of money in a nice drone setup and GoPro, I think I better practice with my current (cheap) drone. In the meantime, I want to achieve a few things by jumping into kite aerial photography: 1. Make my own kite. Yes, that's right. With my sewing machine that sits unloved in the corner of my room. That makes for another small sub-side-project: learning how to use my sewing machine. 2. Build somewhat of a camera stabilizing harness. I don't know how that'll turn out, but if it works... I'll be so happy. 3. Trigger a came