Personal Website of Leif Gensert on Leif Thoughts https://leif.io/ Recent content in Personal Website of Leif Gensert on Leif Thoughts Hugo en Leif Gensert The Scam Dilemma: When Real Alerts Seem Like Frauds https://leif.io/blog/2023/12/11/the-scam-dilemma-when-real-alerts-seem-like-frauds/ Mon, 11 Dec 2023 08:26:52 -0800 https://leif.io/blog/2023/12/11/the-scam-dilemma-when-real-alerts-seem-like-frauds/ <p>It&rsquo;s hard to live in the modern world without being constantly reminded to stay vigilant on the internet. Apps of large financial institutes remind us not to wire money to individuals we don&rsquo;t know, online market places scan your messages for phone numbers and raise red flags if you take conversations outside their platform and companies above a certain size have internal phishing tests that punish you with online training if you click on one of their planted phishing links. So if you want to pay attention and be a good citizen of the online space, you will learn the rules to properly detect a false alert. So much so that I would argue most people&rsquo;s default reaction to a potential threat is just to ignore it (&ldquo;it&rsquo;s probably a scam&rdquo;). But do legitimate notifications about a problem hold up under the scrutiny of the average person&rsquo;s phishing awareness?</p> The American Banking Experience as a Foreigner https://leif.io/blog/2022/04/05/wtf-american-banks/ Tue, 05 Apr 2022 20:39:47 -0700 https://leif.io/blog/2022/04/05/wtf-american-banks/ <p>This is one of the articles that has been sitting in my draft folder for a long time. Every time I had an interaction with a bank I added to it. I feel confident at this point to publish because my experiences with getting a bank account or a credit card here in the US have been mostly awful.</p> <p>Let me back up a bit. I moved to the US in September 2019. I am not a US citizen, I already had a social security based on a former Business visa. At the time of writing this article I have a green card. I do understand that the situation of not having a credit score and not being a citizen is not a great start, but most banks accommodate for that so I didn&rsquo;t expect major issues.</p> The Bitcoin Energy Argument That Nobody Makes https://leif.io/blog/2022/02/02/the-bitcoin-energy-argument-that-nobody-makes/ Wed, 02 Feb 2022 18:01:51 -0800 https://leif.io/blog/2022/02/02/the-bitcoin-energy-argument-that-nobody-makes/ <p>This is one of these rare circumstances this blog will touch on cryptocurrencies and not blockchains in general. More concretely this post is about one of the most debated topics within the cryptocurrency sphere. Energy consumption of the Bitcoin blockchain. All the arguments made from here equally apply to other proof of work cryptocurrencies.</p> <p>I&rsquo;m writing this article because I falsely assumed that pro-crypto people largely acknowledged that the energy consumption is bad and are either fine with it (necessary evil) or genuinely try to switch to cryptocurrencies on a proof of stake blockchain. I was proven wrong by multiple conversations I read on Twitter and heard various podcasts. The way these discussions go is so insanely frustrating for one particular reason. A huge part of these debates is wasted on details about how big the percentage of renewable energies in Bitcoin mining is. This goes back and forth where one side mentions studies that are usually dismissed by the other side.</p> Play Wordle for a Different Day https://leif.io/blog/2022/01/12/play-wordle-for-a-different-day/ Wed, 12 Jan 2022 17:55:24 -0800 https://leif.io/blog/2022/01/12/play-wordle-for-a-different-day/ <p><strong>UPDATE 13 January 2022:</strong> A previous version of the article did not include Google Chrome&rsquo;s Override instructions.</p> <p>One element of writing my last <a href="https://leif.io/blog/2022/01/09/building-a-wordle-solver-with-regex-and-elixir/">wordle article</a> was creating screenshots to illustrate the solving algorithm. But I didn&rsquo;t want to use the word of that day (which was &ldquo;gorge&rdquo;), I wanted to use a specific word (&ldquo;tiger&rdquo; fom Jan 5).</p> <p>This is where my digging into the workings behind wordle started. I was curious how the word of the day is chosen. I noticed that the new word is always available at midnight of &ldquo;your&rdquo; timezone so I suspected that all of the logic is implemented in the frontend (no secrets that are fetched from a server).</p> Building a Wordle Solver With Regular Expressions and Elixir https://leif.io/blog/2022/01/09/building-a-wordle-solver-with-regex-and-elixir/ Sun, 09 Jan 2022 16:46:21 -0800 https://leif.io/blog/2022/01/09/building-a-wordle-solver-with-regex-and-elixir/ <p>This is one of these articles that is predestined to start with &ldquo;unless you&rsquo;ve been living under a rock, you have heard of &hellip;&rdquo;. Unfortunately I don&rsquo;t know how popular the thing I&rsquo;m gonna write about is outside my bubble but here we go.</p> <p>Among my group of friends and colleagues the online game <a href="https://www.powerlanguage.co.uk/wordle/" target="_blank" rel="noreferrer">wordle</a> has been hugely popular. It&rsquo;s a mix of <a href="https://en.wikipedia.org/wiki/Scrabble" target="_blank" rel="noreferrer">Scrabble</a> and <a href="https://en.wikipedia.org/wiki/Mastermind_%28board_game%29" target="_blank" rel="noreferrer">Mastermind</a> where you&rsquo;ll have to guess a five letter word. Hints about individual characters are conveyed to you via yellow, green and gray indicators. Green means the target word has this character at this location, yellow means the target word has this character but in a different location and gray means the character is not in the target word at all.</p> Blockchains Are Too Old to Be the Beginning of Anything https://leif.io/blog/2021/12/29/blockchains-are-too-old-to-be-the-beginning-of-anything/ Wed, 29 Dec 2021 10:03:14 -0800 https://leif.io/blog/2021/12/29/blockchains-are-too-old-to-be-the-beginning-of-anything/ <div class="lead !mb-9 text-xl"> And the Absurdity of the &ldquo;Argument on Potential&rdquo; </div> <p>I listened to - and participated in quite a lot of blockchain related debates. By now I can pretty accurately predict how these debates end. The way this usually goes is that someone makes a completely unsubstantiated claim about what blockchain will or possibly can disrupt, sometimes even <a href="https://i.redd.it/f22p18ddu2371.jpg" target="_blank" rel="noreferrer">&ldquo;is already disrupting&rdquo;</a>. When you follow up and ask &ldquo;well, what has it disrupted?&rdquo; the answer is either some cryptocurrency related project (decentralized exchanges, lending products) or another unsubstantiated claim or flawed analogy. Ultimately, the more you drill down you will end up at the argument of &ldquo;we are just at the beginning, these things take time&rdquo;. For a good example of this, I recommend <a href="https://blockdebate.buzzsprout.com/767033/2506837-motion-tokenization-and-smart-contracts-are-useful-ideas-emin-gun-sirer-vs-edmund-schuster" target="_blank" rel="noreferrer">Episode 2 of the Blockchain Debate Podcast</a> where this progression is played out perfectly.</p> Grep Bundler Version From Gemfile.lock https://leif.io/blog/2021/12/10/grep-bundler-version-from-gemfile/ Fri, 10 Dec 2021 17:31:27 -0800 https://leif.io/blog/2021/12/10/grep-bundler-version-from-gemfile/ <p>If you&rsquo;re working on any kind of Ruby project you probably won&rsquo;t be able to avoid <a href="https://bundler.io" target="_blank" rel="noreferrer">bundler</a>.</p> <p>This is just a quick tip to install the exact same version of bundler than the Gemfile was originally installed with.</p> <p>Here you go:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">gem install bundler -v <span class="k">$(</span>grep <span class="s1">&#39;BUNDLED WITH&#39;</span> -A1 Gemfile.lock <span class="p">|</span> tail -n <span class="m">1</span> <span class="k">)</span> </span></span></code></pre></div><p>I used it a couple of times and it can be useful to keep bundler versions in sync when you&rsquo;re using <a href="https://www.docker.com" target="_blank" rel="noreferrer">docker</a>.</p> Overengineering My Blog for Fun and Definitely not Profit https://leif.io/blog/2021/12/07/overengineering-my-blog-for-fun-and-not-profit/ Tue, 07 Dec 2021 17:08:09 -0800 https://leif.io/blog/2021/12/07/overengineering-my-blog-for-fun-and-not-profit/ <p>This publication has been around a while. According to my <a href="https://leif.io/blog/2010/01/04/what-i-like-about-the-play-framework/">first article</a> it goes back all the way to January 2010 and was hosted on Wordpress. In the meantime I switched from there to <a href="https://leif.io/blog/2010/06/18/jekyll-blogging-without-pain/">Jekyll</a> until I switched to <a href="https://leif.io/blog/2013/12/13/im-blogging-again/">ghost</a> in late 2013.</p> <p>This is where the blog spent most of its time, and even thought I had <a href="https://news.ycombinator.com/item?id=15909870" target="_blank" rel="noreferrer">some</a> <a href="https://news.ycombinator.com/item?id=27210604" target="_blank" rel="noreferrer">stories</a> reach the front page of Hacker News it was mostly quiet around here and infrequently updated (I did not write a single post in all of 2016).</p> Sorry, the GET Protocol Doesn't Solve Ticket Scalping Through Blockchain https://leif.io/blog/2021/07/06/sorry-the-get-protocol-doesnt-solve-ticket-scalping-through-blockchain/ Tue, 06 Jul 2021 17:54:07 -0700 https://leif.io/blog/2021/07/06/sorry-the-get-protocol-doesnt-solve-ticket-scalping-through-blockchain/ <div class="lead !mb-9 text-xl"> It&rsquo;s Solved Through Centralization and Proprietary APIs </div> <p><em>TL;DR: The reason why ticket scalping is a non issue through GET is because there is effectively one entity that controls the ticketing process</em></p> <p>I got a couple of responses on my last article about price gouging/ticket scalping. One solution was mentioned that supposedly does solve this issue through blockchain.</p> <p>Before I respond to these claims I feel the need to clarify something about my last article. There are a couple of passages in there that make it seem as if ticket scalping is an unsolvable problem or that it needs to be solved 100% to be effective.</p> How Blockchain Won't Solve Ticket Price Gouging https://leif.io/blog/2021/06/02/how-blockchain-wont-solve-ticket-price-gouging/ Wed, 02 Jun 2021 11:35:57 -0700 https://leif.io/blog/2021/06/02/how-blockchain-wont-solve-ticket-price-gouging/ <div class="lead !mb-9 text-xl"> And Possibly Make It Worse </div> <p>When reading about blockchain I am often astonished about the number of problems blockchain technology is supposed to solve. I admit I am very quick to dismiss any of the claims that these startups are making. But from time to time I hear about a use case that takes me a little while to think through.</p> <p>This happened to me recently when I stumbled upon an <a href="https://alphalist.podigee.io/24-peter-grosskopf" target="_blank" rel="noreferrer">interview podcast episode</a> with Peter Grosskopf where he gave an intro to blockchain and brought up a couple examples. Disclaimer here: I owe a great deal of my career to Peter as he was the first one to hire me as a tech freelancer back in 2016. I have nothing but good things to say about him, I just happen to disagree with him about his assessment about the blockchain.</p> Follow up: Blockchain for Real World Ownership https://leif.io/blog/2021/05/23/follow-up-blockchain-for-real-world-ownership/ Sun, 23 May 2021 17:41:43 -0700 https://leif.io/blog/2021/05/23/follow-up-blockchain-for-real-world-ownership/ <p>Wow, this blew up (as much as an article about blockchain can blow up). My <a href="https://leif.io/blog/2021/05/16/real-world-ownership-is-not-a-use-case-for-blockchain/">last article</a> made it to the front-page of <a href="http://news.ycombinator.com/" target="_blank" rel="noreferrer">Hacker News</a>. I got over 10k views and a ton of feedback.</p> <p>Most of the feedback was positive, agreeing with me or confirming my argument from a different angle.</p> <p>However there were a couple of arguments made against what I&rsquo;m saying. I try my best to address them.</p> <h2 id="you-just-need-more-tech" class="relative group">&ldquo;You just need more tech&rdquo; <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#you-just-need-more-tech" aria-label="Anchor">#</a></span></h2><p>I admit the argument with ownership of the Mona Lisa was not the greatest one in the real world and I would even concede that if there was ever a global art ownership blockchain, high value art would probably be the least susceptible of being stolen on the blockchain.</p> Real World Ownership Is Not a Use Case for Blockchain https://leif.io/blog/2021/05/16/real-world-ownership-is-not-a-use-case-for-blockchain/ Sun, 16 May 2021 15:36:39 -0700 https://leif.io/blog/2021/05/16/real-world-ownership-is-not-a-use-case-for-blockchain/ <p>The &ldquo;blockchain beyond cryptocurrency&rdquo;-world is full of potential use cases that would supposedly change the game. I touched on it in my <a href="https://leif.io/blog/2021/05/03/the-convenient-problem-space-of-blockchain/">last post</a> with a supply chain management example. But the use case proposals go much further than that.</p> <p>Beyond the supply chain a lot of startups try to implement a use case around recording and transferring ownership of something. After all that&rsquo;s what cryptocurrencies are all about. So why can&rsquo;t we do that for anything? One example I&rsquo;ve seen multiple times is recording ownership of art or luxury goods.</p> The Convenient Problem Space of Blockchain https://leif.io/blog/2021/05/03/the-convenient-problem-space-of-blockchain/ Mon, 03 May 2021 14:58:18 -0700 https://leif.io/blog/2021/05/03/the-convenient-problem-space-of-blockchain/ <p>When reading blockchain marketing material one could get the impression blockchain is the solution for everything. And if my experience in tech ever taught me anything it&rsquo;s that &ldquo;silver bullets are a myth&rdquo;.</p> <p>But let&rsquo;s take a closer look at the problems that blockchains are supposed to solve. Surprisingly all these problems have one thing in common:</p> <p><strong>They are really hard to solve</strong></p> <p>More specifically a large chunk of &ldquo;real world blockchain applications&rdquo; is tackling the issue of &ldquo;there is lots of paper and that makes things slow&rdquo; or how they would say it &ldquo;efficiency improvements&rdquo;.</p> Implement a GIT Branch Checkout History https://leif.io/blog/2021/02/22/implement-a-git-checkout-branch-command/ Mon, 22 Feb 2021 16:11:46 -0800 https://leif.io/blog/2021/02/22/implement-a-git-checkout-branch-command/ <p>Take this alias</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># .gitconfig</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="o">[</span>alias<span class="o">]</span> </span></span><span class="line"><span class="cl"> <span class="nv">hist</span> <span class="o">=</span> <span class="s2">&#34;!f() { for i in </span><span class="k">$(</span>seq <span class="m">9</span> <span class="nv">$END</span><span class="k">)</span><span class="s2">; do echo &#34;</span>@<span class="o">{</span>-<span class="nv">$i</span><span class="o">}</span>: <span class="sb">`</span>git rev-parse --abbrev-ref @<span class="o">{</span>-<span class="nv">$i</span><span class="o">}</span><span class="sb">`</span><span class="s2">&#34;; done }; f &#34;</span> </span></span></code></pre></div><p>This will show the last 9 branches you have checked out with the abbreviation to switch to it.</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">❯ git hist </span></span><span class="line"><span class="cl">@<span class="o">{</span>-1<span class="o">}</span>: main </span></span><span class="line"><span class="cl">@<span class="o">{</span>-2<span class="o">}</span>: add-healthchecks-io </span></span><span class="line"><span class="cl">@<span class="o">{</span>-3<span class="o">}</span>: main </span></span><span class="line"><span class="cl">@<span class="o">{</span>-4<span class="o">}</span>: fix-visible-flag </span></span><span class="line"><span class="cl">@<span class="o">{</span>-5<span class="o">}</span>: main </span></span><span class="line"><span class="cl">@<span class="o">{</span>-6<span class="o">}</span>: implement-join-code </span></span><span class="line"><span class="cl">@<span class="o">{</span>-7<span class="o">}</span>: main </span></span><span class="line"><span class="cl">@<span class="o">{</span>-8<span class="o">}</span>: fix-visible-flag </span></span><span class="line"><span class="cl">@<span class="o">{</span>-9<span class="o">}</span>: main </span></span></code></pre></div><p>You can of course use the branch name to check it out, or use the abbreviation in front of it <code>git checkout @{-6}</code> will check out <code>implement-join-code</code>.</p> Open Letter to Metro Bank: Fix your Login Screen https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/ Fri, 03 Apr 2020 14:01:19 -0700 https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/ <p><strong>Disclaimer:</strong> I&rsquo;m not a security expert. But to quote one of my favorite comedians <a href="https://www.scarymommy.com/mom-heckles-comedian-steve-hofstetter-viral-video/" target="_blank" rel="noreferrer">Steve Hoffstetter</a>.</p> <blockquote> <p>I&rsquo;ve never flown a helicopter. But if I saw one in a tree, I could still be like, &lsquo;Dude fucked up&rsquo;.</p></blockquote> <p>So here is what this helicopter in a tree looked for me: <figure> <picture class="mx-auto my-0 rounded-md" > <source srcset="https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_32d6ca022ba43b48.webp 330w,https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_11d68dfd78c6c43a.webp 660w ,https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_c15902f6d8651c8d.webp 1024w ,https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_8289bb0031415bbe.webp 1320w " sizes="100vw" type="image/webp" /> <img width="1646" height="970" class="mx-auto my-0 rounded-md" alt="Metro Bank Login Screen" loading="lazy" decoding="async" src="https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_7cfd9f37e70108f9.png" srcset="https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_6a40c739c823b15d.png 330w,https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_7cfd9f37e70108f9.png 660w ,https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_c1654bd05d099cff.png 1024w ,https://leif.io/blog/2020/04/03/open-letter-to-metro-bank-fix-your-login-screen/login_screen_hu_bb75b01313f22a72.png 1320w " sizes="100vw" /> </picture> </figure> This is the login screen for [Metro Bank](https://Metro Bankonline.co.uk/), a UK based bank. This screen will only show up if you entered an existing customer number. I will go into detail what is wrong with it. But first a little bit about the &ldquo;security concept&rdquo; that Metro Bank has.</p> Blockchain Is Merely a Marketing Instrument https://leif.io/blog/2018/04/03/blockchain-is-merely-a-marketing-instrument/ Tue, 03 Apr 2018 23:02:00 +0700 https://leif.io/blog/2018/04/03/blockchain-is-merely-a-marketing-instrument/ <p><em>TL;DR</em> Do you know any profitable B2B blockchain business? Yeah, me neither.</p> <p>This blog post is the attempt to reconcile my different observations that I have in the blockchain universe. It acts as a brain dump for me. Anyway, here is what I observe:</p> <ul> <li>Blockchain is so insanely hyped it is beyond annoying. If you go anywhere in the world and try to connect with developers, there is no way of hiding from &ldquo;Smart Contract Developers&rdquo; and &ldquo;Crypto Traders&rdquo; (although the latter probably went back to drop shipping after the recent plunge of the exchange course). If you run a search for &ldquo;Blockchain&rdquo; on meetup.com you will find ~50 meetups for Berlin alone. And that is only for the meetups that have the word &ldquo;Blockchain&rdquo; in the name. It&rsquo;s gotten to a stage where friends that run startups are asked by their <strong>investors</strong> if they are utilizing the technology.</li> <li>The second observation is more about what I don&rsquo;t see: Proper blockchain companies that have a viable business model. Not a single one.</li> </ul> <p>I will expand on the latter observation but before I do, I want to make clear what this post is <strong>not</strong> about:</p> 7 Ways Coworking Spaces Have Annoyed the Hell out of Me https://leif.io/blog/2018/01/23/7-ways-coworking-spaces-have-annoyed-the-hell-out-of-me/ Wed, 24 Jan 2018 10:52:29 +0700 https://leif.io/blog/2018/01/23/7-ways-coworking-spaces-have-annoyed-the-hell-out-of-me/ <p>There are good reasons why you can&rsquo;t or don&rsquo;t want to work out of a classic office. Some have to do with working remotely, some are just due to the reason that your company is too small to rent out a complete office space.</p> <p>When this is the case you have several options; there are the people who like to work from home and there are the people who hang out in coffee shops all day. Somewhere in between, there are the coworking spaces.</p> My First Event Sourced Application https://leif.io/blog/2018/01/09/my-first-event-sourced-application/ Tue, 09 Jan 2018 17:53:43 +0700 https://leif.io/blog/2018/01/09/my-first-event-sourced-application/ <p><em>TL;DR:</em> I built an event sourced application that shows the latest version of common programming languages. Find it <a href="https://releaseping.com" target="_blank" rel="noreferrer">here</a>.</p> <p>For I while I thought about building an <a href="https://martinfowler.com/eaaDev/EventSourcing.html" target="_blank" rel="noreferrer">event sourced</a> application. The concept is so different from a classical CRUD approach that I was very intrigued.</p> <p>I tried once with a podcasting transcription app (the details of that can be read <a href="https://leif.io/blog/2017/12/12/how-playing-around-with-experimental-technologies-landed-me-a-6-month-freelance-gig/">here</a>) but I quickly became overwhelmed by all the design decisions I had to make.</p> How Playing Around With Experimental Technologies Landed Me A 6-Month Freelance Gig https://leif.io/blog/2017/12/12/how-playing-around-with-experimental-technologies-landed-me-a-6-month-freelance-gig/ Tue, 12 Dec 2017 21:52:28 +0000 https://leif.io/blog/2017/12/12/how-playing-around-with-experimental-technologies-landed-me-a-6-month-freelance-gig/ <p>If you need to build an &ldquo;Uber for X&rdquo; product there is a simple path that gets the job done: Build an MVP with well-established technologies. Start with <a href="https://www.google.com/sheets/about/" target="_blank" rel="noreferrer">Google Sheets</a>, <a href="https://www.typeform.com/" target="_blank" rel="noreferrer">Typeform</a> and a lot of Trello. Use Rails with a little bit of jQuery for a more custom solution. Capture as much feedback as possible and focus on iterating your MVP. This approach usually is referred to as the <a href="http://theleanstartup.com/" target="_blank" rel="noreferrer">The Lean Startup</a>.</p> <p>But what happens when you choose the exact opposite approach?</p> Use docker to run the new Elixir Code Formatter https://leif.io/blog/2017/10/12/use-docker-to-run-the-new-elixir-code-formatter/ Thu, 12 Oct 2017 17:47:33 +0200 https://leif.io/blog/2017/10/12/use-docker-to-run-the-new-elixir-code-formatter/ <p><em>TL;DR:</em> Run this to format your code:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">docker run --rm -it -v <span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span>:/app -w /app leifg/elixir:edge mix format </span></span></code></pre></div><p>The community has been very excited in the last couple of days about the <a href="http://devonestes.herokuapp.com/everything-you-need-to-know-about-elixirs-new-formatter" target="_blank" rel="noreferrer">Elixir 1.6 Code Formatter Announcement</a>.</p> <p>Of course you can use one of the many <a href="https://github.com/mururu/exenv" target="_blank" rel="noreferrer">Elixir</a><a href="https://github.com/asdf-vm/asdf" target="_blank" rel="noreferrer">Version</a><a href="https://github.com/robisonsantos/evm" target="_blank" rel="noreferrer">Management</a><a href="https://github.com/taylor/kiex" target="_blank" rel="noreferrer">Tools</a> to try out the formatter. But if you don&rsquo;t want to switch around between versions or if you (like me) stick to system Elixir, there is an easier way: Docker.</p> Configure your Elm app with ENV variables https://leif.io/blog/2017/10/01/configure-your-elm-app-with-env-variables/ Sun, 01 Oct 2017 23:53:54 +0200 https://leif.io/blog/2017/10/01/configure-your-elm-app-with-env-variables/ <p><a href="https://github.com/halfzebra/create-elm-app" target="_blank" rel="noreferrer">Create Elm App</a> makes it very easy to get started with Elm because it provides a zero configuration application that just works.</p> <p>However sometimes it is very useful to have some kind of configuration in your app. The example that I recently ran into is making your backend api url configurable. Or do you really want to develop against your production API?</p> <p>Lucky for you <a href="https://github.com/halfzebra/create-elm-app" target="_blank" rel="noreferrer">Create Elm App</a> already comes with all necessary tools. It&rsquo;s kinda tricky to find and that&rsquo;s why I&rsquo;m writing this post.</p> Deploying Elixir with Docker Part 4 https://leif.io/blog/2017/09/01/deploying-elixir-with-docker-part-4/ Fri, 01 Sep 2017 17:36:28 +0200 https://leif.io/blog/2017/09/01/deploying-elixir-with-docker-part-4/ <p>This last post is about bringing it all together.</p> <p>Right now we are at a point where we have random script snippets that executed in the right order will launch a service in the cloud.</p> <p>But we need to get this in a more structured way on a build server. As a CI provider I use <a href="https://circleci.com" target="_blank" rel="noreferrer">CircleCI</a> and I&rsquo;ve been waiting to try out their <a href="https://circleci.com/docs/2.0/" target="_blank" rel="noreferrer">2.0 version</a> including <a href="https://circleci.com/docs/2.0/workflows/" target="_blank" rel="noreferrer">workflows</a>.</p> <p>As CircleCI heavily relies on Docker, we can just go ahead and use our <a href="https://hub.docker.com/r/leifg/time_tracking-base/" target="_blank" rel="noreferrer">base image</a> for building.</p> Deploying Elixir with Docker Part 3 https://leif.io/blog/2017/08/25/deploying-elixir-with-docker-part-3/ Fri, 25 Aug 2017 09:51:33 +0200 https://leif.io/blog/2017/08/25/deploying-elixir-with-docker-part-3/ <p><em>This is the third part of the Docker Elixir deployment adventure. Read <a href="https://leif.io/blog/2017/08/11/deploying-elixir-projects-with-docker-and-distillery/">part 1</a> and <a href="https://leif.io/blog/2017/08/17/deploying-elixir-with-docker-part-2/">part 2</a> first.</em></p> <p>In this part we are going to deploy our Docker container to <a href="https://console.hyper.sh/register/invite/j6lwdRzl5duM1ar7jM4Ktgzj8rae9xIj" target="_blank" rel="noreferrer">hyper.sh</a> (Affiliate Link). It&rsquo;s a relatively new platform that makes it very easy to deploy containers.</p> <p>You will need the hyper cli to get started. Refer to the <a href="https://docs.hyper.sh/GettingStarted/install.html" target="_blank" rel="noreferrer">official documentation</a> for details.</p> <p>We will start by starting an instance of our container. By the time of writing this blog post, the latest version of time_tracking is <code>1.8.3</code>:</p> Deploying Elixir with Docker Part 2 https://leif.io/blog/2017/08/17/deploying-elixir-with-docker-part-2/ Thu, 17 Aug 2017 18:20:26 +0200 https://leif.io/blog/2017/08/17/deploying-elixir-with-docker-part-2/ <p><em>This is a continuation of the <a href="https://leif.io/blog/2017/08/11/deploying-elixir-projects-with-docker-and-distillery/">first part</a> of the post where we created a release.</em></p> <p>Now that we have a release, let&rsquo;s pack it into a docker container.</p> <p>We will use a <a href="https://docs.docker.com/engine/userguide/eng-image/multistage-build/" target="_blank" rel="noreferrer">multi stage container</a> to create the container.</p> <p>First let&rsquo;s focus on the build part. A base container will come in handy as we need to run several commands. We need Erlang and Elixir installed (obviously) but I also need a tool to calculate the version number. I use <a href="https://github.com/semantic-release" target="_blank" rel="noreferrer">Semantic Release</a> for that. I decided to switch from the <a href="https://github.com/semantic-release/semantic-release" target="_blank" rel="noreferrer">JavaScript version</a> to the <a href="https://github.com/semantic-release/go-semantic-release" target="_blank" rel="noreferrer">Go version</a>.</p> Deploying Elixir with Docker Part 1 https://leif.io/blog/2017/08/11/deploying-elixir-projects-with-docker-and-distillery/ Fri, 11 Aug 2017 19:37:45 +0200 https://leif.io/blog/2017/08/11/deploying-elixir-projects-with-docker-and-distillery/ <p>This is a multi part article about deployment of an Elixir application with Docker.</p> <p>This part will be about building a distillery release for a Phoenix Application.</p> <p> <a href="https://leif.io/blog/2017/08/17/deploying-elixir-with-docker-part-2/">Part 2</a> will discuss packaging this release into a Docker container</p> <p> <a href="https://leif.io/blog/2017/08/25/deploying-elixir-with-docker-part-3/">Part 3</a> will show you how to deploy this container to a container runtime.</p> <p> <a href="https://leif.io/blog/2017/09/01/deploying-elixir-with-docker-part-4/">Part 4</a> will wrap it all up and show you how to integrate all if this into a Continuous Delivery Workflow</p> Try out your code on the latest OTP and Elixir https://leif.io/blog/2017/06/18/try-out-your-code-on-the-latest-otp-and-elixir/ Sun, 18 Jun 2017 20:06:44 +0200 https://leif.io/blog/2017/06/18/try-out-your-code-on-the-latest-otp-and-elixir/ <p><em>TL;DR:</em> If you want an easy way to run the latest version of elixir (an the latest version of OTP) and you have docker installed, do this:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">docker pull leifg/elixir:edge </span></span><span class="line"><span class="cl">docker run --rm -it leifg/elixir:edge iex </span></span></code></pre></div><h2 id="elixir-docker-builds" class="relative group">Elixir Docker Builds <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#elixir-docker-builds" aria-label="Anchor">#</a></span></h2><p>A while ago I started building my custom <a href="https://hub.docker.com/r/leifg/elixir" target="_blank" rel="noreferrer">Elixir Docker image</a> using <a href="github.com/leifg/docker-elixir">Github</a> and <a href="https://docs.docker.com/docker-hub/builds/" target="_blank" rel="noreferrer">Docker hub automated builds</a>.</p> <p>I tagged the Elixir versions I wanted to build to create a <code>1.x</code> and <code>1.x.y</code> tag on Docker Hub. In addition the <code>master</code> branch would be tagged with <code>latest</code>. I always used the latest stable OTP to reduce complexity.</p> Never compare dates in Elixir using "<" or ">" https://leif.io/blog/2017/05/29/never-use-to-compare-dates/ Mon, 29 May 2017 12:23:23 +0200 https://leif.io/blog/2017/05/29/never-use-to-compare-dates/ <p>For the examples in this article I use the data structure <a href="https://hexdocs.pm/elixir/1.4.4/Date.html" target="_blank" rel="noreferrer">Date</a>. The same applies for <a href="https://hexdocs.pm/elixir/1.4.4/DateTime.html" target="_blank" rel="noreferrer">DateTime</a> or <a href="https://hexdocs.pm/elixir/1.4.4/NaiveDateTime.html" target="_blank" rel="noreferrer">NaiveDateTime</a></p> <p>Consider this:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-elixir" data-lang="elixir"><span class="line"><span class="cl"><span class="n">early_june</span> <span class="o">=</span> <span class="sx">~D[2017-06-01]</span> </span></span><span class="line"><span class="cl"><span class="n">late_june</span> <span class="o">=</span> <span class="sx">~D[2017-06-30]</span> </span></span></code></pre></div><p>How do you find out what&rsquo;s earlier?</p> <p>The naive approach is to use the comparison operator <code>&lt;</code>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-elixir" data-lang="elixir"><span class="line"><span class="cl"><span class="n">early_june</span> <span class="o">&lt;</span> <span class="n">late_june</span> </span></span><span class="line"><span class="cl"><span class="c1"># =&gt; true</span> </span></span></code></pre></div><p>That works. But this is tricky. It only works in some cases.</p> <p>Now consider this:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-elixir" data-lang="elixir"><span class="line"><span class="cl"><span class="n">late_june</span> <span class="o">=</span> <span class="sx">~D[2017-06-30]</span> </span></span><span class="line"><span class="cl"><span class="n">early_july</span> <span class="o">=</span> <span class="sx">~D[2017-07-01]</span> </span></span></code></pre></div><p>What do you think the output is now?</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-elixir" data-lang="elixir"><span class="line"><span class="cl"><span class="n">late_june</span> <span class="o">&lt;</span> <span class="n">early_july</span> </span></span><span class="line"><span class="cl"><span class="c1"># =&gt; false</span> </span></span></code></pre></div><p>Turns out: comparison with <code>&lt;</code> (or <code>&gt;</code>) just compares the struct fields (as the <a href="https://hexdocs.pm/elixir/master/DateTime.html" target="_blank" rel="noreferrer">current version of the documentation</a> states. My best guess is for same reason the day field has higher priority than the month field so this comparison fail sometimes.</p> Export your Salesforce Objects to SQLite https://leif.io/blog/2015/12/10/export-your-salesforce-objects-to-sqlite/ Thu, 10 Dec 2015 18:11:22 -0800 https://leif.io/blog/2015/12/10/export-your-salesforce-objects-to-sqlite/ <p>Sometimes it can be quite useful to export data you have in Salesforce Org (transferring your data over to a new system is probably the biggest use case).</p> <p><a href="https://help.salesforce.com/HTViewHelpDoc?id=exporting_data.htm" target="_blank" rel="noreferrer">Saleforce&rsquo;s suggestion</a> is to use the <a href="http://dataloader.io" target="_blank" rel="noreferrer">dataloader</a> but that has a lot of drawbacks:</p> <ul> <li>Flat File Format only</li> <li>Not (sufficiently) scriptable</li> <li>Manual process to select the fields you want (instead of just <em>everything</em>)</li> <li>Only one object at a time</li> </ul> <p>As most of the information you need for a proper export a available via Salesforce&rsquo;s field description, it was pretty simple to come up with a solution that would let me export a range of objects to a database format (SQLite currently but very easy to extend for other RDBMS).</p> Redis Tips & Tricks #2 - Connections https://leif.io/blog/2015/09/04/redis-tips-tricks-2-connections/ Fri, 04 Sep 2015 11:30:44 -0700 https://leif.io/blog/2015/09/04/redis-tips-tricks-2-connections/ <p>As it turns out, connecting to redis may introduce a bit of problem if you&rsquo;re not aware of the connection handling.</p> <p>I haven&rsquo;t tried with every client out there but especially the <a href="https://github.com/redis/redis-rb" target="_blank" rel="noreferrer">redis ruby client</a> has this problem.</p> <p>So imagine this scenario:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ruby" data-lang="ruby"><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="o">..</span><span class="mi">10000</span><span class="p">)</span><span class="o">.</span><span class="n">each</span><span class="p">{</span><span class="o">|</span><span class="n">num</span><span class="o">|</span> <span class="no">Redis</span><span class="o">.</span><span class="n">connect</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&#34;key_</span><span class="si">#{</span><span class="n">num</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)}</span> </span></span></code></pre></div><p>Every iteration will open a new file handle and will keep it open (I have not been waiting forever but I have seen open files for more than 24 hours).</p> First steps in Elixir https://leif.io/blog/2015/08/28/first-steps-in-elixir/ Fri, 28 Aug 2015 17:53:15 -0700 https://leif.io/blog/2015/08/28/first-steps-in-elixir/ <p>From time to time I look into new programming languages. But usually I rarely do more than browse the general introduction guide.</p> <p>However this time I dove a little bit deeper into <a href="http://elixir-lang.org/" target="_blank" rel="noreferrer">Elixir</a> and even got myself a <a href="https://github.com/leifg/excellent" target="_blank" rel="noreferrer">pet project</a>.</p> <p>I tried to find a use case for a little library and I ended up writing a <a href="https://github.com/leifg/excellent" target="_blank" rel="noreferrer">parser for Excel documents</a>. It&rsquo;s still under heavy development but I gladly accept Pull-Requests.</p> Executrix is now known as Bulkforce https://leif.io/blog/2015/07/28/executrix-is-now-known-as-bulkforce/ Tue, 28 Jul 2015 13:36:59 +0200 https://leif.io/blog/2015/07/28/executrix-is-now-known-as-bulkforce/ <p>Today I released a new version of the ruby gem to interact with the Salesforce <a href="https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/" target="_blank" rel="noreferrer">Bulk API</a>.</p> <p>I decided to go with a different name and introduce some breaking changes.</p> <p>And here it is: <a href="http://github.com/propertybase/bulkforce" target="_blank" rel="noreferrer">Bulkforce</a>.</p> <p>The [old gem](old gem) will still be available as a reference and to provide a backwards compatible option for all users out there. New features however will only be introduced in Bulkforce.</p> <p>Not only did I rename the gem, I also introduced a new feature. The authentication has been overhauled.</p> Redis Tips & Tricks #1 - Memory https://leif.io/blog/2014/12/19/redis-tips-tricks-1/ Fri, 19 Dec 2014 18:15:36 +0100 https://leif.io/blog/2014/12/19/redis-tips-tricks-1/ <p>It&rsquo;s neither a tip, nor a trick. It&rsquo;s more a statement:</p> <p><strong>ALL data is kept in memory</strong></p> <p>&ldquo;No shit&rdquo; some of you might say, but I actually have to confess: I did not know that when I started using redis. I always assumed &ldquo;there is a file on the disk, that is where my data lives&rdquo;.</p> <p>The truth is: all of redis&rsquo; data is kept in memory and from time to time it is <a href="http://redis.io/topics/persistence" target="_blank" rel="noreferrer">also written to disk</a></p> Why ActiveRecord Enums Have Been Implemented in the Worst Possible Way https://leif.io/blog/2014/11/14/why-activerecord-enums-have-been-implemented-in-the-worst-possible-way/ Fri, 14 Nov 2014 11:38:04 +0100 https://leif.io/blog/2014/11/14/why-activerecord-enums-have-been-implemented-in-the-worst-possible-way/ <p><strong>UPDATE:</strong> I tried out enums in ActiveRecord 5.0 and the biggest pet peeve has been eliminated. Point 3 is no longer valid. Nevertheless decide for yourself if you want to use it.</p> <p>With Rails 4.1 <a href="http://edgeguides.rubyonrails.org/4_1_release_notes.html#active-record-enums" target="_blank" rel="noreferrer">enums have been introduced to ActiveRecord</a>. I took a good look at it and from the start I didn&rsquo;t like it. Here are 3 reasons why:</p> <h2 id="1-its-all-in-the-application-layer" class="relative group">1. It&rsquo;s all in the application layer <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#1-its-all-in-the-application-layer" aria-label="Anchor">#</a></span></h2><p>Ok this might be a bit unfair as Rails <strong>is</strong> the application layer. Nevertheless the feature could have taken advantage of <a href="http://www.postgresql.org/docs/9.1/static/datatype-enum.html" target="_blank" rel="noreferrer">Postgres&rsquo;</a> or <a href="http://dev.mysql.com/doc/refman/5.0/en/enum.html" target="_blank" rel="noreferrer">MySQL&rsquo;s</a> native type. An example of how that could look like is in my experimental gem <a href="http://github.com/leifg/activerecord-real_enums" target="_blank" rel="noreferrer">activerecord-real_enums</a>.</p> Redis Tips Tricks - #0 Introduction https://leif.io/blog/2014/02/10/redis-tips-tricks-0-introduction/ Mon, 10 Feb 2014 15:21:02 +0100 https://leif.io/blog/2014/02/10/redis-tips-tricks-0-introduction/ <p>Yai, a series \o/</p> <p>Here I try to explain in short steps some tricks for beginners in handling <a href="http://redis.io" target="_blank" rel="noreferrer">redis</a>.</p> <p>Some of those tricks may be specific to redis, some other might be relevant for all key-value-stores.</p> <p>So stay tuned.</p> Morf Hashes Into Hashes https://leif.io/blog/2013/12/21/morf-hashes-into-hashes/ Sat, 21 Dec 2013 16:14:33 +0100 https://leif.io/blog/2013/12/21/morf-hashes-into-hashes/ <p>In the last few months I did a lot of work concerning imports.</p> <p>Using the <a href="http://sequel.jeremyevans.net/" target="_blank" rel="noreferrer">Sequel Toolokit</a> I was able to treat every query row as a hash and the whole thing has been working out pretty good so far.</p> <p>However I always needed to do conversions on the hashes (map keys to a different name, concatenate values etc&hellip;.). Therefore I implemented several mapping classes that helped me with that but was never quite satisfied with the implementation.</p> Get Yourself a Simple Project for Explaining Stuff https://leif.io/blog/2013/12/15/get-yourself-a-simple-project-for-explaining-stuff/ Mon, 16 Dec 2013 00:56:35 +0100 https://leif.io/blog/2013/12/15/get-yourself-a-simple-project-for-explaining-stuff/ <p>A while ago I spent some time at home, working on a Rails project. I was very passionate about it and at one point I shouted out: &ldquo;Finally! The tests are running&rdquo;.</p> <p>That was the point when my dad got curious about what I was doing and asked me something like &ldquo;What tests are you talking about?&rdquo;. I tried to showed him my specs. Unfortunately in order to explain the whole specs I also needed to explain ORM, mocking, factories and a couple of other stuff, because it was a Rails project and gotten pretty far by that point of time. That got me thinking: &ldquo;If it had been a simple class without any dependencies it would have been a lot easier to explain the tests.&rdquo;</p> Im Blogging Again https://leif.io/blog/2013/12/13/im-blogging-again/ Fri, 13 Dec 2013 23:58:11 +0100 https://leif.io/blog/2013/12/13/im-blogging-again/ <p>Or at least I think that is what I am going to do.</p> <p>Currently I&rsquo;m playing around with <a href="http://ghost.io" target="_blank" rel="noreferrer">ghost</a>.</p> <p>It doesn&rsquo;t have the fancy nerd stuff (yes it&rsquo;s only editable online and does not live on github) but I like the interface and am hoping for some awesome third party support.</p> <p>And it&rsquo;s not Wordpress.</p> <p>If you&rsquo;re wondering why this is not the first article: I imported some of the more popular blog posts from my old blog.</p> Words to Erase From Your Vocabulary When Coaching at RailsGirls https://leif.io/blog/2012/11/29/words-to-erase-from-your-vocabulary-when-coaching-at-railsgirls/ Thu, 29 Nov 2012 05:15:00 +0100 https://leif.io/blog/2012/11/29/words-to-erase-from-your-vocabulary-when-coaching-at-railsgirls/ <p>On October 13th 2012 I had the pleasure of being a coach at <a href="http://railsgirls.com/" target="_blank" rel="noreferrer">RailsGirls</a> in Munich.</p> <p>Having spent quite a fair I amount of time in front of a computer screen, I gathered a lot of technical terms and been using them as if they were standard vocabulary.</p> <p>But if you use terms like &lsquo;continuous deployment&rsquo;, &lsquo;rapid prototyping&rsquo; or &lsquo;static typing&rsquo; like talking about the weather you will have a hard time teaching programming to a beginner. Unfortunately a lot of strange terms will arise during an eight hour course of web-development.</p> New Project calcsub.net https://leif.io/blog/2011/05/01/new-project-calcsub-net/ Sun, 01 May 2011 17:54:47 +0200 https://leif.io/blog/2011/05/01/new-project-calcsub-net/ <p>Over the easter holidays I started working on a new project. Today it has finally reached a state where I&rsquo;m confident to say: I can go public.</p> <p>It&rsquo;s just a simple subnet calculator that takes IPv4 and IPv6 addresses and then calculates the start address and the end address.</p> <p>You can have a look at it <a href="https://web.archive.org/web/20130601060932/http://calcsub.net/" target="_blank" rel="noreferrer">here (NON FUNCTIONAL)</a> or see the source on <a href="https://github.com/leifg/calcsub.net" target="_blank" rel="noreferrer">github</a>.</p> <p>picture created by Leif Gensert. <a href="http://creativecommons.org/licenses/by/2.0/" target="_blank" rel="noreferrer">CC BY 2.0</a></p> Simplequeue - My First Project https://leif.io/blog/2010/10/24/simplequeue-my-first-project/ Sun, 24 Oct 2010 16:18:36 +0200 https://leif.io/blog/2010/10/24/simplequeue-my-first-project/ <p>Today I released my first project on <a href="http://github.com/leifg/simplequeue" target="_blank" rel="noreferrer">github</a>. It&rsquo;s called <a href="http://github.com/leifg/simplequeue" target="_blank" rel="noreferrer">simplequeue</a> and is a little tool to queue tasks. In this case everything is a task which can be expressed in a single line of text.</p> <p>It&rsquo;s written in ruby and as I&rsquo;m new to ruby I would really appreciate it if someone took the time and make a code review. Just <a href="http://grepthepipe.com/contact.html" target="_blank" rel="noreferrer">contact me</a> or fork the project if you have suggestions.</p> <p>I also added a <a href="http://grepthepipe.com/portfolio.html" target="_blank" rel="noreferrer">portfolio</a> page to this site. I will do my best to add more projects to my portfolio.</p> My Personal Mac Os 10 7 Wishlist https://leif.io/blog/2010/10/19/my-personal-mac-os-10-7-wishlist/ Tue, 19 Oct 2010 21:03:54 +0200 https://leif.io/blog/2010/10/19/my-personal-mac-os-10-7-wishlist/ <p>Tomorrow (October 20th 2010), Apple is going to introduce Mac OS version 10.7. I&rsquo;m curious of what Steve is going to show us. But just in case someone from apple is reading this. Here is my wishlist for the upcoming OS.</p> <h2 id="facetime-in-system" class="relative group">facetime in system <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#facetime-in-system" aria-label="Anchor">#</a></span></h2><p>FaceTime got introduced in iOS 4.0. It was advertised as a new way of communication blablabla. In order to communicate nowadays, one device might not be enough. So please let us use FaceTime with Apple devices. First step would be to integrate FaceTime in iChat. The next step (not Mac OS related) would then be to finally release the detailed specification, so that other companies can implement it to their systems.</p> Todo Lists 101 https://leif.io/blog/2010/09/14/todo-lists-101/ Tue, 14 Sep 2010 22:22:03 +0200 https://leif.io/blog/2010/09/14/todo-lists-101/ <h2 id="write-it-down" class="relative group">write it down <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#write-it-down" aria-label="Anchor">#</a></span></h2><p>It&rsquo;s a pretty obvious one but with a lot of tasks in the past I just thought &ldquo;ahh well I&rsquo;ll remember it&rdquo;. But most of the time I delayed it or missed to do it. This is especially the case when you get some great ideas while lying in bed. The chances are high you have forgotten all about them the next day. So get yourself some kind of easy accessible persistance layer to write down your tasks. Could be a simple piece of paper, could be your cellphone or could be some kind of web-application syncing with your smartphone (An overview of the best mobile todo list managers can be found <a href="http://lifehacker.com/5630230/five-best-mobile-to&#43;do-list-managers" target="_blank" rel="noreferrer">here</a>).</p> How to Use Twitter https://leif.io/blog/2010/08/07/how-to-use-twitter/ Sat, 07 Aug 2010 19:14:55 +0200 https://leif.io/blog/2010/08/07/how-to-use-twitter/ <p>The most controversial &ldquo;community&rdquo; has finally taken off into mainstream. So a lot of people are asking themselves: &ldquo;how can I get rich using this service&rdquo;. That is a valid question. A lot of so called &ldquo;consultants&rdquo; or &ldquo;experts&rdquo; are trying to help with this question and make up rules on &ldquo;how to use twitter&rdquo;.</p> <p>I think I&rsquo;ll join this conversation:</p> <ol> <li>Don&rsquo;t follow back people <strong>only</strong> because they followed you. This is not facebook, following doesn&rsquo;t have to be mutual.</li> <li>Unfollow people that don&rsquo;t interest you (anymore).</li> </ol> <p>OK, that&rsquo;s it. For the rest do whatever you want. Thanks for listening.</p> So You Want to Be a Programmer? https://leif.io/blog/2010/07/23/so-you-want-to-be-a-programmer/ Fri, 23 Jul 2010 23:35:12 +0200 https://leif.io/blog/2010/07/23/so-you-want-to-be-a-programmer/ <p>If you&rsquo;re anything like me, you have always wanted to learn a programming language, do an awesome application and get filthy rich. To achieve this goal you find plenty of resources available online. But all articles on how to become a programmer really boil down to just 2 letters:</p> <blockquote> <p>#do</p></blockquote> <p>That sums it up pretty well. You won&rsquo;t become a good programmer unless you&rsquo;ll write code. It&rsquo;s as simple as that. But as putting out just 2 letters for a guide might seem arrogant, I summed up 3 points which I find very helpful in learning a programming language.</p> Superfantastic Password Management With Supergenpass https://leif.io/blog/2010/07/14/superfantastic-password-management-with-supergenpass/ Wed, 14 Jul 2010 10:40:27 +0200 https://leif.io/blog/2010/07/14/superfantastic-password-management-with-supergenpass/ <p>Nowadays, there are a million websites out there which force you to create an account. During this step you are required to provide a username and a password. If this process gets repeated more often, the need of a proper password management increases. The currently most used password management is the simple &ldquo;use one for all&rdquo; method. I hope we alle agree that is the worst of all methods. The best available method however (generating long arbitrary passwords and memorizing them) is not that practicable. So you need to find a system between those two extremes. A few months back, I chose a password managing system with the help of <a href="https://www.supergenpass.com" target="_blank" rel="noreferrer">SuperGenPass</a> and stuck since then.</p> 3 Web Comic Series Every Geek Has to Know and Love https://leif.io/blog/2010/07/07/3-web-comic-series-every-geek-has-to-know-and-love/ Wed, 07 Jul 2010 00:24:27 +0200 https://leif.io/blog/2010/07/07/3-web-comic-series-every-geek-has-to-know-and-love/ <p>The internet is wonderful for so many things. Beside sharing your favorite cat pictures and telling the world your current meal. But you can also gather a large amount of information. I introduce now: my favorite &lsquo;information pieces&rsquo; in the category &lsquo;web comics&rsquo;.</p> <h2 id="the-oatmeal" class="relative group"><a href="http://theoatmeal.com/" target="_blank" rel="noreferrer">The Oatmeal</a> <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#the-oatmeal" aria-label="Anchor">#</a></span></h2><p>Awesome and pretty funny web comic series. Some concepts are based around common situation in technology but there is also mocking about every day situations. The sentence &ldquo;it&rsquo;s funny cause it&rsquo;s true&rdquo; applies to no other comic series as it does to The Oatmeal.</p> Jekyll: Blogging Without Pain https://leif.io/blog/2010/06/18/jekyll-blogging-without-pain/ Fri, 18 Jun 2010 02:21:00 +0200 https://leif.io/blog/2010/06/18/jekyll-blogging-without-pain/ <p>A long time hast passed since my last blog post. But I did a complete redesign of my blog. Not only is the frontend completely different. The underlying backend has changed as well. I completely freed myself from <a href="http://wordpress.com" target="_blank" rel="noreferrer">Wordpress</a> and changed to an engine that fits my workflow much better: <a href="http://wiki.github.com/mojombo/jekyll/" target="_blank" rel="noreferrer">jekyll</a>.</p> <p>To call jekyll a blogging-engine is (IMHO) not quite right. It&rsquo;s just a generator for static contents. The general idea behind it is that you write all your articles in a markup language (e.g. <a href="http://www.w3.org/MarkUp/" target="_blank" rel="noreferrer">HTML</a>, <a href="http://daringfireball.net/projects/markdown/" target="_blank" rel="noreferrer">Markdown</a> or <a href="http://textile.thresholdstate.com/" target="_blank" rel="noreferrer">Textile</a>), define the layout via the <a href="http://www.liquidmarkup.org/" target="_blank" rel="noreferrer">Liquid Templating engine</a>, run the jekyll generator and end up with a complete directory structure containing HTML/CSS and JavaScript files which can be used as the actual site.</p> The Apple iPad: I'm a Believer https://leif.io/blog/2010/01/31/the-apple-ipad-im-a-believer/ Sun, 31 Jan 2010 00:22:00 +0100 https://leif.io/blog/2010/01/31/the-apple-ipad-im-a-believer/ <p><strong>Disclaimer</strong>: Yes I am an <a href="http://www.spike.com/blog/top-10-worst-types/74309?page=2" target="_blank" rel="noreferrer">Apple Fanboy</a>, deal with it, save your flames.</p> <p>Just before I write anything: <a href="http://forums.macrumors.com/showthread.php?t=500" target="_blank" rel="noreferrer">Here</a> is a thread about the iPod announcement back in 2001. Just check if you find your comments somewhere ;-).</p> <p>Last wednesday (January 26th 2010) Apple announced the <a href="http://www.apple.com/ipad" target="_blank" rel="noreferrer">iPad</a>. Shortly after the keynote, the blogosphere went berserk (not to mention all the trollin&rsquo; on all the so called &ldquo;communities&rdquo;). <a href="http://forums.macrumors.com/showthread.php?t=500" target="_blank" rel="noreferrer">As always</a>, when Apple is showing off a new product the most flames will focus on all the features that are missing (<a href="http://pogue.blogs.nytimes.com/2010/01/27/the-apple-ipad-first-impressions/" target="_blank" rel="noreferrer">the same people will buy the product afterwards</a>). But let&rsquo;s have a look at all the features that all of you are missing so much.</p> What I Like About the Play Framework https://leif.io/blog/2010/01/04/what-i-like-about-the-play-framework/ Mon, 04 Jan 2010 23:28:00 +0100 https://leif.io/blog/2010/01/04/what-i-like-about-the-play-framework/ <p>Recently I stumbled upon the <a href="http://playframework.org" target="_blank" rel="noreferrer">play! framework</a>. Being a fan of <a href="http://rubyonrails.org" target="_blank" rel="noreferrer">Ruby on Rails</a> my <a href="http://twitter.com/leifg/status/5070708645" target="_blank" rel="noreferrer">first thought</a> was: &lsquo;It&rsquo;s like Ruby on Rails, except that it&rsquo;s Java&rsquo;. But I had to find out for myself. And I have to say: I really like it. In detail I would like to point out 4 things I like the most.</p> <h2 id="1-ships-with-everything-you-need" class="relative group">1. Ships with everything you need <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#1-ships-with-everything-you-need" aria-label="Anchor">#</a></span></h2><p>Everything you could wish for, it&rsquo;s there: <a href="g/documentation/1.0/model">ORM</a>, <a href="http://www.playframework.org/documentation/1.0/test" target="_blank" rel="noreferrer">Testing</a>, <a href="http://www.playframework.org/documentation/1.0/jobs" target="_blank" rel="noreferrer">Job Scheduling</a>, <a href="http://www.playframework.org/documentation/1.0/emails" target="_blank" rel="noreferrer">Mailing</a>, <a href="http://www.playframework.org/documentation/1.0/ecss" target="_blank" rel="noreferrer">extended CSS</a>, <a href="http://www.playframework.org/documentation/1.0/guide5" target="_blank" rel="noreferrer">Captchas</a> and even <a href="http://www.playframework.org/documentation/1.0/guide5" target="_blank" rel="noreferrer">OpenID</a>. All of it is delivered with the default distribution. Furthermore, it is a piece of cake to develop in the IDE of your choice (e.g. a simple <code>play eclipsify</code> creates all the necessary workspace files you&rsquo;ll need to develop your project in Eclipse). I hope there will be 3rd party extensions to include even more stuff.</p> About https://leif.io/about/ Mon, 01 Jan 0001 00:00:00 +0000 https://leif.io/about/ <p> <figure> <picture class="mx-auto my-0 rounded-md" > <source srcset="https://leif.io/about/james_coffee_landscape_hu_3a615ca025caa147.webp 330w,https://leif.io/about/james_coffee_landscape_hu_2e49d1f92aa393bc.webp 660w ,https://leif.io/about/james_coffee_landscape_hu_d3d5b6cce7b69945.webp 1000w ,https://leif.io/about/james_coffee_landscape_hu_d3d5b6cce7b69945.webp 1000w " sizes="100vw" type="image/webp" /> <img width="1000" height="772" class="mx-auto my-0 rounded-md" alt="Leif Gensert" loading="lazy" decoding="async" src="https://leif.io/about/james_coffee_landscape_hu_c589a56c5a99dd69.jpg" srcset="https://leif.io/about/james_coffee_landscape_hu_a238c9a806b3e3c8.jpg 330w,https://leif.io/about/james_coffee_landscape_hu_c589a56c5a99dd69.jpg 660w ,https://leif.io/about/james_coffee_landscape.jpg 1000w ,https://leif.io/about/james_coffee_landscape.jpg 1000w " sizes="100vw" /> </picture> </figure> </p> <p>Hi there, my name is Leif I am a German living in California.</p> <p>I&rsquo;m a developer by trade and by heart :heart:. I enjoy tinkering around with code and sometimes I <a href="https://speakerdeck.com/leifg" target="_blank" rel="noreferrer">talk</a> about it. I have particularly strong opinions on blockchain technologies. All my posts regarding this topic can be found under <a href="https://leif.io/schlockchain/">Schlockchain</a>. All other articles can be found under <a href="https://leif.io/blog/">blog</a>.</p> If You Have Consumed 12 out of These 25 Crypto Critics Resources, Then We Should Be Friends https://leif.io/if-you-have-consumed-12-out-of-these-25-crypto-critics-resources-then-we-should-be-friends/ Mon, 01 Jan 0001 00:00:00 +0000 https://leif.io/if-you-have-consumed-12-out-of-these-25-crypto-critics-resources-then-we-should-be-friends/ <p>I suppose you came here because of <a href="https://www.tiktok.com/@leifhedgehog/video/7083277633278070018" target="_blank" rel="noreferrer">my TikTok video</a>! Congratulations. Finding resources in TikTok videos sucks, so here is a list of all the material that was mentioned in the video.</p> <h1 id="videos" class="relative group">Videos <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#videos" aria-label="Anchor">#</a></span></h1><ul> <li><a href="https://www.youtube.com/watch?v=YQ_xWvX1n9g" target="_blank" rel="noreferrer">Folding Ideas: Line Goes Up – The Problem With NFTs</a></li> <li><a href="https://www.youtube.com/watch?v=u-sNSjS8cq0" target="_blank" rel="noreferrer">münecat: Web3.0: A Libertarian Dystopia</a></li> <li><a href="https://www.youtube.com/watch?v=J9nv0Ol-R5Q" target="_blank" rel="noreferrer">Nicholas Weaver: Computer Security 161 Cryptocurrency Lecture</a></li> <li><a href="https://www.youtube.com/watch?v=15RTC22Z2xI" target="_blank" rel="noreferrer">James Mickens: Blockchains Are a Bad Idea</a></li> <li><a href="https://www.youtube.com/watch?v=AFvBCvCl4sk" target="_blank" rel="noreferrer">Thought Slime: Money is fake, but some money is faker than others.</a></li> <li><a href="https://www.youtube.com/watch?v=qjQPCnjM3Bg" target="_blank" rel="noreferrer">Wisecrack: How NFTs Explain Everything Wrong with Art</a></li> </ul> <h1 id="articlespaperswebsitesbooks" class="relative group">Articles/Papers/Websites/Books <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#articlespaperswebsitesbooks" aria-label="Anchor">#</a></span></h1><ul> <li><a href="https://davidgerard.co.uk/blockchain/book/" target="_blank" rel="noreferrer">David Gerard: Attack of the 50ft Blockchain</a></li> <li><a href="https://onlinelibrary.wiley.com/doi/abs/10.1111/1468-2230.12603" target="_blank" rel="noreferrer">Edmund Schuster: Cloud Crypto Land</a></li> <li><a href="https://www.stephendiehl.com/blog/web3-bullshit.html" target="_blank" rel="noreferrer">Stephen Diehl: Web3 is Bullshit</a></li> <li><a href="https://web3isgoinggreat.com" target="_blank" rel="noreferrer">Web3 is going just great</a></li> <li><a href="https://www.wired.com/story/187-things-the-blockchain-is-supposed-to-fix/" target="_blank" rel="noreferrer">WIRED: 187 Things the Blockchain Is Supposed to Fix</a></li> <li><a href="https://onezero.medium.com/the-inevitability-of-trusted-third-parties-a51cbcffc4e2" target="_blank" rel="noreferrer">Cory Doctorow: The Inevitability of Trusted Third Parties</a></li> <li><a href="https://moxie.org/2022/01/07/web3-first-impressions.html" target="_blank" rel="noreferrer">Moxie Marlinspike: My first impressions of web3</a></li> <li><a href="https://medium.com/bloated-mvp/why-web3s-shared-data-across-applications-doesn-t-matter-e0281d3f70d2" target="_blank" rel="noreferrer">Liron Shapiro: Why Web3’s Shared Data Across Applications Doesn’t Matter</a></li> <li><a href="https://joekelly100.medium.com/how-to-kill-bitcoin-part-1-is-bitcoin-unstoppable-code-7a1b366f65ee" target="_blank" rel="noreferrer">Joe Kelly: How To Kill Bitcoin</a> (<a href="https://joekelly100.medium.com/how-to-kill-bitcoin-part-2-no-can-spend-66e59385a4a5" target="_blank" rel="noreferrer">part 2</a>, <a href="https://joekelly100.medium.com/how-to-kill-bitcoin-part-3-no-can-defend-cd6affe3fc44" target="_blank" rel="noreferrer">part 3</a>)</li> <li><a href="https://blog.mollywhite.net/its-not-still-the-early-days/" target="_blank" rel="noreferrer">Molly White: It&rsquo;s not still the early days</a></li> <li><a href="https://lukeplant.me.uk/blog/posts/the-technological-case-against-bitcoin-and-blockchain/" target="_blank" rel="noreferrer">Luke Plant: The technological case against Bitcoin and blockchain</a></li> <li><a href="https://www.mollywhite.net/annotations/latecomers-guide-to-crypto" target="_blank" rel="noreferrer">The edited Latecomer&rsquo;s Guide To Crypto</a></li> <li><a href="https://thatkimparker.medium.com/most-artists-are-not-making-money-off-nfts-and-here-are-some-graphs-to-prove-it-c65718d4a1b8" target="_blank" rel="noreferrer">Kimberly Parker: Most artists are not making money off NFTs and here are some graphs to prove it</a></li> <li> <a href="https://leif.io/blog/2021/05/16/real-world-ownership-is-not-a-use-case-for-blockchain/">Leif Gensert: Real World Ownership Is Not a Use Case for Blockchain</a></li> </ul> <h1 id="podcast-episodes" class="relative group">Podcast Episodes <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#podcast-episodes" aria-label="Anchor">#</a></span></h1><ul> <li><a href="https://blockdebate.buzzsprout.com/767033/9782555-motion-web3-is-worse-than-web2-liron-shapira-vs-kyle-samani" target="_blank" rel="noreferrer">The Blockchain Debate Podcast: Motion: Web3 is worse than Web2</a> - (<a href="https://podcasts.apple.com/us/podcast/motion-web3-is-worse-than-web2-liron-shapira-vs-kyle-samani/id1493609456?i=1000546031295" target="_blank" rel="noreferrer"><em>Apple Podcast Link</em></a>)</li> <li><a href="https://anchor.fm/when-the-music-stops/episodes/Nano--Digital-Cash-w-Patrick-Luberus-e15db6b" target="_blank" rel="noreferrer">When The Music Stops: Nano &amp; Digital Cash w/ Patrick Luberus</a> - (<a href="https://podcasts.apple.com/us/podcast/nano-digital-cash-w-patrick-luberus/id1568272504?i=1000530868578" target="_blank" rel="noreferrer"><em>Apple Podcast Link</em></a>)</li> <li><a href="https://trashfuturepodcast.podbean.com/e/the-road-to-apedom-feat-this-machine-kills/" target="_blank" rel="noreferrer">TRASHFUTURE: The Road to Apedom</a> - (<a href="https://podcasts.apple.com/us/podcast/the-road-to-apedom-feat-this-machine-kills/id1261944206?i=1000547486536" target="_blank" rel="noreferrer"><em>Apple Podcast Link</em></a>)</li> <li><a href="https://techwontsave.us/episode/75_blockchain_wont_save_the_global_south_w_olivier_jutel" target="_blank" rel="noreferrer">Tech Won&rsquo;t Save Us: Blockchain Won’t Save the Global South</a> - (<a href="https://podcasts.apple.com/us/podcast/blockchain-wont-save-the-global-south-w-olivier-jutel/id1507621076?i=1000533173244" target="_blank" rel="noreferrer"><em>Apple Podcast Link</em></a>)</li> <li><a href="https://cryptocriticscorner.com/2022/03/29/episode-63-we-need-to-talk-about-el-salvador-feat-mario-gomez-and-oscar-salguero/" target="_blank" rel="noreferrer">Crypto Critics Corner: We Need to talk about El Salvador</a> - (<a href="https://podcasts.apple.com/us/podcast/we-need-to-talk-about-el-salvador-feat-mario-g%C3%B3mez/id1557045965?i=1000555411445" target="_blank" rel="noreferrer"><em>Apple Podcast Link</em></a>)</li> </ul> The Ultimate California Road Trip https://leif.io/california-roadtrip/ Mon, 01 Jan 0001 00:00:00 +0000 https://leif.io/california-roadtrip/ <p> <figure> <picture class="mx-auto my-0 rounded-md" > <source srcset="https://leif.io/california-roadtrip/cover_hu_3b22045f1162b900.webp 330w,https://leif.io/california-roadtrip/cover_hu_c99b7729cc596d71.webp 660w ,https://leif.io/california-roadtrip/cover_hu_ea636cb0352926b7.webp 1024w ,https://leif.io/california-roadtrip/cover_hu_f5ac897c70d5165c.webp 1320w " sizes="100vw" type="image/webp" /> <img width="5184" height="2734" class="mx-auto my-0 rounded-md" alt="Santa Monica - California" loading="lazy" decoding="async" src="https://leif.io/california-roadtrip/cover_hu_746c6d1efec59268.jpg" srcset="https://leif.io/california-roadtrip/cover_hu_b80a9fae8927767e.jpg 330w,https://leif.io/california-roadtrip/cover_hu_746c6d1efec59268.jpg 660w ,https://leif.io/california-roadtrip/cover_hu_72627fc9fe201de.jpg 1024w ,https://leif.io/california-roadtrip/cover_hu_32be873cff0fb0f6.jpg 1320w " sizes="100vw" /> </picture> </figure> </p> <p><em>Destinations from North to South</em></p> <h1 id="general-advice" class="relative group">General Advice <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#general-advice" aria-label="Anchor">#</a></span></h1><h2 id="car-rental" class="relative group">Car Rental <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#car-rental" aria-label="Anchor">#</a></span></h2><p>Best comparison site for car rentals is <a href="http://carrentals.com" target="_blank" rel="noreferrer">carrentals.com</a>. If you don&rsquo;t have an American Driver&rsquo;s license the car rental companies will try to upsell you on car insurance.</p> Ultimate List of Web3/Blockchain Resources https://leif.io/ultimate-list-of-web3-blockchain-resources/ Mon, 01 Jan 0001 00:00:00 +0000 https://leif.io/ultimate-list-of-web3-blockchain-resources/ <p> <figure> <picture class="mx-auto my-0 rounded-md" > <source srcset="https://leif.io/ultimate-list-of-web3-blockchain-resources/cover_hu_7411d2df4cf46730.webp" sizes="100vw" type="image/webp" /> <img width="630" height="286" class="mx-auto my-0 rounded-md" alt="bookshelf" loading="lazy" decoding="async" src="https://leif.io/ultimate-list-of-web3-blockchain-resources/cover.jpg" /> </picture> </figure> </p> <p><em>Updated: 19 January 2022</em></p> <p>This is a personally curated list of articles and podcast episodes criticizing Blockchain/Web3 besides my <a href="https://leif.io/schlockchain/">schlockchain</a> category.</p> <h2 id="articles" class="relative group">Articles <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#articles" aria-label="Anchor">#</a></span></h2><ul> <li><a href="https://www.stephendiehl.com/blog/web3-bullshit.html" target="_blank" rel="noreferrer">Web3 is Bullshit</a>: If you only read one article, make it this one. <a href="https://twitter.com/smdiehl" target="_blank" rel="noreferrer">Stephen Diehl</a> does an excellent job of breaking down all the different angles on how Web3 is at best misleading.</li> <li><a href="https://blog.mollywhite.net/its-not-still-the-early-days/" target="_blank" rel="noreferrer">It&rsquo;s not still the early days</a>: A great take on what I named <a href="https://www.leif.io/blog/2021/12/29/blockchains-are-too-old-to-be-the-beginning-of-anything/" target="_blank" rel="noreferrer">the argument on potential</a> by <a href="https://twitter.com/molly0xFFF" target="_blank" rel="noreferrer">Molly White</a>. Much more concise and with better examples than I ever could write it.</li> <li><a href="https://moxie.org/2022/01/07/web3-first-impressions.html" target="_blank" rel="noreferrer">My first impressions of web3</a>: <a href="https://twitter.com/moxie" target="_blank" rel="noreferrer">Moxie Marlinspike</a>, the founder of Signal, gives an excellent run down on what actually happens when you try to use web3. This article focuses more an the usefulness on NFTs with a focus on NFTs.</li> <li><a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3476678" target="_blank" rel="noreferrer">Cloud Crypto Land</a>: Legal study by London School of Economics professor <a href="https://twitter.com/edmund_schuster" target="_blank" rel="noreferrer">Edmund Schuster</a> on the impossibility of a meaningful blockchain-based economic system.</li> <li><a href="https://www.wired.com/story/187-things-the-blockchain-is-supposed-to-fix/" target="_blank" rel="noreferrer">187 Things the Blockchain Is Supposed to Fix</a>: WIRED article from 2018 listing various use cases for Blockchain. Especially insightful to go through the links for now non-existing companies.</li> <li><a href="https://web3isgoinggreat.com" target="_blank" rel="noreferrer">Web3 is going just great</a>: Amazing overview collected by <a href="https://twitter.com/molly0xFFF" target="_blank" rel="noreferrer">Molly White</a> on all the mishaps in the Web3 space.</li> <li><a href="https://medium.com/bloated-mvp/why-web3s-shared-data-across-applications-doesn-t-matter-e0281d3f70d2" target="_blank" rel="noreferrer">Why Web3’s Shared Data Across Applications Doesn’t Matter</a>: Awesome run down by <a href="https://twitter.com/liron" target="_blank" rel="noreferrer">Liron Shapiro</a> about one specific argument of Web3 and how it would fail in reality.</li> <li><a href="https://joekelly100.medium.com/how-to-kill-bitcoin-part-1-is-bitcoin-unstoppable-code-7a1b366f65ee" target="_blank" rel="noreferrer">How To Kill Bitcoin</a>: 3 part article explaining on how a government could effectively stop the Bitcoin network on a technical level.</li> </ul> <h2 id="podcast-episodes" class="relative group">Podcast Episodes <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#podcast-episodes" aria-label="Anchor">#</a></span></h2><ul> <li><a href="https://podcasts.apple.com/fi/podcast/tech-wont-save-us/id1507621076?i=1000544403873" target="_blank" rel="noreferrer">Tech Won&rsquo;t Save Us: Web3 is a Scam, Not a Revolution</a>: A great podcast episode with <a href="https://twitter.com/parismarx" target="_blank" rel="noreferrer">Paris Marx</a> and <a href="https://twitter.com/smdiehl" target="_blank" rel="noreferrer">Stephen Diehl</a>. 1 hour of everything that&rsquo;s wrong with the blockchain and Web3.</li> <li><a href="https://trashfuturepodcast.podbean.com/e/the-road-to-apedom-feat-this-machine-kills/" target="_blank" rel="noreferrer">TRASHFUTURE: The Road to Apedom</a>: 80 minutes of lighthearted conversation trashing all kinds of aspects of Web3.</li> </ul> <h2 id="general-resources" class="relative group">General Resources <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#general-resources" aria-label="Anchor">#</a></span></h2><ul> <li><a href="https://davidgerard.co.uk/blockchain/book/" target="_blank" rel="noreferrer">Attack of the 50ft Blockchain</a>: An absolute must read for everyone wanting to step into the Blockchain universe. This book by <a href="https://twitter.com/davidgerard" target="_blank" rel="noreferrer">David Gerard</a> was released in 2017 so it doesn&rsquo;t touch on Web3 or NFTs but the arguments it makes still hold true.</li> </ul> <h2 id="more-lists" class="relative group">More Lists <span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"><a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#more-lists" aria-label="Anchor">#</a></span></h2><ul> <li><a href="https://github.com/rufuspollock/awesome-crypto-critique" target="_blank" rel="noreferrer">awesome-crypto-critique</a>: Giant list of articles criticizing Crypto, Blockchain and Web3</li> </ul> <p><em>Attribution: <a href="https://pixabay.com/photos/books-bookstore-book-reading-1204029/" target="_blank" rel="noreferrer">Books</a> by <a href="https://pixabay.com/users/luboshouska-198496/" target="_blank" rel="noreferrer">Lubos Houska</a></em></p>