require-from-twitter: Help, I don’t get the joke!

A Holberton School student showed me this Gist which is trending right now, and told me he didn’t get the joke.

I looked at it, and I was lucky enough to know the backstory, and get how amazingly brilliant at many levels that joke was! But then explaining the backstory took some time, and while we had a good laugh, I feel more people should know of it and join our joint laughing in appreciation of the author’s witty sense of humor! I also feel that for newcomers to tech culture (like Holberton School’s students), this joke gives an accurate understanding of some key pieces of that culture.

Have a look at it and read through the comments a bit. Still don’t get it? Ok, here’s some backstory you’re probably missing…

First things first: the unpopularity of npm

For every programming language out there, there’s always a way to find people that are excessively committed to it and will defend every aspect of it; but even though you get JavaScript maniacs out there, one thing they all tend to dislike collectively from JavaScript, is npm (the Node Package Manager).

If you don’t know it: in theory, npm allows you to install any application or library written in JavaScript by typing npm install name_of_the_software; it will be directly downloaded from npm. Even better: when you create an application or a library, you can create a package.json file that lists all of the libraries it relies on; then when in that directory, you run npm install, and all of those libraries will download from npm. Magic!
It sounds advanced, but every relevant programming language has a major “package and dependency manager” like that. Ruby has Bundler; Python has pip; for countries where it is relevant, PHP has Composer; etc…

Two major features you expect on those are speed and reliability; and the ire comes from how npm is disappointing in both those respects.
An execution of npm install is so ridiculously slow that some people have gone ahead and developed plugin games that run when npm install is running (like this awesome Space Invaders), and the npm service is known to be down every so often.

To add insult to injury, the JavaScript crowd is usually pretty committed to open-source, and a few years back, Isaac Z. Schlueter, the creator of npm, instead of making it be more maintained by open-source forces, decided to make it a private company and start selling services around npm. While it made sense in an attempt to get more money in order to get a more reliable service, it didn’t go over so well with some of the most heavily committed open-source JavaScript developers.

Getting kik’ed out

Two days ago, a developer by the name of Azer Koçulu published a Medium post titled “I’ve just liberated my modules” explaining that he was terminally mad at npm. He had over 250 libraries on npm, and one of them by name of “kik”. The Kik messaging app didn’t like that Azer was using their trademark, and asked him to give them the ownership of the library, but he wouldn’t. So they contacted npm, and npm transferred the ownership of kik, the library, to Kik, the company.

Azer was so mad at npm, that he decided to remove all of his 250+ libraries from npm in one instant.

Now that could have ended like that. But it didn’t.

The day the internet broke

A funny thing is that most of his packages were tiny, often carrying a single function of 4 to 10 lines. It’s funny because the JavaScript API is notoriously pretty poor, so you do need those kinds of functions on top of raw JavaScript on large projects, but I don’t think many people were aware that there were such short JavaScript libraries (at least, I wasn’t!). It’s also funny, because it tells about some laziness of the developers who didn’t take the time to just copy-paste that short function in their own codebase, in order to avoid one more dependency, and the problems that come with it.

And unfortunately, one of those libraries that got removed that day was “padLeft”, a very simple 11-line function to add some blank spaces in front of numbers in order to display them nicely, and it turns out that particular library was intensely being used. And not only by small projects, but also by very large projects like Babel. All of a sudden, the whole planet could not download libraries like Babel anymore, which broke a lot of installation and deploy scripts everywhere.

It definitely adds to the joke that such large and serious projects would depend on such unseriously small libraries, even though a more likely scenario is that they’re not depending on it directly, but rather using more useful libraries that, themselves, depend on this one. This stresses even more the issues with having unnecessary dependencies.

Now, the joke

So, what is that funny require-from-twitter? Basically, it is a library that will fetch a particular tweet, which is actually a bit of JavaScript code, and will evaluate it to make it available in your JavaScript program. In particular, it fetches a tweet that, if you look at it, contains the code for the infamous padLeft function that created this ordeal.

It is at least double-funny:

  • Not only does it emphasize that if the function fits in the 140 characters of a tweet, it probably should not have been a whole serious library in the first place, which pushes the button of the developers’ laziness for overusing it;
  • But it also makes fun of npm, since Twitter is notoriously pretty fast and with a solid uptime. It hints that even though this is misusing the tool entirely, it’s worth taking those convoluted detours, because Twitter has more of the qualities one would expect from a package/dependency manager than npm does.

And obviously, a major feature of the joke is that this is hilariously over-engineered, considering that just copy-pasting that code into yours would simply have solved the issue in the first place.

There, now you get the joke!

More about it

How should I get started to teach myself software engineering?

I’ve gotten the question quite a few times since I started Holberton School, most often with applicants that were still in process or had been rejected. Here is what I usually answer.

As a future self-taught software engineer, you have two significant advantages over other fields:

  • There aren’t many other engineering fields where recruiters care so little about your degree, as long as you can display what you can do.
  • There aren’t many other fields at all where people spend so much time constantly sharing their knowledge in the most convenient forms possible to consume (online or offline).

So, here’s your plan: display as much as possible what you can do for recruiters to get it easily and quickly, and make the most of the open knowledge base and community.

Examples to display what you can do:

  • Build stuff. Even very bad stuff if you’re a beginner. Make it public on GitHub. Don’t be ashamed of your bad code. (I personally have some pretty bad old code on there from my early days.)
  • Join an open-source project. If you’re not too comfortable technically, start giving non-technical help (translating documentation, organizing issues, give a user’s perspective on the mailing-list, …), at some point, you will start fixing technical stuff without even noticing.
  • Respond to people’s questions on StackOverflow and Quora. Yes, there are people who are even more beginners than you, way more than you think. Find their questions and post relevant answers.
  • Brag about all of the above on your LinkedIn profile, and to recruiters generally.

Leveraging the knowledge base / community:

  • Find online tutorials about what you’re interested to learn. The mainstream topics now have free or nearly-free tutorials reaching quality levels that developers even 5 years ago couldn’t even dream about.
  • Read a lot, about one hour each day, about what’s happening in the tech news. At first, you might not understand much, but gradually you will, so it’s important that you keep at it. You’ll have to curate your own sources based on what you like. One generalist source to get started: the HNDigest daily newsletter.
  • Go to meetups and hackathons. There has got to be some around you. Some more advanced meetups will be over your head; of course you should prefer those whose topics seem more understandable to you as a beginner, but if there are none because you’re too much of a beginner at first, then go to the ones that are over your head anyway. Gradually, they will be less and less, as your technical culture and understanding widens. Also, this is the only way to grow your network without external help.

Of course, those are easier said than done. Learning software is a notoriously hard and maddeningly frustrating endeavor. But just like leaning an instrument or a language, the initial struggle against frustration turns into a lot of fun, and ends up well worth it in the end.

There are techniques to alleviate the frustration, but you’ll have to find what works for you. Some that tend to work: learn with other people who are actively committed to help each other, interaction with mentors who do stuff you’d like to do, use the technology to build stuff you like and care about, write and teach around about what you learn. …

(If you know a bit about how Holberton School operates, you will recognize that we especially designed it to bring those alleviations, in order to accelerate and deepen the learning.)

Good luck to all learners!

Differences in tech-startup-friendliness between Paris and the SF Bay Area: a collaborative effort

Ever since I moved from Paris to the San Francisco Bay Area, I’ve gotten many questions about the differences between the two startup scenes, even more so since the Parisian one has been changing at a noticeably fast pace. Those interrogations were coming from both people in the Bay Area, and people in France, probably simply interested in understanding where they stand, themselves.

Even though two startup ecosystems ultimately have obvious pros and cons when compared to each other, one caveat to providing answers to such questions is that they have to be heavily influenced by one’s own experiences. The best way to make this kind of study as objective and realistic as possible despite everyone’s own limited scope, is to make it be a mix of many people’s points of view.

So, I took some time to lay down my own observations made over the past few years as a starting point, and I’m inviting whoever has sufficient experience in both ecosystems too to request edit rights on it and change it as they wish, so that we can get to a point where the observations are not limited to my own subjectivity. And in a matter of transparency/democratic process, anyone, even without experience within both ecosystems, is free to comment anything they want.

Come over, and let’s make it the best comparative study out there!

> https://docs.google.com/document/d/19MjFQ5ou7ygL11OY-a-lbLym3xy8IfOv52Y5GRGCqEE/edit?usp=sharing <

12 Startup Pitch Red Flags You Thought Sounded Great

A collection of lines that make you say “yeah”, but may make them say “yuck”. You should remove from your pitch right away.

 

“We have no competition.”

What you think you’re saying: “This is such pure innovation, that we are ahead of time.”

What they’re hearing: “This is most likely not innovation at all, because this market doesn’t seem to interest anyone else.”

What you should be saying: “Here’s how the competition/incumbents do it, and why it’s wrong…”

 

“We did all of this without a single marketing effort”

What you think you’re saying: “Imagine if we did!”

What they’re hearing: “We have no idea why it’s been working, and therefore couldn’t reproduce it, let alone grow it.”

What you should be saying: “Here are some early marketing initiatives we had that worked and we believe can be improved, and here are a few others we intend to experiment with…”

 

“We want to focus on building a great product, and we trust that we’ll grow on people’s love for the product.”

What you think you’re saying: “We believe we are focused on the right things.”

What they’re hearing: Marc Andreessen (leading startup investor) puts it better than I would: “The number one reason that we pass on entrepreneurs we’d otherwise like to back is focusing on product to the exclusion of everything else.” (source)

What you should be saying: “Product is critical, but let’s talk about our distribution strategy too. Here’s who will be interested in us, and how we’ll find them to tell them.”

 

“I’m the founder that focuses on tech, and X is the one that focuses on making money.”

What you think you’re saying: “We have clear roles, and the tech founder is a tech genius.”

What they’re hearing: “Not all of the company is focused on creating value. Some founder time will be wasted on stuff that isn’t likely to create any.”

What you should be saying: “We have various skills across the team, but are all primarily focused on results, and creating value for our users.”

 

“We have 11,229 followers on Twitter”

What you think you’re saying: “We have won people’s interest.”

What they’re hearing: “We’re focused on the wrong metrics, the ones that are not monetizable or don’t express any value we actually bring people. Also, we probably purchased Twitter Ads.”

What you should be saying: “We have a very strong social presence, which is reassuring for the future as of the interest people show us. Now, let’s talk about the important growth KPIs we chose to track (active users, revenue, pageviews, you choose it depending on your business model).”

 

“We have a clear vision, and know very precisely what users want.”

What you think you’re saying: “The founders are geniuses.”

What they’re hearing: “We are in love with our personal vision, and not with solving the problem, even if it means stepping away from the vision. When users will give us feedback, we’ll bend over backwards proving why they’re wrong and we’re right.”

What you should be saying: “We have a clear ideal vision, but we know we’ll have to constantly reconsider it based on users’ feedback, because we’re more wrong than they are about what they need. We actively seek feedback and act upon it; here’s what we’ve done based on the feedback we got…”

 

“Dogfooding”

What you think you’re saying: “We know firsthand the problems we’re solving.”

What they’re hearing: “We’re so focused on solving our own problems, that we may end up closing our ears to our users’ problems. It could even get worse, and success could even get us more agressive to anyone who doesn’t agree with us, DHH-style.” (He’s the creator of Ruby on Rails, a founder of Basecamp, and an over-user of the word “dogfooding” to describe his ventures, sometimes pushing that it’s the only way to do things and notoriously being aggressive to people who don’t agree with him on stuff.)

What you should be saying: “We’re dogfooding for sure, but our top priority is to stay in touch with our users’ needs, even if that means having to get further from our own.”

 

“Our managers/founders are great innovators that can tell the team exactly what to do to reach success”

What you think you’re saying: “We have geniuses and vision, and we do the right thing to reach success.”

What they’re hearing: “We think there’s only one way to do things right, and therefore don’t consider other more unexpected/creative ways. It’s more important to be right than to get things done that aren’t necessarily right the first time. Only a handful of people in the company are allowed to innovate, so there’s not much room for serendipity. Also, all of our staff may leave us in frustration once they figure out other startups usually respect their input more.”

What you should be saying: “Managers/founders stay out of the way of the innovation of the teams. We believe in growth by making people feel accountable and trusted.”

 

“We’re the Uber of X”

What you think you’re saying: “Our business model is well-tried, it worked before.”

What they’re hearing: “We may think recipes that work with potatoes work with carrots without having to think about it much more. Also, we’re unable to formulate an original vision, so we have to rely on someone else’s.”

What you should be saying: <insert careful worded and convincing vision that expresses both the originality and viability of your business>

 

“ We build the X of the future / of tomorrow”

What you think you’re saying: “We are first on market filling a need before anyone else, so clients will run to us once the need appears.”

What they’re hearing: “We have never heard of the uncountable stories of projects that failed because they came out too early. We don’t try to fix today’s very real problems, and since no one can reasonably guess anything about the future, we’re focused on building out of guesswork.”

What you should be saying: “Today’s solutions to this problem are outdated, we fix today’s problems, with a strong focus on adaptability to ensure we remain current as the industry unavoidably changes.”

 

“We ship features every day”

What you think you’re saying: “We move fast, we’re always ahead of the competition.”

What they’re hearing: “We’d rather make feature announcements that look good, than polish the core value prop of our product, which is what makes it actually better and better. Also, we’re clearly not aware of what the words ‘feature bloat’ means.”

What you should be saying: “We ship improvements every day. Sometimes, they’re improvements of our core product; and when it makes sense and adds to our value prop, they’re new features. Also, we’re not afraid to scrap experimental features that turned out not to make much sense for our users.”

 

“We have 2000 users, but we’ve ensured our platform can scale as far as millions of simultaneous users.”

What you think you’re saying: “Nothing will slow our growth down.”

What they’re hearing: “We’re focused on problems we don’t have, and may never have if we carry on under-prioritizing problems we have.”

What you should be saying: “The platform we’re using is known for its scaling; we’ll work on this progressively as our user base grows.”

 

Thinking of other read flags I didn’t think about? Put them in the comments!

Thankfulness over a Green Card

Version française ici.

Today, I’ve received the Green Card that the American government decided to grant and send me, and I’ve never felt so thankful in my life.

I’m thankful that I can finally truly build a life here for myself and my family on the long run; I’m thankful that I won’t anymore need to have a backup plan ready at all times to fold back to Europe “in case something happens”, which I believe is what all temporary immigrants do.

I’m also thankful that I’m now unconditionally welcome in the country where my little girl was born. Even though times do get tough sometimes, Vanessa and I have never been happier than since we’re here, and I’m very thankful that we’re so nicely invited to be here for a while.

It was an unusual Green Card process, based on my professional achievements at the time it was posted (very early 2014); but I know for a fact that I don’t owe these achievements to myself only, so my thankfulness doesn’t only go to the US government, but even more to other people without whom none of this would have been possible.

The awesome people I wish to thank for it

At the top of my list, I know I owe much of the quality of my case to my previous employer Clever Age, and its culture of permissiveness and responsabilisation. I would never have held so many positions and responsibilities, spoken in so many events, achieved so much in just a few years, if it wasn’t for the culture of action and general freedom that there is over there. I know that the amount and variety of stuff I’ve done over there in such a short time is also mostly what impressed my current employer, and is the biggest part of how I got the awesome job I have now.

I’m also feeling very grateful to the few people who agreed to sign a letter of reference for my legal case, which was instrumental in making it strong. None of them had to do it, and they all got out of their way to make sure to help; I am deeply in their debt. (Although I’m craving the let the world know of their awesomeness, I’m going to have to refrain from listing them here, as I’m sure some of them wouldn’t necessarily enjoy the attention.)

I’m obviously very thankful to the attorney I worked with to get this through. Of course, attorneys don’t come cheap, but the value that Brian provided goes beyond any money I’ll ever own. If you are intending to immigrate to the US, do get in touch with him, I very warmly recommend him! I’m also amazingly thankful to Sophie, who sent me his way.

Also, much of the strength of my case relied on my speaking gigs at Paris Web, my book published by Eyrolles and my co-writer Jérémy, my speaking at Front Row, my being part of Sud Web, my article co-written for Dev.Opera and my co-writer Sophie, my articles in Le Train de 13h37, etc… and I’m feeling so grateful to all of these people for giving me all those opportunities. There would be many people to thank by name, so I’ll just throw you a deep, warm general-thank-you.

I’m definitely very thankful for my current employer too, for trusting me that much and making every single of my days fascinating. Working for a major leader usually accounts for a lot in such Green Card cases; however, this supposedly wasn’t taken into consideration, since only the achievements prior to the filing date are supposed to be looked at, and I was not hired yet back then. But if the USCIS agent did notice it anyway, I’m sure it did impact him/her anyway in some way, and had some role to play.

Finally, I’m thankful for the people over at Zengularity and the prismic.io team. Even though I know for a fact that what I did over there didn’t account to much in the decision of the USCIS to grant me the Green Card, as well as in the decision of my current employer to hire me (I didn’t have much to show off from my work there), I know for a fact that being geographically in US territory was a strong factor in both instances, and they trusted me enough to send me over here to help in the kickstarting phase of their product.

Thinking of the people who are still fighting

My heart and compassion goes to all the ones who are still struggling to be allowed to settle where they want, whether they live there already and can’t be allowed to settle, or whether they’re not yet allowed to live there at all. I was in their shoes for a long time until recently, and this is a very hard place to be. I was committed to the US immigration reform cause until now, fervently publicly enthusiastic about it, and although I made it, I can assure you this will not change.

With this new stability to build a solid life, and also my amazing baby daughter Lila who joined us in September, there are many things we’ll get to be thankful for, on Thanksgiving!