Speaker interview: Soledad Penadés
Soledad Penadés is a senior engineer at Mozilla. She builds and helps people build web apps. She’s also slightly obsessed with Web Audio, creating spooky weird sound generators and nice UIs to control them.
What project have you worked on recently that has really excited you?
I’m working on node-firefox right now and it is really exciting! It is going to help you take advantage of Firefox Developer Tools programmatically using node.js, but we are taking a very node.js-like approach and so it is not a huge monolithic piece of software but small modules that do one thing and do it well. You will be able to take only the bits you need for your specific code. This will help both App and Web developers – especially the ones that are used to a gulp-like workflow for tasks such as code linting, minification etc., pre-deployment. There is a wealth of power hiding behind the developer tools, we’re just exposing it to the world :-)
What piece of advice do you wish you’d received when you first started out in development?
Nothing is set in stone, and nothing is absolute.
Or in other words: flamewars are unproductive activities and you’d better stay away from those. Just do your thing and learn to find the best solution for now, but also keep an eye on the future if the project is going to be long lived, because in that case the software needs to also be ‘good enough’ for it to become the ‘best solution’ in the future too. Sometimes you just need to build a quick prototype and then discard it. Sometimes you need to build robust products.
It’s so easy to get into discussions over which is “the best” framework or the best library or the best UI approach or… but you should be better than that. Each has its pros and cons.
What’s your favourite underrated tool/piece of software/resource for development?
Hah, I know it’s going to sound so minimal, but grep is actually super useful and not given all the credit it deserves. I use it a lot when I’m navigating a new code base!
My favourite incantation is:
grep -lir 'the string I want to search for' *
That will only list the files where the string (case *i*nsensitive) appears but if you remove the l it will show the filenames and the lines where it appears in the files:
grep -ir 'a string'
What new technology are you most interested in learning?
At this point I’m maybe more interested in learning about non-technological matters. Perception – how do you convey intentions in a way that is unequivocal and obvious? This is super important in many fields of programming, from naming modules to variables to websites and documentation. I’m also trying to get better at understanding diversity and privilege matters; software would be so much better if we got this right than if we learnt another new cool programming language.
How do you balance work and life, with so many new FE dev tools coming out all the time?
I am trying to use my body as much as I use my brain! I found that the more I spend away from the computer the better I am at programming! So I started running occasionally thanks to the encouragement of one of my colleagues (Jen Fong), and now I also bike to work. I am also trying to finish a music EP which has been on the works for a year or so, and try to go do outdoor sketching (weather permitting) and other artsy stuff, of which I want to do more! London has a lot of cool events to attend, so I try to take advantage of that too. Basically I am determined to have some rest time for my brain, because otherwise things go downhill.
What new/upcoming browser features do you think will most change the future of web development?
I’m excited for ES6 modules, because hopefully they will bring some needed sanity to the “loading additional code from a script” world. But I’m also excited about new APIs that make browsers more powerful and give them feature-parity with native code. Right now certain types of apps might be implemented in the browser, but it’s painful and you need to be very careful about what you do to get the best performance. For example music applications might get to “cracks and pops” relatively easily if you put code in the UI thread, because the Web Audio Workers are still not implemented, but that new feature should make it easier to avoid that issue. Or for example apps that manipulate lots of data-and I mean lots, like huge images or videos. Putting that in IndexedDB is not exactly the most performant of solutions. Or just being able to store offline data reliably.
These are the reasons why people still write native apps, with all the extra cost per platform it implies. In the future I’d love to be able to just install a browser, any browser, on any device, and take it from there.