100-Days-Of-ML-Code stopped in December 2023, and many of its days contain no code
GitHub describes it as 100 Days of ML Coding. The metadata lists the MIT license. This article stays within the project description and details documented in the GitHub repository README.
At a glance
- What is it?
- A personal learning journal following a hundred days of machine learning study, built on scikit-learn notebooks with the datasets committed alongside them. The last push was on 2023-12-29. Several consecutive entries are about a linear algebra video playlist rather than any code, one entry links to the previous day's notebook, and no file in the repository pins a library version.
- Who is it for?
- Read 100-Days-Of-ML-Code as a record of one person's study path rather than as a curriculum, because the sequencing of topics, the external courses it points at and the notebooks themselves are the value, and the sequencing is exactly what you cannot get from a reference book. Do not expect it to run today: the last push was on 2023-12-29, nothing pins a library version, and the notebooks were written against a scikit-learn and pandas of that period.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Probably not. The repository last received commits 33 months ago, on December 29, 2023.
- What is it written in?
- GitHub does not report a main language for this repository.
Answers come from the project's GitHub data, last synced on September 26, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The last push was 2023-12-29, so the notebooks are three years old
The single most important fact about this repository is its date. The last push to the master branch was on 2023-12-29, which is more than two and a half years before now, and the project has no GitHub releases at all, so there is no tag to anchor to either. Nothing in the repository records which versions of anything the notebooks were written against: there is no lockfile, no requirements file and no environment specification in the top level, only a code directory, a datasets directory, some supporting documents and a set of infographic images. The consequence is direct. The library named throughout the entries, scikit-learn, has moved on, as has the dataframe library these notebooks would use, and the difference between a 2023 notebook and a current one is not a detail you can skim. Run these as historical reading, or pin an old environment deliberately, and expect to fix things rather than to reproduce.
Four consecutive days are a video playlist, not code
The repository is called a hundred days of machine learning coding, and the readme is a day-by-day log, but a substantial run of entries contains no code link at all. Days 26 through 29 are four entries in a row about a linear algebra video series, covering vectors and linear combinations and spans and basis vectors, then three-dimensional transformations and determinants and null spaces, then dot and cross products, and finally change of basis and eigenvectors and abstract vector spaces. Each entry repeats the same playlist link. Day 30 moves on to a calculus series by the same author. Elsewhere the log records watching lectures rather than writing notebooks: a course on a learning platform across two entries, a university machine learning course by a named professor, and a financial course whose first lecture is described as covering prediction functions and feature extraction and overfitting and hyperparameter tuning. The consequence is that the title overstates the code content, and a reader expecting a hundred notebooks will find a mix of notebooks, reading notes and a substantial reading and video log.
One entry links to the previous day's notebook
Follow the readme links in order and one of them is wrong. The entry headed Implementation of SVM, listed as day 14, points at a file whose name begins with day 13. The prose above it describes implementing a support vector machine on linearly related data with the library's support vector classifier and promising a kernel-trick version next, which is consistent with day 14 being about the linear case and day 16 being where the kernel trick appears. So the heading, the prose and the filename disagree by one. The consequence is small but it is the kind of small thing that quietly costs a beginner an hour, because the notebook you land on looks plausible and covers a related topic, so nothing signals that you are a day behind. Check the filename against the heading before you trust a link, and treat the day numbers as labels rather than as a reliable index into the files.
The author changed the cadence and asked for documentation help
One entry is unusually candid, and it explains a lot about the shape of the repository. Around day 5 the log says the writer dived into what logistic regression actually is and what the mathematics behind it is, learning how a cost function is calculated and how gradient descent is applied to minimise prediction error. It then says that due to less time, an infographic will be posted on alternate days, and asks anyone with experience in the field who knows Markdown for the platform to get in touch to help with documenting the code. The consequence is that the documentation the author wanted help with was evidently never finished, and the entries are correspondingly uneven: some carry a notebook link, some are a title and an image, some are a paragraph about a lecture. That unevenness is normal for a personal journal and it is the right lens for reading it. It also means the repository has no consistent contract, so a reader should expect to check each day rather than assume a format.
Datasets are committed to the repository and their terms are not summarised
The readme opens by telling you where to get the datasets, and the answer is a directory inside this repository rather than a download elsewhere. That is convenient in the way a self-contained teaching repository should be: you clone once and the data is there. It also means the clone is larger than the code by a wide margin, which matters on a connection where you wanted the notebooks and not the data. More importantly, nothing visible in the repository summarises where the datasets came from or what they are licensed under. The top level carries the project licence and a code of conduct and a contributing guide, and the licence covers the project's own material; it does not speak for third-party datasets. The consequence is that before you use any of this data in anything published, you have to establish the terms yourself, and the repository gives you no starting point beyond the filenames.
No lockfile means reproducing a notebook is guesswork
Look at what the entries name as tools and notice what is missing. The machine learning work is done with scikit-learn, specifically its support vector classifier for the support vector machine days and the kernel trick on day 16, with the promise of a Python implementation of the support vector machine alongside. The data collection entry uses a scraping library to gather material for building a model. Everything else is notebooks in markdown, plus the infographic images and a supporting documents directory. What is absent is any statement of versions: the top level has no requirements file, no lockfile and no environment specification, and the project has no releases to infer a compatible set from. The consequence is that a notebook which ran when it was written may fail on a current install, and the failure will present as a library error rather than as a version mismatch, because nothing in the repository tells you which version it expected. If you want these to run, build the environment yourself and record what you chose.
Two top-level directories have spaces in their names
A small structural note that costs more than it should. The top level contains a code directory and a supporting documents directory, and both names contain a space. There is also a site configuration file, which means the readme is rendered as a project page, an infographics directory, the datasets directory, and the usual repository files. The consequence of the spaces is narrow but real: shell commands over these paths need quoting, glob patterns and file watchers that do not expect spaces need escaping, and some tooling will simply fail on them. For a reader browsing on the site it makes no difference at all. For anyone scripting against the repository, which is not the intended use but does happen, it is the first thing to fix, and it would be a one-minute change to rename them. It is also a decent illustration of why a repository with no lockfile and no releases has not had the small cleanups that a maintained project accumulates.
Editorial conclusion
Read 100-Days-Of-ML-Code as a record of one person's study path rather than as a curriculum, because the sequencing of topics, the external courses it points at and the notebooks themselves are the value, and the sequencing is exactly what you cannot get from a reference book. Do not expect it to run today: the last push was on 2023-12-29, nothing pins a library version, and the notebooks were written against a scikit-learn and pandas of that period. Three things to know before you start. Several days contain no code at all, including four consecutive entries that are a video playlist. One entry links to the previous day's file, so following the links in order gives you the wrong notebook. And the datasets are committed here, so a clone is large and the licence terms of that data are not summarised anywhere you can see.
Frequently asked questions
What is 100-Days-Of-ML-Code?
It is a personal learning journal following a hundred days of machine learning study, as proposed by Siraj Raval. The readme is a day-by-day log with notebook links for some days, covering data preprocessing, linear and logistic regression, k-nearest neighbours, support vector machines including the kernel trick, naive Bayes, decision trees, web scraping, and material from online courses.
How do you code for machine learning with this repository?
You follow the day-by-day readme and open the notebooks it links, with the datasets committed in a directory inside the repository. The named tool for the machine learning work is scikit-learn, and a web scraping library is used for the data collection entry. No file in the repository pins a library version.
Is 100-Days-Of-ML-Code still being updated?
No. The last push to the master branch was on 2023-12-29 and the repository has no GitHub releases, so there is no tag to anchor to. The last entry visible in the readme moves from a linear algebra video series on to a calculus series by the same author.
Do all 100 days in 100-Days-Of-ML-Code contain code?
No. Some entries link to a notebook, others are a title with an image, and several consecutive entries are notes about video lectures rather than code, including four in a row covering a linear algebra playlist. One entry headed as the SVM implementation also links to the previous day's file, so the day numbers are labels rather than a reliable index.