송명우

송명우님의 포스트

송명우

송명우

정주영 창업경진대회 데모데이에 다녀왔습니다.

20개 이상의 부스가 있었고, 12개팀의 발표를 들었습니다.
성병 검진 키트, 발효종 메이커, 도파민 디톡스, 스마트 베드, 잔류 농약 제거 포장제, 무착용 VR 트래커, 슬랙 플러그인, 다채널 리뷰 관리, 화물차 주차장, 토양 염기화 복구 물질 등 대단한 서비스들이 많습니다.

발표로만 따지면 빅모빌리티, MFM, 제품은 르몽이 가장 인상깊었던 것 같아요.

빅모빌리티 대표님은 아내분과 어린 아드님과 함께 오셔서 많은 사람들 앞에서 당당하고 자신감있는 모습을 보여주는게 '저런 가장이 되고싶다' 싶을 정도로 멋있었습니다.
MFM 는 정말 어디서 발표 폐관수련이라도 해오셨는지 내용이 귀에 쏙쏙 들리는게 마치 홈쇼핑을 보는 것 같았습니다.
르몽은 제가 좋아하는 "자동화를 통한 작업 효율화"를 구현하며 마켓핏을 너무도 빨리 찾은 제품이었습니다.

그 외의 다른 분들도 물론 정말 멋있었습니다.

댓글로 몇가지 생각을 남겨봅니다.

5
5
송명우

송명우

오늘은 실제 사용자에게 첫 번째 생존 확인 메일이 보내지는 역사적인 날이었습니다.

메일은 GMT으로 자정에 발송되기 때문에, 한국 시각 오전 9시에 발송 로그를 확인해보았습니다.
그런데 13개의 메일 중 단 4개만 발송에 성공한 것을 발견했습니다.

조사해보니, Resend의 SMTP 서버에서 초당 최대 2개의 메일만 전송 가능하도록 제한이 설정되어 있었습니다.

그래서 Resend 에 제한을 100개로 늘려달라는 티켓을 보냈고, 메일 간 0.5초의 딜레이를 추가했으며, 나머지 9개의 메일은 수동으로 발송하였습니다.

그리고 방금 Resend로부터 서비스 로그를 검토한 결과, 100개까지는 필요 없어 보이므로 초당 25개로 제한을 조정했다는 답변을 받았습니다.

서비스가 생각대로 동작하는 것을 보는 것과, 에러의 원인을 해결하는 것 모두 참 즐거운 것 같습니다.

Lastwords

디지털 유언 서비스

1
0
송명우

송명우

SafeSpace 는 웹페이지에서 사용자가 지정한 요소들을 숨겨서 더 깔끔한 브라우징 환경을 만들어주는 도구입니다.


견물생심(見物生心)이라는 말이 있습니다.
유혹을 알지 못한다면, 참을 필요도 없습니다.

저는 스마트폰을 사기 전까지 수업 시간에 졸릴 수 있다는 걸 상상도 못 했습니다.
하지만 스마트폰을 사고 나서부터 밤에는 폰을 보고 낮에는 졸기 시작했습니다.

이제는 자기 전에 스마트폰을 ‘휴대폰 감옥’ 에 넣어야만 쉽게 잠들 수 있습니다.

인터넷도 마찬가지입니다.
다양한 유혹이 존재하지만, 그것을 알지 못한다면 이를 참을 필요조차 없습니다.

그래서 사용자들이 원하지 않는 게시글을 숨김으로써 금욕과 집중력을 돕기 위한 앱을 만들었습니다.

SafeSpace

웹페이지에서 사용자가 직접 선택한 요소들을 숨겨서 더 깔끔한 브라우징 환경을 만들어주는 도구

2
0
송명우

송명우

오늘은 사업 계획서 작성 강의를 들었습니다.

사업 관련 말씀 중 동의 못하는 내용이 많았습니다.
'간절해야한다.', 'INFP 는 창업하지마라', '명함이 없으면 안된다', '투자/대출을 받아야한다.'

창업에 공식이 있는 것처럼 말씀하시니 듣기 힘들었습니다.
창업 보다는 지원 사업에 합격하는 공식이라고 생각되었습니다.

제 경험 상, 무리하면 오래 못 가고 다칩니다.
박현호 크몽 대표, 박소령 퍼블리 대표, 이진하 스페이셜 대표, 김세영 피에스엑스(PSX) 대표는 INFP 라고 합니다.

명함이 없으면 링크드인으로 하면 됩니다.
DHH 의 베이스 캠프는 투자를 받지 않습니다.

그래도 강의 이후 강사님을 찾아가서 사업계획서를 보여드리며 조언을 구했고, 시장조사가 더 필요하다는 결론을 얻었습니다.
하여 설문/전단지/광고 등의 시장 조사(및 홍보)를 생각했고 서비스 사이트의 SEO 를 보완했습니다.

https://lastwords.the-babel.com/

Lastwords

디지털 유언 서비스

4
7
송명우

송명우

기능이 하나씩 완성되어가는게 정말 재미있다.

오늘은 드디어 생존 확인 메일을 보내는 것을 자동화했다.
로직은 아래처럼 했다.

1. 사용자가 설정한 주기에 맞춰서 다음 생존 확인 요청일을 계산해둔다.

2. cron 을 통해 오늘과 비교해서 필터링한다.

3. 필터링한 사용자를 edge functions 에 보내서 이메일을 전송한다.

아직 보완이 필요한 부분이 있긴 하지만 그거 신경쓰면 앞으로 못간다.

내일부터는 유서의 암호화를 고도화하고 생존 확인 실패가 누적되는 경우 유서를 전송하는 것을 작업할거다.


대강 11월 중으로 제품 전반적으로 완성에 가까워질 것 같다.

이후에는 마케팅과 유지비용 마련을 위한 고민을 해야지.

그리고 만들고 싶은 서비스가 너무 많다.
11월 말 부터는 음악 관련 서비스를 만들어 볼건데 웹앱의 형태로 앱 스토어에 배포도 할 예정이다.

Lastwords

디지털 유언 서비스

3
0
송명우

송명우

가능성을 보았다.

Postgres 에 cron 기능(PG_cron)을 확장할 수 있어서 일 배치를 쉽게 만들 수 있다.

이제 남은건 PG_cron 과 Edge functions 를 적절하게 설계해서 아래 조건에 맞는 사용자에게 생존 확인 메일을 보내기만 하면 된다.

1. 30일 이내에 생존 확인을 완료한 사람에게는 생존 확인 메일을 보내지 않는다.
2. 오늘이 사용자가 설정한 생존 확인일에 해당되는 경우 생존 확인 메일을 보낸다.

그래도 아직 고려해야할 문제는 몇 가지 있다.

1. PG_cron 에 SQL 로 작성할 로직의 범위
2. 테스트 코드는 어떻게 짤 것인지


이외에도 환경 분리, Zoho 로의 복귀 여부 등 고민할 것은 많지만 빠르게 실패하고 배우는 것이 중요하다.

일단 간다~

Lastwords

디지털 유언 서비스

3
0
송명우

송명우

생존확인 메일 전송 기능을 계속해서 작업하고 있다.

이메일로 전달되는 Magic link가 제대로 동작하지 않는 것이 문제였는데, Magic link로 redirect되는 화면에서 Supabase API를 Nuxt에서 wrapping한 Composable을 사용했던 것이 문제였다.

Supabase JS API를 직접 사용하면 Magic link로 로그인이 잘 된다.

그런데 한 가지 문제가 더 생겼는데 이렇게 redirect 된 화면에서 사용하는 Supabase JS API와 기존 화면들에서 사용하는Composable 의 세션이 공유가 안되는 것 같다.

내일 조금 더 확인해보고 이슈 티켓을 남겨야겠다.

그리고 Nuxt 도 Supabase 처럼 디스코드 질문 채널이 있는지 한 번 보자.

Lastwords

디지털 유언 서비스

2
1
송명우

송명우

노원구는 1인가구 복지 사업이 많은데 그 중 하나를 지난주에 참여했었다.

그리고 어제 유튜브를 보다가 탕짜면이 먹고 싶어서 주변 식당을 찾아보니 다 만원대가 넘었다.

나 같은 백수 자취생은 돈이 없다. 그래서 시간을 좀 더 들여서 8천원대의 탕짜면을 찾을 수 있었다.



세상에는 분명 좋은 제도와 싸고 맛있는 식당이 존재한다. 문제는 내가 그걸 찾기가 힘들다는 것이다.

그래서 나같은 1인 가구들이 서로 힘든 점들을 공유하고 해결할 수 있는 오픈 채팅방을 만들었고,

나중에는 웹사이트도 만들려고 한다.

초기엔 엑셀로 해도 괜찮을 것이다.


그리고 이런 서비스에 대한 기획을 GPT 에게 부탁한뒤 간단한 발표 스크립트를 짜달라고 말했다.

그리고 AI 아바타로 영상을 만들어주는 Heygen 에서 영상을 만들어봤다.

https://app.heygen.com/share/eed3d47386774f0e92f31d25f6e333f8

참 재미있는 세상이다.

1
1
송명우

송명우

두 개의 지원 사업에 신청했고, 하나는 떨어졌고 하나는 붙었다.

첫 공모 합격이라 기분이 참 좋다.

선착순 합격인 공모지만 그것도 다 내 능력이다.

Lastwords

디지털 유언 서비스

3
0
송명우

송명우

생존 확인 이메일 전송 자동화 작업을 계속해서 붙잡고 있다.

SMTP 서버를 Zoho 에서 Resend 로 바꾸었고, 아예 메일 전송 메커니즘 자체를 Edge Functions 이 아니라 Supabase 에 있는 Magic Link 메일 전송 기능을 사용하게 바꿨다.

이제 메일 전송은 정말 잘 된다.

그런데 Supabase Magic Link 가 내가 생각한대로 동작하질 않는다.

문의는 남겨두었고 밤은 깊었으니 자러 가야겠다.

자동화는 아직 손도 못 댔다.

Lastwords

디지털 유언 서비스

1
0
송명우

송명우

이메일 자동화 작업을 어제에 이어서 계속 진행하고 있다.

이메일 전송은 성공했지만, 문제가 하나 발생했다. Supabase Edge Functions의 CPU 시간 제한이 2초인데, SMTP 작업에 2초 이상 소요되고 있다. 이로 인해 메일 발송 시도는 되지만, 전송 성공 여부를 확인하거나 후속 처리를 할 수 없는 상황이다.

해결 방법은 두 가지가 있다.

1. SES나 Resend와 같은 대체 서비스를 사용하는 것

2. Fire-and-Forget 방식으로 처리하는 것

우선 첫 번째 방법을 시도하기로 했다. 어차피 다른 급한 일이 있는 것도 아니니까. 😊

그런데 Resend 는 희한하게도 2초라는 시간 제한 안에 전송이 완료되는 것 같다. 공식 문서에서도 사용하고 있다.
내가 Zoho 의 SMTP 를 사용하는 것보다 HTTP 요청을 하나 더 거쳐서 느려야할 것 같은데 왜인지 잘 모르겠다.

Lastwords

디지털 유언 서비스

1
0
송명우

송명우

사용자에게 메일을 보내는 기능은 Lastwords의 핵심 기능 중 하나이다.

그리고 오늘, 오랫동안 미뤄왔던 메일 자동화 작업을 시작했다.

메일 서비스는 여러 가지가 있지만, 개중에 무료로 가장 많은 메일을 제공하는 Zoho를 선택했다.

그리고 Zoho를 통해 메일을 보내는 코드를 각종 AI 서비스들의 도움을 받아 Supabase Edge Functions에 올렸다.


정말이지 1인 개발하기 좋은 세상이 아닌가 싶다.

이 모든 끝내주는 환경 속에서도 코드가 동작하지 않는 이유는 배경 지식의 부족이다.

내일은 Supabase Edge Functions의 문서를 읽자.

Lastwords

디지털 유언 서비스

2
0
송명우

송명우

오늘은 달리기를 하고 도서관에 가서 책을 읽고 요리를 한 후 휴식을 취했다.

현재 빌려서 읽고 있는 책은 『죽음이란 무엇인가』, 『빠르게 실패하기』, 『끈기보다 끊기』, 그리고 『죽어도 죽지마』이다. 도서관에서는 『세컨드 브레인』을 훑어 읽으며 내가 이미 실천하고 있는 메모 습관과 연결 지어 생각해보았다.

나는 메모를 PARA 시스템을 통해 정리하고 있으며, 주로 Obsidian을 메인 툴로 사용하고 있다. 음성 메모를 할 때는 구글 홈 미니를 이용하여 구글 킵에 기록되도록 설정해 두었고, 이를 다시 Obsidian과 연동시켜 모든 메모가 한 곳으로 모이게 하고 있다. 물론 휴대폰에도 구글 킵 위젯을 설치해 두어 필요할 때 언제든 쉽게 메모를 작성할 수 있도록 준비해 두었다.

아날로그 방식도 사용하는데, 꿈일기처럼 복잡한 내용을 기록할 때에도 쉽게 메모하기 위해서 잠자리 곁에 항상 메모지를 두고 있다.

이렇게 작성된 메모는 11시에 하루 회고를 할 때 정리한다.

Lastwords

디지털 유언 서비스

2
0
송명우

송명우

[Lastwords 프로덕트 업데이트]


1. 메시지 작성 화면 개선

- 메시지 작성 시 수신자를 직접 추가할 수 있는 기능을 구현했다. 디스콰이엇에서 받은 피드백이었는데 만들고보니 한 화면에서 코어 기능을 모두 수행할 수 있어서 메시지 작성 프로세스가 정말 편해졌다.

2. 미들웨어 추가

- 로그인 여부를 확인하는 미들웨어를 추가해서 로그인하지 않은 경우엔 메시지, 수신자, 대시보드, 세팅 화면에 접근하지 못하게 했다.

3. 사용자 경험 개선

- 대시보드와 수신자 화면에서 로딩 UI 를 추가했다. 데이터가 없는 경우의 문구도 추가했다.


4. 버그 수정

- 수신자 관계를 직접 입력할 때 인풋 태그가 바로 나오지 않는 문제를 해결했다.

5. 업데이트 로그 시스템 개선

- 업데이트 로그에 줄바꿈이 적용되도록 수정했다.


2시간 정도 걸렸던 것 같다. 오늘도 역시 Cursor AI 와 함께했다.

Lastwords

디지털 유언 서비스

1
0
송명우

송명우

오늘은 서비스에 “업데이트 로그” 페이지를 새로 만들었다.

커피 한잔이라는 1인 개발 서비스가 지속적으로 고객을 유치할 수 있었던 비결을 곰곰이 생각해 보았는데, 꾸준한 업데이트와 소식 공유가 중요한 요인 중 하나라는 결론을 내렸다.

이와 같은 맥락에서, 나도 내 서비스가 지속적으로 유지·관리되고 있음을 사용자들에게 전달하기 위해

업데이트 로그 페이지를 추가했다.

특이사항이 있다면 언어셋이 적용된다는 점과 나 자신도 서비스 페이지 내에서 업데이트 로그를 관리한다는 점이다.

이번 작업에서는 Cursor AI를 사용해 보았는데, 기대 이상으로 효율적이었다.

확실히 1인 개발이 점점 더 수월해지는 시대가 오고 있음을 체감했다.

Lastwords

디지털 유언 서비스

3
1
송명우

송명우

#정신건강 #다짐

1인 개발을 하면 종종 마음이 꺾이거나 생활 습관이 흐트러지거나 목표를 잊을 때가 있다.

사실 1인 개발 뿐만 아니라 그냥 살아가면서 다들 힘든 시간을 경험한다.


희노애락은 다 내가 받아들이기 나름이다.

그리고 사람들은 노래를 듣고 울기도 웃기도한다.

그러니 힘든 때에 노래를 듣고 내 생각과 기분을 바꾸면 좋을 것 같았다.


그래서 ChatGPT 와 Suno 를 써서 1분만에 생활습관을 위한 노래를 만들어보았다.

그리고 오늘은 이 음악을 알람 음악으로 설정한지 3일차이다.

확실히 안할 때보다 자기 암시도 되고 조금이나마 더 나은 하루를 보내게 된 것 같다.


♪ 만들어진 노래

5
0
송명우

송명우

최대한 비용을 들이지않고서 만들고 싶은 서비스를 만들고 키우는 것이 목표인데, 점점 예상치 못한 지출이 얼굴을 들이민다..

수익화를 위해 PG 를 추가하려했더니 가입비 20만 원, 연회비 10만 원을 내야하고, 홍보를 위한 광고도 다 돈돈돈.

심지어 서비스 결제 금액이 소액이다보니 고정 수수료가 있으면 수수료가 너무 커서 결제를 안 받는게 나을 지경이다.


그래서 고민끝에 자금을 마련하기 위해 창업 관련 경진대회에 참여하기로 결정했다.

급하게 사업계획서와 발표 자료를 준비해서 제출했는데, 결과가 어떻게 될지,,

Lastwords

디지털 유언 서비스

6
2