ポートフォリオ
個人プロジェクトに取り組むことは、私にとって最も充実したプログラミングの形であり、これは多くの成功したオープンソースおよびクローズドソースの製品によく示されています。これらの目標は一般的に、有用で技術的に挑戦的で、そしてシンプルに クール ツールを作ること、そして新しい技術やフレームワークを実験することです。
そのようなツールのほとんどは、フルスタックのウェブ開発、NLP、またはCLIの分野にあり、主にPython(Flask/バニラ)、TypeScript(React/Svelte/Vue)、および/またはGolangで書かれています。約12の完全なプロジェクトのソースコードは私の で入手可能で、最高のいくつかについてはより詳細な説明を以下に書いています。
仕事や教育経験の説明については、私の 履歴書.
クリーム・オブ・ザ・クリーム
Lingotrack.com
'22年10月から'23年11月までの情熱プロジェクト、 Lingotrack (50k以上のSLOC、Golang + TypeScript + Svelte) は言語学習者のための社会的プラットフォームで、進捗を追跡し、魅力的で適切なレベルのメディアを見つけることができます。学習者の達成度を可視化し、魅力的な外国のコンテンツを発見できるようにし、同じ志を持つ仲間と繋がることで、サイトは流暢さへの道のりをより身近なものにすることを目指しています。
Lingotrackの構築は、学習経験として可能な限り多くのことを自分で行おうとしたため、膨大な量のことを学ぶ機会となりました。これには、Stripeの統合からクラウドベースのLinux VMの管理、自動化されたCI/CDの作成まで、そして少なからぬ苦労も含まれていました!
しかし、最終的な結果は十分に価値があるものでした - 月間アクティブユーザーは約1000人、クラウドソーシングデータベースには1500以上のメディア記事があり、4.5 年 の学習が追跡され、週に数回ファンメールを受け取っています!
Lingotrackの詳細については 公式のアバウトページをチェックしてください で確認するか、 Product Huntでの好評を博したローンチをチェックしてください.
Locadapt.com
過去の人生で、私は翻訳者として働き、4000万ドル以上の資金を調達したスタートアップのi18n開発業務を請け負い、10年間ヨーロッパに住んでいました。これらの経験を通じて、一つのことが明らかになりました:ウェブサイトを国際化(多言語化)するプロセスは非常に有益ですが、同時に不当に困難でもあるということです。
登場 ロカダプト (25,000行以上のコード、TypeScript + React + Svelte + Supabase)、Claudeを活用したプラットフォームで、2行のコードで任意のサイトを多言語化します。ミニファイされたJSスニペットと対応するCSSを単純に head
に追加するだけで、このプラットフォームは自動的に、正確に、そして手頃な価格で、任意のサイトを複数の言語に翻訳することができます。 このページで試してみてください — 右下にボタンがあります!
実績には、翻訳管理ダッシュボード、サブドメインでのSEO最適化のためのリバースプロキシサービス、Web Workersによる並列処理、独自のアフィリエイトプログラム、サーバーレスエッジ関数、クライアントサイドキャッシング、ブラウザレスの疑似DOM書き換え、 詳細なドキュメント、などがあります。
現在、いくつかのYC企業と競争しており、サンフランシスコの資金力のあるスタートアップが私を引き抜こうとしましたが、製品に自信があるので、今のところ踏みとどまっています!
ハッカソンの勝利
ColdCraft.ai
ColdCraft.ai (約10,000行のコード、Flask + TypeScript + Svelte) は、履歴書、Googleカレンダー、Gmail、LinkedInと連携するダッシュボードを備えたSaaS型の冷たいメール送信用Chromeエクステンションで、数秒で超パーソナライズされた冷たいメールを作成するのに役立ちます。私は1年生の春学期(SP '24)に友人と数週間かけて構築しました。
このプロジェクトは LinkedInとCiscoのコーネル大学年次工学展示会で企業賞を受賞し、複数の投資や買収のオファーを受けています。
NoteHacks
コーネル大学の友人たちは、私が授業でノートを取らないことをからかうことがありました。しかし、私は、必死にノートを取ることで注意力が散漫になるよりも、講義に完全に集中することで最もよく学べると気づきました(そして今でもそう考えています)。
とはいえ、宿題や復習などにはノートが非常に役立つことは確かです。そこで、私は新しい志を同じくする友人たちと一緒に カナダ最大のハッカソン AIとCVを活用したノートテイキングツールを構築し、この重労働を私たちの代わりに行うことにしました。Next.js、Flask、OpenAIを活用した私たちのツールは、講義に参加して聞き取り、要約されたMarkdownノートを作成し、後で対話的に操作して保存することができます。さらに、要約レベル、一時停止、ノートの展開/折りたたみなどのジェスチャーセットメタパラメータも利用可能です。
私たちの努力と徹夜の作業が評価され 43チーム中1位 の Best Use of Groq賞 トラック(著名なLLM企業)で
Surgelingo
私は100人近い参加者がいる48時間のオンラインハッカソンで「ベストソロハック」を獲得しました。テーマは業界の破壊的革新で、私の提出作品であるSurgeLingoは、NLPとPostgreSQLを活用して学習者にTwitter風の個別文を提供する言語学習ツールで、外国語学習業界を効果的に破壊しました。
Devpostページでハッカソンの提出作品を見ることができます ここ、そして バックエンド より詳細な説明も。同様に、 フロントエンド と SurgeLingoの文の例 をGithubからフォークしてローカルで実行することもできます。
FindCircles
Circles (約7,000行のコード、Next.js + Supabase + Google Cloud使用) は、コーネル大学の広大なキャンパスでの私と3人のプロジェクトチームメイトの経験にインスパイアされた、友人グループ内での簡単で自発的な出会いや新しい人々との交流のためのウェブアプリです。
ユーザーは友達を招待してサークルを形成でき、GCalの統合により、Circlesは共有の空き時間を自動的に見つけ、アクティビティを提案します。Circlesはまた、毎週月曜日または要求に応じて、提案された集まりの時間とイベントをメールで送信します。このソフトウェアはさらに2つの主要な機能をサポートしています:
- 空いている共通の友達を招待し、新しい友達作りを促進する
- イベントの共有フォトアルバムを作成する
このツールはCornellの2024年Big Red Hacksハッカソンで審査員から最優秀ドメイン賞(findcircles.co)を受賞し、学生審査員の人気を集めました(残念ながら、スタッフの審査員は仕事関連のGoogleカレンダーとスケジューリングを思い出してしまいました😅)。
選りすぐりのサイドプロジェクト
言語学習ダッシュボード
後のイテレーションのインスピレーションとなった Lingotrack より単純なローカルオンリーバージョン。
language-learning-dashboard
私が冬のCOVID-19ロックダウン中の数ヶ月間で構築した、美しい外観のフルスタック言語学習ウェブアプリです。真剣な中国語学習者として、最近、外国語の上達を追跡するための既存のサイトに満足できないと感じていました。そこで、当然の結果として、自分用に一からサイトを作ることにしたのです!
結果として、最小限でありながら強力なダッシュボードが生まれました。これは、進捗追跡と時間ログ記録のための、分単位に至るまでの高速で直感的なインターフェースを提供します。ファイルのアップロード、PostgreSQLを利用したタイムライン可視化、さらにはスタイリッシュなダークモードまで、このツールにはすべてが揃っています。しかし、簡潔さを保つため、ここでは(多数ある!)詳細すべてには触れません。詳細なドキュメントをまとめました 私のブログで そして3か月間使用した経験を書き記しました Online Life Calendarは、人生のプランナー、ToDoリスト、アカウンタビリティアプリを1つにまとめたものです。JavaScript、Python、Flask、そして❤️で構築されています。.
オンライン・ライフ・カレンダー
Online Life Calendarは、ライフプランナー、ToDoリスト、そしてアカウンタビリティアプリを1つにまとめたものです。Python、Flask、Jinja、そして少量のJavaScriptで構築されており、このツールは生活を追跡するためのエレガントで応答性の高いインターフェースを提供します。
- 人生を数日から数十年のスパンで見る
- 人生の段階をイベントに基づいて色分けする
- 人生の瞬間をテキストと画像で埋めてください
- 自分のための具体的な目標をシンプルなカードとして設定する
- 人生に関する詳細な統計を見て、自分の人生カレンダーをダウンロードする
…などなど!Online Life Calendarは完全に無料で、執筆時点で数百人のユーザーがおり、個人的に自己動機付けと計画のための素晴らしいリソースであることが証明されています。そのソースコードは以下で見つけることができます ここ.
更新:経済的な理由でサイトは閉鎖されましたが、ソースコードはGitHubで引き続き利用可能です。
言語統計
私は視覚化と統計に対して不健全なほどの執着があり、 language-statistics
それをよく示しています。ディレクトリのGitHubリポジトリ風のカラーバーをコマンドラインから直接表示し、PNGまたはSVG画像として閲覧することができます。
GitHubの言語バーがGitHubに限定されていることにいつも少々イライラしていました。なぜなら、それが提供する詳細はとても目を見張るものだからです。そこで、Pythonパッケージとしてそれを再現することにしました。今では私のプログラムを使えば、次のように実行するだけです statistics
ターミナルのどこからでも美しいカラーバーを見ることができます。上記のようなものです — そして何より、高度にカスタマイズ可能です。
これらは、GitHubよりも優位性を持たせる追加機能です linguist
に対してエッジを与える追加機能の一部です:
- 特定のファイルタイプを除外するように選択する
- ルートディレクトリからプログラムが検索する深さを指定する
- エクスポートされた画像の見た目を制御する
- ファイルが混ざり合う限界を選ぶ
Other
- 使用する色と最大ファイルタイプ数を決定する
名前付きファイルもサポートしています。例えば Dockerfile
または Cakefile
詳細については、以下で読むことができます README.md
以下にあります LinguaKiteのランディングページリポジトリ
Linguakite
LinguaKiteは、中学生の夏休みに作った独自の英語学習アプリです。Pythonと Vueで約5,000行のコードからなるフルスタックのNLP駆動アプリで、ユーザーに単語帳の管理と閲覧、レベル別コンテンツの読解、理解を深めるためのクイズなどの機会を提供しています。
アプリを構築するために使用したかなり珍しいフレームワークの組み合わせを考えると、すべてをまとめるのは難しい課題でしたが、 時間経過によるダウンロード数のグラフ それを作った友人にとって大きな助けとなり、その過程で私も多くのことを学びました。
チェス・グラフ
若い頃はチェスをしていましたが、COVID-19の発生まで王様のゲームから遠ざかっていました。その時、自宅で過ごす時間が増え、通勤時間が減ったため、新しい趣味を見つける必要がありました。チェスはそのような趣味の一つとなり、すぐに1日何時間もプレイしたり戦略を磨いたりするようになりました。
この間、チェスプレイヤーのスキルを視覚的に表現するソフトウェアが驚くほど不足していることに気づきました。その隙間を埋める必要があると気づき、数週間かけてコーディングに取り組みました chess-graph
と plotly
.
このプロジェクトに多くの労力を費やしました、そして 最新リリース 現在、プレイヤーは色、ゲームファイル、シェーディング、ホバーチップなどを選択できます。
ロー・フェイス・モード
しばらく前、私は偶然 OpenCV
Pythonライブラリ — コンピュータビジョンのためのツール。それを使って遊んでいるうちに、より多くの素晴らしい機能を発見し、MacBook Airにあるべきではないバッテリー寿命という個人的なフラストレーションの解決に役立つかもしれないと思いつきました。
そして、かなりのハッキングの末、動作するプロトタイプができました low-face-mode
残念ながら、すぐに分かったことですが、このようなプログラムをバックグラウンドで実行すると、節約する以上にバッテリーを消費してしまいました。しかし、AppleScriptプログラミング言語を使用し、Linuxをサポートするプルリクエストを解決し、全体的に多くのことを学んだ結果、
残念ながら、すぐに分かったことですが、このようなプログラムをバックグラウンドで実行すると、節約できる以上にバッテリーを消費してしまいました。しかし、AppleScriptプログラミング言語を使用し、Linuxをサポートするためのプルリクエストを解決し、全体的に多くのことを学んだ結果、 GIF (参照 完成品