[GN#107] 개발자 온보딩 가이드와 GeekNews Ask 오픈

2021-07-19 ~ 2021-07-25 사이의 주요 뉴스들
회사에 신규 입사한 사람들이 자신의 역할을 충분히 할 수 있도록 하는 과정을 온보딩(Onboading) 이라고 합니다. 페이스북은 BootCamp 라는 약 6주 기간의 온보딩 과정을 통해서 사내에서 쓰는 프로그램과 워크플로우를 익히게 하여 신규 입사자들이 빠르게 직장 문화에 적응하도록 한다고 알려져 있습니다. 실제로 이렇게 온보딩 과정이 잘 되어 있는 회사들이 이직률이 낮다고 하는데요. 요즘처럼 개발자 구하기 어려운 시대에, 힘들게 뽑은 개발자가 잘 적응할 수 있도록 온보딩 과정을 챙겨보는 게 중요할 것 같습니다. 개발자 채용 시 개발능력 검증을 위해 실제 엔지니어링 태스크를 부여하고 평가하는 서비스인 CodeSubmit에서 개발자 온보딩 가이드를 상세히 적어서 공개했습니다. 실제 출근하기 전인 프리보딩 단계부터, 입사 첫날 부터 첫 90일을 어떻게 계획해야 할지 항목별로 정리가 되어있으니 참고하시면 좋겠습니다. 가장 중요한 문장 두 가지는 "충분한 시간을 주고, 초반에는 기대치를 낮춰야 함, 압박감을 받지 않도록 하기" 와 "어떤 식으로든 신규 입사자를 도운 것은 작든 크든 몇 년간 기억될 것"

긱뉴스를 처음에 만들면서부터 오픈하고 싶었던 GeekNews Ask를 공개합니다. 사실 기능은 긱뉴스 오픈전에 미리 만들어 놨었는데, 아직 때가 안되었다고 생각해서 많은 분들이 모일때까지 기다렸는데요. 최근에 올라온 "압축률이 100%에 가까운 원주율 파일 시스템" 기사에 달린 댓글들을 보고 이제 준비가 되었다고 생각이 들었습니다. 수포자인 저는 참여하지도 못하는 글의 내용과 댓글의 흐름을 보면서, 이런 분들이 계시면 좋은 답변이 많이 나올 수 있지 않을까? 했어요. GeekNews Ask는 "하나의 정답을 찾는 게 아닌, 남들의 지식과 지혜와 경험을 들어볼 수 있는 질문을 하는 곳"이 되겠다는 목표를 세웠는데요. Geek들이 궁금해할 다양한 질문과 경험과 지혜가 묻어나는 답변들을 기대해 봅니다. 그리고 고정적으로 올리는 "이번 주말에 뭐 하시나요?" 같은 질문이나, 월초마다 올릴 "이달의 구인정보" 등을 통해서 개발자 분들에게 재미와 정보를 얻을수 있는 곳으로 키워 가겠습니다.
서비스 개발에 필요한 백엔드 기능들을 기본으로 제공하면 더 빠르게 웹서비스나 앱을 개발할 수 있지 않을까? 라는 생각에서 BaaS - Backend as a Service 라는 개념이 나온 지도 이미 10년이 넘은 것 같은데요. 초기에 가장 유명했던 Parse는 페이스북이 인수한 뒤에 별도로 분리되어 오픈소스가 되었고, 구글은 Firebase를 통해서 BaaS 플랫폼을 점점 확장해 가고 있으며, Firebase 의 오픈소스 대체제라고 할 수 있는 Supabase도 계속 기능을 추가하고 있습니다. 오픈소스 BaaS들이 부담없이 사용하기엔 편하지만, 정작 내가 설치하고 운영하기엔 힘든게 단점이기도 한데요. Daptin은 Go로 작성된 오픈소스 BaaS로, Go의 언어적인 특징 때문에 싱글 바이너리로 배포가 가능해서 손쉽게 나만의 BaaS 운용이 가능하다는 장점이 있습니다. 물론 Docker/K8s 로 배포가 가능해서 확장하기도 쉽고요. 사용자 관리, DB CRUD, 파일 저장, 스태틱 웹사이트 호스팅, 워크플로우, 메일서버 등의 기능을 제공하고 있어서 기능면에서도 훌륭합니다. 프로토타이핑부터 스타트업 초기에 이용하기에 알맞을 것 같으니 참고하시기 바랍니다.


✓ 사내 커뮤니케이션 도구들에 GeekNews Bot을 추가해서 편하게 새 글을 받아보시고, 멤버들에게도 공유해주세요. : Slack Bot, 잔디 Bot, MS Teams Bot, Discord Bot
✓ 주위분들께 긱뉴스 위클리 - https://news.hada.io/weekly 를 추천해 주세요.

매주 월요일 아침, 지난 일주일간의 GeekNews 중 엄선한 뉴스들을 이메일로 보내드립니다.


개발자 온보딩 가이드 : 첫 90일을 어떻게 계획해야 할까

- 온보딩은 신규 입사자가 환영받고 회사의 일부라는 느낌을 주고, 이직률도 감소 시킴
- 3A : 관리(Administration) → 동화(Assimilation) → 가속(Acceleration)
- 전반적인 지침은 HR이 제공하되, 매니저가 주도해서 실행하는 것이 중요

[ 역할과 책임 ]
- HR : 일을 시작하는데 필요한 모든 지원
ㅤ→ 엔지니어링 매니저 및 C레벨 매니저들과 온보딩 미팅 잡기
ㅤ→ 전사에서 사용하는 도구들 기본 설명
ㅤ→ 팀에서 환영받는 느낌을 받도록
ㅤ→ 출근 첫날 : 전사에 소개(그룹웨어 같은 것), 사용자 계정 추가, 급여 및 근무시간에 대한 상세 소개, 모든 도구와 장비 지급, 사무실 투어, 다른 동료들과 점심식사 제안

- 엔지니어링 매니저
ㅤ→ 개발자를 팀 내부/외부에 소개
ㅤ→ 팀 구조, 팀의 회의 일정, 개발 도구 및 티켓 시스템 등 소개
ㅤ→ 1:1 체크인, 분기별 검토 미팅, 퍼포먼스 리뷰 등을 진행

- C-레벨 매니저
ㅤ→ 회사의 일부라고 느끼게 하고, 회사의 미래 비전과 목표를 향해 즐겁게 일하도록
ㅤ→ 이상적으로, CEO는 회사의 비전과 역사 소개, 제품 헤드는 제품과 사용자 소개, COO/CMO 는 현재 문제들에 대한 인사이트, CTO는 기술로드맵을 설명
ㅤ→ 신규인력이 자신의 업무가 회사의 장기목표에 어떻게 기여하는지 확인하는 정기적인 미팅을 가지는게 중요

[ 온보딩 프로그램 모범사례 ]
- 충분한 시간을 주고, 초반에는 기대치를 낮춰야함, 압박감을 받지 않도록 하기

# 프리보딩(Pre-boarding)
- 최종 면접일과 근무 첫날 사이의 시간
- 이때는 지원자가 다른 회사를 인터뷰하고 있을수도 있다는걸 염두에 두어야 함
- 채용 최종 단자에서 지원자를 미래의 팀원,팀장 관리자에게 소개
- 지원자가 입사를 결정하면, 첫 출근전에 사무적인 일들은 다 끝내는게 좋음
- 출근 일주일 전에 해야할 일들
ㅤ→ 출근 첫날에 대한 일정을 정리해서 보낼 것 : 언제 어디서 누구를 만나는지, 원격 회사라면 새 이메일 및 Slack 계정등에 대한 로그인 세부정보
ㅤ→ 필요한 모든 계약서 및 서류 작성
ㅤ→ 원격 근무에 대한 장비를 제공한다면 장비요청을 미리 작성완료 하도록
ㅤ→ 회사의 문화, 비전, 미션에 자세한 정보 공유
- 좀 더 세심한 터치를 원한다면
ㅤ→ 팀원들이 짧은 비디오/GIF로 신입사원 합류 축하 메시지를 보내거나
ㅤ→ 간단히 손으로 적은 환영 메모/카드를 우편으로 보내기
ㅤ→ 예산이 넉넉하다면, 회사 굿즈(SWAG, 컵/스티커/티셔츠 등등)를 보내주기

# 첫날
- 첫인상은 중요. 신규 입사자에게 레드카펫 경험이 되어야 함
- 환영받는 느낌을 주고, 새 팀원들과 의미있는 상호작용을 할 수 있는 기회를 주는 걸 목표
- 채용 담당자와 인포멀한 커피타임을 통해서 서로에 대해 알고나서, 공식 체크인 미팅을 통해서 R & R을 명확히 하고 기대치를 서로 맞춤
- 회사 및 여러 팀들 소개 (이때 조직도를 훓어보면 좋음)
- 동료나 멘토 소개
- Slack을 통해서 회사 전체에 신규 입사자 소개
- 담당하는 역할에 중요한 도구들의 매뉴얼 공유 또는 교육
- 회사 위키 및 기술문서 접근 방법 공유
- 아이스 브레이킹을 포함한 팀 점심 또는 원격의 경우 팀 화상통화
- 정기 팀 미팅을 포함해서 남은 한주 동안의 일정을 공유
- 관계 구축을 가속화 하기 위해 엔지니어링 매니저가 신규 입사자에게 물어볼수 있는 것들
ㅤ→ 어떻게 최선을 다해서 일하시나요? 제가 뭘 도와드리면 되나요?
ㅤ→ 어떤 작업들이 활력을 주고 당신을 흥분시키나요 ?
ㅤ→ 하루 일정을 어떻게 계획하는 것이 좋으세요? 미팅을 오전/오후 언제 하는게 좋으세요 ?
ㅤ→ 피드백을 주고 받는 것은 어떻습니까 ?
ㅤ→ 어떻게 인정을 주거나 받는것을 선호하시나요 ?

# 첫 주
- 첫주에는 회사, 제품 및 고객에 대해 학습
- 회사의 첫 시작 이야기, 가치, 비젼, 미션, 주요 마일스톤을 포함한 회사 문화와 역사에 대한 소개
- 제품에 대한 소개. SaaS 제품을 팔고 있다면, 신규 입사자에게 테스트 계정 만들어 주기
- 고객과 그들이 어떻게 제품을 사용하는지 소개. 제품에 대한 레코딩(실 사용 화면 녹화) 및 고객 인터뷰
- 기술 문서에 대한 소개
- 전사 회의 (all-hands meeting)에서 신규 입사자 소개
- 동료 / 멘토 체크인 예약
- 온보딩 피드백 받아서 향우 온보딩 프로그램 개선. 설문조사면 충분
- 그 주의 마지막 날에 체크인 : 성공한 것과 도움이 필요한 영역들 알기
- 신규 입사자와의 첫 킥오프 미팅에서 다루어야할 요점 들
ㅤ→ Role clarity (역할 명확성) : 자신이 할 일들(resposiblities) 검토, JD 리뷰, 기대치 설정.
ㅤ→ Development, compensation, and rewards (경력 개발 및 보상들) : 회사에서 지원하는 금전/비금전적 인센티브 및 커리어 패스 논의
ㅤ→ Motivators at work(업무상 동기부요 요소) : 이전에 가장 즐겁고 활력넘쳤던 프로젝트 물어보기. 이를 통해서 지정할 업무 유형의 선택과 최상의 업무를 수행하는데 도움이 되는 조건 파악

# 처음 30일
- 첫 달은 회사에서 어떻게 일이 진행되는지를 배우는 것을 포함
- 코딩 표준, 프로그래밍 프로세스, 워크플로우 프레임워크, 팀내의 로컬 개발 환경 설정 방법
- 소프트웨어 개발 방법론 소개
- 팀의 리포지토리 문서 공유
- 신규 입사자가 일반적인 버그 수정이나 예전 기능 업데이트등의 작은 작업으로 시작하도록 할 것. 시작하기 쉬운 일을 통해서 팀에 의미있는 기여를 했다는 성취감을 느끼게 할 것.
- 동료/멘토 체크인을 스케줄링하고 점차 빈도를 줄임
- 매주 매니저와 체크인을 통해서 신규 입사자가 성과를 내는데 필요한 모든 지원을 받고 있는지 확인 할 것
- 페어프로그래밍 세션은 신규 입사자가 전체 코드베이스 및 코딩 표준에 쉽게 익숙해지도록 하는 방법
- 이달 말에 심도 높은 체크인을 통해서, 성공한 것과 목표 검토, 지원이 필요한 영역 확인
- 향후 온보딩 프로그램에 대한 추가 피드백 요청

# 처음 60일
- 다음 30일 동안 신규 입사자는 작업 환경과 새 팀원들에 대해 더 편안하게 느끼게 될 것
- 매니저는 신규 입사자에게 장기 Responibilities를 할당하는 것을 고려할 것
- 체크인 중에 매니저는 계속 신규입사자가 업무를 잘 수행하는데 필요한 모든 정보와 지원을 받는지 확인

# 처음 90일
- 세번째 달이 되면, 신규 입사자는 비교적 편안하게 토론에 참여하고 업무를 수행할 수 있음
- 이제 좀 더 독립적으로 작업할 수 있게 됨
- 이달 말까지 엔지니어링 매니저는 신규 입사자에게 좀 더 장기적인 목표를 구체화하고, 정기 1:1 체크인에서 진행

# 장기 성장 및 관리로의 전환
- 온보딩에서 종종 간과되는 것은 장기적인 커리어 개발 단계로의 전환 과정
- 정기 1:1 미팅에서 온보딩에서 장기 개발로 전환할 것
ㅤ→ 첫 30일 후부터 향후 3~6개월간의 개발을 지원할 방법들을 고려하기 시작할 것
ㅤ→ 첫번째 퍼포먼스 리뷰 전까지 명확한 골과 타겟을 설정하도록 할 것

[ 기타 온보딩 고려사항 ]

- 신규 입사자가 필요할때 찾아볼수 있는 문서 정리는 꼭 필요
ㅤ→ 내부 위키가 있으면 좋음
- 신규 입사자에게 필요한 기술 문서들
ㅤ→ 소스 코드 및 팀의 Git Repo 접근 가이드
ㅤ→ 프로젝트간 디펜던시, 버전번호 포함
ㅤ→ 프로젝트에 사용된 도구들의 API 키와 Credentials
ㅤ→ 샘플 데이터 및 입력 매뉴얼
ㅤ→ 디자인 패턴 및 스타일 가이드
ㅤ→ 모든 것이 잘 동작하는지 확인하는 테스트 스위트
ㅤ→ 스테이징 / 프로덕선 서버에 대한 Deployment Credentials
ㅤ→ 팀 멤버가 제품의 단점과 과거 실수에서 배울수 있는 것들을 정리한 배포 노트
- 프로젝트 또는 피쳐의 문서
ㅤ→ 이 피쳐 또는 프로젝트의 목표
ㅤ→ 같은 SaaS 제품이나 에코시스템의 다른 기능과 비교해서 각 기능은 어떻게 동작해야 하는지
ㅤ→ 디자인 가이드라인, 사용자 흐름 및 코딩 표준
ㅤ→ 팀이 프로젝트나 기능을 어떻게 처음부터 끝까지 작업하는지. 각각의 환경(개발,스테이징,프로덕션) 및 배포 담당자
ㅤ→ 과거에 이 프로젝트 또는 유사한 프로젝트에서 처한 문제점들과 어떻게 해결 했는지
ㅤ→ 현재 어떤게 문제이고, 어떤 해결책들을 작업하는 중인지

[ 원격 회사를 위한 팁 ]
- 신규 입사자에게 근무 첫날에 물질적인 선물 보내기
- 매니저와 팀 리더는 처음부터 커뮤니케이션 기대치를 명확히 할 것 (슬랙의 메시지 하나로 일일 스탠드업은 건너뛸수 있다던가)
- 주간 체크인, 전사 미팅등 빠지면 안되는 사항들에 동의할 것
- 올바른 도구를 선택하고 회사 전체의 동의를 얻을 것(이메일을 선호하는데 Slack을 설치하는 것은 의미가 없을 수도)
- 가능하면 최선의 작업환경을 위해 장비/환경/인터넷 접속 비용을 지원
- 신규입사자와 직원들이 경계를 설정할수 있도록 도울 것(유연 근무나 타임존이 다른 경우 등)

[ 온보딩 성과 측정 ]
- 적어도 한번 이상의 설문조사를 보낼 것 (HR전문가는 7일,30일,60일,90일에 설문조사를 보내는 것을 권장)
- 물어볼 질문들
ㅤ→ 일하기 좋은 곳으로 [우리 회사]를 추천합니다.
ㅤ→ [우리 회사]는 내가 다른곳에서 비슷한 역할을 했을때 보다 더 나아갈수 있게 동기를 부여합니다.
ㅤ→ 나는 내 롤에 필요한 시스템과 도구를 사용하는데 자신이 있습니다.
ㅤ→ 나는 내 일을 잘하기 위해 아직 배워야 할 것이 무엇인지 잘 알고 있다.
ㅤ→ 나는 내 롤이 [우리 회사]의 조직 목표에 어떻게 기여하는지 이해하고 있습니다.
ㅤ→ 지금까지 내 역할은 JD에서 얘기했던 것과 일치합니다.

[ 온보딩 개선 시작하기 ]
- 일정과 목표 계획하기 : 첫날, 첫 주, 30일, 60일, 90일 동안의 주요 마일 스톤
- HR팀이 매니저 및 모든 관련자를 지원 하도록 : 개인별 체크리스트, 관리자와 팀 리더 교육
- 매일의 워크플로우에 문서를 포함 : 변경사항과 업데이트를 기록하는 습관 만들기(신규 입사자에게 오래된 변경 전 문서를 주지 않도록)
- 신규 입사자의 입장이 되어보기

"어떤 식으로든 신규 입사자를 도운 것은 작든 크든 몇 년간 기억될 것"

- 신규입사자를 잘 온보딩 시키는 방법 - How to onboard a new hire https://news.hada.io/topic?id=233
- Spotify의 신입사원 온보딩 절차 https://news.hada.io/topic?id=2469

 
GeekNews Ask 공개

"하나의 정답을 찾는 게 아닌, 남들의 지식과 지혜와 경험을 들어볼 수 있는 질문을 하는 곳"

요즘은 궁금한 게 있으면 구글링 하는 게 가장 빠르다고는 합니다만, 쉽게 원하는 답변을 얻지 못하는 질문들이 있죠. 예를 들어,

- 지금 내는 비용의 2배를 내더라도 계속 사용하고 싶은 SaaS는?
- 앞으로 3년내 가장 유망한 기술이나 스타트업은?
- 사용해봤던 업무용 의자중 어떤 걸 가장 추천하시나요?
- 올해 새로 배우고 싶은 기술이나 언어는?
- 지금 어떤 사이드 프로젝트를 하고 계신가요?
- OS 재설치하고 가장 먼저 어떤 것들을 설치하시나요?

나중엔 해커뉴스의 Ask HN 과 Reddit, Lobste.rs 등의 방식을 차용해서 질문/답변을 더 넓은 방식으로 키워보려고 합니다.
특정 일자에는 고정적인 질문이 올라오고, 거기에 대한 정보를 모으는 방식인데요. 예를 들면,

- 이달의 구인정보 : 매월 초 회사들이 구인정보를 직접 올리는 HackerNews 의 "Who's Hiring"
- 가장 좋아하는 책 2개를 적어주시면, 세번째 책을 추천해 드릴께요 : Reddit의 "Suggest me a book"
- 이번 주말에 뭐하시나요 ? : Lobste.rs 의 금요일 고정 질문 "What are you doing this weekend?"
- 이번 달에는 어떤 일들을 하시나요? : Indiehacker 의 월초 질문 "What are you working on this month?"

이런 질문과 답변들을 통해서 많은 걸 배울 수 있었으면 좋겠습니다.

* 모든 질문은 /ask 섹션에서만 보이도록 설정되어 있고, 특정 점수 조건 및 답변 수에 도달하면 메인 페이지에 보이면서 페이스북/트위터에도 공유됩니다.
* 정답보다는 지식/지혜/경험을 공유해줄 수 있는 질문을 올려주세요.

GeekNews Ask 서비스에 대한 상세 소개 : http://news.hada.io/blog/ask

 
Daptin - 오픈소스 Backend as a Service & Headless CMS

서비스를 만드는데 필요한 기본 백엔드 기능을 모두 제공하는 오픈소스
- 사용자 관리 : 유저 및 그룹, OAuth 소셜 로그인, 2FA, JWT 기반 인증 & 권한관리, 레이트 리밋, 커넥션 쓰로틀링
- 데이터 관리 : 스키마 정의, CRUD API 및 페이징/검색/릴레이션, 파일(이미지,비디오 등) 저장
- 저장소 관리 : 로컬, gDrive,S3,Dropbox,FTP..
- 사이트 관리 : 다수의 웹사이트 생성, LetsEncrypt로 HTTPS지원, HUGO 로 스태틱 사이트 생성, 폴더를 FTP로 노출시키기
- 연동 및 액션 관리 : 워크플로우를 생성하고 API로 공개, Open API 스펙으로 써드파티 API 호출
- 메일 관리 : SMTPS 와 IMAPS로 이메일 서비스로 사용 가능, 멀티 호스트 네임 이메일 서버, 멀티 이메일 계정 지원
- 대시보드 제공

- MySQL / Postgres / SQLite [Default]
- JSON API / GraphQL for CRUD APIs
- OAuth : Google, Github, Linkedin
- State Tracking API : 블로그의 경우 draft/edited/published 등으로 구성 가능
- React, Vue.js, Angular, Android, iOS 등 모든 프레임워크/클라이언트와 연동 가능
- Go 오픈소스
ㅤ→ 매우 적은 메모리 사용량 및 수평 확장 가능
ㅤ→ 다양한 하드웨어에 배포 가능 : arm5,arm6,arm7,arm64,mips,mips64,mips64le,mipsle

다른 BaaS 오픈소스들에 비해서 간단한 설치와 다양한 기능이 장점인듯 합니다
- Supabase 공개 베타 시작 - 오픈소스 Firebase 대체제 https://news.hada.io/topic?id=3347
- CloudBoost - 자바스크립트 기반 오픈소스 BaaS 엔진 https://news.hada.io/topic?id=196

 
Quickwit - 비용 효율적인 분산 검색엔진 오픈소스

- Rust + Tantivy 기반 (Rust로 구현된 Apache Lucene과 비슷한 오픈소스, 한글 토크나이저 지원)
- 빅 데이터셋을 인덱싱 하기 좋게 설계
ㅤ→ Compute 와 Storage 를 분리 : S3 같은 저장소를 검색 가능
ㅤ→ 손쉬운 서치 클러스터 관리 : 몇초 만에 인스턴스 추가/삭제 가능
- 지원 기능
ㅤ→ 인덱스와 클러스터 관리를 위한 간단한 CLI
ㅤ→ 로컬/리모트 인덱스
ㅤ→ Stateless 인스턴스
ㅤ→ Byte Range 쿼리를 지원하는 아무 객체 스토리지에나 사용 가능
ㅤ→ Full Text 검색(Phrase Query 포함)
ㅤ→ 타임 파티셔닝 지원 내장
ㅤ→ Boolean 쿼리 지원
ㅤ→ Text, i64, f64, date, bytes, composite types object, array 데이터 타입 지원

어떻게 비용 효율 적인 걸 구현했는 지는 블로그에 적은 소개글에 나와 있습니다.
- Quickwit: A highly cost-efficient search engine in Rust https://quickwit.io/blog/quickwit-first-release/
- Tantivy https://github.com/tantivy-search/tantivy

예전에 " Bayard - Rust 로 구현된 풀텍스트 검색 & 인덱싱 서버 https://news.hada.io/topic?id=841 " 소개할때는 Tantivy에 한글 토크나이저가 없었는데 추가되었네요.

https://github.com/lindera-morphology/lindera-ko-dic-builder
한글 토크나이저

 
Sioyek - 논문/기술서적을 위한 빠른 PDF 뷰어

- C로 된 오픈소스, 윈도우 실행파일 제공(맥/리눅스 제공 예정)
- 키보드로 네비게이션 가능, 모든 단축키 커스터마이징 지원
- 예전에 봤던 문서들 빠르게 검색 & 오픈 지원
- 목차 검색 및 바로 가기
- Smart Jump : 참조한 그림/문서 등에 링크 없어도 바로 가기 지원
- Mark : 문서내에서 특정 부분에 마킹하고 빠른 바로 가기 (영문 한글자)
- Bookmarks : 문자열로 이름 붙인 마크, 글로벌로 동작 (파일 이름까지 기억)
- Portals : 멀티 모니터 사용시 참조하는 그림들을 우측에 별도로 보여주기

 
나 같은 사람이 수학에 무슨 공헌을 할 수 있을까요? (번역)

Math Overflow 에 올라온 질문에 대한 빌 서스턴(1982 필즈상 수상자)의 답변.

Q.
- 나 같은 사람이 수학에 무슨 공헌을 할 수 있을까요?
- 수학은 가우스나 오일러 같은 천재들의 영역이고, 저처럼 평범한 사람들이 할 수 있는 의미있는 일이란 없는 것 같습니다. 그저 총알받이 병사가 아닐까요? 이 질문에 대한 답을 정말 찾고 싶습니다. 경험담이든 누군가의 전기이든 무엇으로부터든지요.

A.
- 당신이 공헌해야 하는 것은 수학이 아닙니다. 그보다 심오한 것이죠. 바로 수학을 추구함으로서 인간성에, 그리고 더 심오하게는 세상의 복리에 어떻게 공헌할 것인지입니다.
- 수학은 인간의 마음에 강하게 의존하고 있습니다. 수학적 이해력은 한 방향으로 단조롭게 확장되지 않고, 단순한 아이디어라 할지라도 다른 사람에게 전달하는 것은 어려울 때가 많습니다.
- 그래서 수학은 옛 아이디어와 새 아이디어에 숨결을 불어넣고 수학적 이해를 널리 퍼뜨리는 살아있는 수학자 커뮤니티에서만 존재할 수 있습니다.
- 몇 제곱미터의 땅에 첫 발을 디딘 것이 누구인지를 묻는 것은 정말로 부차적인 문제입니다. 혁명적인 변화는 중요하지만, 혁명은 드물고 스스로 유지되지도 않습니다. 혁명은 수학자 '사회'에 매우 많이 의존하니까요.

 
RAWGraphs - 스프레드시트와 데이터 시각화 사이의 미싱링크

- 빠른 시각화를 도와주는 d3.js 기반의 오픈소스 웹앱
1. 엑셀,CSV,TSV 등에서 데이터 붙여 넣기 (브라우저내에서만 데이터 보관 및 처리. 서버로 전송되지 않음)
2. 다양한 시각화 모델에서 선택(자신의 모델도 쉽게 만들기 가능)
3. 차트와 데이터를 맘에 들게 튜닝
4. SVG/PNG로 Export
- 다양한 시각화 방법에 대한 동영상 가이드 제공
ㅤ→ hexagonal binning, alluvial diagram, Voronoi diagram, violin plot..

 
'자바스크립트는 왜 이모양인가' 읽기

“다음 세대의 프로그래밍 패러다임은 ‘분산 비동기 프로그래밍’ 이 될 것이다”
“자바스크립트가 재미있는 것은, 자바스크립트는 특별히 분산 비동기 프로그래밍을 위해 만들어졌기 때문이라고 생각한다.”

- 이 책은 자바스크립트를 철저하게 ‘프로그래밍 언어’ 관점에서 접근하고 있다. 엔진이나 웹의 구동 환경 등을 다루지 않고, 언어 자체에 대해 모든 개발자가 알아야 할 것들을 다룬다.
- 그래서 자바스크립트라는 언어에 대해 조금 더 깊이있게 알아보고 싶은 사람들, 분야에 따라 관심은 없지만 ‘현재 대세인 언어 중 하나’ 에 대해 관심이 있다면 살펴볼만 하다.
- 하지만 이 책은 언어 스펙의 세세한 부분을 다루지 않는다. 오히려 배우는 사람이 그런 것을 알지 않기를 바란다. “언어의 간결하고 분명한 부분만 가까이 하라” 는 것이 필자의 주장이며, 자바스크립트는 그렇지 않은 부분이 충분히 많다. 그래서 스펙의 세세한 부분을 건너뛰면서 내용을 전달하는 것인지도 모른다.

 
Gaze - 파일 저장할 때마다 명령 실행하기

- 코드 변경하면 테스트/린터/도커빌드 등을 자동으로 실행해주는 도구
- 언어/에디터 무관
ㅤ→ 기본적으로 Go,Python,Ruby,JS,PHP,Java,Kotlin,Rust,C++,Docker 등 지원
ㅤ→ ?,*,** 등으로 파일 종류별 명령 지정 가능
- 맥/윈/리눅스
- 실행 옵션
ㅤ→ -c : 변경되었을때 실행할 동작 지정. gaze a.py -c 'python "{{file}}"'
ㅤ→ -r : 기존 프로세스 죽이고 재시작
ㅤ→ -t 1000 : 기존 프로세스 1000ms 기다렸다 죽임 (무한루프 등 테스팅할 때)
- create-and-rename 방식인 Vim,Visual Studio 등의 세이브 동작도 지원
- 훌륭한 병렬 처리
ㅤ→ 업데이트후 프로세스 자동 실행중에 다시 업데이트 하면 첫 프로세스 실행 종료될 때 까지 기다림
ㅤ→ 첫번째 프로세스 실행중 두번 업데이트 하더라도 최종본 한번만 더 실행
ㅤ→ 한 파일 변경해서 프로세스 실행중, 다른 파일 변경되면 프로세스 하나 더 실행
ㅤ→ "파일이 아닌 명령단위로 프로세스 관리"
- Go로 된 CLI 오픈소스

 
Tinycon - Favicon 조작 라이브러리

- 브라우저 상단에 표시되는 favicon 에 알림버블 추가 가능
ㅤ→ Gmail의 받은 메일 갯수 표시와 비슷한 기능 구현
- width,height,font,color,background 등 조정 가능
- 1000 넘어가는 숫자에 대해 단축어 지원 → 1k

 
Ultimate Backend - 멀티테넌트 SaaS 스타터 킷 오픈소스

- 대용량 확장이 가능한 마이크로 서비스 기반 백엔드
- CQRS 패턴을 이용한 DDD
- OAuth2, GraphQL API, gRPC
- Role Based Access Control
- Stripe 를 이용한 Payment 및 SaaS Plan 결제 지원
- Consul을 이용한 Service Discovery
- Multi Tenancy 지원
- TypeScript 오픈소스

 
Brython - 파이썬3의 브라우저 구현체

"Browser Python"
- 브라우저의 DOM 개체와 이벤트 접근 가능한 파이썬3 구현체
ㅤ→ 웹페이지에서 JS 대신 Python 으로 스크립트 실행 가능
ㅤ→ HTML5/CSS3 최신 스펙 및 jQuery, D3 및 Bootstrap, LESS, SASS 등 지원
- 별도 설치 필요없이 CDN에서 brython.js 로드만으로 사용 가능
- 온라인 에디터와 콘솔 제공해서 테스트 가능

 
KLUE 한국어 데이터 셋

국내외 여러 연구원들과 기업들이 모여서 만든 한국어 데이터셋
8개의 테스크로 분류 되어 있고 각각 10K ~ 63K의 데이터 셋을 가지고 있음

-----
나름 큰 뉴스여서, GeekNews에도 소식이 올라온 줄 알았는데 찾아보니 없어서 올립니다.

 
Microsoft, Web-Dev for Beginners 강의 공개

- MS Advocates 팀이 만든 12주, 24강짜리 웹 개발 기초 강의
- Javascript, CSS, HTML 기초
- 강의마다 비디오, 수업 전/후 퀴즈, 강의 문서, 프로젝트 기반 학습 및 단계별 가이드, 연습문제 등 제공
- 타이핑 게임, 브라우저 확장, 스페이스 인베이더 게임, 뱅킹 앱 등의 과제를 만들어보면서 배우기

- Microsoft, ML for Beginners 강의 공개 https://news.hada.io/topic?id=4564
- Microsoft, IoT for Beginners 강의 공개 https://news.hada.io/topic?id=4627
- MS Beginner's Series to: Rust [유튜브] https://news.hada.io/topic?id=4517
- MS의 Rust 기초 가이드 [한국어] https://news.hada.io/topic?id=4095

 
CATS - OpenAPI 스펙 기반 테스트 자동 생성 오픈소스

- Open API contract / Swagger 기반으로 동작
- 72개의 Fuzzer를 이용해서 자동으로 수만개의 테스트케이스를 생성하고 실행
ㅤ→ negative, boundary, structural validation, security, e2e functional flows..
- 전체 Endpoint 에 대해, 모든 HTTP Method 및 연관 Body & Parameter 로 테스트 케이스 생성
- Java 오픈소스

 
SQLite에 1분 내로 10억 Row 추가하기

- 큰 사이즈의 테스트DB를 빠르게 생성하기 위해 시도한 노력들을 정리
ㅤ→ 현재 최고 수준은 1억 개에 33초 (MBP 2019기준)
- Python 코드로 루프 : 천만개에 15분
ㅤ→ 배치 인서트 사이즈를 10만으로 조정 : 10분으로 단축
- SQLite 설정 최적화 : journal_mode/synchrounous 끄기, 캐쉬사이즈 조정, exclusive lock
ㅤ→ 루프 버전 1억개 10분, 배치 버전 1억개 8.5분
- PyPy 로 변경 : 배치 버전이 1억개에 2.5분으로 단축 (3.5배)
- Rust 로 작성 : 루프 버전 + SQLite 최적화 1억개에 3분
ㅤ→ Prepared Statement 로 변경하고 50 Row 씩 배치 인서트 하니, 1억개에 34.3초
ㅤ→ 쓰레드 버전으로 변경 : 1개의 Writer 쓰레드, 4개의 데이터 쓰레드. 32.37초
- SQLite DB 저장소를 :memory: 로 변경하니 2초 단축해서 29초
ㅤ→ 1억 row 플러시하는데 2초가 걸리는 듯

- 다음으로 시도해 볼 것들 (1분에 10억개 달성을 위해)
ㅤ→ 프로파일링 해보기
ㅤ→ 멀티프로세스 버전으로 4코어를 활용해보기
ㅤ→ Go 언어로 작성한후 GC 꺼버리고 실행
ㅤ→ 크레이지 아이디어 : SQLite 파일 포맷을 배워서 직접 포맷대로 생성하기

 
FNM - Fast Node Manager

- Rust로 작성된 빠르고 간결한 Node.js Version 매니저
- 맥/윈/리눅스 지원
- 싱글 파일, 쉬운 설치, 빠른 시작
- .nodev-version 및 .nvmrc 이용
- 쉘 자동완성 지원 : bash/zsh/fish/powershell, WinCMD(기본 커맨드)는 일부만 지원

훨씬 빠르네요.
nvm같은 경우 이런식으로 복잡한 메타 프로그래밍을 동원해 평가시킨후 eval값을 저장해 쓰고 있었거든요.
https://github.com/black7375/BlaCk-Void-Zsh/…

그리고 brew가 엄청 느리더군요.
벤치마크해봤을때 $(brew --prefix)로 경로 찾는게 100ms가량 걸렸던 기억이..

 
Gorse - 추천 시스템 오픈소스

- 다양한 종류의 온라인 서비스에 사용 가능한 유니버설 추천시스템을 목표
- 아이템, 사용자, 인터랙션 데이터를 넣는 것 만으로 모델을 학습하고 추천을 생성해주는 자동화 시스템
ㅤ→ AutoML : 최적의 추천 모델과 전략을 자동으로 선택
ㅤ→ 분산 추천 : 싱글 노드 학습, 분산 예측. 추천 단계에서 수평 확장
ㅤ→ RESTful API : CRUD 및 추천 요청
ㅤ→ Dashboard : 데이터 import/export, 모니터링, 클러스터 상태 체킹
- Go + MySQL/MongoDB + Redis

 
LiveKit - 실시간 커뮤니케이션 플랫폼 오픈소스

- 앱/웹에서 10~1000명 단위의 실시간 오디오/비디오 회의 기능을 내장할 수 있게 지원
- Agora의 오픈소스 대체제
- 크로스 플랫폼 SDK : JS, React, Swift, Kotlin, Go
ㅤ→ React Native, Flutter, Unity/C# 지원 예정
- JWT기반 인증 및 RBAC 지원
- 셀룰러 와 WiFi 간 부드러운 스위칭
- GKE/EKS 및 기타 K8s 에 쉽게 배포할수 있는 Helm Chart 제공
- ICE,STUN,TURN 및 WebRTC 프로토콜 수준의 지식은 필요 없이 쉽게 사용 가능
- 훌륭한 성능 : 싱글 인스턴스(GCP c2-standard-16) 기준
ㅤ→ 오디오 : 송출 10명, 청취자 1000명
ㅤ→ 비디오 : 송출 4명, 청취자 440명

* JWT : JSON Web Token
* RBAC : Rule Based Access Control

 
Jetbrains의 2021 개발자 에코시스템 현황

2021년이 들어서자마자 Jetbrains 제품군을 쓰는 모든 프로그래머를 대상으로 한 설문조사의 결과가, 오늘 발표되었습니다. 최근 다국어 지원을 강화하는 행보를 보이던 Jetbrains가, 이 문서도 한국어로도 제공하는 게 인상깊네요.

꽤 많은 내용을 자세하고 심도 깊게 다뤘습니다. 한국어로 멋있게 번역되어있으니, 원문을 읽어주세요 'ㅁ '!

흥미로운 점들 :

- 저 설문조사를 제출한 프로그래머의 57퍼센트는 프로그래밍을 취미로 하고 있습니다.

- 프로그래머의 8퍼센트만이 헤드폰(이어셋)을 끼지 않습니다.

- 18~39세까지는 선호하는 음료 1위는 탄산음료나 커피가 아닌 물입니다. 2위가 커피고, 3위가 차, 4위까지 가야 탄산음료가 보입니다.

 
Framework Laptop 배송 시작 및 리뷰들 공개

- 오큘러스VR의 하드웨어 리드가 만든 새로운 형태의 노트북과 에코시스템
ㅤ→ 확장 카드 시스템으로 자유롭게 업그레이드 및 커스터마이즈, 수리 가능
- FTC가 Right to Repair에 힘을 실어주는 좋은 타이밍
ㅤ→ CNET (8.5/10) "Right-to-Repair 운동의 대표적인 모델, Framework 의 모듈형 노트북은 그동안 본 것중 가장 스마트한 디자인 중 하나"
ㅤ→ PCWorld "최고의 Right-to-Repair 노트북"
ㅤ→ Digital Trends (4/5) "모듈화에 대한 가치있는 실험 일뿐만 아니라, 훌륭한 노트북이기도 함"

모듈형 노트북, Framework Laptop 공개 https://news.hada.io/topic?id=3797
- 13.5인치(2256x1504), 알루미늄 바디, 1.3kg, 55Wh 배터리, 1080p 60fps 웹캠
- 인텔 11세대 CPU, Wi-Fi 6E, ~64GB DDR4, 4TB+ Gen4 NVMe
- 확장 카드 시스템으로 자유롭게 업그레이드 및 커스터마이즈, 수리 가능
ㅤ→ 4개의 확장 베이 슬롯 : USB-C, USB-A, HDMI, DisplayPort, MicroSD, 초고속 스토리지, 하이엔드 헤드폰 앰프 등 장착 가능
ㅤ→ WiFi, 메모리, 메인보드도 모두 교체 가능
ㅤ→ 배터리, 스크린, 키보드, 컬러교체 가능한 자석 베젤 등도 다 교체 가능(QR코드가 붙어서 교체방법 및 구매 링크 바로 접속)
- 새로운 모델을 내놓는게 아닌 마켓과 에코시스템을 만들어서 커뮤니티와 파트너들이 호환 모듈을 자유롭게 만들고 팔수 있게 함

이런 형태의 제품들이 초기 에코시스템을 만드는 데 실패하거나, 퀄리티가 낮아서 외면받거나 하는 문제가 많은데, 생각보다 괜찮게 나온 것 같아요.
직접 조립하는 DIY 키트 형태로 약간 저렴하게 판매하는게 재밌내요.

화면도 서피스 식의 3:2 비율이라 눈에 가네요.

 
SpaceX의 저궤도 위성 인터넷 Starlink 4개월 이용기

- 기존 케이블과 동시에 사용하며 테스트
- 대부분의 경우 기존 케이블과 별 차이없음. 속도는 케이블 보다는 느리지만 괜찮음
ㅤ→ 집주위의 나무들 때문에 장애물로 인식되면서 끊기는 현상은 발생 (글쓴이의 특수상황)
ㅤ→ 아마 인터넷이 스타링크 뿐이었다면 나무를 다듬었을 것
- Dishy 안테나는 기술적으로는 훌륭(가격이 500달러이지만, 실제로 SpaceX는 판매당 손실을 보고 있음)
ㅤ→ 몇몇 단점이 있음 : 사용시 매우 뜨거움, Cat6 이더넷 케이블 배선이 어려움
ㅤ→ 하지만 더위,눈,비,번개등 다양한 날씨에도 잘 동작
- 전원은 두개의 포트가 있는 PoE++ 스위치로 제공되어 라우터와 Dishy가 같이 사용
ㅤ→ 평균적으로 하루종일 100W 정도의 전력을 소모 (케이블모뎀 + Asus 라우터는 5~10W)
ㅤ→ 눈이 오던날은 125에서 피크시 175W까지 올라감
ㅤ→ 하루 2.4 kWh 소모하므로, 미국 평균으로 보면 1달에 $10의 전기세 (중간크기 냉장고와 비슷)

전력 소모가 엄청 나네요. 지붕에 설치하는 거라 태양광으로 하고 싶다는 사람들 있는거 같은데 쉽지 않을듯.
스마트폰 앱에서 장애물을 보여주는 화면은 신기하네요.

일반적으로 인터넷이 다 잘되는 우리나라 같은 경우엔 별로인 듯 하고,
땅 넓은 미국이나, 사막 한가운데, 바다위나 산꼭대기 등에서는 꽤 좋은 대안일 듯

눈오는 날 전력소모가 많은 이유는, 눈에 파묻히지 않도록 녹이기 위해서 인 것 같더라고요.

 
이 해변은 존재하지 않습니다

- 2만장의 해변 이미지로 학습된 StyleGAN2-ADA 네트웍으로 AI가 생성한 해변 이미지들
- 랜덤 이미지 와 K-Means 클러스터링(376개) 된 이미지들 보기
- 2만장의 이미지 네트웍 데이터는 데이터셋으로 제공 (362MB, 1280x768px)

 
GitHub Copilot : 첫인상

- 몇 주 사용해 보고 느낀 점
ㅤ→ "3~5년내에 우리 모두는 더 많은 코멘트를 작성하고, 모든 것에 더 설명적인 이름을 사용하고, 훨씬 적은 코드를 작성하고, 수많은 코드 리뷰를 하게 될 것"

- 장점
ㅤ→ 반복적이고, 지겨운, 보일러플레이트 코드 작성에 탁월
ㅤ→ 최소한의 컨텍스트로 데이터셋을 조각내고, 훈련 및 평가하는 코드를 생성 가능
ㅤ→ "이젠 퀵 매크로 작성할 필요가 없음"

- 단점
ㅤ→ 고급 기능에 대해서는 Copliot의 유용성은 미묘함
ㅤ→ 올바른 일을 할 수도/못 할수도 있는 대량의 코드를 생성하는 것은 주의 해야함
ㅤ→ 오래된 버전의 라이브러리를 추천하기도 하고, 구문적으로 올바르지 않은 코드를 사용하기도 하고, 존재하지 않는 ML 알고리즘 파라미터를 채우기도 함
ㅤ→ "항상 주의를 기울여야함"

[ 연구 ]
GPT에 대한 Codex 논문에서 중요한 인사이트를 얻었음

- 가능성
ㅤ→ "Codex는 다양한 방식으로 유용할 수 있음. 예를 들어 사용자를 새로운 코드베이스에 온보딩 하고, 순련된 코더들의 컨텍스트 스위칭을 줄이고, 비 개발자들이 사양을 작성하면 Codex가 드래프트 구현을 만들고, 교육이나 탐색을 도와줄 수 있음"
ㅤ→ 즉 회사의 코드베이스를 학습하고 회사 전체에서 사용되는 패턴이나 모듈을 추천하면, Pattern 과 Practice를 표준화 하는데 도움이 될 것(금새 일어나진 않겠지만)
ㅤ→ 또한 비 개발자들이 사양을 작성할 수 있게 된다는 게 매우 흥분됨. 특히 테스터들. API나 UI를 테스트하기 위해 코드를 작성할 수는 없지만, 뭘 하려는지 설명을 작성할 수 있으므로, 그들이 필요한 대부분의 코드는 Copilot 이 충분히 작성 가능할 정도로 단순하고, 생산성을 크게 높일 수 있을 것. 현재 프리뷰 버전의 Copilot 으로도 이미 어느정도 가능

- 제한점
ㅤ→ Codex 는 실제로 의도한 작업을 제대로 수행하지 않는 솔루션을 제안할 수 있으므로 "코드 리뷰" 가 중요
ㅤ→ 또한 "Automation Bias"(자동화 편향) 때문에 Copilot 이 좋아질수록 생성된 코드에서 버그를 찾으려는 의지가 줄어들고, 생성된 코드의 버그는 미묘하고 식별이 어려울 것

- 잘못된 코드를 추천할 수 있음

저도 예상보다 훨씬 더 추천을 잘 해준다고는 생각했습니다. (영어) 글쓰기 능력이 더 중요해질 것 같고요. 다만 비개발자나 주니어 개발자가 쉽게 비즈니스 로직 코드를 작성할 수 있게 돕는 거랑은 아직은 거리가 꽤 있어 보이고, 숙련된 개발자가 지루한 코드 작성 시간을 줄이는 데는 도움이 상당히 되는 것 같습니다.

단점은 여기 적힌 것과 비슷하게 느꼈습니다. 특히 '구문적으로 올바르지 않는 코드를 추천'하는 경우가 있다는 것에서요. 지금은 오히려 추천이 완전하지 않기 때문에 이렇게 추천했구나, 하면서 조금 참고해서 코드 쓰는 수준인데 추천 수준이 올라갈수록 위에 적힌대로 그걸 그대로 썼다가 생기는 버그가 많아질 것 같긴 해요.