<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13497321</id><updated>2019-08-20T14:29:10.916+02:00</updated><category term="Maths"/><category term="Programming"/><category term="Productivity"/><category term="Thoughts"/><category term="Linux"/><category term="emacs"/><category term="Bizarre"/><category term="Blog"/><category term="How-to"/><category term="Books"/><category term="Mac"/><category term="iPod"/><category term="scala"/><category term="Games"/><category term="Iceland"/><category term="Drawing"/><category term="Trips"/><category term="Data"/><category term="Time Management"/><category term="Fractals"/><category term="LISP"/><category term="Python"/><category term="ReadingsOfTheWeek"/><category term="Plants"/><category term="Cooking"/><category term="spark"/><category term="LaTeX"/><category term="Origami"/><category term="Iceland2010"/><category term="Big data"/><category term="Music"/><category term="NanoNote"/><category term="iPad"/><category term="Rust"/><category term="Islensk"/><category term="Improve Yourself"/><category term="Memory"/><category term="Places"/><category term="Basketball"/><category term="Go"/><category term="DIY"/><category term="Languages"/><category term="TLA+"/><category term="spacemacs"/><category term="Coffee"/><category term="Functional Programming"/><category term="acme"/><category term="github"/><category term="Christmas"/><category term="Downloads"/><category term="Forth"/><category term="Guitar"/><category term="History"/><category term="Karate"/><category term="Wardley maps"/><category term="ZIO"/><category term="iPhone"/><category term="vim"/><category term="Alloy"/><category term="Golang"/><category term="London"/><category term="PostScript"/><category term="Running"/><category term="Teaching"/><category term="Visualization"/><category term="gnus"/><category term="math"/><category term="opensource"/><category term="Adtech"/><category term="Agile"/><category term="Akka"/><category term="CJuicer"/><category term="Django"/><category term="Focused Interviews"/><category term="GTD"/><category term="Gcal"/><category term="Haskell"/><category term="Hex"/><category term="Kafka"/><category term="Keats"/><category term="Maps"/><category term="NLP"/><category term="SEO"/><category term="Soccer"/><category term="Systems Thinking"/><category term="ag"/><category term="apl"/><category term="geek"/><category term="plan9"/><category term="2016"/><category term="7links"/><category term="AWK"/><category term="Actors"/><category term="Analytics"/><category term="BAD10"/><category term="Backgammon"/><category term="BlogActionDay"/><category term="C"/><category term="Command Line"/><category term="Docker"/><category term="Formal methods"/><category term="GTM"/><category term="Gaelic"/><category term="Generative"/><category term="Google Tag Manager"/><category term="Hive"/><category term="Irish"/><category term="L&#39;Arboç"/><category term="Movies"/><category term="Perl"/><category term="Pyrography"/><category term="QGIS"/><category term="Recipes"/><category term="Research"/><category term="Review"/><category term="SVG"/><category term="Shoemaking"/><category term="Shoes"/><category term="The Fancy Puffin"/><category term="Trick"/><category term="Watch"/><category term="category theory"/><category term="conferences"/><category term="diff"/><category term="git"/><category term="grep"/><category term="iOS"/><category term="jQuery"/><category term="kubernetes"/><category term="meetup"/><category term="processing"/><category term="rcs"/><category term="sbt"/><title type='text'>Mostly Maths</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.mostlymaths.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>571</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13497321.post-5949725387337122690</id><published>2019-07-28T18:39:00.000+02:00</published><updated>2019-07-28T18:39:15.769+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adtech"/><category scheme="http://www.blogger.com/atom/ns#" term="Basketball"/><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Drawing"/><category scheme="http://www.blogger.com/atom/ns#" term="Functional Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Haskell"/><category scheme="http://www.blogger.com/atom/ns#" term="History"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><title type='text'>2019#20,21,22 Readings of the week</title><content type='html'>I’ve been pretty busy lately, and although reading doesn’t stop, my writing sometimes takes a hiatus.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Data engineering, adtech, history, apple. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-TXc0F2gnqsA/XT3PJtSsmiI/AAAAAAAAE4k/dHIQqEgpt0Ip21o9esP4tZoDS_WxVcvNQCK4BGAYYCw/s1600/benjamin-wong-qVywyNo9_-E-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://2.bp.blogspot.com/-TXc0F2gnqsA/XT3PJtSsmiI/AAAAAAAAE4k/dHIQqEgpt0Ip21o9esP4tZoDS_WxVcvNQCK4BGAYYCw/s640/benjamin-wong-qVywyNo9_-E-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: whitesmoke; caret-color: rgb(17, 17, 17); color: #111111; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; white-space: nowrap;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/@ben_wong_31?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Benjamin Wong&lt;/a&gt;&lt;span style=&quot;background-color: whitesmoke; caret-color: rgb(17, 17, 17); color: #111111; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; white-space: nowrap;&quot;&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/search/photos/apple?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_0&quot;&gt;&lt;a href=&quot;https://story.californiasunday.com/cosmic-crisp-apple-launch&quot;&gt;The Launch&lt;/a&gt;&lt;/h2&gt;And it’s not about a technology product.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://marginalrevolution.com/marginalrevolution/2019/07/how-i-practice-at-what-i-do.html&quot;&gt;How I practice at what I do&lt;/a&gt;&lt;/h2&gt;Working on improvement is a full time job, that you usually need to take during your free time.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://madeddu.xyz/posts/im-still-learning/&quot;&gt;The Good Employee, a story about how you can explain modern companies with graph theory&lt;/a&gt;&lt;/h2&gt;This was a weird read. But now I wonder if I can use Prim’s algorithm to improve my decision making?&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://digiday.com/media/were-building-for-media-businesses-of-tomorrow-how-the-washington-post-is-preparing-for-a-cookieless-future/&quot;&gt;The Washington Post is preparing for post-cookie ad targeting&lt;/a&gt;&lt;/h2&gt;The cookiepocalypse is coming, and if you work in adtech you should be thinking about it.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://www.masonrymagazine.com/blog/2018/11/01/dry-stone-walls-principles-of-structurally-sound-construction/&quot;&gt;Dry Stone Walls – Principles of structurally sound construction&lt;/a&gt;&lt;/h2&gt;Around my hometown (L’Arboç) there’s an abundance of dry stone wall huts, presumedly from around 18th century. Now I know how to build one.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;http://theoryengine.org/mental-health/book-review-impro-by-keith-johnstone/&quot;&gt;Book Review: Impro by Keith Johnstone&lt;/a&gt;&lt;/h2&gt;You may be aware that I read anything that can improve me in any way. So, &lt;a href=&quot;https://www.amazon.com/Impro-Improvisation-Theatre-Keith-Johnstone/dp/0878301178/ref=as_li_ss_tl?_encoding=UTF8&amp;amp;qid=1564331328&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=f04863639a6d8fd13d8e8f242d062b36&quot;&gt;Impro&lt;/a&gt; is now on my currently reading.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://medium.com/@schrockn/introducing-dagster-dbd28442b2b7&quot;&gt;Introducing Dagster&lt;/a&gt;&lt;/h2&gt;Anything that is &lt;em&gt;not&lt;/em&gt; Airflow is a win on my book, but I’m not super-thrilled about how Dagster works either.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://heredragonsabound.blogspot.com/2019/04/iskloft-mountain-style.html&quot;&gt;Here Dragons Abound: Iskloft Mountain Style&lt;/a&gt;&lt;/h2&gt;I have always loved maps and map-drawing, so how to draw fantasy maps is an interesting enough subject on its own.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;http://rs.io/why-category-theory-matters/&quot;&gt;Why Category Theory Matters&lt;/a&gt;&lt;/h2&gt;I’m ramping up my category theory knowledge lately (and spreading through to sheaves and maybe schemes).&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.nytimes.com/2006/08/20/sports/playmagazine/20federer.html&quot;&gt;Roger Federer as Religious Experience&lt;/a&gt;&lt;/h2&gt;We’ll miss him (and Rafa Nadal, and Novak Djokovic) when he retires.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://blog.usejournal.com/monoids-to-groupoids-492c35105113&quot;&gt;Did Functional Programming get it wrong? - Noteworthy&lt;/a&gt;&lt;/h2&gt;I’ve been thinking about “spreadsheets” as in “data and code mixed” lately, specially in terms of category theory, so this post was... close to mind-reading.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://kotaku.com/if-you-re-playing-eve-online-you-basically-already-have-1835048929&quot;&gt;If you’re playing EVE online you basically already have an MBA&lt;/a&gt;&lt;/h2&gt;I’ve never been drawn to that game, but given the amount of hours some people give it, it makes total sense.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://holmusk.dev/blog/2019-03-29-experience-summary.html&quot;&gt;Haskell - An Experience Summary&lt;/a&gt;&lt;/h2&gt;As part of my categorification, I’m back again at learning Haskell (using &lt;a href=&quot;http://haskellbook.com/&quot;&gt;Haskell Programming from First Principles&lt;/a&gt;). So I’m reading anything reasonably non-technical about Haskell.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://www.espn.com/nba/story/_/id/27125793/these-kids-ticking-bombs-threat-youth-basketball&quot;&gt;&#39;These kids are ticking time bombs&#39; -- The threat of youth basketball&lt;/a&gt;&lt;/h2&gt;The amount of bone and tissue stress a young basketball player has gone through is astonishing.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/fashion/2019/jul/04/i-dont-see-jeans-in-my-future-the-people-who-wear-complete-historical-dress-every-day&quot;&gt;‘I don’t see jeans in my future’: the people who wear complete historical dress – every day&lt;/a&gt;&lt;/h2&gt;I like that 30s look. I even have a similar hat.&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://grh.am/2019/preserving-laptop-stickers-on-macbooks/&quot;&gt;Preserving Laptop Stickers on MacBooks - Graham Stevens&lt;/a&gt;&lt;/h2&gt;Seems too late for my batch of stickers, but I always pick 2 of a kind if possible, now I’m thinking where should I show the duplicates.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;&lt;a href=&quot;https://www.atlasobscura.com/articles/staged-train-wrecks&quot;&gt;For 40 Years, Crashing Trains Was One of America’s Favourite Pastimes&lt;/a&gt;&lt;/h2&gt;Watching things explode has always been fun?&lt;br /&gt;&lt;h2 id=&quot;toc_17&quot;&gt;&lt;a href=&quot;http://www.washingtonpost.com/wp-dyn/content/article/2007/04/04/AR2007040401721_pf.html??noredirect=on&quot;&gt;Pearls Before Breakfast&lt;/a&gt;&lt;/h2&gt;Would you recognize genius if it was in front of you?&lt;br /&gt;&lt;h2 id=&quot;toc_18&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Finite-Infinite-Games-James-Carse-ebook/dp/B004W3FM4A/ref=as_li_ss_tl?crid=1I0UXFS40RXE6&amp;amp;keywords=finite+and+infinite+games+by+james+carse&amp;amp;qid=1564331527&amp;amp;s=gateway&amp;amp;sprefix=finite+and+infini,aps,214&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=ea89b3c3009aafb424602b4db0fbc174&quot;&gt;📚 Finite and Infinite Games&lt;/a&gt;&lt;/h2&gt;I’ve seen many people recommend this book... And I didn’t get it. It was interesting, but not so much as I expected.&lt;br /&gt;&lt;h2 id=&quot;toc_19&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=TWFI4aN4h0Q&quot;&gt;🎥 Approaching the Yoneda Lemma&lt;/a&gt;&lt;/h2&gt;Some ways of seeing the Yoneda lemma. I’m still trying to wrap my head categorically, without forgetting anything. I want to be free.&lt;br /&gt;&lt;h2 id=&quot;toc_20&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5949725387337122690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5949725387337122690'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/07/2019202122-readings-of-week.html' title='2019#20,21,22 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-TXc0F2gnqsA/XT3PJtSsmiI/AAAAAAAAE4k/dHIQqEgpt0Ip21o9esP4tZoDS_WxVcvNQCK4BGAYYCw/s72-c/benjamin-wong-qVywyNo9_-E-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-4499488936936432177</id><published>2019-07-08T21:52:00.001+02:00</published><updated>2019-07-08T21:52:22.318+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Functional Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Haskell"/><category scheme="http://www.blogger.com/atom/ns#" term="History"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="Wardley maps"/><title type='text'>2019#19 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. History, haskell. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt;. You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-nLjONOMESHU/XSOeY_mhcLI/AAAAAAAAE4E/GgsBhEiXjhM_OHq52T9yD20pN9GlSNetACLcBGAs/s1600/chris-marquardt-LKOAOAJZEbc-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;585&quot; data-original-width=&quot;1600&quot; height=&quot;232&quot; src=&quot;https://1.bp.blogspot.com/-nLjONOMESHU/XSOeY_mhcLI/AAAAAAAAE4E/GgsBhEiXjhM_OHq52T9yD20pN9GlSNetACLcBGAs/s640/chris-marquardt-LKOAOAJZEbc-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/@chrismarquardt?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Chris Marquardt&lt;/a&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/search/photos/svalbard?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://lflank.wordpress.com/2019/06/25/when-pepsi-had-a-navy/&quot;&gt;When Pepsi Had a Navy&lt;/a&gt;&lt;/h2&gt;From the title, I thought it was related to the “Sugar Wars”, but the reality is weirder.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.theatlantic.com/magazine/archive/2019/07/work-peak-professional-decline/590650/&quot;&gt;Your Work Peak Is Earlier Than You Think&lt;/a&gt;&lt;/h2&gt;Mildly depressing. A quote I found interesting:&lt;br /&gt;&lt;blockquote&gt;Careers that rely primarily on fluid intelligence tend to peak early, while those that use more crystallized intelligence peak later. For example, Dean Keith Simonton has found that poets—highly fluid in their creativity—tend to have produced half their lifetime creative output by age 40 or so. Historians—who rely on a crystallized stock of knowledge—don’t reach this milestone until about 60.&lt;/blockquote&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;http://www.philipzucker.com/why-i-as-of-june-22-2019-think-haskell-is-the-best-general-purpose-language-as-of-june-22-2019/&quot;&gt;Why I (as of June 22 2019) think Haskell is the best general purpose language (as of June 22 2019)&lt;/a&gt;&lt;/h2&gt;Although I can somewhat read Haskell code, I still can’t write much. So, can’t really agree... Yet.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;http://www.lihaoyi.com/post/EasyParsingwithParserCombinators.html&quot;&gt;Easy Parsing with Parser Combinators&lt;/a&gt;&lt;/h2&gt;I have a small project I wrote with AWK that I want to rewrite “properly” in Scala, and I’d need to do some real parsing (not the ad-hoc parsing you always end up writing in AWK), so learning to use FastParse is worth it. Also Li is a very clear writer.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://www.filfre.net/2019/06/sam-and-max-hit-the-road/&quot;&gt;Sam and Max Hit the Road Development History&lt;/a&gt;&lt;/h2&gt;So many fond memories from this game, I’m getting it again from GOG any day soon. Also this post made me look up where my copy of the ??? was.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;http://justinhj.github.io/2019/06/20/comonads-for-life.html&quot;&gt;Comonads for Life&lt;/a&gt;&lt;/h2&gt;Implementing the Game of Life using comonads (the dual of monads)&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://avikdas.com/2019/05/14/real-world-dynamic-programming-seam-carving.html&quot;&gt;Real-world dynamic programming: seam carving&lt;/a&gt;&lt;/h2&gt;I have always been fascinated by seam carving. It’s so amazing&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;http://www.bbc.com/travel/story/20190603-the-surprising-story-of-the-basque-language&quot;&gt;The surprising story of the Basque language&lt;/a&gt;&lt;/h2&gt;Uhm, Armenia is not even close.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.vice.com/en_us/article/ywyjmw/history-will-not-be-kind-to-jony-ive&quot;&gt;History Will Not Be Kind to Jony Ive&lt;/a&gt;&lt;/h2&gt;Flexgate, antennagate, keyboardgate. There have been many f-ups that can be traced back to looking for a specific design. I hope Apple gets back to top-design and top-usability now.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/environment/ng-interactive/2019/jul/01/its-getting-warmer-wetter-wilder-the-arctic-town-heating-faster-than-anywhere&quot;&gt;&#39;It&#39;s getting warmer, wetter, wilder&#39;: the Arctic town heating faster than anywhere&lt;/a&gt;&lt;/h2&gt;Longyearbyen (Svalbard’s capital) is in danger.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://www.gwern.net/Greenland&quot;&gt;Reasons of State: Why Didn&#39;t Denmark Sell Greenland?&lt;/a&gt;&lt;/h2&gt;An analysis by Gwern Branwen about why Denmark didn’t sell Greenland to the US after WWII (they wanted it as a base).&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/artanddesign/2019/jul/05/restoration-rembrandt-night-watch-begins-rijksmuseum-amsterdam&quot;&gt;&#39;Like a military operation&#39;: restoration of Rembrandt&#39;s Night Watch begins&lt;/a&gt;&lt;/h2&gt;The weight of the painting will surprise you.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;📚 &lt;a href=&quot;https://www.amazon.com/Sprint-Solve-Problems-Test-Ideas/dp/B019R2DQIY/ref=as_li_ss_tl?keywords=sprint&amp;amp;qid=1562614783&amp;amp;s=audible&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=fb18e74156fff4db8a1ff8a2be2ffd9a&quot;&gt;Sprint&lt;/a&gt;&lt;/h2&gt;The nitty gritty details of how to run design sprints (a Google practice). Interesting.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;📚 &lt;a href=&quot;https://www.amazon.com/Diaspora/dp/B00GMOI58M/ref=as_li_ss_tl?_encoding=UTF8&amp;amp;qid=1562614527&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=c9fab66ed1bf8507d7970fe8282c09cc&quot;&gt;Diaspora&lt;/a&gt;&lt;/h2&gt;This is the second Egan book I read (after &lt;a href=&quot;https://www.amazon.com/The-Clockwork-Rocket/dp/B00GMOI3SO/ref=as_li_ss_tl?keywords=clockwork+rocket&amp;amp;qid=1562614697&amp;amp;s=audible&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=6d7c8ec8f282ef75034266c00a320ded&quot;&gt;Clockwork Rocket&lt;/a&gt;) and I found Diaspora much better, although with a weak ending and a somewhat erratic plot. The book has some strong &lt;a href=&quot;https://www.amazon.com/Star-Maker/dp/B0098OIMWC/ref=as_li_ss_tl?_encoding=UTF8&amp;amp;qid=1562614660&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=cc5daf485e65c72573c57260ecab14e6&quot;&gt;Star maker&lt;/a&gt; vibes. By the way, when adding the link above I thought the narrator for Audible was &lt;a href=&quot;https://warwick.ac.uk/fac/sci/maths/people/staff/adam_epstein/&quot;&gt;this Adam Epstein&lt;/a&gt; (a pretty darn good mathematician I know)&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;📚 &lt;a href=&quot;https://www.amazon.com/Thinking-Bets-Making-Smarter-Decisions-ebook/dp/B074DG9LQF/ref=as_li_ss_tl?ie=UTF8&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=ac12d803e70aa3b70df18c1794b0be13&quot;&gt;Thinking in bets&lt;/a&gt;&lt;/h2&gt;The general idea is sound, but it’s one of those books that could be written as a long blog post or short essay.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;📚 &lt;a href=&quot;https://www.amazon.com/Set-Your-Voice-Free-Speaking/dp/B01MRSDFSG/ref=as_li_ss_tl?keywords=set+your+voice+free&amp;amp;qid=1562614842&amp;amp;s=audible&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=79e9518d0ce239c93bef6f65564e9967&quot;&gt;Set your voice free&lt;/a&gt;&lt;/h2&gt;Exercises to improve your voice. I have recently started to do the daily warm-ups, but so far have felt no difference. Of course, other people should be the ones to tell me.&lt;br /&gt;&lt;h2 id=&quot;toc_17&quot;&gt;🎥 &lt;a href=&quot;https://www.youtube.com/watch?v=Bz5SHJ4Fyag&quot;&gt;Wardley mapping interview&lt;/a&gt;&lt;/h2&gt;I was recently interviewed by &lt;a href=&quot;https://twitter.com/jhngrant&quot;&gt;John Grant&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/BenMosior&quot;&gt;Ben Mosior&lt;/a&gt; as part of a set of interviews leading up to &lt;a href=&quot;https://www.map-camp.com/_pages/2019-10-15_London/&quot;&gt;MapCamp London 2019&lt;/a&gt;. If you are interested in my thoughts about mapping the tech landscape, I &lt;a href=&quot;https://www.mostlymaths.net/2019/07/a-section-of-map-of-data-engineering.html&quot;&gt;wrote my train of thought in this blog post as well&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_18&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4499488936936432177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4499488936936432177'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/07/201919-readings-of-week.html' title='2019#19 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-nLjONOMESHU/XSOeY_mhcLI/AAAAAAAAE4E/GgsBhEiXjhM_OHq52T9yD20pN9GlSNetACLcBGAs/s72-c/chris-marquardt-LKOAOAJZEbc-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-612592635312143771</id><published>2019-07-07T13:34:00.002+02:00</published><updated>2019-07-07T13:37:27.694+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Functional Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Golang"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="Systems Thinking"/><category scheme="http://www.blogger.com/atom/ns#" term="Wardley maps"/><title type='text'>A (section) of a map of the data engineering space</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Table of contents &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#toc_0&quot;&gt;Problem I&#39;m trying to solve&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_1&quot;&gt;Looking for axis metrics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_2&quot;&gt;The map&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#toc_3&quot;&gt;Anchors&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_4&quot;&gt;Links and colours&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_5&quot;&gt;Empirical map division&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_6&quot;&gt;Quick overview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_7&quot;&gt;Curiosities&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_8&quot;&gt;Questions and further ideas&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;#toc_9&quot;&gt;What other approaches would you have taken to explore this questions?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_10&quot;&gt;Do you think &lt;em&gt;market size&lt;/em&gt; would need to be shown?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_11&quot;&gt;Links between related technologies are a bit hazy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#toc_12&quot;&gt;Flows&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;The map and problem described here were part of my presentation &lt;a href=&quot;https://github.com/rberenguel/mapping&quot;&gt;Mapping as a tool for thought&lt;/a&gt;, and mentioned in my interview with &lt;a href=&quot;https://twitter.com/jhngrant&quot;&gt;John Grant&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/BenMosior&quot;&gt;Ben Mosior&lt;/a&gt; (to appear sometime soon in the &lt;a href=&quot;https://www.youtube.com/channel/UCZ9-K9BLFozmmvmWzjyjkow&quot;&gt;Wardley Maps community youtube channel&lt;/a&gt;). I’m looking for ideas on how to make this map easier to understand and useful, so I posted it to the &lt;a href=&quot;https://community.wardleymaps.com/t/rfc-a-section-of-a-map-of-the-data-engineering-space/452&quot;&gt;Wardley Maps Community forums requesting comments&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_0&quot;&gt;Problem I&#39;m trying to solve&lt;/h2&gt;As a consultant (and as someone always trying to keep up with technology) I&#39;m interested in being able to answer three questions of a language or technology:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;How easy it is to find work/workers in the area &lt;em&gt;right now&lt;/em&gt;?&lt;/li&gt;&lt;li&gt;How &lt;em&gt;hard it is to learn&lt;/em&gt;?&lt;/li&gt;&lt;li&gt;How easy is it going to be to find work/workers in the area &lt;em&gt;once I&#39;m proficient enough&lt;/em&gt;?&lt;/li&gt;&lt;/ol&gt;Also, I need to know the relationship between any of them.&lt;br /&gt;&lt;br /&gt;This problem has been on the back of my mind for many years, and upon getting proficient with Wardley mapping, I thought I could just map it. Of course, it&#39;s &lt;em&gt;not&lt;/em&gt; a Wardley map, because the axes are completely different, but having anchors and movement, it is spiritually close enough for me.&lt;br /&gt;&lt;br /&gt;In the diagram I will show in a while, I have placed technologies I am proficient in, currently learning, or looking forward to learn. In all of them I am at least a &lt;em&gt;beginner&lt;/em&gt; in the sense that I know what they are used for and have done some minor PoC (proof of concept) to get an idea of how the work.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;Looking for axis metrics&lt;/h2&gt;There are several ways you can address this technology space to answer the questions above.  The first and easiest metric, and one of the axes I have used (Y axis) is &lt;em&gt;Difficulty&lt;/em&gt;. Since I know something about each technology I can rank them on Difficulty, at least in relationship with each other. It&#39;s only a qualitative metric of difficulty, because in any new technology there are always unknown unknowns. There is no movement assumed in this axis, because Difficulty is supposed to be consistent throughout (leaving aside &lt;em&gt;the more you know the easier it is to learn&lt;/em&gt; as well as &lt;em&gt;familiarity with similar concepts&lt;/em&gt; that offset that, you could think of these two concepts as &lt;em&gt;doctrine&lt;/em&gt; in such a map).&lt;br /&gt;&lt;br /&gt;One natural metric for the other axis could be &lt;em&gt;popularity&lt;/em&gt;, as measured by any of the several programming language/framework popularity rankings. You can use popularity as one of the axes, and use arrows to indicate whether it is growing in popularity or diminishing in popularity. But, popularity alone does not help in answering questions 1 and 3. What we need is knowing how large the market for this technology is, and how large the pool of workers in this market is. Could we use either as an axis?&lt;br /&gt;&lt;br /&gt;If we were to use &lt;em&gt;market size&lt;/em&gt; as X axis, we would probably have large markets on the right and small markets on the left, we would likely use arrows to indicate growing markets and shrinking markets. But, &lt;em&gt;market size&lt;/em&gt; alone won&#39;t answer the questions either. A small thought experiment: imagine we have the largest market possible, it is growing... but the pool of workers for that technology is 2x the size of the market. It would be impossible to find work there (but, would be easy to find workers). This suggests that a possible correct for the X axis is &lt;em&gt;market saturation&lt;/em&gt;, i.e. the ratio of &lt;em&gt;market size&lt;/em&gt; with &lt;em&gt;worker pool&lt;/em&gt;. Highly saturated markets are uninteresting to look for work, but are very interesting if you are starting a company: you&#39;d have an easy time finding hires for that technology. Market saturation is related to flows (as in &lt;a href=&quot;https://www.amazon.com/Thinking-Systems-Donella-H-Meadows/dp/1603580557/ref=as_li_ss_tl?ie=UTF8&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=2b841bdb7b33c96bae43162c85961666&quot;&gt;Systems thinking&lt;/a&gt; flow analysis) of users into a variable-sized container.&lt;br /&gt;&lt;br /&gt;Markets become saturated in one of 3 ways:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Market is growing, but the pool of workers grows faster&lt;/li&gt;&lt;li&gt;Market is stagnating with a growing pool of workers&lt;/li&gt;&lt;li&gt;Market is shrinking faster than the pool of workers is shrinking&lt;/li&gt;&lt;/ol&gt;Cases 1 and 2 are the most usual (I&#39;d put Python as type 1 and Java as type 2), but 3 is an interesting situation: it would indicate a technology that has died in favour of another. Workers in that pool have retrained in the new technology, but are still in pool for the dying technology (for instance, traditional MapReduce).&lt;br /&gt;&lt;br /&gt;Markets become desaturated in one of 3 ways as well:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Market is growing faster than the pool of workers is growing&lt;/li&gt;&lt;li&gt;Market is stagnating with a shrinking pool of workers&lt;/li&gt;&lt;li&gt;Market is shrinking slower than the pool of workers is shrinking&lt;/li&gt;&lt;/ol&gt;Likewise, here, cases 1 and 3 may be the most interesting. I&#39;d put Kubernetes in 1, and Scala in either 2 or 3. Please note that not only are these &lt;em&gt;subjective&lt;/em&gt; evaluations, but are not meant to be &lt;em&gt;negative&lt;/em&gt;. Scala has been my preferred language for a long while.&lt;br /&gt;&lt;br /&gt;We can represent all these with slanted arrows: &lt;em&gt;slant up covers growing markets&lt;/em&gt;, &lt;em&gt;slant down covers shrinking markets&lt;/em&gt;. And then the arrow points left or right whether it is becoming saturated or desaturated.&lt;br /&gt;&lt;br /&gt;With market saturation as an axis and arrows to indicate evolution of a technology, we can now &lt;em&gt;almost&lt;/em&gt; answer questions 1 and 3. There is still the question of &lt;em&gt;market size&lt;/em&gt;, which can&#39;t be represented with such a relative measure. Although we could add circles to represent current market size, that would bring an already weird map to more weirdness. Hence, &lt;em&gt;market size&lt;/em&gt; is not considered.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;The map&lt;/h2&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-pl5XcFnLkZI/XSHYMfeSZmI/AAAAAAAAE3s/Fkf79oWlv4syn-INbBW6Q1391TUM8VG3ACLcBGAs/s1600/Tech_Landscape-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;480&quot; src=&quot;https://1.bp.blogspot.com/-pl5XcFnLkZI/XSHYMfeSZmI/AAAAAAAAE3s/Fkf79oWlv4syn-INbBW6Q1391TUM8VG3ACLcBGAs/s640/Tech_Landscape-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here you can see the map. Before I get a bit into the topography of it, let me quickly define some of the technologies:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;APL&lt;/strong&gt;: programming language based on non-ASCII symbols designed in the 70s. Not extensively used, but in use&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Airflow&lt;/strong&gt;: workflow scheduler for data operations&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Akka&lt;/strong&gt;: Scala/JVM actor framework used for reactive programming, clustering, stream processing, etc&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Arrow&lt;/strong&gt;: cross-language platform for in-memory data. Used in Spark, Pandas, etc&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Awk&lt;/strong&gt;: special-purpose programming language designed for text processing&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Beam&lt;/strong&gt;: unified model for data processing pipelines. Can use Spark, Flink and others as execution engines&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dask&lt;/strong&gt;: cluster-capable, library for parallel computation in Python.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Datafusion&lt;/strong&gt;: rust-based, Arrow-powered in-memory data analytics&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt;: containerisation solution&lt;/li&gt;&lt;li&gt;&lt;strong&gt;FP&lt;/strong&gt;: as in &lt;em&gt;Functional Programming&lt;/em&gt;. Software development paradigm based on immutable state, among other things. Scala and Haskell are some the most mainstream languages for it&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Flink&lt;/strong&gt;: cluster computing framework for big data, stream focused&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Forth&lt;/strong&gt;: stack based, low level programming language. Not in common use.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;FoundationDB&lt;/strong&gt;: multi-model distributed NoSQL database, offering &quot;build your own abstraction&quot; capabilities&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Go&lt;/strong&gt;: statically typed, compiled programming language&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Haskell&lt;/strong&gt;: statically typed, purely functional programming language&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Hive&lt;/strong&gt;: data warehousing project over Hadoop, roughly based in &quot;tables&quot;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Kafka&lt;/strong&gt;: cluster based stream processing platform (often used as a message bus) written in Scala&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;: container orchestration system for managing application deployment and scaling. Written in Go, depending (non-strictly) on Docker&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Presto&lt;/strong&gt;: distributed SQL engine for big data&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;: interpreted high level programming language, very extended in data science and engineering&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rust&lt;/strong&gt;: memory safe, concurrency safe programming language. Has some functional capabilities&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scala&lt;/strong&gt;: JVM based language offering strong typing and functional and OOP capabilities&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Spark&lt;/strong&gt;: cluster computing framework for big data, batch and stream (stronger in batch)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;These cover a range of the data engineering space (Flink, Spark), as well as technologies I want to get better at and are close enough (Kubernetes, FoundationDB) and technologies I know but are not directly related (AWK, APL, Forth) and are used as anchors.&lt;br /&gt;&lt;h3 id=&quot;toc_3&quot;&gt;Anchors&lt;/h3&gt;To display relative positions, I needed to anchor some of the technologies. For instance, Haskell and APL set the bar for &lt;em&gt;difficulty&lt;/em&gt;, with AWK setting the minimum, and &lt;em&gt;Python&lt;/em&gt; and &lt;em&gt;Forth&lt;/em&gt; set the extremes for saturation. Everything else is placed in relation with these.&lt;br /&gt;&lt;h3 id=&quot;toc_4&quot;&gt;Links and colours&lt;/h3&gt;In the map, I have used colours to distinguish languages, frameworks, libraries, containerisation and databases. Colour is not fundamental though, links are. Related technologies are linked: Spark is written in Scala, and can be used with Scala, Python and other languages. Hence, changes in market saturation for Spark indirectly affect market saturation for Scala. &lt;br /&gt;&lt;h3 id=&quot;toc_5&quot;&gt;Empirical map division&lt;/h3&gt;We can think of the map as divided in 2 areas vertically (high barrier to entry and low barrier to entry) and 3 areas horizontally (saturated, accessible, desaturated). &lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-dzhHYEy-VnM/XSHYUALjRWI/AAAAAAAAE3w/5oBjrrqqUSAxXASeKdDjjl0F6e6KMRGFgCLcBGAs/s1600/Tech_Landscape-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;480&quot; src=&quot;https://1.bp.blogspot.com/-dzhHYEy-VnM/XSHYUALjRWI/AAAAAAAAE3w/5oBjrrqqUSAxXASeKdDjjl0F6e6KMRGFgCLcBGAs/s640/Tech_Landscape-2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 id=&quot;toc_6&quot;&gt;Quick overview&lt;/h3&gt;If you were a CTO, you&#39;d probably be interested in:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Low barrier to entry, saturated market for high turnover positions (easier and cheaper to hire and train)&lt;/li&gt;&lt;li&gt;Accessible currently becoming saturated for more stable positions (becoming easier to hire in the future)&lt;/li&gt;&lt;li&gt;High barrier to entry, with growing markets for proof of concepts, exploration (exploring new technologies that may make an impact in the future)&lt;/li&gt;&lt;/ul&gt;A map like the one above can help make these decisions.&lt;br /&gt;For deciding on future work, I&#39;d be (as a consultant) interested in:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First, growing market, high barrier to entry for current learning. If the barrier to entry is too low and the market is lucrative enough any return on time investment will tend to 0 in the end otherwise.&lt;/li&gt;&lt;li&gt;Second, accessible with low-to-mid barrier to entry for imminent work opportunities.&lt;/li&gt;&lt;li&gt;Finally, to hedge bets on a long term plan, anything which is very low saturation, and where the market is unknown or may be in growth.&lt;/li&gt;&lt;/ul&gt;With this map (which is suited to my current knowledge and interests) I can definitely answer the question of where I should put my efforts right now.&lt;br /&gt;&lt;h3 id=&quot;toc_7&quot;&gt;Curiosities&lt;/h3&gt;Haskell and Rust raise interesting questions. Haskell has a very high barrier to entry, the market is not very large and might not be growing fast, but there are developers working in other languages (Scala, Rust, Kotlin, Go, even Python) that would love the opportunity to &lt;em&gt;work&lt;/em&gt; in Haskell. This makes the Haskell job market actually saturated (or at least saturated if you consider worldwide market). Thus, starting a company focused on Haskell might not be as bad of an idea as it might sound. Similarly with Rust: Rust is growing as a side project language, the amount of developers familiar with the language is growing faster than the market and thus is an interesting target for a starting company.&lt;br /&gt;&lt;br /&gt;We&#39;d have Python on the other side: since it is taking over as the &lt;em&gt;lingua franca&lt;/em&gt; of data science and engineering, and becoming one of the teaching languages at universities, the amount of developers with enough knowledge to become part of the work pool is growing faster than the market (even if the market for Python is growing at a fast pace). It makes it an ideal language for creating a company or a consultancy company (large pool of candidate workers), but not so interesting for being an independent consultant, since competition could be too large&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;Questions and further ideas&lt;/h2&gt;This is the approach and train of thought I have followed to trace these ideas, but it’s still a work in progress. I’d like to hear what you have to say about this: what would you change? What would you do different? I&#39;m still unsure about using market saturation and arrows to show market and pool of workers behaviour, but I have not found anything easier to represent. Ideas? And here are some areas I’m unsure or where I have more questions.&lt;br /&gt;&lt;h3 id=&quot;toc_9&quot;&gt;What other approaches would you have taken to explore this questions?&lt;/h3&gt;There are probably many other ways you can take to approach these questions. What would be yours?&lt;br /&gt;&lt;h3 id=&quot;toc_10&quot;&gt;Do you think &lt;em&gt;market size&lt;/em&gt; would need to be shown?&lt;/h3&gt;It could be shown with a circle (different sizes to be able to compare) below the arrow indicating behaviour of saturation but that could make the map way too complex. Any other ideas? Do you think it is that important, as long as saturation is taken into account?&lt;br /&gt;&lt;h3 id=&quot;toc_11&quot;&gt;Links between related technologies are a bit hazy&lt;/h3&gt;The links between technologies are a bit too abstract. An &quot;increase&quot; in &quot;Python&quot; moves &quot;higher&quot; Airflow, Spark, Dask and any related technologies... but in what sense? Popularity? Market share? Market saturation? I suspect the link is &lt;em&gt;useful to see&lt;/em&gt;, and it is supposed to bring some dynamic/movement, but I&#39;m still unsure &lt;em&gt;how&lt;/em&gt;.&lt;br /&gt;&lt;h3 id=&quot;toc_12&quot;&gt;Flows&lt;/h3&gt;An interesting approach I didn&#39;t pursue is using &lt;a href=&quot;https://en.wikipedia.org/wiki/Flow_map&quot;&gt;flow maps&lt;/a&gt;. For each programming language, there is a set of flows into other languages. For instance, developers in Scala have a tendency to be interested in Kotlin, Rust and Haskell, with some making the jump as soon as market is able to absorb them (and for each of these flows we can assume there is a non-zero flow to the other side). Similarly, we&#39;d have flows from Python to Go and Scala, from Go to Rust. These could inform on market trends and behaviours, but they are not only hard to show on a map (what would be the axes? what would be the anchors?) but also might not be interesting enough on their own. What do you think?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/612592635312143771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/612592635312143771'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/07/a-section-of-map-of-data-engineering.html' title='A (section) of a map of the data engineering space'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-pl5XcFnLkZI/XSHYMfeSZmI/AAAAAAAAE3s/Fkf79oWlv4syn-INbBW6Q1391TUM8VG3ACLcBGAs/s72-c/Tech_Landscape-1.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-6842381607863343092</id><published>2019-06-25T20:01:00.002+02:00</published><updated>2019-06-25T20:02:34.288+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Formal methods"/><category scheme="http://www.blogger.com/atom/ns#" term="Functional Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="History"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="Wardley maps"/><title type='text'>2019#18 Readings of the week</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-tvchF8UuJUU/XRJgG5mSmyI/AAAAAAAAE3Y/tS-dpVUQhmcrEPAHDsg-3RxcJwn0Bs5sQCK4BGAYYCw/s1600/nik-shuliahin-rkFIIE9PxH0-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;219&quot; src=&quot;https://2.bp.blogspot.com/-tvchF8UuJUU/XRJgG5mSmyI/AAAAAAAAE3Y/tS-dpVUQhmcrEPAHDsg-3RxcJwn0Bs5sQCK4BGAYYCw/s640/nik-shuliahin-rkFIIE9PxH0-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/@tjump?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Nik Shuliahin&lt;/a&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Software engineering, history, planning, data engineering. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://www.global.hokudai.ac.jp/blog/fresh-look-at-mysterious-nasca-lines-in-peru/&quot;&gt;Fresh look at mysterious Nasca lines in Peru&lt;/a&gt;&lt;/h2&gt;An analysis of what kind of birds they represented.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.intermix.io/blog/4-simple-steps-to-set-up-your-wlm-in-amazon-redshift-the-right-way/&quot;&gt;4 Simple Steps To Set-up Your WLM in AWS Redshift&lt;/a&gt;&lt;/h2&gt;Good suggestions on workload management and process queues for Redshift&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;http://www.evanmiller.org/adventure-games-and-eigenvalues.html&quot;&gt;Adventure Games and Eigenvalues&lt;/a&gt;&lt;/h2&gt;Finding dead ends in a game using Markov processes (instead of a formal language approach)&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://badootech.badoo.com/when-pigs-fly-optimising-bytecode-interpreters-f64fb6bfa20f&quot;&gt;When pigs fly: optimising bytecode interpreters&lt;/a&gt;&lt;/h2&gt;Quite a meaty post about... well, optimising interpreters (incidentally, bytecode based)&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://aeon.co/essays/how-to-build-a-metaphor-to-change-people-s-minds&quot;&gt;See through words&lt;/a&gt;&lt;/h2&gt;Did you know metaphor design is a thing? Read this article for more.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://www.hillelwayne.com/post/decision-tables/&quot;&gt;Decision tables&lt;/a&gt;&lt;/h2&gt;Calling decision tables a formal method may be a stretch, but they can clarify your thinking. And that is one of the powerful things formal methods bring.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://medium.com/@alexander.zaidel/monad-transformers-arent-hard-23387c7ef4a6&quot;&gt;Monad Transformers aren’t hard!&lt;/a&gt;&lt;/h2&gt;No, they aren&#39;t, but your heap can suffer in Scala!&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=eIc2Gmmio3c&quot;&gt;🎥 Wardley Maps Saved The Day - How Stack Overflow Enterprise automated all the things...&lt;/a&gt;&lt;/h2&gt;I’ve been into Wardley mapping for several months (even gave a &lt;a href=&quot;https://github.com/rberenguel/mapping&quot;&gt;presentation on Mapping at SoCraTes UK 2019&lt;/a&gt;) and I’m basically consuming any content related to it. &lt;a href=&quot;https://m.youtube.com/watch?v=Gfq3ocmadZo&quot;&gt;This short video&lt;/a&gt; is a very good intro to Wardley mapping, by the way.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=mH6cr--Fl1g&quot;&gt;🎥 Cartoons are about how drawing and writing work together on the page&lt;/a&gt;&lt;/h2&gt;A quite funny video presentation by Tom Gauld&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Goal-Process-Ongoing-Improvement-ebook/dp/B002LHRM2O/ref=as_li_ss_tl?crid=3FGYM265WL44N&amp;amp;keywords=the+goal+by+eliyahu+goldratt&amp;amp;qid=1561483330&amp;amp;s=gateway&amp;amp;sprefix=the+goal+,aps,250&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=4e9c6aea3b5a0d3d611e81c4c70f4383&amp;amp;language=en_US&quot;&gt;📚 The goal: a process of ongoing improvement&lt;/a&gt;&lt;/h2&gt;It’s like &lt;a href=&quot;https://www.amazon.com/Sophies-World-Novel-History-Philosophy/dp/B000OZ0J0C/ref=as_li_ss_tl?_encoding=UTF8&amp;amp;qid=1561485621&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=f4e7f7647db2d50dabb96d55eae025aa&quot;&gt;Sophie’s World&lt;/a&gt; but for &lt;a href=&quot;https://en.wikipedia.org/wiki/Theory_of_constraints&quot;&gt;Theory of Constraints&lt;/a&gt; (with a whiz of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Toyota_Production_System&quot;&gt;Toyota Production System&lt;/a&gt; probably)&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Make-Your-Contacts-Count-Networking-ebook/dp/B001IDZ4VI/ref=as_li_ss_tl?keywords=make+cntacts+count&amp;amp;qid=1561483506&amp;amp;s=gateway&amp;amp;sr=8-1-spell&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=9fff99342fc4d2e8b53e395560f457c7&amp;amp;language=en_US&quot;&gt;📚 Make your contacts count&lt;/a&gt;&lt;/h2&gt;Networking tips. It describes very directed ways of building a network and actually being useful in it, not just a parasite.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/6842381607863343092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/6842381607863343092'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/06/201917-readings-of-week_25.html' title='2019#18 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-tvchF8UuJUU/XRJgG5mSmyI/AAAAAAAAE3Y/tS-dpVUQhmcrEPAHDsg-3RxcJwn0Bs5sQCK4BGAYYCw/s72-c/nik-shuliahin-rkFIIE9PxH0-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-3732652162293613150</id><published>2019-06-17T17:24:00.002+02:00</published><updated>2019-06-17T17:24:32.351+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Bizarre"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="History"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><title type='text'>2019#17 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: &lt;i&gt;This week is a bit light on technical content because I was attending &lt;a href=&quot;https://scaladays.org/&quot;&gt;Scala Days 2019&lt;/a&gt; in Lausanne and I had enough with the talks.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Software engineering, psychology, history. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-qFdxCgv4TDI/XQewFdFXafI/AAAAAAAAE3I/48liw6Roo3E1kszkkE-vm0CUCtXUcFvzACK4BGAYYCw/s1600/Untitled.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;302&quot; src=&quot;https://2.bp.blogspot.com/-qFdxCgv4TDI/XQewFdFXafI/AAAAAAAAE3I/48liw6Roo3E1kszkkE-vm0CUCtXUcFvzACK4BGAYYCw/s640/Untitled.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small; text-align: start;&quot;&gt;Photo by&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/@edu5669?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;text-align: start;&quot;&gt;Eduardo Romero&lt;/a&gt;&lt;span style=&quot;font-size: small; text-align: start;&quot;&gt;&amp;nbsp;on&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/search/photos/hexagon?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;text-align: start;&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/lifeandstyle/2019/jun/14/the-mindfulness-conspiracy-capitalist-spirituality&quot;&gt;The mindfulness conspiracy&lt;/a&gt;&lt;/h2&gt;It’s a trap!&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://frieze.com/article/one-diagram-mind-them-all-hyperspace-1970s&quot;&gt;One Diagram To Mind Them All: Hyperspace in the 1970s&lt;/a&gt;&lt;/h2&gt;The beginnings and history of mind mapping, and Tony Buzan in particular.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://arstechnica.com/science/2019/06/physicists-hunt-uranium-cubes-to-shed-light-on-germanys-failed-nuclear-reactor/&quot;&gt;A tale of lost WW2 uranium cubes shows why Germany’s nuclear program failed&lt;/a&gt;&lt;/h2&gt;Splitting your efforts won’t lead to faster splitting of the atom.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://circleci.com/blog/exploring-domain-driven-design-at-circleci/&quot;&gt;Exploring Domain-Driven Design at CircleCI&lt;/a&gt;&lt;/h2&gt;DDD is an interesting concept, and knowing how companies implement it is always good. This lacks a bit of more material though.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://medium.com/@kentbeck_7670/a-years-worth-c1cbc3085e9d&quot;&gt;A Year’s Worth&lt;/a&gt;&lt;/h2&gt;An interesting way of visualizing a year’s worth of technical effort, by Kent Beck.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://readonlymemory.vg/the-making-of-lemmings/&quot;&gt;The Making of Lemmings&lt;/a&gt;&lt;/h2&gt;I enjoy a lot tales of the dark ages of gaming. If you haven’t, read &lt;a href=&quot;https://www.amazon.com/Making-Prince-Persia-Jordan-Mechner-ebook/dp/B005WUE6Q2/ref=as_li_ss_tl?crid=3ENBE4F7IKDB0&amp;amp;keywords=making+of+prince+of+persia&amp;amp;qid=1560782409&amp;amp;s=gateway&amp;amp;sprefix=making+of+prince+of+,aps,217&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=5f70e0cb70e47d80daf88385f932458e&amp;amp;language=en_US&quot;&gt;The Making of Prince of Persia&lt;/a&gt; (you may enjoy the “prequel”, &lt;a href=&quot;https://www.amazon.com/Making-Karateka-Jordan-Mechner-ebook/dp/B00AEH0EDM/ref=as_li_ss_tl?keywords=making+of+karateka&amp;amp;qid=1560782518&amp;amp;s=gateway&amp;amp;sr=8-2&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=3f405018366d52fa4b4bd79acefb5abb&amp;amp;language=en_US&quot;&gt;The Making of Karateka&lt;/a&gt;) or &lt;a href=&quot;https://www.amazon.com/Masters-Doom-Created-Transformed-Culture-ebook/dp/B000FBFNL0/ref=as_li_ss_tl?keywords=masters+of+doom&amp;amp;qid=1560782455&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=f32c964a096d1cfb61cd10ee5782387b&amp;amp;language=en_US&quot;&gt;Masters of Doom&lt;/a&gt;).&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://stepsandleaps.wordpress.com/2017/10/17/feynmans-breakthrough-disregard-others/&quot;&gt;Feynman’s Breakthrough, Disregard Others!&lt;/a&gt;&lt;/h2&gt;If you focus too much in what others do, you’ll lose your uniqueness.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Tribe-Mentors-Short-Advice-World-ebook/dp/B071KJ7PTB/ref=as_li_ss_tl?keywords=tribe+of+mentors&amp;amp;qid=1560783144&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=8870f82e40b9d531c4a4763f672d5658&amp;amp;language=en_US&quot;&gt;📚 Tribe of mentors&lt;/a&gt;&lt;/h2&gt;A book by Tim Ferris, where he quick-interviews &lt;em&gt;a lot&lt;/em&gt; of people, asking tips. It’s a kind of a not-amusing read, because it’s not designed to be “read”, I suspect.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.amazon.com/How-Draw-Fantasy-Art-Maps-ebook/dp/B013KZ269Y/ref=as_li_ss_tl?keywords=%F0%9F%93%9A+How+to+Draw+Fantasy+Art+and+RPG+Maps:+Step+by+Step+Cartography+for+Gamers+and+Fans&amp;amp;qid=1560783080&amp;amp;s=gateway&amp;amp;sr=8-1-fkmr0&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=ad628539852ecfa9b8b1fac62c697904&amp;amp;language=en_US&quot;&gt;📚 How to Draw Fantasy Art and RPG Maps: Step by Step Cartography for Gamers and Fans&lt;/a&gt;&lt;/h2&gt;I had a lot of fun with this one. Super-readable and easy to follow.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/3732652162293613150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/3732652162293613150'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/06/201917-readings-of-week.html' title='2019#17 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-qFdxCgv4TDI/XQewFdFXafI/AAAAAAAAE3I/48liw6Roo3E1kszkkE-vm0CUCtXUcFvzACK4BGAYYCw/s72-c/Untitled.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-5328722872191244894</id><published>2019-06-10T21:18:00.001+02:00</published><updated>2019-06-10T21:18:17.945+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Bizarre"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Maps"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="Wardley maps"/><title type='text'>2019#16 Readings of the week</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-GRhlw_0UHeM/XP6sNQGEQBI/AAAAAAAAE2o/EoS5L6VcKWYMt0vUfyNC1LtaQrNTUwrtACK4BGAYYCw/s1600/roman-mager-59976-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://2.bp.blogspot.com/-GRhlw_0UHeM/XP6sNQGEQBI/AAAAAAAAE2o/EoS5L6VcKWYMt0vUfyNC1LtaQrNTUwrtACK4BGAYYCw/s640/roman-mager-59976-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Photo by&amp;nbsp;&lt;a href=&quot;https://unsplash.com/@roman_lazygeek?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;Roman Mager&lt;/a&gt;&amp;nbsp;on&amp;nbsp;&lt;a href=&quot;https://unsplash.com/search/photos/blackboard-formula?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Wardley mapping, data engineering and big data, maths. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://www.nytimes.com/2019/06/06/business/nba-wealth-manager-klay-thompson-joe-mclean.html&quot;&gt;Meet the Money Whisperer to the Super-Rich N.B.A. Elite&lt;/a&gt;&lt;/h2&gt;It surely has to be an interesting job&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;http://cognitivemedium.com/tat/index.html&quot;&gt;Thought as a Technology&lt;/a&gt;&lt;/h2&gt;An essay by Michael Nielsen. Very recommended.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://arstechnica.com/science/2019/06/physicists-hunt-uranium-cubes-to-shed-light-on-germanys-failed-nuclear-reactor/&quot;&gt;A tale of lost WW2 uranium cubes shows why Germany’s nuclear program failed&lt;/a&gt;&lt;/h2&gt;Curio&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://medium.com/swlh/counting-to-infinity-at-compile-time-2bbdd6446329&quot;&gt;Counting to infinity at compile time – The Startup – Medium&lt;/a&gt;&lt;/h2&gt;You can do really weird things with Scala at compile time, and &lt;a href=&quot;http://bit-player.org/wp-content/extras/bph-publications/AmSci-2001-11-Hayes-ternary.pdf&quot;&gt;base 3 is pretty cool&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;http://bastian.rieck.me/blog/posts/2019/morse_theory/&quot;&gt;A visual introduction to Morse theory&lt;/a&gt;&lt;/h2&gt;I was surprised to see this posted on Hacker News, so decided to read it for the &quot;good old times&quot;. Learnt something (since I never had a class on Morse theory, it was just one of those intriguing sections in the library)&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://asia.nikkei.com/Life-Arts/Life/The-cutting-edge-of-cutting-How-Japanese-scissors-have-evolved2&quot;&gt;The cutting-edge of cutting: How Japanese scissors have evolved&lt;/a&gt;&lt;/h2&gt;I have some weird scissors, but these go beyond weird.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://memetician.livejournal.com/201202.html&quot;&gt;A different kind of string theory: Antoni Gaudi&lt;/a&gt;&lt;/h2&gt;That idea was clearly genius.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://www.hillelwayne.com/post/nix/&quot;&gt;Formally Specifying a Package Manager&lt;/a&gt;&lt;/h2&gt;By using &lt;a href=&quot;http://alloytools.org/&quot;&gt;Alloy&lt;/a&gt;. I really like Alloy.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;http://www.paulgraham.com/makersschedule.html&quot;&gt;Maker&#39;s Schedule, Manager&#39;s Schedule&lt;/a&gt;&lt;/h2&gt;I was talking with a friend earlier about a previous post in my Weekly Readings series (&lt;a href=&quot;https://knowyourteam.com/blog/2019/03/20/do-i-truly-want-to-become-a-manager/&quot;&gt;Do I truly want to become a manager?&lt;/a&gt;) and he hadn&#39;t read this one, so I&#39;ll share it here too.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;http://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html&quot;&gt;Schema evolution in Avro, Protocol Buffers and Thrift&lt;/a&gt;&lt;/h2&gt;I kind of like the sound of how Avro handles schemas. Seems an efficient way, although seems... prone to possible disasters.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/big-data/improve-apache-spark-write-performance-on-apache-parquet-formats-with-the-emrfs-s3-optimized-committer/&quot;&gt;Improve Apache Spark write performance on Apache Parquet formats with the EMRFS S3-optimized committer&lt;/a&gt;&lt;/h2&gt;This is optional in EMR 5.19 and will be the default in 5.20 so we won&#39;t see much difference, except in performance.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://cutebouncingbunnies.wordpress.com/2017/06/26/why-enthusiasm-is-a-bad-thing-in-a-cto/&quot;&gt;Why Enthusiasm is a Bad Thing in a CTO&lt;/a&gt;&lt;/h2&gt;Hey, look a squirrel is 10x more dangerous when it&#39;s the CTO spotting squirrels.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://github.com/rberenguel/mapping&quot;&gt;🖥 Mapping as a Tool for Thought&lt;/a&gt;&lt;/h2&gt;A presentation I gave on Wardley mapping and &quot;mapping&quot; in general at &lt;a href=&quot;http://socratesuk.org/&quot;&gt;SoCraTesUK 2019&lt;/a&gt;. I really enjoy this conference.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=deHM34b21v4&quot;&gt;🎥 Skip the first three months of development for your next app&lt;/a&gt;&lt;/h2&gt;This ties very well with some of the Wardley mapping concepts.&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5328722872191244894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5328722872191244894'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/06/201916-readings-of-week.html' title='2019#16 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-GRhlw_0UHeM/XP6sNQGEQBI/AAAAAAAAE2o/EoS5L6VcKWYMt0vUfyNC1LtaQrNTUwrtACK4BGAYYCw/s72-c/roman-mager-59976-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-4782951256703787140</id><published>2019-06-04T20:34:00.001+02:00</published><updated>2019-06-04T20:34:53.498+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AWK"/><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="ZIO"/><title type='text'>2019#15 Readings of the week</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-VN_oDTRxi4o/XPa4raGC7aI/AAAAAAAAE0w/dMiaLftMKsw1DgPhmv0SvUqyP-0Lf_HhwCK4BGAYYCw/s1600/TGNS153genome.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://4.bp.blogspot.com/-VN_oDTRxi4o/XPa4raGC7aI/AAAAAAAAE0w/dMiaLftMKsw1DgPhmv0SvUqyP-0Lf_HhwCK4BGAYYCw/s400/TGNS153genome.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.tomgauld.com/&quot;&gt;Tom Gauld (for New Scientist, from his blog, sorry!)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Data engineering, adtech, ZIO, Rust, writing, some miscellaneous stuff. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://dvt.name/2019/06/03/hacking-the-casio-f-91w-to-handle-1000-psi/&quot;&gt;Hacking the Casio F-91W to Handle 1000+ PSI&lt;/a&gt;&lt;/h2&gt;This was an amusing find. I wonder where my F-91 is.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://blog.dilbert.com/2015/08/22/the-day-you-became-a-better-writer-2nd-look/&quot;&gt;The Day You Became a Better Writer (2nd Look)&lt;/a&gt;&lt;/h2&gt;Top notch, short and sweet writing tips by Scott Adams (of Dilbert fame)&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://thenewwazoo.github.io/clone.html&quot;&gt;Rebuffing the Attack of the Clones&lt;/a&gt;&lt;/h2&gt;I’m guilty of unnecessary cloning. Shame, shame.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://decentium.org/x/almstdigital/generating-ge&quot;&gt;Generating geometric image placeholders client-side&lt;/a&gt;&lt;/h2&gt;Neat! I had written something similar in C &lt;a href=&quot;https://www.mostlymaths.net/2010/04/approximating-images-with-randomly.html&quot;&gt;a long time ago&lt;/a&gt;. It was slow! This is blazingly fast.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://www.wsj.com/articles/behavioral-ad-targeting-not-paying-off-for-publishers-study-suggests-11559167195&quot;&gt;Behavioral Ad Targeting Not Paying Off for Publishers, Study Suggests&lt;/a&gt;&lt;/h2&gt;This is surprising. I’d expect CPM to be higher for high value programmatically bid users.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;http://thistle-threads.blogspot.com/2019/05/hand-skills-doctors-of-sewing-needed.html&quot;&gt;The Embroiderer&#39;s Story: Hand Skills&lt;/a&gt;&lt;/h2&gt;An unexpected consequence of the digitalisation of our leisure&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;http://tamaszilagyi.com/blog/2019/2019-03-05-dbt/&quot;&gt;No frills data warehousing with dbt&lt;/a&gt;&lt;/h2&gt;I’ve been considering this tool (the open source one, not the cloud offering, I have Airflow for that) for a while.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;http://degoes.net/articles/zio-solo&quot;&gt;Why I&#39;m Stepping Back from Scalaz (John De Goes)&lt;/a&gt;&lt;/h2&gt;A very well reasoned writing. I’m all for ZIO.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://flink.apache.org/2019/05/14/temporal-tables.html&quot;&gt;Apache Flink: Flux capacitor, huh? Temporal Tables and Joins in Streaming SQL&lt;/a&gt;&lt;/h2&gt;I don’t use Flink, but it’s there, staring at me.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://bmwlog.pp.ua/post/using-poetry-in-production&quot;&gt;Using Poetry in production&lt;/a&gt;&lt;/h2&gt;It sounds powerful in combination with my dear &lt;a href=&quot;https://www.github.com/pyenv/pyenv&quot;&gt;pyenv&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://www.andrewaskins.com/how-i-run-a-company-with-adhd/&quot;&gt;How I run a company with ADHD&lt;/a&gt;&lt;/h2&gt;I somehow can relate, I wonder why OH HEY A SQUIRREL&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://www.categoricaldata.net/&quot;&gt;CQL: A categorical query language&lt;/a&gt;&lt;/h2&gt;The categorical hype rises. I’d like to see scheme-based data analysis at some point (that could be a thing at some point, schemes as in generalized algebraic manifolds)&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Baking-Kafka-Tom-Gauld/dp/1770462961/ref=as_li_ss_tl?ie=UTF8&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=291411f7971e475e08fbf060b1ddb007&quot;&gt;📚 Baking with Kafka&lt;/a&gt;&lt;/h2&gt;An amusing book by cartoonist Tom Gauld.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://skillsmatter.com/skillscasts/13456-keynote-simon-wardley&quot;&gt;🎥 Crossing the River by Feeing the Stones&lt;/a&gt;&lt;/h2&gt;I&#39;ve been doing Wardley maps for close to a month, and they have been really influential in how I approach a lot of things. I will be giving a short introduction to them this weekend at &lt;a href=&quot;http://socratesuk.org/&quot;&gt;SoCraTesUK 2019&lt;/a&gt;, if you are there say hello (and I&#39;ll post the slides soon)&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://github.com/rberenguel/awkrdeck&quot;&gt;AWKrdeck: Deckset to Reveal.js&lt;/a&gt;&lt;/h2&gt;I wrote a simple converter from &lt;a href=&quot;http://deckset.com/&quot;&gt;Deckset&lt;/a&gt; style presentations to similarly-themed &lt;a href=&quot;http://revealjs.com/&quot;&gt;Reveal.js&lt;/a&gt; presentations using some AWK and Pandoc.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4782951256703787140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4782951256703787140'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/06/201915-readings-of-week.html' title='2019#15 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-VN_oDTRxi4o/XPa4raGC7aI/AAAAAAAAE0w/dMiaLftMKsw1DgPhmv0SvUqyP-0Lf_HhwCK4BGAYYCw/s72-c/TGNS153genome.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-8195220904298750504</id><published>2019-05-26T11:48:00.000+02:00</published><updated>2019-05-26T11:48:06.420+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Golang"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="TLA+"/><category scheme="http://www.blogger.com/atom/ns#" term="ZIO"/><title type='text'>2019#14 Readings of the week</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-DmRqFA0lfsU/XOpfyjD7AAI/AAAAAAAAE0c/QlQ3KuU-jzEnpGUSYk1XR1ch232oKpLLQCK4BGAYYCw/s1600/darius-soodmand-116246-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;281&quot; src=&quot;https://2.bp.blogspot.com/-DmRqFA0lfsU/XOpfyjD7AAI/AAAAAAAAE0c/QlQ3KuU-jzEnpGUSYk1XR1ch232oKpLLQCK4BGAYYCw/s640/darius-soodmand-116246-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/photos/F8E2tks5N04?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Darius Soodmand&lt;/a&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Data engineering, adtech, functional programing, formal specification. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_0&quot;&gt;&lt;a href=&quot;https://sendgrid.com/blog/schema-management-with-skeema/&quot;&gt;Schema Management With Skeema&lt;/a&gt;&lt;/h2&gt;How &lt;a href=&quot;https://m.youtube.com/watch?v=5OZmqO5D-7o&quot;&gt;SendGrid&lt;/a&gt; manages schema updates internally. A pity it’s focused on MySQL and family and I prefer Postgres&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://www.drmaciver.com/2019/05/how-to-do-hard-things/&quot;&gt;How to do hard things&lt;/a&gt;&lt;/h2&gt;I wasn’t aware, but this is exactly how I approach anything I don’t know how to do. Don’t miss this one.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://notamonadtutorial.com/the-bullshit-i-had-to-go-through-while-organizing-a-software-conference-4de1225d0acb&quot;&gt;The bullshit I had to go through while organizing a software conference&lt;/a&gt;&lt;/h2&gt;I’ve been an organiser, luckily didn’t encounter this. Crossing fingers, since we are preparing stuff at &lt;a href=&quot;https://pybcn.org/&quot;&gt;PyBCN&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;http://fernandoi.cl/blog/posts/altair/&quot;&gt;The reason I am using Altair for most of my visualization in Python&lt;/a&gt;&lt;/h2&gt;I usually like having the possibility of maximum power and expressiveness... But eventually I just want to make easy things easy. I’ll try &lt;a href=&quot;https://altair-viz.github.io/&quot;&gt;Altair&lt;/a&gt; next time I need to plot anything. Lately I’ve gone a lot to gnuplot, to be fair: nothing beats it to just plot a text file you have lying around.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://blog.argoproj.io/introducing-argo-a-container-native-workflow-engine-for-kubernetes-55c0b4b76fac&quot;&gt;Introducing Argo — A Container-Native Workflow Engine for Kubernetes&lt;/a&gt;&lt;/h2&gt;This is what is now being used at &lt;a href=&quot;https://www.bitphy.com/en/&quot;&gt;BitPhy&lt;/a&gt;, after I recommended them to... well, not use &lt;a href=&quot;https://github.com/apache/airflow&quot;&gt;Airflow&lt;/a&gt;. To be fair they were considering &lt;a href=&quot;https://argoproj.github.io/&quot;&gt;Argo&lt;/a&gt; and Airflow, and given they are heavy on Kubernetes, Argo sounds a better fit.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://knowyourteam.com/blog/2019/03/20/do-i-truly-want-to-become-a-manager/&quot;&gt;Do I truly want to become a manager?&lt;/a&gt;&lt;/h2&gt;Six questions you should consider before thinking of making the leap out of the IC route. Thanks to CM for sharing it.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=19900955&quot;&gt;Ask HN: What overlooked class of tools should a self-taught programmer look into&lt;/a&gt;&lt;/h2&gt;You can find some suggestions in these answers.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://medium.com/teads-engineering/give-meaning-to-100-billion-events-a-day-part-ii-how-we-use-and-abuse-redshift-to-serve-our-data-bc23d2ed3e07&quot;&gt;Give meaning to 100 Billion events a day&lt;/a&gt;&lt;/h2&gt;How &lt;a href=&quot;https://www.teads.tv/&quot;&gt;Teads&lt;/a&gt; leverages AWS Redshift.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;http://cloudmark.github.io/A-Journey-To-Zio/&quot;&gt;Performant Functional Programming to the max with ZIO&lt;/a&gt;&lt;/h2&gt;You were wondering: which &lt;a href=&quot;https://scalaz.github.io/scalaz-zio/&quot;&gt;ZIO&lt;/a&gt; post is he going to share this week?&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.forbes.com/sites/alexkonrad/2019/04/29/meet-matt-calkins-billionaire-board-game-god-and-techs-hidden-disruptor/amp/&quot;&gt;Meet Matt Calkins: Billionaire, Board Game God And Tech&#39;s Hidden Disruptor&lt;/a&gt;&lt;/h2&gt;A friend of mine is designing and producing a board game (I’ll share the Kickstarter when is ready), so this was a fun read. He’s not a billionaire though.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://powerspace.tech/open-sourcing-the-first-openrtb-scala-framework-686dde0a0d40&quot;&gt;Open-sourcing the first OpenRTB Scala framework&lt;/a&gt;&lt;/h2&gt;I’m not sure what the performance of a &lt;a href=&quot;https://www.iab.com/guidelines/real-time-bidding-rtb-project/&quot;&gt;RTB&lt;/a&gt; can be in Scala, but I’m definitely interested.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://boats.gitlab.io/blog/post/zero-cost-abstractions/&quot;&gt;Zero Cost Abstractions&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;Rust&lt;/a&gt; is always &lt;em&gt;sold&lt;/em&gt; as a zero-cost abstraction language. What does that exactly mean?&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://techxplore.com/news/2019-04-data-compression-technique-faster.html&quot;&gt;A novel data-compression technique for faster computer programs&lt;/a&gt;&lt;/h2&gt;Don’t know, this sounds pretty much what &lt;a href=&quot;http://blosc.org/pages/blosc-in-depth/&quot;&gt;Blosc&lt;/a&gt; does.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=5OZmqO5D-7o&quot;&gt;🎥 Fast Data with Apache Ignite and Apache Spark&lt;/a&gt;&lt;/h2&gt;(this is an oldie) I tried Ignite+Spark around 1 year ago, and couldn’t get it to work properly (segmentation fault!). I’ll try again: it can open up a lot of things if it works as promised.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://channel9.msdn.com/Events/Build/2014/3-642&quot;&gt;🎥 Thinking for Programmers&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;https://en.m.wikipedia.org/wiki/Leslie_Lamport&quot;&gt;Leslie Lamport&lt;/a&gt; selling you the why of specifications. Very recommended, specially for people who think specifying is complex, long, unnecessary or anti-agile.&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=wFe1g3cLLso&quot;&gt;🎥 Live Coding with Rust and Actix&lt;/a&gt;&lt;/h2&gt;I was very impressed by this video (I watched it as “background”, not actively). Very focused, and all written in one go.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=SKcF3HPnYqg&amp;amp;index=17&amp;amp;list=PLbzoR-pLrL6q7uYN-94-p_-Q3hyAmpI7o&quot;&gt;🎥 Solving every-day data problems with FoundationDB&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;https://www.foundationdb.org/&quot;&gt;FoundationDB&lt;/a&gt; is on my list of technologies to watch/follow and learn. Get a glimpse about why here.&lt;br /&gt;&lt;h2 id=&quot;toc_17&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Soft-Skills-Software-Developers-Manual/dp/B0158SJ3EM/ref=as_li_ss_tl?keywords=soft+skills&amp;amp;qid=1558783110&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=660334b6bd6b4ca2ac87308f0e6e81af&amp;amp;language=en_US&quot;&gt;📚 Soft Skills&lt;/a&gt;&lt;/h2&gt;It’s not a bad book, but is basically a summary of stuff I got from other places already. You can give it a go.&lt;br /&gt;&lt;h2 id=&quot;toc_18&quot;&gt;&lt;a href=&quot;https://music.apple.com/es/album/time-out/316351910?l=en&quot;&gt;🎼 Time Out by the Dave Brubeck Quartet&lt;/a&gt;&lt;/h2&gt;Saw this recommended somewhere, and I’m liking it a lot (won’t remove Bill Evans as my favourite jazz pianist though)&lt;br /&gt;&lt;h2 id=&quot;toc_19&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8195220904298750504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8195220904298750504'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/05/201914-readings-of-week.html' title='2019#14 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-DmRqFA0lfsU/XOpfyjD7AAI/AAAAAAAAE0c/QlQ3KuU-jzEnpGUSYk1XR1ch232oKpLLQCK4BGAYYCw/s72-c/darius-soodmand-116246-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-9065405408610337025</id><published>2019-05-21T23:41:00.000+02:00</published><updated>2019-05-21T23:41:08.786+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spacemacs"/><title type='text'>LSP for Python and Scala</title><content type='html'>If you have have known me for any length of time you&#39;ll know I write mostly Python and Scala lately (Rust is getting into the mix slowly). And you should know, I am a heavy &lt;code&gt;emacs&lt;/code&gt; user. I have been using emacs for close to 15 years, for the past 3 my emacs of choice has been &lt;code&gt;&lt;a href=&quot;http://spacemacs.org/&quot;&gt;spacemacs&lt;/a&gt;&lt;/code&gt;. I used to have a very long, customised and complex .emacs and with &lt;code&gt;spacemacs&lt;/code&gt; I get a mostly-batteries-included package. That&#39;s nice after a while, and I also have gotten really proficient at using evil.&lt;br /&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;One problem of using &lt;code&gt;emacs&lt;/code&gt; is the integration with some languages. If you write Scala, with IntelliJ you get super-fancy completion, refactoring, code analysis, jump-to-definition... Many goodies. In emacs, the best-in-class system used to be &lt;a href=&quot;http://ensime.github.io/&quot;&gt;ensime&lt;/a&gt;. It worked, but it was not really supported for spacemacs (since I&#39;m an old emacs user I could play around that), but the main issue was that my old MacBook was short on memory for running ensime and a lot more. So, I wrote most of my Scala code in hardcode mode. No completion, documentation or jump to definition. &lt;br /&gt;&lt;br /&gt;This is why I learnt how to &lt;a href=&quot;https://www.mostlymaths.net/2019/05/gtags-gnu-global-in-emacs-for-scala.html&quot;&gt;set up GNU global&lt;/a&gt;, jump to definition is just too handy. Luckily, the people at Scala Center not only are smart, but also try to improve developer experience, and had been working in a &lt;em&gt;language server&lt;/em&gt; for Scala for a while, called &lt;a href=&quot;https://scalameta.org/metals/&quot;&gt;metals&lt;/a&gt;. I got it working recently, and it&#39;s great. You get documentation on hover, error messages, jump to definition. Oh, I forgot to mention, the &lt;em&gt;language server protocol&lt;/em&gt; is an invention from Microsoft to standardise how editors handle language completions and all that. They probably introduced it for &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt; (I actually use it from time to time, it has some remote pair programming capabilities I&#39;ll talk someday), but now it&#39;s extending across all editors.&lt;br /&gt;&lt;br /&gt;After using LSP in emacs for Scala for a while I decided to set it up for Python as well, in preparation for our next &lt;a href=&quot;http://pybcn.org/&quot;&gt;PyBCN&lt;/a&gt; &lt;a href=&quot;https://podcasts.apple.com/us/podcast/python-barcelona-podcast/id1412561460&quot;&gt;podcast&lt;/a&gt;, about tools we use. I was pretty happy with the completions I was getting, but semantic completions from a language server are usually better. So far, lsp with python is ok. Oh, you&#39;ll see screenshots at the end!&lt;br /&gt;&lt;br /&gt;You&#39;ll need to install the language server. I usually have a high level Python environment with all my tools, for things I am just starting to work on:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pyenv virtualenv 3.7.1 tools&lt;br /&gt;pyenv activate 3.7.1/envs/tools&lt;br /&gt;pip install &quot;python-language-server[all]&quot; bpython mypy flake8&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;After this, some configuration is needed in &lt;code&gt;emacs&lt;/code&gt;. Here you can find parts of my configuration, commented. These sit in my &lt;code&gt;dotspacemacs/user-config&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;code class=&quot;language-lisp&quot;&gt;;; First come the configurations for Scala language server &lt;br /&gt;;; thingies. sbt is the Scala build system.&lt;br /&gt;&lt;br /&gt;(use-package scala-mode&lt;br /&gt;  :mode &quot;\\.s\\(cala\\|bt\\)$&quot;)&lt;br /&gt;&lt;br /&gt;(use-package sbt-mode&lt;br /&gt;  :commands sbt-start sbt-command&lt;br /&gt;  :config&lt;br /&gt;  (substitute-key-definition&lt;br /&gt;   &#39;minibuffer-complete-word&lt;br /&gt;   &#39;self-insert-command&lt;br /&gt;   minibuffer-local-completion-map))&lt;br /&gt;&lt;br /&gt;;; This is the main mode for LSP&lt;br /&gt;(use-package lsp-mode&lt;br /&gt;  :init (setq lsp-prefer-flymake nil)&lt;br /&gt;  :ensure t)&lt;br /&gt;&lt;br /&gt;;; This makes imenu-lsp-minor-mode available. This minor mode &lt;br /&gt;;; will show a table of contents of methods, classes, variables. &lt;br /&gt;;; You can configure it to be on the left by using `configure`&lt;br /&gt;&lt;br /&gt;(add-hook &#39;lsp-after-open-hook &#39;lsp-enable-imenu)&lt;br /&gt;&lt;br /&gt;;; lsp-ui enables the fancy showing of documentation, error &lt;br /&gt;;; messages and type hints&lt;br /&gt;(use-package lsp-ui&lt;br /&gt;  :ensure t&lt;br /&gt;  :config&lt;br /&gt;  (setq lsp-ui-sideline-ignore-duplicate t)&lt;br /&gt;  (add-hook &#39;lsp-mode-hook &#39;lsp-ui-mode))&lt;br /&gt;&lt;br /&gt;;; company is the best autocompletion system for emacs (probably)&lt;br /&gt;;; and this uses the language server to provide semantic completions&lt;br /&gt;&lt;br /&gt;(use-package company-lsp&lt;br /&gt;  :commands company-lsp&lt;br /&gt;  :config&lt;br /&gt;  (push &#39;company-lsp company-backends))&lt;br /&gt;&lt;br /&gt;;; I use pyenv to handle my virtual environments, so when I enable  &lt;br /&gt;;; pyenv in a Python buffer, it will trigger lsp. Otherwise, it &lt;br /&gt;;; will use the old systems (I think based on jedi)&lt;br /&gt;&lt;br /&gt;(add-hook &#39;pyenv-mode-hook &#39;lsp)&lt;br /&gt;&lt;br /&gt;;; Flycheck checks your code and helps show alerts from the linter&lt;br /&gt;(use-package flycheck&lt;br /&gt;  :init (global-flycheck-mode))&lt;br /&gt;&lt;br /&gt;;; Show flake8 errors in lsp-ui&lt;br /&gt;(defun lsp-set-cfg ()&lt;br /&gt;  (let ((lsp-cfg `(:pyls (:configurationSources (&quot;flake8&quot;)))))&lt;br /&gt;    (lsp--set-configuration lsp-cfg)))&lt;br /&gt;&lt;br /&gt;;; Activate that after lsp has started&lt;br /&gt;(add-hook &#39;lsp-after-initialize-hook &#39;lsp-set-cfg)&lt;br /&gt;&lt;br /&gt;;; I like proper fonts for documentation, in this case I use the &lt;br /&gt;;; Inter font. High legibility, small size&lt;br /&gt;&lt;br /&gt;(add-hook &#39;lsp-ui-doc-frame-hook&lt;br /&gt;          (lambda (frame _w)&lt;br /&gt;            (set-face-attribute &#39;default frame &lt;br /&gt;&lt;br /&gt;                 :font &quot;Inter&quot; &lt;br /&gt;&lt;br /&gt;                 :height 140)))&lt;br /&gt;&lt;br /&gt;;; Configure lsp-scala after Scala file has been opened&lt;br /&gt;(use-package lsp-scala&lt;br /&gt;  :after scala-mode&lt;br /&gt;  :demand t&lt;br /&gt;  :hook (scala-mode . lsp))&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;You can see how it looks now.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-ArveWEQha4U/XORphXd7_EI/AAAAAAAAEzo/UL1-RmPbrV0_S7ufkRbYJTzH9SYNQSqogCK4BGAYYCw/s1600/Screenshot%2B2019-05-21%2B23.05.25.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://3.bp.blogspot.com/-ArveWEQha4U/XORphXd7_EI/AAAAAAAAEzo/UL1-RmPbrV0_S7ufkRbYJTzH9SYNQSqogCK4BGAYYCw/s320/Screenshot%2B2019-05-21%2B23.05.25.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Traditional completion (non-LSP)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-s0bfqs81kl4/XORpomxfApI/AAAAAAAAEzw/1D5_7hZ2N9wRs3-jERMhtjh99Wz1QjENACK4BGAYYCw/s1600/Screenshot%2B2019-05-21%2B23.06.25.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;84&quot; src=&quot;https://4.bp.blogspot.com/-s0bfqs81kl4/XORpomxfApI/AAAAAAAAEzw/1D5_7hZ2N9wRs3-jERMhtjh99Wz1QjENACK4BGAYYCw/s640/Screenshot%2B2019-05-21%2B23.06.25.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;LSP-powered completion. Way more information!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-TPJ7ebxEi9o/XORpwWEJtTI/AAAAAAAAEz4/s6S7VUq4qpIBd46UsZjzu-ZcqtdlBk4cwCK4BGAYYCw/s1600/Screenshot%2B2019-05-21%2B23.06.41.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;156&quot; src=&quot;https://1.bp.blogspot.com/-TPJ7ebxEi9o/XORpwWEJtTI/AAAAAAAAEz4/s6S7VUq4qpIBd46UsZjzu-ZcqtdlBk4cwCK4BGAYYCw/s640/Screenshot%2B2019-05-21%2B23.06.41.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Fancy inlined documentation&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Sadly, inlined documentation doesn&#39;t look as good as it should: compare with Scala with metals and lsp-scala:&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-jXnwowM_P4I/XORs8TpYvzI/AAAAAAAAE0M/DpP8holpSccHkcUc1KJyJJqwWnI4zeXEQCK4BGAYYCw/s1600/Screenshot%2B2019-05-21%2B23.25.37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;393&quot; src=&quot;https://4.bp.blogspot.com/-jXnwowM_P4I/XORs8TpYvzI/AAAAAAAAE0M/DpP8holpSccHkcUc1KJyJJqwWnI4zeXEQCK4BGAYYCw/s400/Screenshot%2B2019-05-21%2B23.25.37.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;LSP mode in Scala with metals&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;If you&#39;ve gotten this far, I share my most interesting weekly readings in&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt;&amp;nbsp;. You can also get these as a weekly newsletter by subscribing&amp;nbsp;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/9065405408610337025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/9065405408610337025'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/05/lsp-for-python-and-scala.html' title='LSP for Python and Scala'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-ArveWEQha4U/XORphXd7_EI/AAAAAAAAEzo/UL1-RmPbrV0_S7ufkRbYJTzH9SYNQSqogCK4BGAYYCw/s72-c/Screenshot%2B2019-05-21%2B23.05.25.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-6968310810644791757</id><published>2019-05-19T19:21:00.001+02:00</published><updated>2019-05-21T23:42:43.383+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adtech"/><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="Functional Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Golang"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spacemacs"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="Systems Thinking"/><category scheme="http://www.blogger.com/atom/ns#" term="ZIO"/><title type='text'>2019#13 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Functional programming, adtech, history. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-TZclPkYUAuE/XOGPexQ7QaI/AAAAAAAAEzY/9ki8IkyFKzM8kdVXHfXSELMfXuow_dRJwCK4BGAYYCw/s1600/mgg-vitchakorn-527292-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;273&quot; src=&quot;https://2.bp.blogspot.com/-TZclPkYUAuE/XOGPexQ7QaI/AAAAAAAAEzY/9ki8IkyFKzM8kdVXHfXSELMfXuow_dRJwCK4BGAYYCw/s640/mgg-vitchakorn-527292-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/photos/zXNC_lBBVGE?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Mgg Vitchakorn&lt;/a&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/search/photos/rice?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;toc_0&quot;&gt;&lt;a href=&quot;https://www.atlasobscura.com/articles/chinese-architecture&quot;&gt;Ancient Chinese Buildings Are Held Together With Rice&lt;/a&gt;&lt;/h2&gt;As everyone who has prepared sticky rice and forgotten to clean the pan quickly knows.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://www.kotaku.com.au/2019/05/id-have-these-extremely-graphic-dreams-what-its-like-to-work-on-ultra-violent-games-like-mortal-kombat-11/&quot;&gt;&#39;I&#39;d Have These Extremely Graphic Dreams&#39;: What It&#39;s Like To Work On Ultra-Violent Games&lt;/a&gt;&lt;/h2&gt;Fatality burnout.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.atlasobscura.com/articles/puzzle-balls-from-guangzhou&quot;&gt;The Artistry of China’s Ivory Puzzle Balls&lt;/a&gt;&lt;/h2&gt;I’ve seen one from really close and they are amazing&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://phys.org/news/2019-05-bristol-academic-voynich-code-century-old.html&quot;&gt;Bristol academic cracks Voynich code&lt;/a&gt;&lt;/h2&gt;There was a &lt;a href=&quot;https://ciphermysteries.com/2017/11/10/gerard-cheshire-vulgar-latin-siren-call-polyglot&quot;&gt;rebuttal&lt;/a&gt; of this approach close to 2 years ago, but it still sounds interesting. Also, I’d expect phys.org to be somewhat trustable.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://ronjeffries.com/articles/019-01ff/tech-debt/&quot;&gt;Technical Debt? Probably not.&lt;/a&gt;&lt;/h2&gt;Pay it off. Or not.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://blog.colinbreck.com/future-successful-blocking-your-future-success/&quot;&gt;Scala&#39;s Future.successful: Do Not Block Your Future Success&lt;/a&gt;&lt;/h2&gt;Beware the future!&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;http://degoes.net/articles/zio-challenge&quot;&gt;The Functional Scala Concurrency Challenge&lt;/a&gt;&lt;/h2&gt;Some of the solutions look neat, and there is something to be learnt in the diversity.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://adtechmadness.wordpress.com/2019/03/13/technical-overview-of-ads-viewability-measurement-methods/&quot;&gt;Technical overview of ads viewability measurement methods&lt;/a&gt;&lt;/h2&gt;I have always been interested into how ad viewability (if an ad is seen by a user or not) works. Now I know.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://blog.softwaremill.com/graalvm-installation-and-setup-on-macos-294dd1d23ca2&quot;&gt;GraalVM installation and setup on macOS&lt;/a&gt;&lt;/h2&gt;GraalVM is a new Java runtime and compiler, which is somewhat faster than the normal JDK, and offers some really fancy cross-language options. I had been using RC9 or 10. It was time to update. I usually use Enterprise Edition for anything local, but can switch per-terminal with several aliases I have (&lt;code&gt;j8&lt;/code&gt;, &lt;code&gt;j11&lt;/code&gt;, &lt;code&gt;jgree&lt;/code&gt; and &lt;code&gt;jgrce&lt;/code&gt;) in case something breaks or I want to try another.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;http://www.esimov.com/2019/05/caire-a-content-aware-image-resizing-library&quot;&gt;Caire - a content aware image resize library&lt;/a&gt;&lt;/h2&gt;Seam carving is so cool. I wrote a cropping system once, using PILs Haar cascade based object detection. It works pretty well for automated creation of ads, but seam carving is way better for almost all other cases.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=0bqJ2XgLnyc&quot;&gt;🎥 Flare - Optimizing Apache Spark for Scale-Up Architectures and Medium-Size Data&lt;/a&gt;&lt;/h2&gt;I’m scared this will become a closed source, or business-on-top. Code is not available, but results are awesome. Luckily, the papers are (why the code is not as part of the papers is another question).&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://youtu.be/XAHVwhTsF-g&quot;&gt;🎥 helm-edit&lt;/a&gt;&lt;/h2&gt;I had used &lt;code&gt;multiple-cursors&lt;/code&gt; (and expand-region) in emacs many times, although I had a hard time making it work properly in &lt;code&gt;spacemacs&lt;/code&gt; for a while. &lt;code&gt;helm-edit&lt;/code&gt; works better already in &lt;code&gt;spacemacs&lt;/code&gt;, so, big win!&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=YgQgJceojJY&amp;amp;time_continue=1788&quot;&gt;🎥 Understanding Query Plans and Spark UIs&lt;/a&gt;&lt;/h2&gt;I knew everything in this video already, but it covers &lt;em&gt;lots&lt;/em&gt;. Give it a look.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=OSuu8zBBNAA&quot;&gt;🎥 What the ƒ is a monad&lt;/a&gt;&lt;/h2&gt;Although focused on Java, it’s very well explained for any language. Of course, if you have &lt;code&gt;do&lt;/code&gt; syntax or for comprehensions, better.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Great-Mental-Models-Thinking-Concepts-ebook/dp/B07P79P8ST/ref=as_li_ss_tl?keywords=the+great+mental+models&amp;amp;qid=1558276608&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=16c48be80df06620d1b356c031b5cc23&amp;amp;language=en_US&quot;&gt;📚 The Great Mental Models&lt;/a&gt;&lt;/h2&gt;The audiobook by Shane Parrish, of &lt;a href=&quot;https://fs.blog/&quot;&gt;FS Blog&lt;/a&gt;. It was good, but I expected something longer. &lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Art-Thinking-Systems-Critically-Strategic-ebook/dp/B078YYJBXL/ref=as_li_ss_tl?keywords=the+art+of+thinking+in+systems&amp;amp;qid=1558276558&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=1d0bf29a82ae02b78ed48cbfcdf1781d&amp;amp;language=en_US&quot;&gt;📚 The art of thinking in systems&lt;/a&gt;&lt;/h2&gt;If you have read Donna Meadows &lt;a href=&quot;https://www.amazon.com/Thinking-Systems-Donella-H-Meadows/dp/1603580557/ref=as_li_ss_tl?keywords=thinking+in+systems&amp;amp;qid=1558276320&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=688258fa16496ed626cc3f80c0bf50cd&amp;amp;language=en_US&quot;&gt;Thinking in Systems&lt;/a&gt;, this won’t give you anything new. And I’d rather recommend TiS.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/6968310810644791757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/6968310810644791757'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/05/201913-readings-of-week.html' title='2019#13 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-TZclPkYUAuE/XOGPexQ7QaI/AAAAAAAAEzY/9ki8IkyFKzM8kdVXHfXSELMfXuow_dRJwCK4BGAYYCw/s72-c/mgg-vitchakorn-527292-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-7190949257008179123</id><published>2019-05-13T00:31:00.000+02:00</published><updated>2019-05-21T23:41:56.420+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="ZIO"/><title type='text'>2019#12 Readings of the week</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-80e8KrCzkq8/XNidhFbEWDI/AAAAAAAAEzA/AXCEisp6v7gLxmv21aOvfJuVJpnKPCzPACK4BGAYYCw/s1600/zsolt-palatinus-736229-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;https://3.bp.blogspot.com/-80e8KrCzkq8/XNidhFbEWDI/AAAAAAAAEzA/AXCEisp6v7gLxmv21aOvfJuVJpnKPCzPACK4BGAYYCw/s640/zsolt-palatinus-736229-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; white-space: nowrap;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/photos/pEK3AbP8wa4?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; text-align: start; transition: 0.2s ease-in-out, 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Zsolt Palatinus&lt;/a&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; white-space: nowrap;&quot;&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/search/photos/rust?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; text-align: start; transition: 0.2s ease-in-out, 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Big data and data engineering, metallurgy, Rust (not the metallurgy-related rust). Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;http://degoes.net/articles/testable-zio&quot;&gt;Testing Incrementally with ZIO Environment&lt;/a&gt;&lt;/h2&gt;I’ve been reading a lot about ZIO lately, even to the point of writing a few simple thinks with the help of a more advanced Scala friend. As I’ve mentioned before, it looks solid&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.atlasobscura.com/articles/medieval-african-gold&quot;&gt;Medieval Africans Had a Unique Process for Purifying Gold With Glass&lt;/a&gt;&lt;/h2&gt;No plans on smelting anything soon, but this was interesting.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://blog.yoshuawuyts.com/runtime/&quot;&gt;Rust Runtime&lt;/a&gt;&lt;/h2&gt;The proposed approaches for async-await in Rust are shaping up.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://deliveroo.engineering/2019/02/14/moving-from-ruby-to-rust.html&quot;&gt;Moving from Ruby to Rust (at Deliveroo)&lt;/a&gt;&lt;/h2&gt;It should surprise no-one, except maybe hardcore rubyists that moving from Ruby to Rust yielded terrific speed-ups. Something similar should happen in Python, though.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://aturon.github.io/blog/2016/08/11/futures/&quot;&gt;Zero-cost futures in Rust&lt;/a&gt;&lt;/h2&gt;One of the core tenets of Rust is having zero-cost abstractions (as in, being as close to manually written). Here you can read how futures fit that goal.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://tratt.net/laurie/blog/entries/a_quick_look_at_trait_objects_in_rust.html&quot;&gt;A quick look at trait objects in Rust&lt;/a&gt;&lt;/h2&gt;Traits will be familiar to Scala or even Go or Java developers, but there are a few gotchas/differences you need to be aware.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;http://druid.io/docs/latest/design/index.html&quot;&gt;Druid Design&lt;/a&gt;&lt;/h2&gt;A friend of mine has used Apache Druid before, and has been really happy with its performance, so I’ve been looking into possible use cases to road-test it.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://www.ecalamia.com/blog/make-your-own-geoip-api/&quot;&gt;Make your own GeoIP API (in Python)&lt;/a&gt;&lt;/h2&gt;I’ve linked before to GeoIP approaches, this one is interesting as long as you only want country-level resolution, I usually need city or better. &lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://mapr.com/blog/in-depth-look-hbase-architecture/&quot;&gt;An in-depth look at the HBase architecture&lt;/a&gt;&lt;/h2&gt;Similarly to Druid, I’ve been checking several things to speed up some areas. Apache HBase might be one of them, and I wanted to see how it works under the hood, I love these details&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;🎥 &lt;a href=&quot;https://www.youtube.com/watch?v=onQSHiafAY8&quot;&gt;ZIO Schedule&lt;/a&gt;&lt;/h2&gt;As mentioned above, ZIO is shaping up nicely, and the scheduling helpers presented here are one of the selling points, depending on what you do.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt; 🎥 &lt;a href=&quot;https://m.youtube.com/watch?v=0yKf8TrLUOw&quot;&gt;Pure functional programming in Excel&lt;/a&gt;&lt;/h2&gt;Duh... but... to be fair... there is a point in here.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt; 🎥 &lt;a href=&quot;https://www.youtube.com/watch?v=zKre4DKAB30&quot;&gt;Gradual typing of production applications&lt;/a&gt;&lt;/h2&gt;Incremental approach suggestions for typing in Python, at Facebook (Instagram to be precise)&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt; 🎥 &lt;a href=&quot;https://www.youtube.com/watch?v=6EdXaWfoslc&quot;&gt;Effects as Data&lt;/a&gt;&lt;/h2&gt;Everything here should sound familiar if you are anything into functional programming&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/7190949257008179123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/7190949257008179123'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/05/2019-12-readings-of-week.html' title='2019#12 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-80e8KrCzkq8/XNidhFbEWDI/AAAAAAAAEzA/AXCEisp6v7gLxmv21aOvfJuVJpnKPCzPACK4BGAYYCw/s72-c/zsolt-palatinus-736229-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-392746247322147209</id><published>2019-05-09T17:27:00.000+02:00</published><updated>2019-05-21T23:42:06.550+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spacemacs"/><title type='text'>gtags (GNU global) in emacs for Scala</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-S2SOvv7dFpU/XNRFxqt7RNI/AAAAAAAAEyk/2nvMEAb-ObAVzK5O6qsgtsfVE1wIqzpcQCK4BGAYYCw/s1600/thom-masat-694057-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;329&quot; src=&quot;https://4.bp.blogspot.com/-S2SOvv7dFpU/XNRFxqt7RNI/AAAAAAAAEyk/2nvMEAb-ObAVzK5O6qsgtsfVE1wIqzpcQCK4BGAYYCw/s640/thom-masat-694057-unsplash.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/photos/8kLFdQh6scA?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;thom masat&lt;/a&gt;&lt;span style=&quot;background-color: whitesmoke; color: #111111; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;san francisco&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; white-space: nowrap;&quot;&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; text-decoration-skip: ink; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;As you may know, I’m a heavy &lt;a href=&quot;https://www.mostlymaths.net/search/label/emacs&quot;&gt;emacs&lt;/a&gt; user, and a frequent Scala developer. Scala tooling for emacs was restricted to mostly ensime until recently. Although ensime is an excellent piece of software, it made my old Macbook suffer a lot (it only had 8gb of RAM). So, most of the time I just went hardcore mode developer, and worked with no autocompletion, no jump to definition, no-nothing. A pervasive use of ripgrep and good memory were sometimes enough, but I was envious of many things I could see in my colleagues using IntelliJ. Of course, switching editors was not an option.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I looked up what solutions were available, and the only option that seemed good enough was using the classic &lt;code&gt;ctags/etags/gtags&lt;/code&gt; I hadn’t used since my C days.&lt;br /&gt;&lt;br /&gt;Having a tags implementation can bring an almost-decent jump-to-definition essentially for free: gtags (and the others) work by pre-analysing the data and generating symbol maps which are usually stored as files, the overhead in speed and memory is minimal.&lt;br /&gt;&lt;br /&gt;Installing it can get somewhat unintuitive (specially on Mac), since you need &lt;em&gt;very&lt;/em&gt; specific settings for it to work with emacs and especially, Scala code.&lt;br /&gt;&lt;br /&gt;Start by installing &lt;a href=&quot;https://en.m.wikipedia.org/wiki/GNU_GLOBAL&quot;&gt;GNU global&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install global --with-pygments --with-ctags --with-exuberant-ctags&lt;/code&gt;&lt;/pre&gt;The key parts is having &lt;code&gt;pygments&lt;/code&gt;.&lt;br /&gt;Aside from this you will need to export the following environment variables:&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;GTAGSCONF=/usr/local/share/gtags/gtags.conf&lt;br /&gt;GTAGSLABEL=pygments&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;Finally, you need to install (or activate) &lt;code&gt;ggtags-mode&lt;/code&gt;. If you use spacemacs, you only need to activate the &lt;code&gt;gtags&lt;/code&gt; layer.&lt;br /&gt;All this has become moot as soon as &lt;a href=&quot;https://scalameta.org/metals/&quot;&gt;metals&lt;/a&gt; has reached a usable state: now you can have a really fast language server for Scala, written in Scala with low memory overhead.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/392746247322147209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/392746247322147209'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/05/gtags-gnu-global-in-emacs-for-scala.html' title='gtags (GNU global) in emacs for Scala'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-S2SOvv7dFpU/XNRFxqt7RNI/AAAAAAAAEyk/2nvMEAb-ObAVzK5O6qsgtsfVE1wIqzpcQCK4BGAYYCw/s72-c/thom-masat-694057-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-4640102943659851707</id><published>2019-04-28T17:39:00.000+02:00</published><updated>2019-05-21T23:42:15.827+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="TLA+"/><title type='text'>2019-11 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Software engineering, Spark, history, python. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-E4DFSiB_2lo/XMXI2KTRFtI/AAAAAAAAEyA/TUFCAfKoejUVuUrSSQqtR16vjVEOrHjMACLcBGAs/s1600/1024px-Beowulf_face_to_face_with_fire-breathing_Dragon.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1482&quot; data-original-width=&quot;1024&quot; height=&quot;320&quot; src=&quot;https://3.bp.blogspot.com/-E4DFSiB_2lo/XMXI2KTRFtI/AAAAAAAAEyA/TUFCAfKoejUVuUrSSQqtR16vjVEOrHjMACLcBGAs/s320/1024px-Beowulf_face_to_face_with_fire-breathing_Dragon.jpg&quot; width=&quot;221&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://blog.godatadriven.com/testing-and-debugging-apache-airflow&quot;&gt;Testing and debugging Apache Airflow&lt;/a&gt;&lt;/h2&gt;We&#39;ve been using Airflow for almost a year (on my suggestion). I&#39;m not super-happy with it, and testing it is one of the pain points. Knowing how to do it is half the battle.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/books/2019/apr/18/superhuman-sport-cold-war-mind-power-men-on-magic-carpets-ed-hawkins-extract&quot;&gt;Mind control, levitation and no pain: the race to find a superman in sports&lt;/a&gt;&lt;/h2&gt;&lt;em&gt;You must lose&lt;/em&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://www.bennettnotes.com/post/making-money-out-of-every-hobby/&quot;&gt;I can&#39;t Do Anything for Fun Anymore; Every Hobby Is an Attempt to Make Money&lt;/a&gt;&lt;/h2&gt;You&#39;ve probably felt the same&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://techcrunch.com/2019/04/24/databricks-open-sources-delta-lake-to-make-data-lakes-more-reliable/&quot;&gt;Databricks open-sources Delta Lake to make data lakes more reliable&lt;/a&gt;&lt;/h2&gt;I&#39;m looking forward checking the code for this (should be equivalent to Databricks&#39; Delta product)&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://arstechnica.com/science/2019/04/tolkien-was-right-scholars-conclude-beowulf-likely-the-work-of-single-author/&quot;&gt;Tolkien was right: Scholars conclude Beowulf likely the work of single author&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;In off the moors, down through the mist beams, god-cursed Grendel came greedily loping.&lt;/blockquote&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;http://www.kr41.net/2016/03-23-dont_inherit_python_builtin_dict_type.html&quot;&gt;Don’t inherit Python built-in dict type&lt;/a&gt;&lt;/h2&gt;Remember kids, what you want to do is either &lt;code&gt;Mapping&lt;/code&gt; (read-only) or &lt;code&gt;MutableMapping&lt;/code&gt; abstract base classes from  &lt;a href=&quot;https://docs.python.org/3/library/collections.abc.html&quot;&gt;collections.abc&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://www.shangzeyuan.com/how_to_integrate_your_stuff_into_spark_sql/&quot;&gt;How to Integrate Your Stuff into Spark SQL&lt;/a&gt;&lt;/h2&gt;A pity you need a custom build of Spark in this case (and fighting with EMR to install it)&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://www.qubole.com/blog/direct-writes-to-increase-spark-performance/&quot;&gt;Using Direct Writes to Significantly Increase the Performance of Spark Workloads&lt;/a&gt;&lt;/h2&gt;If you happen to use Qubole and Hive, this can be a winner.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://scalameta.org/metals/blog/2019/01/22/bloom-filters.html&quot;&gt;Low-memory symbol indexing with bloom filters&lt;/a&gt;&lt;/h2&gt;I love bloom filters, and have been using the &lt;a href=&quot;https://scalameta.org/metals/&quot;&gt;metals&lt;/a&gt; Scala language server for a while now in emacs (spacemacs).&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://www.reddit.com/r/tlaplus/comments/aj018f/constant_antipatterns/?st=jr9b7dlx&amp;amp;sh=6c33c16a&quot;&gt;CONSTANT Anti-Patterns : tlaplus&lt;/a&gt;&lt;/h2&gt;That&#39;s no constant&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://erikbern.com/2019/04/15/why-software-projects-take-longer-than-you-think-a-statistical-model.html&quot;&gt;Why software projects take longer than you think -a statistical model&lt;/a&gt;&lt;/h2&gt;We all know we are bad at estimates as humans, mathematical models just can confirm this&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://www.economist.com/science-and-technology/2019/04/13/how-to-knit-a-sports-car-with-carbon-fibre&quot;&gt;How to knit a sports car with carbon fibre - The new black arts of manufacturing&lt;/a&gt;&lt;/h2&gt;Rapid prototyping and construction with carbon fibre can change a lot of things in manufacturing&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=Q0-xjeEiYw4&quot;&gt;🎥 Build a roguelike in Rust&lt;/a&gt;&lt;/h2&gt;Using &lt;a href=&quot;https://github.com/tomassedovic/tcod-rs&quot;&gt;libtcod&lt;/a&gt;. Also a blogpost series available &lt;a href=&quot;https://tomassedovic.github.io/roguelike-tutorial/&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4640102943659851707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4640102943659851707'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/04/2019-11-readings-of-week.html' title='2019-11 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-E4DFSiB_2lo/XMXI2KTRFtI/AAAAAAAAEyA/TUFCAfKoejUVuUrSSQqtR16vjVEOrHjMACLcBGAs/s72-c/1024px-Beowulf_face_to_face_with_fire-breathing_Dragon.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-173285248093481846</id><published>2019-04-18T11:39:00.002+02:00</published><updated>2019-05-21T23:42:21.881+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Games"/><category scheme="http://www.blogger.com/atom/ns#" term="Generative"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Perl"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>2019-10 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Software engineering, psychology, generative art. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are wondering why the list is shorter this week (and is so late) is because &lt;a href=&quot;https://www.mostlymaths.net/2019/04/2019-9-readings-of-week-x4.html&quot;&gt;last week I said I was going to play Stardew Valley&lt;/a&gt;, and I complied. Oh, I also played a bit with creating fun models with Alloy, maybe I&#39;ll explain something soon.&lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-eFI2R8NpOA0/XLhFmxn8J3I/AAAAAAAAExg/my0u4Ovh5dkRTqACxGytZmb46UIA3ZF0QCLcBGAs/s1600/803dd5a54c42ed93462c78ad7da357b0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1002&quot; data-original-width=&quot;564&quot; height=&quot;320&quot; src=&quot;https://2.bp.blogspot.com/-eFI2R8NpOA0/XLhFmxn8J3I/AAAAAAAAExg/my0u4Ovh5dkRTqACxGytZmb46UIA3ZF0QCLcBGAs/s320/803dd5a54c42ed93462c78ad7da357b0.jpg&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Could very well be named&lt;br /&gt;Autumn Rhythm, Letter C&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;http://m.nautil.us/blog/the-day-feynman-worked-out-black_hole-radiation-on-my-blackboard&quot;&gt;The Day Feynman Worked Out Black-Hole Radiation on My Blackboard&lt;/a&gt;&lt;/h2&gt;The way Richard Feynman found interesting stuff and just had a go (have you read Surely you’re joking, Mr Feynman?) is astonishing.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://medium.com/@ibrahimbutt/how-to-set-up-vscode-for-remote-pair-programming-e5f5c30a48e2&quot;&gt;How to Set Up VSCode for Remote Pair Programming&lt;/a&gt;&lt;/h2&gt;I’ve been researching better ways to help my coworkers while I’m remote. This VS Code setup looks interesting, although I’ll need to get an emacs/vim plugin if I am to use it.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;http://colinm.org/sigbovik/&quot;&gt;SIGBOVIK&lt;/a&gt;&lt;/h2&gt;If you run OCR on paint splashes, you get mostly valid Perl code.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://christophercarlson.com/portfolio/multi-scale-truchet-patterns/&quot;&gt;Multi-Scale Truchet Patterns&lt;/a&gt;&lt;/h2&gt;I always enjoy a good generative art finding, and Truchet tiles have always claimed a spot in my heart (I loved &lt;a href=&quot;http://cambolbro.com/games/index.html&quot;&gt;Cameron Browne’s Che&lt;/a&gt;&amp;nbsp;game, even if it&#39;s a bit thin after a while)&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://fs.blog/general-thinking-concepts/&quot;&gt;How Mental Models Unlock Your Thinking&lt;/a&gt;&lt;/h2&gt;I follow Shane’s podcast (and newsletter) regularly, so I’ve been looking forward the release of his audiobook. Now, it’s here, and I got it already.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/173285248093481846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/173285248093481846'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/04/2019-10-readings-of-week.html' title='2019-10 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-eFI2R8NpOA0/XLhFmxn8J3I/AAAAAAAAExg/my0u4Ovh5dkRTqACxGytZmb46UIA3ZF0QCLcBGAs/s72-c/803dd5a54c42ed93462c78ad7da357b0.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-4794083979670138233</id><published>2019-04-07T19:37:00.000+02:00</published><updated>2019-05-21T23:42:28.929+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Akka"/><category scheme="http://www.blogger.com/atom/ns#" term="Alloy"/><category scheme="http://www.blogger.com/atom/ns#" term="Books"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Drawing"/><category scheme="http://www.blogger.com/atom/ns#" term="Fractals"/><category scheme="http://www.blogger.com/atom/ns#" term="Games"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="plan9"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><title type='text'>2019-9 Readings of the week (x4)</title><content type='html'>You know how you slip once on a habit and everything goes crazy? Well, I’ve been 4 weeks without writing these, so here’s the accumulated reading from 4 weeks. Because, even if I don’t write it, I read a lot anyway. Also, there’s lot of interesting content this “week”.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. This edition contains Rust, food, Scala, functional programming, psychology, Python, likes to nice images, and a bit on procedural generation. Also the books I read these days. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_0&quot;&gt;&lt;a href=&quot;https://www.rockpapershotgun.com/2017/02/13/stardew-valley-marriage-work/&quot;&gt;Stardew Valley and real life labour&lt;/a&gt;&lt;/h2&gt;I bought &lt;a href=&quot;https://www.stardewvalley.net/&quot;&gt;Stardew Valley&lt;/a&gt; for iOS during Christmas, after hearing how much Mike Hurley (from the Cortex podcast, and all around the Relay.fm podcasting network) likes it. But, still haven’t played, maybe this week? (although, Cultist Simulator appeared on iOS last week, and it’s very engaging, specially on an iPad Pro with a Pencil).&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;📚 &lt;a href=&quot;https://www.amazon.com/Superforecasting-Science-Prediction-Philip-Tetlock/dp/0804136718/ref=as_li_ss_tl?ie=UTF8&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=d2e3f57c152ac4926d5e3994dce5fe6e&quot;&gt;Superforecasting&lt;/a&gt;&lt;/h2&gt;I’m undecided on this book. The premise was excellent, the analysis as well, but it was lacking a bit on the “how” area of superforecasting. &lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;http://nautil.us/issue/44/luck/how-to-be-lucky&quot;&gt;To Be Lucky, Believe That You Are&lt;/a&gt;&lt;/h2&gt;There is something to this, also, more on luck further down. I’m a lifetime subscriber to &lt;a href=&quot;http://nautil.us/&quot;&gt;Nautilus&lt;/a&gt;, and you should consider becoming one. Their print magazines are beautiful, and the articles always insightful.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://www.kalzumeus.com/2019/3/18/two-years-at-stripe/&quot;&gt;What Working At Stripe Has Been Like&lt;/a&gt;&lt;/h2&gt;Anything Patrick McKenzie (patio11) writes is worth reading. Don’t miss his &lt;a href=&quot;https://www.kalzumeus.com/2012/01/23/salary-negotiation&quot;&gt;Salary Negotiation&lt;/a&gt; post.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://dev.to/davidk01/cloud-management-with-prolog-29d8&quot;&gt;Cloud Management with Prolog&lt;/a&gt;&lt;/h2&gt;Prolog, and its query ability sound ideal for a lot of scenarios. This could very well be one of them, although dumping to SQL could be more useful when working with a team.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://litherum.blogspot.com/2019/03/addition-font.html&quot;&gt;Addition Font&lt;/a&gt;&lt;/h2&gt;How to exploit the depths of font description languages to compute. Also has a minor proof on how font rendering (removing some implementation blocks to avoid overflows in font engines) is Turing complete.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://twitter.com/1st1/status/1090325242432630784&quot;&gt;Twitter thread about immutability in Python by Yury Selivanov&lt;/a&gt;&lt;/h2&gt;Some ways you can get pretty much immutability. If you are a functional-ish programmer you’ll value this.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/news/2019/jan/29/white-gold-the-unstoppable-rise-of-alternative-milks-oat-soy-rice-coconut-plant&quot;&gt;White gold: the unstoppable rise of alternative milks&lt;/a&gt;&lt;/h2&gt;I like the occasional oat milk (I like the taste of oats) or a specific brand of Catalan walnut milk (pairs perfectly with coffee)&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Bad-Blood/dp/B07CY5D6ZZ/ref=as_li_ss_tl?_encoding=UTF8&amp;amp;qid=1554657909&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=6862d00a797f7b91cfebb16769925430&quot;&gt;📚 Bad blood&lt;/a&gt;&lt;/h2&gt;To be fair, I got the audiobook version, but it is thrilling. I listened to it in one weekend, and I didn’t finish earlier because AirPods need recharging. &lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.waitingforcode.com/apache-spark-sql/apache-spark-2.4.0-features-array-higher-order-functions/read&quot;&gt;Apache Spark 2.4.0 features - array and higher-order functions&lt;/a&gt;&lt;/h2&gt;Aside from the move to Scala 2.12, this is for me one of the most significant changes to Spark. Although I haven’t used these yet, there have been several moments in the past where I needed mapping capabilities over arrays and had to resort to a UDF. They are not hot paths, but knowing how UDFs behave, I’d get a decent speed up of these parts by moving to a HOF.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://tech.marksblogg.com/faster-file-distribution-hadoop-hdfs-s3.html&quot;&gt;Faster File Distribution with HDFS and S3&lt;/a&gt;&lt;/h2&gt;How to load your data into HDFS is always a key question. Pre-load it? Load it directly with a specific (say, &lt;code&gt;spark.read&lt;/code&gt;) construct from S3? Here there are some benchmarks of what is more effective, at least for Presto. Results probably extend to Spark et al, since being based over HDFS is the key part.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://wiki.mumble.info/wiki/Main_Page&quot;&gt;Mumble&lt;/a&gt;: the open source VoIP solution&lt;/h2&gt;I learnt about Mumble and the Murmur server a few weeks ago. They are a system for very low latency, low bandwidth audio-only (optionally a bit of text) communication. I wonder if it can help me work remotely more effectively (helping with pairing, or with random “quick talk” while avoiding the overhead of a video call under Slack, Skype or Meet). &lt;a href=&quot;https://news.ycombinator.com/item?id=9199910&quot;&gt;This&lt;/a&gt; Hacker News comment seems to cast it in the correct light.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://culturainquieta.com/es/arte/ilustracion/item/14186-la-belleza-matematica-de-la-naturaleza-en-ilustraciones-de-proporciones-aureas-a-mano-alzada.html&quot;&gt;La belleza matemática de la naturaleza, en ilustraciones de proporciones áureas&lt;/a&gt;&lt;/h2&gt;Note this is in Spanish. Served as an excuse to find out about &lt;a href=&quot;https://www.rafael-araujo.com/&quot;&gt;Rafael Araujo&lt;/a&gt; and his books, &lt;a href=&quot;https://www.amazon.com/Golden-Ratio-Divine-Beauty-Mathematics/dp/163106486X/ref=as_li_ss_tl?keywords=rafael+araujo&amp;amp;qid=1554657458&amp;amp;s=books&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=b9592bce1749d423d21e29218c429f65&quot;&gt;The Golden Ratio: The Divine Beauty of Mathematics&lt;/a&gt; (with text by Gary Meisner) and &lt;a href=&quot;https://www.amazon.com/Golden-Coloring-Artist-Rafael-Araujo/dp/0646951904/ref=as_li_ss_tl?keywords=rafael+araujo&amp;amp;qid=1554657458&amp;amp;s=books&amp;amp;sr=1-2&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=cb686151855411d2c0a95cf7107d0828&quot;&gt;Golden Ratio Colouring Book&lt;/a&gt;. I have now some of his drawings as backgrounds of my devices. They are gorgeous.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://www.behance.net/gallery/74468471/BARCELONA-FROM-ABOVE&quot;&gt;Barcelona from Above (set of pictures by Márton Mogyorósy on Behance)&lt;/a&gt;&lt;/h2&gt;These were my previous device backgrounds. You can also follow &lt;a href=&quot;https://www.instagram.com/mogyimarci/&quot;&gt;the author&lt;/a&gt; on Instagram (you can also follow &lt;a href=&quot;https://www.instagram.com/mostlymaths/&quot;&gt;me&lt;/a&gt; but I’m not that interesting)&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://publicdomainreview.org/collections/space-colony-art-from-the-1970s/&quot;&gt;Space Colony Art from the 1970s – The Public Domain Review&lt;/a&gt;&lt;/h2&gt;The 70s were special&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://dspace.mit.edu/handle/1721.1/41962&quot;&gt;Laws for Communicating Parallel Processes&lt;/a&gt;&lt;/h2&gt;A classic paper by Hewitt, the seminal work on actor systems.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;&lt;a href=&quot;http://tomassedovic.github.io/roguelike-tutorial/&quot;&gt;Roguelike Tutorial in Rust + tcod&lt;/a&gt;&lt;/h2&gt;I enjoy playing ASCII based roguelikes from time to time (&lt;a href=&quot;https://crawl.develz.org/&quot;&gt;DCSS&lt;/a&gt;, &lt;a href=&quot;https://cataclysmdda.org/&quot;&gt;CDDA&lt;/a&gt; or &lt;a href=&quot;http://www.bay12games.com/dwarves/&quot;&gt;Dwarf Fortress&lt;/a&gt;), writing one would be cool. And yet another excuse/way to learn more Rust.&lt;br /&gt;&lt;h2 id=&quot;toc_17&quot;&gt;&lt;a href=&quot;http://nuclear.mutantstargoat.com/articles/sdr_fract/&quot;&gt;Fast and easy high resolution fractals with a pixel shader&lt;/a&gt;&lt;/h2&gt;I stopped generating fractal stuff before using shaders for it was common, so I never got to learn it. Now, I want it back. It was so much fun.&lt;br /&gt;&lt;h2 id=&quot;toc_18&quot;&gt;&lt;a href=&quot;https://community.ibm.com/community/user/datascience/blogs/paco-nathan/2019/03/12/a-landscape-diagram-for-python-data&quot;&gt;Python Data Landscape Diagram&lt;/a&gt;&lt;/h2&gt;A super-thorough diagram showing the data analysis library landscape in Python, with some words on each technology/library.&lt;br /&gt;&lt;h2 id=&quot;toc_19&quot;&gt;&lt;a href=&quot;https://www.politico.eu/article/how-uk-lost-brexit-eu-negotiation/&quot;&gt;How the UK lost the Brexit battle&lt;/a&gt;&lt;/h2&gt;From Politico. It is super-long, but well worth the read if you are anywhere related to Brexit. This could easily be described as &lt;em&gt;how not to manage your negotiation deals&lt;/em&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_20&quot;&gt;&lt;a href=&quot;https://gridbugs.org/wave-function-collapse/&quot;&gt;Procedural Generation with Wave Function Collapse&lt;/a&gt;&lt;/h2&gt;Like fractals, procedural generation is something I have always enjoyed (as a concept, as a result and as a programming problem). WFC is a good approach for generating maps, images and anything with “rules”&lt;br /&gt;&lt;h2 id=&quot;toc_21&quot;&gt;&lt;a href=&quot;http://asquera.de/blog/2018-01-29/rust-lifetimes-for-the-uninitialised/&quot;&gt;Rust Lifetimes for the Uninitialised&lt;/a&gt;&lt;/h2&gt;A thorough introduction to how Rust lifetimes work and how to use them&lt;br /&gt;&lt;h2 id=&quot;toc_22&quot;&gt;&lt;a href=&quot;https://www.filfre.net/2018/12/controlling-the-spice-part-3-westwoods-dune/&quot;&gt;Controlling the Spice, Part 3: Westwood’s Dune&lt;/a&gt;&lt;/h2&gt;A short history about how &lt;em&gt;Dune II&lt;/em&gt; came to be, and to appear almost at same time than &lt;em&gt;Dune&lt;/em&gt;. Also, how Westwood (and Dune II)  shaped real time strategy from then on.&lt;br /&gt;&lt;h2 id=&quot;toc_23&quot;&gt;&lt;a href=&quot;http://python-patterns.guide/&quot;&gt;Python Patterns&lt;/a&gt;&lt;/h2&gt;An analysis of some common patterns (à la Gang of Four, patterns) when applied to Python&lt;br /&gt;&lt;h2 id=&quot;toc_24&quot;&gt;&lt;a href=&quot;https://www.newyorker.com/culture/culture-desk/the-unexpected-philosophical-depths-of-the-clicker-game-universal-paperclips&quot;&gt;The Unexpected Philosophical Depths of the Clicker Game Universal Paperclips&lt;/a&gt;&lt;/h2&gt;In the clicker realm, I much prefer &lt;a href=&quot;http://jhollands.co.uk/spaceplan/&quot;&gt;SpacePlan&lt;/a&gt; (or &lt;a href=&quot;http://adarkroom.doublespeakgames.com/&quot;&gt;A Dark Room&lt;/a&gt;, but that’s not 100% clicker), but UC was interesting. &lt;br /&gt;&lt;h2 id=&quot;toc_25&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/food/2019/mar/27/spread-the-word-the-rise-of-craft-butter-and-how-to-make-your-own&quot;&gt;Spread the word: the rise of craft butter – and how to make your own&lt;/a&gt;&lt;/h2&gt;Craft beer, craft bread, craft butter. It’s hard to come with good quality cream in Spain, though.&lt;br /&gt;&lt;h2 id=&quot;toc_26&quot;&gt;&lt;a href=&quot;https://www.amazon.com/How-Draw-Cartoons-Brian-Platt/dp/0954709209/ref=as_li_ss_tl?ie=UTF8&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=a4cd9e27e4ddcddd1857e1dbcb2e8c73&quot;&gt;📚 Platt’s How to Draw Cartoons&lt;/a&gt;&lt;/h2&gt;A very short and sweet book on drawing cartoonish people. Highly recommended. And I found out the author lives in Hay-on-Wye, given the amount of times we’ve been there I wonder if we’ve crossed our paths.&lt;br /&gt;&lt;h2 id=&quot;toc_27&quot;&gt;&lt;a href=&quot;https://ohshitgit.com/&quot;&gt;Oh, shit, git!&lt;/a&gt;&lt;/h2&gt;If your local git guru is away, this can save the day.&lt;br /&gt;&lt;h2 id=&quot;toc_28&quot;&gt;&lt;a href=&quot;https://medium.com/@F4Qtech/udfs-vs-map-vs-custom-spark-native-functions-91ab2c154b44&quot;&gt;UDFs vs Map vs Custom Spark-Native Functions – Farox2q – Medium&lt;/a&gt;&lt;/h2&gt;Some benchmarks and code comparisons between UDFs, map and custom spark functions. Sadly, you can’t implement the latter without using a custom build of Spark, and good luck deploying that to EMR...&lt;br /&gt;&lt;h2 id=&quot;toc_29&quot;&gt;&lt;a href=&quot;https://www.theatlantic.com/magazine/archive/1981/06/m-16-a-bureaucratic-horror-story/545153/&quot;&gt;M-16: A Bureaucratic Horror Story&lt;/a&gt;&lt;/h2&gt;The surprisingly interesting story about a weapon, the M-16, and how a &lt;em&gt;lot&lt;/em&gt; of bad decisions happened because “committees &amp;amp; politics”&lt;br /&gt;&lt;h2 id=&quot;toc_30&quot;&gt;&lt;a href=&quot;https://arxiv.org/pdf/1802.07068.pdf&quot;&gt;Talent vs Luck: the role of randomness in success and failure&lt;/a&gt;&lt;/h2&gt;A paper. This model sounds super-interesting, and I want to replicate it in Python as soon as I have a few hours available (meh)&lt;br /&gt;&lt;h2 id=&quot;toc_31&quot;&gt;&lt;a href=&quot;https://people.neilon.software/&quot;&gt;How to Deal with Difficult People on Software Projects&lt;/a&gt;&lt;/h2&gt;&lt;em&gt;It’s funny because it’s true&lt;/em&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_32&quot;&gt;&lt;a href=&quot;http://yieldthought.com/post/95722882055/machine-learning-teaches-me-how-to-write-better-ai&quot;&gt;Machine learning teaches me how to write better AI&lt;/a&gt;&lt;/h2&gt;This is an old post, but I have always found it really interesting. I used &lt;em&gt;Normalised Compression Distance&lt;/em&gt; once, but I no longer remember the setting (I think it was as part of a decision tree metric, but the details escape me, it was 6 or7 years ago)&lt;br /&gt;&lt;h2 id=&quot;toc_33&quot;&gt;&lt;a href=&quot;https://blog.softwaremill.com/supervision-error-handling-in-zio-akka-and-monix-part-3-series-summary-abe75f964c2a&quot;&gt;Supervision and error handling in zio, akka, monix&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;https://github.com/scalaz/scalaz-zio&quot;&gt;Zio&lt;/a&gt;, &lt;a href=&quot;https://monix.io/&quot;&gt;Monix&lt;/a&gt; and &lt;a href=&quot;https://akka.io/&quot;&gt;Akka&lt;/a&gt; can be used for similar things (asynchronous execution of streams/“stuff”). How you handle errors is different though, and sometimes using one for its error handling can make a difference.&lt;br /&gt;&lt;h2 id=&quot;toc_34&quot;&gt;&lt;a href=&quot;https://medium.com/@cfsamson/from-48s-to-5s-optimizing-a-350-line-pathtracer-in-rust-191ab4a1a412&quot;&gt;From 48s to 5s - optimizing a 350 line pathtracer in Rust&lt;/a&gt;&lt;/h2&gt;If you’ve been counting, I’ve been reading a lot of Rust stuff lately. I have always been interested in raytracers/path tracers (wrote one in Lisp ages ago, got up to refraction), so this was a natural fit.&lt;br /&gt;&lt;h2 id=&quot;toc_35&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Software-Abstractions-Logic-Language-Analysis-ebook/dp/B002YNS9MW/ref=as_li_ss_tl?keywords=software+abstractions&amp;amp;qid=1554657817&amp;amp;s=books&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=2a2758545045e2cb2fee7997661885bf&quot;&gt;📚 Software Abstractions&lt;/a&gt;&lt;/h2&gt;This “week” I finished the second edition of Software Abstractions, the book on the Alloy modeling language. It is pretty good. Starts as a light read, but after a while &lt;em&gt;how&lt;/em&gt; the language works starts to be a bit too cumbersome. Luckily there’s an extensive set of examples throughout the book, and an examples section at the end. I’m itching to model something in Alloy, but I’m still unsure &lt;em&gt;what&lt;/em&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_36&quot;&gt;&lt;a href=&quot;https://captrobau.blogspot.com/2019/03/remastering-star-trek-deep-space-nine.html?m=1&quot;&gt;Remastering Star Trek: Deep Space Nine With Machine Learning&lt;/a&gt;&lt;/h2&gt;The result is impressive. And got me to consider installing the app used.&lt;br /&gt;&lt;h2 id=&quot;toc_37&quot;&gt;&lt;a href=&quot;https://gizmodo.com/the-pyrex-glass-controversy-that-just-wont-die-1833040962&quot;&gt;The Pyrex Glass Controversy That Just Won&#39;t Die&lt;/a&gt;&lt;/h2&gt;Surprisingly fascinating story about why Pyrex is of lower quality lately in the States. Lucky for me, in Europe it’s still fine&lt;br /&gt;&lt;h2 id=&quot;toc_38&quot;&gt;&lt;a href=&quot;https://engineering.linkedin.com/blog/2019/03/pinot-joins-apache-incubator&quot;&gt;Pinot Joins Apache Incubator&lt;/a&gt;&lt;/h2&gt;YAQEE (Yet Another Query Execution Engine). But sounds interesting, and has a nice logo. I’ve seen worse&lt;br /&gt;&lt;h2 id=&quot;toc_39&quot;&gt;&lt;a href=&quot;http://blog.snapeda.com/2019/03/10/how-bluetooth-got-its-name-an-interview-with-jim-kardach/&quot;&gt;How Bluetooth got its name, an interview with Jim Kardach&lt;/a&gt;&lt;/h2&gt;Ye olde Harald!&lt;br /&gt;&lt;h2 id=&quot;toc_40&quot;&gt;&lt;a href=&quot;https://www.rs-online.com/designspark/a-pi-powered-plan-9-cluster&quot;&gt;A Pi-Powered Plan 9 Cluster&lt;/a&gt;&lt;/h2&gt;Plan9 is what Linux could-have-been. It was built for clusters, with file, process, sharing made easy. A long time ago I had a 2-machine cluster (1 Raspberry and a very old laptop), which I used as a storage/sharing files across two Macbooks using Plan9 from User Space syncing into a Venti file server. Ah, those were the days!&lt;br /&gt;&lt;h2 id=&quot;toc_41&quot;&gt;&lt;a href=&quot;https://www.independent.co.uk/news/world/modern-art-was-cia-weapon-1578808.html&quot;&gt;Modern art was CIA &#39;weapon&#39;&lt;/a&gt;&lt;/h2&gt;TL;DR: The CIA funded art tours to show the capitalist West still had creativity&lt;br /&gt;&lt;h2 id=&quot;toc_42&quot;&gt;&lt;a href=&quot;https://www.nationalgeographic.com/culture/2019/03/maya-ritual-balamku-cave-stuns-archaeologists/&quot;&gt;Maya ritual cave ‘untouched’ for 1,000 years stuns archaeologists&lt;/a&gt;&lt;/h2&gt;My girlfriend majored in History, with a focus on pre-Columbian meso-american history, so I always pay more attention to articles about the area. &lt;br /&gt;&lt;h2 id=&quot;toc_43&quot;&gt;&lt;a href=&quot;https://open.nytimes.com/remembering-a-programming-language-that-helped-shape-the-digital-new-york-times-cd809d707c74&quot;&gt;Remembering a Programming Language that Helped Shape the Digital New York Times&lt;/a&gt;&lt;/h2&gt;An interesting history tidbit. And a good lesson on why custom-built languages and DSLs are a blessing and a curse.&lt;br /&gt;&lt;h2 id=&quot;toc_44&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Guns-Germs-Steel-Fates-Societies-ebook/dp/B06X1CT33R/ref=as_li_ss_tl?keywords=guns+germs+and+steel&amp;amp;qid=1554657889&amp;amp;s=books&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=6dcd09e339c85744a4723e41f3b7f825&quot;&gt;📚 Guns, Germs and Steel&lt;/a&gt;&lt;/h2&gt;I’ve had this book on my Audible account since... 2014 I think. And actually, I also have the print copy. It was recommend to me by my thesis advisor, and it is indeed a very interesting subject, but there are points when the Audible version is as dull as watching paint dry. I haven’t read the print version, but consider that before audiobook.&lt;br /&gt;&lt;h2 id=&quot;toc_45&quot;&gt;&lt;a href=&quot;https://blog.softwaremill.com/final-tagless-seen-alive-79a8d884691d&quot;&gt;Final Tagless seen alive&lt;/a&gt;&lt;/h2&gt;This is a response to John de Goes’ talk &lt;a href=&quot;https://uk.droidcon.com/skillscasts/13247-scala-matters&quot;&gt;The death of final tagless&lt;/a&gt;. I don’t have a definite opinion here. I like &lt;a href=&quot;https://softwaremill.com/free-tagless-compared-how-not-to-commit-to-monad-too-early/&quot;&gt;free monad&lt;/a&gt; approaches, since they make interpreters easy to understand and optimisable “easily”, on the other hand &lt;a href=&quot;https://github.com/scalaz/scalaz-zio&quot;&gt;Zio&lt;/a&gt; looks clean, but that’s as far as I go: I don’t have a strong opinion either way on final tagless, judge yourself from both sources&lt;br /&gt;&lt;h2 id=&quot;toc_46&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4794083979670138233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/4794083979670138233'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/04/2019-9-readings-of-week-x4.html' title='2019-9 Readings of the week (x4)'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-6463179864274706595</id><published>2019-03-04T21:11:00.001+01:00</published><updated>2019-03-04T21:11:22.400+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Alloy"/><category scheme="http://www.blogger.com/atom/ns#" term="Books"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><title type='text'>2019-8 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Software engineering, formal methods, fraud, Scala. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://qz.com/794524/messaging-startup-slack-is-secretly-an-acronym-for-searchable-log-of-all-communication-and-knowledge/&quot;&gt;Messaging startup Slack is secretly an acronym for...&lt;/a&gt;&lt;/h2&gt;No spoilers, you&#39;ll need to click. It &lt;i&gt;may&lt;/i&gt; or &lt;i&gt;may not&lt;/i&gt; surprise you&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;http://degoes.net/articles/zio-environment&quot;&gt;Beautiful, Simple, Testable Functional Effects for Scala&lt;/a&gt;&lt;/h2&gt;Next thing I write in a functional style in Scala, it will be using &lt;a href=&quot;https://scalaz.github.io/scalaz-zio/&quot;&gt;Zio&lt;/a&gt; for sure. This was a follow-up to a talk given at &lt;a href=&quot;https://skillsmatter.com/skillscasts/13247-scala-matters&quot;&gt;Skills Matter&lt;/a&gt;, and shortly followed by a podcast interview in &lt;a href=&quot;https://scala.love/effectful-episode-with-john-de-goes/&quot;&gt;Scala Love&lt;/a&gt;. Haven&#39;t watched the talk yet, but the podcast was good.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://www.apple.com/newsroom/2019/02/apple-highlights-best-photos-shot-on-iphone-around-the-world/&quot;&gt;Apple highlights best photos shot on iPhone around the world&lt;/a&gt;&lt;/h2&gt;They look good. And that may be an understatement.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://www.hillelwayne.com/post/formally-specifying-uis/&quot;&gt;Formally Specifying UIs&lt;/a&gt;&lt;/h2&gt;If you&#39;ve been following my readings of the week you&#39;ll know I&#39;ve been converted into a fan of formal methods. And &lt;a href=&quot;http://alloytools.org/&quot;&gt;alloy&lt;/a&gt; is pretty cool.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://abhsrivastava.github.io/2018/11/03/Hangman-Game-Using-ZIO/&quot;&gt;Building the Hangman Game using ZIO&lt;/a&gt;&lt;/h2&gt;An approachable example (in addition to the details in the post above by John himself) based in a talk &lt;a href=&quot;http://twitter.com/jdegoes&quot;&gt;John&lt;/a&gt; gave, detailed by Abhishek Srivastava.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://www.wired.co.uk/article/revolut-trade-unions-labour-fintech-politics-storonsky&quot;&gt;Revolut insiders reveal the human cost of a fintech unicorn&#39;s wild rise&lt;/a&gt;&lt;/h2&gt;This week the CFO of Revolut resigned his position, after (possibly) an investigation about fraud. That was an amber flag, but reading how Revolut&#39;s CEO treats employees... As a worker in the same space (tech) that&#39;s a red. I had been using Revolut for more than a year (before I used Monzo) and I&#39;ll be using &lt;a href=&quot;https://n26.com/r/rubenb2889&quot;&gt;N26&lt;/a&gt; as soon as I get my card. By enrolling by the &lt;a href=&quot;https://n26.com/r/rubenb2889&quot;&gt;N26&lt;/a&gt; link here I think I get some kind of affiliate return, I&#39;m not sure.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://www.johndcook.com/blog/2019/02/18/command-line-wizard/&quot;&gt;The hard part in becoming a command line wizard&lt;/a&gt;&lt;/h2&gt;In the end, it&#39;s the hard part in becoming a wizard in anything. Math, programming, playing the ukulele. &lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://blog.bolt.io/casper-glow-e4f8819376d7&quot;&gt;Casper’s clever little nightlight&lt;/a&gt;&lt;/h2&gt;I don&#39;t read many hardware breakdowns, but somehow I clicked on this one and now I want one of these nightlights.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Storytelling-Animal-Stories-Make-Human/dp/0544002342/ref=as_li_ss_tl?crid=1EML1L792VSX5&amp;amp;keywords=storytelling+animal&amp;amp;qid=1551729721&amp;amp;s=gateway&amp;amp;sprefix=storytelling+animal,aps,243&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=1b49440451004950dfae11397a519ea9&quot;&gt;📚 The Storytelling Animal: How Stories Make Us Human&lt;/a&gt;&lt;/h2&gt;I was attracted to the premise of this book, but it felt pretty underwhelming. It has pretty high reviews, so it may have been just me.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/6463179864274706595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/6463179864274706595'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/03/2019-8-readings-of-week.html' title='2019-8 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-944563697372949651</id><published>2019-02-26T22:54:00.000+01:00</published><updated>2019-02-26T22:59:06.182+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Alloy"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TLA+"/><title type='text'>2019-7 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Formal methods, Scala, productivity.  Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://2.bp.blogspot.com/-nUXZggKI4RQ/XHW2nqHGflI/AAAAAAAAEvw/1D6o_zHdc0QB3sycIkSroFc7PlN7PhYpwCLcBGAs/s1600/Ni.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;204&quot; data-original-width=&quot;245&quot; src=&quot;https://2.bp.blogspot.com/-nUXZggKI4RQ/XHW2nqHGflI/AAAAAAAAEvw/1D6o_zHdc0QB3sycIkSroFc7PlN7PhYpwCLcBGAs/s1600/Ni.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 id=&quot;toc_0&quot;&gt;&lt;a href=&quot;https://www.hillelwayne.com/post/knights-knaves/&quot;&gt;Solving Knights and Knaves with Alloy&lt;/a&gt;&lt;/h2&gt;Once you start your journey down the formal methods rabbit hole (which I started with TLA+) you can never stop. This is a &lt;em&gt;very&lt;/em&gt; good introduction to Alloy, a modelling language which seems well suited for data structure descriptions (not procedural/step-time models)&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://blog.stephenwolfram.com/2019/02/seeking-the-productive-life-some-details-of-my-personal-infrastructure/&quot;&gt;Seeking the Productive Life: Some Details of My Personal Infrastructure&lt;/a&gt;&lt;/h2&gt;As much as I don&#39;t like Stephen Wolfram, his obsessive take on being productive echoes mine. And that worries me.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://cloudbootup.com/post/encryption-key-hierarchies-in-alloy.html&quot;&gt;Encryption Key Hierarchies in Alloy&lt;/a&gt;&lt;/h2&gt;Next after the intro above, this is a short post about how you would set up a reasonable hierarchy of keys in an organisation. Something like &quot;Infrastructure team owns infrastructure keys, developers own GitHub&quot; but with more layers. Then you can automatically check somebody has access to stuff, etc. Neat.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://blog.softwaremill.com/is-your-scala-object-always-a-singleton-cb3fd24a2fd9&quot;&gt;Is your Scala object always a singleton?&lt;/a&gt;&lt;/h2&gt;The guys at &lt;a href=&quot;https://blog.softwaremill.com/&quot;&gt;SoftwareMill&lt;/a&gt; (excellent technical blog and people) stumbled upon this. The kind of bug that could defeat you, but they succeeded, and documented it for the rest of us.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://www.hillelwayne.com/post/alloy-randomizer/&quot;&gt;Proving Games are Winnable with Alloy&lt;/a&gt;&lt;/h2&gt;And the final instalment in this week&#39;s formal method extravaganza, how to prove a randomised game (say, Zelda) can be winnable using Alloy.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://chriskiehl.com/article/event-sourcing-is-hard&quot;&gt;Don&#39;t Let the Internet Dupe you, Event Sourcing is Hard&lt;/a&gt;&lt;/h2&gt;Yep, can totally agree, I&#39;ve hit some of the roadblocks and fun moments the author shares. As usual, some &lt;a href=&quot;https://news.ycombinator.com/item?id=19072850&quot;&gt;HackerNews comments&lt;/a&gt; can be enlightening.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/&quot;&gt;On Being A Senior Engineer&lt;/a&gt;&lt;/h2&gt;There are many definitions of what being senior is, but you can&#39;t go wrong trying to follow these suggestions&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://www.theguardian.com/books/booksblog/2019/jan/24/hold-the-front-pages-meet-the-endpaper-enthusiasts&quot;&gt;Hold the front pages: meet the endpaper enthusiasts&lt;/a&gt;&lt;/h2&gt;I&#39;m pretty sure you didn&#39;t know there are collectors of endpaper.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://www.the-paper-trail.org/post/art-paper-notes/&quot;&gt;Beating hash tables with trees? The ART-ful radix trie&lt;/a&gt;&lt;/h2&gt;A synopsis of a data structure paper, about ART radix tries. They are kind-of-like tries, but try to use less memory.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://medium.com/wix-engineering/scala-pattern-matching-apply-the-unapply-7237f8c30b41&quot;&gt;Scala pattern matching: apply the unapply&lt;/a&gt;&lt;/h2&gt;In case you didn&#39;t know how pattern matching works (hint: unapply), this post will tell you.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://github.com/clemera/buffer-expose/blob/master/README.org&quot;&gt;buffer-expose emacs package&lt;/a&gt;&lt;/h2&gt;A package released late last week, it helps you navigate your open buffers in a visual way. Pretty neat, and even with my usual 20+ buffers seems to work seamlessly.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/944563697372949651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/944563697372949651'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/02/2019-7-readings-of-week.html' title='2019-7 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-nUXZggKI4RQ/XHW2nqHGflI/AAAAAAAAEvw/1D6o_zHdc0QB3sycIkSroFc7PlN7PhYpwCLcBGAs/s72-c/Ni.gif" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-8180275053025566687</id><published>2019-02-19T23:47:00.000+01:00</published><updated>2019-02-19T23:47:04.663+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Big data"/><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Hive"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><title type='text'>Apache Hive and java.lang.ClassCastException on start</title><content type='html'>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://3.bp.blogspot.com/-ycH6I322VSI/XGnjZdNOL1I/AAAAAAAAEvQ/JP2jvgcU-iwSLi4yGesx_Hx-8fkXVKOfQCLcBGAs/s1600/annie-spratt-137316-unsplash.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;766&quot; data-original-width=&quot;1600&quot; height=&quot;191&quot; src=&quot;https://3.bp.blogspot.com/-ycH6I322VSI/XGnjZdNOL1I/AAAAAAAAEvQ/JP2jvgcU-iwSLi4yGesx_Hx-8fkXVKOfQCLcBGAs/s400/annie-spratt-137316-unsplash.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;Photo by&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://unsplash.com/photos/8_WZU5xKFKk?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Annie Spratt&lt;/a&gt;&amp;nbsp;on&amp;nbsp;&lt;a href=&quot;https://unsplash.com/search/photos/hive?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot; style=&quot;box-sizing: border-box; color: #999999; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;San Francisco&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Ubuntu, Roboto, Noto, &amp;quot;Segoe UI&amp;quot;, Arial, sans-serif; text-align: start; transition: color 0.2s ease-in-out, opacity 0.2s ease-in-out; white-space: nowrap;&quot;&gt;Unsplash&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;A couple of days ago I installed &lt;a href=&quot;https://github.com/apache/hive&quot;&gt;Hive&lt;/a&gt;  from &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; on my Mac. Sadly, when I tried to run the &lt;code class=&quot;code-inline&quot;&gt;hive&lt;/code&gt; command, I got the weird-looking error&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Exception in thread &quot;main&quot; java.lang.ClassCastException:&amp;nbsp;&lt;br /&gt;  class jdk.internal.loader.ClassLoaders$AppClassLoader &lt;br /&gt;   cannot be cast to&amp;nbsp;&lt;br /&gt;  class java.net.URLClassLoader &lt;br /&gt;  (jdk.internal.loader.ClassLoaders$AppClassLoader&amp;nbsp;&lt;br /&gt;    and &lt;br /&gt;  java.net.URLClassLoader are in module java.base of loader &#39;bootstrap&#39;)&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;That looked like a JVM incompatibility, so I switched from GraalVM (the one I use by default) to Java 8 (I have aliases &lt;code class=&quot;code-inline&quot;&gt;jgrce&lt;/code&gt;, &lt;code class=&quot;code-inline&quot;&gt;jgree&lt;/code&gt;, &lt;code class=&quot;code-inline&quot;&gt;j8&lt;/code&gt; and &lt;code class=&quot;code-inline&quot;&gt;j11&lt;/code&gt; to switch JVMs). Still, the same error regardless. Weird. Maybe Java 11 (the other JVM I have installed)? Nope, same error. &lt;br /&gt;&lt;br /&gt;A quick Googling confirmed that this was related to Hive picking up Java 11, but only working with 7, 8 or 9 (not sure about 9). This in turn is due to the Hive boot scripts looking for the latest JRE which is at least 7, like the &lt;code class=&quot;code-inline&quot;&gt;hive&lt;/code&gt; command here:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;JAVA_HOME=&quot;$(/usr/libexec/java_home --version 1.7+)&quot; \&amp;nbsp;&lt;br /&gt;HIVE_HOME=&quot;/usr/local/Cellar/hive/3.1.1/libexec&quot; exec \&lt;br /&gt;&quot;/usr/local/Cellar/hive/3.1.1/libexec/bin/hive&quot; &quot;$@&quot;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This will pick 11, which no longer has &lt;code class=&quot;code-inline&quot;&gt;URLClassLoader&lt;/code&gt; (I think this was changed in Java 9). So, won&#39;t start. &lt;br /&gt;&lt;br /&gt;Sadly the only reasonable fix is modifying the scripts after installation, unless you want to just uninstall Java &amp;gt; 1.8. For me this was not an option, so I just modified the scripts by removing the &lt;code class=&quot;code-inline&quot;&gt;JAVA_HOME&lt;/code&gt; condition (since I set my &lt;code class=&quot;code-inline&quot;&gt;JAVA_HOME&lt;/code&gt; globally when I switch between JVMs). And crossing fingers to remember I did so next time I upgrade HomeBrew.&lt;br /&gt;&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8180275053025566687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8180275053025566687'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/02/apache-hive-and-javalangclasscastexcept.html' title='Apache Hive and java.lang.ClassCastException on start'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-ycH6I322VSI/XGnjZdNOL1I/AAAAAAAAEvQ/JP2jvgcU-iwSLi4yGesx_Hx-8fkXVKOfQCLcBGAs/s72-c/annie-spratt-137316-unsplash.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-1029575358613349884</id><published>2019-02-17T18:54:00.005+01:00</published><updated>2019-02-17T19:16:31.300+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="GTD"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><title type='text'>2019-6 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Softwareengineering, adtech, psychology, python. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_0&quot;&gt;&lt;a href=&quot;https://www.wired.com/story/finding-lena-the-patron-saint-of-jpegs/&quot;&gt;Finding Lena Forsen, the Patron Saint of JPEGs&lt;/a&gt;&lt;/h2&gt;I have written about Lena Forsen (previously Soderberg) &lt;a href=&quot;https://www.mostlymaths.net/2009/12/image-processing-history-lena.html&quot;&gt;before&lt;/a&gt;. This is an article explaining the story behind the classic picture, the issues that have arisen with it after the years and a bit of the take of the subject, Lena.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://blogs.dropbox.com/tech/2019/02/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3/&quot;&gt;Incrementally migrating over one million lines of code from Python 2 to Python 3&lt;/a&gt;&lt;/h2&gt;Did you know, Dropbox (the client) is written in Python? Well, I did, but wasn&#39;t aware of its scale. And, now it&#39;s mostly Python 3, which is good to know. Bonus points for Dropbox for using &lt;code&gt;pytest&lt;/code&gt; as well.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.adweek.com/programmatic/how-criteo-is-trying-to-navigate-gdpr/&quot;&gt;How Criteo is trying to navigate GDPR&lt;/a&gt;&lt;/h2&gt;Since I work in adtech, I need to keep up with what&#39;s up and how everything is going. This article explains a bit the impact of GDPR on Criteo, one of the largest players in programmatic advertising in Europe. By the way, Criteo have a &lt;a href=&quot;http://labs.criteo.com/engineering-blog/&quot;&gt;superb engineering blog&lt;/a&gt;, although it can be a bit hard to read through an adblocker. By the way, the linked post is behind a paywall. Paste the URL of the link on Google and click on the first search result to be able to read it if interested.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://facilethings.com/blog/en/why-gtd-fails&quot;&gt;10 Reasons Why GTD Might Be Failing&lt;/a&gt;&lt;/h2&gt;The title of the linked article should end in &lt;em&gt;for you&lt;/em&gt;. It lists the common problems a GTD newbie-intermediate can face. Been there, done that. Still am, probably.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://medium.com/@shl/reflecting-on-my-failure-to-build-a-billion-dollar-company-b0c31d7db0e7&quot;&gt;Reflecting on My Failure to Build a Billion Dollar Company&lt;/a&gt;&lt;/h2&gt;The story of GumRoad, the publishing site. A very interesting view on startups.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://www.martinfowler.com/bliki/StranglerApplication.html&quot;&gt;StranglerApplication&lt;/a&gt;&lt;/h2&gt;One of Martin Fowler&#39;s refactoring approaches. I&#39;m pretty sure you&#39;ve done this, turns out it has a name.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;http://www.greatdisasters.co.uk/the-de-havilland-comet/&quot;&gt;The de Havilland Comet&lt;/a&gt;&lt;/h2&gt;The story of the first passenger jet disasters, and why they happened.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://sobolevn.me/2019/01/simple-dependent-types-in-python&quot;&gt;Simple dependent types in Python&lt;/a&gt;&lt;/h2&gt;They may be a bit too simple for what you may be looking for, but the potential is there. Also, linked to the following, which I found ideal.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://sobolevn.me/2018/07/real-python-contants&quot;&gt;1-minute guide to real constants in Python&lt;/a&gt;&lt;/h2&gt;There&#39;s actually a &lt;code&gt;Final&lt;/code&gt; type coming, someday, to Python, which will make constants real constants. Looking forward to that.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.vox.com/science-and-health/2019/1/31/18200497/dunning-kruger-effect-explained-trump&quot;&gt;The Dunning-Kruger effect, and how to fight it&lt;/a&gt;&lt;/h2&gt;There is a quote in this interview of David Dunning which is &lt;em&gt;just&lt;/em&gt; brilliant:&lt;br /&gt;&lt;blockquote&gt;The first rule of the Dunning-Kruger club is you don’t know you’re a member of the Dunning-Kruger club. People miss that.”&lt;/blockquote&gt;&lt;h2 id=&quot;toc_10&quot;&gt;📚&lt;a href=&quot;https://www.amazon.com/Atomic-Habits-Changes-Remarkable-Results/dp/B07GBGB7SY/ref=as_li_ss_tl?keywords=atomic+habits&amp;amp;qid=1550425942&amp;amp;s=books&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=cb8258cc865acbe966efb5ff999f1b8a&quot;&gt;Atomic Habits&lt;/a&gt;&lt;/h2&gt;This week I have finished &lt;a href=&quot;https://www.amazon.com/Atomic-Habits-Changes-Remarkable-Results/dp/B07GBGB7SY/ref=as_li_ss_tl?keywords=atomic+habits&amp;amp;qid=1550425942&amp;amp;s=books&amp;amp;sr=1-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=cb8258cc865acbe966efb5ff999f1b8a&quot;&gt;Atomic Habits&lt;/a&gt; (affiliate link). I didn&#39;t expect much, after having read so many productivity books during my life. And indeed, there was &lt;em&gt;nothing new&lt;/em&gt; I hadn&#39;t read before, but the presentation, examples and overall feel of the book have been excellent, I have rated it 5 stars in Goodreads, which is not something I do frequently (once per year, approximately).&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/1029575358613349884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/1029575358613349884'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/02/2019-6-readings-of-week.html' title='2019-6 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-5856357677383389007</id><published>2019-02-10T22:38:00.000+01:00</published><updated>2019-02-17T18:49:10.993+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><title type='text'>2019-5 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied, and some links below are affiliate links. Software/data engineering, psychology, formal systems. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-ssVo5y2ymUY/XGCZimdMEVI/AAAAAAAAEuw/2--NjcM3HhMA03FX5PGGvoS2vGELXfAzwCK4BGAYYCw/s1600/simcity.gif&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://1.bp.blogspot.com/-ssVo5y2ymUY/XGCZimdMEVI/AAAAAAAAEuw/2--NjcM3HhMA03FX5PGGvoS2vGELXfAzwCK4BGAYYCw/s320/simcity.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://perevillega.com/playing-with-rust&quot;&gt;Playing with Rust&lt;/a&gt;&lt;/h2&gt;I&#39;ve known Pere for several years, and I&#39;m glad to see his views on Rust. Looks like not every Scala developer has to move from Scala to Haskell.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://medium.com/hultner/try-out-walrus-operator-in-python-3-8-d030ce0ce601&quot;&gt;Try out walrus operator in Python 3.8&lt;/a&gt;&lt;/h2&gt;&lt;em&gt;I am the egg man, they are the egg men, I am the PEP 572: Goo goo g&#39;joob&lt;/em&gt;. Well, or not. This feels very un-pythonic, and we all know the amount of flak BDFL got for that. But oh well, it&#39;s in Python 3.8-dev. Let this serve as the weekly reminder that &lt;a href=&quot;https://github.com/pyenv/pyenv&quot;&gt;pyenv&lt;/a&gt; is excellent.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://betterhumans.coach.me/cognitive-journaling-a-systematic-method-to-overcome-negative-beliefs-119be459842c&quot;&gt;Cognitive Journaling: A Systematic Method to Overcome Negative Beliefs&lt;/a&gt;&lt;/h2&gt;Last year I had been journaling on and off, and this year I have been consistent, every day so far since New Year. This has interesting approaches to understand your mind better.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://slab.com/blog/jeff-bezos-writing-management-strategy&quot;&gt;How Jeff Bezos Turned Narrative into Amazon&#39;s Competitive Advantage&lt;/a&gt;&lt;/h2&gt;This idea is gold, but the &lt;a href=&quot;https://news.ycombinator.com/item?id=19115686&quot;&gt;HackerNews comments&lt;/a&gt; are better than the original article.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://logicmag.io/06-model-metropolis/&quot;&gt;Model Metropolis&lt;/a&gt;&lt;/h2&gt;I read about Forrester&#39;s &lt;a href=&quot;https://www.amazon.com/Urban-Dynamics-Jay-Wright-Forrester/dp/0262060264/ref=as_li_ss_tl?keywords=forrester+urban+dynamics&amp;amp;qid=1549830974&amp;amp;s=gateway&amp;amp;sr=8-1-fkmrnull&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=5da390ef8c08e724d1f989d97c94afa7&quot;&gt;Urban Dynamics&lt;/a&gt; in the excellent &lt;a href=&quot;https://www.amazon.com/Thinking-in-Systems-A-Primer/dp/B07FW9Z4KG/ref=as_li_ss_tl?keywords=meadows+systems+thinking&amp;amp;qid=1549831040&amp;amp;s=gateway&amp;amp;sr=8-1&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=209b94245ac5ee9b2edcf2df48abff48&quot;&gt;Thinking in Systems&lt;/a&gt; from Donella Meadows. And this also talks about SimCity, what else could I want?&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://triplebyte.com/blog/a-humility-training-exercise-for-technical-interviewers&quot;&gt;A Humility Training Exercise for Technical Interviewers&lt;/a&gt;&lt;/h2&gt;The idea presented here is powerful: learn to remove biases from your interviews. As an occasional interviewer (and interviewee),  I can totally see how this can help.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://pandas-dev.github.io/pandas-blog/pandas-extension-arrays.html&quot;&gt;pandas blog – Pandas Extension Arrays&lt;/a&gt;&lt;/h2&gt;Extension arrays show a lot of promise, and right now there is work underway for Pandas extension arrays based on Arrow (&lt;a href=&quot;https://github.com/xhochy/fletcher&quot;&gt;fletcher&lt;/a&gt;). Although the cool work will happen when the underlying memory layout and building blocks of Pandas are actually Arrow... And that is underway as well.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;http://blog.felipe.rs/2019/01/29/demystifying-join-algorithms/&quot;&gt;Demystifying JOIN Algorithms&lt;/a&gt;&lt;/h2&gt;A very good explanation of basic join algorithms, with a pseudocode that looks pretty much like Python&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5856357677383389007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5856357677383389007'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/02/2019-5-readings-of-week.html' title='2019-5 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-ssVo5y2ymUY/XGCZimdMEVI/AAAAAAAAEuw/2--NjcM3HhMA03FX5PGGvoS2vGELXfAzwCK4BGAYYCw/s72-c/simcity.gif" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-8976576758156774185</id><published>2019-02-05T22:56:00.002+01:00</published><updated>2019-02-09T10:52:36.540+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="math"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><title type='text'>2019-4 Readings of the week</title><content type='html'>&lt;span style=&quot;font-size: small; font-weight: normal;&quot;&gt;Sorry for the delay, Sunday was my birthday (also, &lt;a href=&quot;https://en.wikipedia.org/wiki/Elmo&quot;&gt;Elmo’s&lt;/a&gt;, and &lt;a href=&quot;https://www.amazon.com/American-Pie-LP-Don-McLean/dp/B01D0AKZJC/ref=as_li_ss_tl?ie=UTF8&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=0d1c561dac803bc28d1f40bfa58c7841&quot;&gt;The Day The Music Died&lt;/a&gt; as well) and I spent the day without access to a computer.&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://1.bp.blogspot.com/-RUF5UpdiuNQ/XFoF4PFIBHI/AAAAAAAAEug/-X88FOEVfscXp1vxKdbzGEYcu-pJcM7zgCLcBGAs/s1600/Elmo.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;270&quot; data-original-width=&quot;480&quot; height=&quot;180&quot; src=&quot;https://1.bp.blogspot.com/-RUF5UpdiuNQ/XFoF4PFIBHI/AAAAAAAAEug/-X88FOEVfscXp1vxKdbzGEYcu-pJcM7zgCLcBGAs/s320/Elmo.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied. Software/data engineering, psychology, formal systems. Expect a similar wide range in the future as well. You can check all my weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://www.newyorker.com/magazine/2019/01/21/the-art-of-decision-making&quot;&gt;The Art of Decision-Making&lt;/a&gt;&lt;/h2&gt;An overview of (what looks like) pop-sci books on decision making. There are some interesting ideas, especially regarding aspiration vs ambition.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.johndcook.com/blog/2019/02/02/landau-kolmogorov/&quot;&gt;The Soviet license plate game and Kolmogorov complexity&lt;/a&gt;&lt;/h2&gt;Excellent post as usual by &lt;a href=&quot;https://twitter.com/JohnDCook&quot;&gt;John D. Cook&lt;/a&gt; mixing something interesting with a bit of mathematical analysis (which is also obviously interesting). Also makes Soviet license plates sound more interesting than they should.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://blog.godatadriven.com/spark-beware&quot;&gt;Spark surprises for the uninitiated&lt;/a&gt;&lt;/h2&gt;I’ve known about the pain of non-deterministic Spark operators (went down some of the codebase rabbit holes while investigating a weird predicate push down rule I suspect is conceptually wrong). This post will actually get you scared: how do you test &lt;em&gt;this&lt;/em&gt;?&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://medium.com/@jeremy.noring/regrettable-code-episode-1-767dc1b92bd1&quot;&gt;Regrettable Code, Episode 1&lt;/a&gt;&lt;/h2&gt;A history about profiling a Python application and the accumulation of small decisions that lead to a large performance bottleneck.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://julien.danjou.info/high-performance-in-python-with-zero-copy-and-the-buffer-protocol/&quot;&gt;High-Performance in Python with Zero-Copy and the Buffer Protocol&lt;/a&gt;&lt;/h2&gt;I wasn’t aware of the buffer class/protocol in Python, but it looks like something I should be aware of. &lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://peeke.nl/simulating-blobs-of-fluid&quot;&gt;Simulating blobs of fluid&lt;/a&gt;&lt;/h2&gt;A long long time ago, I can still remember, I loved creating visualizations and animations. I still do, I just don’t have the time. Otherwise, I’d implement this.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=19048108&quot;&gt;Ask HN: Top three questions for a startup before accepting a job offer?&lt;/a&gt;&lt;/h2&gt;Not the first time a similar question has been asked in Hacker News, but it’s good to keep a few of this stored for future reference.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://rise.cs.berkeley.edu/blog/ray-scheduling&quot;&gt;Ray: Application-level scheduling with custom resources&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;https://dask.org/&quot;&gt;Dask&lt;/a&gt; and &lt;a href=&quot;https://github.com/ray-project/ray&quot;&gt;Ray&lt;/a&gt; are next in my list of stuff I want to try. I love Spark, and love Scala, but the more tools in my belt, the better an engineer I can be.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://medium.com/visly/rust-on-ios-39f799b3c1dd&quot;&gt;Rust on iOS&lt;/a&gt;&lt;/h2&gt;An updated tutorial on using a Rust library in a Swift application for iOS. I have tried, it actually works. I need a time machine or something.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;http://degoes.net/articles/zio-threads&quot;&gt;Thread Pool Best Practices with ZIO&lt;/a&gt;&lt;/h2&gt;The idea reminds me of how the Go (Golang) scheduler handles the mapping between goroutines and OS threads.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://medium.com/@dominik.tornow/the-kubernetes-scheduler-cd429abac02f&quot;&gt;The Kubernetes Scheduler&lt;/a&gt;&lt;/h2&gt;An &lt;em&gt;awesome&lt;/em&gt; post about the Kubernetes scheduler and its internal workings, with partial TLA+ specs of the moving pieces. It may be a bit over-the-top if you don’t know a lot about K8s internals or any TLA+, but if you know a bit of two, you’re in for a treat.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://www.nature.com/articles/d41586-019-00174-1&quot;&gt;Shadows used to peer around corners&lt;/a&gt;&lt;/h2&gt;Technique to peek behind corners from a &lt;em&gt;still picture&lt;/em&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://www.johndcook.com/blog/2019/01/23/queueing/&quot;&gt;Queueing theory: The science of waiting in line&lt;/a&gt;&lt;/h2&gt;Another one by John (I think he has won the readings of this week? There’s no prize, though). I’m a mathematician by training, so I didn’t get to study some of the cool (and, according to CS major friends, boring) stuff I love to hear about, like... queuing theory.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;These weekly posts are also available as a newsletter. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8976576758156774185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8976576758156774185'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/02/2019-4-readings-of-week.html' title='2019-4 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-RUF5UpdiuNQ/XFoF4PFIBHI/AAAAAAAAEug/-X88FOEVfscXp1vxKdbzGEYcu-pJcM7zgCLcBGAs/s72-c/Elmo.gif" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-3264588044930916232</id><published>2019-01-27T20:01:00.000+01:00</published><updated>2019-02-17T18:56:48.524+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="TLA+"/><title type='text'>2019-3 Readings of the week</title><content type='html'>&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied. Software/data engineering, history, formal systems. Expect a similar wide range in the future as well. You can check all weekly readings by checking the  &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt; . You can also get these as a weekly newsletter by subscribing &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://www.notechmagazine.com/2018/07/fermentation-and-daily-life.html&quot;&gt;Fermentation and Daily Life&lt;/a&gt;&lt;/h2&gt;I’m not a fan of fermented food, but my girlfriend is. The article is interesting even for me.&lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.nytimes.com/2019/01/26/business/against-hustle-culture-rise-and-grind-tgim.html&quot;&gt;Why Are Young People Pretending to Love Work?&lt;/a&gt;&lt;/h2&gt;The “grind and hustle” gets old pretty quick.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://lamport.azurewebsites.net/tla/book.html&quot;&gt;📚 Specifying Systems&lt;/a&gt;&lt;/h2&gt;&lt;em&gt;The book&lt;/em&gt; for learning TLA+ (and, free to download from the link above). I’m reading it right now, step by step. You can also get a paperback version from &lt;a href=&quot;https://www.amazon.com/Specifying-Systems-Language-Hardware-Engineers/dp/032114306X/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1548615553&amp;amp;sr=8-2&amp;amp;keywords=practical+tla+&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=b28c49dcc2aab1732af9966f8d9708e0&quot;&gt;Amazon&lt;/a&gt; (affiliate link) but it&#39;s kind of expensive.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://www.atlasobscura.com/articles/bartender-antarctica-south-pole&quot;&gt;The Perils and Pleasures of Bartending in Antarctica&lt;/a&gt;&lt;/h2&gt;It kind of makes sense.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://publicdomainreview.org/2019/01/10/how-the-pre-raphaelites-became-obsessed-with-the-wombat/&quot;&gt;“O Uommibatto”: How the Pre-Raphaelites Became Obsessed with the Wombat&lt;/a&gt;&lt;/h2&gt;Whomwhat?&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://www.hillelwayne.com/post/why-dont-people-use-formal-methods/&quot;&gt;Why Don’t People Use Formal Methods?&lt;/a&gt;&lt;/h2&gt;As you may have realized, I’m interested in formal methods and verification. I’m not the only one, and since I now pay more attention to articles on the subject, I find more articles to share. Hillel is the author of &lt;a href=&quot;https://www.amazon.com/Practical-TLA-Planning-Driven-Development/dp/1484238281/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1548615491&amp;amp;sr=8-1&amp;amp;keywords=practical+tla+&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=9da563f0c274543c113482957c9c57c7&quot;&gt;Practical TLA+&lt;/a&gt; (affiliate link), the book that finally got me to write specs.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://hackaday.com/2019/01/22/the-1859-carrington-event/&quot;&gt;The 1859 Carrington Event&lt;/a&gt;&lt;/h2&gt;The idea of this happening “now” is actually scary.&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=18588727&quot;&gt;Ask HN: What are your “brain hacks” that help you manage everyday situations?&lt;/a&gt;&lt;/h2&gt;You may pick up one or two tricks that can be useful.&lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.nytimes.com/2018/11/07/magazine/placebo-effect-medicine.html&quot;&gt;What if the Placebo Effect Isn’t a Trick?&lt;/a&gt;&lt;/h2&gt;Here, take this sugar pill. You’ll be cured.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://www.slideshare.net/RicardoPaiva17/how-criteo-is-managing-one-of-the-largest-kafka-infrastructure-in-europe&quot;&gt;Kafka at Criteo&lt;/a&gt;&lt;/h2&gt;Slides from Slideshare. The scale is astounding. Note that the &lt;a href=&quot;http://labs.criteo.com/engineering-blog/&quot;&gt;engineering blog at Criteo&lt;/a&gt; is top notch, but your adblocker is probably going to give you  a hard time reading it.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://www.fpcomplete.com/blog/when-rust-is-safer-than-haskell&quot;&gt;When Rust is safer than Haskell&lt;/a&gt;&lt;/h2&gt;I’m closer to doing useful stuff in Rust than in Haskell, so it’s always good to know Rust has some nice tricks up its sleeve.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://lorinhochstein.wordpress.com/2018/12/27/inductive-invariants/&quot;&gt;Inductive invariants&lt;/a&gt;&lt;/h2&gt;More TLA+ goodness, from Lorin Hochstein.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://www.meetup.com/Spark-Barcelona/events/258139339/&quot;&gt;Spark Barcelona Meetup: Speeding up PySpark with Arrow&lt;/a&gt;&lt;/h2&gt;This Thursday I’m speaking about how PySpark got faster by using Arrow internally. If you are around Barcelona please join us! Note that the slides for this talk are not up yet!&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://www.amazon.com/Meditation-for-Fidgety-Skeptics/dp/B07CNR397V/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1548614747&amp;amp;sr=8-3&amp;amp;keywords=meditation+for+fidgety+skeptics+by+dan+harris&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=ca507dfaed37d3bcc9edc89b46c44d9d&quot;&gt;📚 Meditation for Fidgety Skeptics by Dan Harris&lt;/a&gt;&lt;/h2&gt;(note there are affiliate links in here) This is the follow-up to &lt;a href=&quot;https://www.amazon.com/10-Happier-Reduced-Self-Help-Actually/dp/B077TYZQMQ/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1548614747&amp;amp;sr=8-4&amp;amp;keywords=meditation+for+fidgety+skeptics+by+dan+harris&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=97fabcca3dc51c2d5d7e0c2e773d187e&quot;&gt;10% Happier&lt;/a&gt;. MfFS is good, offering a more practical take than the previous one. As books to stand on its own, &lt;a href=&quot;https://www.amazon.com/10-Happier-Reduced-Self-Help-Actually/dp/B077TYZQMQ/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1548614747&amp;amp;sr=8-4&amp;amp;keywords=meditation+for+fidgety+skeptics+by+dan+harris&amp;amp;linkCode=ll1&amp;amp;tag=rbersblog-20&amp;amp;linkId=97fabcca3dc51c2d5d7e0c2e773d187e&quot;&gt;10% Happier&lt;/a&gt; is better though.&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://m.youtube.com/watch?v=X0tjziAQfNQ&quot;&gt;📽 10 tips for failing badly at microservices&lt;/a&gt;&lt;/h2&gt;This is a very fun talk about what you should do if you want to prevent (in an ironic way) your company from moving to a microservices-based architecture. You may get flashbacks to the &lt;a href=&quot;https://www.cia.gov/news-information/featured-story-archive/2012-featured-story-archive/CleanedUOSSSimpleSabotage_sm.pdf&quot;&gt;Simple Sabotage Field Manual&lt;/a&gt; from the CIA.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;I’m considering converting this into a weekly newsletter in addition to a blog post. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt; and if enough people join I’ll send these every Sunday night or so.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/3264588044930916232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/3264588044930916232'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/01/2019-3-readings-of-week.html' title='2019-3 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-5230412296019147106</id><published>2019-01-20T16:32:00.001+01:00</published><updated>2019-01-20T16:32:40.200+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basketball"/><category scheme="http://www.blogger.com/atom/ns#" term="Go"/><category scheme="http://www.blogger.com/atom/ns#" term="Languages"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="NLP"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="Rust"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="TLA+"/><title type='text'>2019-2 Readings of the week</title><content type='html'>&lt;span style=&quot;margin-top: 5px;&quot;&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied. Software/data engineering, languages, writing. Expect a similar wide range in the future as well. You can check all weekly readings by checking the &lt;a href=&quot;https://www.mostlymaths.net/search/label/ReadingsOfTheWeek&quot;&gt;tag here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_0&quot;&gt;&lt;a href=&quot;https://flowingdata.com/2019/01/15/goodbye-mid-range-shot/&quot;&gt;Goodbye, Mid-Range Shot&lt;/a&gt;&lt;/h2&gt;I love a good data visualization, for a long while, long, long time ago I was a paid subscriber to Nathan Yau’s &lt;em&gt;Flowing Data&lt;/em&gt;. As usual, a short and interesting visualization where we can discover something about the world.&lt;br /&gt;&lt;h2 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://developers.redhat.com/blog/2017/11/16/speed-python-using-rust/&quot;&gt;Speed up your Python using Rust&lt;/a&gt;&lt;/h2&gt;I need to try this ASAP. Write dylibs with Rust that you can use straight from Python (via the cpython crate). &lt;br /&gt;&lt;h2 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.joshmcguigan.com/blog/build-your-own-shell-rust/&quot;&gt;Build Your Own Shell using Rust&lt;/a&gt;&lt;/h2&gt;I’m a lot into Rust lately, and here you can find out how to call subprocesses, how to handle errors, awaiting... It has a little bit of everything, even if you don’t intend to write a shell.&lt;br /&gt;&lt;h2 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://medium.com/@bellmar/introduction-to-tla-model-checking-in-the-command-line-c6871700a6a2&quot;&gt;Introduction to TLA+ Model Checking in the Command Line&lt;/a&gt;&lt;/h2&gt;If you’ve been following my twitter or blog, you’ll know I’m really liking TLA+ for formal verification. It’s not like I have a lot to verify day-to-day as a big data engineer, but as soon as there are “big data” microservices around, TLA+ rocks to confirm all the Lego pieces fit as I think they fit. Cutting the story short, TLA+ runs on the TLC Toolbox, which is a Java application which is not super-modern-looking. If you’d rather use Sublime/Atom/Emacs/Vim/ed using TLC from the command line is possible and not hard. Take heed of &lt;a href=&quot;https://www.reddit.com/r/tlaplus/comments/ah86sm/introduction_to_tla_model_checking_in_the_command/eeiycdg/?st=jr5158xu&amp;amp;sh=161767d5&quot;&gt;Ron Pressler&#39;s comments on Reddit&lt;/a&gt;, though.&lt;br /&gt;&lt;h2 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;http://groups.inf.ed.ac.uk/abcd/session-implementations.html&quot;&gt;From Data Types to Session Types: A Basis for Concurrency and Distribution&lt;/a&gt;&lt;/h2&gt;The concept of &lt;em&gt;session types&lt;/em&gt; seems very interesting. In a sense, Rust’s ownership/lifetime concept can model part of what session types cover.&lt;br /&gt;&lt;h2 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;https://www.newyorker.com/science/elements/how-the-artificial-intelligence-program-alphazero-mastered-its-games&quot;&gt;How the Artificial Intelligence Program AlphaZero Mastered Its Games&lt;/a&gt;&lt;/h2&gt;I’ve been playing go, on and off (right now is &lt;em&gt;on&lt;/em&gt;) for almost half of my life. Although I knew the basics already (I know some deep learning y’know), this is a good write up anybody could understand.&lt;br /&gt;&lt;h2 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;http://degoes.net/articles/rotating-effects&quot;&gt;High-Performance Functional Programming Through Effect Rotation&lt;/a&gt;&lt;/h2&gt;I try to stay away from the more crazy levels of category theory inspired programming (as in, I use 0 of it and have no huge interest), but this post (Scala) about how to optimize stacked monad transformers was very interesting.&lt;br /&gt;&lt;h2 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://softwaremill.com/free-tagless-compared-how-not-to-commit-to-monad-too-early/&quot;&gt;SoftwareMill blog: Free and tagless compared - how not to commit to a monad too early&lt;/a&gt;&lt;/h2&gt;I heard Adam talk about Free &amp;amp; Tagless at the Scala Exchange 2017 (IIRC), and it was one of the clearest expositions I had seen. This post is probably another, also from him. Totally recommended, with the bonus of getting to understand tagless encoding for “free”&lt;br /&gt;&lt;h2 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;http://cognitivemedium.com/srs-mathematics&quot;&gt;Using spaced repetition systems to see through a piece of mathematics&lt;/a&gt;&lt;/h2&gt;I’m a big fan of spaced repetition in general and Anki in particular. Michaeel (Nielsen) uses it regularly for deeper understanding. If you want more “social proof”, &lt;a href=&quot;https://sivers.org/srs&quot;&gt;Derek Sivers&lt;/a&gt; and &lt;a href=&quot;https://www.gwern.net/Spaced-repetition&quot;&gt;Gwern Branwen&lt;/a&gt; also recommend it dearly. &lt;br /&gt;&lt;h2 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;http://jsomers.net/blog/gettiers&quot;&gt;The three-page paper that shook philosophy—a hacker’s perspective&lt;/a&gt;&lt;/h2&gt;When you can put a name on something, it becomes easier to handle. Gettier cases are such. Go read this.&lt;br /&gt;&lt;h2 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://www.joshmcguigan.com/blog/array-initialization-rust/&quot;&gt;Methods for Array Initialization in Rust&lt;/a&gt;&lt;/h2&gt;Just when I thought Scala offered too many ways for doing a thing, there comes Rust.&lt;br /&gt;&lt;h2 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;https://medium.com/@cbirchall/experience-report-organising-a-conference-f1a1c6218399&quot;&gt;Experience report: organising a conference&lt;/a&gt;&lt;/h2&gt;I couldn’t attend Chris’ &lt;a href=&quot;https://lambdale.org/&quot;&gt;LambdAle&lt;/a&gt; last year (I will try this), but having helped organize &lt;a href=&quot;https://pydata.org/barcelona2017/&quot;&gt;PyData Barcelona&lt;/a&gt;, all he mentions are very valid concerns and tips.&lt;br /&gt;&lt;h2 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://abe-winter.github.io/2019/01/01/nlp-18.html&quot;&gt;Automatic categorization of text is a core tool now&lt;/a&gt;&lt;/h2&gt;It sounds obvious, but getting obvious staring you at the face without realizing is a problem.&lt;br /&gt;&lt;h2 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://llogiq.github.io/2017/06/01/perf-pitfalls.html&quot;&gt;Rust Performance Pitfalls&lt;/a&gt;&lt;/h2&gt;I’m still far from seeing performance issues in any Rust I have written (mainly because it’s a very small amount) but it’s good to know where I can stumble.&lt;br /&gt;&lt;h2 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;https://www.historytoday.com/mark-ronan/puzzle-proto-elamite&quot;&gt;The Puzzle of Proto-Elamite&lt;/a&gt;&lt;/h2&gt;I love language history. If you do so too, you’ll enjoy this.&lt;br /&gt;&lt;h2 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://medium.com/nearprotocol/understanding-rust-lifetimes-e813bcd405fa&quot;&gt;Understanding Rust Lifetimes&lt;/a&gt;&lt;/h2&gt;Nailing this is the main issue with Rust. This is a good introduction to lifetimes.&lt;br /&gt;&lt;h2 id=&quot;toc_16&quot;&gt;📚 &lt;a href=&quot;https://amzn.to/2W2LppK&quot;&gt;The Haiku Handbook&lt;/a&gt;&lt;/h2&gt;&lt;em&gt;Note this is an Amazon affiliate link.&lt;/em&gt;I have always liked Haiku (poems, the operating system is ok), and wanted to have a more formal model on them, to be able to write some someday. &lt;a href=&quot;https://amzn.to/2W2LppK&quot;&gt;This&lt;/a&gt; is a very well-written book that reads quickly (to be fair, I skipped the chapter on &lt;em&gt;Teaching&lt;/em&gt;)&lt;br /&gt;&lt;h2 id=&quot;toc_17&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;I’m considering converting this into a weekly newsletter in addition to a blog post. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt; and if enough people join I’ll send these every Sunday night or so.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5230412296019147106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/5230412296019147106'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/01/2019-2-readings-of-week.html' title='2019-2 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-7463796355756025720</id><published>2019-01-14T00:50:00.001+01:00</published><updated>2019-01-20T19:16:49.915+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data"/><category scheme="http://www.blogger.com/atom/ns#" term="Drawing"/><category scheme="http://www.blogger.com/atom/ns#" term="emacs"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="Productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="ReadingsOfTheWeek"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spacemacs"/><title type='text'>2019-1 Readings of the week</title><content type='html'>&lt;span style=&quot;margin-top: 5px;&quot;&gt;&lt;span class=&quot;capital&quot;&gt;I&lt;/span&gt;f you know me, you&#39;ll know I have.a very  extensive reading list. I keep it in &lt;a href=&quot;https://getpocket.com/&quot;&gt;Pocket&lt;/a&gt;, and is part of my to do stored in &lt;a href=&quot;https://culturedcode.com/things/&quot;&gt;Things3&lt;/a&gt;. It used to be very large (hovering around 230 items since August) but during Christmas it got out of control, reaching almost 300 items. That was too much, and I set myself a goal for 2019 to keep it trimmed and sweet. And indeed, since the beginning of the year I have read or canceled 171 articles (122 in the past week, 106 of which were read). That&#39;s a decently sized book!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To help me in this goal, I&#39;ll (hopefully) be writing a weekly post about what interesting stuff I have read the past week. Beware, this week may be a bit larger than usual, since I wanted to bring the numbers down as fast as possible.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The themes are varied. Software/data engineering, drawing, writing. Expect a similar wide range in the future as well.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;h3 id=&quot;toc_1&quot;&gt;&lt;a href=&quot;https://medium.com/cantors-paradise/the-nature-of-infinity-and-beyond-a05c146df02c&quot;&gt;The Nature of Infinity, and Beyond – Cantor’s Paradise&lt;/a&gt;&lt;/h3&gt;A short tour through the life of Georg Cantor and his quest for proving the continuum hypothesis. In the end, he was vindicated.&lt;br /&gt;&lt;h3 id=&quot;toc_2&quot;&gt;&lt;a href=&quot;https://www.johndcook.com/blog/2010/03/30/statistical-rule-of-three/&quot;&gt;Statistical rule of three&lt;/a&gt;&lt;/h3&gt;What is a decent estimate of something that hasn&#39;t happened yet? Find the answer here.&lt;br /&gt;&lt;h3 id=&quot;toc_4&quot;&gt;&lt;a href=&quot;https://arrow.apache.org/blog/2018/07/20/jemalloc/&quot;&gt;Apache Arrow: use of jemalloc&lt;/a&gt;&lt;/h3&gt;A short technical post detailing why Arrow moved to jemalloc for memory allocation.&lt;br /&gt;&lt;h3 id=&quot;toc_5&quot;&gt;&lt;a href=&quot;http://www.msarnoff.org/millitext/&quot;&gt;Subpixel Text Encoding&lt;/a&gt;&lt;/h3&gt;This is... unexpected. A font that is 1 pixel wide.&lt;br /&gt;&lt;h3 id=&quot;toc_6&quot;&gt;&lt;a href=&quot;https://xmonader.github.io/prolog/2018/12/21/solving-murder-prolog.html&quot;&gt;Solving murder with Prolog&lt;/a&gt;&lt;/h3&gt;I have always been a fan of Prolog, and this is a fun and understandable example if you have never used it.&lt;br /&gt;&lt;h3 id=&quot;toc_7&quot;&gt;&lt;a href=&quot;https://www.citylab.com/life/2018/12/parkour-class-50-plus-aging-fall-prevention-exercise/577900/&quot;&gt;What Parkour Classes Teach Older People About Falling&lt;/a&gt;&lt;/h3&gt;Interesting. I&#39;m still young, but I&#39;ll keep this in mind for the future.&lt;br /&gt;&lt;h3 id=&quot;toc_8&quot;&gt;&lt;a href=&quot;http://rmf.vc/implementingvisicalc&quot;&gt;Implementing VisiCalc&lt;/a&gt;&lt;/h3&gt;The detailed story about how VisiCalc (the first spreadsheet) was written.&lt;br /&gt;&lt;h3 id=&quot;toc_9&quot;&gt;&lt;a href=&quot;https://www.independent.co.uk/life-style/fall-asleep-two-minutes-how-to-military-secret-trick-a8520991.html&quot;&gt;The military secret to falling asleep in two minutes&lt;/a&gt;&lt;/h3&gt;I was actually doing something similar since I was like 12. It might be a stretch to say 2 minutes, but works.&lt;br /&gt;&lt;h3 id=&quot;toc_10&quot;&gt;&lt;a href=&quot;https://blog.burntsushi.net/transducers/&quot;&gt;Index 1,600,000,000 Keys with Automata and Rust&lt;/a&gt;&lt;/h3&gt;Super interesting (and long) post about how FSA and FST are used for fast search in Rust (I&#39;m a bit into Rust lately). Also, BurntSushi&#39;s (Andrew Gallant, the author) cat is called Cauchy, something I appreciate as my cat is named Fatou.&lt;br /&gt;&lt;h3 id=&quot;toc_3&quot;&gt;&lt;a href=&quot;https://www.sketchbook.com/blog/how-to-draw-imagination-using-references/&quot;&gt;How to Draw from Imagination: Beyond References&lt;/a&gt;&lt;/h3&gt;An excellent piece on gesture drawing and improving your technique.&lt;br /&gt;&lt;h3&gt;&lt;a href=&quot;https://blog.buildo.io/anatomy-of-a-scala-quirk-b8c086b56423&quot;&gt;Anatomy of a Scala quirk&lt;/a&gt;&lt;/h3&gt;All languages have their WAT, it&#39;s harder to find them in Scala though.&lt;br /&gt;&lt;h3 id=&quot;toc_11&quot;&gt;&lt;a href=&quot;http://node99.org/tutorials/ar/&quot;&gt;Chaotic attractor reconstruction&lt;/a&gt;&lt;/h3&gt;An easy example in Python of Takens&#39; embedding theorem&lt;br /&gt;&lt;h3 id=&quot;toc_12&quot;&gt;&lt;a href=&quot;https://codon.com/hello-declarative-world&quot;&gt;Hello, declarative world&lt;/a&gt;&lt;/h3&gt;An exploration between imperative and functional, and how declarative fits the landscape&lt;br /&gt;&lt;h3 id=&quot;toc_13&quot;&gt;&lt;a href=&quot;https://jeffknupp.com/blog/2016/03/07/python-with-context-managers/&quot;&gt;Python with Context Managers&lt;/a&gt;&lt;/h3&gt;Although I have written tons of Python, I never took the time to either  write or understand how context managers work. This one was good.&lt;br /&gt;&lt;h3 id=&quot;toc_14&quot;&gt;&lt;a href=&quot;http://www.thrillingdetective.com/trivia/triv116.html&quot;&gt;Raymond Chandler&#39;s Ten Commandments For the Detective Novel&lt;/a&gt;&lt;/h3&gt;You never know when you may write a detective novel. &lt;em&gt;Ruben and the case of the dead executor&lt;/em&gt;&lt;br /&gt;&lt;h3 id=&quot;toc_15&quot;&gt;&lt;a href=&quot;https://syslog.ravelin.com/making-something-faster-56dd6b772b83&quot;&gt;Seven steps to 100x faster&lt;/a&gt;&lt;/h3&gt;An optimisation tour of a piece of code written in Go, from data structures to allocation pressure.&lt;br /&gt;&lt;h3 id=&quot;toc_16&quot;&gt;&lt;a href=&quot;https://databricks.com/blog/2018/10/12/writing-a-faster-jsonnet-compiler.html&quot;&gt;Writing a Faster Jsonnet Compiler&lt;/a&gt;&lt;/h3&gt;A semi-technical post by Databricks about Jsonnet and why they wrote their own compiler. Serves as an introduction to Jsonnet (&quot;compilable JSON&quot;) as well.&lt;br /&gt;&lt;h3&gt;Bonus&lt;/h3&gt;&lt;a href=&quot;https://larsenwork.com/monoid/&quot;&gt;Monoid&lt;/a&gt; font and &lt;a href=&quot;https://github.com/kunalb/poet&quot;&gt;Poet emacs theme&lt;/a&gt;Today I switched from solarized dark and Fira Code Pro to the above. It looks interesting&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://4.bp.blogspot.com/-VX6gd426CPk/XDvNgzQbZ9I/AAAAAAAAEt0/owOuC3upBPoc8aFgYMKLegJ8kcX6zWFcQCLcBGAs/s1600/Screenshot%2B2019-01-13%2B23.40.10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;923&quot; data-original-width=&quot;1600&quot; height=&quot;230&quot; src=&quot;https://4.bp.blogspot.com/-VX6gd426CPk/XDvNgzQbZ9I/AAAAAAAAEt0/owOuC3upBPoc8aFgYMKLegJ8kcX6zWFcQCLcBGAs/s400/Screenshot%2B2019-01-13%2B23.40.10.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 id=&quot;toc_17&quot;&gt;&lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;Newsletter&lt;/a&gt;?&lt;/h2&gt;I’m considering converting this into a weekly newsletter in addition to a blog post. These days (since RSS went into limbo) most of my regular information comes from several newsletters I’m subscribed to, instead of me going directly to a blog. If this is also your case, subscribe by clicking &lt;a href=&quot;http://eepurl.com/geFw7P&quot;&gt;here&lt;/a&gt; and if enough people join I’ll send these every Sunday night or so.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/7463796355756025720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/7463796355756025720'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/01/2019-1-readings-of-week.html' title='2019-1 Readings of the week'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-VX6gd426CPk/XDvNgzQbZ9I/AAAAAAAAEt0/owOuC3upBPoc8aFgYMKLegJ8kcX6zWFcQCLcBGAs/s72-c/Screenshot%2B2019-01-13%2B23.40.10.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-13497321.post-8950315410632183732</id><published>2019-01-01T15:00:00.000+01:00</published><updated>2019-01-01T15:00:10.289+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Books"/><category scheme="http://www.blogger.com/atom/ns#" term="Christmas"/><category scheme="http://www.blogger.com/atom/ns#" term="github"/><category scheme="http://www.blogger.com/atom/ns#" term="iPad"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="Maths"/><category scheme="http://www.blogger.com/atom/ns#" term="opensource"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="spark"/><category scheme="http://www.blogger.com/atom/ns#" term="Time Management"/><category scheme="http://www.blogger.com/atom/ns#" term="TLA+"/><category scheme="http://www.blogger.com/atom/ns#" term="Trips"/><title type='text'>2018: Year in Review</title><content type='html'>&lt;span style=&quot;font-size: xx-small;&quot;&gt;Note some links below are Amazon affiliate links. Buy at your own risk&amp;nbsp;🤣&lt;/span&gt;&lt;br /&gt;&lt;h2&gt;Work&lt;/h2&gt;During the first half of this year I have been leading a migration to Spark of several systems, one relatively straightforward and the other based on &lt;a href=&quot;https://github.com/graphframes/graphframes&quot;&gt;GraphFrames&lt;/a&gt; and a graph with ~1 billion nodes. The results so far seem excellent. The second half of the year has been mostly GDPR compliance improvements (I&#39;ve read the whole law... twice!), looking for additional large-scale data providers and preparing our systems for global scale (around 6x event data capabilities). Has been fun and challenging.&lt;br /&gt;&lt;h2&gt;Life&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;In February I moved from East Finchley to Chiswick. This meant I became a &lt;a href=&quot;https://www.kew.org/&quot;&gt;Friend of Kew Gardens&lt;/a&gt;, and have been there almost every weekend I&#39;ve been in London. And you could catch me a bit earlier at &lt;a href=&quot;https://www.thecoffeetraveller.com/&quot;&gt;The Coffee Traveller&lt;/a&gt;, enjoying a latte with a carrot cake muffin. &lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-_y-T03wtSyw/XCpwtTATkJI/AAAAAAAAEq0/K-wSl6StCRMSzARRCCqAqRctou_AxUopACK4BGAYYCw/s1600/Kew.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://1.bp.blogspot.com/-_y-T03wtSyw/XCpwtTATkJI/AAAAAAAAEq0/K-wSl6StCRMSzARRCCqAqRctou_AxUopACK4BGAYYCw/s400/Kew.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In February, we spent a few days in Puigcerdà for my birthday. Not as nice as we expected. The food was good, though (as expected). &lt;/li&gt;&lt;li&gt;In March we visited Edimburg again, Laia was attending EdiYarn Festival. I spent the days at Waterstones, eating cupcakes and getting my reading list under control. &lt;/li&gt;&lt;li&gt;In May I attended AWS Summit in London. Was ok-ish. Lack of coffee made us grumpy. &lt;/li&gt;&lt;li&gt;In June I attended &lt;a href=&quot;http://socratesuk.org/&quot;&gt;SoCraTesUK 2018&lt;/a&gt; in Dorking, together with &lt;a href=&quot;https://twitter.com/crafty_coder&quot;&gt;Carlos&lt;/a&gt;. I had an excellent time there, and will repeat next year if possible. We presented together &lt;a href=&quot;https://github.com/rberenguel/WelcomeToApacheSpark&quot;&gt;Welcome to Apache Spark&lt;/a&gt;. I also learnt some Cobol.&lt;/li&gt;&lt;/ul&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-pkt9PvFt7SM/XCpw2jCM2HI/AAAAAAAAEq8/WOediPB0H0YZHv-r52JA5KVXISt-vBYzACK4BGAYYCw/s1600/Cobol.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://3.bp.blogspot.com/-pkt9PvFt7SM/XCpw2jCM2HI/AAAAAAAAEq8/WOediPB0H0YZHv-r52JA5KVXISt-vBYzACK4BGAYYCw/s320/Cobol.jpg&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-j2VHC7HfWRo/XCpxZbBkScI/AAAAAAAAErU/o44wyfDsG7YIjFJ3MOl3NCb6z-G77ewXgCK4BGAYYCw/s1600/WelcomeToApacheSpark.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://2.bp.blogspot.com/-j2VHC7HfWRo/XCpxZbBkScI/AAAAAAAAErU/o44wyfDsG7YIjFJ3MOl3NCb6z-G77ewXgCK4BGAYYCw/s320/WelcomeToApacheSpark.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In June as well, I presented &lt;a href=&quot;https://github.com/rberenguel/pyspark-arrow-pandas&quot;&gt;How does that PySpark thing work? And why Arrow makes it faster?&lt;/a&gt; at the Python Barcelona meetup. I think people enjoyed it. &lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-w4pRGMo_6Qw/XCpxesewLTI/AAAAAAAAErc/bqeOn_aDvHIORuHVx_ex76w1FgijpiFgQCK4BGAYYCw/s1600/Presenting.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://3.bp.blogspot.com/-w4pRGMo_6Qw/XCpxesewLTI/AAAAAAAAErc/bqeOn_aDvHIORuHVx_ex76w1FgijpiFgQCK4BGAYYCw/s320/Presenting.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;At the end of June we visited Bath for Laia&#39;s birthday. Nice town, but a bit packed with tourists. We were lucky England was playing some soccer match and could visit the Roman baths without people. &lt;/li&gt;&lt;li&gt;In July we published &lt;a href=&quot;https://pybcn.org/blog/2018-07-15-podcast-0/&quot;&gt;the first podcast of PyBCN&lt;/a&gt; (in Spanish). It&#39;s not monthly, next one was in... December&amp;nbsp;😆&lt;/li&gt;&lt;li&gt;In August we roasted a bit under the heat wave hitting the UK by visiting &lt;a href=&quot;https://www.mayfieldlavender.com/&quot;&gt;Mayfield Lavender field&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;In September I attended &lt;a href=&quot;http://2018.scala-italy.it/&quot;&gt;Scala Italy&lt;/a&gt; in Florence, where I got the opportunity to visit &lt;a href=&quot;https://www.tripadvisor.com/Restaurant_Review-g187895-d1058852-Reviews-Osteria_del_Cinghiale_Bianco-Florence_Tuscany.html&quot;&gt;Osteria del Cinghiale Bianco&lt;/a&gt; again. Excellent.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-gn3jwI_wtTw/XCpxlvOiqaI/AAAAAAAAErk/_3Rvz56pXKsnhrJxEbPooW74yKgTA3P5ACK4BGAYYCw/s1600/Florence.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://1.bp.blogspot.com/-gn3jwI_wtTw/XCpxlvOiqaI/AAAAAAAAErk/_3Rvz56pXKsnhrJxEbPooW74yKgTA3P5ACK4BGAYYCw/s320/Florence.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In September I presented &lt;a href=&quot;https://github.com/rberenguel/pyspark-arrow-pandas&quot;&gt;How does that PySpark thing work? And why Arrow makes it faster?&lt;/a&gt; at the Spark London meetup, feedback was positive as well. &lt;/li&gt;&lt;li&gt;In October, I attended Spark Summit Europe in London. Met a lot of people and had a terrific time. &lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-PvNjOAM_rtw/XCpxqU7MOhI/AAAAAAAAErw/5YovCQlMAn4JG5gfgS2KotIx24XG-IUfgCK4BGAYYCw/s1600/WithHoldenAndJacek.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://2.bp.blogspot.com/-PvNjOAM_rtw/XCpxqU7MOhI/AAAAAAAAErw/5YovCQlMAn4JG5gfgS2KotIx24XG-IUfgCK4BGAYYCw/s320/WithHoldenAndJacek.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In October we took a few days off so we could disconnect, and spent them on Hay-on-Wye, as some tradition we follow says. We bought a bunch of books (I think there are no books by Roger Zelazny left there) and I did nothing. Bliss. Also, best scones ever. &lt;/li&gt;&lt;li&gt;In November I helped a bit from afar with the organisation of &lt;a href=&quot;https://pybcn.org/pyday-bcn-2018/&quot;&gt;PyDay 2018&lt;/a&gt;. I couldn&#39;t attend, but looked excellent. We also told the world PyBCN is now an organisation you can become a member of.&lt;/li&gt;&lt;li&gt;In December, I attended Scala Exchange for the third time, and gave a lightning talk about TLA+ (&lt;a href=&quot;https://github.com/rberenguel/tla_lightning&quot;&gt;Formally Verifying Complex Systems Using TLA+&lt;/a&gt;).  Looks like people enjoyed my talk, and I had an excellent time as usual. &lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-SldrQx4Ey9M/XCpxxt6mesI/AAAAAAAAEr8/NMZNAvuzeDAbWltM36hjY6jALMvlpLgvACK4BGAYYCw/s1600/ScalaExchange.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://1.bp.blogspot.com/-SldrQx4Ey9M/XCpxxt6mesI/AAAAAAAAEr8/NMZNAvuzeDAbWltM36hjY6jALMvlpLgvACK4BGAYYCw/s320/ScalaExchange.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I made minor contributions (typos, small fixes) to several open source projects (Spark, typeshed, Monix, bloop,...), and also created a couple for my enjoyment: experimenting with &lt;a href=&quot;https://github.com/rberenguel/processing-scala-sample&quot;&gt;Processing in Scala&lt;/a&gt;, &lt;a href=&quot;https://github.com/rberenguel/sbt-ifttt&quot;&gt;sbt-ifttt&lt;/a&gt; and &lt;a href=&quot;https://github.com/rberenguel/rb-zsh-theme&quot;&gt;rb-zsh-theme&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;Learning&lt;/h2&gt;This year I got a bit deeper into functional Scala, using GraphFrames and (in general) graph operations on big data. Got acquainted and got to hate Apache Airflow. I improved my knowledge of Akka (adding clustering and sharding to the &quot;could do&quot;). I also learned TLA+ and I plan to dive deeper into this rabbit hole the coming year. Started learning &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;Rust&lt;/a&gt;. Made some minor stuff using &lt;a href=&quot;https://github.com/jorgebucaran/hyperapp&quot;&gt;HyperApp&lt;/a&gt;, and have been considering learning &lt;a href=&quot;http://www.purescript.org/&quot;&gt;PureScript&lt;/a&gt; so I can write something close to &quot;enjoyable&quot; Javascript. I have also started playing the ukulele.&lt;br /&gt;&lt;h2&gt;Reading&lt;/h2&gt;My top pick for the year is without any doubt &lt;a href=&quot;https://amzn.to/2BQxYjq&quot;&gt;Thinking in Systems: A Primer&lt;/a&gt;&amp;nbsp;among books I read this year (19 books). Didn&#39;t read much non-fiction, and can&#39;t recommend any this year. According to Pocket (which I started using around June, after the &lt;a href=&quot;https://www.theverge.com/2018/5/23/17387146/instapaper-gdpr-europe-access-shut-down-privacy-changes&quot;&gt;GDPR fiasco of Instapaper&lt;/a&gt;) I read the equivalent to 18 books in blog posts since then.&lt;br /&gt;&lt;h2&gt;Music/events&lt;/h2&gt;This year I attended a couple concerts, both in London: &lt;a href=&quot;https://www.youtube.com/watch?v=L0zH6G10qLw&quot;&gt;Hayseed Dixie&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/watch?v=e4Ao-iNPPUc&quot;&gt;Steve&#39;n&#39;Seagulls&lt;/a&gt;. I ended the year listening to a lot of covers by &lt;a href=&quot;https://www.youtube.com/watch?v=x0RV0kgdqJU&quot;&gt;Leo Moracchioli&lt;/a&gt;&amp;nbsp;and progressive metal/instrumental metal like &lt;a href=&quot;https://www.youtube.com/watch?v=z0Z6gljz9_Y&quot;&gt;Polyphia&lt;/a&gt; (which eventually become boring) and &lt;a href=&quot;https://www.youtube.com/watch?v=SgXZozc7nuA&quot;&gt;Intervals&lt;/a&gt;&amp;nbsp;(which are better). All the links in this section are good renditions by each on Youtube&lt;br /&gt;&lt;h2&gt;Gadgets&lt;/h2&gt;Main one is that Apple &lt;i&gt;finally&lt;/i&gt; upgraded the MacBook Air so I can have one with 16GB of RAM, so I got that one as soon as I could. It also implied getting a &lt;a href=&quot;https://amzn.to/2BRKgYO&quot;&gt;USB C hub&lt;/a&gt; and I also got a &lt;a href=&quot;https://amzn.to/2ViVBKo&quot;&gt;power brick&lt;/a&gt;, both from Anker, so I could simplify my desktop cable tangles (also several USB A to C and USB C-C cables). In no particular order, I also got&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An acoustic ukulele (soprano) and soon after, I got &lt;a href=&quot;https://m.thomann.de/gb/risa_uke_solid_concert.htm?o=0&amp;amp;search=1546096635&quot;&gt;this&lt;/a&gt; electric travel ukulele (concert). To go with it I got an &lt;a href=&quot;https://amzn.to/2LHKDdd&quot;&gt;AmPlug&lt;/a&gt; (clean) &lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-cmQcQ41QStg/XCp7YRSh1rI/AAAAAAAAEso/xZJX-ZU-hnQoF0v04PBFJ3jhb0d9_8OfACK4BGAYYCw/s1600/IMG_8610.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://3.bp.blogspot.com/-cmQcQ41QStg/XCp7YRSh1rI/AAAAAAAAEso/xZJX-ZU-hnQoF0v04PBFJ3jhb0d9_8OfACK4BGAYYCw/s320/IMG_8610.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;A &lt;a href=&quot;https://www.tenonedesign.com/mountie.php&quot;&gt;mountie&lt;/a&gt; very early in the year. Sadly it doesn&#39;t work with my new Air, but with the old one it was a blast.&lt;/li&gt;&lt;li&gt;A &lt;a href=&quot;https://www.brydge.eu/&quot;&gt;Brydge keyboard&lt;/a&gt; for my iPad (heavy, but excellent) &lt;/li&gt;&lt;li&gt;A &lt;a href=&quot;https://amzn.to/2LIwKeu&quot;&gt;SoundCore Motion Q&lt;/a&gt;&amp;nbsp;speaker from Anker. We&#39;re getting another one soon to get stereo. Excellent. &lt;/li&gt;&lt;li&gt;A &lt;a href=&quot;https://amzn.to/2SuInbF&quot;&gt;Microsoft Wedge Mouse&lt;/a&gt;. I saw a picture and when I saw the price (just 17€) I got one. It works very well, and is very small. And works with a rechargeable AA battery, which I like as form factor.&lt;/li&gt;&lt;li&gt;A &lt;a href=&quot;https://shop.pimoroni.com/products/inky-phat&quot;&gt;eInk display&lt;/a&gt; for my Raspberry Pi Zero W.&lt;/li&gt;&lt;li&gt;An &lt;a href=&quot;https://hubsch-interior.com/en/products/hourglass-1-hour-large&quot;&gt;hourglass&lt;/a&gt;. I love hourglasses. You can hear the sand from this one.&lt;/li&gt;&lt;li&gt;A &lt;a href=&quot;https://bellroy.com/products/card-holder/default/blue_steel&quot;&gt;cardholder&lt;/a&gt;. I already had a wallet by &amp;nbsp;Bellrow, and they deliver quality. &lt;/li&gt;&lt;li&gt;A &lt;a href=&quot;http://lunadisplay.com/&quot;&gt;Luna Display&lt;/a&gt;&amp;nbsp;(so far a bit disappointed with the inability to map correctly my keyboard layout between Mac and iPad, so can&#39;t type at all, but the stream quality is very good) &lt;/li&gt;&lt;li&gt;A bunch of twisty puzzles. I didn&#39;t have any 2x2 and I really like it now. Also, magnetic 3x3 are excellent.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-mc-uhyVOxfU/XCpyF8IKa7I/AAAAAAAAEsQ/pun8_gji4ik-fAXkERyxL9t7fRVwNh1xQCK4BGAYYCw/s1600/Rubik.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://2.bp.blogspot.com/-mc-uhyVOxfU/XCpyF8IKa7I/AAAAAAAAEsQ/pun8_gji4ik-fAXkERyxL9t7fRVwNh1xQCK4BGAYYCw/s320/Rubik.JPG&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://amzn.to/2CERaCg&quot;&gt;The Little Lisper&lt;/a&gt; for my birthday &lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-VFrBP3CX7cc/XCpyderWISI/AAAAAAAAEsc/93w1BpaDnyoSln2XKsYXQ49pk8vnKy0QgCK4BGAYYCw/s1600/LittleLisper.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://4.bp.blogspot.com/-VFrBP3CX7cc/XCpyderWISI/AAAAAAAAEsc/93w1BpaDnyoSln2XKsYXQ49pk8vnKy0QgCK4BGAYYCw/s320/LittleLisper.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;An excellent compact fountain pen from Kaweco (the &lt;a href=&quot;https://www.kaweco-pen.com/en/pens/fountain-pens/216/kaweco-liliput-fountain-pen-copper?c=19&quot;&gt;liliput&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;To go with it, I got a 0.7mm pencil from them as well (the &lt;a href=&quot;https://www.kaweco-pen.com/en/pens/pencils/494/kaweco-classic-front-part-black?c=32&quot;&gt;classic brass&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;I got also a 2mm &lt;a href=&quot;https://hribarcain.com/products/copy-of-magno-ti-titanium-2mm-lead-pencil-satin-finish&quot;&gt;titanium pencil&lt;/a&gt; from Kickstarter  &lt;/li&gt;&lt;li&gt;A &lt;a href=&quot;https://jpgamesltd.co.uk/BEGLERI-beads/KnuckleBone-Skilltoy-Wood&quot;&gt;knucklebone&lt;/a&gt; from AroundSquare. Excellent for manipulating while thinking &lt;/li&gt;&lt;li&gt;A new spinning top, the &lt;a href=&quot;https://nwtops.com/products/the-rain-drop-in-flamed-stainless&quot;&gt;Rain Drop&lt;/a&gt; from NWTops (to join last years&#39; &lt;a href=&quot;https://nwtops.com/products/the-yakima-hop-flamed-stainless-steel&quot;&gt;Yakima&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;Several (&lt;a href=&quot;https://jpgamesltd.co.uk/LUXX-Mandala-Playing-Cards&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://jpgamesltd.co.uk/papercuts-artofplay-playingcards&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;https://shop.52kards.com/products/sumi-artist-playing-cards-by-epcc&quot;&gt;3&lt;/a&gt;, &lt;a href=&quot;https://www.kickstarter.com/projects/1764129559/edge-jelly-cardistry-trainer-20-by-tcc-presents&quot;&gt;4&lt;/a&gt;) cardistry decks. The Mandala is incredibly gorgeous, the Edge is a design I love (I have the deck as well) and when I saw the trainers I knew I wanted a couple, just because.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;And mugs!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-PVib31KmKw8/XCp7fDEXUiI/AAAAAAAAEsw/hUcfCVyi5aUZ34-VYr9sOLRbefSPvKxWgCK4BGAYYCw/s1600/PHOTO-2018-12-21-12-13-14.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://4.bp.blogspot.com/-PVib31KmKw8/XCp7fDEXUiI/AAAAAAAAEsw/hUcfCVyi5aUZ34-VYr9sOLRbefSPvKxWgCK4BGAYYCw/s320/PHOTO-2018-12-21-12-13-14.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8950315410632183732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13497321/posts/default/8950315410632183732'/><link rel='alternate' type='text/html' href='http://www.mostlymaths.net/2019/01/2018-year-in-review.html' title='2018: Year in Review'/><author><name>Ruben Berenguel</name><uri>http://www.blogger.com/profile/05271991635456932663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-_y-T03wtSyw/XCpwtTATkJI/AAAAAAAAEq0/K-wSl6StCRMSzARRCCqAqRctou_AxUopACK4BGAYYCw/s72-c/Kew.JPG" height="72" width="72"/></entry></feed>