(Originally appeared on my Indie Hackers blog)
Even though I’ve only achieved modest success as an indie hacker, I’ve learned many valuable skills that will make me more successful in other areas of my life, no matter how I proceed.
Continue reading
(Originally appeared on my Indie Hackers blog)
Even though I’ve only achieved modest success as an indie hacker, I’ve learned many valuable skills that will make me more successful in other areas of my life, no matter how I proceed.
Continue reading(Originally appeared on Indie Hackers)
Here’s a few of my insights from the past few months of personally finding mentorship and listening to hours and hours of the Indie Hackers podcast 🙂
Continue reading(Originally appeared on my Indie Hackers blog)
Instead of posting a link to a survey in a Facebook group with potential customers, post that you’re doing a research project and would love to interview some people that do [whatever your target market does].
Here’s my theory: People don’t like filling out surveys because it feels cold, and impersonal. On the other hand, answering questions being asked by a human interviewer, even if they are the same questions, makes them feel important because of the personal touch. Someone else is taking time from their day to ask the questions, so it’s more reciprocal.
Continue reading(Originally appeared on Indie Hackers)
For a long time I didn’t appreciate how important copy (that is “Sales Copy“) is. I considered that secondary to the core tech that powers a product.
What made it click for me is realizing that sales can be lost purely due to copy and design.
Continue readingI landed some code in lldb! Did some tweeting about it here:
I was reading about GCC and noticed this very suspicious warning line about an accidental compatibility break: https://gcc.gnu.org/gcc-8/changes.html

I thought it would be interesting to reproduce this. I reproduced this specific scenario they outline and compiled two translations units, one with GCC 8.1, one with an earlier version (GCC 7) and observed the segfault that happens when two incompatible calling conventions interact with each other.
pkg-config is useful for generating the flags needed to compile a complex third-party dependency. CMake’s PkgConfig module can make it easy to integrate a dep into your build system.IMPORTED targets (e.g. BZip2::Bzip2) versus legacy variables (e.g. BZIP2_INCLUDE_DIRS and BZIP2_LIBRARIES).struct stat on Linux is pretty interesting
-E to stop after preprocessing then look in that output for the definitionend of a chapter
success, failure…immense growth
unforgettable.
Pretty recently I learned about setjmp() and longjmp(). They’re a neat pair of libc functions which allow you to save your program’s current execution context and resume it at an arbitrary point in the future (with some caveats1). If you’re wondering why this is particularly useful, to quote the manpage, one of their main use cases is “…for dealing with errors and interrupts encountered in a low-level subroutine of a program.” These functions can be used for more sophisticated error handling than simple error code return values.
I was curious how these functions worked, so I decided to take a look at musl libc’s implementation for x86. First, I’ll explain their interfaces and show an example usage program. Next, since this post isn’t aimed at the assembly wizard, I’ll cover some basics of x86 and Linux calling convention to provide some required background knowledge. Lastly, I’ll walk through the source, line by line.
Continue reading