<SYSTEM>This document contains comprehensive information about Tim's professional profile, portfolio, and blog content. It includes personal details, work experience, projects, achievements, certifications, and all published blog posts. This data is formatted for consumption by Large Language Models (LLMs) to provide accurate and up-to-date information about Tim's background, skills, and expertise as a Design Engineer.</SYSTEM>

# hiretimsf.com

> A minimal portfolio and blog to showcase my work as a Design Engineer.

## About

Hello! I am Tim, a Design Engineer based in San Francisco.

I specialize in building high-quality web, iOS, and Android apps with Next.js and Kotlin.

Outside of work, I enjoy running. I completed the 2026 San Francisco Bridge Half Marathon with my running club in [2 hours 21 minutes](https://live.chronotrack.com/event/91608/results/entry/79147347).

Connect with me to learn more about my work and projects!

### Personal Information

- First Name: Tumur
- Last Name: Bazarragchaa
- Display Name: Tim
- Location: San Francisco, CA
- Website: https://hiretimsf.com

### Social Links

- [Email](mailto:hiretimsf@gmail.com)
- [X (Twitter)](https://x.com/hiretimsf)
- [GitHub](https://github.com/hiretimsf)
- [LinkedIn](https://www.linkedin.com/in/hiretimsf/)
- [Facebook](https://www.facebook.com/hiretimsf/)
- [Strava](https://www.strava.com/athletes/128944314)

### Tech Stack

- [TypeScript](https://www.typescriptlang.org/)
- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
- [Java](https://www.java.com/)
- [Kotlin](https://kotlinlang.org/)
- [Jetpack Compose](https://developer.android.com/jetpack/compose)
- [Node.js](https://nodejs.org/)
- [React](https://react.dev/)
- [Next.js](https://nextjs.org/)
- [Tailwind CSS](https://tailwindcss.com/)
- [shadcn/ui](https://ui.shadcn.com/)
- [Radix UI](https://www.radix-ui.com/)
- [Motion](https://motion.dev/)
- [Git](https://git-scm.com/)
- [Supabase](https://supabase.com/)
- [Figma](https://www.figma.com/)
- [Adobe Photoshop](https://www.adobe.com/vn_en/products/photoshop.html)
- [ChatGPT](https://chatgpt.com/)

## Experience

### Design Engineer | Personal Projects

Duration: Jan, 2025 - Present

Skills: N/A

Designed and built client, SaaS, and portfolio products, including Choijin Temple Restaurant, Menu.ceo, and my portfolio website. Focused on responsive UI, product design, SEO, booking flows, dashboards, and clean frontend architecture using Next.js, TypeScript, Tailwind CSS, Supabase, and shadcn/ui.

- Featured on [WeAreDevelopers (March 2025)](https://www.wearedevelopers.com/en/magazine/561/web-developer-portfolio-inspiration-and-examples-march-2025-561)
- Reviewed by [Danny Thompson](https://x.com/DThompsonDev) on his [YouTube channel](https://www.youtube.com/watch?v=wfL5arWfeOw&t=2866s)

### Production Associate | Tesla

Duration: Oct, 2023 - Jan, 2025

Skills: Model S, Model X, Model Y, Functional Testing, Drive Tests, Assembly, Installation, Vehicle Testing, Vehicle Performance Testing, Vehicle Quality Control

- Performed end-of-line functional testing for Model S and Model X vehicles, helping verify quality before delivery.
- Conducted drive tests for Model 3 and Model Y to identify issues and confirm vehicle performance.
- Supported production by assembling body-side components and following detailed quality and safety procedures.
- Recognized with Employee Appreciation Awards for reliability, consistency, and strong work ethic.

### Design Engineer | Personal Projects

Duration: Jan, 2023 - Oct, 2023

Skills: N/A

Designed and built a full-stack blog platform with Next.js, TypeScript, Tailwind CSS, and Supabase. The app includes authentication, an admin panel, rich text editing, image uploads, search, pagination, and comments.

- [Earned 450+ GitHub stars](https://github.com/hiretimsf/Next.js-Blog-App)
- [Earned Vercel swag for open-source contributions (June 2024)](https://x.com/hiretimsf/status/1799500139662651526)

Designed and built my portfolio website with Next.js 13, TypeScript, Tailwind CSS, and shadcn/ui. Focused on SEO, MDX content, responsive UI, and a clean developer portfolio experience.

- [Earned 30+ GitHub stars](https://github.com/hiretimsf/Portfolio-Web-v1)

### Material Handler | Tesla

Duration: Jan, 2020 - Dec, 2022

Skills: Forklift, Model 3, Body-in-White, Inventory Management

- Operated forklifts and delivered parts to the Model 3 Body-in-White production line in a fast-paced manufacturing environment.
- Maintained reliable inventory flow and supported production teams with accurate, on-time material delivery.
- Followed safety, quality, and process standards while coordinating with multiple production areas.
- Recognized with a "Kick-Ass Worker" award for hard work, reliability, and team support.

### Android Developer | Personal Projects

Duration: Apr, 2017 - Jul, 2020

Skills: N/A

Designed, developed, and published Android portfolio apps to demonstrate mobile architecture, API integration, offline storage, testing, and UI implementation.

- [Portfolio App (Kotlin)](https://github.com/timtbdev/Android-Portfolio-App-Kotlin): Rebuilt the app in Kotlin with MVVM, Navigation, LiveData, DataBinding, Material Design, Coroutines, Retrofit, Room, and Koin. Improved data flow, image handling, and maintainability. Earned 50+ GitHub stars.

- [Portfolio App (Java)](https://github.com/timtbdev/Android-Portfolio-App-Java): Built the initial version in Java and XML using MVC architecture, Android SDK components, and Retrofit for API integration. Earned 10+ GitHub stars.

- [Portfolio Website](https://personal-website-76368.web.app/index.html): Built the initial version of my portfolio website with HTML, CSS, JavaScript, and Firebase.

### Server | MorningStar Senior Living

Duration: Oct, 2019 - Jan, 2020

Skills: Meal Service, Customer Service, Communication, Teamwork

- Served meals and drinks to senior residents with care, patience, and attention to detail.
- Maintained a clean, organized dining area and supported daily service operations.
- Built communication and customer service skills in a people-focused environment.

### Driver | Uber, Lyft, Doordash

Duration: Apr, 2017 - Oct, 2019

Skills: Customer Service, Time Management, Multi-tasking, Communication

- Completed 2,000+ rides and deliveries across Uber, Lyft, and DoorDash while maintaining safe, reliable service.
- Managed time, routes, customer communication, and platform expectations independently.
- Maintained a 5-star customer service rating through professionalism and consistency.

### Design Engineer | Renewable Energy Project

Duration: Nov, 2013 - Feb, 2016

Skills: N/A

- Designed and developed a responsive website for a renewable energy project using HTML, CSS, and JavaScript.
- Created digital marketing materials and visual assets to explain project benefits and improve public visibility.
- Combined design, content, and frontend development to support a real-world energy initiative.

### Android Developer | Personal Projects

Duration: Sep, 2012 - Nov, 2013

Skills: N/A

- Developed and launched a location-based marketplace app for buying and selling items within local neighborhoods, built on the Ushahidi open-source platform using Java, XML, and Eclipse IDE.
- Created a custom T-shirt design app featuring collections by Mongolian designer [@ido.dsnr](https://www.behance.net/ido_dsnr?locale=en_US), combining mobile development, visual design, and cultural inspiration.

### Marketing Associate | Unitel Group

Duration: Nov, 2009 - Aug, 2012

Skills: N/A

- Supported the launch of BlackBerry services in Mongolia, helping drive over 6,000 device sales.
- Created product marketing materials and coordinated launch communication across web and retail channels.
- Developed a product landing page with HTML and CSS, improving user engagement by 10%.

### Intern | Mercedes-Benz AG

Duration: Mar, 2007 - Aug, 2007

Skills: SQL, IBM Cognos Analytics, Cognos, Microsoft Access, Visual Basic

- Migrated 100+ logistics reports to a new Cognos BI system, improving reporting consistency for internal teams.
- Created custom SQL reports for Data Warehouse users and supported data access for logistics workflows.
- Gained early experience with enterprise reporting, databases, and cross-functional technical support.

## Education

### Bachelor's Degree, Computer Science | University of Applied Sciences of Mittweida

School URL: https://www.hs-mittweida.de/en/

Location: Mittweida, Germany, DE

Duration: Oct, 2002 - May, 2008

Type: Full-time

Skills: N/A

- Earned a Diplom (FH) in Computer Science, evaluated by WES as equivalent to a U.S. Bachelor's degree.
- Completed an accredited program covering algorithms, data structures, operating systems, databases, software engineering, computer networks, AI, electronics, and mathematics.
- Gained hands-on experience through labs, programming projects, internship work, and a diploma thesis completed with an A grade.
- Awarded a Konrad Adenauer Foundation scholarship.

### English as a Second Language | Berkeley City College

School URL: https://www.berkeleycitycollege.edu

Location: Berkeley, CA, US

Duration: Aug, 2016 - Jun, 2018

Type: Full-time

Skills: N/A

- Completed ESL speaking, writing, and grammar courses.
- Strengthened academic English for college-level study and professional communication.

### TOEFL Preparation / University Preparation Program | English Language Institute (ELI)

Location: San Francisco, CA, US

Duration: Jan, 2018 - Feb, 2018

Type: Full-time

Skills: N/A

- Completed TOEFL and university preparation coursework.
- Strengthened academic reading, listening, and oral communication skills.

### Intensive Program in English | San Francisco State University

School URL: https://www.sfsu.edu

Location: San Francisco, CA, US

Duration: Jun, 2016 - Aug, 2016

Type: Full-time

Skills: N/A

- Completed a 242-hour Intensive English Program.
- Studied advanced reading, writing, listening, and speaking in a full-time academic setting.

### German Language Examination (DSH) | University of Applied Sciences of Mittweida

School URL: https://www.hs-mittweida.de/en/

Location: Mittweida, Germany, DE

Duration: Oct, 2001 - Jul, 2002

Type: Full-time

Skills: N/A

- Completed intensive German language study.
- Passed the official DSH exam required for university admission in Germany.

## Projects

### Choijin Temple Restaurant

Project URL: https://choijin.mn

Skills: Next.js, TypeScript, Tailwind CSS, Supabase, Codex

A restaurant website for Choijin Temple with location pages, menu browsing, online table booking, and customer login. Built to help guests explore the restaurant and make reservations easily.

### Menu.ceo

Project URL: https://menu.ceo

Skills: Next.js, TypeScript, Tailwind CSS, Supabase, Codex

My first SaaS product for creating online restaurant menus. It helps restaurants publish web, mobile, and printable menus from one dashboard, with AI-assisted setup and custom short links.

### Ayalal Expo 2026

Project URL: https://ayalalexpo.mn

Skills: Next.js 16, Tailwind CSS 4, shadcn/ui, Resend, Figma

A client website for Ayalal Expo 2026, an outdoor and camping exhibition. Designed in Figma and built with Next.js 16, Tailwind CSS 4, shadcn/ui, and Resend.

### Full-Stack Blog App

Project URL: https://ubdotcafe.vercel.app

Skills: Next.js, TypeScript, Tailwind CSS, Supabase

A fully responsive full-stack blog app built with Next.js 13, TypeScript, TailwindCSS, and Supabase as backend. Based on Shadcn UI components.

### Portfolio App (Kotlin)

Project URL: https://play.google.com/store/apps/details?id=hiretimsf.com.app

Skills: Kotlin, MVVM, Jetpack Components, Material Design 2

Built with Kotlin, Jetpack Compose, Material 3, Hilt, Room, DataStore, Retrofit, and Coroutines.

### Renewable Energy Project

Project URL: https://ioco-5c746.web.app/eg/index.html

Skills: HTML, CSS, JavaScript, jQuery

Designed and developed from the ground up with HTML, CSS, and JavaScript to highlight the key advantages of a renewable energy initiative.

## Hire Pages

### Hire a Frontend Developer in San Francisco

URL: /hire/frontend-developer-san-francisco

Location: San Francisco

Role: Frontend Developer

Search intent: For founders, hiring managers, and product teams looking for a frontend developer in San Francisco who can move from UI idea to shipped interface.

Services:
- Responsive React and Next.js UI implementation
- Landing pages, portfolio pages, and product marketing pages
- Frontend polish for dashboards, forms, menus, and booking flows
- Tailwind CSS, shadcn/ui, accessibility, metadata, and SEO cleanup

Proof:
- Based in the San Francisco Bay Area and authorized to work in the United States.
- 5+ years of frontend development experience with React, Next.js, TypeScript, and Tailwind CSS.
- Builds web, iOS, and Android apps with Next.js, Kotlin, and Jetpack Compose.
- Built client sites, SaaS product surfaces, portfolio systems, and a full-stack open-source app with 460+ GitHub stars.

### Hire a Frontend Engineer in the Bay Area

URL: /hire/frontend-engineer-bay-area

Location: San Francisco Bay Area

Role: Frontend Engineer

Search intent: For Bay Area product teams that need frontend engineering with strong implementation detail, practical product judgment, and visible shipped work.

Services:
- Production frontend architecture for React and Next.js apps
- Design-system implementation with reusable TypeScript components
- SEO-ready page builds with metadata, sitemap coverage, and schema
- Client and product surfaces for startups, restaurants, and event businesses

Proof:
- San Francisco Bay Area based, U.S. work authorized, and available for practical product UI work.
- Built Menu.ceo as a SaaS product direction for restaurant menus and dashboards.
- Delivered client-facing sites for Choijin Temple Restaurant and Ayalal Expo 2026.

### Hire a Design Engineer in San Francisco

URL: /hire/design-engineer-san-francisco

Location: San Francisco

Role: Design Engineer

Search intent: For teams searching for a design engineer in San Francisco who can connect product thinking, visual polish, and frontend implementation.

Services:
- Product UI design and frontend implementation
- Responsive web app screens, landing pages, and conversion flows
- iOS and Android app surfaces with Kotlin and Jetpack Compose
- Design-system components, spacing, typography, and interaction polish
- Portfolio, SaaS, restaurant, event, and dashboard interfaces

Proof:
- Built this hiring site as a living proof of design engineering, SEO, and content systems.
- Created client-facing product experiences for Choijin Temple Restaurant and Ayalal Expo 2026.
- Public proof includes shadcn, Marc Lou, Danny Thompson, and WeAreDevelopers mentions.

### Hire a Design Engineer in the Bay Area

URL: /hire/design-engineer-bay-area

Location: San Francisco Bay Area

Role: Design Engineer

Search intent: For Bay Area teams looking for someone who can own product UI quality from idea to shipped frontend.

Services:
- Design engineering for product pages, SaaS UI, and client websites
- Reusable components with React, TypeScript, Tailwind CSS, and shadcn/ui
- User-facing workflows such as bookings, menus, contact forms, and dashboards
- Content, SEO, and metadata support for pages meant to be discovered

Proof:
- Bay Area based and actively building public-facing portfolio, SaaS, and client work.
- Experience across web, iOS, Android, product marketing, and operations gives me practical product judgment.
- The site includes MDX content, LLM-readable routes, schema, sitemap, RSS, and analytics-aware implementation.

### Hire a Next.js Developer in San Francisco

URL: /hire/nextjs-developer-san-francisco

Location: San Francisco

Role: Next.js Developer

Search intent: For teams that need a Next.js developer in San Francisco who can build modern, content-friendly, SEO-ready product surfaces.

Services:
- Next.js app router pages, metadata, sitemap, robots, and schema
- MDX content systems for blogs, portfolios, and searchable project pages
- Supabase-backed app surfaces, forms, auth-ready flows, and dashboards
- Frontend performance and UI polish for production web experiences

Proof:
- Built hiretimsf.com with Next.js, MDX, structured data, RSS, sitemap, and LLM-readable routes.
- Built a full-stack Next.js and Supabase blog app with 460+ GitHub stars.
- Built client and product work with Next.js, Tailwind CSS, shadcn/ui, Resend, and Supabase.

### Hire a React Developer in the Bay Area

URL: /hire/react-developer-bay-area

Location: San Francisco Bay Area

Role: React Developer

Search intent: For teams looking for a React developer in the Bay Area who can build reliable components and polished user-facing screens.

Services:
- React and TypeScript components for product interfaces
- Responsive layouts, forms, navigation, cards, lists, and dashboards
- Component cleanup, interaction polish, and design-system alignment
- Next.js, Tailwind CSS, shadcn/ui, Supabase, and content-driven UI

Proof:
- 5+ years of frontend experience with React, Next.js, TypeScript, and Tailwind CSS.
- Built and shipped client, SaaS, portfolio, and open-source React/Next.js projects.
- Public work demonstrates UI detail, content architecture, and practical product thinking.

## Download App

The Hire Tim Android app is available through a Google Play closed test.

- App page: https://hiretimsf.com/download
- Android Play Store listing: https://play.google.com/store/apps/details?id=hiretimsf.com.app
- Closed test opt-in: https://play.google.com/apps/testing/hiretimsf.com.app
- Package ID: hiretimsf.com.app

Testers can join the closed test on the web, then open the Android Play Store listing on an Android phone to install the app.


# Privacy Policy

Last updated: June 6, 2026

## Overview

This Privacy Policy explains how Tim Bazarragchaa, operating hiretimsf.com and the Portfolio Android and iOS apps associated with HireTimSF, collects, uses, and protects information. It applies to the portfolio website at hiretimsf.com and to the Android and iOS app experiences.

The site and apps are designed as portfolio and contact experiences. They do not require you to create an account, and they are not intended to collect sensitive personal information.

## Information We Collect

We collect information you choose to provide, such as your name, email address, message content, and related project details when you contact Tim through the website, email, or linked communication channels.

We may also receive limited technical information from normal website and app usage, such as browser type, device type, pages viewed, referring URLs, approximate location derived from IP address, timestamps, and diagnostic events.

## Website Analytics

hiretimsf.com uses Google Analytics to understand aggregate traffic, page performance, and how visitors discover portfolio content. Google Analytics may use cookies or similar technologies to measure usage and provide reports.

Analytics information is used to improve the website, understand what content is useful, and diagnose technical issues. It is not used to sell personal information.

## Portfolio Android and iOS Apps

The Portfolio Android and iOS apps are used to view Tim's work, blog posts, project details, profile information, and contact links. The apps do not require account registration and are designed not to collect precise location, contacts, photos, messages, microphone recordings, or payment information.

The apps may use Firebase Analytics, Firebase Crashlytics, and Firebase Performance Monitoring to collect app usage events, crash reports, app performance data, device and operating system information, app version, timestamps, and diagnostic events. This information is used to understand app usage, find crashes, improve reliability, and understand app performance.

If the apps open hiretimsf.com, email, GitHub, LinkedIn, Google Play, the App Store, or other external services, those services may process information under their own privacy policies. Google Play, the App Store, Android, and iOS platform services may provide app install, crash, device, and diagnostic data to help maintain the apps.

## How Information Is Used

Information is used to respond to messages, evaluate project or hiring inquiries, maintain the website and Android and iOS apps, monitor reliability, prevent abuse, and improve portfolio content and user experience.

- Respond to contact form submissions and email inquiries.
- Operate, secure, and troubleshoot hiretimsf.com and the Portfolio Android and iOS apps.
- Measure aggregate website performance and content engagement.
- Comply with applicable legal, security, and platform requirements.

## Sharing and Service Providers

Information may be processed by service providers that help operate the website, analytics, email delivery, hosting, repository links, app distribution, and communication tools. These providers process information according to their own terms and privacy commitments.

We do not sell personal information. We may disclose information if required by law, to protect rights and security, or to respond to valid legal requests.

## Data Retention

Contact messages and related correspondence may be kept for as long as needed to respond, manage professional opportunities, maintain business records, or resolve disputes. Analytics and diagnostic data are retained according to the settings of the services that collect them.

When information is no longer needed, it will be deleted, anonymized, or allowed to expire through the relevant service provider's retention controls.

## Your Choices and Rights

You can choose not to submit personal information through the contact form. You can also disable cookies or analytics-related storage in your browser settings, although some website features may behave differently.

Depending on where you live, you may have rights to request access, correction, deletion, restriction, or portability of personal information. To make a request, contact Tim using the email address below. Portfolio Android and iOS app users can also request deletion through https://hiretimsf.com/data-deletion.

## Data Deletion Requests

Users of the Portfolio Android and iOS apps can request deletion of app-related data at https://hiretimsf.com/data-deletion.

Because the app does not provide user accounts, some anonymous or aggregated analytics, diagnostics, crash, and performance data may not be reasonably linkable to a specific person. Data that can be associated with a request and is available for deletion through the services used by the app will be reviewed and deleted where appropriate.

## Children's Privacy

hiretimsf.com and the Portfolio Android and iOS apps are not directed to children under 13, and we do not knowingly collect personal information from children under 13. If you believe a child provided personal information, please contact Tim so it can be reviewed and deleted where appropriate.

## Security

Reasonable technical and organizational measures are used to protect information against unauthorized access, loss, misuse, or alteration. No website, app, network, or transmission method can be guaranteed to be completely secure.

## Changes to This Policy

This Privacy Policy may be updated from time to time to reflect changes to the website, Android and iOS apps, service providers, legal requirements, or privacy practices. The last updated date will be revised when changes are made.

## Contact

If you have questions or requests about this Privacy Policy, contact Tim Bazarragchaa at hiretimsf@gmail.com.

- Website: https://hiretimsf.com
- Data deletion: https://hiretimsf.com/data-deletion
- Android app: Portfolio
- iOS app: Portfolio
- Location: San Francisco, California, United States

# HireTimSF Data Deletion

Last updated: June 6, 2026

## Overview

This page explains how users of the HireTimSF Portfolio Android and iOS apps can request deletion of app-related data.

The apps do not provide account creation, login, comments, uploads, messaging, purchases, or user-generated content.

## How to request deletion

Send an email to hiretimsf@gmail.com with the subject line "HireTimSF Data Deletion Request".

- Include the app name and platform: HireTimSF Portfolio Android app or HireTimSF Portfolio iOS app.
- Include the approximate date or date range when you used the app.
- Include any details that may help identify the app-related data you want deleted.

## Data that can be deleted

Deletion requests apply to app-related analytics, diagnostics, crash, and performance data that can be associated with your request and that is available for deletion through the services used by the app.

Because the app does not create user accounts, some app telemetry may be anonymous or aggregated and may not be reasonably linkable to a specific person.

## Data that may be kept

Aggregated, anonymized, security, abuse-prevention, or legally required records may be retained when they cannot reasonably be associated with an individual user or when retention is required for legitimate purposes.

## Response time

Requests are reviewed and handled as soon as reasonably possible. If additional information is needed to process the request, a reply will be sent to the email address used for the request.

## Contact

For questions about data deletion, contact hiretimsf@gmail.com.

## Blog

---
title: "My Portfolio Android App Is Live on Google Play"
description: "A short update: my HireTimSF Android portfolio app is now released on Google Play, while the iOS app is still rejected and I am working on an App Store appeal."
last_updated: "June 19, 2026"
source: "https://hiretimsf.com/blog.mdx/android-app-released-ios-app-rejected"
---

# My Portfolio Android App Is Live on Google Play

A short update: my HireTimSF Android portfolio app is now released on Google Play, while the iOS app is still rejected and I am working on an App Store appeal.

## Android app is live

My HireTimSF portfolio Android app is now released on Google Play.

<figure>
  ![HireTimSF portfolio Android app listing on Google
  Play](/images/blog/android-app-released-ios-app-rejected/google-play-store.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    HireTimSF is live on Google Play.
  </figcaption>
</figure>

The app already has a few installs, and the Play Console shows the production
release is live.

<figure>
  ![Google Play Console dashboard for HireTimSF showing production release and
  installs](/images/blog/android-app-released-ios-app-rejected/play-console.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Google Play Console after release.
  </figcaption>
</figure>

## iOS is still rejected

In my previous post,
[My iOS App Was Rejected, Then I Went to Next.js Night in SF](/blog/post/ios-app-rejected-nextjs-night-sf),
I wrote about the App Store rejection.

The Android app is now live, but the iOS app is still rejected. I am still
trying to figure out how to appeal the App Store Review decision or improve the
app so it has a clearer reason to be on the App Store.

<figure>
  ![HireTimSF app download page showing Google Play available and App Store
  pending
  approval](/images/blog/android-app-released-ios-app-rejected/download-page.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Android is live. iOS still needs approval.
  </figcaption>
</figure>

## Takeaway

This is progress. Android is shipped, and iOS is still a challenge. I will keep
working through the App Store review process and update the app if needed.


Last updated on June 19, 2026

---
title: "My Portfolio Domain Rating Improved From 18 to 25"
description: "A follow-up on my portfolio SEO work: Domain Rating improved from 18 to 25, and total Google Search clicks improved from 5 to 80."
last_updated: "June 19, 2026"
source: "https://hiretimsf.com/blog.mdx/domain-rating-25-seo-results"
---

# My Portfolio Domain Rating Improved From 18 to 25

A follow-up on my portfolio SEO work: Domain Rating improved from 18 to 25, and total Google Search clicks improved from 5 to 80.

## SEO results update

In my previous post,
[18 Days After Launching My Portfolio on Product Hunt and Peerlist](/blog/post/product-hunt-peerlist-seo-launch),
I shared what I did to improve SEO for my portfolio website,
[hiretimsf.com](https://hiretimsf.com).

<figure>
  ![Ahrefs metrics overlay showing hiretimsf.com Domain Rating
  18](/images/blog/domain-rating-25-seo-results/domain-rating-before.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Before: Ahrefs showed Domain Rating 18.
  </figcaption>
</figure>

## Domain Rating went from 18 to 25

At that time, my Domain Rating was 18. Now Ahrefs shows 25.

<figure>
  ![Ahrefs metrics overlay showing hiretimsf.com Domain Rating
  25](/images/blog/domain-rating-25-seo-results/domain-rating-after.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    After: Domain Rating improved to 25.
  </figcaption>
</figure>

Google Search clicks also improved from 5 to 80.

<figure>
  ![Google Search Impact badge showing 80 total search
  clicks](/images/blog/domain-rating-25-seo-results/google-search-impact.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Google Search clicks improved to 80.
  </figcaption>
</figure>

## Takeaway

SEO takes time, but the work is starting to show results. I will keep improving
the site, writing useful posts, and tracking the numbers.


Last updated on June 19, 2026

---
title: "How I Improved My Sleep"
description: "My personal story of running every morning, quitting smoking, stopping alcohol, changing caffeine, and finally improving my sleep after years of sleep apnea and short nights."
last_updated: "May 21, 2026"
source: "https://hiretimsf.com/blog.mdx/how-i-improved-my-sleep"
---

# How I Improved My Sleep

My personal story of running every morning, quitting smoking, stopping alcohol, changing caffeine, and finally improving my sleep after years of sleep apnea and short nights.

Some people wake up and crave coffee. The first cup feels like the best feeling on earth.

That is how I feel about running.

I run almost every morning, usually 5K before I start my daily routine. I do it because it keeps me calm throughout the day. No phone, no headphones, no watch. Just my apartment key and a small running flashlight. Running early in the morning feels like meditation.

Over the last 10 years, I have run four full marathons, two half marathons, and two 50K trail races. My medals remind me that I did not change my life in one day. I changed it one morning at a time.

<figure>
  ![Running race photo
  collage](/images/blog/how-i-improved-my-sleep/race-collage.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Ten years of running, from local races to marathons and trail runs.
  </figcaption>
</figure>

<figure>
  ![Running medals from marathons, half marathons, and trail
  races](/images/blog/how-i-improved-my-sleep/medals.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Every medal represents one season of training, recovery, and learning.
  </figcaption>
</figure>

This year, I signed up for the 2026 San Francisco Half Marathon because the full marathon was already sold out when I remembered to register. I also signed up for the Berkeley Half Marathon in November 2026.

## Why running?

I started running in 2016 because I was struggling with sleep apnea and I did not know what else to do. At that time, sleeping five hours felt normal for me. I heard that running could help with sleep, so I started running.

I quit smoking and stopped drinking alcohol. I lost some weight and started going to the gym regularly.

<figure>
  ![Before and after running
  transformation](/images/blog/how-i-improved-my-sleep/cover.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Running started as a way to fix my sleep, but it became much bigger than
    that.
  </figcaption>
</figure>

## The Problem

Even after all of this, my sleep was still not where I wanted it to be.

I had quit smoking. I stopped drinking alcohol. I exercised. I ran every day. I ate better. I lost weight.

But most nights, I still slept only around five hours.

That was frustrating because running gave me the best feedback about my body. Every morning, I could feel how well I recovered the night before. If my sleep was bad, my run told me immediately.

Running became the best indicator of my sleep quality.

## Melatonin

Because I still could not sleep well, I started taking melatonin every night before bed. I was taking 20 mg because it helped me fall asleep.

Then one night, I forgot to take it.

I slept almost eight hours.

I was shocked.

So I stopped taking melatonin. For the first three days, my sleep became messy again. But after the fourth day, it started improving. I was suddenly sleeping around six hours a night. For me, that was a huge milestone.

I still was not sleeping eight hours every night. Some nights were six or seven hours. Some nights were still five. But it was progress.

## Caffeine

The next big change was caffeine.

I stopped drinking caffeine, and my sleep improved again. This time, I was able to sleep seven to eight hours almost every night.

That was a major change.

For years, I thought running was the main answer. Running helped my body, my mood, and my discipline. But caffeine was still affecting my sleep more than I wanted to admit.

## Magnesium

Even after stopping caffeine, I still felt something was missing.

I could sleep longer, but I wanted deeper recovery. I wanted to wake up and feel it during my morning run.

So I tried magnesium.

I first tried magnesium oxide from Target, but it did not help much. When I increased the dose, I slept longer, but I also felt drowsy.

Then I switched to magnesium glycinate, 240 mg before bed.

For me, it worked. I started sleeping deeper and waking up feeling more recovered.

## What Actually Helped Me

Looking back, my sleep improved in layers.

Running gave me discipline and calm. Quitting smoking removed one of the biggest bad habits from my life. Stopping alcohol helped my recovery. Losing weight helped my body. Going to the gym made me stronger. Stopping melatonin helped me reset. Stopping caffeine gave me longer sleep. Magnesium glycinate helped me sleep deeper.

No single habit fixed everything.

The improvement came from stacking small changes and listening to my body.

## Final Thought

Sleep did not improve in one night. It took years of trying, failing, adjusting, and starting again the next morning.

Running taught me to keep showing up. Improving my sleep taught me to pay attention, change what was not working, and stay patient until I found a better way.


Last updated on May 21, 2026

---
title: "Indie Hackers Meetup in San Francisco"
description: "I went to an Indie Hackers meetup in San Francisco organized by Marc Lou, met founders and builders from around the world, and came back energized."
last_updated: "May 8, 2026"
source: "https://hiretimsf.com/blog.mdx/indie-hackers-meetup-san-francisco"
---

# Indie Hackers Meetup in San Francisco

I went to an Indie Hackers meetup in San Francisco organized by Marc Lou, met founders and builders from around the world, and came back energized.

## The meetup

I went to an Indie Hackers meetup in San Francisco, and it was one of those events that reminded me why I love building and meeting people in tech.

The meetup was organized by [Marc Lou](https://x.com/marclou), and the energy was exactly what I hoped for: builders talking openly about products, growth, launches, and what they are trying next.

[View Marc Lou's meetup post on X](https://x.com/marclou/status/2046618364790087718)

<figure>
  ![Indie Hackers meetup group photo in San
  Francisco](/images/blog/indie-hackers-meetup-san-francisco/cover.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Indie Hackers meetup in San Francisco with builders from around the world.
  </figcaption>
</figure>

## Silicon Mania

The meetup also got broadcast on [Silicon Mania](https://x.com/siliconmania_), and I was in it. Silicon Mania is a tech media project by [Adil Mania](https://x.com/adilmania) that turns startup and founder moments into short, funny, internet-native videos. It makes tech feel more alive than a normal event recap.

<figure>
  ![Tim Baz highlighted in a Silicon Mania broadcast from the Indie Hackers
  meetup](/images/blog/indie-hackers-meetup-san-francisco/silicon-mania-broadcast.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    I spotted myself in the Silicon Mania broadcast.
  </figcaption>
</figure>

## Builders from everywhere

I met indie hackers from Brazil, Germany, Portugal, the Netherlands, India, and many other places. Everyone had a different background, but the conversations were very practical: what people are shipping, what is working, what is hard, and how they are finding customers.

That kind of environment is productive because it is not just small talk. You can learn from someone else's launch, share what you are working on, and leave with a clearer idea of what to try next.

## People I met

I also met [Richie McIlroy](https://x.com/richiemcilroy), the founder of [Cap](https://x.com/cap). It was great to meet someone building a product I had already seen online.

<figure>
  ![Tim Baz with Richie McIlroy, founder of
  Cap](/images/blog/indie-hackers-meetup-san-francisco/richie-mcilroy.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    With Richie McIlroy, founder of Cap.
  </figcaption>
</figure>

I also met [Ilyas Jarboua](https://x.com/illyism), the SEO Roast guy. We had a fun conversation, and I liked how direct and practical the SEO conversations were.

<figure>
  ![Tim Baz with Marc Lou and Ilyas Jarboua at the Indie Hackers
  meetup](/images/blog/indie-hackers-meetup-san-francisco/marc-lou-illyism.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    With Marc Lou and Ilyas Jarboua at the meetup.
  </figcaption>
</figure>

## Productive and fun

The meetup was productive and fun. I got to meet people building real products, hear stories from founders around the world, and spend time with a community that understands how much energy it takes to keep shipping.

I left feeling more motivated to keep building, keep sharing, and keep showing up.


Last updated on May 8, 2026

---
title: "My iOS App Was Rejected, Then I Went to Next.js Night in SF"
description: "A short update about Next.js Night in San Francisco, AI billboards, the Vercel community, and my rejected SwiftUI portfolio app."
last_updated: "June 10, 2026"
source: "https://hiretimsf.com/blog.mdx/ios-app-rejected-nextjs-night-sf"
---

# My iOS App Was Rejected, Then I Went to Next.js Night in SF

A short update about Next.js Night in San Francisco, AI billboards, the Vercel community, and my rejected SwiftUI portfolio app.

I went to Next.js Night in San Francisco and had a great time meeting local Next.js developers, builders, and people working on personal projects.

<BlogImageCarousel
  ariaLabel="Next.js Night in San Francisco photos"
  images={[
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/cover.webp",
    alt: "Next.js Night venue in San Francisco with purple lighting",
  },
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/nextjs-night-talk.webp",
    alt: "Speaker presenting at Next.js Night in San Francisco",
  },
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/nextjs-hat.webp",
    alt: "Tim wearing a Next.js hat on the way to Next.js Night",
  },
]}
/>

## Next.js Night in SF

People talked about agents, Next.js, Vercel, tech stacks, and side projects. I also met people from the Next.js and Vercel team.

I asked if [shadcn](https://x.com/shadcn) was there because I am a big fan of [shadcn/ui](https://ui.shadcn.com/). I did not get to meet him this time, but I already have a ticket for Vercel Ship in October 2026. Hopefully I can meet him there.

I also wore my Next.js hat. I received it for my [open source contribution](/blog/post/my-open-source-contribution), so it means a lot to me.

## SF and AI billboards

On the way there, I noticed AI billboards everywhere. Even near Chinatown, around Chinese grocery stores and small local businesses, the streets were full of ads about agents, Codex, and AI infrastructure.

<BlogImageCarousel
  ariaLabel="AI billboards in San Francisco"
  images={[
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/judgment-labs-billboard.webp",
    alt: "Judgment Labs AI agents billboard in San Francisco",
  },
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/codex-billboard.webp",
    alt: "OpenAI Codex billboard above buildings in San Francisco",
  },
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/settled-billboard.webp",
    alt: "AI-themed billboard in San Francisco reading if you are reading this it is already settled",
  },
]}
/>

SF is crazy that way. You see the hype on the street, then a few blocks later you meet the people building the tools.

## My iOS app was rejected

Around the same time, Apple rejected my iOS portfolio app. They said it was not useful for a wider audience.

That was disappointing, but I understand the feedback. A portfolio app shows my SwiftUI work, but the App Store expects an app to be useful for more people.

<figure>
  ![App Store Connect screen showing the iOS app submitted for
  review](/images/blog/ios-app-rejected-nextjs-night-sf/app-store-connect-submitted.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    My iOS app submission in App Store Connect
  </figcaption>
</figure>

Now I need to either improve the concept or build another app that solves a clearer problem.

## Web, Android, and iOS

I started learning Android development around 2016. Later, I focused on Next.js, Tailwind CSS, TypeScript, and React. Now I am learning Swift and SwiftUI.

<BlogImageCarousel
  ariaLabel="Portfolio app development screenshots"
  aspectRatioClassName="aspect-[16/10]"
  images={[
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/android-studio-portfolio-app.webp",
    alt: "Android Studio showing the Android portfolio app with Jetpack Compose",
  },
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/ios-portfolio-app-swiftui.webp",
    alt: "Xcode showing the SwiftUI iOS portfolio app running in the iPhone simulator",
  },
  {
    src: "/images/blog/ios-app-rejected-nextjs-night-sf/portfolio-app-devices.webp",
    alt: "Portfolio app running across Android and iOS devices next to a laptop",
  },
]}
/>

I built [HireTimSF.com](https://hiretimsf.com/) as my portfolio website. I also built an Android portfolio app and submitted it to the Google Play Store, where it is currently in review.

<figure>
  ![HireTimSF app download page showing Google Play and App Store
  buttons](/images/blog/ios-app-rejected-nextjs-night-sf/download-app-page.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    The download page for my portfolio apps
  </figcaption>
</figure>

The iOS version did not pass review, so I need to rethink the app idea.

## What comes next

I will still publish the iOS app on TestFlight. If anyone is interested, they can try it there.

For the App Store, I need something more useful than a portfolio. That is the next challenge.

Next.js Night reminded me why I keep building: meet people, learn, ship, and improve the idea.


Last updated on June 10, 2026

---
title: "Joining a Running Club Made Running More Joyful"
description: "After 10 years of running mostly solo, joining a Saturday running club on the Iron Horse Trail became one of the best decisions I ever made."
last_updated: "May 25, 2026"
source: "https://hiretimsf.com/blog.mdx/joining-running-club-iron-horse-trail"
---

# Joining a Running Club Made Running More Joyful

After 10 years of running mostly solo, joining a Saturday running club on the Iron Horse Trail became one of the best decisions I ever made.

I have been running solo for the last 10 years. I loved the quiet miles, but this year I joined a running club, and it became one of the best decisions I have made.

Our [running club](https://www.strava.com/clubs/1654250) runs every Saturday on the Iron Horse Trail through the Danville, San Ramon, and Walnut Creek area.

## Running With Others

Running with a group makes the miles feel lighter. You do not feel tired or alone in the same way. Someone is always next to you, in front of you, or behind you, and the group helps you keep moving.

You also learn from everyone. Some runners push the pace. Some are great at pacing. Some know how to keep the mood light when the run gets hard.

<figure>
  ![Tim celebrating after a group run in the East Bay
  sunshine](/images/blog/joining-running-club-iron-horse-trail/group-run-celebration.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Running as a group turns an ordinary morning into something memorable.
  </figcaption>
</figure>

## The Best Part

The best conversations happen during the run. Talking while moving feels easy, honest, and uplifting. We talk about training, races, work, family, food, travel, and life.

I still love solo runs, but the club added community to something I already loved. Now Saturday running is not just another workout. It is miles, conversation, encouragement, and friendship on the Iron Horse Trail.


Last updated on May 25, 2026

---
title: "How My Open Source Next.js App Got 460+ GitHub Stars and Vercel Recognition"
description: "I built an open source full stack Next.js and Supabase blog app that earned 460+ GitHub stars and official recognition from Vercel's Lee Robinson."
last_updated: "January 20, 2026"
source: "https://hiretimsf.com/blog.mdx/my-open-source-contribution"
---

# How My Open Source Next.js App Got 460+ GitHub Stars and Vercel Recognition

I built an open source full stack Next.js and Supabase blog app that earned 460+ GitHub stars and official recognition from Vercel's Lee Robinson.

## Project

I built and open sourced a full stack Next.js and Supabase [blog-app](https://github.com/hiretimsf/Next.js-Blog-App) with over 460 GitHub stars. It is a multi user platform with auth, database, storage, and CMS, built with TypeScript and modern Next.js features.

<figure>
  ![Project
  Frontend](/images/blog/my-open-source-contribution/project-frontend.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Frontend
  </figcaption>
</figure>

<figure>
  ![Project
  Backend](/images/blog/my-open-source-contribution/project-backend.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Backend
  </figcaption>
</figure>

## Submission

<figure>
  ![Lee Robinson's post about my open source
  contribution](/images/blog/my-open-source-contribution/leerob-post.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    This is how I submitted my project to Vercel Open Source Program
  </figcaption>
</figure>

When [Lee Robinson](https://x.com/hiretimsf/status/1785051295721947348) tweeted this, I shared my project.

## Recognition

A few weeks later, I received Vercel swag in the mail. It was my first real recognition for open source work, and it motivated me to keep building. I am very grateful.

<figure>
  ![Vercel swag](/images/blog/my-open-source-contribution/recognition.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Recognition from Vercel
  </figcaption>
</figure>


Last updated on January 20, 2026

---
title: "My Developer Portfolio Was Featured on WeAreDevelopers"
description: "My web developer portfolio was selected for the WeAreDevelopers March 2025 portfolio inspiration list, curated by Daniel Cranney."
last_updated: "March 14, 2025"
source: "https://hiretimsf.com/blog.mdx/my-portfolio-was-featured"
---

# My Developer Portfolio Was Featured on WeAreDevelopers

My web developer portfolio was selected for the WeAreDevelopers March 2025 portfolio inspiration list, curated by Daniel Cranney.

## Introduction

I'm excited to share that my portfolio was featured on **WeAreDevelopers**! 🎉

<figure>
  ![WeAreDevelopers portfolio
  feature](/images/blog/my-portfolio-was-featured/featured.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    My portfolio was featured on WeAreDevelopers!
  </figcaption>
</figure>

## Thank You

A huge thank you to [Daniel Cranney](https://x.com/danielcranney) for including my work. I really appreciate it! 🙌🚀

<figure>
  ![WeAreDevelopers portfolio
  feature](/images/blog/my-portfolio-was-featured/daniel.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Daniel Cranney
  </figcaption>
</figure>

## Conclusion

You can check out the full article here: [Web Developer Portfolio Inspiration and Examples - March 2025](https://www.wearedevelopers.com/en/magazine/561/web-developer-portfolio-inspiration-and-examples-march-2025-561)

This recognition means a lot to me and motivates me to keep building. Thank you to the community for the ongoing support!


Last updated on March 14, 2025

---
title: "18 Days After Launching My Portfolio on Product Hunt and Peerlist"
description: "A short update on launching my portfolio on Product Hunt and Peerlist, checking Domain Rating, Search Console links, and improving site performance."
last_updated: "June 10, 2026"
source: "https://hiretimsf.com/blog.mdx/product-hunt-peerlist-seo-launch"
---

# 18 Days After Launching My Portfolio on Product Hunt and Peerlist

A short update on launching my portfolio on Product Hunt and Peerlist, checking Domain Rating, Search Console links, and improving site performance.

## Launch update

I launched my portfolio website, [hiretimsf.com](https://hiretimsf.com), on
Product Hunt and Peerlist.

<figure>
  ![HireTim Product Hunt launch page showing the portfolio website
  listing](/images/blog/product-hunt-peerlist-seo-launch/cover.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    HireTim on Product Hunt, 18 days after launch.
  </figcaption>
</figure>

Peerlist got 24 upvotes, 2 comments, and 49 views.

<figure>
  ![HireTim Peerlist launch page showing 24 upvotes, 2 comments, and 49
  views](/images/blog/product-hunt-peerlist-seo-launch/peerlist-launch.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    HireTim on Peerlist Launchpad.
  </figcaption>
</figure>

## After 18 days

After 18 days, my Domain Rating is still 18.

<figure>
  ![Ahrefs metrics overlay showing hiretimsf.com Domain Rating
  18](/images/blog/product-hunt-peerlist-seo-launch/domain-rating.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Ahrefs still shows Domain Rating 18.
  </figcaption>
</figure>

Product Hunt and Peerlist also are not listed yet as external links in Google
Search Console.

It seems like this takes time. Google Search Console and SEO tools do not show
every new link immediately.

## Performance work

While waiting, I focused on what I can control. I optimized the site for mobile,
desktop, and SEO. On desktop, PageSpeed Insights shows 100 for Performance,
Accessibility, Best Practices, and SEO.

<figure>
  ![PageSpeed Insights desktop report showing 100 scores for Performance,
  Accessibility, Best Practices, and
  SEO](/images/blog/product-hunt-peerlist-seo-launch/performance.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    PageSpeed Insights desktop scores after performance optimization.
  </figcaption>
</figure>

## Takeaway

Launching on Product Hunt and Peerlist helped with visibility, but it did not
change my Domain Rating right away. SEO takes time, so I will keep improving the
site and monitoring the results.


Last updated on June 10, 2026

---
title: "I Rebuilt My Kotlin XML Portfolio App with Jetpack Compose"
description: "I converted my old Kotlin XML Android portfolio app into a modern Jetpack Compose app with Material 3, Hilt, DataStore, Navigation, Coil, Retrofit, and a full visual refresh."
last_updated: "May 26, 2026"
source: "https://hiretimsf.com/blog.mdx/rebuilding-android-portfolio-app-jetpack-compose"
---

# I Rebuilt My Kotlin XML Portfolio App with Jetpack Compose

I converted my old Kotlin XML Android portfolio app into a modern Jetpack Compose app with Material 3, Hilt, DataStore, Navigation, Coil, Retrofit, and a full visual refresh.

<BlogImageCarousel
  ariaLabel="Old Android portfolio app screenshots"
  images={[
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-01.webp",
    alt: "Original Android portfolio app loading screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-02.webp",
    alt: "Original Android portfolio app introduction screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-03.webp",
    alt: "Original Android portfolio app background screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-04.webp",
    alt: "Original Android portfolio app passion screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-05.webp",
    alt: "Original Android portfolio app profile screen in light theme",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-06.webp",
    alt: "Original Android portfolio app navigation drawer in light theme",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-07.webp",
    alt: "Original Android portfolio app profile screen in dark theme",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-08.webp",
    alt: "Original Android portfolio app portfolio list screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/old-app-screen-09.webp",
    alt: "Original Android portfolio app project detail screen",
  },
]}
/>

In 2019, I built my Android portfolio app with Kotlin and XML layouts.

I was still learning Android development at the time, and this project helped me learn a lot through real practice. I spent around six months working on it, fixing bugs, trying new ideas, and improving the app step by step.

It used MVVM, Android Jetpack, Firebase, Room, Retrofit, navigation, animations, and many other features that helped me better understand how Android apps are built in the real world.

<div className="my-8 aspect-video w-full overflow-hidden rounded-lg border border-border bg-muted">
  <iframe className="size-full" src="https://www.youtube.com/embed/YjVJyqcv5I8" title="Original Android portfolio app preview" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen />
</div>

That project got more attention than I expected. The original repo, [Android-Portfolio-App-Kotlin](https://github.com/hiretimsf/Android-Portfolio-App-Kotlin), has 50+ GitHub stars, 19 forks, and was mentioned by Mitch Tabian in [Codingwithmitch App Reviews #1](https://youtu.be/OHo64fiWx2k?si=GkqgYPQhK7xTW4Gc\&t=811).

<div className="my-8 aspect-video w-full overflow-hidden rounded-lg border border-border bg-muted">
  <iframe className="size-full" src="https://www.youtube.com/embed/OHo64fiWx2k?start=811" title="Codingwithmitch App Reviews #1" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen />
</div>

Now I rebuilt the app from the ground up with Kotlin and Jetpack Compose. The new version is currently in Google Play Store closed testing.

## What changed

The biggest change is the UI layer. The old app was built with XML layouts. The new app is built with Jetpack Compose, which made it much easier to think in reusable UI components, state, themes, and screen structure.

<BlogImageCarousel
  ariaLabel="New Android portfolio app screenshots"
  aspectRatioClassName="aspect-[9/16]"
  images={[
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-01.webp",
    alt: "New Android portfolio app cover screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-02.webp",
    alt: "New Android portfolio app profile screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-03.webp",
    alt: "New Android portfolio app portfolio screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-04.webp",
    alt: "New Android portfolio app blog screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-05.webp",
    alt: "New Android portfolio app settings screen",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-06.webp",
    alt: "New Android portfolio app profile screen in dark theme",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-07.webp",
    alt: "New Android portfolio app navigation drawer in dark theme",
  },
  {
    src: "/images/blog/android-compose-portfolio-app/app-screen-08.webp",
    alt: "New Android portfolio app contact screen in dark theme",
  },
  {
    src: "new-app-placeholder",
    alt: "Placeholder for a future new Android portfolio app screenshot",
    placeholder: true,
  },
]}
/>

## The new Android stack

For the rebuild, I wanted to use a modern Android stack and keep the project closer to current Android development practices.

The app now uses:

* Kotlin
* Jetpack Compose
* Material 3
* Navigation Compose and Navigation 3
* Hilt for dependency injection
* Kotlin Coroutines and Flow
* DataStore Preferences
* Room
* Retrofit, OkHttp, and Moshi
* Coil for image loading
* Kotlinx Serialization
* AndroidX SplashScreen
* Gradle version catalogs
* KSP
* Android Gradle Plugin 9

Some of these libraries are already part of the app experience. Others are foundation pieces for the next features I want to add as the app grows.

The goal was not just to use new libraries because they are new. The goal was to rebuild the app with tools that make the code easier to maintain, easier to extend, and closer to how I would build an Android app today.

## What is next

The app is now in Google Play Store closed testing.

This project started as a six-month learning challenge. Years later, rebuilding it with Jetpack Compose reminded me how much Android development has changed and how much I have changed as a developer.


Last updated on May 26, 2026

---
title: "Running the 2026 San Francisco Half Marathon With My Running Club"
description: "I ran the 2026 San Francisco Bridge Half Marathon with my running club, finished in 2 hours 21 minutes, and loved the sunny final three miles."
last_updated: "July 26, 2026"
source: "https://hiretimsf.com/blog.mdx/running-san-francisco-half-marathon-with-my-running-club"
---

# Running the 2026 San Francisco Half Marathon With My Running Club

I ran the 2026 San Francisco Bridge Half Marathon with my running club, finished in 2 hours 21 minutes, and loved the sunny final three miles.

On Sunday, July 26, I ran the 2026 San Francisco Bridge Half Marathon with friends from my running club. We shared 13.1 miles, plenty of sunshine, and the wonderful energy of runners and supporters across the city.

My [official finish time](https://live.chronotrack.com/event/91608/results/entry/79147347) was **2 hours 21 minutes**.

## Starting Together

Running with my club made race day feel special from the beginning. We met at the Embarcadero before the start, took a photo together, and joined thousands of runners heading toward the Golden Gate Bridge.

The course was challenging, but having friends nearby made the miles feel lighter. We encouraged each other and enjoyed the experience as a team.

<figure>
  ![Tim running the San Francisco Bridge Half Marathon with a club
  teammate](/images/blog/san-francisco-half-marathon-2026/bridge-half-course.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Sunshine, friends, and good energy on the Bridge Half course.
  </figcaption>
</figure>

## The Best Three Miles

The last three miles were my favorite part of the race. I felt strong, relaxed, and happy to be running. The sunshine, the people cheering, and the energy from the other runners made those final miles go by quickly.

Instead of only thinking about the finish line, I was enjoying the moment.

<figure>
  ![Tim smiling during the final miles of the 2026 San Francisco Half
  Marathon](/images/blog/san-francisco-half-marathon-2026/final-three-miles.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Smiling through my favorite part of the race: the final three miles.
  </figcaption>
</figure>

## A Wonderful Race Day

* **Race:** 2026 San Francisco Bridge Half Marathon
* **Distance:** 13.1 miles
* **Finish time:** [2 hours 21 minutes](https://live.chronotrack.com/event/91608/results/entry/79147347)
* **Date:** July 26, 2026

It was a wonderful day with a lot of sunshine, great people, and good energy. Finishing a half marathon is always meaningful, but sharing this one with my running club made it even better.


Last updated on July 26, 2026

---
title: "Running the San Francisco Marathon 2025"
description: "I ran 26.2 miles at the 2025 San Francisco Marathon wearing a custom shirt with my portfolio URL to stand out in the tech job market."
last_updated: "January 20, 2026"
source: "https://hiretimsf.com/blog.mdx/running-sf-marathon-and-promoting-myself"
---

# Running the San Francisco Marathon 2025

I ran 26.2 miles at the 2025 San Francisco Marathon wearing a custom shirt with my portfolio URL to stand out in the tech job market.

## Marathon

I ran 26.2 miles at the 2025 San Francisco Marathon. It was hard, slow, and unforgettable. I did not run just to reach the finish line. I ran to tell my story.

## Main Purpose

I wore a custom shirt with my portfolio website on it. Finding a tech job is tough. Running a marathon is tough too. I decided to mix both.

<figure>
  ![The HIRE TIM custom license plate
  shirt](/images/blog/sf-marathon-2025/marathon-01.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Custom shirt referencing my portfolio
  </figcaption>
</figure>

## Race Day

The course was hilly and foggy. The crowd helped a lot. Seeing my family at the finish made everything worth it.

* **Distance:** 26.2 miles
* **Time:** 5 hours 54 minutes
* **Bib:** 8332

<figure>
  ![Running through the fog in San
  Francisco](/images/blog/sf-marathon-2025/marathon-02.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Running through the foggy course
  </figcaption>
</figure>

## Looking to 2026

I train every day for the 2026 San Francisco Marathon. My goal is 3 hours 25 minutes. That time would qualify me for the Boston Marathon.


Last updated on January 20, 2026

---
title: "I Asked shadcn for an Autograph"
description: "How a genuine tweet turned into a conversation with shadcn and the Vercel team about signing my custom handmade shadcn/ui t-shirt."
last_updated: "January 21, 2026"
source: "https://hiretimsf.com/blog.mdx/shadcn-autograph"
---

# I Asked shadcn for an Autograph

How a genuine tweet turned into a conversation with shadcn and the Vercel team about signing my custom handmade shadcn/ui t-shirt.

## The beginning

It started with a genuine tweet. I reached out [shadcn](https://x.com/shadcn) with a slightly unusual request. I wanted his autograph on my homemade T shirt.

<figure>
  ![Tweet asking shadcn for an
  autograph](/images/blog/shadcn-autograph/tweet-01.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    My tweet asking shadcn for an autograph
  </figcaption>
</figure>

## The response

<figure>
  ![shadcn responding to the autograph
  request](/images/blog/shadcn-autograph/tweet-02.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    shadcn's response to my tweet
  </figcaption>
</figure>

I also received a reply from [Evil Rabbit](https://x.com/evilrabbit), Vercel's Founding Design Engineer.

<figure>
  ![Evil Rabbit from Vercel responding to the
  tweet](/images/blog/shadcn-autograph/tweet-04.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Evil Rabbit's response to my tweet
  </figcaption>
</figure>

## Support

[Shadcn](https://x.com/shadcn) also tweeted "Someone Hire Tim" and I'm very grateful for his support.

<figure>
  ![shadcn tweeting Someone Hire
  Tim](/images/blog/shadcn-autograph/tweet-03.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    shadcn's response to my tweet
  </figcaption>
</figure>

## The follow up

Some time later, I followed up on my request by referencing an old Vercel community post of mine.

<figure>
  ![Pauline P. Narvas from Vercel Community team
  responding](/images/blog/shadcn-autograph/tweet-06.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    Pauline P. Narvas response to my tweet
  </figcaption>
</figure>

Thanks to the amazing [Pauline P. Narvas](https://x.com/paw_lean) from the Vercel Community team, shadcn actually replied! He bookmarked the tweet, which gives me high hopes.

<figure>
  ![shadcn bookmarking the autograph follow-up
  tweet](/images/blog/shadcn-autograph/Boom.webp)

  <figcaption className="mt-2 text-center text-sm text-muted-foreground">
    shadcn's response to my tweet
  </figcaption>
</figure>

Now, I'm preparing my custom handmade t-shirt and packaging it up for shipment. I'll be following up soon, and I'm crossing my fingers for another response.

Wish me luck! I'll keep you all updated on the journey.


Last updated on January 21, 2026

---
title: "Small Marketing Campaigns for Self Promotion"
description: "I have been running small marketing campaigns for self promotion with simple photos, humor, and real moments from San Francisco."
last_updated: "May 11, 2026"
source: "https://hiretimsf.com/blog.mdx/small-marketing-campaigns-personal-branding"
---

# Small Marketing Campaigns for Self Promotion

I have been running small marketing campaigns for self promotion with simple photos, humor, and real moments from San Francisco.

## Small campaigns

I've been running small marketing campaigns for self promotion. Nothing fancy, just simple and fun photos.

Here are some of them:

<figure>
  ![Tim holding a HireTim sign next to a Stop Hiring Humans poster in San
  Francisco](/images/blog/small-marketing-campaigns-personal-branding/cover.webp)
</figure>

<figure>
  ![Tim wearing an I own a computer shirt near the San Francisco Bay
  Bridge](/images/blog/small-marketing-campaigns-personal-branding/bay-bridge-shirt.webp)
</figure>

<figure>
  ![HireTimSF campaign graphic with Tim giving two thumbs
  up](/images/blog/small-marketing-campaigns-personal-branding/hiretimsf-work-card.webp)
</figure>

<figure>
  ![Campaign graphic about Tim running a marathon and being good at designing
  and
  coding](/images/blog/small-marketing-campaigns-personal-branding/marathon-design-coding-card.webp)
</figure>

I will keep sharing small experiments. Follow me on X: [@hiretimsf](https://x.com/hiretimsf).


Last updated on May 11, 2026