If you like the kind of projects and technologies I’ve been working on, I’m
available for hiring. I’m mainly interested on remote freelance projects (both
short and long term), but sometimes I’m open to consider employee positions or
on-site projects, if both tasks and offer are interesting, and we can negotiate
the terms and conditions. You can get more info about my past work experience at
my LinkedIn profile or at my
Curriculum Vitae
My ideal job (AKA Santa’s letter)
Note: this mostly target employee positions, that’s what I aspire in the
long-term, but most of the topics also apply to freelance projects.
How could it be?
- Company has something that makes it different from the other ones, and makes
it to not be “just another one”. It can be anything, like a really interesting
and unique project, exceptional perks, being a boost in my career, incentive
workers initiative and personal side projects, a lot of paid holidays, being
able to work with and learn from a known and prestigious person… Anything
that differentiates itself, and if having several alternatives with equal
conditions, could make me choice to join it instead of any of its competitors.
- Makes a difference, both for my career and to make the world a better place.
- A responsibility position with decision on projects and company future, and
with real possibilities to improve both of them, also in ways not directly job
related but also oriented to work conditions and the company itself.
- Travel frequently. I’m a travel junkie, so although I understand the
concerns of others, for me it’s a plus, so the more the merrier. If it’s for
assistance to conferences, double score :-)
By the way, this points are a common factor of the big guys, like Google,
Apple, Microsoft, Amazon… Salaries, labor conditions, prestige and the kind of
projects they work with, give them a fast past in my priorities list, and you
can get into it too if your offer seems to me as interesting as theirs
What could it have or provide me?
- Interesting, creative and stimulating projects, allowing me to learn about new
skills, technologies or knowledge areas that can be of my interests (not
necessarily just only related to computer engineering).
- Research & Development projects, specially in academic contexts. Jobs with
real possibilities of publishing academic papers will always be of my
interest and have priority over others than don’t.
- Incentive workers to improve themselves and achieve technical excellence. This
includes (but not only just sticks to) that the company fulfills the
Joel’s test
- All company code and intellectual property (at least the one not directly
related with the company’s business model) is published as Open Source and/or
as Creative Commons.
- 100% remote positions with flexible schedule and management based on
async communications,
with clear specifications, roadmap and requirements. This does not exclude of
having face-to-face meetings, but based on my experience, usually a hands-on
meeting once each two months is more than enough.
- Travel expenses and fully paid accommodation during all my relocation time, no
matter how long is it.
- Bonuses and benefits directly accountable to both my own performance and the
company one.
- Acknowledge of my involvement in the company (including voluntary overtime),
being this in both short term benefits and revenues (bonuses, extra paid
holidays, travels for leisure or business, technological equipment…) and
long term ones (additional shares or equity).
Main expertise areas
- Projects auditories
- Project structure and code quality
- Development best practices
- Open Source and Open Standards evangelization
- Systems programming
- Software & systems architecture
- WebRTC consulting & architecture
- Expertise consulting
- Technical leadership and guidelines
- Design of high performance systems
- Design of clean and minimal specifications, protocols and APIs, with special
attention to details, corner cases and not-so-common use cases
- Backend & full-stack web development
- Frontend web development & web APIs
- Mobile multi-platform apps (React Native, PWAs)
And more specially, to do what any others can’t :-)
More in detail info about my knowledge areas and experience can be found in the
uses page.
Other areas I’m interested to work with
- Research & Development, high-edge technologies and new specifications
- Operating systems design
- Filesystem design
- WebAssembly
- Drivers development
Areas willing to improve or learn
- Robotics
- FPGAs and/or hardware design
- Rust programming language related projects
- Unsupervised machine learning
- Artificial Intelligence and Machine Learning
- Natural Language Programming
- Quantum computing
Open Source professional collaborations
Additionally, I’ve been contracted to work in the design and development of some
Open Source projects for the next companies:
Private collaborations
Interviews FAQs
Interesting or habitual questions I’ve been asked during job interviews, or when
negotiating with clients to work on a freelance project.
Expand
### 🤝 Introduction questions
#### Why should I hire you? What makes you different from other candidates?
Computers engineering has been my vocation since I was 14 years old, and since
then I've been involved with computers in a lot of aspects, like being one of
the most active member of MadridWireless and AlcorconWireless citizen wireless
groups or [Madrid Macintosh Users Group](http://gumcam.org), or being one of the
founder member of
[Robotics and Domotics Spain Association](https://www.arde.cc). I've been
working as computers programmer professionally since 17 years old, and also
being involved in Open Source communities since then. I love puzzles and
anything that can be an intellectual challenge to me (that's one of the reasons
I started to learn chinese), and for me programming is like a sort of creative
jigsaw. Due to that, I've been involved in the development of more than 300 Open
Source projects, some of them awarded in national championships, and also I've
being invited to do keynotes and stand-up at several national conferences, and
I'm proud to say that I have been able to work all my life in my true passion.
My background has provided me a lot of experience and knowledge in almost all
computers engineering areas, both professionally or in side projects, so I can
be able to understand the implications of each decision at several levels (extra
costs, delays, performance issues, bandwidth usage, user experience, possible
bottlenecks...), and clearly explain the systems tradeoffs and business
implications that are derived for each one of them. I love high edge technology
and to know how everything works and what's able to do. This gives me a tendency
to put technology on its limits, sometimes unconsciously and another on purpose,
by using the code or service beyond the developer original intention, but also
to find and use the most concise, specific and idiomatic way of doing the things
by using any available feature or design decision that can help to write a clean
and maintainable code, that usually leads me to find bugs and usage corner
cases. That also has lead myself to put high attention on code quality and to
develop simple and minimal APIs in all the code I develop, and to enforce that
high quality standards on others.
#### What do your think about code tests? Do you do take-home code assignements?
Short answer: **NO**.
Long answer:
I have no problems about doing technical interviews, but I have a "no unpaid
code tests" policy, that apply to both pair-coding tests but more specially
take-home code assignments. I have more than 16 years of Open Source code in my
[Github account](https://github.com/piranna) and my
[projects portfolio](/projects/), that clearly show my capabilities and code
quality standards, and the time I spend on your code tests is money I'm not
earning on my freelance projects, or time I'm not with my friends, family or
hobbies.
If you consider that's not enough and need to check yourself my work, you can
contract me for some hours as a freelance to do an actual task in your code
base, so you can evaluate my work on first hand. If you _still_ insists that I
need to do an unpaid code test or take-home code assignment, for me it's an
almost instant discard of your offer, specially if I'm told so at the end of an
interview instead of tell me how the full selection process is before hand.
That's rude, and I feel betrayed by you making waste my time, and it shows how
low do you value your employees-to-be work-life balance if you don't respect it
starting at the selection process.
By the way, _big guys_ like Google, Apple, Microsoft, IBM, Amazon, Facebook,
Ebay... **don't** do code tests, but instead they do in-site technical
interviews, paying flight tickets and hotel rooms if needed. They _value_ their
employees and candidates time and invest in them, so don't be more _picky_ than
them, and show that you are truly interested in your candidates too.
#### Where are you located?
I travel frequently and don't have a fixed location. Mostly I'm living in
western Europe (UTC to UTC+2 timezones), but I'm also frequently visiting United
Arabic Emirates and India (UTC+4 and UTC+5.5 timezones).
If your question is related to adjust your salary offer to life level costs, you
can target your offer to the region of London, Great Britain for western Europe
projects, and Abu Dhabi or Dubai, United Arabic Emirates for middle East and
Asia based projects.
#### Are you available to relocate?
I'm interested mostly just only on 100% remote positions, specially regarding
freelance projects. I can consider in-site or hybrid job positions or relocation
depending of the conditions, mandatory ones are:
- job location needs to be easily accessible in public transport, or company
provides a driver, cab or taxi. All transport costs will be paid by the
company
- daily commute time will be considered part of my paid working hours, being
that regular or extra ones depending of the assigned schedule. Commute hours
can be compensated as extra paid holidays or free days too
- all this conditions needs to be specified in the contract
Additionally, for in-site or hybrid job positions:
- in **Madrid (Spain) area**, company will pay meal diets for all the days I
would need to be presential
- in **outside of Madrid area**, company will pay both arrive and leave flight
or train tickets (also if it's in a daily or weekly basis), and accommodation
for all the time I would need to be presential
Finally, if due to costs, times or logistics permanent relocation is mandatory,
additionally:
- company will provide accommodation during all the time of the trial period, or
all the in-site time for freelance projects. After that, company will provide
a monthly bonus or salary / honoraries increment to cover flat rental costs
- inside **Spain**, base salary will be equal or better to what I can get for an
in-site position in Madrid (Spain)
- outside **Spain**, base salary / honoraries will be at least a 30% higher or
better to what I can get for a similar job position working on remote, and
company offer will also includes social benefits equal or better to the Spain
basic legal ones, including health insurance, paid holidays, work and legal
rights...
If it's not possible to meet these requirements, I'm also able to work 100% on
remote and travel as frequently as required, as far as company pays flight /
train tickets, diets and hotel room. In fact, I'm a _travel junkie_, and I would
consider the requirement of need to travel frequently as an advantage of the job
position :-)
### 💻 Technology
#### What's your favorite tech stack?
I don't have a fixed one and I'm flexible with the technology to be used, it
mostly depends on what one does the best fit for each project, but in general
terms, depending of what's the project scope and in order of preference, my
favorites ones are:
- **Low level**: [Rust](https://www.rust-lang.org/) or `C/C++`
- **High level**: [Node.js](https://nodejs.org) or
[Python](https://www.python.org/), depending on the priority on each poject
about IO performance or code readibility. I also **love** to use high level
languages for non-critical low level programming when possible, like
[filesystems](/projects/#pirannafs), hardware drivers, automation, building
tools... or, why not, full [operating systems](/projects/#nodeos) :-) At this
moment I'm also considering `Rust` as an interesting alternative for these
tasks too.
- **UI**: CLI and terminal tools, web-based technologies, or ReactNative
- **web frameworks**:
- **backend**: [JAMstack](https://jamstack.org/),
[fastify](https://www.fastify.io/), [Django](https://www.djangoproject.com/)
or [Twisted](https://twistedmatrix.com/). It also depends of the fit of
technology to each project, or availability of resources, allowed time or
off-the-shelves libraries
- **frontend**: [React Native](https://reactnative.dev/) (both for portable
mobile aps and [web](https://github.com/necolas/react-native-web)),
[React](https://es.reactjs.org/), and for performance and code compatibility
with desktop and server, combined with `Rust` compiled to
[WebAssembly](https://webassembly.org/)
#### Are you interested in learning new technologies? Which ones and why?
At this moment I'm learning about Machine Learning and AI, where I'm more
interested in Natural Language Programming and Understandable Neural Networks,
and I'm improving my skills with Rust programming language. I'm also interested
on learning about Quantum Computing, and recently I self-teached about Verilog
HDL and hardware design. I'm also interested on improve my knowledge about video
streaming and network protocols.
I'm a hands-on learner and a bit obssesed with technical details, so if I get
some interesting project between my hands or find something that I think can be
fixed or improved, I don't have problems learning new skills or knowledge that
can be useful to me to do it, especially if they are established and
future-proof industrial standards and not just some temporally fashioned or
hyped libraries and frameworks.
#### What are the three things you think are the most important to improve a software project?
1. Write specs and document the behaviour that should have the project, and keep
it updated while it's being implemented with its actual one
2. Register and trace all the errors, so they can be replicated later
3. Fully automate all processes, remove the human factor always that's possible
### 🏆 Achievements
#### What's the technical challenge you are most proud of?
I've designed and developed my own Operating System [NodeOS](/projects/#nodeos)
with more than 6000 stargazers on Github and winner of national Universitary
Free Software Championship. It was also my bachelor thesis, graduated with
distinction.
You can find more info about this and other projects I've worked on and that I'm
proud of, both mine or from others, in the [projects](/projects/) page.
#### Could you share some numbers about the projects you've worked on? e.g.: users, requests, downloads, etc
- NodeOS has more than 6000 stargazers on Github
- Published more than 175 packages in [npm](https://www.npmjs.com/~piranna)
- 3 times winner of [CUSL](https://www.concursosoftwarelibre.org/), spanish
national Universitary Free Software Championship (PirannaFS, ShareIt! and
NodeOS)
- Worked at 2 acquired start-ups (Kurento and lingbe)
- Referenced in the book
[HTML5 for Masterminds](http://www.formasterminds.com/html5_for_masterminds_3rd_edition/)
by J.D. Gauchat due to my pioneer work on WebRTC with
[DataChannels-polyfill](https://github.com/ShareIt-project/DataChannel-polyfill)
### 👨 Personal questions
#### Tell me about a real life, non-technical hack you've done
[Five guys](https://www.fiveguys.com/) offers a veggie sandwich, where you can
add grilled cheese as an extra. At the same time, they also offer a grilled
cheese sandwich. You can add to the sandwiches all the toppings that you want by
free... and they have available as toppings all the same ingredients that are
part of the veggie sandwich, minus the grilled cheese. So, the hack is to take a
grilled cheeseburger as the base and add as toppings all the ingredients of the
veggie sandwich, you can have a cheese veggie sandwich also cheaper than the
original veggie sandwich alone. The first time I put in practice this hack, the
cashier was not funny at all, as if she would be angry with me for discovering
that loop-hole.
As a side note, I personally find Five Guys hamburguers to have too much fat,
being in my opinion this "hack" or the original cheese veggie sandwich the only
tasteful ones they have. That's how I found this loop-hole in the first place,
and since then my "hack" sandwich is usually the only product I consume from
them the few times I buy there.
#### What are your hobbies outside of work?
Besides working on my own research side projects, I like running, travelling,
going out for dinner, visiting museums, going to the cinema, and reading, among
other things.
#### What achievements are you more proud of, outside of technology?
I'm mostly proud of the achievements with my personal side projects (technology
is my hobby), but besides that, I'm also proud of having completed the New
Year's Eve 10km run in 53 minutes, and that I've started learning chinese.
#### If you could be able to organize an intelectual dinner, what three people (live or dead) would you invite?
The two first ones would be
[Nikola Tesla](https://en.wikipedia.org/wiki/Nikola_Tesla), and my friend
[Elisenda Bou](https://www.linkedin.com/in/elisendabou), one of the most
brilliant minds I've ever meet 😛
Third one would be a bit more difficult.
[Thomas Edison](https://en.wikipedia.org/wiki/Thomas_Edison) is a good option as
a justapoint of Nikola Tesla, but although being a good inventor too, it was a
bit prepotent and pretentious.
[Leonardo da Vinci](https://en.wikipedia.org/wiki/Leonardo_da_Vinci) would be my
next option (was one of my idols since a child), but it's a bit topic and
outdated, so in a more actual context I would have doubts to choose between
[Elon Musk](https://en.wikipedia.org/wiki/Elon_Musk) or
[Steve Jobs](https://en.wikipedia.org/wiki/Steve_Jobs). That would make four and
no three persons, but being there all of us 5, that would be a really
interesting dinner and maybe new projects or new ideas would appear there.
I'm not sure if Steve Jobs could sound a bit cliche or more like a strange
selection, since he's the only one that's not an engineer. Apple is now a
consumer product and a status symbol, but before his death, due to his high
standards Apple computers were a simbol of quality and things well done and a
creative tool. It's documented that he wanted macOS to be an Open Source
operating system like Linux, and this was not possible because by doing so,
Microsoft would have not ported Office suite to it. Something similar happened
with iTunes Store, where he doesn't want to use DRM on their published songs,
allowing them to be freely usable and redistribuible, and he was forced to add
it by an exigence of discrographic records. This kind of ideals about free and
open knowledge and culture are something I totally feel identified myself with.
#### What things do you have in your personal "life's to-do" list?
My biggest dream since I was a child was to become an astronaut, since I had the
idea that, as a scientist, it was not possible to go any higher, both literally
and metaphorically. The main reason was to experience zero gravity, so now that
I've lost almost any opportunity to become an astronaut, the absolute top item
on my list is to take a
[zero-G flight](https://en.wikipedia.org/wiki/Reduced-gravity_aircraft) 🙂.
In second place, it's to do a travel around the world. I don't have a particular
destination or route, just only to visit as most countries as possible... and
return to my journey's origin from the other side :-D Related to that, a recent
addition to the list is to become a member of
[the Travelers' Century Club](https://travelerscenturyclub.org/), that represent
travelers who have visited 100 or more of the world's countries and territories
(by the moment I've visited 13 and counting). Also related to this is to visit
Antartica and join the [300 Club](https://en.wikipedia.org/wiki/300_Club) 😀.
#### How do you expect your boss should be?
The most important things, it has a technical background, so it can understand
when I explain what problems we have or why something can't be done.
The second one, _make money_ is not its priority, and it's managing the company
because really love what it's doing and believe in the company itself, also when
it's in losses. It must not take decisions just only based on economics, no
matter the consequences.
I truly believe that work must be done by some reasons besides money itself
(it's acceptable to work focused on _what can we get_ with that money, though),
and _make money_ must be just a side effect of working, not its main reason to
be. I have already changed jobs in the past just for that single reason, where
nobody cared by the company and everybody was there only for the (huge) monthly
payment, including me. When I got myself that I was not behaving according to my
ethic principles, I left the company.
### 🏢 Company culture
#### What types of companies have you worked in? e.g.: startups, consulting, enterprise, agencies, etc
I've worked for some established enterprises like
[Telefónica](https://www.telefonica.com), and a couple of times for consulting
firms or freelance agencies, but the ones I've worked with most often and
enjoyed the most have always been my own freelance projects and startups, some
of them later acquired by bigger companies like
[Kurento](https://www.kurento.org/) (acquired by
[Twilio](https://www.twilio.com/)) or [lingbe](https://lingbe.com/) (acquired by
[italki](https://www.italki.com/)).
#### What type of company would you like to work for and why?
I like to work on startup companies, or in a startup-like minded team, since
they are the most creative and dynamic ones. I would like to work on research &
development or on a company that has its own product, and a company that's
mostly focused on the quality of their product over any other aspect, instead of
being directed by sales department or any predefined deadlines.
In short: I want to work on an engineering company, not just a technological
one.
#### What do you look for in a company or project?
- Engineering companies, not technology ones.
- Innovation, design of new technologies, and usage and development of open and
standard specifications. I totally identify myself with the motto of my _alma
mater_, the [Rey Juan Carlos University](https://www.urjc.es/): _non nova, sed
nove_ ("not a new one, but in a new way").
In a similar way, I consider myself a practical person but with ethical
principles, and hope the ones of clients and companies I work with are aligned
to mines:
- "_Make money_" is **not** one of the company main priorities (both directly or
indirectly), nor is it one of their clients', or at least it's not the main
purpose of the project I'm going to work with. I work mostly for the project
and the technology themselves and what I can learn from them, not for their
revenues. According to my _ethos_, money and benefits must always be a
collateral effect of work and a medium to achieve experiences, not a main
objective by itself.
- If _money_ is a direct or indirect core concept of the project up to the point
that removing it makes the project pointless, probably I would not be so much
interested on working on it. Other elements like the technologies being used
or the project concept or the opportunities that it can provide me can help,
but definitely not by the project itself alone.
#### Do you prefer to work alone, or as part of a group?
I like to work in a group, especially on small ones focused on a single project
where there's a clear roadmap on what to do, or where technical expertise of
co-workers is high and everybody is trying to do their best. This open the door
to the possibility of discussing the different approaches to the problems and
learning from the others. In the same way, when I have a lead or expert role, I
like to surround myself with co-workers with good technical skills so I can take
into account their points of view too when defining the project architecture,
the development guidelines or the project quality bar that others have to
follow. In other cases where that's not possible, I usually like to work as part
of a group where people can be focused each one on an area of the code that they
can master and know in detail and manage it on their own, so everybody can be
able to focus on their knowledge area.
#### What do you value the most about a team?
- Team lead is somebody I can learn from, or somebody humble that knows their
limits and when it's better to trust in the experts knowledge, also when they
are lower on the company hierarchy
- Team members are motivated, distressed, and working together for the same goal
- Everybody is focused trying to achieve technical excellence, and doing their
best instead of doing it fast
- Co-workers are technically as good as me or better, so I can be able to learn
from them, or they have initiative and are eager to learn and improve
themselves
As clearly explained at <https://mailchi.mp/bonillaware/sabotear-tu-empresa>,
these points are a direct result of having a motivated team, and that's a
responsibility of the company itself:
> To motivate our team members -beyond a correct retribution- we only need to
> create an environment where they can do their work well, where each time they
> can do it better and, in addition, they contribute to a purpose they believe,
> beyond earn more and more money.
#### Do you currently have a job? What do you like and dislike about it?
Currently I'm working as _WebRTC Architect_ for [Dyte](https://www.dyte.io/) as
my main job and as part-time freelance developer, consultant and auditor. In
that way, I'm always actively looking for freelance projects to work on remote
in my spare time (maybe yours! :-D ).
##### 👍 Likes
- 4-days work weeks
- walking distance from my home
- lots of schedule flexibility
- reduced day all the year
- over average payment
- interesting technological area (chatbots)
##### 👎 Dislikes
- legacy code and design decisions, and almost no time slotted to fix them
- complex and highly cohesive architecture, with lots of inter-dependencies
between projects
#### What would motivate you to change job?
1. The most important, an interesting project that caught my attention and
motivates me to do the change by itself, no matter any other things like
salary, relocation or social benefits. This can be the project topic,
technologies being used, the professional or academic career opportunities
that it can offer me...
2. A salary according to my expectations.
3. Quantity and quality of social benefits provided in addition to the salary,
specially restaurant card, public transport card, gym subscription, remote
work, flexible schedule...
#### What would motivate you to join a new project?
- Higher salary maintaining or improving all my perks and social benefits
- Work on a research project, ideally somewhat related to own research areas
- Position with responsibility that could help me to improve my career both
professionally and academically, with publishing of papers
#### What you are looking for in your next job?
A project I can feel is my own and get involved in, helping to define its shape.
Also a project that can make me proud and help me learn new things and improve
my career, ideally both professionally and in academic areas.
#### If I made you an offer, what would make you to reject it?
If we get up to this point, probably I would have already considered the pros &
cons regarding changing my current job, so I would reject a job offer only if
the tasks I would be involved in are not motivating enough, or the final salary
difference with my current job would not compensate the change (this is
specially important in the case when relocation is required and it makes me a
drop in my buying level and/or life quality), so it's better that we discuss
these topics in the first interview so we don't waste everybody's time.