Image for post
Image for post

There are countless lists on the internet claiming to be the list of must-read startup books and it seemed that all those lists always recommended that same books minus two or three odd choices.

I wanted to find out what were the most recommended books about startups, and so I’ve made this. I’ve compiled more than 208 lists and almost 4,000 recommendations found on the internet. To my knowledge, this is the most complete list of its kind on the subject.

If you want to jump right on the results go take a look below at the full results. …


Image for post
Image for post

Web scraping or crawling is the fact of fetching data from a third party website by downloading and parsing the HTML code to extract the data you want.

But you should use an API for this!

Not every website offers an API, and APIs don’t always expose every piece of information you need. So it’s often the only solution to extract website data.

There are many use cases for web scraping:

  • E-commerce price monitoring
  • News aggregation
  • Lead generation
  • SEO (Search engine result page monitoring)
  • Bank account aggregation (Mint in the US, Bankin’ in Europe)

But also lots of individual and…


Image for post
Image for post

Inspired by Iren Korkishko who did a great job doing this digest for Javascript I decided to do the same for our beloved Python.

Any idea about who will make it to the podium?

Let’s begin:

n° 20: Pandas (18.5k ⭐️)

Used by a lot of people in the wide data field, Pandas is a very simple and powerful data-analysis/manipulation tool.

n° 19: Algorithm Interview Notes Chinese (19.4k ⭐️)

Can’t really add anything to this one. I’d love to have some feedback from Chinese-speaking readers.

n° 18: Python patterns (19.6k ⭐️)

A collection of design patterns/idioms in Python. My go-to place when designing new solutions.

n° 17: 100 Days of ML code (20.7k ⭐️)

An incredible introduction to ML by Siraj Raval and Avik Jain.

n° 16: Face Recognition (21.9k ⭐️)

The world’s simplest facial recognition…


Image for post
Image for post

Pricing your products is one of the most challenging things in E-commerce. It will affect how much you sell, your margins, and even your brand. There are lots of different pricing strategies, however, there isn’t a one-fits-all formula that will work for every different type of E-commerce businesses.

More than that, pricing is a process. You will have to iterate many times to find what works best for you. The ultimate goal is to find a price for each product you sell that both maximize sales and profit.

At PricingBot, we help E-commerce companies with competitor price monitoring and we…


Image for post
Image for post

Diving more into git rebase.

The elegance of pull rebase

This is the follow up of this post where I explained what really is the rebase and its golden rule. As many of you pointed it out, most of Anna’s troubles could have been avoided had she used the pull rebase. I didn’t want to talk about this back then in order to keep my post short enough, but now is the time.

Let’s say Bob is working on a branch behind the remote, his history might look like this:


Image for post
Image for post

Or the end of print(i) inside a for loop.

If you have ever wrote something like this:

for i in range(0,10000):
compute(i)
print(i)

to control the progress of your execution, this short article is for you 🙂.

All hail tqdm

tqdm, from the Arabic “taqadum” which means “progress” is one of the many Python libs that are as useful as they are easy to use. Install it the usual way with pip install tqdm and then:


Image for post
Image for post

If you think that value = my_dict.get('my_key', 'default_value') is equivalent to value = my_dict.get('my_key') or 'default_value' you should probably read this 😃. If you know why it’s not the same, then you probably won’t learn something here.

The good thing:

As anyone using Python 3 should know, the dict API is very clear and simple. I can declare a dict like this:

my_car = {'wheels': 4, 'brand': 'Tesla'}

It is simple, quick and easy. Retrieving values is as easy:

my_car.get('brand')
>>> 'Tesla'
my_car['brand']
>>> 'Tesla'

But to retrieve values I prefer the .get() for two reasons. First, there will be no exceptions raised…


Image for post
Image for post

(edit: the Safari extension is now live)

Over the last two years, my partner Kevin Sahin and I tried to launch several projects while working full time. We failed. We failed hard. Sometimes because of a lack of motivation, but often because of a lack of methodology.

In this article I will share my experience about what we did wrong in all these failed side projects, and what we did right to finally launch Shoptolist.

Shoptolist is a universal wish list. It allows you to track the products you want to buy, and get notifications if the price drops. …


Image for post
Image for post

What really happened during a git rebase, and why you should care.

This post is a follow up to this one where we explore the .git directory.

The base of the rebase

This what you might have in mind when you think about what is a rebase in git:


Image for post
Image for post
credit

“Whoah, I’ve just read this quick tuto about git and oh my god it is cool. I feel now super comfortable using it, and I’m not afraid at all to break something.”— said no one ever.

Using git as a beginner is like visiting a new country for someone who can’t read/speak the local language. As soon as you know where you are and where to go, everything is fine, but the moment you get lost, the big troubles begin (#badMetaphor).

There are a lot of posts out there about learning the basic commands of git, this is not one…

Pierre de Wulf

shoptolist.com / pricingbot.com / daolf.com/posts founder and tech explorer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store