Jason Leow

Indie hacker, solopreneur | Creating a diverse portfolio of products + services.

Just wrote first blog post for LifeBlog - Hello, World! https://golifelog.com/posts/hello-world-1612944852479

Day 41 - Reframing my vision statement https://golifelog.com/posts/reframing-my-vision-statement-1612942715506

I will learn my way towards $5k MRR by end 2021. In return, I will have fun growing my indie products, and adhere to a healthy, happy habit system. And I will surrender.

👁 UI/UX tweaks to Featured Goals sidebar for better visual experience

✅ Added spinning loader so that the transition to new content is less visually jarring.
✅ Added fixed width and height to the loading goal boxes so that the transition is less jumpy.
✅ Added mobile responsiveness to sidebar text to prevent overflow for looong usernames

Organic sharing/marketing on Twitter

Abrar

Got any growth hacking tips for an android app?

0 Likes
Abrar

Oh cool! thanks for the example. I'll check it out.

0 Likes

📝 Created a Blog page for intermittent posts and dev notes, geeking out over tech, and musings on streaks, daily writing, habit formation, goals and productivity. No posts yet, but now that I made a blog, I gotta write it now. No more excuses.

The empty canvas beckons......

Fixed and deployed Featured Goals sidebar

* Created a refresh button to load a fresh set of random goals, kudos to @brianball.
* Also optimized the data fetching response time for the Featured Goals - feels much more zippy now.

Solved the slow data fetch on Featured Goals widget

In the end, it wasn't some fancy Javascript gymnastics involving 2 endpoints and recursive math.random functions to double check that no duplicate goals are rendered. I just went to create a new endpoint without the relational posts data! Just that, simple and elegant. Reduced the response time from many seconds (the longest I tracked was 12s!😱) to under 500ms!

Day 40 - Gratitude comes in hard and soft https://golifelog.com/posts/gratitude-comes-in-hard-and-soft-1612857040891

Two bitter pills of hard gratitude to learn from adversity, and one soft gratitude to close the palette, like dessert.

Deployed featured goals on home

This seemingly simple but super tricky feature ended up needing multiple Math.random() gymnastics, and still I couldn't get it perfectly right! In the end, pushed a non-optimized version out, and the data fetching going up to a few seconds occasionally (because the payload included data I didn't need). Must optimize the data fetching tomorrow.

this.goals.sort(() => Math.random() - Math.random()).slice(0, 3)

Day 39 - Happiness = Reality – Expectations https://golifelog.com/posts/happiness-reality-expectations-1612767484878

Happiness = Reality – Expectations

I should really write that out in huge bold letters and hang them above my work desk, as a humble reminder every time I begin work on a new feature. Because I’m not as experienced yet, my estimates on development effort required are often way off, from 3x to as much as 10x off. So to preserve my sanity and to enjoy coding more, I got to really dial down my expectations. And safely so, because it wouldn’t reduce my motivation any one bit. In fact, it probably helps me keep going longer since I wouldn’t get unrealistically upset at my progress.

To be honest, is matching expectations with reality even possible, even if you’re super experienced?

Day 38 - Strong motivation, loosely held https://golifelog.com/posts/strong-motivation-loosely-held-1612667462793

I wonder if I can ever get to the point of “strong motivation, loosely held” for my work. I’d always had a problem with not resting enough, and driving myself too hard, often to the point of burnout and health issues. It’s just Sisyphean cycles of intensity and burnout all the way.

How can I learn to loosely hold on to work?

Deployed latest features to Lifelog - thread notifications and public goals pages

✅ Latest Lifelog deployments

🔔 Thread notifications, suggested by @Lobacrow. Now you get notifications whenever someone comments on a comment thread that you had previously commented on, so that you can follow the discussion.

🎯 More goals-centric features! Your goals each have a public page now, including an overview list of the posts you wrote for that specific goal. I switched to a tile based view for this, so that we can have a broader overview on what we wrote for each goal => easier to spot patterns, themes.

🎨 Added goal tags to each post on home page. Goal tags on individual posts will link through to the goals page. Also truncated the goal titles for goal tags - some of the users have loong titles! 😆

Created public pages for goals

✅ Added details to goals page - stats, posts feed. Switched to a tile based view for this, so that we can have a broader overview on what we wrote for each goal => easier to spot patterns, themes.
✅ Added load more button as a tile
✅ Added author link to link to profile page

Thanks to @brianball for the help debugging the json data structure!

🐛 Tiny tweaks and debugs to Lifelog

✅ Tweaked splice() function to remove jason from the top streaks sidebar on home pg.
✅ Added link to goals tag in slug page.
✅ Added writing prompt to home pg and write pg. Added splice() to top streaks.
✅ Added nuxt-link to goals in profile page to link to own goals page.

Day 37 - Biohacking sleep II https://golifelog.com/posts/biohacking-sleep-ii-1612590807617

New hacks tried
---
* Planned bedtime routines
* Started using Sleep Cycle app to track my sleep
* Cold showers before bed
* Took magnesium before bed

New experiments and hacks to try
---
* Buying a timer power plug to go with the night lamp, to slowly rouse me awake using light instead of a sudden jolt from the alarm
* Track not just my coffee intake but also tea, and the type of coffee bean

Organic sharing/marketing on Indie Hackers forum

As part of Fund Feb goals:

1. At least 1 task per day to monetize something.
2. Setting aside at least 1h everyday to work on money.

✅Chatted with IHers and shared Lifelog 6x
✅Shared about https://plugins.carrd.co/ on IH Carrd group

Day 36 - Lifelog monthiversary https://golifelog.com/posts/lifelog-monthiversary-1612504237002

🎉🎉🎉 Celebrating a belated monthiversary on Lifelog! Some reflections:

⏱Has it been a mth? Time warps..
👥 Journeying alongside & helping my 'competitors'
👯‍♀️ No Lifelog without the grace of others
❤️ Trifecta of joy, purpose & (some) profit

Followed up with MSF on 2 consultancy projects...ITQs to come!

As part of Fund Feb goals:

1. At least 1 task per day to monetize something.
2. Setting aside at least 1h everyday to work on money.

✅Tweeted out to 3 potentials about Lifelog
✅Shared #sweetjamsites on FB
✅Follow up on consultancy projects with MSF

Organic sharing/marketing on Twitter

As part of Fund Feb goals:

1. At least 1 task per day to monetize something.
2. Setting aside at least 1h everyday to work on money.

✅Tweeted out to 3 potentials about Lifelog
✅Shared #sweetjamsites on FB

Day 35 - Same same but new https://golifelog.com/posts/same-same-but-new-1612431428014

And in tech, what’s same but new:

IRC > Slack
SMS > Whatsapp
Sell-a-vision > Youtube ads
Dial-in conference call > Clubhouse
Tetris game console > Nintendo Switch
Segway > hoverboards
RC helicopters > drones
Pagers > smartphones

Made me think: What was super fashionable and popular 20-30 years ago in tech, or when you were growing up? Is there a digital or smartphone equivalent right now? If not, that’s a business opportunity right there!

💪YAAAS! Solved thread notifications! Used a combo of map(), for loop and Promise.all functions

One of those days where I feel like I'm a bit more aware of what I'm doing with Javascript than just copy-pasta, even though it's the first time I'm using a for() loop and Promise.all !

Here's how I think thread notifications work on high level:

1. GET request to API endpoint to fetch json data of all notifications for a particular post
2. Use map() to get only the commentAuthors in an array
3. Use for() to loop through the commentAuthors array to run axios POST requests to each commentAuthor (this sends a notif to each commentAuthor of the post)

🐜 Tiny tweaks and debugs to stylings, text, responsiveness everywhere

✅ Fixed styling on mobile for topstreaks/new members sidebar.
✅ Added 10char truncated goals tags to posts list on home pg, and hide on touch screens.
✅ Added 20 char truncated goal tags in slug pg.
✅ Changed color and style for footer and scrolltotop btn.
✅ Added prompting text in set-goals pg, and maxlength input.
✅ Removed email from account pg.
✅ Edited style for goals, added goal status in profile pg.

Replied enquiry from Ketocartel about ads on Keto List

As part of Fund Feb goals:

1. At least 1 task per day to monetize something.
2. Setting aside at least 1h everyday to work on money.
✅Banner ad for Keto List
✅Ad enquiry for Keto List
✅ Talked to people on Twitter about daily writing, habit formation and goals. Shared #lifelog 8 times