Peter Thaleiks - Developer and Indie MakerI am writing about my experiences as a developer and indie hacker.2022-07-23T00:00:00Zhttps://peterthaleikis.com/Peter ThaleikisStartup Name Check: Experiences of the First week2018-04-30T00:00:00Zhttps://peterthaleikis.com/posts/startup-name-check:-experiences-of-the-first-week/<p>Being a developer by heart makes any kind of marketing and promotion a foreign ground. It cost me some time to overcome the weird feeling coming with publishing and talking about my <a href="https://startupnamecheck.com/">little side project Startup Name Check</a> — a tool to save time when you're researching a new name for your next startup, band, side project, hobby, etc.</p>
<p><img src="https://peterthaleikis.com/static/images/StartupNameCheck-experiences-of-the-first-week/startupnamecheck-on-launch-day-min.png" alt="startupnamecheck.com on launch day" /></p>
<h2>ProductHunt</h2>
<p>startup name check was ready for a few days before I managed to push myself over the line to post startup name check on ProductHunt. ProductHunt seemed like a great place to start off as it's very close to the tech scene and has a active community of indie makers. I spend a few hours reading about the recommended steps for a successful launch on ProductHunt. This included preparing screenshots, preparing a comment text and a few tweets to get started. I ended up replacing the screenshots a few times as they looked blurry on the ProductHunt page all the time. With a resolution of 678x407 it seems to be alright now. I was trying to get a screencast converted to a usable gif - no luck on this one.</p>
<p>The launch itself was around an hour after midnight SF time. I still decided to push on as I didn't want to wait any longer. At the beginning I thought "okay, not a lot happening at the moment. Let's get back to some other work." I guess my expectation of an immediate response was simply incorrect. It kicked off with a bit a delay: Around 6 am SF time traffic increased from less than ten visitors per hour to between 80–100 visitors per hour - all from PH. People visited the startup name check and did a lot of searches. A lot of them were more tries than actual searches. At the same time startup name check got reviewed, commented on and upvoted on PH and ended up on the third place for the launch day:</p>
<p><img src="https://peterthaleikis.com/static/images/StartupNameCheck-experiences-of-the-first-week/producthunt-badge-for-startupnamecheck-min.png" alt="ProductHunt Badge for startupnamecheck.com" /></p>
<p>startup name check badgeThe second morning (SF time) the traffic from ProductHunt spiked from the overnight low of around forty per hour to 252 in the hour 7–8 am just to fall off again afterwards. I've got no idea about the reasons behind this. Maybe the project got featured/mentioned somewhere with PH? I'm not sure. Noteworthy are two more things:</p>
<ul>
<li>
<p>Incredible positive feedback from other indie makers and devs on Twitter and via email. From simple "awesome product, keep going" to detailed feedback with improvement ideas and bug reports everything was in there.</p>
</li>
<li>
<p>Another unexpected result: the affiliate link to Namecheap got me two sales over 99 NZD (20 NZD) commission.</p>
</li>
</ul>
<p>After one week on ProductHunt my project got 503 upvotes, yay! The traffic flattened out as expected. Now there are usually 5–10 visitors per hours from ProductHunt.</p>
<h2>HackerNews</h2>
<p>After the initial success with ProductHunt I decided to follow up with more submissions. HackerNews seemed the logical next step. I signed up and wanted to publish my "Show HN" post. But HN said not soooo fast: "Sorry, your account is too new to submit this site." I got this fixed by emailing the admins and posted with a day delay. I followed the same approach as with ProductHunt in posting this on Twitter inviting people to check it out. The result was very different tho: Almost no traction on this, in total 11 points (upvotes) and no noticeable increase of traffic. I'm not sure if I judged the fit of my project for HN wrong or me being new to HN might have been the problem.</p>
<h2>Reddit</h2>
<p>Reddit was the next platform I guessed could be good fit. I settled on the idea of posting my project to these subreddits:</p>
<ul>
<li>r/alphaandbetausers — <a href="https://redd.it/8fadjl"> https://redd.it/8fadjl</a></li>
<li>r/IMadeThis — <a href="https://redd.it/8faowg"> https://redd.it/8faowg</a></li>
<li>r/SideProject — <a href="https://redd.it/8falo4"> https://redd.it/8falo4</a></li>
</ul>
<p>None of the posts got much attention. The post in r/SideProject got the most attention with 4 upvotes haha. I guess posting the links on Twitter alone doesn't do the trick. On Reddit my account isn't new, but I'm seldom active.</p>
<p><em>Btw, a lot of my experiences <a href="https://wheretopost.email/kb/submit/launching-on-producthunt.html">launching on ProductHunt</a> and <a href="https://wheretopost.email/kb/submit/marketing-on-reddit.html">Reddit</a> went into the Where To Post articles for these sites (linked before).</em></p>
<h2>Summary</h2>
<p>Marketing is still (and probably will be for longer) a foreign land for me. Yet I'm learning. That's key. I made great connections on Twitter with other indie makers and founders. That alone is gold. I got amazing feedback that keeps me motivated for further iterations.</p>
<p>If you want to follow the journey of building and marketing my side project more feel free to <a href="https://twitter.com/spekulatius1984">follow me</a> or my thread on twitter: <a href="https://twitter.com/spekulatius1984/status/988342340711366657">The 'making of' startup name check</a>.</p>
<p>Thanks for spending 5 minutes reading my update :)</p>
How I Rebuilt and Relaunched Startup Name Check2018-08-01T00:00:00Zhttps://peterthaleikis.com/posts/how-i-rebuilt-and-relaunched-startup-name-check/<p>I'd like to share my experiences and lessons from completely rebuilding, then 'fine tuning' for too long (aka procrastinating), and finally relaunching my little pet <a href="https://startupnamecheck.com/">side project Startup Name Check</a>. As you can imagine there were lots of frustrating moments and of course great people who helped along the way. But let's not jump ahead.</p>
<p>Just a heads-up — If you hoping for a "That's how I started something small on the side and it turned into this massive five-digits dollar per month business after just a few months"-article, please surf away. You won't find happiness here — this is just the regular grind and what I've learned from it.</p>
<h2>Where I started off:</h2>
<p>Back in April this year, I started Startup Name Check for a number of different reasons. Like many other indie hackers I wanted to:</p>
<ul>
<li>
<p>build something that is addressing your own problem or need ("scratch your own itch")</p>
</li>
<li>
<p>build small and iterate on it. Build fast, fail fast and learn fast.</p>
</li>
</ul>
<p>Other reasons aren't as common:</p>
<ul>
<li>
<p>Even though I've been a developer for a long time and contributed to open source projects, the idea of putting my work out there feels oddly strange and foreign. Seeing my project 'in the wild' - with only my name to it - was a challenge in itself. Addressing this weird feeling was one goal of building Startup Name Check.</p>
</li>
<li>
<p>With the weird feeling of putting it out there came the second weird feeling: talking about it 😁️ Simply the idea of talking about my own work was strange too. I always felt like I'm "selling" something - a rather unpleasant feeling. With this second weird feeling the list of strange feelings is getting to an end. Seems like I’m addressing a few weird feelings with this side project 😁️</p>
</li>
<li>
<p>Marketing: Another weird feeling 😛️ Just kidding, but it was and still is foreign ground to me. I like the nature of this challenge as it’s less "binary". That is interesting in itself. Slowly though, I feel I get the hang of it. Not saying I'm any good. I just suck a little less. This includes SEO, writing about my project and planning/discussing ideas and campaigns. Learning about how to market a project by myself was and still is one of my key goals of Startup Name Check.</p>
</li>
<li>
<p>Doing it "proper": When you're working as an employee sooner or later you are bound to face the feeling that you would do something differently. In my previous working experiences this was often the case with the projects I've been working on. Often I had the feeling I'd like to "do it proper" and more future proof instead of "quick and dirty" as I've asked to.</p>
</li>
<li>
<p>Money? Yeah, money is somewhere in the reasons too. Less for the money itself - more for the feeling of "Yay! I can do it, I actually built something people see a value in and are paying for - completely by myself.". During the launch I made 20 NZD in commission via a partnership program - this was during the time Startup Name Check had only limited functionality and no sign up option.</p>
</li>
</ul>
<p>The initial responses to Startup Name Check were great. I loved all the positive vibes and messages. So I decided to advance the project more.</p>
<h2>The Rebuild</h2>
<p>I looked into the suggestions I've received on Product Hunt and via the contact form. Most of them were logical next steps. Everything made sense and followed the path you would think — more domain names and social media networks to check, more features and some more tweaks to enhance the user experience. I mostly agreed with of the suggestions. Next, I put a list of things I thought would make a great next version together. The idea of "Startup Name Check version 2" was born.</p>
<p>When I discussed the feature ideas with indie makers they were excited. No one understands the pain of searching for a great project name more than indie makers. It often ends in frustration because your desired names are blocked or used for similar projects. Every time you come up with a new idea for a name you head off to check the usual places — .com, .io, Facebook, Twitter etc. Each of them takes you at least a few minutes to check, if you consider variations of names. And unfortunately it’s always the last one search when you find out why the name won’t work out. When you add the time thinking of names or brainstorming with others it all sums up to hours and hours. Time that could be saved and invested into building your project instead. This is where I see Startup Name Check solve an actual need: It allows you to cut the time for searching and validating names from days or hours to minutes. Version 2 of Startup Name Check should make a difference how you search and track your social media handles and domain names.</p>
<p>To make this happen, a lengthy list of features had to be added. I knew I had to implement a lot of frontend code. Frontend has never been my strong side. In the first version, the frontend was literally hacked together using jQuery and a free Bootstrap 4 theme. jQuery had to get replaced it with something more powerful and easier to maintain. VueJS was the logical choice as it was on my "to use somewhere" list and it gets shipped with Laravel by default <3 I decided to rewrite the current Startup Name Check "version 1" and see how hard it would be with my limited JavaScript knowledge. As usual when you learning something new, I expected an uphill battle. To my absolute surprise it was quicker to rebuild it in VueJS than I built it originally using jQuery 0_o I'm aware of the fake perception in regards of speed — writing something for the second time is usually faster because you know the logic inside out and solved a lot of issues already. Nevertheless, it was very quick. In under one day I achieved the same functionality in VueJS. A dream! 😍️</p>
<p>With this great start I felt like the remaining features for v2 would be fairly easy to add. So I decided to not release the Vue version straight away — what more value would it really provide? I set my goal on implementing at least the core functionality I had planned for version 2. Looking back, I consider this a mistake. Mainly for two reasons: I could have gained more experience of running this type of application before jumping into the deep end with a more complex application. I also missed out on the opportunity to work on the project in public. When I started out in the indie hacker space I didn't think of this really. Now, as we watch the "WIP clone wars" unfold it's pretty clear that building in public is important. By the way, you can find me on Makerlog. Looking back I should have rolled it out — maybe simply without any public statement. I didn't think of this option back then.</p>
<blockquote>
<p>As we watch the "WIP clone wars" unfold it's pretty clear that building in public is important.</p>
</blockquote>
<p>As you can imagine, the development didn't continue as smoothly as my initial optimism let me believe. As you might expect, there is much more work involved making it check 50 (instead of 6) domains and social media networks. Some of the networks put up a real fight to expose the information. I also underestimated the time required to get the UI working to my desired level. I spent a lot of time trying to get Stripe to work with VueJs. I learned this was more a problem of my way interacting with Stripe than of VueJS or Stripe. Over time I got slower and slower as my energy dropped. As I grinded my way through the workload a serious family issue came up. I ended up traveling back to Europe for two months. A mix of being distracted and procrastination replaced my quick initial optimism. So much for a quick turn around and fast delivery!</p>
<p>Picking up work you've began two months ago is hard. Instead of building up monthly recurring revenue, I only built up monthly recurring regrets. After a while, I got back into working regularly. Starting small and picking small tasks helped me to get back on track. During that time I've been lucky to get the invaluable support from <a href="https://twitter.com/yesnoornext">Vincent (@yesnoornext)</a> maker of <a href="https://threader.app/">threader.app</a> and <a href="https://twitter.com/rhysbeingsocial">Rhys (@rhysbeingsocial)</a> the maker of <a href="https://domainz.io/">domainz.io</a>. I know both of them from the time I started out in the indie hacker space. Even though they were busy with their own projects, both spent hours talking about my thoughts and doubts. A big thank you to both of them!</p>
<blockquote>
<p>Instead of building up monthly recurring revenue I only build up monthly recurring regrets.</p>
</blockquote>
<h2>Relaunch</h2>
<p>The public launch of Startup Name Check version 2 was an exciting moment. On one hand, I was excited to see what would happen, if someone would sign up or even subscribe. On the other hand, I was worried: Would the site work for everyone? Did I forget anything? Did I make serious mistakes somewhere along the way?</p>
<p>My goal was to make the launch as smooth as possible. So I prepared a list of actions to do as part of the launch:</p>
<ul>
<li>
<p>A list of <a href="https://twitter.com/spekulatius1984/status/1031156419544854528">Tweets with partial screenshots</a> to show the new features and explain them a bit.</p>
</li>
<li>
<p>Links to the Product Hunt comments suggesting new features which I've had implemented in v2 along with replies for the comments.</p>
</li>
<li>
<p>Personal messages to a few people who interacted me since the start of Startup Name Check v1. I intentionally didn't write everyone — that's not me. I just don't feel comfortable spamming everyone.</p>
</li>
<li>
<p>A log entry for Makerlog</p>
</li>
</ul>
<p>The original launch in April drove a lot of traffic from Product Hunt. This one platform got me around 10k visitors and 8k searches alone. <a href="https://twitter.com/dinuka_jay">Dinuka</a> shared with my that I can't relaunch on Product Hunt (under the same name) within six months of the original launch. So this one was off the table quickly.</p>
<p>With these prepared I deployed the final version, tested a few things and started getting the word out. Shortly after I started, I got a message from Dinuka saying that the Facebook login didn't work because the app wasn't switched to 'live' mode. I thought "Wait, I checked this and it worked for me!" And it did, because I'm the creator of the Facebook app (haha). I thought to myself "well, if this is the biggest issue then I should be fine".</p>
<h2>Results</h2>
<p>Compared to the original launch, this one was very quiet. Not really the result I was hoping for. I knew that the traffic probably wouldn't be comparable to the launch in April as I didn’t have Product Hunt driving new visitors to my site. In percentages it looks great — over 100% more traffic increase from the previous week. In absolute numbers, it doesn't look so great — it’s still under 100 people per day. A few days later, the traffic dropped to the same number of daily visitors as before the launch.</p>
<p><img src="https://peterthaleikis.com/static/images/How-I-rebuilt-and-relaunched-Startup-Name-Check/traffic1-min.png" alt="Graph of the traffic around the launch date" /></p>
<p>To put this in context:</p>
<p><img src="https://peterthaleikis.com/static/images/How-I-rebuilt-and-relaunched-Startup-Name-Check/traffic2-min.png" alt="Graph of the traffic since the initial launch" /></p>
<p>The big spike at the beginning is the first launch on Product Hunt. You see the traffic falling and tailing off to a few hundred users per month. I missed the spike in June as I'd been in Europe at the time. The spike in August came from Vincent's article about <a href="https://twomakers.io/two-makers-one-journey/">his maker journey</a>. The article found quite a few readers in indie hacker space and some of these readers found their way across to Startup Name Check.</p>
<p>The third spike happened totally unexpected. I got a little bit of love for Startup Name Check from Product Hunt in the form of a <a href="https://twitter.com/ProductHunt/status/1029639336717889536">tweet</a>.</p>
<p>And finally, the last little spike: my relaunch. I marked it in red to make sure you don’t miss it</p>
<p><img src="https://peterthaleikis.com/static/images/How-I-rebuilt-and-relaunched-Startup-Name-Check/traffic3-min.png" alt="Graph of the traffic since the initial launch - red marked is my launch" /></p>
<p>That relaunch doesn't look like a success? Yeah, fair enough, in the classic sense of launching you would call this a failure. I'm happy I built it and keep iterating on it. This time for real — small changes, without rewriting the whole application.</p>
<h2>Key lessons</h2>
<p>My key takeaways are:</p>
<ul>
<li>
<p>Don't put too much on your plate: Iterate on a small base. Every day that you delay your relaunch, your user base from the original launch is getting smaller. A few months earlier I might have been able to activate a few more of the people who talked with me after the April launch. A small work chunk size also help you to get back into working on your side project when life is throwing you off track like in my case.</p>
</li>
<li>
<p>Log your progress at a platform like WIP or Makerlog as well as on a Twitter thread. You get great support and people are usually more forgiving if they are actively engaged in your progress.</p>
</li>
<li>
<p>Be happy about the progress you make and don't force yourself too much. As long as you keep moving forward, you should be happy with yourself. You’ve got to balance your life — I know this doesn't meet the typical indie maker "grind 20 hours a day" philosophy.</p>
</li>
<li>
<p>Measure your personal indicators of success: Most people would consider my relaunch a complete failure. That's fair enough. But my goal wasn't to make lots of $$ with this. My goal was to build it, push myself to publish it and learn some basics about marketing. I would say that with this goal in mind, I succeeded. I suggest you to measure your success based on your goal, not on the goal others assume of you or your project.</p>
</li>
</ul>
<h2>Where from here?</h2>
<p>Well, I could give you a long list of features I'm going to build or a dreamy vision of Startup Name Check becoming the tool for all indie hackers and serial founders. Yet, I don't see this becoming <em>the</em> next big thing — which is fine. I'll still iterate and implement feedback now and then. The niche is, and always will, stay very small. I probably can't earn money with it. I'm okay with that — I'm not just here to earn money.</p>
<p>Thanks for sticking around through this long long article! Two more quick things before we finish off:</p>
<p>Tell your friends please. If you know someone who could benefit from startupnamecheck.com, please let them know. I would like to see my little project getting used more 🙏</p>
<p>Last but not least, I would like to thank <a href="https://twitter.com/Booligoosh">Ethan</a> (maker of <a href="https://kanbanmail.app/">KanbanMail</a>), <a href="https://twitter.com/matteing">Sergio</a> (maker of <a href="https://getmakerlog.com/">Makerlog</a>) and previously already mentioned Vincent for their great help in getting this article ready to be published!</p>
<p>Keep shipping! 🚢️</p>
<p>Peter</p>
How to Use Pug on Netlify?2019-03-21T00:00:00Zhttps://peterthaleikis.com/posts/how-to-use-pug-on-netlify/<p>Netlify is a powerful, yet easy to use platform to host your website. Combine this with pug and it gives you a great starting point to build and host your own website.</p>
<h2>What is Pug?</h2>
<p>Pug or PugJS, previously called Jade, is a JavaScript template engine. It assembles and combines your final HTML from different files and gives you a much cleaner development experience than plain HTML.</p>
<h2>How to configure pug on Netlify?</h2>
<p>Netlify allows you to use a number of tools when building your site. Pug isn't support out of the box but can be added and configured easily with npm. The following command installs pug, runs the compile of all pug files in the folder <code>pug</code> and saves the result in the folder <code>public</code>:</p>
<pre><code class="language-shell">npm install pug-cli; node node_modules/pug-cli/index.js pug/ --out ./public
</code></pre>
<p>You will have to adjust this command to your needs to match the folders and add it to the "Build command" on your Netlify site:</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-use-Pug-on-Netlify/screenshot-min.png" alt="Netlify configuration panel" /></p>
<h2>Can I use any NPM/Yarn libraries on Netlify?</h2>
<p>Without having tried all, this approach should work for any library that can be installed via npm or yarn and runs directly on the command line.</p>
<p>All it requires is to find the correct build command to run. If you are running a particular development command on your command line (for example <code>npm run dev</code>, <code>npm run watch</code>, <code>yarn watch</code>, etc.) there is a good chance this works as well. Unless it's a globally installed package. For these, you will find the file to execute in the <code>node_modules</code> folder.</p>
<h2>Closing thoughts</h2>
<p>Even if you are a developer and "used to code", Pug can make your site easier and faster to maintain. Written content is a different type of information and should be somewhat separated from code - same as you don't write your CSS or JavaScript inline you should avoid it for the actual content as well.</p>
Introduction to Static Site Generators2019-04-10T00:00:00Zhttps://peterthaleikis.com/posts/introduction-to-static-site-generators/<p>Even in 2020 many developers are used to spinning up a WordPress (or similar software) for content websites. Until recently I've been one of these developers. I was willing to develop a website using technology to get done what I could get done without. My choice of framework wouldn't have been WordPress, but at the end the result is the same: building a system to deliver what a static publishing software could have handled easily. In many cases it simply isn't worth the effort to set up, configure and maintain a fully fledged content management system and store content in a database.</p>
<blockquote>
<p>2020 is the year of the static generator. Get your blog started today! https://peterthaleikis.com/posts/introduction-to-static-site-generators/</p>
</blockquote>
<h2>What is a Static Site Generator?</h2>
<p>A static site generator (also called static publisher) is a program, that generates a complete website as an output. The generation can either be done locally on your computer or on a webserver during deployment. The website is then served through your web server — just like the old’n’days.</p>
<p>Content is typically written in a template language like Markdown or Liquid. This allows you to concentrate on your writing and ignore the layout and styling of your content. Some static generators allow you to mix and match your templates using PugJS, Markdown and others at the same time. Being a statically generated website, you'll have your content in a readable format on your computer available at any time. Should you wish to re-use it or re-publish this means very effort finding and reworking your own content.</p>
<p>As no database (besides the filesystem) is used no SQL or extracting addons/plugins are used. This makes your website deployment more stable and robust. With GitHub and co. you can also edit your website on the go and deploy simply by committing new content.</p>
<h2>Why using a Static Site Generator?</h2>
<ul>
<li>
<p>Security: There is no database or backend application. This reduces surface for attacks and therefore makes your security excellent 🔐️</p>
</li>
<li>
<p>Performance: As no backend application is serving your site less memory and CPU are used — your website stays up longer under heavy load 💪️</p>
</li>
<li>
<p>Backed up by default: You will always have a copy of your content separated from the webserver (usually in git). This ensures your site is very easily replicable in case the server harddisks fail and your live site goes offline.</p>
</li>
<li>
<p>Easy to move: Migrate your website to another hosting company without much pain: push the output (HTML, CSS, JavaScript) onto the new server and re-configure the DNS and you are all set.</p>
</li>
<li>
<p>Easily choose website hosting: You don't have to worry supported technology or PHP/Python/Ruby versions, because you only need to serve static contents.</p>
</li>
<li>
<p>Even not a major issue anymore, still the hosting for static sites is generally cheaper. Mostly it's free: With <a href="https://netlify.com/">Netlify</a> and <a href="https://about.gitlab.com/product/pages/">GitLab</a>, <a href="https://pages.github.com/">GitHub</a> you get static hosting for free.</p>
</li>
</ul>
<h2>What are the limitations and what workarounds are there?</h2>
<p>As with any technology, there are cases where it's more suitable and useful than others. Same goes for static site generators of course. Here are some cases where you might want to consider a different approach. For most issues, there is a simple workaround nowadays. Conveniently suggestions for these workarounds are listed with the issues below.</p>
<ul>
<li>
<p>User input is required: User input with forms (for example contact forms) was originally a limitation for static publishing. By now, this has changed with super simple solutions as <a href="https://www.netlify.com/docs/form-handling/">Netlify Forms</a>, <a href="https://formspree.io/">FormSpree</a> and <a href="https://getsimpleform.com/">getsimpleform.com</a>. All these services allow you to collect information from your visitors by submitting your form to a prepared endpoint. If your site requires complex multi-step forms you might want to break them up or build a custom endpoint to submit the data.</p>
</li>
<li>
<p>Content management system: Not everyone is keen on using their editor as a place to write. Many people still want the classic "logging into a website and publishing an article". As with the user forms, content management systems didn't exist until a few years ago. With <a href="https://www.netlifycms.org/">Netlify CMS</a>, <a href="https://forestry.io/">Forestry</a> and <a href="https://www.contentful.com/">Contentful</a> you got multiple great solutions to choose from.</p>
</li>
</ul>
<p>Most limitations can be avoided or mitigated by having a clear separation of your frontend and backend. This allows you to consider hosting your frontend as a static site and doing the heavy lifting on the backend (if needed at all).</p>
<h2>Which Static Site Generator should I choose?</h2>
<p>There are many static site generators out there to select from. Your decision depends more on preference for frameworks than technical differences. My personal favorites are:</p>
<ul>
<li>
<p><a href="https://www.11ty.io/">Eleventy</a>: Very simple and straight forward. You can <a href="https://www.11ty.io/docs/getting-started/">get started with Eleventy</a> in a few minutes. Supports pug, markdown and of course plain HTML by default. This website is based on the <a href="https://github.com/danurbanowicz/eleventy-netlify-boilerplate">Eleventy starter by Dan Urbanowicz</a>. An alternative would be the <a href="https://hylia.website/?ref=PeterThaleikis.com">website starter called Hylia</a> by Andy Bell.</p>
</li>
<li>
<p><a href="https://nuxtjs.org/">Nuxt.Js</a>: Nuxt.JS is a no-configuration framework based on the idea of NextJS and VueJS. You can write your complete website in VueJS components. Check out the <a href="https://nuxtjs.org/examples">getting started video for Nuxt</a> in just over one minute.</p>
</li>
<li>
<p><a href="http://vuepress.vuejs.org/">VuePress</a>: VuePress is a Vue.js powered static site generator which combines the power of Vue with server-side rendering (SSR). Markdown is the language of choice here. After compiling you will get a single-page app. Comes with <a href="https://v1.vuepress.vuejs.org/guide/#how-it-works">extensive and detailed documentation</a>.</p>
</li>
</ul>
<h2>Final thoughts</h2>
<p>I’ve found the main advantage of using a static site generator to be the ease of getting things up and running. The effort for set up and configuration is very low. You can get started writing the same day. It's stable and scales very well — perfect for production websites. Using a static generator is highly recommended and has suited my needs and skills perfectly. This being said, I'm sure non-devs will find their way around as well. Some understanding of HTML and CSS is recommended for any online project you are doing at the end. I encourage you to look around, try a few static site generators out to find the one that best suits your needs. If you need support consider reaching out to my <a href="https://bringyourownideas.com/">development company</a>. I'm providing a range of services with a focus on CMS and application development.</p>
How I Built My First Browser Extension2019-04-18T00:00:00Zhttps://peterthaleikis.com/posts/how-i-built-my-first-browser-extension/<p>It's been a regular day: Client work is keeping me busy as most days. I'm working on several things at once. I'm coming back to this site. I'm signed out again. Okay, no big trouble. Just click the login link and I'm back in the game. The little popup comes with three social media logins: Google, Facebook and Twitter. I remember vaguely that I used one of these — but I'm not sure which one. I click on Facebook and it takes only seconds to realize "Damn, I created another account". Annoyed at myself I browse around the setting to find the delete button. Back to square one.</p>
<p>Like this I've created a number of accounts. Whenever this happened I get it fixed (deleted the account) and get back to work. That worked and all that's left is probably some data in a database and my frustration. I usually put it off as "I'm the only one being to unable to remember."</p>
<p>(insert facepalm image)</p>
<p>A few weeks ago I stumbled across this tweet by @JamesIvings:</p>
<p><a href="https://twitter.com/JamesIvings/status/1107743227531182081"><img src="https://peterthaleikis.com/static/images/How-I-built-my-first-browser-extension/tweet1-min.png" alt="James Tweet" /></a></p>
<p>Now unbelievable, but back then I couldn't believe it: I had found a second person with this issue. I send out a tweet to see if there are more people getting frustrated by this:</p>
<p><a href="https://twitter.com/spekulatius1984/status/1109025451383508997"><img src="https://peterthaleikis.com/static/images/How-I-built-my-first-browser-extension/tweet2-min.png" alt="My research tweet" /></a></p>
<p>Thanks to @IndieHackers retweeting my tweet I got a lot of responses 😍️ In the replies I researched my issue individually — I asked indirectly because I wanted an unbiased feeling for the size of the issue. The results were clear: A overwhelming number of people use social logins in a fixed or hard defined way. They aren't my target group as they wouldn't profit from it. But around 5% faced my issue and forget which login they used.</p>
<p>That was enough for me to give it a try. I've decided to build a solution for it and learn how to build a <a href="https://browserextension.dev/">browser extension</a> along the way. The same night I started by adopting examples Mozilla provided. JavaScript wasn't the issue, but getting the access to the browser right was an uphill battle first. The next day I showed it to Thomas Petracco, who is working from the same co-working space atm. We chatted about the idea and tried it on a few more sites. We noticed that some sites aren't working — we talked more and thought about a better algorithm.</p>
<p>After two more rewrites the extension was working well and stable. It's now checking the last pages accessed while you surf. If a sign-in is recognized it adds the name of the network (Twitter, Facebook, Google or GitHub) to the page. No data is sent to my server, ever. Everything stays in the local storage 🔐️</p>
<p>A few sites aren't working — and can't work because of the way they are built 😐️ This is solved by having the option to manually add a network to any site you are visiting. This ensures you can get still remember which login you used last time.</p>
<p>Keen to see more? Head over to <a href="https://whichlogin.com/">WhichLogin.com</a> and check it out! I'm keen to hear your feedback 🙏️</p>
All You Need to Know about the Which Login Launch2019-04-21T00:00:00Zhttps://peterthaleikis.com/posts/all-you-need-to-know-about-the-which-login-launch/<p>Previously I've written about <a href="https://peterthaleikis.com/posts/how-i-built-my-first-browser-extension/">the story why I've built WhichLogin</a>. Now it's time to go a bit deeper and share more about the excitement and stress on launch day.</p>
<h2>Exciting: Getting ready for launch day</h2>
<p>Even with detailed preparation and testing you will never know for sure if everything goes as expected. There are hundreds of details that could potentially go wrong. Going live is never just a click on a button. This is why even after many years as a software engineer there is still a lot of stress involved with pushing my work live.</p>
<blockquote>
<p>Going live is never just a click on a button.</p>
</blockquote>
<p>This is even worse when I'm publishing my very own project — the baby I've been nurturing over the last weeks/months. If, let's say, my role in a team is the backend development I won't take any critic on the design to very much heart naturally. With your very own project, it's 100% with you. Every decision is going back to you: from the idea, to the product, to the design of the website and down to details like rounded buttons or not. Every bit will be your responsibility. This is the freedom I love, but it also increases my stress dramatically.</p>
<h2>Preparation is key for a successful launch</h2>
<p>I think nothing beats a solid preparation for the launch. If you plan to launch and you realize your images aren't the right size (or you don't have any) you losing valuable time. In this time other projects are ready and pushing forward.</p>
<p>I usually spend around the same time preparing the launch as I spend on the development of the product. This might sound crazy but worked out as correct for the launch of <a href="https://startupnamecheck.com/">startup name check</a> as well as WhichLogin. This means preparing texts and images for ProductHunt, IndieHackers and of course Twitter. I tend to double check everything many times as I'm reworking text many times until I'm happy. For the first time, I've produced a screencast video to explain the functionality. It's also the first time used my new personal brand and recently stealth launched blog (this site). This follows my general approach: I like to reuse ideas which worked out well last time or I've seen somewhere working well and add a few new things to try out.</p>
<blockquote>
<p>I usually spend around the same time preparing the launch as I spend on the development of the product.</p>
</blockquote>
<p>On the launch day, I'm high on coffee and ready with a set of images, texts, tweets and personal messages to friends. Everything sorted and clearly named in a folder and in one big text file. I like to sort the content items in the order I plan to push them out to avoid mix-ups. Even with all the preparation I never feel really ready, so at some point, I "just need to do it". I hope to be halfway ready and waiting for midnight SF time — which falls conveniently to 2 pm in Thailand.</p>
<h2>Launch day on Auto-Pilot</h2>
<p>Right after midnight SF time I click <a href="https://wheretopost.email/kb/submit/launching-on-producthunt.html">"submit" on ProductHunt</a>. I get to my new product and there is no way back anymore. Like a rocket, I have switched to auto-pilot at this point. I switch back to my editor and start submitting the content I've prepared one by one.</p>
<p>The first reactions fly in and I see a few retweets. Adrenaline and caffeine are racing through my system. I switch between my prepared text file and Firefox at high speed, trying to keep up with everything. Now and then I take a few seconds rest and check Google Analytics to see how many people are on the site. Every time the number of visitors jumps up I jump as well. I push more content and messages out while people upvote my little extension. I'm pretty excited as I reached the third position in the daily ranking. Now I'm refreshing the ProductHunt constantly to check the difference between my listing and the currently second. Just a short time after this I can't trust me eyes as my extension just jumped onto the second position on ProductHunt 😍️</p>
<p>So far everything went really well - until I come to publish my article to IndieHackers. I'm struggling to find the article submit option. I don't just want to post the article as a regular post - there was an article option last time I've used it. Now there is only a "send us your content for consideration"-option 🤔️ I reach out to IndieHackers and learned that the option has been removed and replaced by the IndieHacker product updates. Last time I launched a project this was still limited to products using Stripe 🙄️ My article doesn't fit the format. I park the idea and jump onto Twitter to push the wave I've been building up so hard.</p>
<p>A friend tweeted me that he purchased the extension. I can't believe it. Even he is a friend — I've made a few Euro! I'm stoked 🤑️ I'm slightly surprised I didn't receive an email from Google. As it's my first extension, I'm not sure everything works really and I decided to ignore the feeling and push forward for now. Around 5 or 6 pm and my body started to complain about the insufficient supply with food. I get a meal while tweeting from my phone. My girlfriend is understanding as it's an exciting day.</p>
<p>A bit later I get a tweet from another customer saying the installation didn't work. My stress peaks. Does it work? Did I forget something important? Is the extension working? Maybe I didn't get any payment emails because there weren't any successful purchases? Worries and stress take over from the excitement. I spend my time handling messages and tweet while writing the product text for IndieHackers. The upvotes picked up more and my extension takes over the first spot on ProductHunt 😍️ I'm mind-blown 🤯️ I can't believe it and take screenshots every few minutes because I expect to drop down to the second place any second.</p>
<p>Around 3 am I fall asleep exhausted with my laptop next to me. The next morning I research and find the orders, everything is fine. I'm incredibly relieved — it wasn't all for nothing. I'm also happy to see that my little extension project is still on the second spot on ProductHunt. What a result: I have to thank all the great people checking out and upvoting my product for this!</p>
<h2>Results</h2>
<p>If you didn't fall asleep during my story above you have really deserved getting the result by now. There are many things to say about the launch, but I try to keep it to key highlights:</p>
<ul>
<li>
<p>The <a href="https://twitter.com/spekulatius1984/status/1118775156736835584">launch tweet</a> has received incredible 46 retweets and 102 likes. It was viewed almost 15,000 times! 🤯️</p>
</li>
<li>
<p>Unbelievable 444 people upvoted the extension (until today) on ProductHunt leading to a second place on launch day: <img src="https://peterthaleikis.com/static/images/All-you-need-to-know-about-the-Which-Login-launch/producthunt-badge-min.png" alt="ProductHunt badge for WhichLogin" /></p>
</li>
<li>
<p>I've got a crazy number of message and tweets giving my their feedback 😍️ I'm still working on implementing the feedback for the website as well as the extension itself.</p>
</li>
<li>
<p>Around 1400 people visited <a href="https://whichlogin.com/">WhichLogin.com</a> and the extension on the Chrome store (both tracked using the same GA). Main drivers for the traffic were ProductHunt and Twitter. This is from the GA for the time since Thursday: <img src="https://peterthaleikis.com/static/images/All-you-need-to-know-about-the-Which-Login-launch/which-login-google-analytics-min.png" alt="Google Analytics of the launch day" /></p>
</li>
<li>
<p>Not just one 🤯️ but six people purchased my extension until today 😍️ The total revenue is 23.76 Euro 🤑️ Unbelievable!</p>
</li>
<li>
<p>Most buyers came from the US 🇺🇲️ (3) and each one from Canada, Malaysia, and the UK 🤩️</p>
</li>
</ul>
<p>I'm super happy with this incredible result! I've not expected so much positive feedback and so many upvotes. I hoped for one or two purchases. Never ever I would have expected six purchases.</p>
<h2>What I've learned from the launch</h2>
<p>Not all completely new, but there are some very good, detailed learnings I had from the launch of my extension:</p>
<ul>
<li>
<p>Not really a learning, more something that needs to "sink in" more: Most people are great and more than happy to help out when you are creating something. The more useful your product is the more likely they are to share your launch tweet or project. An additional boost you can get from creating in an open manner and sharing your experience. For example by sharing the progress on <a href="https://getmakerlog.com/products/which-login">makerlog</a>, <a href="https://twitter.com/spekulatius1984/status/1118775156736835584">Twitter thread</a> or in a <a href="https://www.indiehackers.com/product/which-login-did-i-use-last-time">product feed on IndieHackers</a>. By the way: this is a great moment to follow all of them 😉️</p>
</li>
<li>
<p>As I've learned SVG icons aren't good for the icon in the bar. Works fine during development but gives unpleased warning once delivered via the Chrome extension store. This brings me straight to the second, related learning: Loading the extension directly in the browser and the installation via the webstore aren't producing exactly the same results. Test them both!</p>
</li>
<li>
<p>The third learning is more user experience related: Every extension should have a clear "I'm installed, all good" message. Either in the form of a notification or in the form of a new tab with a web-page being opened. Without this users might not be entirely sure if the installation was successful or not. I've fixed this by now and every new user of WhichLogin gets a nice detailed help page 📔️</p>
</li>
</ul>
<p>So much from me for now. I'll keep all three channels (Twitter thread, Makerlog and IndieHackers) updated. Don't forget to check in now and then.</p>
<p>Peter</p>
How to Improve the Security of Your Netlify Site2019-05-01T00:00:00Zhttps://peterthaleikis.com/posts/how-to-improve-the-security-of-your-netlify-site/<p>Recently I've rebuilt my blog (this website) using <a href="http://11ty.io/">Eleventy</a> and <a href="http://netlify.com/">Netlify</a>. Being an engineer, I like to enhance and improve my websites. Sometimes I submit my websites to services that check them to identify new areas of improvement. These services are for example broken link crawlers to find links which aren't working anymore or <a href="https://securityheaders.com/">securityheaders.com</a>, a service to check the HTTP headers for potential security enhancements/issues.</p>
<h2>The initial security assessment of my Netlify site</h2>
<p>As with many times before, I entered one of my websites for the check of the security-relevant HTTP headers on securityheaders.com. The result came back quickly and showed there is a potential to improve the headers. Only "Grade D" according to Scott Helme's site:</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-improve-the-security-of-your-Netlify-site/result-before-min.png" alt="Securityheaders Result of my website before any modification" /></p>
<h2>Easy to improve with Netlify's _headers file</h2>
<p>The outstanding Netlify developer experience makes it very easy to tweak the headers. Netlify allows you to set additional headers in a file called <code>_headers</code>. This file should live in your "Publish directory". This is often called <code>public/</code>, <code>dist</code> or <code>_site</code>. If you are unsure you can check it in the Netlify admin panel of your site under "Build & Deploy".</p>
<p>The headers file allows you to define headers for different URLs (for example <code>/contact</code>) or URL segments (for example <code>/*</code> for all URLs) of your page. In my case it's very simple as I want to apply the headers to all pages (URLs):</p>
<pre><code class="language-bash">/*
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Referrer-Policy: no-referrer
X-Content-Type-Options: nosniff
</code></pre>
<p><code>_headers</code>-file example used on peterthaleikis.com</p>
<p>With these headers I get a significantly improved result and a "Grade A":</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-improve-the-security-of-your-Netlify-site/result-after-min.png" alt="Securityheaders Result of my website after tweaking _headers" /></p>
<p>Adding the header file to your git, pushing it up and deploying shouldn't take more than five minutes and improves the security of your website significantly. I would think these are well invested minutes 🙏️</p>
Differences between locally loaded vs. store-installed Extensions2019-05-22T00:00:00Zhttps://peterthaleikis.com/posts/differences-between-locally-loaded-vs.-store-installed-extensions/<p>There are minor, but often important differences between temporary loaded <a href="https://browserextension.dev/">browser/Chrome extensions</a> and extensions, which have been installed via the Chrome webstore/Mozilla Addon store. These can be tricky to debug, as they appear only in limited circumstances. Here is a list of differences, I've been identifying while developing my browser add-on:</p>
<h2>Chrome and SVG icons aren't going well together</h2>
<p><code>Chrome</code>, <code>SVG</code>, <code>Happens-only-on-Webstore</code></p>
<p>With the public release of the <a href="https://peterthaleikis.com/posts/all-you-need-to-know-about-the-which-login-launch/">first version of my extension</a>, I've noticed that some people got a notification on install "Could not decode image: 'icon.svg'". My first attempt to resolve this was naturally ensuring the SVG is valid and it contains a valid XML-tag <code><?xml version="1.0" encoding="UTF-8"?></code> at the beginning. This wasn't successful, unfortunately. Chrome just doesn't seem to like SVG icons. I decided to resolve the issue by replacing the SVG icon with a PNG image instead. The SVG images can easily be converted using a free online service like <a href="https://svgtopng.com/">svgtopng.com</a>. After replacing and awaiting the review by the Chrome team the issue was finally resolved.</p>
<h2>Firefox Storage API locally vs. in production</h2>
<p><code>Firefox</code>, <code>Storage API</code>, <code>Happens-locally-loaded</code></p>
<p>The storage API might not work as you intended when installing the extension temporarily. On restart of Firefox and reinstalling your temporary extension, Firefox will assign your addon a new ID (identifier). This unique identifier is used to namespace the local and sync storage. Result of the change is, your storage clearing itself without any obvious reason. The only hint is in hidden away the console of the background JS. There you might find the following message:</p>
<p><code>Error: "The storage API will not work with a temporary addon ID. Please add an explicit addon ID to your manifest. For more information see https://bugzil.la/1323228."</code></p>
<p>Reading through the <a href="https://bugzil.la/1323228">bug report</a> hinted on how to resolve this issue. It can be resolved by adding the following keys to your manifest.json:</p>
<pre><code class="language-json">"applications": {
"gecko": {
"id": "whichlogin@peterthaleikis",
"strict_min_version": "53.0"
}
},
</code></pre>
<p>The "id" can either be either an</p>
<ul>
<li>an email address,</li>
<li>a string like <code>project@yourname</code> or</li>
<li>a UUID.</li>
</ul>
<p>Make sure to avoid real or catch-all email addresses as you might make yourself a target for spammers. Adding the "applications" key will lead to a warning issued by Chrome <code>Unrecognized manifest key 'applications'</code>. Preassumbly this warning can be ignored.</p>
<h2>Found more problems? Please reach out!</h2>
<p>I'll extend this list as I discover new differences to help other browser extension developers out 🙏️ If this article helped you please consider sharing it on Twitter. Have you found another difference and would like to add it? Shout out on Twitter or Telegram (see contact) and I'll add it in 👍️</p>
How to Check Do Not Track (DNT) in JavaScript?2019-05-25T00:00:00Zhttps://peterthaleikis.com/posts/how-to-check-do-not-track-(dnt)-in-javascript/<h2>What is Do Not Track?</h2>
<p>Do not track is a user preference to not being tracked by Google Analytics or similar services. If active, it is sent as an HTTP header with all requests going out to servers. Depending on the browser you are using this is switched on by default in private/incognito sessions.</p>
<h2>How to check if DNT is set using JavaScript?</h2>
<p>In some cases, you might need to find out if DNT is active on the fly when someone is visiting your website. This could, for example, be the case if you are using a <a href="https://peterthaleikis.com/posts/introduction-to-static-site-generators/">static site generator</a> and need to compile the GA code in, but only activate it if your website visitor is fine with it. The following code snippet allows you to check if DNT is set using JavaScript:</p>
<pre><code class="language-javascript">let dntActive = () => {
// get the value from the various browser implementations.
let dnt_active = parseInt(
// Internet Explorer 9 and 10 vendor prefix
navigator.msDoNotTrack ||
// IE 11 uses window.doNotTrack
window.doNotTrack ||
// W3C
navigator.doNotTrack,
10
);
// If this comes to exactly 1 DNT is set.
return (dnt_active === 1);
}
// Check if DNT is active.
if (dntActive()) {
// active
} else {
// inactive
}
</code></pre>
<p>Following this example, you should find out if a user doesn't like to be tracked.</p>
<p>This quick tip was inspired by <a href="https://github.com/saberland/saber/blob/master/packages/saber-plugin-google-analytics/saber-browser.js">https://github.com/saberland/saber/blob/master/packages/saber-plugin-google-analytics/saber-browser.js</a> 🙏️</p>
No Real Plan, No Prep, Just Launching Quickly: Random Elon2019-05-27T00:00:00Zhttps://peterthaleikis.com/posts/no-real-plan-no-prep-just-launching-quickly:-random-elon/<p>Sometimes all the planning and thinking about a project is too much. You just got to jump in and build something. That's what <a href="https://jesswallace.co/">Jess</a> and I did last night. We spontaneously decided to roll out a random, unplanned side-project: <a href="https://randomelon.peterthaleikis.com/">Random Elon</a>.</p>
<p>Random Elon returns you a randomly selected Elon Musk quote. You can then share it directly on Twitter to show your love for Elon. Powered by TailwindCSS, plain PHP7 and Laravel Forge the built took less than an hour to build. We started talking and while we were still talking Jess actually put a page together already. I set up some hosting quickly. Forge makes hosting it incredibly easy. Data was quickly collected using <a href="https://tryspider.com/">spider</a>. Social media images are sponsored by <a href="https://imageee.com/">imageee</a>. Makers collaboration 💪️</p>
<h2>Open source for the win!</h2>
<p>If you want to build something similar you can actually just fork our <a href="https://github.com/thecookiemonsters/RandomElon">repo on GitHub</a> and get started straight away. It's mostly HTML. The project literally has only two lines of functional code. No need to think about it much 🤣️ Create your Random Quote selector today and win a cookie 🍪️</p>
<h2>Missing your favorite Elon words?</h2>
<p>If you think a great Elon quote is missing please send a pull request at the Github repo mentioned above. We are happy to update the quotes to include it 🙏️</p>
<h2>Update #1: The Random Elon API</h2>
<p>During the launch a few people asked for an API to access the data. Adding another small PHP script taking one of the quotes and returning it encoded as JSON has a minor job and done in minutes - to everyone's happiness 🤩️</p>
<h2>Update #2: iPhone app</h2>
<p>Full of <a href="https://twitter.com/dense_design/status/1133164234135736325">excitement Ruben</a> decided to build an iPhone-app based on Random Elon. The app was done in under an hour. But the excitement wasn't shared by Apple. Apple wasn't excited about the app at all and dragged the review out. First the ask to remove the Elon photo, then they asked to remove his name. At the end Rubens work still got declined - No Random Elon iPhone app 😞️</p>
<h2>Disclaimer</h2>
<p>Otherwise, I have to say, no animals were harmed in the development of this project. Tasty cookies have been eaten. 🍪️</p>
Side-project Ideas up for Grabs2019-06-07T00:00:00Zhttps://peterthaleikis.com/posts/side-project-ideas-up-for-grabs/<p>Building a side-project should be fun. Coming up with a good idea, validating it and building a business are all very different, yet exciting challenges. You will never have as much freedom as you have on your own truly 100%-own project. This article is for those, who haven't found the one idea they are planning to work on for the next months or years. It hopefully gives you starting points or food for thought.</p>
<p>Before we get started: Not all ideas listed here are suitable to build a business of them. Some of these ideas are "fun project"-type of ideas. Fun projects are great stepping stones to more sizable, commercial projects. I would especially recommend you to consider fun projects if you are completely new or aren't used to the indie maker space yet. You can use fun projects to get used to putting your work out there, learning how to market it and build an audience at the same time. I've started for example <a href="https://randomelon.peterthaleikis.com/">Random Elon</a> with <a href="https://jesswallace.co/">Jess Wallace</a> as a fun project.</p>
<h2>Too many ideas? No ideas?</h2>
<p>Ideas for startups and side projects are a topic in themselves. Some people seem to struggle coming up with ideas while others seem to drown in ideas. I'm probably closer to the latter. A while ago I've started collecting my ideas -good and bad- with notes. Now I've decided to share them with anyone who is interested. This is aimed at giving potentially interested makers starting points. Most ideas in my list are either up for grabs (as far as I know) and simply ideas I can't spend more time on as I'm pretty busy already.</p>
<p>A little disclaimer: I didn't do proper research on most of these ideas. If you are interested, you should spend some time finding out if the idea is <a href="https://peterthaleikis.com/business-idea-validation">actually feasible</a> and (still) makes sense to build. Always consider your personal strengths and skills when you are making a decision. Don't forget to keep an eye on the market too. If you can't build everything yourself reach out to a development company such as my <a href="https://bringyourownideas.com/" target="_blank">bring your own ideas Ltd.</a> for support.</p>
<h2>No NDA or copyright? Just like this?</h2>
<p>I'm not worried about NDAs, copyright or anything. I'm openly sharing them to make the start for other Indiehackers easier. Feel free to use them! If you build them I don't have to!</p>
<p>If you decide (after your research) to build a side-project on one of these ideas feel free to contact me. I'll update the list and am happy to help you with feedback and launch-tweets. Please also let me know you if there is already an existing solution/product for any of the listed ideas 🙏️</p>
<h2>These ideas are public. What are they worth really?</h2>
<p>Yeah, these ideas are public. Like most ideas. Amazon's business model is public (as almost any company's business model). Mighty Amazon was a little Online shop for a long time. Many people started online shops at the same time. Some even copied Amazon directly. Most of these online shops don't exist anymore - Amazon has replaced them. Not by having a unique idea, by having a unique execution. It's not about the idea so much as it is about the execution.</p>
<h2>List of side-project ideas</h2>
<p>Here is my list. Some are better, some are worse. See for yourself:</p>
<table>
<thead>
<tr>
<th>Idea</th>
<th>Details</th>
<th>People to talk to</th>
</tr>
</thead>
<tbody>
<tr>
<td>"Quick Response" Browser Extension</td>
<td>A browser extension allowing you to quickly fill fields with predefined messages - and submit them. Don't type stuff like "Thanks!", "Wow, that's cool! 🤩️", etc. again and again. Just click the response! Should be configurable to allow custom versions.</td>
<td>Nobody is doing this as far as I know.</td>
</tr>
<tr>
<td>"Ready Or Not?" Service</td>
<td>A small service from indie makers for indie makers. The goal is to help indie makers making a call if their projects are ready for launch.</td>
<td>Some people have done feedback-related projects before. But I haven't seen a launch focused option.</td>
</tr>
<tr>
<td>"SameClicks" Chrome Extension</td>
<td>A browser add-on to automate repetitive tasks like clicking to confirm stuff by recording the element(s) clicked on.</td>
<td>I've seen one tool, but that was just way over the top in features.</td>
</tr>
<tr>
<td>Ad-free DNS service</td>
<td>A public DNS service which doesn't resolve for advertising and tracking related requests. Information could, for example, come from the <a href="https://pi-hole.net/">project "Pi-Hole"</a>. For mobile provide an app which reconfigures the DNS.</td>
<td></td>
</tr>
<tr>
<td>IndieHackerBooks Website</td>
<td>A curated list of books for Indiehackers. Pretty much a content site.</td>
<td>Not sure if someone works on this.</td>
</tr>
<tr>
<td>RandomMakerSite Website</td>
<td>Imagine a site you go onto and get redirected to a random maker or product, either on IndieHackers, HackerNews, ProductHunt or Reddit. I would probably add a weighting in to highlight small to medium popular makers and products - gives the site more value.</td>
<td>Nobody is working on this, as far as I know.</td>
</tr>
<tr>
<td>"When is it airing for me?"-Site</td>
<td>A site which gives you global (sport) events (NFL, Rugby, Soccer, Donald Trumps Walk of Shame) for each time zone, country, and major cities. This project would answer Google questions like "When are the NFL games running in Cambodia?". This should drive some long tail searches towards the site.</td>
<td>Nobody is working on this, as far as I know.</td>
</tr>
<tr>
<td>"Share where I'm coming from"-Extension</td>
<td>Sometimes you might want to support a project and share actively when you are using their website to go to another website. Sharing the information where you came from might drive some attention to the original site — the website you are keen to support. Adding useful GA (UTM) parameters will ensure the target website owner has a chance to know how you came to the site. Simple use-case: You click a link on producthunt.com and want to make sure the website you are going to knows you came this way.</td>
<td>Nobody is working on this, as far as I know.</td>
</tr>
<tr>
<td>Browser extension to help with Right-Left confusion</td>
<td>A surprising number of people needs to deal with Right-Left confusion. This a problem where you struggle to recall what is <a href="https://faculty.washington.edu/chudler/java/hands1.html">right and left on demand</a>. A simple extension, which shows either "R" or "L" as an icon in the browser (when your mouse is in the this part of the screen) can help.</td>
<td>Nobody is working on this, as far as I know.</td>
</tr>
<tr>
<td>"ForFirefox"-Addon</td>
<td>As a Firefox user you often stumble across Chrome extensions which look neat and you might want for Firefox. But these either aren't mentioned, linked or aren't available. This extension helps you to find them by pointing you directly where you want to go. The biggest question is: How to obtain the data?</td>
<td>Nobody is working on this, as far as I know.</td>
</tr>
<tr>
<td>"OtherAccounts"-Extension</td>
<td>Sometimes when you visit a profile you might find this person interesting and want to see more of him/her. This browser extension shows you the other accounts of this person. The biggest question is: How to get the data?</td>
<td>Nobody is working on this, as far as I know.</td>
</tr>
</tbody>
</table>
<h2>Update #1: Adding some more ideas in.</h2>
<p>I've decided to add some more ideas in. I probably need to rename this article "100 ideas for browser extensions" soon 😂️</p>
<table>
<thead>
<tr>
<th>Idea</th>
<th>Details</th>
<th>People to talk to</th>
</tr>
</thead>
<tbody>
<tr>
<td>"No More"-Extension</td>
<td>Many websites use "more" or "read more" to hide longer forms of content. For example, Quora hides length-ly answers. I think more people prefer the longer content than you might expect. It often provides some decent, deeper explanation and reasoning. My personal dream would be, if you could define a configuration like "always unfold, unless more than N words."</td>
<td>New?</td>
</tr>
<tr>
<td>"Keep an eye on"-Extension</td>
<td>Imagine you can select any element on a website (paragraph, sentence, image, price, ...) and the extension would notify you when the content changes. Right there in your browser using a notification leading you to the websites.<br /><br />Thomas pointed me to the <a href="https://chrome.google.com/webstore/detail/distill-web-monitor/inlikjemeeknofckkjolnjbpehgadgge" title="Distill Web Monitor" target="_blank" rel="nofollow noopener">Distill Web Monitor</a> extension (for <a href="https://addons.mozilla.org/en-US/firefox/addon/distill-web-monitor-ff/" title="Distill Web Monitor for Firefox" target="_blank" rel="nofollow noopener">Firefox</a>), which pretty much solves the problem. I haven't tested it how much is available in the free version tho.</td>
<td>New?</td>
</tr>
<tr>
<td>TwitterStory</td>
<td>A service you access which generates you a static website or HTML-page for your own blog from your Tweets, categorized by topics. Sorted by likes with a reduction over time (older tweets need more likes to stay on top).</td>
<td>New?</td>
</tr>
<tr>
<td>😖️ Date-Sanity extension</td>
<td>A browser extension, which replaces all dates written in US-date format (mm/dd/yyyy) with dd/mm/yyyy to keep you sane.</td>
<td>New?</td>
</tr>
<tr>
<td>"Auto-Surf"-Extension</td>
<td>Simply an extension which you provide a number of URLs and it surfs to each of them. Other extensions can take other actions, such as collecting information. Maybe there is already something out for this. I haven't checked it - simply an idea.</td>
<td>New?</td>
</tr>
<tr>
<td>url 2 favicon</td>
<td>A web-service, which grabs you the favicon of any URL as assets. Good for listing stuff as you can make lists more visually pleasing. Ideally pre-optimized (width/height and file format). Use file caching as well as long caching headers to avoid constant requests. API for deeper integrations.<br /><br />Interesting input from Thomas, Selvam and Ethan. The service already exists, as part of other major sites such as Google and DuckDuckGo: <a href="https://www.google.com/s2/favicons?domain=indiehackers.com" target="_blank" rel="nofollow noreferer noopener">https://www.google.com/s2/favicons?domain=indiehackers.com</a> and <a href="https://proxy.duckduckgo.com/ip3/producthunt.com.ico" target="_blank" rel="nofollow noreferer noopener">https://proxy.duckduckgo.com/ip3/producthunt.com.ico</a>. Ethan was correctly mentioning, that the favicon is not of much use as the quality is fairly low. He uses the Clearbit API instead: <a href="http://logo.clearbit.com/Google.com" target="_blank" rel="nofollow noreferer noopener">http://logo.clearbit.com/Google.com</a>. The number of logos is more limited than the number of favicons tho.</td>
<td>New?</td>
</tr>
</tbody>
</table>
<p>Wow, you really read the whole list haha. As mentioned, very little is decided by having the idea at the end. It's about putting the hard work in. Once you have decided on a project, you can check the names you come up with on <a href="https://startupnamecheck.com/">startup name check</a> of course! 😍️</p>
Getting Started on Indiehackers2019-06-15T00:00:00Zhttps://peterthaleikis.com/posts/getting-started-on-indiehackers/<p>Not too long ago (around a year), I started out in the maker space. Back then I've just discovered <a href="https://producthunt.com/">ProductHunt</a> and <a href="https://indiehackers.com/">IndieHackers</a>. My focus was still on employment and my commitment to a long-running startup. The idea to build small, independent businesses grew slowly on me. Around this time, I've decided to build something and give it a try. I thought <em>"worst-case, I learn something"</em> and started to build <a href="https://startupnamecheck.com/">startup name check</a>. My first, surely not last <a href="https://peterthaleikis.com/tags/side-projects/">side-project</a>.</p>
<blockquote>
<p>I thought "worst-case, I learn something"</p>
</blockquote>
<p>Back then I was lucky and <a href="https://twomakers.io/">Vincent</a> guided me through a lot of things with my <a href="https://peterthaleikis.com/posts/startup-name-check:-experiences-of-the-first-week/">first launch</a>. Thinking back, I would have struggled much more without some guidance. Thank you Vincent! Makers supporting makers is an important part of the indie maker community. I've started giving more back to the maker community. Part of this is my goal to make it easier for new makers to understand the communities and spaces. I'll kick off by sharing how I consider good interaction on IndieHackers.</p>
<h2>Set up a profile and say "Hello World"</h2>
<p>As in any community you join, you should get started by setting yourself up. Upload a decent profile picture and put some words on your page. Share what you are interested in or worked on. If you already got a website put the link on your profile too. Don't forget to link to your Twitter and other profiles. You could be surprised what number of profile clicks you can get.</p>
<h2>It’s more important to be kind than clever</h2>
<p>We are all just humans and should let kindness rule our interaction with each other. Same goes for IndieHackers (IH). Many people working hard to build something. Make sure to treat everyone with kindness, respect, and a positive attitude. When you share your experiences or feedback make sure to keep in mind that other one might have invested a lot of time and energy into this.</p>
<blockquote>
<p>It’s more important to be kind than clever</p>
</blockquote>
<h2>Help out</h2>
<p>As in any community, helping hands are always welcome. Answer questions and help out with marketing. Most makers are very happy to see tweets featuring their projects 🐦️ Make sure to tag him or her in the tweet — your both will get more exposure.</p>
<p>If you read a conversation and have something useful to share, go ahead and jump into the conversation. Everyone is happy with more well-thought feedback and critic.</p>
<h2>Find the link for it and share it</h2>
<p>You are on the world wide web. People leave links to other blogs or websites to make it easier for others to look for the information they need. For instance, if you just read a useful blog post and think it might help the asker on IH, leave a link to it. The link will take the members directly to the source instead of searching for it on the internet. This increases the popularity of the source as a reference you can trust.</p>
<h2>Ask good questions</h2>
<p>Your questions should be very specific. Generic questions get generic answers. If you need help with a certain topic or seek feedback, make sure you describe what you already know in detail. For example, if you have already tried several ways to do something, mention it. This will prevent others from sharing the same methods or ideas, and they will share different methods, ideas or strategies with you. Your question will be more relevant and your community engagement is better. Besides this, it will save a lot of time for everyone.</p>
<h2>Try to provide value with your posts</h2>
<p>Try to always share some insight or learnings. Make sure to keep your posts updated and relevant. Recurring posts which aren't receiving any attention help no one and feel spammy quickly. It's simply not enough to just paste the link to your project. You will get much more attention towards your post (and project) by sharing the strategy you implemented and the results you achieved. When responding to a feedback request try the same: provide value. If something looks good to you, you might want to share the reasons why. In the same way, if you think something needs to be improved, share details.</p>
<h2>Praise where praise is due.</h2>
<p>If you find a link very useful or got questions share it on IndieHackers (or Twitter) and explain why you like it. Don't forget to tag the author (if on IH). Spend the few extra minutes to find his or her handle. When you tag them, they will get a notification and are likely to check out your post. This is your chance to connect or to get an answer to your question. Their advice will carry much more weight than that of others.</p>
<h2>Worry less: No one will steal your idea</h2>
<p>Now, this might feel wrong, but it's more a misconception: You shouldn't keep your ideas for you alone. If you talk openly about your ideas and ask for input at the same time, you will not only get many more ideas but also valuable feedback in return. Chances are very good someone has considered the project idea or launched something similar — both cases give you great chance to learn.</p>
<p>Even if someone decides to "steals" your idea and turns it into a product or service, don't worry. We all have ideas. If your idea is simple enough for anyone to execute, then you don't need to talk about the idea in the first place. You should just go ahead and do it. Execution is key. Many people go as far as saying <em>"Ideas are nothing, execute is all."</em>. There is no need for an NDA for indie projects.</p>
<p>Speaking about ideas, I've actually shared a number of <a href="https://peterthaleikis.com/posts/side-project-ideas-up-for-grabs/">side-project ideas for free</a> &mdash just in case you are interested. These ideas are either my own or openly shared by others. I've written the ideas down in the secret hope someone else builds them, so I can just use the products/services instead of building them myself.</p>
<h2>Celebrate little wins</h2>
<p>Got your first subscriber on YouTube or your first retweet? Celebrate the moment with others and share it on IndieHackers. Same goes even more if you can share some great trick or hack with it — people love to learn how you did it.</p>
<h2>Try the search feature</h2>
<p>On the Internet, the same question is often asked multiple times. We know repetition can cost you lot of time. Therefore, make sure to use the search before posting. You may not want to use the site search only. Google can answer most of your questions. A few minutes on Google (or DuckDuckGo) can answer most questions.</p>
<h2>Don't forget to upvote!</h2>
<p>Even if you don't know the answer to a question you come across on IH, do hit upvote. This can help make sure the question gets the attention of other members who may answer have useful answers.</p>
<h2>New to the indie hacker space?</h2>
<p>It's great to see new faces showing up and working on figuring our their path to success. If that's you, you might be interested in my <a href="https://peterthaleikis.com/business-idea-validation">deep dive into business idea validation</a>. Please let me know if you got any questions.</p>
<h2>Disclaimer</h2>
<p>I've got no affiliation with IndieHackers, besides <a href="https://www.indiehackers.com/spekulatius/">my regular user account</a> and the listed product of my projects.</p>
Project #4: SEO Tool Extension2019-06-20T00:00:00Zhttps://peterthaleikis.com/posts/project-4:-seo-tool-extension/<p>As part of my journey to become permanently independent from employment and contracting, I need to learn marketing for <a href="https://peterthaleikis.com/tags/side-projects/">my side projects</a>. I think that's inevitable. Not too long ago, I've read "a project is 20% building and 80% marketing" somewhere. As it turns out that is very true. SEO and marketing were the top topics for me and <a href="https://takemeaway.life/category/english/" target="_blank">Treesukondh</a> in the last months.</p>
<p>I'm still considering myself a newbie and soaking up information on all corners. Routinely, this includes checking (my) websites to see what others are doing, making tweaks, waiting and checking again, etc. Many monotonous steps — often on autopilot. We all have these regular clicks and keyboard actions, we are doing too often. Depending on your job or interests, these steps can sum up over a regular day. One of mine is, to copy URLs of websites into SEO-related tools. These can be my websites as well as websites from others. As this got annoying, I've decided to take a break and built a browser extension to make this easier.</p>
<h2>Built on a Sunday morning</h2>
<p>As with <a href="https://randomelon.peterthaleikis.com/" target="_blank">RandomElon</a>, projects don't need a long prep-phase or even a proper plan. This is especially true if you don't intent to make any money from it. Often the small things, built for yourself are more neat than big planned projects. Let's see if anyone finds it as useful as me and wants to have it 🤔️</p>
<p>Now you can access deep links into the several SEO-related searches and services directly, with one click 😊️</p>
<p><img title="SEO Tool Extension Preview" src="https://peterthaleikis.com/static/images/Project-4-SEO-Tool-Extension/preview-of-the-seo-tool-extension-min.png" style="max-width: 250px;" /></p>
<h2>Currently support tools:</h2>
<p>The following tools and services are supported at the moment:</p>
<ul>
<li>
<p>Backlinks can be analysed using Ahref, Majestic, MOZ and SemRush.</p>
</li>
<li>
<p>Content can be checked using Siteliner, SimilarWeb, BuzzSumo and UberSuggest.</p>
</li>
<li>
<p>For general tests PageSpeed by Google, SecurityHeaders.io as well as Google's 'Structured Data' and 'Mobile Friendly' Tools are supported.</p>
</li>
<li>
<p>Deeplinks into the Google Index, Google Cache as well as to Archive.org for the Host and URL are available.</p>
</li>
</ul>
<p>If you think an important tool is missing please get in touch 🙏️</p>
<h2>What did you build it with?</h2>
<p>The extension itself was built with</p>
<ul>
<li>
<p>HTML, CSS and JavaScript (all Vanilla). The whole browser extension is fairly small and doesn't require any framework or library.</p>
</li>
<li>
<p>Laravel Mix as inexhaustible helper to bundle everything together 🤖️</p>
</li>
</ul>
<p>The website for the SEO Tool extension was built using</p>
<ul>
<li>
<p><a href="https://peterthaleikis.com/tags/pugjs/">Pug</a> for the generation of the HTML. This could have been kept out, but I've opted to keep it consistent with the <a href="https://whichlogin.com/">WhichLogin.com</a> website stack. This comes also from knowing myself: Often I'm adding more content pages in later on (Help, Contact, etc.).</p>
</li>
<li>
<p>Vanilla CSS to layout the website and make the buttons brown 😁️ If you wonder why the buttons are brown, keep on reading.</p>
</li>
<li>
<p>No JavaScript yet — but if any JavaScript will be added most like it would be VanillaJS.</p>
</li>
</ul>
<blockquote>
<p>No blockchain, crypto magic or special sauce. Just some bytes in a halfway decent order.</p>
</blockquote>
<h2>Why is the website brown?</h2>
<p>As you can see, I'm not a designer. My design skills end at using the color wheel and some other tools. Royalty free images and illustrations are a blessing for me. For the SEO Tool extension I have found a toolkit icon on Pixabay I liked. So I decided to go with a rather uncommon color: brown 💩️</p>
<h2>Thanks 🙏️</h2>
<p>Special thanks for <a href="https://takemeaway.life/category/english/" target="_blank">Treesukondh</a>, who prepare advised me building it and prepared the graphics for the ProductHunt launch, etc.</p>
<p>Thank you also to <a href="https://pixabay.com/users/BedexpStock-6161331/" target="_blank" rel="nofollow">Bedexp Stock</a> on Pixabay, for providing the icon for the SEO Tool extension.</p>
<h2>Update</h2>
<p>The project has been sold 🤑️ and heavily reworked. It is much more powerful now. But the Firefox support has also been dropped along the way. The old extension is still up on the Firefox addons store, but the updates probably won't come to to the fox 🦊️ Here are more <a href="https://browserextension.dev/seo-chrome-extensions/">⌨️ SEO browser extensions</a> for your convenience.</p>
Neat Indie Projects No. 12019-06-23T00:00:00Zhttps://peterthaleikis.com/posts/neat-indie-projects-no.-1/<h2>Intro</h2>
<p>As an indie maker, I suffer from the same issue as many other makers: I can't do marketing. I struggle to market <a href="https://peterthaleikis.com/tags/side-projects/">my side-projects</a> and earn money on my indie work. I see and hear this in many conversations in the indiehacker space. To help a little, I want to talk a bit about some neat indie projects I've discovered recently. Here we go:</p>
<h3>“Time Well Spent“ — see pricing as working hours.</h3>
<p>See prices not in $, see them displayed in the hours. Working hours needed, to earn this amount. Works on many major websites, such as Amazon & eBay. Available as Chrome extension only atm. Check the <a href="https://chrome.google.com/webstore/detail/time-well-spent-%E2%80%94-see-pri/fagkeimkebmhbeelogmpfpcfdiamhpoa" target="_blank" rel="noopener noreferrer">Chrome extension 'Time Well Spent'</a> by Greg Greiner.</p>
<h3>“AskBlocker“ — Stop permission requests in your browser</h3>
<p>Too many websites request permissions such as for push notification by default. I'm by far no fan of this practice and found <a href="https://chrome.google.com/webstore/detail/askblocker/eelfgnmggfgncoipinopobfcabnfknho" target="_blank" rel="noopener noreferrer">AskBlocker</a> (<a href="https://addons.mozilla.org/en-GB/firefox/addon/askblocker/" target="_blank" rel="noopener noreferrer" title="AskBlocker for Firefox">Firefox</a>) as a solution. It's a simple browser extension blocking requests and allowing you management requests (by allowing and reloading). The extension was built by <a href="https://adamlynch.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Adam Lynch</a> and is available as an <a href="https://github.com/adam-lynch/askblocker" target="_blank" rel="noopener noreferrer">open source library</a>.</p>
<h3>“CostMe“ — How Much Payment Providers Actually Cost You?</h3>
<p>Are you regretting your initial choice of a payment provider for your SaaS or side-project and want to see what the options are? Or do you plan to start a new project using direct payments as a way of monetization? Check <a href="https://fauz.io/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Fauzi Abdillah</a> project to <a href="https://costme.fauz.io/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">compare payment provider costs</a>!</p>
<h3>“FullHelp“ — self-hosted help-desk and knowledge-base software</h3>
<p>Does your side-project, SaaS, or community require a comprehensive help section? <a href="https://fullhelp.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">FullHelp</a> by <a href="https://www.producthunt.com/@gerardojbaez" target="_blank" rel="noopener noreferrer">Gerardo J. Báez</a> allows you to self-host a help-desk and linked knowledge base application. Allowing you and your team to time to focus on what's important and not handling Login questions every day. The license fee includes updates and enhancements for one year and can be renewed at a discounted price.</p>
<h3>“RecordScreen“ — Record your screen right from the browser.</h3>
<p>A simple online-tool to <a href="https://recordscreen.io/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">take screencasts in your browser</a>, no installation required at all. Just click "Record", then "Start Recording" and grant the permission. That's all you need. You can also record your screen and webcam at the same time to produce explainer or review videos. By <a href="https://asadmemon.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Asad Memon</a> and <a href="https://munirusman.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Munir Usman</a>.</p>
<h3>“Enso OS“ — an alternative to Elementary OS</h3>
<p>I'm a big fan of Linux. Using it since before 2k when everything was ugly and many things didn't work 😂️ Luckily, these days are past. More great Linux distributions are released now than before. <a href="https://enso-os.site/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Enso OS</a> is one of these.</p>
<p>Some tech stuff, if you're interested in this: Enso OS is a custom build on top of Ubuntu 16.04 (LTS - Xenial). It uses Xfce as a desktop manager. Besides this, Enso also has integrated the Gala window manager (from the elementary project) as well as the Panther Launcher (a Slingshot-fork). The 'simplest dock on the planet' Plank comes into action as well.</p>
<p><a href="https://twitter.com/Nick_Wilkins" target="_blank" rel="noopener noreferrer">Nick Wilkins</a> has also open-sourced the project. It's waiting for more contributions & bug reports at the moment. The source code is hosted on <a href="https://github.com/nick92/Enso-OS" target="_blank" rel="noopener noreferrer">GitHub</a>, if you'd like to check it out. Please consider supporting the project with <a href="https://twitter.com/intent/tweet?text=I%27ve%20just%20found%20this%20neat%20Linux%20distro%3A%20enso-os.site%20by%20@Nick_Wilkins&via=spekulatius1984" target="_blank" rel="noopener noreferrer">a Tweet</a> or downloading & trying it out 🙏️</p>
<h3>“Pushfolio“ — create pop-ups messages with just a few lines of JavaScript</h3>
<p><a href="https://www.pushfol.io/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Pushfolio</a> is a solution for those who don't want a complex tool like Intercom. If you just want to display some decent pop-ups to convert people, this is what you should look at.</p>
<p>It's basically a JavaScript library you can include on your website. It allows you to define and trigger popups using code. The aim to convert more visitors to users. In the basic version, it's free and one-time pay $9 plan is supporting the maker <a href="http://www.dannypostma.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Danny Postma</a> through the darkness of the night 😀️</p>
<h2>Update (07/07/2019): Later editions</h2>
<p>The series developed a little and here are some more lists of similar nature: <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-2/" title="Second list of neat indie side-projects, open-source projects and businesses">second list of side projects</a> and <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-3/" title="Third listing of neat independent side-projects and open source libraries">third list of side projects</a>.</p>
<h2>Final thoughts</h2>
<p>If you liked any of these projects share and talk about them please 🙏️ As far as I can see, the indie-hackers behind these projects could use some more publicity for their work. Every little tweet helps. If you want to support all, you can also share this list on <a href="https://twitter.com/intent/tweet?text=Neat%20Indie%20Projects%20No.%201%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fposts%2Fneat-indie-projects-no.-1%2F&via=spekulatius1984" target="_blank" rel="noopener noreferrer">Twitter</a> or <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/posts/neat-indie-projects-no.-1/" target="_blank" rel="noopener noreferrer">Facebook</a>.</p>
<p>Cover photo by <a href="https://www.ashwinvaswani.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Ashwin Vaswani</a> via Unsplash. Thank you for sharing great images!</p>
How to Insert Jump Anchors on Headings with PugJS2019-06-25T00:00:00Zhttps://peterthaleikis.com/posts/how-to-insert-jump-anchors-on-headings-with-pugjs/<p>I'm definitely a fan of cats 😺️ in real life, but when it comes to code this reverses and I've got a preference for Pug 🐶️ For those who aren't coders: PugJS is a JavaScript template engine. It converts Pug-lang into HTML. I know there is more power in PugJS, besides the simple turning the Pug-lang into HTML. At the moment I'm not using the potential of the language - I use PugJS mostly to hold my content. Let's look at some ways to get more out of Pug I've learned about recently.</p>
<p>If you are using Pug on your static-site you can:</p>
<ul>
<li>Use variables to set content and attributes across your site or application.</li>
<li>Declare Mixins to define HTML tags, attributes, and more. More about this later.</li>
<li>Freely componentize your project files using inheritance and includes. This allows you to build up a project structure you like. I like to keep the same structure as the related SCSS files - just avoiding unneeded complexity in the project.</li>
<li>You can have conditional content <i>without</i> client-side JavaScript. A simple example could be:
<pre><code class="language-Pug">- var promo_is_live = false;
if promo_is_live
h2 Special deal!
p Get our super special promotional offer!
p.price Only $9.99
else
p.price Only $19.99
</code></pre>
<p>This content will be dynamically-included on each compile of the HTML output, depending on the variable <code>promo_is_live</code>. If you switch the flag to false, any related content won't be included in the output at all.</p>
<p>This keeps your site clean and tidy, avoids exposure of time-sensitive information (such as the annual Christmas promotion) and at the same time avoids the need to manually add and remove code for promotions and temporary content every time. Avoiding hidden content can be useful if you’re aiming to optimize your site for search engines as well.</p>
</li>
</ul>
<p>Pug is a powerful template engine and a read over the <a href="https://pugjs.org/language/attributes.html">language reference</a> is good for some <em>"Ahhh, neat"</em>-moments! Below, you will find a useful mixin-example applicable for daily coding.</p>
<h2>An example: Adding dynamic anchors to headings using Pug-Mixins</h2>
<p>Often you might want an <code>id</code> to allow you to jump directly to a certain part of the document. For me, these are usually headings. The heading above <em>"An example: Adding dynamic anchors to headings using Pug"</em>, I would write</p>
<pre><code class="language-Pug">h2(id="an-example-adding-dynamic-anchors-to-headings-using-Pug").
An example: Adding dynamic anchors to headings using Pug
</code></pre>
<p>This triggers me, as it's error-prone, overhead to read as developer and overhead to maintain. Wouldn't it be nicer if you could avoid the double content and could instead generate the slug out of the heading on the fly? With Pug you can:</p>
<pre><code class="language-Pug">mixin h2(headline)
- let id = headline.toLowerCase().replaceAll(' ', '-').replace(/[!\"#$%&'\(\)\*\+,\.\/:;<=>\?\@\[\\\]\^`\{\|\}~]/g, '');
h2(id= id)
= headline
</code></pre>
<p>With this little helper Pug-mixin you can just write</p>
<pre><code class="language-Pug">+h2('An example: Adding dynamic anchors to headings using Pug')
</code></pre>
<p>and it will be processed to</p>
<pre><code class="language-HTML"><h2 id="an-example-adding-dynamic-anchors-to-headings-using-Pug">
An example: Adding dynamic anchors to headings using Pug
</h2>
</code></pre>
<p>Isn't this a much better developer-experience? :)</p>
<h2>Taking it one step further</h2>
<p>You can also make the heading level a parameter handed over to the mixin.</p>
<pre><code class="language-Pug">mixin h(level, headline)
- let id = headline.toLowerCase().replace(' ', '-').replace(/[!\"#$%&'\(\)\*\+,\.\/:;<=>\?\@\[\\\]\^`\{\|\}~]/g, '');
section(id= id)
#{'h' + level}= headline
if block
block
</code></pre>
<p>Allows you to write the following Pug-code</p>
<pre><code class="language-Pug">+h(2, 'Section A')
+h(2, 'Section B')
p Lorem ipsum dolor amit
+h(2, 'Section C')
p Lorem ipsum dolor amit
+h(3, 'Section C, Subsection A')
p Lorem ipsum dolor amit
</code></pre>
<p>will be compiled to the HTML shown below</p>
<pre><code class="language-HTML"><section id="section-a">
<h2>Section A</h2>
</section>
<section id="section-b">
<h2>Section B</h2>
<p>Lorem ipsum dolor amit</p>
</section>
<section id="section-c">
<h2>Section C</h2>
<p>Lorem ipsum dolor amit</p>
<section id="section-c-subsection-a">
<h3>Section C, Subsection A</h3>
<p>Lorem ipsum dolor amit</p>
</section>
</section>
</code></pre>
<p>This allows you to define any level of heading dynamically, on the fly.</p>
<h2>Summary and Source</h2>
<p>As mentioned above, the language can do more. Mixins are only one powerful side of PugJS. Have a look at the language reference for more information. By the way, if you are a fan of Netlify too I have good news for you. Of course, you can use <a href="https://peterthaleikis.com/posts/how-to-use-pug-on-netlify/">Pug with your Netlify-hosted website</a>.</p>
<p>Praise where praise is due: Thanks to the Pug maintainers for their great work. I have to say "Thank you" to Sean who pointed me to the possibilities <a href="https://stackoverflow.com/questions/56538582/is-it-possible-to-generate-anchor-for-each-heading-in-Pug/56565423#56565423" target="_blank" rel="nofollow">answering my question on Stackoverflow</a> as well.</p>
Neat Indie Projects No. 22019-06-30T00:00:00Zhttps://peterthaleikis.com/posts/neat-indie-projects-no.-2/<h2>Intro</h2>
<p>Following last weeks <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-1/">“first edition“ of neat indie projects</a> here are some more interesting indie projects. I've discovered these projects in the last week mostly. If you got any feedback for the list or want to leave the makers behind the project a comment reply to this <a href="https://twitter.com/spekulatius1984/status/1145240635105898496">tweet</a> please. Let's get started:</p>
<h3>“TrackThis.Link“ — Mess around with analytics data</h3>
<p>Don't like being tracked around the web? Sick off having everything tailored to look nice to you? Firefox has built something for you: <a href="https://trackthis.link/?ref=PeterThaleikis.com">TrackThis.Link</a> — a site opening sets of sites aiming to distract the trackers. By messing with the collected data you can add a little salt to their soup. Thanks to <a href="https://www.mschf.xyz/?ref=PeterThaleikis.com">Daniel Greenberg</a> for building this!</p>
<h3>Data nerds should check out “kyso“!</h3>
<p>I'm easily excited when seeing interesting and well-presented statistics and data-sets. You could think I'm a bit a data nerd. <a href="https://kyso.io/?ref=PeterThaleikis.com">Kyso</a> is presenting user-submitted data sets from different sources in a visually pleasing way. Usually, these presentations contain charts and some context to analyze the data. For example, the <a href="https://kyso.io/eoin/product-hunt?ref=PeterThaleikis.com">“Product Hunt Voting Distributions“</a> is an interesting data set for indie hackers. It would be great if you could suggest and discuss data-sets / research ideas on a public board on the site.</p>
<p>By <a href="https://eoinmurray.eu/?ref=PeterThaleikis.com">Eoin Murray</a>, <a href="https://twitter.com/helenadm">Helena Domo</a>, and <a href="https://twitter.com/KyleOS92">Kyle O'Shea</a>.</p>
<h3>“Darkmode.js“ — Darkmode as a JavaScript Library</h3>
<p>Want to add dark-mode on your website, but can't be bothered defining (and maintaining) more CSS? You don't need to if you using a blend-mode. If you interested in the details check this blog post I've found a few weeks ago already: <a href="https://dev.wgao19.cc/sun-moon-blending-mode/">“Night Mode with Mix Blend Mode: Difference“</a>.</p>
<p>The library is open source <a href="https://github.com/sandoche/Darkmode.js" target="_blank" rel="noopener noreferrer">github.com/sandoche/Darkmode.js</a> and can be included using a <a href="https://github.com/sandoche/Darkmode.js#-how-to-use" target="_blank" rel="noopener noreferrer">little JS snippet</a> only.</p>
<p>You can see some examples on <a href="https://tradivegan.com/?ref=PeterThaleikis.com">tradivegan.com</a>, <a href="https://what.toeat.in/?ref=PeterThaleikis.com">what to eat in</a> and on the developer's website <a href="https://www.sandoche.com/?ref=PeterThaleikis.com">sandoche.com</a> of course.</p>
<h3>Getting notifications under control with “notyfy“</h3>
<p>Notifications can be annoying, but they can also be useful to keep track of conversations and posts. Unfortunately, too many companies use notifications to pull you back onto their websites and drag you to their addictive, infinite-scroll timelines. Costing you mental bandwidth every time you just want to read a message.</p>
<p><a href="https://notyfy.co/?ref=PeterThaleikis.com">Notyfy</a> by <a href="https://twitter.com/zwacky">Simon</a> allows you to see and manage the notifications from multiple sites aggregated in one place. All information is displayed in your browser instead of another website. You can click through to the content you getting notified about. At the moment Facebook, Reddit, Gmail, StackOverflow, Medium, Quora and LinkedIn are supported. Marking notifications as read works on Facebook, Reddit, and Gmail only for now. More sites and features are in work.</p>
<h3>Confused by all the details in Google Analytics? Check out “FlatGA“</h3>
<p>Google Analytics is as powerful as it's confusing. Information overload from start to end with numerous charts, reports, and many tables. Especially if you are running your first website and want to learn more the overload can be challenging.</p>
<p><a href="https://kambanthemaker.com/?ref=PeterThaleikis.com">Kamban the maker</a> has built a neat tool for exactly this case: <a href="https://flatga.io/?ref=PeterThaleikis.com">FlatGA — a simple dashboard for Google Analytics</a>. It started off from own pain to becoming a great tool to get a quick understanding of your visitors. The application connects to your Google Analytics and presents all information in a well-organized dashboard. No information is stored as the data is loaded from Google in real-time.</p>
<h3>“Biscuit“-Browser: A tasty alternative</h3>
<p>As a fan of cookies, I had to look at what this was and it turned out to be an alternative browser. <a href="https://eatbiscuit.com/?ref=PeterThaleikis.com">Biscuit is a privacy-focused browser</a> trying to relieve you from the flood of tabs. Under the hood, it runs Chromium as a browser-engine. The most common tools are listed in a customizable sidebar as well as over a tab menu. Definitely an interesting concept for heavy users. As it's Chromium-based a migration from Chrome should be pain-free. There are several different operating systems supported - find the <a href="https://github.com/agata/dl.biscuit/releases/" target="_blank" rel="noopener noreferrer">Biscuit download here</a>.</p>
<h3>“eyetato“ — Where on my site are my users looking at?</h3>
<p><strong>Update (2020-08-24):</strong> Link removed as the site is offline ✝️</p>
<p>A question many developers have asked themselves before: where do my users look at? What catches the attention of my visitors and users? By nature a tricky question to answer. It has usually been answered using eye-tracking done using a camera filming the users while interacting with your product or visiting your website.</p>
<p>Eyetato by <a href="http://mortenjust.com/?ref=PeterThaleikis.com">Morten Just</a> allows you to get the same information, without actually using eye-tracking software and camera. The heat-map is generated using a machine learning algorithm trained using real eye-tracking data. As it's a prediction, you should use the data carefully. Spending one minute on the <a href="https://www.youtube.com/watch?v=k-mF7mMJnQk" target="_blank" rel="nofollow noopener noreferrer">demo video</a> is definitely worth it.</p>
<h3>Still unsure what colors to use? Check “culrs“!</h3>
<p>We all know, there is no second chance for a first impression. Finding the right color scheme for your project is as important as having the right name. Check <a href="https://culrs.com/?ref=PeterThaleikis.com">culrs.com</a> if you need some inspiration for the right colors for your next side-project. <a href="https://twitter.com/mshra_ji" target="_blank" rel="noopener noreferrer">Rupak Mishra</a> and <a href="https://twitter.com/iamarnob6543" target="_blank" rel="noopener noreferrer">Arnob Mukherjee</a> have curated a lot of different color schemes for you to use.</p>
<h3>“sizzy“ — Resizing your browser during development finally has an end</h3>
<p><a href="https://sizzy.co/?ref=PeterThaleikis.com">sizzy</a> by <a href="https://kitze.io/?ref=PeterThaleikis.com">Kitze</a> is a developer tool (in form of a browser) to allow you viewing your website in a number of resolutions at once. The times when you had to resize your browser constantly or use the mobile mode of your browser one-by-one are over.</p>
<h2>Final thoughts 🙏️</h2>
<p>You can find the following edition of this list of <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-3/">“neat indie projects“ here</a>. The <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-1/">#1 neat indie projects</a> is also available.</p>
<p>Please help these projects with some publicity by sharing this article on <a href="https://twitter.com/intent/tweet?text=Neat%20Indie%20Projects%20No.%202%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fposts%2Fneat-indie-projects-no.-2%2F&via=spekulatius1984" target="_blank" rel="noopener noreferrer">Twitter</a> or <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/posts/neat-indie-projects-no.-2/" target="_blank" rel="noopener noreferrer">Facebook</a> 🙏️</p>
<h2>Other mentions</h2>
<p>Cover photo by <a href="https://www.ashwinvaswani.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Ashwin Vaswani</a> via Unsplash. Thank you for sharing great images!</p>
Neat Indie Projects No. 32019-07-07T00:00:00Zhttps://peterthaleikis.com/posts/neat-indie-projects-no.-3/<h2>Intro</h2>
<p>Here is no. 3! If you haven't read about the previous projects you might find the <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-1/" title="First list of neat indie side-projects">first list of side projects</a> and the <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-2/" title="Second list of neat indie side-projects">second list of side projects</a> of interest.</p>
<p>If you got any feedback for the list or want to leave the makers behind the project a comment reply to this <a href="https://twitter.com/spekulatius1984/status/1147829211090100224">tweet</a>, please. Here we go with some neat side projects and their makers:</p>
<h3>“Ecosia“ — the search-engine that plants trees 🌳️</h3>
<p>Even you might have heard about Ecosia before I still would like to introduce the <a href="https://ecosia.org/?ref=PeterThaleikis.com">search-engine that plants trees</a> as climate change is without a doubt very important. Quite similar to Google, Ecosia provides a search-engine with advertising on the top of their search results. The advertising money earned from the search results doesn't flow to investors though. It flows into selected projects to plant trees and reduce carbon dioxide in the atmosphere. If you can do one little thing to make a positive impact on the environment, switch to Ecosia 🌳️</p>
<p><code>Green</code>, <code>Eco-friendly</code>, <code>Search Engine</code></p>
<h3>“proGramCLI“ — a self-hosted, CLI-based Instagram clone 🤳️</h3>
<p><a href="https://sarthology.github.io/proGramCLI/">proGramCLI</a> is a self-hosted, CLI-based Instagram clone by Sarthak Sharma. Privacy is important and especially when it comes to your close friends and family. A self-hosted version gives you more control over who sees your photos and videos. If you don't want Zuck and friends see everything you share and type this is your way forward. It's naturally open source: <a href="https://github.com/sarthology/proGramCLI" target="_blank" rel="noopener noreferrer">sarthology/proGramCLI</a>.</p>
<p><code>Instagram</code>, <code>Privacy</code>, <code>electron</code>, <code>node</code></p>
<!--
// self-hosted IG clone
https://github.com/sarthology/proGramCLI
https://dev.to/teamxenox/introducing-program-an-open-source-self-hosted-instagram-2fij
-->
<h3>“curlx“ — if cURL and Postman had a baby 👶</h3>
<p>As a developer, I'm often checking if APIs work as expected and serve my purpose. Even there are graphical programs such as Postman, I somehow end up at the command-line often. curl is my tool of choice then. With <a href="https://curlx.dev/?ref=PeterThaleikis.com">curlx</a>, <a href="https://www.shivkanth.com/?ref=PeterThaleikis.com">Shivkanth Bagavathy</a> has built a tool for those who like to explore APIs on their command-line. You can see headers as well as formatted responses directly on your bash. It also comes with a list of previous requests (history) and the option to manage your requests in collections. As to expect, it's <a href="https://github.com/shivkanthb/curlx" target="_blank" rel="noopener noreferrer">open sourced on GitHub</a>.</p>
<p><code>Open source</code>, <code>Command-line</code>, <code>bash</code></p>
<!--
https://github.com/shivkanthb/curlx
https://www.producthunt.com/posts/curlx
https://twitter.com/shivkanthb
-->
<h3>“Wavenet for Chrome“ — syndicate any marked text into sound</h3>
<p><a href="https://chrome.google.com/webstore/detail/wavenet-for-chrome/iefankigbnlnlaolflbcopliocibkffc" target="_blank" rel="noopener noreferrer">Wavenet for Chrome is a browser extension</a> to syndicate any marked text into acoustic output. <a href="https://github.com/pgmichael">Michael Poirier-Ginter</a> has built a tool which could help people with strong reading deficits as well as visually impaired people. The extension is open source, you find the source code on <a href="https://github.com/pgmichael/wavenet-for-chrome">GitHub</a>.</p>
<p>While the extension is free, Google Cloud comes with a small charge. As with most cloud providers, there is a free tier for new customers. Check the Google cloud offerings for details.</p>
<p><code>Open source</code>, <code>Browser Extension</code>, <code>Chrome extension</code></p>
<!--
https://github.com/pgmichael/wavenet-for-chrome
https://www.producthunt.com/posts/wavenet-for-chrome
https://www.producthunt.com/@pgmichael
https://chrome.google.com/webstore/detail/wavenet-for-chrome/iefankigbnlnlaolflbcopliocibkffc
-->
<h3>“lazydocker“ — the lazier way to manage everything Docker</h3>
<p>If you ever used docker you have had your time with the numerous commands and options. Finding out what the current state of your containers is can be annoying as well as challenging when you are new to docker. With <a href="https://github.com/jesseduffield/lazydocker">lazydocker</a> by <a href="https://github.com/jesseduffield">Jesse Duffield</a> this gets easier. It shows you containers, images, volumes, etc. on one screen. By selection with the mouse, you can find out more about the state and resources used. "The lazier way to manage everything docker" says Jesse. He has also published a short <a href="https://www.youtube.com/watch?v=NICqQPxwJWw" target="_blank" rel="noopener noreferrer">video</a> showing the features and functionality.</p>
<p><code>container</code>, <code>serverless</code>, <code>Docker</code>, <code>open source</code></p>
<!--
https://github.com/jesseduffield
https://github.com/jesseduffield/lazydocker
-->
<h3>“Kimai“ — self-hosted, open source invoice management web-app</h3>
<p>Freelancers and entrepreneurs this might be of interest for you. <a href="https://www.kimai.org/?ref=PeterThaleikis.com">Kimai</a> is a web-application to track working-hours, manage clients and projects, and generate invoices. These are only some of the various features it comes with. On the website you can find a complete list of features in version 2. You can find information on how to self-host the application using Docker, 1-click installers and even FTP in the documentation. If you are looking for an alternative to Xero or InvoiceNinja this looks like a good option. The software by <a href="https://www.kevinpapst.de/?ref=PeterThaleikis.com">Kevin Papst</a> is <a href="https://github.com/kevinpapst/kimai2" target="_blank" rel="noopener noreferrer">open source on GitHub</a> and he supports the development with donations.</p>
<p><code>PHP</code>, <code>open source</code>, <code>self-hosted</code>, <code>invoicing system</code></p>
<h2>Final thoughts 🙏️</h2>
<p>As mentioned above, if you haven't seen the previous lists I would recommend having a look. There are some interesting projects included in the <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-1/" title="First list of neat indie side-projects">first list of side projects</a> and the <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-2/" title="Second list of neat indie side-projects">second list of side projects</a>.</p>
<p>Any tweet or mention helps to spread the word. It would be awesome if you could share this article on <a href="https://twitter.com/intent/tweet?text=Neat%20Indie%20Projects%20No.%203%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fposts%2Fneat-indie-projects-no.-3%2F&via=spekulatius1984" target="_blank" rel="noopener noreferrer">Twitter</a> or <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/posts/neat-indie-projects-no.-3/" target="_blank" rel="noopener noreferrer">Facebook</a> 🙏️</p>
<h2>Other mentions</h2>
<p>The mighty tree on the cover photo was taken by <a href="https://unsplash.com/@niko_photos" target="_blank" rel="noopener noreferrer">Niko</a> in Nicaragua.</p>
Neat Side Projects No. 42019-07-14T00:00:00Zhttps://peterthaleikis.com/posts/neat-side-projects-no.-4/<h2>Intro</h2>
<p>Today's edition will be briefer as I'm on a visa-run in Penang (Malaysia). I'm actually writing this from the public bus to the airport. I still got more than enough interesting side projects for you to check out. This time with these projects:</p>
<ul>
<li>Is my website ready for launching? Find out with websitelaunchchecklist.com</li>
<li>“Close my tabs“ to manage your tabs smarter</li>
<li>“metomic“ - a smart GDPR consent manager</li>
<li>“NetflixHangouts“ to watch Netlify at work</li>
<li>See how you move around your town using your Google data</li>
<li>Read faster with this</li>
<li>Open source library to securely share files</li>
</ul>
<p>As every week: if you got any feedback please get <a href="https://peterthaleikis.com/contact/">in touch</a>. Let's get started with some neat side-projects:</p>
<h3>Make sure your website is ready to launch with websitelaunchchecklist.com</h3>
<p>Planning on launching a new site soon? Check you <a href="https://websitelaunchchecklist.com/?ref=peterthaleikis.com">WebsiteLaunchChecklist.com</a> for the top things you should tick off before you launching officially. You can tick off the items on the website and clear your data later for the next project. By <a href="https://boag.online/?ref=PeterThaleikis.com">Fraser Boag</a>.</p>
<p><code>Ready to launch?</code>, <code>Checklist</code></p>
<h3>Drowning in tabs? “Close my tabs“ can help!</h3>
<p>Having too much going on in your browser and getting unproductive over the number of open tabs? “<a href="https://www.producthunt.com/posts/close-my-tabs">Close my tabs</a>“ by <a href="https://kambanthemaker.com/?ref=PeterThaleikis.com">Kamban the Maker</a> can help you to get it back under control. It allows you to select and close tabs by the last-access time.</p>
<p><code>Productivity</code>, <code>Browser extension</code></p>
<h3>“metomic“ - A smart GDPR consent manager</h3>
<p>I'm sure everyone has seen the cookie warnings and banners on several occasions. Richard Vibert and his team have built a smart consent manager for websites. You add a piece of JavaScript and it tracks cookies and lets people decide if they like to accept it or now. You can get started under <a href="https://landing.metomic.io/?ref=PeterThaleikis.com">https://landing.metomic.io</a>.</p>
<p><code>GDPR</code>, <code>consent management</code></p>
<h3>Watching Netflix at work? Check “NetflixHangouts“</h3>
<p>Stuck in 9-5 and can't get out? <a href="https://netflixhangouts.com/?ref=PeterThaleikis.com">NetflixHangouts.com</a> changes the looks of your Netflix into a site looking like a Google Hangouts meeting call.</p>
<p><code>Netlify</code>, <code>Hangouts</code></p>
<h3>See how you move around your town using your Google data</h3>
<p><a href="https://jacopofarina.eu/?ref=PeterThaleikis.com">Jacopo Farina</a> has built a side-project to visualize your location data as a heatmap. The data used is coming from what Google already collected about you. This requires to be tech-savvy and basic knowledge of Python doesn't hurt. The project source code is licensed as open source and can be found on GitHub under <a href="https://github.com/jacopofar/location-data-to-heatmap">jacopofar/location-data-to-heatmap</a>.</p>
<p><code>Location data</code>, <code>Mapping</code>, <code>Open Source</code></p>
<h3>Read faster</h3>
<p>If you just start out with reading it can be time-consuming. Even many seasoned readers are able to increase their reading speed by leaving out words or jumping sentences. One of the more simple methods is jumping from word to word faster. By displaying only one word at the time, giving it a predefined time and jumping to the next word automatically you can increase your reading speed significantly. This what <a href="http://readshitfaster.com/?ref=PeterThaleikis.com">read shit faster</a> by <a href="https://twitter.com/sakofchit">Sakun</a> does. You paste any text, set your speed and off you got to read the text at a much faster pace. It might take a few tries to get the pace right, but definitely worth a try, if you are reading a quite a bit. There is also an <a href="https://chrome.google.com/webstore/detail/read-shit-faster/hgbjcpbdcekffgenjkfleejmpgaaleij">extension for Chrome available</a> by now.</p>
<p><code>Productivity</code>, <code>Reading</code></p>
<h3>File sharing for devs</h3>
<p>Have you got asked for a screenshot or the latest version of that file again? Emailing files or sending them via a messenger was a constant task before Google Docs. By now the issue is less painful, but the basic problem remains: how do I send a file fast and temporary without going to a website and uploading it manually? <a href="https://github.com/schollz/share">“Share“</a> by <a href="https://schollz.com/?ref=PeterThaleikis.com">Zack Scholl</a> is an open source library which allows you to securely share files directly from your command line. After installation simply run <code>share filename.abc</code> and get a download link directly, without accessing any websites. Files are kept depending on the file size — the larger the file the short it will be kept. Paths are permanent as the file hash is used as URL.</p>
<p><code>File Sharing</code>, <code>Developer Tools</code></p>
<h3>Are your browser extensions safe?</h3>
<p>Browser extensions have by nature more access to your data. Often the permissions are granted without much thinking and malicious extensions might end up collecting and sending your personal data off. To avoid this you use <a href="https://extensionmonitor.com/?ref=PeterThaleikis">extension monitor</a> to keep an eye on the extensions and weed out bad extensions quicker. More details can be found in this <a href="https://extensionmonitor.com/blog/introducing-extension-monitor?ref=PeterThaleikis.com">blog post</a>. It's a platform providing you a background screening of installed extensions. Currently, the aim seems more big companies and government organizations but a customer-focused version of this project would be great.</p>
<p><code>Browser Extensions</code>, <code>Privacy</code>, <code>Security</code></p>
<h2>Closing words</h2>
<p>If you like this collection of side-projects you might also like the previous three editions:</p>
<ul>
<li><a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-1/">Neat Indie Projects No. 1</a></li>
<li><a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-2/">Neat Indie Projects No. 2</a></li>
<li><a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-3/">Neat Indie Projects No. 3</a></li>
</ul>
<p>As usual, I'd be very happy if you share any project mentioned with others who might be interested. Same goes naturally for this collection itself. Here are some handy links for <a href="https://twitter.com/intent/tweet?text=Neat%20Side%20Projects%20No.%204%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fposts%2Fneat-side-projects-no.-4%2F&via=spekulatius1984" target="_blank" rel="noopener noreferrer">Twitter</a> and <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/posts/neat-side-projects-no.-4/" target="_blank" rel="noopener noreferrer">Facebook</a> if you like to share this post 🙏️</p>
<p>Same as the first and second edition the cover photo was shot by <a href="https://www.ashwinvaswani.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Ashwin Vaswani</a>. It's available via Unsplash. Thank you!</p>
Neat Side Projects No. 52019-07-21T00:00:00Zhttps://peterthaleikis.com/posts/neat-side-projects-no.-5/<h2>Intro</h2>
<p>With starting this list I've begun to collect more and more ideas. Whenever I find something interesting I put it in my notes and select some interesting side project ideas and projects</p>
<ul>
<li>Help others accessing the Tor Network using the “Snowflake“ extension</li>
<li>Make your website faster by pre-fetching content while idling</li>
<li>Do keywords research where you search — on your search engine</li>
<li>Make your website screenshots look like a browser for free</li>
<li>Tell your story in form of a comic</li>
<li>Earn money with users solving captchas</li>
</ul>
<p>As every week: if you got any feedback please get <a href="https://peterthaleikis.com/contact/">in touch</a>. Let's get started with some neat side-projects:</p>
<h3>Help others accessing the Tor Network using the “Snowflake“ extension</h3>
<p>The Tor Project has published an extension which allows you to use <a href="https://chrome.google.com/webstore/detail/snowflake/mafpmfcccpbjnhfhjnllmmalhifmlcie">your browser as a Tor-node called “Snowflake“</a>. This way you can share your (hopefully) less censored internet access with people in countries which have only a strongly censored internet access. You don't need to worry about things others do as your browser will not become an exit-node. It becomes only a regular node. The extension can be turned on and off easily and shows some stats as well.</p>
<p>This extension isn't a tool to access the internet freely, it's for contributors to the network. To access the internet freely without censorship you need to use the <a href="https://www.torproject.org/download">Tor Browser</a>.</p>
<h3>Make your website faster by pre-fetching content while the browser is idle</h3>
<p><a href="https://github.com/GoogleChromeLabs/quicklink">QuickLink</a> is a library published and maintained by Google's Chrome Labs. It allows you to pre-fetch content while the browser is idle. Links in viewport are pre-fetched, if the user isn't on a slow internet connections or data-saver mode on. The library is very small with less than 1 KB file size. More information on the options and required installation steps are on the GitHub repo linked at the beginning.</p>
<h3>Do keywords research where you search</h3>
<p>I've started learning more about SEO a while ago. It's tricky at times, as you can't verify your results immediately. But decent information definitely helps along the way. Yesterday, I've stumbled across <a href="https://keywordseverywhere.com/">Keywords Everywhere</a>. It's a Firefox & Chrome extension showing you keyword volumes while searching as well as alternatives in a box next to your search results. Pretty handy, if you are planning to write an article and want to know if there is an alternative word or phrase for something and you end up discovering even more keywords and ideas.</p>
<p>Update (2019-12-11): This project is now a paid service. The keyword data itself is still free, but the volume information is only provided once you purchased credits.</p>
<h3>Make your website screenshots look like a browser for free using “BrowserFrame“</h3>
<p><a href="https://browserframe.com/" target="_blank">BrowserFrame.com</a> is a free online tool to wrap your screenshots or URLs into browser-frames. This way, you can explain your SaaS or websites better on websites or in PDFs.</p>
<h3>Tell your story in form of a comic using “StoryTeller“</h3>
<p>Communicating your side project idea can be challenging. No one likes websites filled with lots of texts. Visual elements are the way to go. Most people opt for an explainer video to explain more complex topics, but this wave seems to slow down.</p>
<p>An interesting alternative might be the <a href="https://storyteller.launchaco.com/">“StoryTeller“</a> tool. It allows you to create a comic based on uploaded images and add speech bubbles to tell your story. The project is in pre-launch, but it might be worth to follow if you are planning to launch a new project soon.</p>
<h3>Earn money with Captchas</h3>
<p>Every day we select traffic lights, motorbikes and more for Google. The benefit for the webmasters are a verification that the accessing computer is controlled by an actual human. The bigger benefits arises for Google: labeling their photos for AI and machine learning. In a nutshell: We are doing unpaid work for Google.</p>
<p>Why not using this work done by users on your website to label data for paying clients? This is the approach <a href="https://www.hcaptcha.com/">hCaptcha</a> is taking. You can drop in hcaptcha as a replacement for the Recaptcha service and earn money by solving captchas. Machine learning companies can get their sets labeled easier and you as webmaster have another revenue source.</p>
<h2>Closing words</h2>
<p>If you like this collection of side-projects you might also like the previous editions: <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-1/">Neat Side Projects No. 1</a>, <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-2/">Neat Side Projects No. 2</a>, <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-3/">Neat Side Projects No. 3</a> and <a href="https://peterthaleikis.com/posts/neat-side-projects-no.-4/">Neat Side Projects No. 4</a>. You can also find all my side project related posts under <a href="https://peterthaleikis.com/tags/side-projects/">side-projects</a>.</p>
<p>If you like to help these makers share and talk about their side-projects. You can also share this side-project list on <a href="https://twitter.com/intent/tweet?text=Neat%20Side%20Projects%20No.%205%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fposts%2Fneat-side-projects-no.-5%2F&via=spekulatius1984" target="_blank" rel="noopener noreferrer">Twitter</a> or <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/posts/neat-side-projects-no.-5/" target="_blank" rel="noopener noreferrer">Facebook</a> if you want 🙏️</p>
<p>The cover photo was shot by <a href="https://www.ashwinvaswani.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Ashwin Vaswani</a>. It's available on Unsplash. Thank you!</p>
Neat Side Projects No. 62019-07-28T00:00:00Zhttps://peterthaleikis.com/posts/neat-side-projects-no.-6/<h2>Intro</h2>
<p>This weeks edition is a bit shorter as I'm preparing to go to Europe in a few days. The upcoming trip will probably require some more flexibility on the publishing side of this weekly side-project list. I haven't planned everything through so I'm not sure how it will work out. Naturally, there are also other responsibilities along I need to keep up with.</p>
<ul>
<li>Devlids is collecting art-work from developer laptops</li>
<li>“No CS Degree“: Interviews with people, who got into IT without a computer science degree</li>
<li>Stylish and informative status-pages with supstatus.com</li>
<li>Jump into writing straight away with “New Tab Draft“</li>
<li>“Cube.JS“ is using a different approach to visualizing data</li>
<li>“Desktop“ is a desktop client for GitHub</li>
</ul>
<p>To share any feedback please get <a href="https://peterthaleikis.com/contact/">in touch</a>. Let's get started with some neat side-projects:</p>
<h3>Devlids is a project collecting art-work from dev-laptops</h3>
<p>Many people working in IT decorate their laptops with stickers they get at meetups and conferences. These stickers range from funny works of art, icons, emojis to known project they either prefer to work with or are simply "sexy". Developers are known to decorate. <a href="https://devlids.com/?ref=peterthaleikis.com">Devlids</a> is collecting these sticker-collections. You can browse through and see whos laptop is behind each of them. If you like to, you can also submit your laptop lid to the collection.</p>
<h3>Interviews with people who got into IT without a computer science degree</h3>
<p>Engineering jobs don't need a degree really. More than a degree, it needs commitment and love to what you are doing. That holds up for many jobs (but not all). As more and more companies realize this they drop their requirement to have an engineering or computer science degree for their jobs. This opens the doors for many self-taught developers like myself. <a href="https://twitter.com/petecodes">Pete</a> has started <a href="https://www.nocsdegree.com/?ref=PeterThaleikis.com">“No CS Degree“</a>. It's a website featuring the stories of self-taught developers.</p>
<h3>Don't want to be unprepared in case your site goes down? Check supstatus.com!</h3>
<p>Many things can take your website down, some are in your power to address while others aren't. In either case, if you are running a professional website you want to prepared. Why? Quite simply: When your site goes down your visitors and users will turn to Google and find websites where people talk about your website being offline, speculate reasons and more. You want to have an authority place to communicate what is going on. Naturally, you need to communicate and establish this authority place beforehand. <a href="https://supstatus.com/?ref=PeterThaleikis.com">supstatus status-pages</a> gives you exactly this. You can set up your uptime tracking and post information about the current state if needed. All running as sub-domain under your project.</p>
<h3>Start writing straight away with "New Tab Draft"</h3>
<p>Sometimes I just want to write down some thoughts down quickly. It might be an outline for an article I want to write, an idea I want to outline briefly or just store something for a moment to not lose my clipboard. <a href="https://chrome.google.com/webstore/detail/new-tab-draft/nmfjkeiebceinkbggliapgfdjphocpdh">New Tab Draft</a> allows you all of this in your new tab. All information is stored locally to protect your privacy. Unfortunately, there is no Firefox version as far as I know.</p>
<h3>Visualizing data with a different approach</h3>
<p>Usually, you would visualize data by writing some sort of data loader, process it if needed and hand it over to a JavaScript library. <a href="https://cube.dev/?ref=PeterThaleikis">Cube JS</a> is taking it a bit differently. It allows you to bring it all together by let the rendering library access the database directly and process the data into the needed format to get it ready for display. The source code is published under MIT license on <a href="https://github.com/cube-js/cube.js">GitHub</a>. A handy tool to <a href="https://peterthaleikis.com/posts/what-is-an-open-statistics-page-and-why-you-should-have-one/" title="What is an open statistics page and why you should have one?">build an open statistics page</a> for your indie side-project by the way. Once I get some time I'll try it out for the search data collected by startup name check.</p>
<h3>Desktop client for GitHub</h3>
<p>As the name suggests, <a href="https://desktop.github.com/">Desktop</a> is a desktop client for GitHub. It allows you to perform the most common tasks you would normally do on the GitHub website but using a desktop application. Without having tried it (as there isn't a version for Linux yet), I would hope this saves you time loading time. Currently, the software is available for Windows and Mac only. Hopefully, a Linux version will be released soon. It is, of course, open-source and the source code is available on GitHub.</p>
<h2>Closing words</h2>
<p>If you like this collection of side-projects you might also like the previous editions: Neat Side Projects <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-1/">No. 1</a>, <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-2/">No. 2</a>, <a href="https://peterthaleikis.com/posts/neat-indie-projects-no.-3/">No. 3</a>, <a href="https://peterthaleikis.com/posts/neat-side-projects-no.-4/">No. 4</a> and <a href="https://peterthaleikis.com/posts/neat-side-projects-no.-5/">No. 5</a>. More side-project related posts can be found under <a href="https://peterthaleikis.com/tags/side-projects/">side-projects</a>.</p>
<p>Loved the list? Share some love by sharing the post on <a href="https://twitter.com/intent/tweet?text=Neat%20Side%20Projects%20No.%206%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fposts%2Fneat-side-projects-no.-6%2F&via=spekulatius1984" target="_blank" rel="noopener noreferrer">Twitter</a> or <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/posts/neat-side-projects-no.-6/" target="_blank" rel="noopener noreferrer">Facebook</a>. Thank you 🙏️</p>
<p>The cover photo, again, was shot by <a href="https://www.ashwinvaswani.com/?ref=PeterThaleikis.com" target="_blank" rel="noopener noreferrer">Ashwin Vaswani</a>. If you got an interesting set of neat photos and want to be featured (with backlink) let me know. Thank you!</p>
Indie Hackers: Should I Build My Side-project / Small Business in Public?2019-10-28T00:00:00Zhttps://peterthaleikis.com/posts/indie-hackers:-should-i-build-my-side-project-small-business-in-public/<p>You have had a great idea, spent some time <a href="https://peterthaleikis.com/business-idea-validation">validating your business idea</a> and are now facing the next questions: How should I approach building it? One of the most used buzzwords in the indie hacker space is “building in public“. It comes in different styles and with different methods. Of course, success in building a side-project publicly also varies. I aim to provide a starting point in this article with a look at methods, platforms, and tools. This blog-post links into the series on introduction in the indie hacker space.</p>
<h2>What Is Building a Business in Public?</h2>
<p>In the absence of an official description of the term, I would describe it as <em>"Any public work on a project aimed to improve, get feedback, build trust and/or attract potential interests"</em>. The public part can be live as it happens or later, in the form of in-depth blog posts. As with most things, there is no “one size fits all” and you have got to choose what works for you and your project.</p>
<p>The big questions with public building at the moment are:</p>
<ul>
<li>Does building in public still give you an advantage in promoting your side-project or startup?</li>
<li>What do you need to get started and what does it take to be successful?</li>
<li>What are easy ways of building a company publicly? What options are more for advanced businesses?</li>
<li>How is starting a business in public going to look in the future?</li>
</ul>
<h2>Why Build in Public?</h2>
<p>The idea of building in public isn't entirely new. Many people opt to "build in public" and some good reasons speak for it. If done well, it can drive quite a lot of attention to your project while building up trust in your work.</p>
<ol>
<li>You naturally stay more accountable to your idea and project. Continuously dropped project ideas leave you in a bad light.</li>
<li>Also you are building up a brand for your work and workstyle. Once people recognize your consistent high-quality work you are building up trust. Same goes the other way: if you are putting together a sloppy solution and present it as a masterpiece people will notice. You will get called out for it.</li>
</ol>
<p>A great example of building a project in public is Ethan's work <a href="https://kanbanmail.app/">on Kanban Mail</a>. He completely built and designed his email client in public. You can read more on his <a href="https://ethan.link/">website</a>.</p>
<h2>Methods of Building in Public</h2>
<p>The ways to build a bootstrapped business in public vary, naturally. Some are more advanced and time-intensive (live streaming) whereas blogging gives you an easy start and is scalable over time.</p>
<h3>Blogging about It</h3>
<p>The earliest versions of “building in public” were probably the engineering blogs maintained by some bigger companies. With the Internet changing, it's hard to say who started it. Blogging is still a valuable and under-recognized tool. Content marketing, blogging, and guest posts on other blogs are an important part in most marketing strategies. It's building not only an online reputation, but awareness of your project and backlinks. It's also driving transparency and trust. <a href="http://open.buffer.com/?ref=PeterThaleikis.com">Buffer</a> is a very good example of a company maintaining an awesome public company blog and working on the previously mentioned points.</p>
<p>In 2020, WordPress has become quite dated when it comes to blogs. <a href="https://peterthaleikis.com/posts/introduction-to-static-site-generators/">Static Site Generators</a> make the tech-side of running your own blog very simple now. An easy starting point for a new blog is, for example, a Netlify-hosted copy of <a href="https://hylia.website/?ref=PeterThaleikis.com">Hylia Website</a>. If you don't have the right domain researched yet, I recommend you check your desired domain names - using my little <a href="https://startupnamecheck.com/">name checking tool</a> of course ;)</p>
<h4>How Much Time Do I Need to Run a Company/Startup Blog?</h4>
<p>This is naturally a tricky question to answer. The time demand to run a blog depends on your own expectations and goals. If you drive marketing for your project blog on a daily basis and publish very frequently, this can quickly become time consuming.</p>
<p>A solid middle ground might be 1-4 posts per month and shared on social media. This ensures you get some exposure, capture some of the low-hanging SEO fruit and learn marketing basics along the way. One year of consistent blogging with this approach should put you in front of many others, who barely blog or don't use a blog at all.</p>
<p>If you want to push it more you can actively work for backlinks. Work towards publishing one guest post on a topic-related blog per month. This requires some time to research suitable blogs, agree on a topic with the lead writer or editor of the blog, and write & edit the article. This is generally an underestimated task but definitely worthwhile.</p>
<h3>Sharing Data and Statistics</h3>
<p>A fairly simple and good way is sharing statistics of your business with the public. Some people are keen to look behind the public facade of a company and look at the business in numbers. Warren Buffett is known to study annual reports intensively and draw conclusions from the information.</p>
<p>A new trend in small business is going a similar way by sharing statistics and data widely. No law or public listing requires this for small and medium companies. It's an easy way to gain trust and more chances for businesses to discuss what they do in public.</p>
<p>For independent small businesses, this is often done as part of an <a href="https://peterthaleikis.com/posts/what-is-an-open-statistics-page-and-why-you-should-have-one/">"open page"</a>. If you're unfamiliar with the idea behind this: It's a freely accessible web-page aimed at sharing basic information about a side-project or small business. Some examples are <a href="https://nomadlist.com/open">Nomadlist's open page</a>, <a href="https://kanbanmail.app/open">Kanban Mail's open page</a> or <a href="https://wip.chat/open">WIP Chat's Open page</a>. Previously mentioned, Buffer maintains a complete blog for transparency (linked above).</p>
<h3>Live Streaming Your Startup Build</h3>
<p>Live streaming sessions are quite popular. These often contain a mix between coding and talking. Most people talk about their projects, development steps, and reasoning. This being said, there is no need to stream coding sessions only. You could also talk about marketing approaches, writing of emails, invite people and have chats about UX enhancements, etc. The limit is really your creativity and time.</p>
<h4>How to Set up Your Computer for Live Stream</h4>
<p>Tech is getting easier than it was. There are still a few steps included in getting ready. When the 24 hours startup challenge ran, Pat, Armin, and Melanie prepared a <a href="https://24hrstartup.com/b/recommended-twitch-streaming-setup-guide">handy setup guide for Twitch</a> as it's a little more effort getting everything started.</p>
<h4>Where to Live Stream</h4>
<p>More and more platforms allow live streaming, including Twitter and <a href="https://whichlogin.com/facebook/">Facebook</a>. But live streams for IndieHackers don't seem to stick there. Post-production is often done by uploading the stream on YouTube and adding more meta information around the video. People searching on YouTube won't find you only by the words spoken in the videos. The description is your place to make sure you are found. So don't forget to include a decent description with links to your personal blog and side-project.</p>
<p>Don't expect hundreds to follow your live stream from the very beginning. But some people might jump in and see what you are up to. <a href="https://shipstreams.com/">Shipstreams</a> helps to draw some attention to your stream.</p>
<h3>Maker Communities</h3>
<p>Building in public and maker communities go hand in hand. They're your public forum and support group. Have you got a question? Put it in the chat or post a question on the board. Want to get some feedback? Post it. With every post and question, you are becoming more a member of these communities. The community will support you when you launch your project.</p>
<p>As with any community, just coming around to share your links won't get you much love. You should spend some time with other members: talk, discuss issues, and work together on your individual projects. Start with reading, commenting, then ask for feedback and last but not least, present your project. A good general guideline can be found in my <a href="https://peterthaleikis.com/posts/getting-started-on-indiehackers/">intro article for IndieHackers</a>.</p>
<p>The most popular communities are <a href="https://getmakerlog.com/">Makerlog</a> and <a href="https://wip.chat/">WIP.chat</a> in 2019. Pick one to your liking and go with it.</p>
<h2>Future of Building in Public</h2>
<p>Building in public is here to stay. The methods, tools, and platforms will probably change in the coming years, but the concept will remain. Simply because it's building on what is scarce: authenticity and transparency.</p>
<h3>Building a Startup "One Tool at the Time"</h3>
<p>A new approach partially related to building in public is the "one tool at the time" idea. I've started doing more little tools and projects. Each of them is solving an independent small problem and gets launched as a separate project under a separate name. I noticed this first with Shopify's business name generator. It's a tool in itself; not part of Shopify's product directly, but it's supporting. And as part of this, it gained a number of backlinks and users being exposed to the Shopify idea and brand. If you are a software engineer yourself, spinning up little tools should come easy, relieving from the "one big project". If you are planning to outsource your development, you should plan ahead and use the partial projects as milestones.</p>
<p>One tool at a time is a neat approach for people bootstrapping small businesses, as it splits the risks and work-load naturally into smaller chunks. I see this becoming part of the process for suitable projects in the future.</p>
<h3>More Virtual Assistants to Facilitate</h3>
<p>Everyone's time is limited to 24 hours a day. Most people like to sleep, eat and have some time for themselves. This reduces the available work hours. If you are working 9-5 it's even worse. To achieve more, you can either work smarter or hire someone to work with you.</p>
<p>For a fair price, you get another 10-40 hours of work and the results from this work. These additional hours are of great use to process videos, proof-read texts, write descriptions, etc. Every step of your work you hand over to someone reliable helps your public building as it frees you to focus on growing your project.</p>
<p>You can find good people in the Philippines working from $3/hour upwards. That's only around 500 USD per month for a full-time assistant. Of course, this won't work if you are doing an (almost) zero-budget project. Either way, I see hiring Virtual Assistants (VAs) becoming more and more a thing. It switches you from working in your business to working on your business.</p>
<h3>Smarter Leveraging of Your Resources</h3>
<p>We all have different resources at our disposal. Working smarter means knowing how to use one sort of resource (time, money, education, knowledge, network) to obtain more of another resource. Using a VA is one way to turn money into time but there are others too.</p>
<p>If you have time on your hands it's a good idea to learn to code, ask great questions, write content, design or spend time thinking.</p>
<p>If you've got money, you should do the opposite. Buy the things that either efficiently save you time or allow you to progress faster. That could be a tool or hiring someone to build, design or write something for you. You can find all kind of virtual assistants (VA), writers, proof-readers, etc. on platforms such (https://peterthaleikis.com/freelancer)[Freelancer.com] and (https://peterthaleikis.com/peopleperhour)[PeoplePerHour].</p>
<p>If you've got a great network, make use of it. Connect people to gain money or favors and build your business from there.</p>
<p>Even challenges and problems are a type of resource. Nothing helps with personal growth and coming up with new ideas as do your personal challenges. Make sure you spend the required time <a href="https://hackernoon.com/how-to-make-your-time-worthwhile-when-building-a-startup-or-side-project-bp1829yj">validating these ideas</a> before jumping into action.</p>
<p>This might sound logical, but it’s not one of the things many people actually live by. For public building this is an important aspect. It shows your followers that you think problems through and find solutions outside of the box. This will make the difference between you and hundreds of other makers who just document their hard work.</p>
<h2>Got More Ideas on Where Building in Public Is Going? How Do You Do It?</h2>
<p>I'm keen to hear what your thoughts on the future of building in public are. What are we going to do differently in the future? Where is building companies in public going? Please reach out via <a href="https://peterthaleikis.com/contact/">the information on the contact page</a>.</p>
Deep Dive into Validating Your Business Ideas2019-12-09T00:00:00Zhttps://peterthaleikis.com/business-idea-validation/<p><em>Thanks to <a href="https://twitter.com/betancourtfit">Juan Betancourt</a> you can read the <a href="https://medium.com/@betancourt/c%C3%B3mo-validar-tus-ideas-de-negocio-r%C3%A1pido-y-sin-dejar-tu-trabajo-688acf747538">article in Spanish</a> as well now 😍️</em></p>
<p>When sudden inspiration strikes you, nothing is better than getting started building your next project straight away and not losing momentum. After all, no story of genius-inventors talks about due diligence and planning. However, this might be exactly what you need to look at to avoid ending up with your startup or project, like roughly half of all new businesses, which <a href="https://www.fundera.com/blog/what-percentage-of-small-businesses-fail">fail within the first five years</a> and end up on the <a href="https://www.failory.com/cemetery/">Startup Cemetry</a>. To use Benjamin Franklin's words: <em>“By failing to prepare, you are preparing to fail.”</em></p>
<h2>Why bother spending time to validate your idea properly?</h2>
<p>Planning isn’t the most exciting task, especially at the beginning of the adventure of building a company. But Reason speaks for it spending time validating your idea:</p>
<ul>
<li>
<p>Seldom does one start a company from a point of plenty of time and money. More likely you are bootstrapping your business and financing it yourself or even using a small business loan. A new project naturally costs time and money - the two things you haven’t got a lot of. Planning ahead and finding out if a project is actually viable can make or break your young business.</p>
</li>
<li>
<p>If you are starting without any preparation or a plan, you are at a much higher risk of losing motivation along the way. This can come from many reasons at the end. Three very common issues are:</p>
<ol>
<li>Scope: Underestimating the required time to build the minimum viable product (MVP) and later the full project are very common. It usually starts with <em>“Oh, that’s super simple; I can do this in a weekend”</em> and ends after a month of aimless building. Defining a clear scope, knowing what it needs to be useful, helps a lot.</li>
<li>Competition: Even before you launch, your competition might manage to stop you. How? Pretty simple: If you start building your project without preparation you will come to the point of deciding on a name sooner or later. This is the moment where you head to your domain registrar, type in your wish name and find it registered. Registered by a business doing what you started building. The same might happen for several domain names. It’s without any doubt quite demotivating to constantly discover new competitors.</li>
<li>Marketing: If the two previous points don’t grind your side project or new business to a stop, it’s often marketing. After the project is done and the baby has a name, you are facing the hard reality that <em>“If I build it, they will come”</em> is working only in very rare cases and in fairy tales. Marketing requires daily work to get your project into the hands of the people who might profit from it and become your customers. The graveyard of completed, but not marketed online-projects speaks a clear language.</li>
</ol>
</li>
<li>
<p>Validating your idea ahead of building anything also provides you with valuable information you can use in marketing later on. You have read about the issues, you know who is struggling who, you know the sites your target group spends time on. This will pay off later on.</p>
</li>
</ul>
<p>It all comes down to this: Uncertainty is what you have plenty of in a young business. Your “job” as a business owner is to turn <em>‘Uncertainty’</em> into <em>‘Certainty’</em>, to ensure your company is still successful after five years. Validating your business idea proper is the first step.</p>
<h2>Step-by-step guide to validating your business idea</h2>
<p>The internet is full of information on how to get your project idea checked and validated. However, there are many more ways than just Google to find out if someone has already built your idea or considered and decided to abandon your latest idea. It’s all a question of finding the right information and evaluating it in the context of your idea.</p>
<p>Get started with brainstorming terms, keywords and potential names for your project. It helps to keep a Google Sheet for this. This article comes with a <a href="https://docs.google.com/spreadsheets/d/1L924MDRqCwQVHjfp38vDnRbB1sgzA9jglGdrxoE7d5c/edit?usp%3Dsharing">sheet template</a> for this case. Feel free to use it. <a href="https://ubersuggest.io/">UberSuggest</a> is a simple tool to get more ideas for keywords and other related terms. If your list is very short at this point it helps to write a short description of the key features and unique selling points (what makes it different from existing projects) - this is often called an elevator pitch. This way you should find more keywords/phrases describing your idea. Collect all of them in the sheet. We will weed the terms out as we go.</p>
<p>The following list is naturally not conclusive as there are many niche websites and communities you can consult, but it should be fairly comprehensive to get started. It contains a list of websites and platforms you can check to see if your idea has been built, discussed or launched. Generally, I recommend to check each of your terms on these platforms. After a few websites you will get a feeling for which ones aren’t giving you any results and you might want to leave them out for future searches. But you can also pick some promising platforms if you are only after a first impression at this point. Let’s get started validating your idea:</p>
<ol>
<li>
<p>Surely one of the first things that comes to mind is searching on Google. Besides similar projects what is interesting is really the kind of results you find when you search for your keywords. Do you find articles on popular platforms or niche blogs? Are these “how-to” articles? Are there older or newer discussion forums? Are the developer blogs discussing solutions for your problem? Are there blog posts by potential users/customers discussing their manual approach and solution?</p>
</li>
<li>
<p>After Google, YouTube is the world’s second biggest search engine. Are there videos around this topic? Keep an eye on how many times the videos have been watched. What kind of comments are below the videos? Are the comments speaking of excitement or rather on the negative end of the spectrum? Are people mentioning service or tool in the comments related to your idea? If so, add them to your “Competitors” list.</p>
</li>
<li>
<p>Unknown to many, Facebook is one of the top 3 search engines worldwide. Put some of your keywords and key-phrases into Facebook. Make use of the filter bar on top and focus on “Groups”, “Pages”, and “Posts”. Depending on your idea, the “Events”, “Marketplace” and “App” can also be very useful. Especially groups are interesting, check the metrics members as well as the activity. Look out for significant problems people discuss. Does your idea address these? If so, very good.</p>
</li>
<li>
<p>Are people seeking help with the problem you are planning to address? Check Quora for questions relating to the idea. Take note of the related topics and browse the questions listed under these topics.</p>
</li>
<li>
<p>Search jump on Twitter next. Look out for accounts dedicated to the project. Are there tweets about this? Are people complaining about the problem you are looking to solve? What are the responses? Do people point to a simple solution?Are there commonly used hashtags for your idea? Add them to the “Spaces & Links” list in your template.</p>
</li>
<li>
<p>Reddit is a platform used in various ways. Type in some of your successful terms, but don’t leave it at this. Search also for some unpopular terms - Reddit has a lot of niche communities (so-called “reddits”). Take note of any reddits related to your idea and add them to your list of communities (called “Spaces & Links” in the provided template).</p>
</li>
<li>
<p>Identify what people are connecting with your idea by using <a href="https://peterthaleikis.com/answerthepublic">Answer The Public</a>. Simply put some of your winning terms in and keep especially an eye on the questions.</p>
</li>
<li>
<p>Search for articles on <a href="https://medium.com/">Medium</a>. Are there long articles on how to deal with problem? Take note of the people who wrote the articles. Add them to your list of people in the space.</p>
</li>
<li>
<p>Check for projects on <a href="https://www.upwork.com/">Upwork</a>. Are people posting regular projects addressing your problem? Look for bundled up packages solving your problem on <a href="https://www.fiverr.com/">Fiverr</a> and <a href="https://www.peopleperhour.com/">PeoplePerHour</a>. Look at the number of purchases and the reviews. If you find listings on Fiverr and PeoplePerHour that’s a very good sign there is a paying market for your idea.</p>
</li>
<li>
<p>Head over to <a href="https://www.amazon.com/Kindle-Store/b?node=133140011">Amazon’s Kindle store</a>. Search for ebooks about this problem space. Are there any? Are they popular? Look out for bestseller badges. Check out the reviews, especially the more balanced ones (2-4 stars). Also take note of alternative books and links mentioned and add them to your sheet as needed.</p>
</li>
<li>
<p>Are people trying to learn a solution to your problem? Check out <a href="https://www.udemy.com/">Udemy</a>, <a href="https://www.udacity.com/">Udacity</a>, and <a href="https://www.skillshare.com/">SkillShare</a>. How are these advertised, as a time saver to reduce long manual processes or to make them much easier? That’s a good sign. Check metrics such as enrolled students, if available.</p>
</li>
<li>
<p>Bootstrapping businesses is trendy. It’s always a good idea to look on bootstrapping communities like <a href="https://www.indiehackers.com/">IndieHackers</a> and <a href="https://discuss.bootstrapped.fm/">discuss.bootstrapped.fm</a> and see if anyone has been discussing or working on your problem. There are also communities aiming to support building projects in public. Two notable examples are <a href="https://wip.chat/">WIP.chat</a> and <a href="https://getmakerlog.com/">MakerLog</a>. <a href="https://www.producthunt.com/">ProductHunt</a> is a good bet to look for launched projects. See if they are alive. <em>Bonus tip:</em> For any existing project you find add “/open” at the end of the URL, to see if you find an <a href="https://peterthaleikis.com/posts/what-is-an-open-statistics-page-and-why-you-should-have-one/">open statistics page</a>.</p>
</li>
<li>
<p>Check the crowdfunding platforms <a href="https://www.kickstarter.com/">Kickstarter</a> and <a href="https://www.indiegogo.com/">Indiegogo</a> to see if there have been any projects solving the problem. Keep it broad - changing or extending a business model happens fairly quickly these days. Interesting metrics here are the funding status: Is the project overfunded or not founded at all? How many people backed the idea? Check any related project websites for engagement signs such as comments, links to YouTube videos with comments.</p>
</li>
<li>
<p><a href="https://news.ycombinator.com/">HackerNews</a> is a niche website and worth a look, if your idea is in the tech space. The search form is at the bottom of the website here. Interesting are the projects mentioned under “Show HN”, these are launched projects. If you find a project which solves a part of your problem you might want to add them to the competitors list.</p>
</li>
<li>
<p>If your project idea is a software project, it might be a good call to research on GitHub as well. <a href="https://github.com/">GitHub</a> is a platform where many software engineers share code and even complete projects. Maybe someone is building a project solving a similar problem and there is an option to cooperate or building on top.</p>
</li>
</ol>
<p>The results of the research done on the platforms above should give you a fairly good idea of the interest in a solution around your idea. If you stumbled across a “no-go” such as a competitor, you might want to reconsider this. Competitors don’t mean your idea isn’t good, it means that it’s good enough for someone to pursue it. If there are established players, even better. This means there is enough money to sustain these companies generated by the business.</p>
<h2>Diving even deeper into validating your idea</h2>
<p>If you haven’t given up along the way and reached this point, congratulations! You have gained a much deeper knowledge about the market your idea is addressing. You learned how the problem is currently solved, what your typical customer looks like and what tools exist at the moment. This is a great base to dive deeper into research and identify more deeply how your potential market looks.</p>
<p>The following ideas and thoughts are based on a list of similar projects (called “Competitors” in the template). It makes sense to check the website URL of each potential competitor for similar projects:</p>
<ol>
<li>Neil Patel’s <a href="https://neilpatel.com/">website</a> has a free tool allowing you to assess your competitors' backlinks and thereby their popularity. The key metrics are displayed on top. High numbers indicate more successful website and probably businesses.</li>
<li>Search for alternatives on Google using “alternative” + name. This way you can discover more similar projects as well as learn about which platforms discuss these alternatives.</li>
<li>Check the Google index by searching for “site:URL” to see how many pages Google has indexed. This gives you a feel of the complexity behind the project as well as leading you to other interesting insights such as engineering blogs discussing issues & solutions, and an impression of the types of content the business is publishing.</li>
<li><a href="https://app.buzzsumo.com/research/content">Buzzsumo</a> has built a handy tool to check how many social media shares a website has. Enter your competitors URL to see how actively their audience (customers) engages with them.</li>
<li>There are several name-checking tools out there. These helpers verify the availability of usernames and domains. Often you might find similar projects if you try to find the right name for your side-project. Of course, my choice here is <a href="https://startupnamecheck.com/">Startup Name Check</a>. For the competitors these might bring up stale projects or parked domains. These can indicate someone worked on a similar idea.</li>
<li>Look for niche communities regarding your topic. Check what issues they are discussing. Carefully check how the customers present and describe themselves. Profiles on these niche communities can be very interesting.</li>
<li>Run a <a href="https://smallseotools.com/backlink-checker/">backlink search</a> for the communities in your “Spaces” list. Keep an eye on articles linking to the communities as these often discuss solutions. Websites with questions as titles are usually a good bet for this.</li>
</ol>
<p>By now you must know the market you are looking at very well. Your research might have brought up information which makes you doubt the idea is a good pick and that’s fine. It’s wiser to spend the time identifying that it’s not a great idea than investing your time and money and finding it out along the way.</p>
<h3>What now?</h3>
<p>Hopefully your research shows that your idea solves an existing problem and people are excited about having a solution for the problem. It’s much easier to build a business for excited users (who even search for a solution) than having to educate people that they have a problem they didn't realize before, which you are addressing and asking them to pay for on top of it all.</p>
<p>After the market research steps above, you should know how people feel about the problem your idea is addressing. You should know what people’s time is consumed with and what they spend their money on. All great insights for the future of your project and will, without a doubt, help you to make sure your startup is set for success.</p>
<h2>Discussing your business idea privately</h2>
<p>Talking about your idea seems against logic at first. Why tell anyone about your amazing new project you are planning? The reasons are simple:</p>
<ul>
<li>
<p>Other people know many things you might have missed. These can be things you simply failed to notice because you haven’t thought about it or which were lost on you due a bias.</p>
</li>
<li>
<p>Others might know about a competitor or factors which makes it harder to monetize your project in the long run. As mentioned before, competitors alone aren’t a reason to throw in the towel.</p>
</li>
<li>
<p>The conversation itself will give you a great deal of insight as to what approach works for people, how they currently solve the problem, and how much the pain is worth for these users.</p>
</li>
</ul>
<p>Then you find a simple approach to having such a conversation with a potential client or user.</p>
<p>Alternatively to doing this at this point, you can also reach out to individuals as you find good candidates during the first phase. The results might differ slightly as you gain and incorporate knowledge as you learn more.</p>
<h3>How to verify your idea in a customer conversation?</h3>
<p>The following is a simple structure for a conversation with a user or customer. It includes all high-level points to ask as well as what to look out for.</p>
<ul>
<li>Begin with a problem statement you are hoping to address and continue with a walk through of your suggested solution to address the problem. Conclude with an open-ended question <em>‘What do you think about this?’</em>. In the following listen carefully to the response and look out for praise as well as criticism. Most people are usually voicing more positive statements than critic. Missing criticism doesn’t mean there is nothing wrong, it might be not openly spoken about.</li>
<li>Continue by asking what the user or customer absolutely loves about the solution you are intending to build. Don’t forget to take notes, as this can be helpful to find out what you should focus on during development. Do the same for what they don’t like about it. You should watch out if people complain about the same issues repeatedly. These points might be worth improving on.</li>
<li>Ask <em>“What do you think could be made better about the idea?”</em>. This question helps you to maybe identify a related issue, which you might not have considered so far. These are interesting for the product roadmap later on.</li>
<li>Ask which features the user or customer finds missing in the idea. Again, do the same for features they would remove, if they could. Both give you more information on what is important for the user.</li>
<li>The final question before thanking them for their support and ending the conversation is to ask <em>“If they would recommend the solution to friends and workmates”</em>. This shows you how the whole idea was perceived. No one would recommend to their friends something they don’t consider ‘good’ or ‘worthy’.</li>
</ul>
<p>Ideally you write the questions out in a Google Doc as you would like to ask them before starting the conversation.</p>
<h3>Who should I talk to?</h3>
<p>This depends on your idea and industry. The following ideas should lead you in the right direction.</p>
<p>The winning secret repeatedly mentioned by successful entrepreneurs is talking to your customers. You don’t have to wait until you have your product ready. From your “People” list anyone fitting the category “potential user” is a candidate. Also approach industry experts, such as authors and bloggers you have encountered regularly during the first phase of the research. It’s always a good call to include some other entrepreneurs. Don’t worry about them stealing your idea. Entrepreneurs are very busy with their own ideas and companies.</p>
<p>Once you are done with 5-10 conversation it makes sense to move into a public idea validation. A recommended approach using a landing page as well as public conversations is explained in the following.</p>
<h2>Validating the idea with a landing page</h2>
<p>A simple landing page with a newsletter form allows you to collect email address for a later launch as well as gauge the interest in your solution. Describe briefly what solution you are addressing and leave some contact details as well.</p>
<p><a href="https://carrd.co/">Carrd</a> is a great tool for exactly this purpose. It allows you to build a simple one-page website for your project. The “Pro” package for $9 per year allows you to have a form to collect email addresses using a free <a href="https://mailchimp.com/">Mailchimp</a> account as well as a custom domain, which is great for your later launch as you can collect backlinks early on. It comes with a Google Analytics as well. You can find a suitable custom domain name by entering your keywords / key-phrases in my previously mentioned <a href="https://startupnamecheck.com/">name check tool</a>.</p>
<h2>Discussing your idea publicly</h2>
<p>Ideally you introduce your idea in a post on the places you find your potential customers/users. This might be a forum or on a social media website such as Facebook groups or a reddit. Your list of “Spaces & Links” should help to identify the right places.</p>
<p>The post itself should start with a short intro about yourself, explaining that you are doing research and then jump directly to the problem you are working on and the solution you are proposing. Pro tip: Make sure to include a link to your landing page and mention the newsletter at the end of each post. This way, you build up a mailing list of interested people as you go.</p>
<p>It usually pays off to post your idea on above mentioned <a href="https://www.indiehackers.com/">IndieHackers</a> and in a Twitter thread. For the latter, a sizable audience or support by an established entrepreneur can help.</p>
<h2>Can You Actually Validate a Business Idea?</h2>
<p>Validation an idea surely has its place. Yet, in the end there is only one 100% bulletproof method to validate an idea: The market. Only after building, launching and operating a project you will know if the idea is <em>actually</em> viable as a business. Jason Fried put it well in a response to a similar question:</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Q: How do you discover and validate your ideas and how do you assess if an idea is worth executing? <a href="https://twitter.com/hashtag/askJF?src=hash&ref_src=twsrc%5Etfw">#askJF</a><br />- <a href="https://twitter.com/hiasinho?ref_src=twsrc%5Etfw">@hiasinho</a><br /><br />A: <a href="https://t.co/JsJpKKIEuO">pic.twitter.com/JsJpKKIEuO</a></p>— Jason Fried (@jasonfried) <a href="https://twitter.com/jasonfried/status/1337095209620946944?ref_src=twsrc%5Etfw">December 10, 2020</a></blockquote> <script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>With this, it's time to conclude the research and get going - either on validing the idea more or jumping into action and start building.</p>
<h2>Conclusion</h2>
<p>These are quite a few steps and probably keep even experienced users of most of the mentioned platforms busy for a few days. That’s intended. As mentioned at the beginning, your “job” as an entrepreneur is turning uncertainty into certainty. These are the steps to do it.</p>
<p>You can also consider the research work as an investment. It’s an investment into knowing your market, knowing your customers and knowing your competitors. It’s also a massive driver of motivation once you have found out your idea is viable to be turned into a business supporting you in the long term.</p>
<p>If you liked this deep dive don't forget to bookmark it. It would also be awesome if you could share it on <a href="https://twitter.com/intent/tweet?text=Deep%20Dive%20into%20Validating%20Your%20Business%20Idea%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fbusiness-idea-validation%2F&via=spekulatius1984" target="_blank" rel="noopener noreferrer">Twitter</a> or <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/business-idea-validation/" target="_blank" rel="noopener noreferrer">Facebook</a>. Thank you! 🙏️</p>
<h3>Where from here?</h3>
<p>The next logical step is, against logic, not building a product. The next step is marketing your idea. Drive traffic to your landing page and continue talking about it. Build a roadmap and make a call on what you need for a minimum viable product (MVP). For this, another post I’ve written about building a project, <a href="https://peterthaleikis.com/posts/indie-hackers:-should-i-build-my-side-project-small-business-in-public/">one tool at a time</a>, might come in handy.</p>
What Is an Open Statistics Page and Why You Should Have One?2020-01-09T00:00:00Zhttps://peterthaleikis.com/posts/what-is-an-open-statistics-page-and-why-you-should-have-one/<p>Online business in 2020 isn't what it was in 2000, or even just a few years ago. Things are changing. The old idea of companies being closed, unapproachable entities is coming to an end slowly.</p>
<p>While for bigger and especially for publicly-listed companies some legal requirements to publish certain information existed for a long time, nothing similar exists for small businesses. For some companies, no legal requirement will ever be needed. They decided freely to publicly share company metrics from website visitors to revenue, earnings, churn and sometimes even wages online, in real-time.</p>
<h2>Why should I share my statistics openly?</h2>
<p>Correct and trustworthy information is key in our data-driven society. One annual report per year is not building up lots of trust nor is it a prime example of transparency. In our time and the online space, you should be able to do better. It doesn't need to be real-time but close to real-time updates help to build much more trust than annual or even monthly updates. This means you will need to develop this functionality - but this doesn't only come in handy for building public trust in your business.</p>
<p>Comparing months in terms of revenue, number of users and other derived metrics such as revenue per user are great topics. Nothing is as big a "yaaay"-moment as the first paying customer. It also is a great base to start a more data-driven approach to building your project. With this you start to follow “Only what gets measured, gets managed”. You can identify and discuss metrics in the context of your recent changes. This comes in handy if you are building your product or project in public.</p>
<h2>How is it done usually?</h2>
<p>It became common practice to have a subpage under your root domain called "open". For example, if your project is called "mySaaS" and runs under the domain name "https://mySaaS.com" the open statistics page would be "https://mySaaS.com/open".</p>
<p>Alternatively, some companies choose to use a sub-domain. This means the URL above would be <em>https://open.mySaas.com</em> instead of <em>https://mySaaS.com/open</em>. From a SEO point of view, a page on <em>https://mySaaS.com/open</em> is preferable.</p>
<h2>What data to share? Which one to exclude?</h2>
<p>It's up to your discretion which information you like to share. The more information you share regularly, the more goodwill and trust you will build up. Typical examples include DAU (daily active users), revenue and earnings as well as visitor statistics.</p>
<h3>Avoid vanity metrics</h3>
<p>Vanity metrics are usually metrics which aren't presented correctly or are presented in the wrong context. Wikipedia defines them as the <a href="https://en.wikipedia.org/wiki/Lean_startup#Actionable_metrics">opposite of actionable metrics</a>.</p>
<p>Usually, the result of vanity metrics is making the numbers look better by accumulating instead of putting them into a time frame. A typical example is "absolute number of posts" instead of "number of posts per day".</p>
<p>In some cases, vanity metrics can actually be useful, but that's rather an exception than a rule.</p>
<h2>Great examples</h2>
<p>Buffer is, without doubt, an exceptional company in many ways, that includes transparency as well. Not just the revenue and user statistics are public. The <a href="https://open.buffer.com/salary-formula/">salaries and the salary formula</a> are too. The company is <em>defaulting to transparent</em>, if possible. The <a href="https://buffer.com/about#Transparency">Buffer's company page</a> contains several aspects the company is reporting on openly.</p>
<p>More great examples can be found on the <a href="https://www.indiehackers.com/products/">IndieHackers product list</a> as well as on <a href="https://baremetrics.com/open-startups">baremetrics open startups</a> page.</p>
<h2>Closing words</h2>
<p>Sharing your statistics might feel strange at the beginning. Some might even say it's scary, but with transparency comes more accountability and trust. Young companies such as Buffer and NomadList are leading the way. You should consider following them and sharing more data of your business and lay the foundation for becoming a truly data-driven company. If you liked this article it would be awesome if you could share it on <a href="https://twitter.com/intent/tweet?text=What%20is%20an%20open%20statistics%20page%20and%20why%20you%20should%20have%20one.%0A%0Ahttps%3A%2F%2Fpeterthaleikis.com%2Fposts%2Fwhat-is-an-open-statistics-page-and-why-you-should-have-one%2F&via=spekulatius1984">Twitter</a> or <a href="https://www.facebook.com/sharer/sharer.php?u=https://peterthaleikis.com/posts/what-is-an-open-statistics-page-and-why-you-should-have-one/">Facebook</a> 🙏️</p>
<p>By the way, if you are still at the early stages and figuring out how to get started with a website that's not a problem at all. There are plenty of very good, easy, and cost-efficient options to get started with a website. A simple "landing page"-type marketed right can do miracles. One pretty decent option to get started quickly is a <a href="https://www.buildthis.io/review/siteground-hosting/">WordPress site hosted on SiteGround</a>. The review linked gives you all the details you need to know before getting started. Don't forget to build an open statistics page too 💪️</p>
<p>The cover photo was shot by Stephen Dawson. It's available via Unsplash. Thank you!</p>
Project #5: Naming Tools2020-02-17T00:00:00Zhttps://peterthaleikis.com/posts/project-5:-naming-tools/<p>Not all <a href="https://peterthaleikis.com/tags/side-projects">side-projects</a> need to lead directly to a business. Some might just be an experiment, a tool to build upon as mentioned in my <a href="https://peterthaleikis.com/posts/indie-hackers:-should-i-build-my-side-project-small-business-in-public/">other article</a> or a simple helper for yourself. Coding can be relaxing for some.</p>
<p>Over the recent Christmas break I wanted to work on a project idea freely — without the pressure to produce something to make money. <a href="https://naming-tools.com/">Naming Tools</a> is the result. It's a simple website/tool to apply some (for me) new tech, try a different approach and solve a partial problem along the way.</p>
<p>Naming Tools is a fork of some ideas which I'm using indirectly in my <a href="https://startupnamecheck.com/">name check tool</a>. The Word Safety Tool is planned to provide little warnings on Startup Name Check. It will show you if you are using a domain name or username which might be considered profane in a different language or context. This happens, often unintentionally.</p>
<p>Furthermore, the tool is well-rounded with these additional tools:</p>
<ul>
<li>
<p><a href="https://naming-tools.com/definitions">Word definitions</a> to find second/other meanings of any given term,</p>
</li>
<li>
<p><a href="https://naming-tools.com/rhymes">Rhymes</a> & <a href="https://naming-tools.com/synonyms">Synonyms</a> to identify alternatives for your planned project names and</p>
</li>
<li>
<p><a href="https://naming-tools.com/word-merge">Word Merge</a> to create portmanteau words as project names</p>
</li>
</ul>
<p>These are coming from third-party services. You can find more details on the projects 'about' page.</p>
Project #6: Mail Merge for Linux Bash2020-02-24T00:00:00Zhttps://peterthaleikis.com/posts/mail-merge-for-linux/<p>Occasionally, I get the feeling that not everything I build needs to be a commercial project. While sustainability is an issue, I still believe there is a realm for free and open-source projects. In some cases, the core value provided by a <a href="https://peterthaleikis.com/tags/side-projects/">side project</a> doesn't justify the additional work to add payments and the required management infrastructure behind it. Naturally, this leads to a project with less features. But that's fine with me, as I want to solve only a particular problem and don't aim to build an all-encompassing solution with all the whistles and bells.</p>
<p>An alternative path instead of monetizing the project is simply open-sourcing it. This way others can profit from the work done and give back in other forms (e.g. sponsorship, etc.). Open sourcing the source code allows me to disconnect from the feeling I need to make a quick buck from it. Instead, you can give it away for anyone to use and eventually profit in other forms.</p>
<p>For my latest little project, <a href="https://github.com/spekulatius/linux-bash-mail-merge">Mail Merge for Linux Bash</a>, I'm following exactly this. With this project I cared really only about one core: feature merging emails and sending them. Existing services are too feature-rich. I wanted something very simple without monthly running costs. So I've built myself a helper script to load a CSV file and fill in a template before triggering a <code>mailto:</code> in Firefox. Chrome should work as well. The project is free for anyone to use.</p>
<h2>What you need</h2>
<p>While the project itself doesn't have any direct dependencies, your system will need to fulfill some basic requirements:</p>
<ul>
<li>
<p>Linux with bash CLI. I've not tried any other environments, but there is a chance it works on systems of a similar nature (e.g. MacOS). Windows might work, I can't tell as I can't test it.</p>
</li>
<li>
<p><code>x-www-browser</code> to be set to your browser. You can adjust this using the command <code>sudo update-alternatives --config x-www-browser</code>. This is usually already done.</p>
</li>
<li>
<p>A browser supporting <code>mailto:</code>-URLs being executed and directed to your email provider. <a href="https://getfirefox.com/">Firefox</a> 73 does this by default. You can test this by clicking this link: <a href="mailto:test@test.com">mailto:test@test.com</a>. If your email inbox opens with a new email you are good to go. This might require an additional confirmation when you are using this for the first time.</p>
</li>
<li>
<p>PHP 7.4 or newer. This will be raised as PHP versions go out of support.</p>
</li>
</ul>
<h2>Usage</h2>
<ol>
<li>Fill in your CSV file and name it <code>targets.csv</code>. You can define any number of headers within the file and use them in your template. You should always have at least the following headers: <code>Subject</code> and <code>Email</code> as the script uses these two.</li>
<li>Write your template file and name it <code>template.txt</code>. Within the template file you can use any headers defined in the CSV file. The subject line should always be the first line of the template, followed by two line breaks and should start with <code>Subject:</code>. Please note that you should use all headers in capital letters within the template file. So, <code>Email</code> would be transformed to <code>EMAIL</code> automatically.</li>
<li>Run <code>php generate.php</code> to trigger the merge of the content and the related <code>mailto:</code> commands. You might need to allow these actions to be triggering your provider email (e.g. Gmail).</li>
</ol>
<p>While working on fine-tuning your template and testing the headers it might pay off to use only one or two lines in your CSV. Once everything is in order, you can run the whole data set.</p>
<p>That's it. No magic involved.</p>
<h2>How to get it?</h2>
<p>Simply clone the repository using this command:</p>
<pre><code class="language-bash">git clone git@github.com:spekulatius/linux-bash-mail-merge.git
</code></pre>
<h2>Support</h2>
<p>You can support my open source work and the development through <a href="https://www.buymeacoffee.com/spekulatius">Buy me a coffee</a>. Social shares are also appreciated. You can stay tuned for updates and new projects by subscribing to <a href="https://peterthaleikis.com/newsletter/">my newsletter</a>.</p>
How to generate a Laravel sitemap dynamically?2020-03-24T00:00:00Zhttps://peterthaleikis.com/posts/how-to-generate-a-laravel-sitemap-dynamically/<h2>What is a sitemap?</h2>
<p>Sitemaps are xml-files containing structured data about the pages of the website. Each page has an entry similar to this one:</p>
<pre><code class="language-xml"> <url>
<loc>https://startupnamecheck.com</loc>
<lastmod>2020-03-06T20:31:03+00:00</lastmod>
<priority>0.9</priority>
<changefreq>monthly</changefreq>
</url>
</code></pre>
<h2>What are sitemaps good for?</h2>
<p>Sitemaps are helpers for search-engines to discover all relevant pages and content on a website. While there are also sitemaps for images, the focus here is on web-pages only.</p>
<h2>How can I generate a sitemap?</h2>
<p>A sitemap can be created in various ways. If you are using a framework such as <a href="https://laravel.com/">Laravel</a> you can create these on the fly or whenever you publish or update your content.</p>
<p>After some experiments and checking several solutions on GitHub I've not found the solution I was looking for:</p>
<ul>
<li>A simple, permanent crawler of the actual website.</li>
<li>It considers <code>noindex</code> robots tags as well as canonicals and of course the <code>article:modified_time</code> tag.</li>
<li>Ignores JavaScript as Google does mostly. This allows it to run much faster than executing a headless browser only to access a pure HTML5/CSS3 page.</li>
</ul>
<h2>My solution for sitemaps</h2>
<p>As mentioned, after some research I haven't found what I had in mind. So, being a developer at heart, I've opted to build my own solution. It's heavily reliant on <a href="https://mvdbos.github.io/php-spider/">PHP Spider</a>, a crawler package for PHP. Besides this, the package is using some regex to identify the most interesting parts of the website. Other values, such as <code>priority</code> are guessed by the depth within the website (nesting level). More detail can also be found on the <a href="https://github.com/bringyourownideas/laravel-sitemap">GitHub repo for Laravel-Sitemaps</a>.</p>
<h2>How can I get this?</h2>
<p>The package is distributed using <a href="https://getcomposer.org/">composer</a> and can be installed using:</p>
<pre><code class="language-bash">composer require bringyourownideas/laravel-sitemap
</code></pre>
<p>This will automatically configure the required Laravel ServiceProvider.</p>
<h2>How to use the package</h2>
<p>The package registers an <code>artisan</code>-command called <code>sitemap:generate</code>. This triggers a crawl of your site and writing out of the sitemap. For convenience, you can add this to your deployment steps.</p>
<h2>Regular updates of the sitemap</h2>
<p>If you'd like to run updates of the <code>sitemap.xml</code> regularly, you can add a new line in <code>app/Console/Kernel.php</code> in the <code>schedule</code> function:</p>
<pre><code class="language-php">/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('sitemap:generate')->daily();
// ...or with a defined time...
$schedule->command('sitemap:generate')->daily()->at('02:50');
}
</code></pre>
<h2>Summary & Questions</h2>
<p>If you've got issues please raise an <a href="https://github.com/bringyourownideas/laravel-sitemap/issues">issue on GitHub</a>. To stay updated please subscribe to my newsletter (below). More information can also be found in the BYOI article around the <a href="https://bringyourownideas.com/blog/simple-laravel-sitemap-generator/">Laravel Sitemap Generator</a>.</p>
Laptop Life Savers2020-04-02T00:00:00Zhttps://peterthaleikis.com/posts/laptop-life-savers/<p>A little different post than my side-project or coding-related stories. Don't worry it's not about the Chinese virus Covid19, at least not directly.</p>
<p>I've been using the Lenovo X1 series since my time in New Zealand. It's an amazing light laptop with great support for <a href="https://elementary.io/">elementary OS</a>. The current one is my third one. The first one was employer-issued and the second I gave to my partner so she has a decent machine. All machines have been second-hand as I believe in recycling and reusing things as much as possible to reduce my impact on the planet.</p>
<h2>Number 3</h2>
<p>Number 3 made a little bit of fan-noise for a while. It's been like this since I bought the second-hand Lenovo X1 from <a href="https://second-it.de/">Second IT</a> in Germany. I've been unable to use the warranty as I left Germany again just two days after the laptop got delivered. I've also not seen it as an issue as the fan barely ran anyways.</p>
<p>Two days ago the laptop fan started to make more and more noise until it stopped. And my heart also missed a few beats. Having built and used computers for a while I know this could mean a quick death. With the current Corona-times and being in locked-down Georgia (the country, not the US state) with all non-essential shops closed, entry-ban for foreigners and almost all flights cancelled, it's quite a stressfactor.</p>
<h2>No Local Lenovo Support</h2>
<p>The local Lenovo store was of little help: No English speaker was to be found at the time I called. Maybe due to the quarantine. Travelling to the store didn't seem to make much sense - almost all shops are closed these days.</p>
<p>Online research didn't bring much on the chances to get a replacement part delivered. Calling Second IT, the shop I had purchased the laptop from, was great: The team promised to find a fan and even ship it to Georgia to help me out in my stressful situation. A little light at the end of the tunnel, you could say. I agreed to visit one local store beforehand. A local laptop repair center called <a href="https://www.facebook.com/LaptopCenterPRO">Laptop Centre</a> here in Tbilisi.</p>
<p>The team at the Laptop Centre was very friendly and offered to look at my laptop within an hour. I'd barely made my way towards the city when I got a call: My laptop is working again, but the fan is still making some noise. I should come and check it out.</p>
<p><img src="https://peterthaleikis.com/static/images/Laptop-Life-Savers/hardware-art.jpg" alt="Clock as Hardware Art in the Laptop Centre" /></p>
<p>In the store they explained to me that the fan was still not working properly and should be replaced. But it was working for now. As the problem wasn't 100% fixed I was not charged anything - even with a working laptop in my hands. My tip was strongly denied. Georgian hospitality at its best.</p>
<p>We chatted a bit about coding (what else?), <a href="https://vuejs.org/">VueJS</a> and he mentioned that he is a backend developer as well. He built an online payment wallet for Georgia called <a href="https://www.oppa.ge/en">Oppa</a>! Pretty impressive for the age of 23! I can't say I built similar-sized projects at this age!</p>
<h2>Replacement Fan</h2>
<p>The replacement fan is ordered and will arrive hopefully soon. I'm quite happy to have found so many helping hands when it was needed. Hence my wish to share a little uplifting story!</p>
Where To Post your Startup, Side-Project or App?2020-04-08T00:00:00Zhttps://peterthaleikis.com/posts/where-to-post-your-startup-side-project-or-app/<p>Marketing is a challenge. Everyone who has built anything on the web knows that. I've watched many great projects go under due to their makers and founders not knowing the basics of getting it noticed. I've spent much of last year learning content marketing and am still on it. I'm not claiming to have the ultimate recipe for overnight success, but I know that putting yourself and your idea out there regularly helps.</p>
<p>In supporting those who build a startup, project, app, wherever, I've decided to create a simple regular email newsletter sharing places and chances to promote your work.</p>
<h2>Why a Newsletter Instead of Just a List?</h2>
<p>A large list with numerous places to submit is great - but only to rank on Google. But when you are working through, it gets frustrating very quickly. Websites are either not free anymore, dead or not accepting new submissions. Often details are missing. The quality of these lists declines dramatically with age.</p>
<p>Additionally, even if you find a few good sites to promote your work on, you are likely to give up after a few hours of non-stop filling in forms, confirming your email address, etc. The effect is low as there is no regularity. A newsletter makes it much easier: You get it, read over it briefly and decide if it's a fit and worth your time. This leads to working more regularly on the marketing side of your projects.</p>
<h2>Is it free?</h2>
<p>There are no plans to charge anything for the newsletter. Any help in the form of hints or curating information is highly appreciated though. Please get in touch using the contact option here on my blog 💪️</p>
<h2>How Frequently Do You Send These?</h2>
<p>This depends a lot on my other commitments. I'm not planning on sending dozens of emails a week. That's not me and wouldn't help. I plan to send one decent email every two weeks rather than twenty small emails a day. This being said, if a time-critical opportunity arises I might send out a short email instead of missing out.</p>
<h2>Can I See an Example? 🔍️</h2>
<p>Sure, I've prepared an example for a newsletter showing the key insights for <a href="https://buttondown.email/where-to-post/archive/launching-on-product-hunt/">launching on ProductHunt</a> or <a href="https://buttondown.email/where-to-post/archive/marketing-on-reddit/">marketing on Reddit</a>. The detailed structure might change as time passes - I'm open to any constructive feedback of course 🙌️</p>
<h2>Sounds Great, Where Can I Subscribe?</h2>
<p>Head over to <a href="https://wheretopost.email/#subscribe">Where To Post</a> and subscribe. Any help promoting the newsletter is of course appreciated! Please share it on <a href="https://twitter.com/intent/tweet?via=spekulatius1984&url=https://wheretopost.email&text=Where%20to%20post%20my%20side-project%2C%20startup%20or%20business%3F">Twitter</a>, <a href="https://www.facebook.com/sharer/sharer.php?u=https://wheretopost.email">Facebook</a>, <a href="https://www.reddit.com/submit?url=https://wheretopost.email">Reddit</a> or wherever you think it fits :) Thank you!</p>
Nova Spatie Backup: Keeps spinning / 422 error: "This disk is not configured as a backup disk."2020-04-16T00:00:00Zhttps://peterthaleikis.com/posts/nova-spatie-backup:-keeps-spinning-422-error:-%22this-disk-is-not-configured-as-a-backup-disk.%22/<p>Spatie's Laravel Components are surely known to most and are great helpers to build any kind of Laravel application or website. I've been using the <a href="https://github.com/spatie/laravel-backup">Laravel Backup component</a> on my projects. With my recent shift to <a href="https://nova.laravel.com/">Laravel Nova</a> on my new project <a href="https://bitesizedinsights.com/">BiteSizedInsights.com</a>, I've started to look at the related <a href="https://github.com/spatie/nova-backup-tool">Nova component</a>. It worked fine, once I got over some initial trouble.</p>
<p>Once completed installing Spatie Backups, I've run a <code>artisan backup:run</code> to see if it works: local backups worked as to expect and are considered "healthy":</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-fix-Laravel-Nova-This-disk-is-not-configured-as-a-backup-disk/working.png" alt="local backups are working" /></p>
<p>As usual, I've continued to set up B2 as my cloud filesystem and backup solution. The setup of <a href="https://bringyourownideas.com/blog/backing-up-your-laravel-project-to-backblaze-b2/">B2 as your Laravel backup system</a> is easy and done in a few minutes.</p>
<p>After this, I've installed the Nova component for Laravel backups using composer: <code>composer require spatie/nova-backup-tool</code> and configured the tools as explained. While checking the Nova admin interface I've noticed that it isn't working as expected. The loading icons kept spinning without any data showing up:</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-fix-Laravel-Nova-This-disk-is-not-configured-as-a-backup-disk/nova-backup-error-spinning.gif" alt="Nova loading error" /></p>
<p>After checking the Firefox browser console I've noticed an odd HTTP-422 request with this message:</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-fix-Laravel-Nova-This-disk-is-not-configured-as-a-backup-disk/422-request.png" alt="422 Request" /></p>
<p>The message contained an error message, which I've not seen on the admin-panel:</p>
<p><code>This disk is not configured as a backup disk.</code></p>
<p>After some research in the code, I've found out this error was caused by a small misconfiguration in the <code>config/backup.php</code> file:</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-fix-Laravel-Nova-This-disk-is-not-configured-as-a-backup-disk/Nova-Backup-Misconfiguration.png" alt="Nova-Backup Misconfiguration" /></p>
<p>Once I've set this to B2 the backup overview & creation worked as expected:</p>
<p><img src="https://peterthaleikis.com/static/images/How-to-fix-Laravel-Nova-This-disk-is-not-configured-as-a-backup-disk/working.png" alt="Nova-Backup Working" /></p>
<p>I'm solving & documenting random issues I encounter in the daily coder life. Besides this, I'm writing about business and my side-projects. If you are interested in either of them, subscribe to the newsletter below.</p>
How I force myself to work2020-04-21T00:00:00Zhttps://peterthaleikis.com/posts/how-i-force-myself-to-work/<p>No one seems to be immune to procrastinating, myself included. Some people get drawn into social media, for others it's YouTube or ProductHunt. I, however, tend to lose whole days on Wikipedia and development communities. Everyone has their poison. If you really are one of these odd people who don't know what procrastination is, check out this video:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/arj7oStGLkU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p>Got distracted again while you should have finished that project? You are in the right place. Keep on reading! After trying numerous ways to keep myself coding or writing, I've finally found something that works for me.</p>
<h2>Hard cut: "/etc/hosts" and "127.0.0.1"</h2>
<p>For a while I've used custom entries in my hosts file <code>/etc/hosts</code> redirecting some DNS requests to my local machine to die there. It's hard 404 to remind myself that I got distracted again and broke the flow. This worked well, but occasionally I had to find a solution to a coding issue and had to switch particular sites off. It became a habit of switching off the whole list as it was easier. And that is where old habits got the best of me.</p>
<h2>Breaking Procrastination using a browser extension</h2>
<p>There are numerous browser extensions aiming to help victims of their habits like myself with their problem. Most of these didn't win me over as they either limited my browser too much or were simply not thought through enough.</p>
<p>The <a href="https://www.deprocrastination.co/">deprocrastination.co</a> extension did a much better job here. I loved the ability to control access to certain sites and have dedicated blocks of effort. It worked well until the point I simply had to use one of the sites that were included in my block list. I had to break the timer or exclude the site manually.</p>
<p>Another little annoyance was that YouTube, my source of background music, was usually running. It wasn't affected by the extension as long as I didn't switch to the tab accidentally. My habit of jumping around my browser tabs using keyboard shortcuts got me into trouble regularly.</p>
<h2>Managing "/etc/hosts" version 2</h2>
<p>As a regular reader of Mattias Geniar's Newsletter <a href="https://ma.ttias.be/cronweekly/">cron.weekly</a>, I've recently discovered a neat command-line tool to manage your "/etc/hosts"-file better: <a href="https://guumaster.github.io/hostctl/">hostctl</a>! It allows you to predefine sets of host entries and to switch them on and off using commands:</p>
<pre><code class="language-bash"># This will enable the blocks for mails by redirecting each domain to localhost.
hostctl enable nomail;
# This will disable the block and allow me to connect again.
hostctl disable nomail;
# Alternatively, you can use the toggle command:
hostctl toggle nomail;
# Note: I've actually got aliases for both. Simply add it to your ~/.bash_aliases
</code></pre>
<p>I've added some five sets to my hosts file. The sets are grouped by topics, for example:</p>
<p><img src="https://peterthaleikis.com/static/images/How-I-force-myself-to-work/hosts-example.png" alt="" /></p>
<p>In addition, I've added another bash alias called "work". It enables all block profiles at once and makes sure I keep working.</p>
<p>If I really need to access a site, I switch off the block for the set using an alias (for example "mail") and run a "sleep 120; work" to keep myself from going down some rabbit hole.</p>
<h2>Too technical for you?</h2>
<p>If this approach is too technical for you, you might want to check out the extension mentioned above. It's a great solution if hostctl is too technical and kept me on track for a long time.</p>
<p>If this post or the video on top helped you to procrastinate it might be time to try either the extension or hostctl. Give it a try!</p>
<p>If you struggle to make your projects work in general you might want to have a look at my <a href="https://peterthaleikis.com/posts/my-indie-hacker-rules/">personal Indie Hacker Rules</a> - a set of ideas how to push myself more. I've also written about what I consider <a href="https://peterthaleikis.com/posts/what-makes-a-good-indie-hacker/">good habits and traits for Indie Hackers</a>. Both articles might be worth spending a few minutes on, if you made it until here.</p>
Laravel: Specified key was too long; max key length is 767 bytes2020-08-17T00:00:00Zhttps://peterthaleikis.com/posts/laravel:-specified-key-was-too-long-max-key-length-is-767-bytes/<h2>The Problem: "Specified key was too long; max key length is 767 bytes"</h2>
<p>One of these issues you might stumble across using the PHP framework Laravel is this one:</p>
<pre><code class="language-bash">Specified key was too long; max key length is 767 bytes
</code></pre>
<p>After some research, I've found out it's coming up when using older versions of MySQL (prior to 5.7.8) or MariaDB (prior to 10.2.2). It was MariaDB in my case.</p>
<h2>Solution #1:</h2>
<p>In Laravel this can be resolved simply by changing your app service provider configuration (in <code>app/Providers/AppServiceProvider.php</code>) with the following:</p>
<pre><code class="language-php">use Illuminate\Support\Facades\Schema;
public function boot()
{
/**
* Ensure we aren't running into `Specified key was too long; max key length is 767 bytes`
*
* @see https://peterthaleikis.com/posts/laravel:-specified-key-was-too-long-max-key-length-is-767-bytes/
**/
Schema::defaultStringLength(191);
}
</code></pre>
<p>After this you might need to rebuild your database using <code>php artisan migrate:fresh --seed</code> - this will completely reset your database and start off fresh.</p>
<h2>Solution #2:</h2>
<p>You can also upgrade your database server. This hasn't been discussed here as it is very system-specific. DuckDuckGo is your friend 💪️</p>
What makes a good Indie Hacker2020-08-23T00:00:00Zhttps://peterthaleikis.com/posts/what-makes-a-good-indie-hacker/<p><a href="https://mccormick.cx/">Chris McCormick (chr15m)</a> recently announced on Indie Hackers: <a href="https://www.indiehackers.com/post/holy-heck-this-is-hard-8ebe864174">"Holy heck this is hard"</a> - and rightly so.</p>
<p>Being an indie hacker isn't as simple and easy as it's often presented online. It's not just putting a little MVP together over the weekend, <a href="https://wheretopost.email/kb/submit/launching-on-producthunt.html">submitting it in on ProductHunt</a> and getting the cash flowing. It's mostly hard work without knowing if you'll end up with a winning product or not. It's having countless <a href="https://peterthaleikis.com/business-idea-validation/">doubts about your idea</a>, how to market it and the product itself.</p>
<p>But it's doable and there are people who "win the indie hacker lottery" (lottery is a horrible word for it, btw). There are people building independent business without any external funding or other support every day. In fact, it is more common than CV funded businesses. I'm following stories and reading (too many) books about them. You rarely find them in the places you would expect - it's the little shop owner down the street and the friendly hostel you stayed at on your trip last year. Over time, I've come to see repetitive characteristics and behaviors which seem to enable success. Here are some of the qualities which make it easier (not easy) to be an indie hacker.</p>
<h2>Being Scrappy</h2>
<p>Without VC funding, a complete team or for that matter any resource in abundance, you naturally have to get creative when it comes to solving problems. You can't give work to employees if you can't afford any and outsourcing much of your work isn't going to be much of an option until you have a stable revenue stream at least. You will need to come up with solutions for problems which make do with what you've already got. Mostly this means you have work within your skill set and time limitations.</p>
<p>This doesn't mean you do everything yourself though. For example, learning to develop mobile apps simply for one project isn't an efficient use of time in most cases - it would rather make sense to find a no-code builder for mobile apps to build a prototype. After the prototype has validated the idea and proved your market, it's time to consider finding a developer as a code founder or contractor - all to get to the goal with your existing skills and resources.</p>
<h2>Focus</h2>
<p>Large and externally-funded businesses usually have to split their focus between their goals and plans and the interests of the investors. For VC-founded companies, this often raises the question of aiming for growth or profit. As Paul Jarvis noted in "<a href="https://www.goodreads.com/en/book/show/37570605-company-of-one">Company of One</a>", doing both at the same time is incredibly hard and you have to make a call. You need to either align your goals or find a middle ground - which both take time and energy.</p>
<p>As a super-small just-you business, you've got only one primary goal: turning a profit to make your business sustainable. Nothing more or less. Great growth stories have to wait until you've had a chance to establish your business and ensure you've got a revenue stream to finance from.</p>
<p>You shouldn't have priorities, only a priority.</p>
<h2>Speed</h2>
<p>One aspect indie hackers have a unique advantage in is speed. As a solo-founder, you can change your product and add features at a speed no team could. You have no planning meetings to attend, no communications with team members, and of course no handovers between team members. All these save valuable time when it comes to delivering.</p>
<p>Further enabling your speedy turnarounds, you have in-depth knowledge of your product which allows you to deliver faster even than a team of numerous developers, designers and managers together can achieve.</p>
<h2>Innovation</h2>
<p>Innovating is at the core of building an indie business. Without innovation you have to compete on price and price competition usually doesn't leave much in regards to profits. Only large and on-going investments make growth viable in industries facing strong pricing-competition. Not a space for indie hackers really.</p>
<p>But innovation comes at a price: Research and development doesn't come for free and has inherently higher risks compared to doing the same over and over again. Risks aren't what larger organisations want: after all, they usually have strong established interests of stakeholders and investors.</p>
<p>Indie Hackers have the freedom to take risks that aren't acceptable for established companies. You can experiment with a level of freedom which is unique. Use it wisely and find the unique ways to drive customers and profitability.</p>
<h2>Connection</h2>
<p>Unique and authentic connections are an aspect no larger company can even achieve. You are one on one without customers, every time and every day. You have the chance to stand out by being authentic and create in a way people seek it, especially online.</p>
<p>Once a company reaches a certain size and there are dedicated roles, authentic connection is naturally harder, especially with pressure to squeeze out the last bit of growth or profit. So skip formality and bring personality to the table as long as you can.</p>
<p>One interesting way to stand out is being more open. By sharing more insights you build a natural and authentic connection. An <a href="https://peterthaleikis.com/posts/what-is-an-open-statistics-page-and-why-you-should-have-one/">open statistics page</a> can be a great start for this.</p>
<h2>What does this tell us?</h2>
<p>Yes, being an indie hacker is hard, no doubt. But it is worth bringing it into perspective before the Internet, it was much much harder and just 15 years ago pre-Stripe, pre-AWS and pre-GitHub it was much harder than today. I'm not even talking about the computing power in your pocket exceeding the Apollo Missions navigation computers. And there is also the human aspect of it: If it was easy, everyone would do it. It needs to challenge us, otherwise we wouldn't consider it worthy to achieve.</p>
<p>Btw, if you are interested in thoughts like these you might also like to get <a href="https://buttondown.email/spekulatius">my newsletter</a>. Just an idea 💪️</p>
My Indie Hacker Rules2020-08-27T00:00:00Zhttps://peterthaleikis.com/posts/my-indie-hacker-rules/<p>Sometimes you learn some "natural" rules when you've been doing something for a while. Being an indie hacker is no different. Over time, I've identified these rules for my work on bootstrapped indie projects:</p>
<ol>
<li>
<p>Projects don't need to be complicated. Check out this <a href="https://www.producthunt.com/posts/newsletter-virtual-mall">one</a> - it's literally a Google Sheet and a domain. If you don't need to have a complex solution don't overcomplicate it.</p>
</li>
<li>
<p><em>"I can build a better version of this in a weekend."</em> never works out. I started to multiply my estimations by at least 3. For any larger unknown or new technology I can't just get out of my head, I add at least a factor one. Don't know how to do oAuth with this site? Plan another two days for reading yourself into the topic and getting it working properly.</p>
</li>
<li>
<p><a href="https://wheretopost.email/">Marketing > Building</a>: If I'm not willing to put at least 3-5 times the (actual!) development time into marketing, I <a href="https://peterthaleikis.com/posts/side-project-ideas-up-for-grabs/">shelve the idea or give it away</a>. Yes, that means <em>"I can build this in a weekend"</em> turned already into full-time work over weeks by now.</p>
</li>
<li>
<p>Just because I can build it and it doesn't exist, doesn't mean I have to build. There are usually <a href="https://peterthaleikis.com/business-idea-validation">good reasons for it not to exist</a>.</p>
</li>
<li>
<p><em>"I can do this better"</em> is seldom worth rebuilding weeks of work someone else already invested. Generally: None of those million-dollar-over-a-weekend stories (which will never apply to you) show any of the years learning and preparing for overnight success. I don't believe them, I don't read/watch them. Rome wasn't built in a day and so this won't be a successful project. Sure, there are exceptions - but the exception isn't doing more than showing the underlying rule.</p>
</li>
<li>
<p>I only do projects I can and will <a href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food">dogfood*</a> myself. It simply doesn't make any sense to build something you aren't even using yourself. How are you going to find out if your features are really solving the problem? Plus motivation is going to fall flat in the long run until you get your first customers, if you aren't having any direct benefit from it.</p>
</li>
<li>
<p>Time to admit it: If a project isn't live when the reminder-email for the annual domain renewal arrives in my inbox, it's dead.</p>
</li>
<li>
<p>I love to find the <a href="https://startupnamecheck.com/">right name and snap up the domains</a> quickly. I've even <strong>made</strong> a project for exactly this! But I have to put on the brakes: No new domains until the old ones are put to use! #DomainersAnonymous</p>
</li>
<li>
<p>Non-stop work isn't good. I need to go out frequently and ensure I actually move more than just going to the kitchen and getting another coffee.</p>
</li>
<li>
<p>Producing > Consuming: I get it, the Internet is a place full of shiny stuff with something for everyone. But let's be honest: consuming doesn't help in getting anything out of the door. It starts with the latest news/controversy/products/analytics or search console stats/growth-hacking ideas/________ - you name it. It also doesn't stop with the current live-stream of SpaceX launching again or with simply watching YouTube passively while coding - all of these are <a href="https://peterthaleikis.com/posts/how-i-force-myself-to-work/">distracting you from achieving your goals</a>. Sounds tough? Yeah, maybe, but I can't do any of these and be actually productive.</p>
</li>
</ol>
<p>Thinking "Yeah, but ....."? I'm not saying I never watch YouTube or register a domain in overboiling excitement for a <a href="https://peterthaleikis.com/tags/side-projects/">new side-project</a>. These are just my personal rules I <em>try</em> to live by. That's all 👍️</p>
<p>If you're interested in what I would consider <a href="https://peterthaleikis.com/posts/what-makes-a-good-indie-hacker/"><em>good</em> characteristics for IndieHackers</a>, I wrote about this too.</p>
<ul>
<li>= actually cookies. In case you are scrolling up to find the asterisk: it's on number six.</li>
</ul>
Brain Dump #1: Why Shortcuts Usually Don't Work2021-01-17T00:00:00Zhttps://peterthaleikis.com/posts/brain-dump-1-why-shortcuts-usually-dont-work.html<p>I'm always surprised by people looking for the magic bullet to solve problems. Individuals are always on the lookout for the ultimate shortcut; the one trick no one is using that works like magic. Statements such as <em>"If I had a shortcut to make this work..."</em>, <em>"If there was a quickerway on completing this task..."</em> aren't unheard of.</p>
<h2>Why is this so puzzling to me?</h2>
<p>It might sound strange at first, but I feel there is a natural law working against the idea of a shortcut.</p>
<p>It's coming from a very basic idea: If there is a much quicker way to solve a problem or do some tasks (i.e.,the shortcut), then it wouldn't be a shortcut anymore. Everyone would do it and the shortcut would instantly become the regular way in which people solve a particular issue. the regular way people solve this particular issue.</p>
<h2>So no shortcuts? What else then?</h2>
<p>Here comes the part that most people don't like. The actual solution: Hard work, persistence and being smart about it. Nothing beats working consistently on an issue, solving one little issue at a time and keep doing this over and over again. Success is nothing more than this.</p>
<p>Coverphoto by <a href="http://www.morganhousel.com/">Morgan Housel</a> on Unsplash.</p>
Brain Dump #2: The AI Future we are looking at2021-01-23T00:00:00Zhttps://peterthaleikis.com/posts/brain-dump-2-the-ai-future-we-are-looking-at.html<p><a href="https://www.forbes.com/sites/bernardmarr/2020/10/05/what-is-gpt-3-and-why-is-it-revolutionizing-artificial-intelligence/?sh=44925fcb481a">GPT-3</a> can already write, design and code. <a href="https://openai.com/blog/dall-e/">DALL-E</a> is generating images faster and more creative than any human ever could, at breakneck speed.</p>
<p>If that's not enough to impress you, the next (or following) iteration will blow us all out of the water. Google has already trained the <a href="https://venturebeat.com/2021/01/12/google-trained-a-trillion-parameter-ai-language-model/">next generation model</a> of a GPT model. Computing power gets cheaper and easier to access. From here on, AI will only become exponentially better and continue to outpace humans.<br />
In a market economy, these AI-driven changes will drive the cost for writing and translations down to almost zero. Writing will become a hobby, not a human-dominated business. Same goes for web-design, a significant part of software development, etc. Many traditional human jobs will be eliminated and will turn into either a hobby or sport, depending on the type of activity. Check out this video from a couple of years back that had already predicted this.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/7Pq-S557XQU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
Brain dump #3: FOMO done right - a lesson learned from Clubhouse2021-01-26T00:00:00Zhttps://peterthaleikis.com/posts/brain-dump-3-fomo-done-right-with-clubhouse.html<p>Clubhouse is the new kid on the block. It's a social media network... or maybe not. At the moment, it's not actually 100% sure what it actually is. I actually haven't tried it out. But in a conversation with a <a href="https://jens.marketing/">friend who's a marketer</a>, I've already learned some interesting stuff about FOMO.</p>
<p>Those who know me, know for sure I'm not a fan of (over) hyped stuff. Yet, somehow Clubhouse managed to get through my radar. This is rather unusual. The hook? FOMO done well.</p>
<p>Let's take a step back: <a href="https://whichlogin.com/clubhouse/clubhouse-user-guide/">How do events in Clubhouse work?</a> They are live - same as Facebook or Twitter. No difference here. But what comes next is different. Or, to be more precise, what doesn't come next is interesting. You can't replay them. You can't record them (and aren't allowed to). There's no "we will upload it later to YouTube". You're either there or you aren't. Full stop. In case you remember, it's kind of like in the pre-smartphone times - you were either there or you weren't. This is pure FOMO because you are actually missing out. No fake FOMO.</p>
<p>This way, you will take a notification about an event from your favorite creators much more seriously. Hardcore fans will definitely drop everything to join in. Very interesting! Stay tuned!</p>
How to Fix "throw er; // Unhandled 'error' event"?2022-07-23T00:00:00Zhttps://peterthaleikis.com/posts/how-to-fix-throw-er-unhandled-error-event.html<p>Some errors are easy and simple. Quick fixes you get resolved in minutes. Others aren't and you got to dig in for much longer than you would like to. This was one of these for me. I'm sharing my solution here to make it a bit easier for other developers.</p>
<p>This problem seems to affect especially Linux users like myself. I can't confirm this for sure as I run only Linux 🐧️ On my <a href="http://elementary.io/">elementary</a> the issue usually comes up when I try to run npm/yarn commands which are supposed to watch file changes (e.g. CSS/SCSS or JavaScript files). The problem affects all frameworks from VueJS, to React and Angular. The related <code>dev</code>- and <code>prod</code>-commands work fine. It's only affecting <code>watch</code>-command and appears to be linked to a file-system incompatibility when watching file changes.</p>
<p>This particular case problem arises while using my swiss armyknife build tool Laravel Mix on a project. When running <code>npm run watch</code> (actually <code>yarn watch</code>) I get this error message <em>after</em> the compile step is finish:</p>
<pre><code class="language-javascript">events.js:292
throw er; // Unhandled 'error' event
^
</code></pre>
<p>The line number depends on the exact libraries used in the project, but the <code>events.js</code> filename or <code>throw er; // unhandled 'error' event</code> are usually part of the error.</p>
<p>If supported, <code>watch-poll</code> often resolves the issue. But some libraries, like my starter for eleventy (this blog), aren't supporting poll and I needed to resort to a different approach. After spending some time researching and trying I've found a solution which works for now. I remove the <code>node_modules</code>-folder (<code>rm -rf node_modules</code>) and force-clear the NPM cache (<code>npm cache clear --force</code>) before reinstalling the node dependencies. Summarized in the following steps:</p>
<pre><code class="language-bash">rm -rf node_modules
rm package-lock.json yarn.lock
npm cache clear --force
npm install
</code></pre>
<p>Please note: This removes also the lock-file. Thereby updating your project, make sure to test everything before you push the changes to production 🙏️</p>
<h2>Update #1: Solution: Stop all other "watch"-processes</h2>
<p>If you have a number of node processes running this might be part of your issue. I've noticed the problem coming up more often if I've got a number of watch processes (for other projects) running. After stopping these and clearing the files as described above the issues was resolved.</p>
<h2>Update #2 (2020-03-04): Error: ENOSPC: System limit for number of file watchers reached, watch 'src/assets'</h2>
<p>With a recent update of my dependencies, I've noticed a new, better understandable wording for the known error. This points you much faster in the right direction. Again, I've been able to resolve the issue using the approach mentioned above.</p>
<h2>Update #3 (2020-04-23): Increase allowed file handles</h2>
<p>By chance I stumbled across a solution to increase the number of allowed file handles. This actually came with my recent trail of Microsoft Studio Code for Linux. It thrown a familiar sounding error:</p>
<pre><code>Visual Studio Code is unable to watch for file changes in this large workspace (error ENOSPC)
</code></pre>
<p>Microsoft recommended the following to increase the number of allowed file handles. You can do by updating your <code>/etc/sysctl.conf</code> file. The detail steps are lined out <a href="https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc">here</a>.</p>
<h2>Update #4: Do you prefer a video?</h2>
<p>More a video guy? Someone also made a video based on the content of article:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/_GG9jgLgBXk" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><br /><br />
<h2>Update #5:</h2>
<p>This might also come with a blocked port an app is try to listen to. In this case your error message might look like this:</p>
<pre><code>node:events:505 throw er; // unhandled 'error' event ^ error: listen eaddrinuse: address already in use :::5000
</code></pre>
<p>The port at the end, here <code>5000</code>, can vary.</p>
<p>If this looks like your problem, you might want to check what is listening on the port in question. Simply open the port with port, e.g. <code>localhost:5000</code>, in your browser. After turning of the application in question or changing your port this problem should be resolved.</p>
<h2>By the way</h2>
<p>I love the web and building stuff! The web still has lots amazing open-source libraries and <i>actually</i> innovative side-projects. Once in a while, I share these <b>awesome web-findings</b> via email. If this sounds like something you are into, subscribe below:</p><p></p>
<form action="https://buttondown.email/api/emails/embed-subscribe/spekulatius" method="post" class="embeddable-buttondown-form">
<div style="display: flex; flex-direction: column; padding-bottom: 15px;">
<div style="margin-right: 15px; padding-bottom: 5px;">
<input type="email" name="email" placeholder="Your best email address" style="border: #1D2534 solid 1px; width: 275px; border-radius: 1px;" />
<input type="hidden" value="1" name="embed" />
</div>
<div style="padding-bottom: 5px;">
<input type="submit" value="Subscribe" style="border: #1D2534 solid 1px; border-radius: 1px;" />
</div>
</div>
</form>