<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>books — jd:/dev/blog</title><description>Posts tagged &quot;books&quot; on jd:/dev/blog.</description><link>https://julien.danjou.info/</link><item><title>A Decade of Writing Books and Selling 25,000 Copies</title><link>https://julien.danjou.info/blog/a-decade-of-writing-books-and-selling/</link><guid isPermaLink="true">https://julien.danjou.info/blog/a-decade-of-writing-books-and-selling/</guid><description>Reflecting on the Journey and Impact of Writing Technical Books.</description><pubDate>Wed, 12 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ten years ago, I embarked on a journey that profoundly shaped my career and personal growth. Writing my first book, &lt;em&gt;The Hacker&apos;s Guide to Python&lt;/em&gt; (later updated and renamed &lt;em&gt;Serious Python&lt;/em&gt;), marked the beginning of a series of literary endeavors that allowed me to share my knowledge, experiences, and passion for Python programming with a global audience. Today, I reflect on this journey, the lessons learned, and the incredible milestones achieved along the way.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/a7a65530-4515-43ba-b7d2-2dc29f8af2af_2448x3264.webp&quot; alt=&quot;First print of The Hacker&apos;s Guide to Python in 2014&quot; /&gt;
&lt;em&gt;First print of The Hacker’s Guide to Python in 2014&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The Genesis: The Hacker&apos;s Guide to Python&lt;/h2&gt;
&lt;p&gt;In March 2014, I published my first book, &lt;em&gt;The Hacker&apos;s Guide to Python&lt;/em&gt;. This book was born out of a desire to provide a comprehensive resource for Python developers, offering insights and techniques I had gathered over the years. The response was overwhelmingly positive, and it motivated me to continue writing and sharing my expertise. I sold over 3,000 copies of the book in a couple of years, which is a very good number in its category.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Challenges and Time Investment&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Writing was an enormous undertaking that demanded significant time and effort. I spent around 150 hours on each book, covering various activities from writing and editing to marketing and publishing. The process was spread over a year most of the time.&lt;/p&gt;
&lt;p&gt;One of the toughest challenges was constructing a coherent and comprehensive table of contents. This initial step was crucial, as it guided the entire writing process, making the subsequent task of filling in the blanks somewhat more manageable. Additionally, I had to balance my time between my day job as a software engineer and this side project, making time management a critical aspect of the endeavor.&lt;/p&gt;
&lt;p&gt;Another significant difficulty was the proofreading process. I needed both technical and language reviews to ensure the content was accurate and well-written, considering English is not my native language. Finding reliable reviewers who could provide timely and constructive feedback was challenging. Despite reaching out to many contacts, only a fraction responded and contributed consistently.&lt;/p&gt;
&lt;p&gt;Self-publishing also taught me &lt;em&gt;marketing&lt;/em&gt;, one of the best skills I could have learned, and I’m still leveraging it to this day while working on &lt;a href=&quot;https://mergify.com&quot;&gt;Mergify&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Scaling Python and Serious Python&lt;/h2&gt;
&lt;p&gt;Following the success of my first book, I continued exploring new topics and challenges within the Python ecosystem. &lt;em&gt;&lt;a href=&quot;http://scaling-python.com&quot;&gt;Scaling Python&lt;/a&gt;&lt;/em&gt;, published in 2017, delved into the complexities of scaling applications, a topic that resonated with many developers facing similar challenges. I distributed around 1,000 copies of this book.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/86b0bfff-9015-4bf6-a5d6-a027cbc6f98a_329x459.png&quot; alt=&quot;Cover of Scaling Python&quot; /&gt;
&lt;em&gt;Scaling Python cover&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In 2019, after being approached by &lt;a href=&quot;https://nostarch.com/&quot;&gt;No Starch&lt;/a&gt;, I released &lt;em&gt;&lt;a href=&quot;https://serious-python.com&quot;&gt;Serious Python&lt;/a&gt;&lt;/em&gt;, a book aimed at helping developers write more efficient, maintainable, and scalable code. Both books received praise for their practical approach and in-depth coverage of advanced topics. Being backed by No Starch helped the book to be distributed widely, and made it reach &lt;strong&gt;20,000 copies&lt;/strong&gt; as of today.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/1ef41626-ec9b-4637-9e5d-2962a2ce27b6_2284x2284.jpeg&quot; alt=&quot;Cover of Serious Python published by No Starch Press&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Impact on My Career&lt;/h2&gt;
&lt;p&gt;Writing these books significantly impacted my career and established me as an authority in the Python community. When I joined &lt;a href=&quot;https://datadoghq.com&quot;&gt;Datadog&lt;/a&gt; in 2019, I remember seeing my books casually lying around at the entrance of the Paris office.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/3664e543-72d2-4659-92e5-84d7328a74df_3456x3492.jpeg&quot; alt=&quot;Julien&apos;s books displayed at the Datadog Paris office entrance in 2019&quot; /&gt;
&lt;em&gt;My books chilling in the Datadog Paris office entrance in 2019&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This moment was a profound realization of the reach and influence of my work. Colleagues and peers often treated the content of my books as definitive guides. The books provided answers and insights so clearly that people often didn&apos;t feel the need to ask me questions about the topics I covered during interviews; they trusted my written word as a reliable source. This validation opened new opportunities and allowed me to connect with an extensive network of professionals who recognized and respected my expertise.&lt;/p&gt;
&lt;h2&gt;Connecting with the Community&lt;/h2&gt;
&lt;p&gt;Writing allowed me to talk to anyone, reach out to amazing hackers worldwide, and forge new friendships. Writing books was the best excuse to meet fantastic people and create new friendships. I discovered fantastic engineers and learned from their experiences while interviewing them. This journey has been incredibly rewarding, not just professionally but also personally, as I connected with a vibrant community of developers who share my passion for Python and open-source software.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/07db89c4-6430-4a4c-b10b-61a84baff249_595x595.jpeg&quot; alt=&quot;Julien presenting his book on stage at PyCon FR 2017&quot; /&gt;
&lt;em&gt;Sharing the knowledge of my book on stage during PyCon FR 2017&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I also saw my books being translated into multiple languages, including Chinese and Korean.&lt;/p&gt;
&lt;p&gt;This feeling is awesome as it gives even more impact to your writing, knowing that your knowledge is spreading across the globe. Having your work translated and accessible to a wider audience is a great reward, and it emphasizes the importance and value of sharing knowledge on such a large scale.&lt;/p&gt;
&lt;h2&gt;The Joy of Writing&lt;/h2&gt;
&lt;p&gt;While writing is hard, it is also refreshing. Producing content that people love and are happy to recommend is a fantastic feeling. My golden rule was, and still is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Produce content that you&apos;d be happy consuming.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The rest then becomes history. This philosophy guided me through the writing process and ensured that my books remained valuable and relevant to readers.&lt;/p&gt;
&lt;h2&gt;A New Era of Writing&lt;/h2&gt;
&lt;p&gt;Reflecting on my writing journey, it resonates deeply with a post I wrote titled &quot;&lt;em&gt;&lt;a href=&quot;https://julien.danjou.info/p/i-used-to-write&quot;&gt;I used to write&lt;/a&gt;.&lt;/em&gt;” In that post, I shared my journey from writing extensively in my early years to facing the challenges of balancing life and work, decreasing my writing output. The desire to return to the keyboard lingered, and despite the rise of AI-generated content, I realized that authentic, human writing still holds immense value.&lt;/p&gt;
&lt;p&gt;Over the last year, I toyed with GPT, generating tons of content and using it to brainstorm, change sentences, and rewrite text. This experimentation reaffirmed my belief that AI could never truly replace the nuanced and creative process of human writing. As AI-generated content grows, the need for genuine, human-crafted writing becomes even more critical. This new writing era challenges us to strengthen our signal amidst the growing noise.&lt;/p&gt;
&lt;p&gt;The past ten years have been an incredible journey of learning, teaching, and connecting with developers worldwide. I look forward to continuing this journey, exploring new topics, and sharing my insights through future books and blog posts.&lt;/p&gt;
&lt;p&gt;Thank you for being a part of this journey.&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>I used to write</title><link>https://julien.danjou.info/blog/i-used-to-write/</link><guid isPermaLink="true">https://julien.danjou.info/blog/i-used-to-write/</guid><description>Then I stopped.</description><pubDate>Tue, 21 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I did. I mean, I used to write a lot back in the day.&lt;/p&gt;
&lt;p&gt;To give some context, I started my blog in 2003 — 21 years ago. (I later reflected on my writing career in &lt;a href=&quot;https://julien.danjou.info/blog/a-decade-of-writing-books-and-selling&quot;&gt;A Decade of Writing Books and Selling 25,000 Copies&lt;/a&gt;.) It ran on &lt;a href=&quot;https://dotclear.org/&quot;&gt;Dotclear&lt;/a&gt;, an old blog engine. I switched to various static code generators over the years, spending hours migrating data from one format to another. I used &lt;a href=&quot;https://www.gnu.org/software/emacs-muse/&quot;&gt;Muse&lt;/a&gt; within Emacs, &lt;a href=&quot;https://orgmode.org/worg/org-blog-wiki.html&quot;&gt;Org-mode&lt;/a&gt;, probably at some point, and finally, &lt;a href=&quot;https://ghost.org/&quot;&gt;Ghost&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The cover of Serious Python&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then I stopped.&lt;/p&gt;
&lt;p&gt;The number of publications I posted online decreased over the years as I spent more and more time coding, CEO’ing things at Mergify, and managing life. Writing slowly faded away, replaced with the mundane demandes of daily life. I closed my blog, and its content vanished in the limb of a file named &lt;code&gt;jd-dev-blog.zip&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/3e3c41c1-0e3d-4cdd-ac9d-593b43e453db_1666x116.png&quot; alt=&quot;Graph showing declining blog post frequency over the years&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sure, I thought about writing more. Or again. Over the last couple of years, every week, my stomach would ache, and my brain would melt under the weight of my thoughts. I wanted to yell so many things at the world, correct so many wrongs, and share so many learnings.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/images/blog/68c373a9-7d09-4f9c-a0b6-3b8943bb16c2_300x330.png&quot; alt=&quot;XKCD comic about someone being wrong on the internet&quot; /&gt;
&lt;em&gt;https://xkcd.com/386/&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But the time to write disappeared, buried under the many priorities that other necessities. Still, the desire to return to the keyboard lingered.&lt;/p&gt;
&lt;p&gt;Until the final nail in the coffin hit.&lt;/p&gt;
&lt;p&gt;AI became mainstream.&lt;/p&gt;
&lt;p&gt;Anyone could write anything in seconds. Copywriters were being replaced by bots. The cost savings of replacing humans would revolutionize entire industries. There was no point in writing anymore. My engineer brain decided that the problem was solved.&lt;/p&gt;
&lt;p&gt;So I gave up. My mind gave up.&lt;/p&gt;
&lt;p&gt;My desire to write would be instantly killed by the concept of ChatGPT. The existence of that malicious AI would stifle any urge to draft thoughts on virtual paper. The sheer thought of such an entity lurking in the digital shadows, analyzing and predicting every word, strikes a chilling fear into the heart of my creativity.&lt;/p&gt;
&lt;p&gt;Until today.&lt;/p&gt;
&lt;p&gt;Over the last year, I toyed with GPT, generating tons of content. I used it to brainstorm, change sentences, and rewrite text. The more I used it, the more I realized I was getting bored. Browsing the Internet, and social networks, I realized humans were replaced by AI.&lt;/p&gt;
&lt;p&gt;No one would &lt;em&gt;write&lt;/em&gt; anymore; everyone would just &lt;em&gt;publish&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;With its cold, calculating algorithms, AI reduced the rich tapestry of human expression to mere patterns and data points. People would throw a bare concept or even ask AI for one and demand it to produce text. Many of those publishers would not even take the time to tweak the AI, to feed it with the small amount of style and humanity they would have. Content would be farmed, from social media posts to SEO blog posts.&lt;/p&gt;
&lt;p&gt;Over the last year, everything became bland. The once vibrant landscape of ideas has been replaced with mechanical mimicry.&lt;/p&gt;
&lt;p&gt;My brain acknowledged that AI could never truly write. That revelation shifted my perspective, and I realized that writing wasn&apos;t dead. The noise would undoubtedly grow louder, but this only meant the signal would need to be stronger.&lt;/p&gt;
&lt;p&gt;We are entering a new era for writing.&lt;/p&gt;
&lt;p&gt;Well, at least, that’s what I hope.&lt;/p&gt;
</content:encoded><category>books</category></item><item><title>I am a Software Engineer and I am in Charge</title><link>https://julien.danjou.info/blog/i-am-a-software-engineer-and-i-am-in-charge/</link><guid isPermaLink="true">https://julien.danjou.info/blog/i-am-a-software-engineer-and-i-am-in-charge/</guid><description>Fifteen years have passed since I started my career in IT — which is quite some time. I&apos;ve been playing with computers for 25 years now, which makes me quite knowledgeable about the field, for sure.</description><pubDate>Tue, 22 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Fifteen years have passed since I started my career in IT — which is quite some time. I&apos;ve been playing with computers for 25 years now, which makes me quite knowledgeable about the field, for sure.&lt;/p&gt;
&lt;p&gt;However, while I was fully prepared to bargain with computers, I was not prepared to do so with humans. The whole career management thing was unknown to me. I had no useful skills to navigate within the enterprise organization. I had to learn the ropes the hard way, failing along the way. It hurts.&lt;/p&gt;
&lt;p&gt;Almost ten years ago, I had the chance to meet a new colleague — Alexis Monville. Alexis was a team facilitator, and I started to work with him on many non-technical levels. He taught me a lot about agility and team organization. Working on this set of new skills changed how I envisioned my work and how I fit into the company.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/12/alexis-monville-1.png&quot; alt=&quot;Alexis Monville&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I worked on those aspects of my job because I decided to be in charge of my career rather than keeping things boring. That was one of the best decisions I ever made. Growing the social aspect of my profession allowed me to develop and find aspiring jobs and missions.&lt;/p&gt;
&lt;p&gt;Getting to that point takes a lot of time and effort, and it&apos;s pretty hard to do it alone. My friend Alexis wrote an excellent book titled &lt;em&gt;&lt;a href=&quot;https://leanpub.com/iamincharge/c/jd-affiliate&quot;&gt;I am a Software Engineer and I am in Charge&lt;/a&gt;.&lt;/em&gt; I&apos;m proud to have been the &lt;a href=&quot;https://iamincharge.club/2020/04/16/the-first-review/&quot;&gt;first reviewer&lt;/a&gt; the book before it was released a few weeks ago.&lt;/p&gt;
&lt;p&gt;Many developers out there are stuck in a place where they are not excited by their colleagues&apos; work and whose managers do not appropriately recognize their achievement. It would be best for them if they did something about that.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/12/image.png&quot; alt=&quot;The book!&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This book is an excellent piece for engineers who wants to break the cycle of frustration. It covers many situations I encountered across my professional life those last years, giving good insights into how to solve them.&lt;/p&gt;
&lt;p&gt;To paraphrase Alexis, the answers to your career management problems are not on StackOverflow — they&apos;re not technical issues. However, you can still solve them with the right tools. That&apos;s where &lt;em&gt;&lt;a href=&quot;https://leanpub.com/iamincharge/c/jd-affiliate&quot;&gt;I am a Software Engineer and I am in Charge&lt;/a&gt;&lt;/em&gt; shines. It gives you leads, solutions, and exercise to get out of this kind of situation. It helps increase your impact and satisfaction at work.&lt;/p&gt;
&lt;p&gt;I love this book, and I wish I had access to it years ago. Developing technical leadership is not easy and requires a mindset shift. Having a way to bootstrap yourself with this is a luxury.&lt;/p&gt;
&lt;p&gt;If you&apos;re a software engineer at the beginning of your career or struggling with your current professional situation, I profoundly recommend reading &lt;a href=&quot;https://leanpub.com/iamincharge/c/jd-affiliate&quot;&gt;this book&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;You&apos;ll get a fast track on your career, for sure.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/12/cropped-Logo-1-1.png&quot; alt=&quot;I Am a Software Engineer and I Am in Charge book logo&quot; /&gt;&lt;/p&gt;
</content:encoded><category>books</category></item><item><title>The Art of PostgreSQL is out!</title><link>https://julien.danjou.info/blog/the-art-of-postgresql-is-out/</link><guid isPermaLink="true">https://julien.danjou.info/blog/the-art-of-postgresql-is-out/</guid><description>If you remember well, a couple of years ago, I wrote about Mastering PostgreSQL, a fantastic book written by my friend Dimitri Fontaine.  Dimitri is a long-time PostgreSQL core developer — for example</description><pubDate>Wed, 28 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you remember well, a couple of years ago, I wrote about &lt;em&gt;Mastering PostgreSQL&lt;/em&gt;, a fantastic book written by my friend Dimitri Fontaine.&lt;/p&gt;
&lt;p&gt;Dimitri is a long-time PostgreSQL core developer — for example, he wrote the extension support in PostgreSQL — no less. He is featured in my book &lt;a href=&quot;https://serious-python.com&quot;&gt;Serious Python&lt;/a&gt;, where he advises on using databases and ORM in Python.&lt;/p&gt;
&lt;p&gt;Today, Dimitri comes back with the new version of this book, named &lt;em&gt;&lt;a href=&quot;https://jdanjou--theartofpostgresql.thrivecart.com/full-edition/?ref=blog&quot;&gt;The Art of PostgreSQL&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/08/IMG_20141121_164610.jpg&quot; alt=&quot;As a bonus, here&apos;s a picture of me and Dimitri having fun in a PostgreSQL meetup!&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I love the motto of this book: &lt;em&gt;Turn Thousands of Lines of Code into Simple Queries&lt;/em&gt;. I have spent all my career working with code that talks to databases, and I can&apos;t count the number of times where I&apos;ve seen people write lengthy, slow code in their pet language rather than a single well-thought SQL query which would do a better job.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/08/image-5.png&quot; alt=&quot;Cover of The Art of PostgreSQL&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is exactly what &lt;a href=&quot;https://jdanjou--theartofpostgresql.thrivecart.com/full-edition/?ref=blog&quot;&gt;this book&lt;/a&gt; is about.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s why it&apos;s my favorite SQL book. I learned so many things from it. In many cases, I&apos;ve been able to divide by 10 the size of the code I had to write in Python to implement a feature. All I had to do is to browse the book to discover the right PostgreSQL feature and write a single SQL query. The &lt;em&gt;right&lt;/em&gt; query that does the job for me_._&lt;/p&gt;
&lt;p&gt;Less code, fewer bugs, more happiness!&lt;/p&gt;
&lt;p&gt;The book also features interviews with great PostgreSQL users and developers — hey, no wonder where Dimitri got this idea, right? ;-)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/08/Screenshot-2019-08-28-at-15.09.21.png&quot; alt=&quot;Screenshot of interview excerpts featured in The Art of PostgreSQL&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I loved those interviews. What&apos;s better than reading Kris Jenkins explaining how Clojure and PostgreSQL play nice together, or Markus Winand (from the famous &lt;a href=&quot;https://use-the-index-luke.com/&quot;&gt;use-the-index-luke.com&lt;/a&gt;) talking about the relationship developers have with their database. :-)&lt;/p&gt;
&lt;p&gt;No need to say that you should get your hands on this &lt;strong&gt;right now.&lt;/strong&gt; Dimitri just made a launch offer where &lt;a href=&quot;https://jdanjou--theartofpostgresql.thrivecart.com/full-edition/?ref=blog&quot;&gt;he offers a &lt;strong&gt;15% discount&lt;/strong&gt; on the book&lt;/a&gt; until the end of this month! You can also &lt;a href=&quot;https://jdanjou--theartofpostgresql.thrivecart.com/full-edition/?ref=blog&quot;&gt;read the free chapter&lt;/a&gt; to get an idea of what you&apos;ll get.&lt;/p&gt;
&lt;p&gt;Last thing: it&apos;s DRM-free and money-back guaranteed. You can &lt;a href=&quot;https://jdanjou--theartofpostgresql.thrivecart.com/full-edition/?ref=blog&quot;&gt;get this book&lt;/a&gt; with your eyes closed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/08/Screenshot-2019-08-28-at-15.25.14.png&quot; alt=&quot;Screenshot of The Art of PostgreSQL book packages and pricing&quot; /&gt;&lt;/p&gt;
</content:encoded><category>databases</category><category>books</category></item><item><title>Serious Python released!</title><link>https://julien.danjou.info/blog/serious-python-released/</link><guid isPermaLink="true">https://julien.danjou.info/blog/serious-python-released/</guid><description>Today I&apos;m glad to announce that my new book, Serious Python, has been released.  However, you wonder… what is Serious Python?  Well, Serious Python is the the new name of The Hacker&apos;s Guide to Python</description><pubDate>Thu, 17 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I&apos;m glad to announce that my new book, Serious Python, has been released.&lt;/p&gt;
&lt;p&gt;However, you wonder… what is &lt;em&gt;Serious Python&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;Well, Serious Python is the the new name of &lt;em&gt;The Hacker&apos;s Guide to Python&lt;/em&gt; — the first book I published. Serious Python is the 4th update of that book — but with a brand a new name and a new editor!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/01/serious-python.png&quot; alt=&quot;Cover of Serious Python&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For more than a year, I&apos;ve been working with the editor &lt;a href=&quot;https://nostarch.com&quot;&gt;No Starch Press&lt;/a&gt; to enhance this book and bring it to the next level! I&apos;m very proud of what we achieved, and working with a whole team on this book has been a fantastic experience.&lt;/p&gt;
&lt;p&gt;The content has been updated to be ready for 2019: &lt;em&gt;pytest&lt;/em&gt; is now a de-facto standard for testing, so I had to write about it. On the other hand, Python 2 support was less a focus, and I removed many mentions of Python 2 altogether. Some chapters have been reorganized, regrouped and others got enhanced with new content!&lt;/p&gt;
&lt;p&gt;The good news: you can get this new edition of the book with a &lt;strong&gt;15% discount&lt;/strong&gt; for the next 24 hours using the coupon code &lt;strong&gt;SERIOUSPYTHONLAUNCH&lt;/strong&gt; on the &lt;a href=&quot;https://serious-python.com&quot;&gt;book page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The book is also released as part as No Starch collection. They also are in charge of distributing the paperback copy of the book. If you want a version of the book that you can touch and hold in your arms, look for it in &lt;a href=&quot;https://nostarch.com/seriouspython&quot;&gt;No Starch shop&lt;/a&gt;, on &lt;a href=&quot;https://www.amazon.com/gp/product/B074S4G1L5/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=B074S4G1L5&amp;amp;linkCode=as2&amp;amp;tag=juliendanjou-20&amp;amp;linkId=2d68dde537d79ba5e334d4291ad37fff&quot;&gt;Amazon&lt;/a&gt; or in your favorite book shop!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/01/hackerspython_cover-front_v5.png&quot; alt=&quot;No Starch version of Serious Python cover&quot; /&gt;&lt;/p&gt;
</content:encoded><category>python</category><category>books</category></item><item><title>Scaling Python released</title><link>https://julien.danjou.info/blog/scaling-python-released/</link><guid isPermaLink="true">https://julien.danjou.info/blog/scaling-python-released/</guid><description>I am proud to announce today the immediate release of Scaling Python, my second book about Python! It talks about the distribution and performance of applications written in Python, and how to build.</description><pubDate>Tue, 05 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am proud to announce today the immediate release of &lt;em&gt;&lt;a href=&quot;https://scaling-python.com&quot;&gt;Scaling Python&lt;/a&gt;&lt;/em&gt;, my second book about Python! It talks about the distribution and performance of applications written in Python, and how to build them properly!&lt;/p&gt;
&lt;p&gt;It took me a year to build this entirely new product around Python. It&apos;s an exciting moment and I am sure it will enjoy many of my dear readers that are waiting for it for a while now!&lt;/p&gt;
&lt;p&gt;I&apos;ve been able to build this using my last three years of experience working on &lt;em&gt;&lt;a href=&quot;http://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;&lt;/em&gt; – an amazing adventure.&lt;/p&gt;
&lt;p&gt;Starting now, you can enjoy reading the book and learn a bit more about building distributed and scalable applications with Python. I really hope it&apos;ll help you bring your Python-fu to a new level, and that it will help you build great projects!&lt;/p&gt;
&lt;p&gt;Since this is first days of sale, you will enjoy &lt;strong&gt;a 15% discount&lt;/strong&gt; on all packages for the next 48 hours!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scaling-python.com&quot;&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/the-hacker-guide-to-scaling-python.png&quot; alt=&quot;Cover of The Hacker&apos;s Guide to Scaling Python&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>Scaling Python: the interviewees</title><link>https://julien.danjou.info/blog/scaling-python-interviews/</link><guid isPermaLink="true">https://julien.danjou.info/blog/scaling-python-interviews/</guid><description>The release date for Scaling Python is now very close! Today, I&apos;d like to talk a bit about the interviews that I&apos;ve run those last months that are featured in the book.</description><pubDate>Tue, 28 Nov 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The release date for &lt;a href=&quot;http://scaling-python.com&quot;&gt;Scaling Python&lt;/a&gt; is now very close! Today, I&apos;d like to talk a bit about the interviews that I&apos;ve run those last months that are featured in the book.&lt;/p&gt;
&lt;p&gt;I&apos;m glad that during those long weeks work, I have managed to find a Python expert on each of the major topic covered in the book. They will provide hindsight on the different subject covered and share their experience so you can benefit from it!&lt;/p&gt;
&lt;p&gt;Without further delay, ladies and gentlemen, here they are:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;# Mehdi Abaakouk &lt;img src=&quot;https://julien.danjou.info/content/images/03/mabaakouk.png&quot; alt=&quot;Mehdi Abaakouk portrait&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Mehdi is a French free software hacker, working at Red Hat, who has been using Linux for almost twenty years now. He works daily on OpenStack, the largest open source project using Python. He also regularly builds and contribute to distributed applications and is responsible for several widely used Python libraries – &lt;em&gt;Cotyledon&lt;/em&gt;, &lt;em&gt;oslo.messaging&lt;/em&gt;, etc.&lt;/p&gt;
&lt;p&gt;In the book, Mehdi gives excellent tips on how to build distributed daemons.&lt;/p&gt;
&lt;h2&gt;Naoki Inada&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/ninada.png&quot; alt=&quot;Naoki Inada portrait&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Naoki is a Japanese software engineer, who happens to also be one of the CPython developers. He worked on several significant features in CPython, such as &lt;em&gt;asyncio&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;You&apos;ll be able to read Naoki opinion on Python and other programming languages when it comes to asynchronous workflows.&lt;/p&gt;
&lt;h2&gt;Chris Dent&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/cdent.png&quot; alt=&quot;Chris Dent portrait&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Chris Dent has been using Python for more than 15 years now and is an expert on WSGI. He has an extensive knowledge about REST API – he is one of the early organizers of the &lt;a href=&quot;https://specs.openstack.org/openstack/api-wg/&quot;&gt;OpenStack API working group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Chris has, among other things, created Gabbi, a fabulous Python testing tool for. In &lt;em&gt;Scaling Python&lt;/em&gt;, he provides best practice on building REST API.&lt;/p&gt;
&lt;h2&gt;Joshua Harlow&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/harlowja.png&quot; alt=&quot;Joshua Harlow portrait&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Joshua is a highly experienced engineer in distributed systems. He maintains a few Python libraries, such as &lt;em&gt;Kazoo&lt;/em&gt; (ZooKeeper client) or &lt;em&gt;TaskFlow&lt;/em&gt; (distributed tasks).&lt;/p&gt;
&lt;p&gt;In the book, Joshua lays down principles that make Python application resilient and fault tolerant.&lt;/p&gt;
&lt;h2&gt;Alexys Jacob-Monier&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/ajacobmonier.png&quot; alt=&quot;Alexys Jacob-Monier portrait&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Alexys is the CTO of 1000mercis and is part of the open-source software community for a few years now. He regularly gives speeches at Python conferences and talks about how to leverage Python when distributing applications.&lt;/p&gt;
&lt;p&gt;Alexys talks about advanced techniques, e.g. using consistent hash rings, and how they should be applied.&lt;/p&gt;
&lt;h3&gt;Victor Stinner&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/vstinner.png&quot; alt=&quot;Victor Stinner portrait&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Victor is a long time CPython core developer, working on the language itself for several years now. He is well known in the community for working on making CPython faster and leads several performance-oriented projects.&lt;/p&gt;
&lt;p&gt;In &lt;em&gt;Scaling Python&lt;/em&gt;, Victor talks about optimizations, profiling, and performance when using Python, and how to make the right decisions.&lt;/p&gt;
&lt;h3&gt;Jason Myers&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/jmyers.png&quot; alt=&quot;Jason Myers portrait&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Jason is a Python developer and an author – he wrote an entire book on SQLAlchemy, the famous Python SQL library. He worked on cloud computing platforms, as a Web developer, and as a data engineer.&lt;/p&gt;
&lt;p&gt;In the book, we discuss with Jason about caching and RDBMS usage.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;https://scaling-python.com&quot;&gt;&lt;img src=&quot;https://scaling-python.com/img/the-hacker-guide-to-scaling-python.png&quot; alt=&quot;Cover of The Hacker&apos;s Guide to Scaling Python&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It was marvelous to have a chat with all those developers and pick their brain about different subjects. These contents broaden the scope and expand the view of the themes covered through the chapters. I can&apos;t thank them all enough!&lt;/p&gt;
&lt;p&gt;If you want to be informed of the release of the book, subscribe in the following form! You&apos;ll be the first to be notified and to enjoy an exclusive offer. ;-)&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>Mastering PostgreSQL</title><link>https://julien.danjou.info/blog/mastering-postgresql/</link><guid isPermaLink="true">https://julien.danjou.info/blog/mastering-postgresql/</guid><description>A few months ago, my friend Dimitri Fontaine and I discussed writing books and sharing our knowledge.</description><pubDate>Tue, 07 Nov 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few months ago, my friend &lt;a href=&quot;http://tapoueh.org&quot;&gt;Dimitri Fontaine&lt;/a&gt; and I discussed writing books and sharing our knowledge. If you do not know Dimitri yet, he is an old-time PostgreSQL Major Contributor – meaning he writes code for the PostgreSQL software itself!&lt;/p&gt;
&lt;p&gt;I interviewed Dimitri a few years ago in &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;, where he shared his insight about writing proper Python application code with relational database management system.&lt;/p&gt;
&lt;p&gt;All of this gave Dimitri the idea of writing his own book about PostgreSQL. And he released his book this week! If like me, you can&apos;t wait to read it, just scroll down below and grab a package with a &lt;strong&gt;15% discount&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To celebrate the event, I went ahead and decided to ask him a few questions.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/dim-rounded.png&quot; alt=&quot;Dimitri Fontaine portrait&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;Hey Dimitri! So what made you start writing this book in the first place?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Dimitri&lt;/em&gt;: As a PostgreSQL consultant, I&apos;ve met with many developers for whom SQL just didn&apos;t click. They then tend to consider SQL much as they would consider HTML: some string you need to build dynamically then send over to an external part of the system, either the browser or the database server.&lt;/p&gt;
&lt;p&gt;As soon as you start on this path, SQL is more and more of a problem in your daily life and developer workflow. It doesn&apos;t integrate well with the usual testing and continuous integration tools, not to mention it&apos;s hard to review (as in code review) and hard to maintain.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;At the end of the day, when using a relational database system, you have to&lt;br /&gt;
know your SQL.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As a developer, you need to be fluent in SQL and master window functions, common table expressions, recursive queries, time zone handling and advanced string and regexp processing functions, transaction behaviors and also how to build a query result set in JSON. And so much more.&lt;/p&gt;
&lt;p&gt;For most developers, it&apos;s a daunting task. Just too much to learn when they have so many other things to take care of. So many lines of code to write to implement that new product idea. Well, as Dijkstra put it, lines of code are “spent” on writing a new feature. When you master SQL, you spend much less of those lines of code.&lt;/p&gt;
&lt;p&gt;So I wrote &lt;strong&gt;Mastering PostgreSQL in Application Development&lt;/strong&gt; to teach SQL to developers. Focusing on real use cases and authentic data set, so that it&apos;s easier to grasp all those advanced features. The book also addresses the tooling you need to integrate SQL as another programming language with a decent worfklow, from code review to unit testing, including regression testing and production debugging.&lt;/p&gt;
&lt;h4&gt;Who should read this book? What are the prerequisites to get the most of it?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Dimitri&lt;/em&gt;: The pre-requisites are quite easy to reach.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you ever deployed an application that embeds SQL queries and talks to a&lt;br /&gt;
database server, you&apos;re in the target audience, the book is for you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you&apos;ve never used PostgreSQL before, reading &lt;strong&gt;Mastering PostgreSQL in Application Development&lt;/strong&gt; may convince you to have a look at that awesome piece of technology. My bet is on you switching to PostgreSQL and finding it much better at helping you in your daily work and challenges.&lt;/p&gt;
&lt;p&gt;Even if you&apos;ve been using MySQL all your life, you will learn about standard SQL features and how to use them in a way that applies to more than just PostgreSQL, so the book is going to help you in your daily life.&lt;/p&gt;
&lt;h4&gt;What&apos;s your next adventure now that this book is out?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Dimitri&lt;/em&gt;: There are more things that I want to do that a lifetime allows, and I am in the process of choosing what is going to be my next adventure. I feel so lucky to be able to have that problem to solve… and it still isn&apos;t the easiest one for me.&lt;/p&gt;
&lt;p&gt;What I can tell you is that I have much more PostgreSQL knowledge to share after having been using, promoting, and contributing to this database server technology for about 20 years now. So if that first book sells well, I will get back to filling empty pages and deliver more contents to help developers making the best of SQL, to help developers on their road to Mastering PostgreSQL!&lt;/p&gt;
&lt;h4&gt;Thanks Dimitri!&lt;/h4&gt;
&lt;p&gt;I&apos;ve just read the book and found it fantastic. It contains tons of tips on how to use PostgreSQL correctly, and I discovered SQL features I had no clue about. The book uses real data that you can fetch and play with. It provides the data and a Docker container with everything included so you can edit the query yourself and try it out. There is no better way to learn things than to play with the examples that are included, in just a few clicks!&lt;/p&gt;
&lt;p&gt;The book also features a few interviews with SQL experts from the PostgreSQL community and from the development community, which gives great insight about how to use the software.&lt;/p&gt;
&lt;p&gt;Dimitri is offering &lt;strong&gt;15% off for my readers&lt;/strong&gt; during the next 48 hours for any of the edition of the book. Just use the &lt;strong&gt;PYTHON-LOVES-POSTGRESQL&lt;/strong&gt; coupon code in any of the following package:&lt;/p&gt;
&lt;p&gt;.product img { max-width: 100%; margin-top: 10px; } .col-sm-1 { width: 8.33333333%; float: left; } .col-sm-3 { width: 25%; float: left; } .col-sm-9 { width: 75%; float: left; } .col-sm-11 { width: 91.66666667%; float: left; /* should be on the div not here but well.. */ padding-left: 30px; padding-bottom: 20px; } .row { clear: both; } .btn.btn-default { background-color: #e6940e; color: #FFF; line-height: 46px; height: 50px; font-size: 19px; cursor: pointer; text-align: center; border-radius: 5px; border: 3px solid #e6940e; vertical-align: middle; display: inline-block; padding: 0 30px; position: relative; outline: none !important; transition: color .3s ease,background .3s ease,border-color .3s ease,opacity .3s ease; box-shadow: none; }&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/szoX&quot;&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/MasteringPostgreSQLinAppDev-Cover.png&quot; alt=&quot;Mastering PostgreSQL – Enterprise Edition&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/szoX&quot;&gt;&lt;/a&gt;Mastering PostgreSQL – Enterprise Edition&lt;/h3&gt;
&lt;p&gt;$179 &lt;strong&gt;$152&lt;/strong&gt;&lt;br /&gt;
with coupon code &lt;strong&gt;PYTHON-LOVES-POSTGRESQL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Enterprise Edition includes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/ebook_reader.png&quot; alt=&quot;E-book reader icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The book in PDF, EPUB and MOBI formats.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/icon_mic.png&quot; alt=&quot;Microphone icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Interviews from industry veterans who began building web application in the previous century. They&apos;ve been there and have opinions to share about how to approach SQL.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/icon_database.png&quot; alt=&quot;Database icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The PostgreSQL database dump that you need to run the queries against, with a script to restore it easily. The database includes all the 12 datasets used in the book.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/docker-logo.png&quot; alt=&quot;Docker logo&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A Docker container image of an already loaded PostgreSQL database with the whole 12 datasets in 56 tables, and the 265 SQL queries each in their own .sql file and a Web-based application for easily running and editing the SQL queries.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/certificate.png&quot; alt=&quot;Certificate icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Licence for you to share the book and the Docker set-up with up to 50 people, including you. That&apos;s everything you need for your whole team to master SQL!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/szoX&quot;&gt;Buy the Enterprise Edition&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/koprL&quot;&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/MasteringPostgreSQLinAppDev-Cover.png&quot; alt=&quot;Mastering PostgreSQL – Full Edition&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/koprL&quot;&gt;&lt;/a&gt;Mastering PostgreSQL – Full Edition&lt;/h3&gt;
&lt;p&gt;$89 &lt;strong&gt;$75&lt;/strong&gt;&lt;br /&gt;
with coupon code &lt;strong&gt;PYTHON-LOVES-POSTGRESQL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Full Edition includes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/ebook_reader.png&quot; alt=&quot;E-book reader icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The book in PDF, EPUB and MOBI formats.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/icon_mic.png&quot; alt=&quot;Microphone icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Interviews from industry veterans who began building web application in the previous century. They&apos;ve been there and have opinions to share about how to approach SQL.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/icon_database.png&quot; alt=&quot;Database icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The PostgreSQL database dump that you need to run the queries against, with a script to restore it easily. The database includes all the 12 datasets used in the book.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/koprL&quot;&gt;Buy the Full Edition&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/WhNVv&quot;&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/MasteringPostgreSQLinAppDev-Cover.png&quot; alt=&quot;Mastering PostgreSQL&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/WhNVv&quot;&gt;&lt;/a&gt;Mastering PostgreSQL&lt;/h3&gt;
&lt;p&gt;$39 &lt;strong&gt;$33&lt;/strong&gt;&lt;br /&gt;
with coupon code &lt;strong&gt;PYTHON-LOVES-POSTGRESQL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Standard Edition includes:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/ebook_reader.png&quot; alt=&quot;E-book reader icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The book in PDF, EPUB and MOBI formats.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/icon_mic.png&quot; alt=&quot;Microphone icon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Interviews from industry veterans who began building web application in the previous century. They’ve been there and have opinions to share about how to approach SQL.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gumroad.com/a/623817843/WhNVv&quot;&gt;Buy the book&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;If you have any question, feel free to reach &lt;a href=&quot;mailto:dim@tapoueh.org&quot;&gt;Dimitri&lt;/a&gt; directly and he will be happy to reply. Or write in the comment section below!&lt;/p&gt;
&lt;p&gt;And don&apos;t worry: if the book is not what you expect it to be and has no value to you, then just say so and Dimitri will refund you, no questions asked.&lt;/p&gt;
</content:encoded><category>books</category><category>databases</category></item><item><title>My interview with Cool Python Codes</title><link>https://julien.danjou.info/blog/interview-coolpythoncodes/</link><guid isPermaLink="true">https://julien.danjou.info/blog/interview-coolpythoncodes/</guid><description>A few days ago, I&apos;ve recently been contacted by Godson Rapture from Cool Python codes to answer a few questions about what I work on in open source.</description><pubDate>Thu, 05 Oct 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few days ago, I&apos;ve recently been contacted by Godson Rapture from &lt;a href=&quot;http://coolpythoncodes.com/&quot;&gt;Cool Python codes&lt;/a&gt; to answer a few questions about what I work on in open source. Godson regularly interview developers and I invite you to check out his website!&lt;/p&gt;
&lt;p&gt;Here&apos;s a copy of &lt;a href=&quot;http://coolpythoncodes.com/julien-danjou/&quot;&gt;my original interview&lt;/a&gt;. Enjoy!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Good day, Julien Danjou, welcome to Cool Python Codes. Thanks for taking your precious time to be here.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You’re welcome!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Could you kindly tell us about yourself like your full name, hobbies, nationality, education, and experience in programming?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sure. I’m Julien Danjou, I’m French and live in Paris, France. I studied Computer science for 5 years around 15 years ago, and continued my career in that field since then, specializing in open source projects.&lt;/p&gt;
&lt;p&gt;Those last years, I’ve been working as a software engineer at Red Hat. I’ve spent the last 10 years working with the Python programming language. Now I work on the Gnocchi project which is a time series database.&lt;/p&gt;
&lt;p&gt;When I’m not coding, I enjoy running half-marathon and playing FPS games.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/pyconfr-2017-jd.jpg&quot; alt=&quot;Julien Danjou at PyCon France 2017&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Can you narrate your first programming experience and what got you to start learning to program?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I started programming around 2001, and my first serious programs were in Perl. I was contributing to a hosting platform for free software named VHFFS. It was a free software project itself, and I enjoyed being able to learn from other more experienced developers and being able to contribute back to it. That’s what got me stuck into that world of open source projects.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Which programming language do you know and which is your favorite?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I know quite a few, I’ve been doing serious programming in Perl, C, Lua, Common Lisp, Emacs Lisp and Python.&lt;/p&gt;
&lt;p&gt;Obviously, my favorite is Common Lisp, but I was never able to use it for any serious project, for various reasons. So I spend most of my time hacking with Python, which I really enjoy as it is close to Lisp, in some ways. I see it as a small subset of Lisp.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What inspired you to venture into the world of programming and drove you to learn a handful of programming languages?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It was mostly scratching my own itches when I started. Each time I saw something I wanted to do or a feature I wanted in an existing software, I learned what I needed to get going and get it working.&lt;/p&gt;
&lt;p&gt;I studied C and Lua while writing awesome- the window manager that I created 10 years ago and used for a while. I learned Emacs Lisp while writing extensions that I wanted to see in Emacs, etc. It’s the best way to start.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is your blog about?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My blog is a platform where I write about what I work on most of the time. Nowadays, it’s mostly about Python and the main project I contribute to,&lt;br /&gt;
Gnocchi.&lt;/p&gt;
&lt;p&gt;When writing about Gnocchi, I usually try to explain what part of the project I worked on, what new features we achieved, etc.&lt;/p&gt;
&lt;p&gt;On Python, I try to share solutions to common problems I encountered or identified while doing e.g. code reviews. Or presenting a new library I created!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tell us more about your book, The Hacker’s Guide to Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s a compilation of everything I learned those last years building large Python applications. I spent the last 6 years developing on a large code base with thousands of other developers.&lt;/p&gt;
&lt;p&gt;I’ve reviewed tons of code and identified the biggest issues, mistakes, and bad practice that developers tend to have. I decided to compile that in a guide, helping developers that played a bit with Python to learn the stages to get really productive with Python.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;OpenStack is the biggest open source project in Python, Can you tell us more about OpenStack?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;OpenStack is a cloud computing platform, started 7 years ago now. Its goal is to provide a programmatic platform to manage your infrastructure while being open source and avoiding vendor lock-in.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Who uses OpenStack? Is it for programmers, website owners?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s used by a lot of different organizations – not really by individuals. It’s a big piece of software. You can find it in some famous public cloud providers (Dreamhost, Rackspace…), and also as a private cloud in a lot of different organizations, from Bloomberg to eBay or the CERN in Switzerland, a big OpenStack user. Tons of telecom providers also leverages OpenStack for their own internal infrastructure.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Have you participated in any OpenStack conference? What did you speak on if&lt;br /&gt;
you did?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve attended the last 9 OpenStack summits and a few other OpenStack events around the world. I’ve been engaged in the upstream community for the last 6 years now.&lt;/p&gt;
&lt;p&gt;My area of expertise is telemetry, the stack of software that is in charge of collecting and storing metrics from the various OpenStack components. This is what I regularly talk about during those events.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How can one join the OpenStack community?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There’s an entire documentation about that, called the &lt;a href=&quot;https://docs.openstack.org/infra/manual/developers.html&quot;&gt;Developer’s Guide&lt;/a&gt;. It explains how to setup your environment to send patches, how to join the community using the mailing-lists or IRC.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What makes your book, &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker’s Guide to Python&lt;/a&gt; stand out from other Python books? Also, who exactly did you write this book for?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wrote the book that I always wanted to read about Python, but never found. It’s not a book for people that want to learn Python from scratch. It’s a great guide for those who know the language but don’t know the details that experienced developers know and that make the difference. The best practice, the elegant solutions to common problems, etc. That’s why it also includes interviews with prominent Python developers, so they can share their advice on different areas.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How can someone get your book?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve decided to self-publish my book, so he does not have an editor like you can be used to see. The best place to get it is online at where you can pick the format you want, electronic or paper.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What do you mean when you say you hack with Python?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Unfortunately, most people refer to hacking as the activity of some bad guys trying to get access to whatever they’re not supposed to see. In the book title, I mean “hacking” as the elegant way of writing code and making things worse smoothly even when you were not expecting to make it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You mentioned earlier that Gnocchi is a time series database. Can you please be more elaborate about Gnocchi? Is there also any documentation about Gnocchi?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So Gnocchi is a project I started a few years ago to store time series at large scale. Timeseries are basically a series of tuple composed of a timestamp and a value.&lt;/p&gt;
&lt;p&gt;Imagine you wanted to store the temperature of all the rooms of the world at any point of time. You’d need a dedicated database for that with the right data structure. This is what Gnocchi does: it provides this data structure storage at very, very large scale.&lt;/p&gt;
&lt;p&gt;The primary use case is infrastructure monitoring, so most people use it to store tons of metrics about their hardware, software, etc. It’s fully documented on &lt;a href=&quot;http://gnocchi.xyz&quot;&gt;its website&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How can a programmer without much experience contribute to open source projects?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The best way to start is to try to fix something that irritates you in some way. It might be a bug, it might be a missing feature. Start small. Don’t try big things first or you could be discouraged.&lt;/p&gt;
&lt;p&gt;Never stop.&lt;/p&gt;
&lt;p&gt;Also, don’t plunge right away in the community and start poking random people or spam them with questions. Do your homework, and listen to the community for a while to get a sense of how things are going. That can be joining IRC and lurking or following the mailing lists for example.&lt;/p&gt;
&lt;p&gt;Big open source communities dedicate programs to help you become engaged. It might be worth a try. Generic programs like Outreachy or Google Summer of Code are a great way to start if you don’t feel confident enough to jump by your own means in a community.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Just out of curiosity, do you write code in French?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Never ever. I think it’s acceptable to write in your language if you are sure that your code will never be open sourced and that your whole team is talking in that language, no matter what – but it’s a ballsy assumption, clearly.&lt;/p&gt;
&lt;p&gt;Truth is that if you do open source, English is the standard, so go with it. Be sad if you want, but please be pragmatic.&lt;/p&gt;
&lt;p&gt;I’ve seen projects being open sourced by companies where all the code source comments were in Korean. It was impossible for any non-Korean people to get a glance of what the code and the project was doing, so it just failed and disappeared.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How does a team of programmers handle bugs in a large open source project?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wish there was some magic recipe, but I don’t think it’s the case. What you want is to have a place where your users can feel safe reporting bugs. Include a template so they don’t forget any details: how to reproduce the bugs, what they expected, etc. The worst thing is to have users reporting “That does not work.” with no details. It’s a waste of time.&lt;/p&gt;
&lt;p&gt;What tool to use to log all of that really depends on the team size and culture.&lt;/p&gt;
&lt;p&gt;Once that works, the actual fixing of bug doesn’t follow any rule. Most developers fix the bug they encounter or the ones that are the most critical for users. Smaller problems might not be fixed for a long time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Can you tell us about the new book you are working on and when do we expect&lt;br /&gt;
to get it?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That new book is entitled &lt;a href=&quot;https://scaling-python.com&quot;&gt;“Scaling Python”&lt;/a&gt; and it provides insight into how to build largely scalable and distributed applications using Python.&lt;/p&gt;
&lt;p&gt;It is also based on my experience in building this kind of software during the past years. This book also includes interviews of great Python hackers who work on scalable system or know a thing or two about writing applications for performance – an important point to have scalable applications.&lt;/p&gt;
&lt;p&gt;The book is in its final stage now, and it should be out at the beginning of 2018.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How can someone get in contact with you?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’m reachable at &lt;a href=&quot;mailto:julien@danjou.info&quot;&gt;julien@danjou.info&lt;/a&gt; by email or via Twitter, &lt;a href=&quot;https://twitter.com/juldanjou&quot;&gt;@juldanjou&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>career</category><category>python</category><category>books</category><category>gnocchi</category><category>openstack</category></item><item><title>Scaling Python is on its way</title><link>https://julien.danjou.info/blog/announcing-scaling-python/</link><guid isPermaLink="true">https://julien.danjou.info/blog/announcing-scaling-python/</guid><description>My day-to-day activities are still evolving around the Python programming language, as I continue working on the OpenStack project as part of my job at Red Hat.</description><pubDate>Mon, 16 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My day-to-day activities are still evolving around the &lt;a href=&quot;http://python.org&quot;&gt;Python&lt;/a&gt; programming language, as I continue working on the &lt;a href=&quot;http://openstack.org&quot;&gt;OpenStack&lt;/a&gt; project as part of my job at &lt;a href=&quot;http://redhat.com&quot;&gt;Red Hat&lt;/a&gt;. OpenStack is still the biggest Python project out there, and attract a lot of Python hackers.&lt;/p&gt;
&lt;p&gt;Those last few years, however, things have taken a different turn for me when I made the choice with my team to rework the telemetry stack architecture. We&lt;br /&gt;
decided to make a point of making it scale way beyond what has been done in the project so far.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://scaling-python.com&quot;&gt;&lt;img src=&quot;https://scaling-python.com/img/the-hacker-guide-to-scaling-python.png&quot; alt=&quot;Cover of The Hacker&apos;s Guide to Scaling Python&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I started to dig into a lot of different fields around Python. Topics you don&apos;t often look at when writing a simple and straight-forward application. It turns out that writing scalable applications in Python is not impossible, nor that difficult. There are a few hiccups to avoid, and various tools that can help, but it really is possible – without switching to another whole language, framework, or exotic tool set.&lt;/p&gt;
&lt;p&gt;Working on those projects seemed to me like a good opportunity to share with the rest of the world what I learned. Therefore, I decided to share my most recent knowledge addition around distributed and scalable Python application in a new book, entitled &lt;a href=&quot;https://scaling-python.com&quot;&gt;The Hacker&apos;s Guide to Scaling Python&lt;/a&gt; (or &lt;em&gt;Scaling Python&lt;/em&gt;, in short). The book should be released in a few months – fingers crossed.&lt;/p&gt;
&lt;p&gt;And as the book is still a work-in-progress, I&apos;ll be happy to hear any remark, subject, interrogation or topic idea you might have or any particular angle you would like me to take in this book (reply in the &lt;a href=&quot;#disqus_thread&quot;&gt;comments section&lt;/a&gt; or shoot me an &lt;a href=&quot;mailto:julien@danjou.info&quot;&gt;email&lt;/a&gt;). And if you&apos;d like to get be kept updated on this book advancement, you can subscribe in the following form or from the &lt;a href=&quot;https://scaling-python.com&quot;&gt;book homepage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The adventure of working on my previous book, &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;, has been so tremendous and the feedback so great, that I&apos;m looking forward releasing this new book later this year!&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>AsciiDoc book toolchain released</title><link>https://julien.danjou.info/blog/asciidoc-book-toolchain-released/</link><guid isPermaLink="true">https://julien.danjou.info/blog/asciidoc-book-toolchain-released/</guid><description>Writing a book is a big undertaking. You have to think about what you will actually write, the content, its organization, the examples you want to show, illustrations, etc.  When publishing with the h</description><pubDate>Tue, 20 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Writing a book is a big undertaking. You have to think about what you will actually write, the content, its organization, the examples you want to show, illustrations, etc.&lt;/p&gt;
&lt;p&gt;When publishing with the help of a regular editor, your job stops there at writing – and that&apos;s already a big and hard enough task. Your editor will handle the publishing process, leaving you free of the printing task. Though they might have their own set of requirements, such as making you work with a word processing tool (think LibreOffice Writer or Microsoft Word).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/kindle-thgtp-real.jpg&quot; alt=&quot;kindle-thgtp-real&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When you self-publish like I did with &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;, none of that happens. You have to deal yourself with getting your work out there, released and available in a viable format for your readership.&lt;/p&gt;
&lt;p&gt;Most of the time, you need to render your book in different formats. You will have to make sure it works correctly on different devices and that the formatting and content disposition is correct.&lt;/p&gt;
&lt;p&gt;I knew exactly what I wanted exactly when writing my book. I wanted to have the book published in at least PDF (for computer reading) and ePub (for e-readers). I also knew, as an Emacs user, that I did not want to spend hours writing a book in LibreOffice. It&apos;s not for me.&lt;/p&gt;
&lt;p&gt;When I wrote about the &lt;a href=&quot;https://julien.danjou.info/blog/2014/making-of-the-hacker-guide-to-python&quot;&gt;making of The Hacker&apos;s Guide to Python&lt;/a&gt;, I briefly mentioned which tools I used to build the book and that I picked &lt;a href=&quot;http://www.methods.co.nz/asciidoc/&quot;&gt;AsciiDoc&lt;/a&gt; as the input format. It makes it easy to write your book inside your favorite text editor, and AsciiDoc has plenty of output format. Customizing these formats to my liking and requirements was another challenge.&lt;/p&gt;
&lt;p&gt;It took me hours and hours of work to have all the nitty-gritty details right. Today I am happy to announce that I can save you a few hours of work if you also want to publish a book.&lt;/p&gt;
&lt;p&gt;I&apos;ve published a new project on &lt;a href=&quot;https://github.com/jd&quot;&gt;my GitHub&lt;/a&gt; called &lt;a href=&quot;https://github.com/jd/asciidoc-book-toolchain&quot;&gt;asciidoc-book-toolchain&lt;/a&gt;. It is the actual toolchain that I use to build &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;. It should be easy to use and is able to render any book in HTML, PDF, PDF (printable 6&quot;×9&quot; format), ePub and MOBI.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/asciidoc-book-toolchain.dot.png&quot; alt=&quot;asciidoc-book-toolchain.dot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So feel free to use it, hack it, pull-request it, or whatever. You don&apos;t have any good excuse to not write a book now! 😇 And if you want to self-publish a book and need some help getting started, let me know, I would be glad giving you a few hints!&lt;/p&gt;
</content:encoded><category>books</category></item><item><title>The Hacker&apos;s Guide to Python 3rd edition is out</title><link>https://julien.danjou.info/blog/the-hacker-guide-to-python-third-edition/</link><guid isPermaLink="true">https://julien.danjou.info/blog/the-hacker-guide-to-python-third-edition/</guid><description>Exactly a year ago, I released the second edition of my book The Hacker&apos;s Guide to Python . One more time, it has been a wonderful release and I received a lot of amazing feedback from my readers all</description><pubDate>Wed, 04 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Exactly a year ago, I &lt;a href=&quot;https://julien.danjou.info/blog/the-hacker-guide-to-python-second-edition&quot;&gt;released the second edition of my book The Hacker&apos;s Guide to Python&lt;/a&gt;. One more time, it has been a wonderful release and I received a lot of amazing feedback from my readers all over this year.&lt;/p&gt;
&lt;p&gt;Since then, the book has been &lt;strong&gt;translated into 2 languages&lt;/strong&gt;: Korean and Chinese. A few thousands of copies has been distributed there, and I&apos;m very glad the book has been such a success. I&apos;m looking into getting it translated into more languages – don&apos;t hesitate to get in touch with me if you have any interesting connections in your country.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/thgtp-korean.jpg&quot; alt=&quot;thgtp-korean&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For those who still don&apos;t know about this guide, that I first released a couple of years ago, let me sum up by saying it&apos;s &lt;strong&gt;the Python book that I always wanted to read&lt;/strong&gt;, never found, and finally wrote. It does not cover the basics of the language, but deals with concrete problems, best practice and some of the languages internals.&lt;/p&gt;
&lt;p&gt;It includes content about unit testing, methods, decorators, AST, distribution, documentation, functional programming, scaling, Python 3, etc. All of that made it pretty &lt;strong&gt;successful&lt;/strong&gt;! It comes with awesome &lt;strong&gt;9 interviews&lt;/strong&gt; that I realized with some of my fellow experienced Python hackers and developers!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/thgtp-v3-photo-stack.jpg&quot; alt=&quot;thgtp-v3-photo-stack&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In that &lt;strong&gt;3rd edition&lt;/strong&gt;, there is, like in each new edition, a few fixes on code, typos, etc. I guess books need a lot of time to become perfect! I also updated some of the content: things evolved a bit since I last revised the content a year ago. Finally, a new chapter about timestamps handling and timezone has made his appearance too.&lt;/p&gt;
&lt;p&gt;If you didn&apos;t get the book yet, it&apos;s time to go &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;check it out&lt;/a&gt; and use the coupon &lt;strong&gt;THGTP3LAUNCH&lt;/strong&gt; to get 20 % off during the next 48 hours!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/the-hacker-guide-to-python-darken-v2-1.png&quot; alt=&quot;the-hacker-guide-to-python-darken-v2-1&quot; /&gt;&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>My interview in le Journal du Hacker</title><link>https://julien.danjou.info/blog/interview-journal-du-hacker/</link><guid isPermaLink="true">https://julien.danjou.info/blog/interview-journal-du-hacker/</guid><description>Le Journal du Hacker interviewed me about my work on OpenStack, my job at Red Hat, and my self-published book The Hacker&apos;s Guide to Python.</description><pubDate>Thu, 17 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few days ago, the French equivalent of &lt;a href=&quot;https://news.ycombinator.com/&quot;&gt;Hacker News&lt;/a&gt;, called &quot;&lt;a href=&quot;https://www.journalduhacker.net/&quot;&gt;Le Journal du Hacker&lt;/a&gt;&quot;, &lt;a href=&quot;https://www.journalduhacker.net/s/l5qktw/journal_du_hacker_entretien_avec_julien_danjou_d_veloppeur_openstack&quot;&gt;interviewed me&lt;/a&gt; about my work on &lt;a href=&quot;http://openstack.org&quot;&gt;OpenStack&lt;/a&gt;, my job at &lt;a href=&quot;http://redhat.com&quot;&gt;Red Hat&lt;/a&gt; and my self-published book &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;. I&apos;ve spent some time translating it into English so you can read it if you don&apos;t understand French! I hope you&apos;ll enjoy it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Julien, and thanks for participating in this interview for the Journal du Hacker. For our readers who don&apos;t know you, can you introduce you briefly?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You&apos;re welcome! My name is Julien, I&apos;m 31 years old, and I live in Paris. I now have been developing free software for around fifteen years. I had the pleasure to work (among other things) on &lt;a href=&quot;http://debian.org&quot;&gt;Debian&lt;/a&gt;, &lt;a href=&quot;https://www.gnu.org/software/emacs/&quot;&gt;Emacs&lt;/a&gt; and &lt;a href=&quot;http://awesome.naquadah.org&quot;&gt;awesome&lt;/a&gt; these last years, and more recently on OpenStack. Since a few months now, I work at Red Hat, as a Principal Software Engineer on &lt;a href=&quot;http://opensack.org&quot;&gt;OpenStack&lt;/a&gt;. I am in charge of doing upstream development for that cloud-computing platform, mainly around the Ceilometer, Aodh and Gnocchi projects.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Being myself a system architect, I follow your work in &lt;a href=&quot;http://openstack.org&quot;&gt;OpenStack&lt;/a&gt; since a while. It&apos;s uncommon to have the point of view of someone as implied as you are. Can you give us a summary of the state of the project, and then detail your activities in this project?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href=&quot;http://openstack.org&quot;&gt;OpenStack&lt;/a&gt; project has grown and changed a lot since I started 4 years ago. It started as a few projects providing the basics, like &lt;a href=&quot;https://launchpad.net/nova&quot;&gt;Nova&lt;/a&gt; (compute), &lt;a href=&quot;https://launchpad.net/swift&quot;&gt;Swift&lt;/a&gt; (object storage), &lt;a href=&quot;https://launchpad.net/cinder&quot;&gt;Cinder&lt;/a&gt; (volume), &lt;a href=&quot;https://launchpad.net/keystone&quot;&gt;Keystone&lt;/a&gt; (identity) or even &lt;a href=&quot;https://launchpad.net/neutron&quot;&gt;Neutron&lt;/a&gt; (network) who are basis for a cloud-computing platform, and finally became composed of a lot more projects.&lt;/p&gt;
&lt;p&gt;For a while, the inclusion of projects was the subject of a strict review from the technical committee. But since a few months, the rules have been relaxed, and we see a lot more projects connected to cloud-computing &lt;a href=&quot;http://governance.openstack.org/reference/projects/&quot;&gt;joining us&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As far as I&apos;m concerned, I&apos;ve started with a few others people the &lt;a href=&quot;http://governance.openstack.org/reference/projects/ceilometer.html&quot;&gt;Ceilometer&lt;/a&gt; project in 2012, devoted to handling metrics of OpenStack platforms. Our goal is to be able to collect all the metrics and record them to analyze them later. We also have a module providing the ability to trigger actions on threshold crossing (alarm).&lt;/p&gt;
&lt;p&gt;The project grew in a monolithic way, and in a linear way for the number of contributors, during the first two years. I was the PTL (Project Technical Leader) for a year. This leader position asks for a lot of time for bureaucratic things and people management, so I decided to leave my spot in order to be able to spend more time solving the technical challenges that Ceilometer offered.&lt;/p&gt;
&lt;p&gt;I&apos;ve started the &lt;a href=&quot;https://launchpad.net/gnocchi&quot;&gt;Gnocchi&lt;/a&gt; project in 2014. The first stable version (1.0.0) was released a few months ago. It&apos;s a timeseries database offering a REST API and a strong ability to scale. It was a necessary development to solve the problems tied to the large amount of metrics created by a cloud-computing platform, where tens of thousands of virtual machines have to be metered as often as possible. This project works as a standalone deployment or with the rest of OpenStack.&lt;/p&gt;
&lt;p&gt;More recently, I&apos;ve started &lt;a href=&quot;https://launchpad.net/aodh&quot;&gt;Aodh&lt;/a&gt;, the result of moving out the code and features of Ceilometer related to threshold action triggering (alarming). That&apos;s the logical suite to what we started with Gnocchi. It means Ceilometer is to be split into independent modules that can work together – with or without OpenStack. It seems to me that the features provided by Ceilometer, Aodh and Gnocchi can also be interesting for operators running more classical infrastructures. That&apos;s why I&apos;ve pushed the projects into that direction, and also to have a more service-oriented architecture (&lt;a href=&quot;https://fr.wikipedia.org/wiki/Architecture_orient%C3%A9e_services&quot;&gt;SOA&lt;/a&gt;).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&apos;d like to stop for a moment on Ceilometer. I think that this solution was very expected, especially by the cloud-computing providers using OpenStack for billing resources sold to their customers. I remember reading a blog post where you were talking about the high-speed construction of this brick, and features that were not supposed to be there. Nowadays, with Gnocchi and Aodh, what is the quality of the brick Ceilometer and the programs it relies on?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Indeed, one of the first use-case for Ceilometer was tied to the ability to get metrics to feed a billing tool. That&apos;s now a reached goal since we have billing tools for OpenStack using Ceilometer, such as &lt;a href=&quot;https://wiki.openstack.org/wiki/CloudKitty&quot;&gt;CloudKitty&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, other use-cases appeared rapidly, such as the ability to trigger alarms. This feature was necessary, for example, to implement the auto scaling feature that &lt;a href=&quot;http://launchpad.net/heat&quot;&gt;Heat&lt;/a&gt; needed. At the time, for technical and political reasons, it was not possible to implement this feature in a new project, and the functionality ended up in Ceilometer, since it was using the metrics collected and stored by Ceilometer itself.&lt;/p&gt;
&lt;p&gt;Though, like I said, this feature is now in its own project, Aodh. The alarm feature is used since a few cycles in production, and the Aodh project brings new features on the table. It allows to trigger threshold actions and is one of the few solutions able to work at high scale with several thousands of alarms.&lt;br /&gt;
It&apos;s impossible to make Nagios run with millions of instances to fetch metrics and triggers alarms. Ceilometer and Aodh can do that easily on a few tens of nodes automatically.&lt;/p&gt;
&lt;p&gt;On the other side, Ceilometer has been for a long time painted as slow and complicated to use, because its metrics storage system was by default using &lt;a href=&quot;https://www.mongodb.org/&quot;&gt;MongoDB&lt;/a&gt;. Clearly, the data structure model picked was not optimal for what the users were doing with the data.&lt;/p&gt;
&lt;p&gt;That&apos;s why I started Gnocchi last year, which is perfectly designed for this use case. It allows linear access time to metrics (O(1) complexity) and fast access time to the resources data via an index.&lt;/p&gt;
&lt;p&gt;Today, with 3 projects having their own perimeter of features defined – and which can work together – Ceilometer, Aodh and Gnocchi finally erased the biggest problems and defects of the initial project.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To end with OpenStack, one last question. You&apos;re a &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; developer for a long time and a fervent user of software testing and &lt;a href=&quot;https://en.wikipedia.org/wiki/Test_driven_development&quot;&gt;test-driven development&lt;/a&gt;. Several of your blogs posts point how important their usage are. Can you tell us more about the usage of tests in OpenStack, and the test prerequisites to contribute to OpenStack?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don&apos;t know any project that is as tested on every layer as OpenStack is. At the start of the project, there was a vague test coverage, made of a few unit tests. For each release, a bunch of new features were provided, and you had to keep your fingers crossed to have them working. That&apos;s already almost unacceptable. But the big issue was that there was also a lot of regressions, et things that were working were not anymore. It was often corner cases that developers forgot about that stopped working.&lt;/p&gt;
&lt;p&gt;Then the project decided to change its policy and started to refuse all patches – new features or bug fix – that would not implement a minimal set of unit tests, proving the patch would work. Quickly, regressions were history, and the number of bugs largely reduced months after months.&lt;/p&gt;
&lt;p&gt;Then came the functional tests, with the &lt;a href=&quot;http://launchpad.net/tempest&quot;&gt;Tempest&lt;/a&gt; project, which runs a test battery on a complete OpenStack deployment.&lt;/p&gt;
&lt;p&gt;OpenStack now possesses a &lt;a href=&quot;http://status.openstack.org/zuul/&quot;&gt;complete test infrastructure&lt;/a&gt;, with operators hired full-time to maintain them. The developers have to write the test, and the operators maintain an architecture based on Gerrit, Zuul, and Jenkins, which runs the test battery of each project for each patch sent.&lt;/p&gt;
&lt;p&gt;Indeed, for each version of a patch sent, a full OpenStack is deployed into a virtual machine, and a battery of thousands of unit and functional tests is run to check that no regressions are possible.&lt;/p&gt;
&lt;p&gt;To contribute to OpenStack, you need to know how to write a unit test – the policy on functional tests is laxer. The tools used are standard Python tools, unittest for the framework and &lt;a href=&quot;https://pypi.python.org/pypi/tox&quot;&gt;tox&lt;/a&gt; to run a virtual environment (venv) and run them.&lt;/p&gt;
&lt;p&gt;It&apos;s also possible to use &lt;a href=&quot;http://docs.openstack.org/developer/devstack/&quot;&gt;DevStack&lt;/a&gt; to deploy an OpenStack platform on a virtual machine and run functional tests. However, since the project infrastructure also do that when a patch is submitted, it&apos;s not mandatory to do that yourself locally.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The tools and tests you write for OpenStack are written in Python, a language which is very popular today. You seem to like it more than you have to, since you wrote a book about it, &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;, that I really enjoyed. Can you explain what brought you to Python, the main strong points you attribute to this language (quickly) and how you went from developer to author?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I stumbled upon Python by chance, around 2005. I don&apos;t remember how I hear about it, but I bought a first book to discover it and started toying with that language. At that time, I didn&apos;t find any project to contribute to or to start. My first project with Python was rebuildd for Debian in 2007, a bit later.&lt;/p&gt;
&lt;p&gt;I like Python for its simplicity, its object orientation rather clean, its easiness to be deployed and its rich open source ecosystem. Once you get the basics, it&apos;s very easy to evolve and to use it for anything, because the ecosystem makes it easy to find libraries to solve any kind of problem.&lt;/p&gt;
&lt;p&gt;I became an author by chance, writing blog posts from time to time about Python. I finally realized that after a few years studying Python internals (CPython), I learned a lot of things. While writing a post about&lt;br /&gt;
&lt;a href=&quot;https://julien.danjou.info/blog/2013/guide-python-static-class-abstract-methods&quot;&gt;the differences between method types in Python&lt;/a&gt; – which is still one of the most read post on my blog – I realized that a lot of things that seemed obvious to me where not for other developers.&lt;/p&gt;
&lt;p&gt;I wrote that initial post after thousands of hours spent doing code reviews on OpenStack. I, therefore, decided to note all the developers pain points and to write a book about that. A compilation of what years of experience taught me and taught to the other developers I decided to interview in the book.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&apos;ve been very interested by the publication of your book, for the subject itself, but also the process you chose. You self-published the book, which seems very relevant nowadays. Is that a choice from the start? Did you look for an editor? Can you tell use more about that?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&apos;ve been lucky to find out about others self-published authors, such as &lt;a href=&quot;http://nathanbarry.com/&quot;&gt;Nathan Barry&lt;/a&gt; – who even wrote a book on that subject, called &lt;a href=&quot;http://nathanbarry.com/authority/&quot;&gt;Authority&lt;/a&gt;. That&apos;s what convinced me it was possible and gave me hints for that project.&lt;/p&gt;
&lt;p&gt;I&apos;ve started to write in August 2013, and I ran the firs interviews with other developers at that time. I started to write the table of contents and then filled the pages with what I knew and what I wanted to share. I manage to finish the book around January 2014. The proof-reading took more time than I expected, so the book was only released in March 2014. I wrote a &lt;a href=&quot;https://julien.danjou.info/blog/making-of-the-hacker-guide-to-python&quot;&gt;complete report&lt;/a&gt; about that on my blog, where I explain the full process in detail, from writing to launching.&lt;/p&gt;
&lt;p&gt;I did not look for editors though I&apos;ve been proposed some. The idea of self-publishing really convince me, so I decided to go on my own, and I have no regret. It&apos;s true that you have to wear two hats at the same time and handle a lot more things, but with a minimal audience and some help from the Internet, anything&apos;s possible!&lt;/p&gt;
&lt;p&gt;I&apos;ve been reached by two editors since then, a &lt;a href=&quot;http://item.jd.com/11685556.html&quot;&gt;Chinese&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/juldanjou/status/552056642322583552&quot;&gt;Korean&lt;/a&gt; one. I gave them rights to translate and publish the books in their countries, so you can buy the Chinese and Korean version of the first edition of the book out there.&lt;/p&gt;
&lt;p&gt;Seeing how successful it was, I decided to launch a second edition in May 2015, and it&apos;s likely that a third edition will be released in 2016.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nowadays, you work for &lt;a href=&quot;http://www.redhat.com&quot;&gt;Red Hat&lt;/a&gt;, a company that represents the success of using Free Software as a commercial business model. This company fascinates a lot in our community. What can you say about your employer from your point of view?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It only has been a year since I joined Red Hat (when they bought &lt;a href=&quot;http://www.enovance.com/&quot;&gt;eNovance&lt;/a&gt;), so my experience is quite recent.&lt;/p&gt;
&lt;p&gt;Though, Red Hat is really a special company on every level. It&apos;s hard to see from the outside how open it is, and how it works. It&apos;s really close to and it really looks like an open source project. For more details, you should read &lt;a href=&quot;https://www.redhat.com/en/explore/the-open-organization-book&quot;&gt;The Open Organization&lt;/a&gt;, a book wrote by Jim Whitehurst (CEO of Red Hat), which he just published. It describes perfectly how Red Hat works. To summarize, meritocracy and the lack of organization in silos is what makes Red Hat a strong organization and puts them as&lt;br /&gt;
&lt;a href=&quot;http://www.forbes.com/innovative-companies/list/&quot;&gt;one of the most innovative company&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the end, I&apos;m lucky enough to be autonomous for the project I work on with my team around OpenStack, and I can spend 100% working upstream and enhance the Python ecosystem.&lt;/p&gt;
</content:encoded><category>career</category><category>openstack</category><category>books</category><category>python</category></item><item><title>My interview about software tests and Python</title><link>https://julien.danjou.info/blog/interview-software-tests-in-python/</link><guid isPermaLink="true">https://julien.danjou.info/blog/interview-software-tests-in-python/</guid><description>Johannes Hubertz interviewed me for his upcoming German book about Python software testing, covering my work on OpenStack and testing best practices.</description><pubDate>Mon, 11 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve recently been contacted by &lt;a href=&quot;http://hubertz.de/blog/&quot;&gt;Johannes Hubertz&lt;/a&gt;, who is writing a new book about Python in German called &lt;em&gt;&quot;Softwaretests mit Python&quot;&lt;/em&gt; which will be published by &lt;em&gt;Open Source Press, Munich&lt;/em&gt; this summer. His book will feature some interviews, and he was kind enough to let me write a bit about software testing. This is the interview that I gave for his book. Johannes translated to German and it will be included in Johannes&apos; book, and I decided to publish it on my blog today. Following is the original version.&lt;/p&gt;
&lt;h2&gt;How did you come to Python?&lt;/h2&gt;
&lt;p&gt;I don&apos;t recall exactly, but around ten years ago, I saw more and more people using it and decided to take a look. Back then, I was more used to Perl. I didn&apos;t really like Perl and was not getting a good grip on its object system.&lt;/p&gt;
&lt;p&gt;As soon as I found an idea to work on – if I remember correctly that was rebuildd – I started to code in Python, learning the language at the same time.&lt;/p&gt;
&lt;p&gt;I liked how Python worked, and how fast I was to able to develop and learn it, so I decided to keep using it for my next projects. I ended up diving into Python core for some reasons, even doing things like briefly hacking on projects like Cython at some point, and finally ended up working on OpenStack.&lt;/p&gt;
&lt;p&gt;OpenStack is a cloud computing platform entirely written in Python. So I&apos;ve been writing Python every day since working on it.&lt;/p&gt;
&lt;p&gt;That&apos;s what pushed me to write &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt; in 2013 and then self-publish it a year later in 2014, a book where I talk about doing smart and efficient Python.&lt;/p&gt;
&lt;p&gt;It had a great success, has even been translated in Chinese and Korean, so I&apos;m currently working on a second edition of the book. It has been an amazing adventure!&lt;/p&gt;
&lt;h2&gt;Zen of Python: Which line is the most important for you and why?&lt;/h2&gt;
&lt;p&gt;I like the &quot;There should be one – and preferably only one – obvious way to do it&quot;. The opposite is probably something that scared me in languages like Perl. But having one obvious way to do it is and something I tend to like in functional languages like Lisp, which are in my humble opinion, even better at that.&lt;/p&gt;
&lt;h2&gt;For a python newbie, what are the most difficult subjects in Python?&lt;/h2&gt;
&lt;p&gt;I haven&apos;t been a newbie since a while, so it&apos;s hard for me to say. I don&apos;t think the language is hard to learn. There are some subtlety in the language itself when you deeply dive into the internals, but for beginners most of the concept are pretty straight-forward. If I had to pick, in the language basics, the most difficult thing would be around the generator objects (yield).&lt;/p&gt;
&lt;p&gt;Nowadays I think the most difficult subject for new comers is what version of Python to use, which libraries to rely on, and how to package and distribute projects. Though things get better, fortunately.&lt;/p&gt;
&lt;h2&gt;When did you start using Test Driven Development and why?&lt;/h2&gt;
&lt;p&gt;I learned unit testing and TDD at school where teachers forced me to learn Java, and I hated it. The frameworks looked complicated, and I had the impression I was losing my time. Which I actually was, since I was writing disposable programs – that&apos;s the only thing you do at school.&lt;/p&gt;
&lt;p&gt;Years later, when I started to write real and bigger programs (e.g. rebuildd), I quickly ended up fixing bugs… I already fixed. That recalled me about unit tests and that it may be a good idea to start using them to stop fixing the same things over and over again.&lt;/p&gt;
&lt;p&gt;For a few years, I wrote less Python and more C code and Lua (for the &lt;a href=&quot;http://awesome.naquadah.org&quot;&gt;awesome window manager&lt;/a&gt;), and I didn&apos;t use any testing. I probably lost hundreds of hours testing manually and fixing regressions – that was a good lesson. Though I had good excuses at that time – it is/was way harder to do testing in C/Lua than in Python.&lt;/p&gt;
&lt;p&gt;Since that period, I have never stopped writing &quot;tests&quot;. When I started to hack on OpenStack, the project was adopting a &quot;no test? no merge!&quot; policy due to the high number of regressions it had during the first releases.&lt;/p&gt;
&lt;p&gt;I honestly don&apos;t think I could work on any project that does not have – at least a minimal – test coverage. It&apos;s impossible to hack efficiently on a code base that you&apos;re not able to test in just a simple command. It&apos;s also a real problem for new comers in the open source world. When there are no test, you can hack something and send a patch, and get a &quot;you broke this&quot; in response.&lt;/p&gt;
&lt;p&gt;Nowadays, this kind of response sounds unacceptable to me: if there is no test, then I didn&apos;t break anything!&lt;/p&gt;
&lt;p&gt;In the end, it&apos;s just too much frustration to work on non tested projects as I demonstrated in &lt;a href=&quot;https://julien.danjou.info/blog/python-bad-practice-concrete-case&quot;&gt;my study of whisper source code&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What do you think to be the most often seen pitfalls of TDD and how to avoid them best?&lt;/h2&gt;
&lt;p&gt;The biggest problems are when and at what rate writing tests.&lt;/p&gt;
&lt;p&gt;On one hand, some people starts to write too precise tests way too soon. Doing that slows you down, especially when you are prototyping some idea or concept you just had. That does not mean that you should not do test at all, but you should probably start with a light coverage, until you are pretty sure that you&apos;re not going to rip every thing and start over. On the other hand, some people postpone writing tests for ever, and end up with no test all or a too thin layer of test. Which makes the project with a pretty low coverage.&lt;/p&gt;
&lt;p&gt;Basically, your test coverage should reflect the state of your project. If it&apos;s just starting, you should build a thin layer of test so you can hack it on it easily and remodel it if needed. The more your project grow, the more you should make it sold and lay more tests.&lt;/p&gt;
&lt;p&gt;Having too detailed tests is painful to make the project evolve at the start. Having not enough in a big project makes it painful to maintain it.&lt;/p&gt;
&lt;h2&gt;Do you think, TDD fits and scales well for the big projects like OpenStack?&lt;/h2&gt;
&lt;p&gt;Not only I think it fits and scales well, but I also think it&apos;s just impossible to not use TDD in such big projects.&lt;/p&gt;
&lt;p&gt;When unit and functional tests coverage was weak in OpenStack – at its beginning – it was just impossible to fix a bug or write a new feature without breaking a lot of things without even noticing. We would release version N, and a ton of old bugs present in N-2 – but fixed in N-1 – were reopened.&lt;/p&gt;
&lt;p&gt;For big projects, with a lot of different use cases, configuration options, etc, you need belt and braces. You cannot throw code in a repository thinking it&apos;s going to work ever, and you can&apos;t afford to test everything manually at each commit. That&apos;s just insane.&lt;/p&gt;
</content:encoded><category>career</category><category>python</category><category>books</category><category>openstack</category></item><item><title>The Hacker&apos;s Guide to Python, 2nd edition!</title><link>https://julien.danjou.info/blog/the-hacker-guide-to-python-second-edition/</link><guid isPermaLink="true">https://julien.danjou.info/blog/the-hacker-guide-to-python-second-edition/</guid><description>A year passed since the first release of The Hacker&apos;s Guide to Python in March 2014. A few hundreds copies have been distributed so far, and the feedback is wonderful!</description><pubDate>Mon, 04 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A year passed since the &lt;a href=&quot;https://julien.danjou.info/blog/2014/the-hacker-guide-to-python-has-been-released&quot;&gt;first release of The Hacker&apos;s Guide to Python&lt;/a&gt; in March 2014. A few hundreds copies have been distributed so far, and the feedback is wonderful!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/the-hacker-guide-to-python-darken-v2.png&quot; alt=&quot;the-hacker-guide-to-python-darken-v2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I already wrote extensively about the &lt;a href=&quot;https://julien.danjou.info/blog/making-of-the-hacker-guide-to-python&quot;&gt;making of that book&lt;/a&gt; last year, and I cannot emphasize enough how this adventure has been amazing so far. That&apos;s why I decided a few months ago to update the guide and add some new content.&lt;/p&gt;
&lt;p&gt;So let&apos;s talk about what&apos;s new in this second edition of the book!&lt;/p&gt;
&lt;p&gt;First, I obviously fixed a few things. I had some reports about small mistakes and typos which I applied as I received them. Not a lot fortunately, but it&apos;s still better to have fewer errors in a book, right?&lt;/p&gt;
&lt;p&gt;Then, I updated some of the content. Things changed since I wrote the first chapters of that guide 18 months ago. Therefore I had to rewrite some of the sections and take into account new software or libraries that were released.&lt;/p&gt;
&lt;p&gt;At last, I decided to enhance the book with one more interview. I&apos;ve requested my fellow OpenStack developer &lt;a href=&quot;https://github.com/harlowja&quot;&gt;Joshua Harlow&lt;/a&gt;, who is leading a few interesting Python projects, to join the long list of interviewees in the book. I hope you&apos;ll enjoy it!&lt;/p&gt;
&lt;p&gt;If you didn&apos;t get the book yet, go &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;check it out&lt;/a&gt; and use the coupon &lt;strong&gt;THGTP2LAUNCH&lt;/strong&gt; to get 20% off during the next 48 hours!&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>Making of The Hacker&apos;s Guide to Python</title><link>https://julien.danjou.info/blog/making-of-the-hacker-guide-to-python/</link><guid isPermaLink="true">https://julien.danjou.info/blog/making-of-the-hacker-guide-to-python/</guid><description>As promised, today I would like to write a bit about the making of The Hacker&apos;s Guide to Python. It has been a very interesting experimentation, and I think it is worth sharing it with you.</description><pubDate>Wed, 07 May 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As promised, today I would like to write a bit about the making of &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;The Hacker&apos;s Guide to Python&lt;/a&gt;. It has been a very interesting experimentation, and I think it is worth sharing it with you.&lt;/p&gt;
&lt;h2&gt;The inspiration&lt;/h2&gt;
&lt;p&gt;All started out at the beginning of August 2013. I was spending my summer, as the rest of the year, hacking on OpenStack.&lt;/p&gt;
&lt;p&gt;As years passed, I got more and more deeply involved in the various tools that we either built or contributed to within the OpenStack community. And I somehow got the feeling that my experience with Python, the way we used it inside OpenStack and other applications during these last years was worth sharing. Worth writing something bigger than a few blog posts.&lt;/p&gt;
&lt;p&gt;The OpenStack project is doing code reviews, and therefore so did I for almost two years. That inspired a lot of topics, like &lt;a href=&quot;https://julien.danjou.info/blog/guide-python-static-class-abstract-methods&quot;&gt;the definitive guide to method decorators&lt;/a&gt; that I wrote at the time I started the hacker&apos;s guide. Stumbling upon the same mistakes or misunderstanding over and over is, somehow, inspiring.&lt;/p&gt;
&lt;p&gt;I also stumbled upon &lt;a href=&quot;http://nathanbarry.com&quot;&gt;Nathan Barry&lt;/a&gt;&apos;s blog and book &lt;a href=&quot;http://nathanbarry.com/authority/&quot;&gt;Authority&lt;/a&gt; which were very helpful to get started and some sort of guideline.&lt;/p&gt;
&lt;p&gt;All of that brought me enough ideas to start writing a book about Python software development for people already familiar with the language.&lt;/p&gt;
&lt;h2&gt;The writing&lt;/h2&gt;
&lt;p&gt;The first thing I started to do is to list all the topics I wanted to write about. The list turned out to have subjects that had no direct interest for a practical guide. For example, on one hand, very few developers know in details how metaclasses work, but on the other hand, I never had to write a metaclass during these last years. That&apos;s the kind of subject I decided not to write about, dropped all subjects that I felt were not going to help my reader to be more productive. Even if they could be technically interesting.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/the-hacker-guide-to-python-opened.png&quot; alt=&quot;the-hacker-guide-to-python-opened&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then, I gathered all problems I saw during the code reviews I did during these last two years. Some of them I only recalled in the days following the beginning of that project. But I kept adding them to the table of contents, reorganizing stuff as needed.&lt;/p&gt;
&lt;p&gt;After a couple of weeks, I had a pretty good overview of the contents that there I will write about. All I had to do was to fill in the blank (that sounds so simple now).&lt;/p&gt;
&lt;p&gt;The entire writing of the took hundred hours spread from August to November, during my spare time. I had to stop all my other side projects for that.&lt;/p&gt;
&lt;h2&gt;The interviews&lt;/h2&gt;
&lt;p&gt;While writing the book, I tried to parallelize every thing I could. That included asking people for interviews to be included in the book. I already had a pretty good list of the people I wanted to feature in the book, so I took some time as soon as possible to ask them, and send them detailed questions.&lt;/p&gt;
&lt;p&gt;I discovered two categories of interviewees. Some of them were very fast to answer (≤ 1 week), and others were much, much slower. A couple of them even set up Git repositories to answer the questions, because that probably looked like an entire project to them. :-) So I had to not lose sight and kindly ask from time to time if everything was alright, and at some point started to kindly set some deadline.&lt;/p&gt;
&lt;p&gt;In the end, the quality of the answers was awesome, and I like to think that was because I picked the right people!&lt;/p&gt;
&lt;h2&gt;The proof-reading&lt;/h2&gt;
&lt;p&gt;Once the book was finished, I somehow needed to have people proof-reading it. This was probably the hardest part of this experiment. I needed two different types of reviews: technical reviews, to check that the content was correct and interesting, and language review. That one is even more important since English is not my native language.&lt;/p&gt;
&lt;p&gt;Finding technical reviewers seemed easy at first, as I had ton of contacts that I identified as being able to review the book. I started by asking a few people if they would be comfortable reading a simple chapter and giving me feedbacks. I started to do that in September: having the writing and the reviews done in parallel was important to me in order to minimize latency and the book&apos;s release delay.&lt;/p&gt;
&lt;p&gt;All people I contacted answered positively that they would be interested in doing a technical review of a chapter. So I started to send chapters to them. But in the end, only 20% replied back. And even after that, a large portion stopped reviewing after a couple of chapters.&lt;/p&gt;
&lt;p&gt;Don&apos;t get me wrong: you can&apos;t be mad at people not wanting to spend their spare time in book edition like you do.&lt;/p&gt;
&lt;p&gt;However, from the few people that gave their time to review a few chapters, I got tremendous feedback, at all level. That&apos;s something that was very important and that helped a lot getting confident. Writing a book alone for months without having anyone taking a look upon your shoulder can make you doubt that you are creating something worth it.&lt;/p&gt;
&lt;p&gt;As far as English proof-reading, I went ahead and used &lt;a href=&quot;http://odesk.com&quot;&gt;ODesk&lt;/a&gt; to recruit a professional proof-reader. I looked for people with the right skills: a good English level (being a native English speaker at least), be able to understand what the book was about, and being able to work with correct delays. I had mixed results from the people I hired, but I guess that&apos;s normal. The only error I made was not to parallelize those reviews enough, so I probably lost a couple of months on&lt;br /&gt;
that.&lt;/p&gt;
&lt;h2&gt;The toolchain&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/the-hacker-guide-to-python-2.png&quot; alt=&quot;the-hacker-guide-to-python-2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;While writing the book, I did a few breaks to build a toolchain. What I call a toolchain is set of tools used to render the final PDF, EPUB and MOBI files of the guide.&lt;/p&gt;
&lt;p&gt;After some research, I decided to settle on &lt;a href=&quot;http://www.methods.co.nz/asciidoc/&quot;&gt;AsciiDoc&lt;/a&gt;, using the &lt;a href=&quot;http://www.docbook.org&quot;&gt;DocBook&lt;/a&gt; output, which is then being transformed to LaTeX, and then to PDF, or either to EPUB directly. I rely on &lt;a href=&quot;http://calibre-ebook.com/&quot;&gt;Calibre&lt;/a&gt; to convert the EPUB file to MOBI. It took me a few hours to do what I wanted, using some magic LaTeX tricks to have a proper render, but it was worth it and I&apos;m particularly happy with the result.&lt;/p&gt;
&lt;p&gt;For the cover design, I asked my talented friend &lt;a href=&quot;http://nicolas-veyret.com/&quot;&gt;Nicolas&lt;/a&gt; to do something for me, and he designed the wonderful cover and its little snake!&lt;/p&gt;
&lt;h2&gt;The publishing&lt;/h2&gt;
&lt;p&gt;Publishing in an interesting topic people kept asking me about. This is what I had to answer a few dozens of time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Who is your editor?&quot;&lt;/li&gt;
&lt;li&gt;&quot;Me.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I never had any plan for asking an editor to publish this book. Nowadays, asking an editor to publish a book feels to me like asking a major company to publish a CD. It feels awkward.&lt;/p&gt;
&lt;p&gt;However, don&apos;t get me wrong: there can be a few upsides of having an editor. They will find reviewers and review your book for you. Having the book review handled for you is probably a very good thing, considering how it was hard to me to get that in place. It can be especially important for a technical book.&lt;/p&gt;
&lt;p&gt;Also, your book may end up in brick and mortar stores and be part of a collection, both improving visibility. That may improve your book&apos;s selling, though the editor and all the intermediaries are going to keep the largest amount of the money anyway.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Oh, you will publish it yourself, great. So you will print it and sell it to people?&quot;&lt;/li&gt;
&lt;li&gt;&quot;Not really.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;ve heard good stories about people using &lt;a href=&quot;http://gumroad.com&quot;&gt;Gumroad&lt;/a&gt; to sell electronic contents, so after looking for competitors in that market, I picked them. I also had the idea to sell the book with Bitcoins, so I settled on &lt;a href=&quot;http://coinbase.com&quot;&gt;Coinbase&lt;/a&gt;, because they have a nice API to do that.&lt;/p&gt;
&lt;p&gt;Setting up everything was quite straight-forward, especially with Gumroad. It only took me a few hours to do so. Writing the Coinbase application took a few hours too.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Oh, you will sell it only as an ebook? That&apos;s too bad. You need a paper version. Many people will want a paper version.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My initial plan was to only sell online an electronic version. On the other hand, since I kept hearing that a printed version should exist, I decided to give it a try. I chose to work with &lt;a href=&quot;http://lulu.com&quot;&gt;Lulu&lt;/a&gt; because I knew people using it, and it was pretty simple to set up.&lt;/p&gt;
&lt;h2&gt;The launch&lt;/h2&gt;
&lt;p&gt;Once I had everything ready, I built the selling page and connected everything between Mailchimp, Gumroad, Coinbase, Google Analytics, etc.&lt;/p&gt;
&lt;p&gt;Writing the launch email was really exciting. I used Mailchimp feature to send the launch mail in several batches, just to have some margin in case of a sudden last minute problem. But everything went fine. Hurrah!&lt;/p&gt;
&lt;p&gt;I distributed around 200 copies of the ebook in the first 48 hours, for about $5000. That covered all the cost I had from the writing the book, and even more, so I was already pretty happy with the launch.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/thgtp-sell-graph.png&quot; alt=&quot;thgtp-sell-graph&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Retrospective&lt;/h2&gt;
&lt;p&gt;In retrospect, something that I didn&apos;t do the best way possible is probably to build a solid mailing list of people interested, and to build an important anticipation and incentive to buy the book at launch date. My mailing list counted around 1500 people subscribed because they were interested in the launch of the book subscribed; in the end, probably only 10-15% of them bought the book during the launch, which is probably a bit lower than what I could expect.&lt;/p&gt;
&lt;p&gt;But more than a month later, I distributed in total almost 500 copies of the book (including physical units) for more than $10000, so I tend to think that this was a success. I still sell a few copies of the book each weeks, but the number are small compared to the launch.&lt;/p&gt;
&lt;p&gt;I sold less than 10 copies of the ebook using Bitcoins, and I admit I&apos;m a bit disappointed and surprised about that.&lt;/p&gt;
&lt;p&gt;Physical copies represent 10% of the book distribution. It&apos;s probably a lot lower than most people that pushed me to do it thought it would be. But it is still higher of what I thought it would be. So I still would advise to have a paperback version of your book. At least because it&apos;s nice to have it&lt;br /&gt;
in your library.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/thgtp-paperback.jpg&quot; alt=&quot;thgtp-paperback&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I only got positive feedbacks, a few typo notices, and absolutely no refund demand, which I really find amazing.&lt;/p&gt;
&lt;p&gt;The good news is also that I&apos;ve been contacted with a couple of Korean and Chinese editors to get the book translated and published in those countries. If everything goes well, the book should be translated in the upcoming months and be available on these markets in 2015!&lt;/p&gt;
&lt;p&gt;If you didn&apos;t get a copy, &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;it&apos;s still time to do so&lt;/a&gt;!&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>The Hacker&apos;s Guide to Python released!</title><link>https://julien.danjou.info/blog/the-hacker-guide-to-python-has-been-released/</link><guid isPermaLink="true">https://julien.danjou.info/blog/the-hacker-guide-to-python-has-been-released/</guid><description>And done! It took me just 8 months to do this entire book project around Python. From the first day I started writing to today, where I finally publish and sell – almost entirely – myself this book. I</description><pubDate>Tue, 25 Mar 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;And done! It took me just 8 months to do this entire book project around Python. From the first day I started writing to today, where I finally publish and sell – almost entirely – myself this book. I&apos;m really proud of what I&apos;ve achieved so far, as this was something totally new to me.&lt;/p&gt;
&lt;p&gt;Doing all of that has been a great adventure, and I&apos;ll promise I&apos;ll write something about that later on. A making of.&lt;/p&gt;
&lt;p&gt;For now, you can enjoy reading the book and learn a bit more about Python. I really hope it&apos;ll help you bring your Python-fu to a new level, and help you build great projects!&lt;/p&gt;
&lt;p&gt;Go check it out, and since this is first day of sale, enjoy 20% off by using the offer code &lt;strong&gt;THGTP20&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://julien.danjou.info/content/images/03/the-hacker-guide-to-python-4.png&quot; alt=&quot;Cover of The Hacker&apos;s Guide to Python&quot; /&gt;&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item><item><title>Announcing The Hacker&apos;s Guide to Python</title><link>https://julien.danjou.info/blog/announcing-the-hacker-guide-to-python/</link><guid isPermaLink="true">https://julien.danjou.info/blog/announcing-the-hacker-guide-to-python/</guid><description>I&apos;ve been hacking on Python for a lot of years now, on various project. For the last two years, I&apos;ve been heavily involved in OpenStack, which makes an heavy usage of Python.</description><pubDate>Tue, 03 Sep 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been hacking on Python for a lot of years now, on various project. For the last two years, I&apos;ve been heavily involved in &lt;a href=&quot;http://openstack.org&quot;&gt;OpenStack&lt;/a&gt;, which makes an heavy usage of Python.&lt;/p&gt;
&lt;p&gt;Once you start working with a hundred of hackers, on several software and libraries representing more than half a million source lines of Python, things change. The scalability, testing and deployment problems inherent to a cloud platform meddle with everything in designing components.&lt;/p&gt;
&lt;p&gt;During these two years working on OpenStack development, I&apos;ve learned a lot on Python from astounding Python hackers. From general architecture and design principles to various tips and tricks of the language.&lt;/p&gt;
&lt;p&gt;It seemed to me like a good opportunity to share what I learnt doing so with others so you can benefit from it in other projects. I&apos;ve started working a book, entitled &quot;The Hacker&apos;s Guide to Python&quot;, where I will try to share what I learnt while working with Python.&lt;/p&gt;
&lt;p&gt;The book is still a work in progress at this stage, but if you&apos;d like to get in touch and keep updated on its advancement, you can subscribe in the following form or from the &lt;a href=&quot;https://thehackerguidetopython.com&quot;&gt;book homepage&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>books</category><category>python</category></item></channel></rss>