Welcome to our first Developer Spotlight, a short Q & A with community staff. This is our way of taking a moment to recognize the many talented developers who contribute to one of the largest community driven open source projects around.
Dan Pasanen, also known as invisiblek, is a device maintainer inside of the CyanogenMod community. He has been a core contributor to the project since 2012 with nearly 1900 contributions. Dan is currently keeping himself busy maintaining multiple devices for CM, fixing device specific and CM-wide bugs. His current daily driver is a Verizon G3.
You are well known for your work on a wide array of LG, HTC and Samsung devices and even did some work for the HP Touchpad. Out of every device you have worked on, which device would you say was the most fun and the absolute worst to work on?
I’m not sure I can pick one device that I love or hate more than any other. They’re all a bit of a challenge; every OEM does some weird things. I’d say the HTC Incredible was probably the most enjoyable though, that’s when I started out with Android and just general hacking around in open source.
Development on some of these devices can be extremely difficult, especially if there is a lack of documentation. What would you be the most difficult part of development on today’s devices?
I don’t know that there’s ever really much for documentation on any device. Most of the time looking at a similar device is about as much documentation as you can get. I’d say the most difficult part of working on devices today is dealing with all the little quirks that OEMs tend to do. LG G3’s camera was a good example of this. That one took a while to get sorted out.
What exactly made the G3 camera different from other devices?
They messed with a header that is shared between the camera HAL (which is a proprietary lib we use from LG’s ROM in CM) and the framework’s camera client/server which we build from source in CM. They had added a new member to the camera_device_ops struct. Normally this wouldn’t cause an issue if they had added it to the end of the struct, but adding it to the beginning threw off the alignment between our source-build libraries and the proprietary HAL from LG. Even reverse-engineering the libraries didn’t make it apparent what the problem was. We were lucky enough to have some logging that showed a few numbers that didn’t line up between CM and the stock LG ROM and a little trial and error got us a preview image.
That line is some unknown LG stuff that just needs to be shoved in there to make things align.
There are a lot of aspiring developers out there looking to get into this line of work or maybe just as a hobby, what advice or tips would you give them today? Is there a language you would recommend learning before another?
Java and C++ are good languages if you’re just starting off learning to code. If you’re starting out with hacking around on a device, I recommend building a custom kernel and hacking around on that for awhile.
Sometimes working with nasty bugs you can start to feel metronomic and repetitive during development. What would you say helps you stay motivated during times like this?
Tough question, I suppose I’m motivated by the addiction to tweaking out any piece of hardware I can get my hands on. Stock is never good enough. =)
Coffee or Beer?
Both are equally important. Coffee to cure the head cramps from the beer the night before. Beer to unwind after a morning of drinking coffee.
Now that’s synergy.
Do you have any upcoming projects that you are excited about?
Fill in the blank. Bacon and _______.
Enough about the technical stuff, from Android’s inception to today’s date, which device is your most and which one would you say is your least favorite?
The HTC Droid DNA is probably my favorite device. Insanely underrated and quite powerful for its age. I wouldn’t say I have a least favorite device, I hate love them all the same.
Between work and life in general, what do you do with your free time? I noticed you recently purchased an 80’s Trac Moped, are you as diversified with a wrench as you are a keyboard?
Most of my free time, when I’m not working on anything Android-related, is spent outdoors hunting, fishing, and snowmobiling. I wouldn’t say I’m all that great working in the garage, but I know enough to get by.
Who was your role model you looked up to when you started coding?
Another tough one, there were many. Koush, cyanogen and toastcfh seem to stick out.
Is there anything you would like to say to the community before we end our chat?
Don’t feel overwhelmed and if you want to start out building and hacking, pick a device that’s at least relatively supported and learn from it.
You can follow Dan on his personal social media