We ve created this book to make it easier for our collegues and friends to pick up Julia. Especially for people new to Julia, it can be difficult to figure out what package to use and how the packages work together. Therefore, we focussed on Julia basics, DataFrames.jl , CSV.jl , XLSX.jl and Makie.jl because these are the main data manipulation and visualization packages that can solve many problems.
To make it easier to create the book, weāve used Books.jl. This package solves multiple problems that @rikh experienced with similar packages. Specifically:
The package can generate HTML and PDF from your text and code. Code is evaluated for you and outputs are embedded (like Jupyter, Rmarkdown, Weave.jl or Franklin.jl ).
The package fully supports code written inside your own package. So, it can grab code definitions from your own package and display them inside the book. Creating a package for your book makes it easy to combine your book with other tools such as CompatHelper and Test .
The package fully supports Revise.jl . All code changes are tracked and change your output immediately.
The package is aimed at being used in CI. If you set fail on error to true and have missing cross-references, code which throws an error or invalid PDF syntax, then CI will fail. This ensures that if CI passes then you can be quite sure that your book looks good.
Thanks to all the people who provided feedback and sometimes even PRs to the book and Books package.
Thank you. This is a well written introduction to working with Julia for data science. Iāve been keeping so many bookmarks to forum posts, to blog posts by BogumiÅ KamiÅski, to package documentation, etcā¦ However, for those beginning with Julia this can be overwhelming. This resource (and others like it) will help introduce new users to this fantastic language.
itās a great book. Can I leave a suggestion for the next edition? I would add on this page Data Visualization with Makie.jl - Julia Data Science a quick sentence on how to actually view a plot produced with Makie. I wasted a good 30 minutes before i saw here Basic Tutorial that Iād best do this in VScode.
Weāve discussed how quick we should be updating the physical book. Updating the version on Amazon takes about 10 minutes which will be printed a few hours later. The counterargument is that it wouldnāt be good for readers in a class who all have a slightly different version. So I think itās a difficult choice and thoughts are welcome
Great - in fact I was looking for the repo but couldnāt find it. Good itās in your list. I would do as you suggest ie update the physical book only every couple of months (say) but have a man up to date version online?
We will be updating if frequently in the online version at juliadatascience.io. But the paperback editions will have a different lifetime cycle. We would launch a 2nd edition if we have extra content to put or if DataFrames.jl, Julia or Makie.jl have been updated/broken the API so that we NEED to do a 2nd edition.
Today I started, with the help of some students here in Brazil, translating the book to Portuguese. It will be the same as the English version (free and opensourced online, with a paperback on Amazon.com.br). We are looking for volunteers to translate it to Spanish (we would aknowledge him/her/they as the translator inside the HTML and PDF).
Books.jl v2 was released in the past weekend. Version 2 closes multiple long-standing issues. Most noteworthy:
Syntax highlighting is disabled for output blocks in both HTML and PDF. This makes the books and websites look much cleaner.
The output is printed via ProgressMeter.jl instead of a dump to the console. This avoids a lot of scrolling when generating the book.
It is now much easier to decide to run only one code block. Useful, for example, if a code block fails.
There is now a helper function entr_gen which can be used to track your book for changes. With this, you can point the function to a part of your book and start writing code and text. Each time that you save the file, Books.jl will evaluate the file and update the live-served webpages.
All code is now always evaluated in Main. There used to be an option to pass another module to gen to evaluate the code in, but this turned out to be complex and less useful.
Yggdrasil is now used for Tectonic so Tectonic will automatically update with Yggdrasil and supports ARM via their build system (pandoc-crossref doesnāt yet unfortunately)
docx is removed because, well, itās docx
install_dependencies is avoided by passing JuliaMono directly into the TeX file. This avoids the need for a globally installed JuliaMono
The conversion of plotting objects to images is now managed via multiple dispatch instead of Requires.jl. The drawback is that it takes a bit more logic on the book author side, but given that a book is a long-term project, it is hopefully not too bad. The benefit is that it provides authors with more flexibility.
I seem to remember that this project had been put into āmaintenance modeā. But I canāt see that message any moreā¦ But Iām very glad to see so much āmaintenanceā