Hello folks. I wanted to let you know about a new development re: fastpages. As you know, we have rebuilt nbdev from the ground up on top of Quarto, a fantastic technical content platform including excellent facilities for blogging.
I know many people use fastpages in the community. I created fastpages because, at the time, there weren’t any good options for blogging with notebooks. Recently, there have been some new pieces of technology like Jupyter Book and Quarto which are both fabulous. We ended up using Quarto for nbdev, because of its shared vision with nbdev and the fantastic ongoing support from JJ Allaire and the rest of the Posit team. More discussion on this topic can be found in this blog post.
Even though I created fastpages, I believe that people trying to blog with notebooks should be using Quarto. I am a believer in recommending the best tools for the job and helping people use those tools where possible. To that end, I have created this migration guide that can help you migrate your fastpages projects to Quarto, along with other Quarto resources that might be helpful.
One of the most central aspects of fastai is writing blog posts and sharing your learnings, as it is an unreasonably effective way to experience career and personal growth. I hope that you all will continue blogging using the wonderful tools Quarto provides. If anything, I believe that Quarto will encourage richer forms of technical communication as it is a rich platform that is capable of so many things even beyond blogging. Thank you
Hello Hamel, thanks for sharing migration guide. I see in step 7, where we have to run nbdev_migrate --path posts, for compatibility with Quarto, the --path argument does not exist.
(fast) $ nbdev_migrate -h
usage: nbdev_migrate [-h] [--fname FNAME] [--disp] [--stdin] [--no_skip]
Convert all directives and callouts in `fname` from v1 to v2
optional arguments:
-h, --help show this help message and exit
--fname FNAME A notebook name or glob to migrate
--disp Print the outputs with newly formatted directives (default: False)
--stdin Read notebook from input stream (default: False)
--no_skip Do not skip directories beginning with an underscore (default: False)
Therefore instead I tried with nbdev_migrate --fname posts --no_skip, hoping that would work.
Could you share more about how you’d like to use this? You can download the notebook as an .ipynb file (in the Kaggle notebook edtir: File > Download Notebook) which works with Quarto.
@chrwittm Thank you so much for your post. I am also a fast.ai beginner and starting a blog seems like the best way to integrate into the data science community, and document the learning journey ahead. This is my first ever blog
Thanks @chrwittm@afshan22 – I’ve sent your posts to the CEO of RStudio and suggested he consider using them as a role model for an official Quarto tutorial
It makes me so happy to see everyone’s blogs, and you’re all putting out such valuable content too! Should we make a “share your quarto blog” topic?
Yes this is a great idea Esp because we can all learn each others customizations and other things they’re doing (And we can seperate the fastai projects and blogs)
@hamelsmu , should we worry if, when we run the second line in the Migration guide, i.e., the line that reads
quarto install extension quarto-ext/video
, that it responds with the message:
Extension not found in local or remote sources
?
Here’s a full log of activities up to and including that point:
$ git clone https://github.com/drscotthawley/blog_quarto.git
Cloning into 'blog_quarto'...
warning: You appear to have cloned an empty repository.
$ cd blog_quarto/
$ quarto create-project --type website:blog .
Creating project at /Users/shawley/github/blog_quarto:
- Created _quarto.yml
- Created .gitignore
- Created index.qmd
- Created posts/welcome/index.qmd
- Created posts/post-with-code/index.qmd
- Created about.qmd
- Created styles.css
- Created posts/_metadata.yml
$ quarto install extension quarto-ext/video
Extension not found in local or remote sources
That extension recently got merged with Quarto itself; that is, it’s now a built-in feature of Quarto. So it doesn’t need to be or can’t be installed anymore.
Today, however, I get the following error (no obvious change to my setup):
fatal: 'gh-pages' is already checked out at /mnt/c/Users/chrwi/OneDrive/Dokumente/GitRepos/chrwittm.github.io/bc75ca74
I am a git-newbie, tried google it, but none of the result yielded working results.
Do you have any advice how to get rid of this checkout?
Thanks for your help!
Solved: I found a solution which actually makes a lot of sense to me now: You can easily re-build your Quarto blog from the main branch of your repo: For more details check out this blog post - existence proof that my blog is back
Thanks for this post and the migration guide. It was really helpful in helping me migrate my fastpages blog to quarto!
A couple pieces of feedback on the migration guide in the hopes of helping others:
The “pip install -U git+https://github.com/fastai/nbdev” step you mention in a reply here is essential; it would be nice to add this to the migration guide.
The instructions about moving the images are incorrect. I needed to end up with all of the images in the directory “posts/images” I believe you can just do: “cp -r …/blog/images posts/” and have things work
My fastpages blog (github repo here) does not build anymore, because of an error in Jekyll I don’t really manage to fix…
Liquid Exception: Invalid syntax for include tag. File contains invalid characters or sequences: social-icons/.svg Valid syntax: {% include file.ext param='value' param2='value' %} in assets/minima-social-icons.liquid
Remote Theme: Cleaning up /tmp/jekyll-remote-theme-20221225-1-10joxn8
/usr/gem/gems/jekyll-4.1.1/lib/jekyll/tags/include.rb:59:in `validate_file_name': Invalid syntax for include tag. File contains invalid characters or sequences: (ArgumentError)
Since I had this error, I tried to migrate to Quarto using the tutorial mentioned in this post, but didn’t manage to get my .docx articles to be converted.
Would be grateful for help on one of these directions :).
EDIT: someone (not on this forum) found a solution to this problem! See below