November 24th, 2019
Today I woke up and watched an episode of Nathan For You - I swear that is the most genius show ever done - and one of the funniest too.

I went for an easy six mile run and the sun was shining so it felt nice. For this marathon training, I'm trying to not push myself too much during casual runs - just enjoy it more. I've been doing a lot of research online and I've found that can make you a better and faster runner. Plus, I'd like to be more excited about getting out there.

Today, I basically finished my big new feature for Pigeon, and I'm super stoked on it.

This will allow users to set reminders and sequences after they send an email, which makes the "workflow" so much smoother. I'm exciting to see user's reactions.

Here's the final product.

I'll deploy it tomorrow under a whitelist and then I'll test it out a bunch in production, and then ship it out on Tuesday!
November 23rd, 2019
I feel like in the last couple of months, I have learned a lot about Javascript.

I'm still way more confident in Ruby and I think that comes more natural to me, but my JS is getting better.

JS has always been a struggle for me.

Spent much of the day debugging and trying to figure out how to get a React element to properly render on a DOM element that's not a part of the natural tree. It's actually been a massive pain point for me in the project, and I know the current implementation is really bad and not scalable.

The issue is the library that I'm using exposes a DOM element, and I need to attach a React component to that and pass data to it, as well as let that data update and keep flowing through to that.

But after HOURS of digging and trying to understand, I finally had a breakthrough.

The best solution I've found is to save that exposed element to state and then use a React.Portal, like this:

The onClick listener that exposes a DOM element:

onClick: function(event) {
  this.setState({specialEl: event.dropdown.el})

   event.dropdown.once('destroy', () => (
     this.setState({specialEl: null})
    ));
}

And then in the render method, you can do something like this:

return(
  <div>
     // regular React app
    {this.state.specialEl &&
       return(
         ReactDOM.createPortal(
            <div>data displayed in the special element</div>,
            this.state.specialEl
          )
       )
    }
  </div>
)

^^ This is a bit of pseudo-code.

I was so stoked when I got this working, feels like a bit of a breakthrough especially because I struggle so much with JS.
November 22nd, 2019
Today was a good day, much better than yesterday. Got to "sleep in" as I didn't have any meetings, and I didn't have a run scheduled which was really relaxing.

Got a new signup for Pigeon, which is the 3rd or 4th signup of the week, which is awesome.

Today, I worked on:

Starter Story content review (as one of my VAs is out)

I'm excited for the future of Starter Story when we can be even more hands off when it comes to editorial duties. I'd love to be in a time where stories get submitted to us through a really nice signup/submit flow and then we just "click a few buttons" and then it's published.

What I love about doing it on my own is that we can gradually get to that point, slowly building different things that optimize the process until one day, it's like that. And, as we get bigger, it will continue to take away more friction as businesses will be more eager to get featured (more inbound)

Removed Kanban and calendar views from the app

I think this is the right move. I deployed those features too quickly and they are not polished enough. I want to do Calendar and Kanban "right".

I've learned a lot building a SaaS - one of the big things is that it's important to build slowly, carefully, and more calculated. It's better to have no feature than a feature at 60%. If someone complains that it's gone I will just whitelist it for their account.

Kanban and Calendar will hopefully get a proper build and release right before the new year or in January.

Added the ability to reorder tasks in a sequence

Not a super important feature but it was requested once. I found a super nice Ruby gem that obfuscates this annoying logic to write, it's called acts_as_list.

Started work on the new reply box sequence sender.

I'm super excited about this feature. It already existed in Pigeon, but was hard to find and hard to understand how it worked. I'm also excited because I think it will impress customers, and I look forward to announcing on the newsletter.

What it allows you to do is set an automated reminder/sequence while replying to emails!

I thought it would be a whole weekend project, but I coded most of it up tonight! Here's a GIF of an early prototype:

dMO9vCiCPp.gif 1.26 MB
November 21st, 2019
Ups and downs.

Highs and lows.

Yesterday I signed up two new customers. I was feeling amazing as it's been a bit slow recently.

Then today, I had two customers churn. Pretty much out of the blue. One of them was a really great customer.

"Our department decided to switch things up and we no longer need your tool."

Lots of time poured into that customer and support, back and forth.

I don't regret it though - I learned a lot through that process and built some great features that helped improve the product.

But it sucks. It's still depressing. It's rejection. When you lost two customers in one day, you feel like shit. You feel like you're not moving forward, but rather stuck in a place where you get new customers and then they just fall off.

Will I ever hit $1000 MRR? Feels like I'm running in place sometimes.

I know that my tool is useful. I just don't have the right customer profile and there are so many things that are holding me back, like the Google audit.

It just takes time and patience. These things take years.

  • Focus on the vision. 
  • Focus on the marketing.
  • Focus on the customers.
  • Build something great. 

You're not building a job board. You're not building a blog. You're building a platform that people will run their business on. Once you can figure out "how to do it right" everything will start to fall in place.

All these little failures are learning.

^^ this is self-talk
November 20th, 2019
This morning I had an 8am sales call with a potential Pigeon user.

He was a performer from Vienna, Austria who needs a solution like Pigeon to manage all of his bookings, since they all mostly come through a WordPress form and into his email. Then, he has a ton of back and forth to close the deal, set the event, etc. Lots of email work.

When I started talking to him over the call I realized that he is an "A1" customer. By "A1", I mean he is my ideal customer. And it kind of caught me off guard.

One issue with having an "audience" like mine is that a lot of my leads/customers "just want to try a cool tool" or "want to start a business". It often feels like I'm wasting time with people like that, because they don't really need the product, and they end up churning.

But this potential customer was different, I was excited and I wanted to make sure I go above and beyond to land him.

He wanted a calendar integration, which is not something we do, but the other solutions don't do it either. What we do offer is Zapier, but we don't have a lot of Zaps yet. In order to impress him, I told him that I would personally set up a Zapier integration for him that would create calendar events from Pigeon.

So I spent much of the day configuring triggers in Zapier (needed to set this up anyways) and got it working! Then, I recorded a personal screencast to set up the whole thing, as that customer is not super technically savvy. You can watch it here.

Maybe that was a bad use of my time? But it felt right. Maybe I'm desperate for customers...?

Sometimes founders will explain their growth was "because of our excellent customer support". I used to think that was bullshit. But lately, I'm starting to think that's the best marketing in the world. It's just not flashy, trendy, or very tangible.

When a potential customer is personally struggling with another tool and getting lame customer support, you can come in and beat them every time with a decent tool and excellent customer support.

That can make all the difference and they can become a customer for life. And they'll tell 10 of their friends.
November 19th, 2019
Yesterday, I woke up at 10am and didn't start working until noon.

The night before, I couldn't sleep. Didn't pass out until 2am.

But it felt totally OK. Instead of forcing myself to sleep, I did some research on marathon training.

Back when I had a job, I felt so stressed out when that would happen, because I would have to wake up and be at work regardless of how much I slept the night before.

Sometimes I forget about these little things, or at least forget to appreciate them more. And it helps to write a bit about it.

Today, I woke up at 8am. I woke up and went for a run. I had nothing on my schedule.

It's so epic to wake up every day and choose your own schedule, and more importantly, to make your own decisions and be your own boss. I wake up and decide what to work on, how, and where.

And it almost never feels like work! Yesterday I looked at the clock and realized I had worked 10 solid hours - and it was so much fun.

It is a great feeling - I need to cherish it more - maybe it won't last forever.
November 18th, 2019
Today was an epicly productive day.

Yesterday (Sunday), I got most of my "errands" stuff done, like emails, budget, and catch up stuff because I wanted to ensure that Monday I could crush it.

I didn't have any meetings, and I didn't have to run today.

So that gave me a fully blocked day to get a bunch of "mini" product and coding tasks done.

Here's what I got done:

  • Paywalled filters on Starter Story (1 hour)
  • Added more categories to Starter Story businesses & some random design stuff (30 mins)
  • Added smart field for "last opened date" for Pigeon - users can quickly see last time email opened (1 hour)
  • Fixed date inconsistencies in Pigeon data model (1 hour)
  • Added ability to send a "test email sequence" for Pigeon users (1 hour)
  • Added ability to update a status for a Pigeon entry automatically, as part of a sequence (2 hours, still working on it)

Once I get this all tested and deployed, I'll have a nice update email for my Pigeon users along with the improved features I've been working on. Once I get that out, I can put my head down and focus on improving (1) the sequence sender from the Gmail reply box and (2) re-doing the spreadsheet interface! Those are two big projects that I can't wait to get out there.

Pigeon is really, really improving and getting easier to use. I've been really focused on product, design, and usability. I'm learning a lot. I can't wait to see what it's like at the end of the year.

Gonna crush it this week.
November 17th, 2019
I get a strange sense of satisfaction out of spending no money, or seeing how low my daily personal expenses can be.

For the past week, I made myself the same turkey sandwich for lunch every day. And cooked the same chicken and rice that I do most nights. I bought these groceries in bulk weeks ago.

I don't have any recurring expenses either. I don't pay for a gym membership - I just go outside and run for free.

I don't Uber or pay for a car. I walk everywhere or take public transportation.

I don't pay for a coworking space. I just go the amazing public library here or go to Starbucks.

I don't buy new clothes often, and often just wear the free stuff I can get from friends or running race t-shirts.

I do buy a coffee on some days, but usually just a cheap drip coffee out of respect for working out of the coffee shop.

The point I'm trying to make is I don't care to spend any money on myself. I spend a lot of time alone, and when I'm alone I live like a broke college student.

But I do spend money on/with others


I do spend lots of money, but it's only on travel, with friends/family, or on my business.

I spent thousands on my recent trips to New York and Europe. When I'm with friends, I go to expensive dinners and baseball games.

I gave my mom $10K to help her get out of debt.

I spend a couple thousand every month on my business - because that money is a tool to grow the business and spend my time on more important things.

Nowadays, I couldn't care less about nice clothes, a nice car, a nice apartment, a gym membership, a good job, or anything else that costs money or time.

I think that money is meant to be spent on people and experiences, or saved and used as leverage in your life.

I also think that not spending money on myself is my way of staying "hungry" and keeping myself grounded. 

Starting your own business is very scary. You need to be nimble in your life and be ready for the worst, financially.
November 16th, 2019
Now it's been about two weeks since I was rejected by YC. Things feel a lot better now and it's starting to feel smaller and smaller.

I recently read a Paul Graham blog post about "how not to die", more specifically how not to let your startup die. PG says that they might achieve a 50% success rate at YC.

I have my down days, but I know in my heart of hearts that I will have a 100% success rate.

It's hard to imagine failing at a startup, now. But maybe it's because I see failure differently.

In a startup that raises capital, I guess you can fail when you run out of money, but when that happens, what do you do next? Go start another startup? That's what I would do. But some people might never do it again, and go back to corporate/academia/investing.

I think that's the difference between them and me. I'm not scared of failing because I can't fail. For me, failure is not attached to one specific idea or business - failure is giving up.

When Michael Scott is negotiating the sale of his new paper company to Dunder Mifflin, he has a sudden aura of confidence, and says this:

 If tomorrow my company goes under, I will just start another paper company, and then another and another and another. I have no shortage of company names.

Maybe it won't be this project, or the next one, but I know that I will be successful because I won't give up, and I will just keep working at it until I'm set for life (and hopefully at an early age).
November 15th, 2019
My new Macbook Pro 16"


Today I got the new Macbook Pro!

Basically, I had been waiting for this for 6 years. The last computer I had was a Macbook Pro 15" from late 2013.

That computer was literally falling apart:

  • The webcam stopped working
  • The fan made this strange grinding noise
  • The battery lasted 30 minutes
  • The fan would go off like a jet engine all day
  • I couldn't even screen share on customer sales calls
  • Could barely edit videos
  • It was kernel panicking often

I would have upgraded, but the new Macbook Pros were notoriously horrible, and in my opinion, the butterfly keyboard was a non-starter.

I feel like I battled over the last couple of years to keep that old thing going, waiting until there was any good next option.

I lost a lot of faith in Apple, a company I used to obsess over. But I think they really came through with this thing. 

I haven't been this excited about a new product of theirs in a really, really long time. Worth every penny.
November 14th, 2019
Today was another missed day, didn't do a journal entry... I had the intention to do it, and then it completely slipped my mind.

So, as stated I will donate to charity or support/donate to people online.

I think a great way to do is to support independent product and app creators, so this time I will support Adriaan van Rossum from Simple Analytics. Simple Analytics is a privacy-based alternative to Google Analytics.

One of the things I want to do more of going forward is supporting people like Adriaan, and if I can get some use out of a new (and awesome) product, then even better!

I don't have much money, but I these kind of expenses are worth it. First of all, they are business expenses, so from a tax perspective, it's not so bad!

And more importantly, when you support people, they might support you back! Doesn't have to be money, but maybe it's a retweet, telling their friends about your product, could be anything - maybe something good comes out of it 5 years down the line...

Or maybe it's just supporting a friend, like buying them a beer :)

I know Adriaan works crazy hard and deserves it, blazing his own trail on the internet. And he's built an awesome product.

Setting up Simple Analytics
November 13th, 2019
Over the past couple days, I've been deep working with rich text editor frameworks, like Slate.

More specifically, I'm re-doing the text editor for Pigeon, because my first attempt at it was really shitty.

Why was it shitty?

Because I tried to take shortcuts and copy-pasted a done-for-you rich text editor from some Codepen. 

This was epic at first because it only took me an hour to implement a rich text editor, but it totally screwed me down the line.

  • I didn't know the fundamentals of the framework
  • Making changes and updates to the editor took a really long time
  • Overall it was buggy

This led to stress and even feelings of anguish looming in the back of my mind:

Pat, you need to make XYZ changes to the text editor. How are you going to do that?

Back to the drawing board

So, this time, I'm reimplementing it, and I'm doing it right. I'm reading the docs, doing it from scratch.

This is taking me a while and it sucks how long it's taking, but I know down the line it's going to be a killer feature and I will be able to add new things and fix bugs more quickly, leading to a happier life and happier customers.

Having that confidence in your code and product is so huge.

My new text editor (a work in progress)
November 12th, 2019
Today (well, technically yesterday) is officially my first day where I missed an update, and this time I have to pay for it.

For every post I miss, I have to donate a few bucks or support a friend or colleague.

I decided to donate to teamtrees.org which has a goal to plant 20M trees!

Partly influenced by Mr. Beast!

My donation to teamtrees.org



November 11th, 2019
Today I slept in until about 9:30. I'm trying to live most days without an alarm clock, it's a new thing I'm trying.

I've also had massively productive days since starting this experiment, and maybe it's due to getting really solid sleep?

Today, I added a submit/share page to Starter Story, something I've been meaning to do forever. I also added more tags to the platform. I'd like to start tracking more and more data. The more data I have, the more leverage I have. I can turn that data into paid features, or enrich pages on the site.

That data also may lead to new features, or even new products altogether. I can use the data to programatically generate content, and can do so much cool stuff, I really love this kind of stuff.

Also, getting data that is user-submitted is pretty epic. That, with a combination of scraping, and other tools, can build very valuable businesses. But our data is on such a small scale. But, it's still really cool to think about.

I also switched memberships on the site and removed the free trial. Also added a lifetime membership. I'll give that a test over the next couple months and through the new year.

I created a mini roadmap for Pigeon. Sounds like a non-important feature, but I think building this out and making each item as part of the docs will help me to share more of these features and build structure around the documentation and things like that. I need some process around that, because for me it super sucks right now :(

Feeling extremely energized this past week - need to take full advantage of this.
November 10th, 2019
Since I went through the YC interview process a couple of weeks ago, I was definitely exposed more to investors, or at least "investor-think" - through talking to people, blog posts, etc.

Although investors probably have good advice, it is often hard to understand or apply that advice when you are deep in the trenches as an operator or business builder. And sometimes, I think their advice is just bad for you if you're building a business.

The same goes for podcasts, business books, and general startup content as well.

Because most advice is in 20/20 hindsight. You hear classic startup advice like "you need to identify your target market" but I have a feeling that many successful businesses didn't find it right away and pivoted multiple times to get there. It's not that simple.

Advice like that is great but I don't find it very helpful, at least for me. The only way I learn is by doing, and learning the "hard way". Maybe that's what makes me "slower" in terms of growth/success/riches...

I wish more investors or VCs would say things like "just keep working every day" or "building a great business takes 20 years" or "just get started", but often it's more sophisticated junk where they try to sound smart.
November 9th, 2019
The goal for this blog is to start writing more.

I'd like to write every day, and I plan to make that a commitment going forward. It doesn't matter how long it is - I want to treat this more like a diary. 

I can literally type two sentences, or I can write 3000 words, or I can record a YouTube video, or even a tweet. Maybe, it will often just be updates on what I worked on that day, really boring stuff :)

And I want to hold myself accountable. So, if I miss a day, I have to donate $20 to some organization of my choice or support another creator buy buying their products/merch. If I miss a day, I have to write a blog post for that day (backdated) with proof of my donation.

That's the rules for now - things might change. I'm excited. Time to set a daily reminder in my calendar.

See you tomorrow!

--

November 1st, 2019
Rejection from YC still hurting.

Now, I feel like I'm in this weird 'abyss'. 

My business/product isn't good enough for YC, so should I keep working on it? Should I use their decision as a data point? Is all of this work futile?

Everything feels bigger now. All the things I need to build.. Things are getting more complicated with every line of code. Am I building something too complex, or something that is fundamentally too big for one person to be able to handle.

I've been thinking of other products that I could pivot to. So stupid... I could spend my whole life looking for the next shiniest thing, and never really finishing what I started.
October 31st, 2019
Well, it's been almost two weeks since my last post. As the year comes closer to a close I will figure out how to do this every day.

But the last two weeks, I was preparing and anticipating for a YC interview.

It's over now, and I was rejected, but I just wanted to get my initial thoughts on paper. It helps to just write it down and get it out. I want to put something together over the next few days as I get all my thoughts together, but here is how I'm feeling now:

This time, I don't feel the sting of rejection as much as last time. This time I got further in the process, too.

This time, I won't kill my startup because I was rejected. Technically, I don't need YC because I have really low costs and I can grow it organically.

Part of me applied because it's the 'cool kids'. If only I could get in and get that validation I want. I wanted to prove to YC, and my family, friends, etc that "I am legit" and I'm working on something smart.

But I know better than that. I never got into any Ivy league colleges, and I never got hired by any epic companies like Google or Facebook. I'm not smart like that. I don't hang out with Princeton elites and discuss growth strategy, politics, and modern art. Sometimes, I have fallen trap to wanting those things, and when I try to get them, and can't get them, I somehow wonder why.

I never deeply wanted them in the first place, or I wanted them on a very superficial level. And if I ever got them, I realized very quickly it's not for me, and leave.

I'm not saying YC is like that, but it's also a 'cool name' that you can impress people with. In 5 years, I want to be able to say "I built a great company" instead of "I did YC".

But, if you have YC on your LinkedIn, or in your email signature, people will take you more seriously. 

To me, that is one of the most cringiest things I've ever read about YC. 

How about being taken seriously for things you actually did? The people that I personally look up to built things from nothing, like Elon Musk, Pewdiepie, Kanye West, Joe Rogan, etc. They are often college dropouts, and worked harder than anyone else, taking years to be even recognized.

I definitely see the value in YC but I need to write this kind of stuff to remember my principles. Because it's not my life goal to get into YC, it's to build a great life.

This is just the beginning of my thoughts. I hope to write more tomorrow.

I don't think YC is bad (it's actually awesome), and the interview experience was amazing. More on that next time. 

But for now, I'm back to work on my business the day after I was rejected. That's certainly better than last time I was rejected.
October 17th, 2019
I already missed a day, and I'll be honest I completely forgot about this blog entirely 🙈!

Need a way to remind myself!

I might have also forgotten because I got invited to an interview in Mountain View with Y Combinator! Totally unexpected to get that, so that's been kind of a trip...

Tomorrow (today) I'll write something real :)
October 16th, 2019
It's 12AM in the morning right now.

I am in Lisbon on "vacation", can't sleep. Needed to code up this idea (this blog right here) as I've been kicking at the idea like every day for the past couple weeks.

Been thinking a lot about how I want to get back into writing, and documenting all this stuff I'm doing.

I have a lot of "thoughts" but too scared to post them on Twitter and too busy/lazy to write a well thought-out blog post.

I want to build a daily habit. But I want to do this more for myself, and less for social media and for people to see. I want this to be more like a daily journal. It can be a YouTube video too, or some other piece of content, doesn't matter..

Who know what will come out of this. Don't want to make any promises, but I'd like to create some goal where I have to do this daily - doesn't matter about number of words, just that I wrote something.

And if I miss a day, will have to donate $X to charity...

Anyways, will iron more stuff out as 2019 comes to a close, but at least I got this one post up! Will keep playing around and trying to post more, with a more formal idea for what this will be in the next few weeks.