Welcome to the "Un-" Conventional! Welcome to the "Extra-" Ordinary!
Highlights
Professional Summary A true generalist
I've done a lot of different things in my life, professional or otherwise. My unusual experience gives me a rather unique perspective on many different things, and it makes me a more effective engineer (and, a better human being).
Technical Expertise From fullstack dev to AI/LLM
I've been doing full-stack Web and mobile app development pretty much my entire life. I've been doing LLM app development recently, and I am familiar with many different AI/ML/LLM technologies and frameworks.
Current Projects Always working on something
I am mainly working on AI/LLM-related projects these days. Not just learning APIs and what not, but I spend time to understand this new technology at a more fundamental level. Currently, my primary focus is building a real-time voice agent.
My Thoughts and Ideas The Minority Report
You can read more about my thoughts and ideas in the Essays page. I often have different views than most people and hence I call my new blog the "minority report". (Just started, and it is pretty empty at this point.)
Technical Skills
A collection of my skills.
AI is taking over the world.
I've been working on LLM-based AI app development for the past year or so.
I am familiar with open-source libraries like LangChain, LangGraph, and LlamaIndex,
and other more "standard" AI SDKs from OpenAI and Google, etc.
Also, I'm no expert, but I have a good understanding of prompt engineering.
Anybody who wants to start LLM development should first start
learning effective prompting.
The most common LLM applications are custom chatbots augmented with domain-specific knowledge,
e.g., primarily through RAG (retrieval augmented generation).
RAG is more of an art than a science. There are a lot of factors to consider
to build an effective RAG system such as chunking, choice of embeddings and vector databases, etc.
And, ultimately, understanding and managing "context", and not just prompts,
is required to build effective chatbots.
A new kind of LLM-based apps, generally called 'AI Agent',
are getting a lot of attention these days.
They are typically characterized by the fact that they use "tools",
e.g., relying on MCP (model context protocol),
often based on the decision made by the agents themselves.
Hence we sometimes call them "autonomous AI agents", but this characterization is debatable.
"Deep research agent" is one of the fastest developing areas.
Besides chatbots and autonomous AI agents, I've done some general LLM development,
such as quantization and fine-tuning, etc., in addition to RAG.
Also, LLM-based document analysis is really an application of RAG.
What else can we do with LLM technologies?
I've been doing fullstack web app development for many years now.
I started as a backend developer, and picked up frontend development over the years.
For backend development, I mostly use Java, C#/.Net, Go, Python, and Javascript/Typescript (Node.js).
For frontend, I generally use frameworks like Angular and React/Next.js.
I also use various UI libraries such as Tailwind CSS and Shadcn UI.
Web development is really my bread and butter.
Despite the fact that I may be rusty in some of the technologies,
this is the areas I can deliver consistently, whatever the requirements are.
I've been using various services of AWS and Google Cloud for many years now,
and to a lesser degree other cloud platforms like Azure.
(The first Google Cloud service I used was App Engine (GAE), back in 2011.
At the time, I was working on a URL shortener service,
and the cold start problem of GAE was a big issue.
(Oh my my. How many different tricks I tried to beat the cold start problem?)
On top of this, Guido van Rossum
refused to support naked domains.
The project was ultimately abandoned.
It's funny that I remember these things after all these years. ๐)
I've used, quite extensively, pretty much all widely-used databases like Postgres and MongoDB,
and Redis, etc.
I am also familiar with various cloud-based database services such as AWS RDS, DynamoDB, Aurora,
and Google Cloud Firestore and CloudSQL.
I have been also using vector databases like Chroma and Pinecone recently
as well as the pgvector extension of Postgres.
I did Android app development for many years, until a few years ago.
(Haven't done it much recently. Last time I worked on Android apps was 2018.
There is some story as to why I stopped doing Android development
at least for my own projects,
which I will not go into here.
On a related note, I also stopped selling my books on Amazon bookstore.
We are living in a twisted world where bullies rule the world,
at every level of society,
because very few people stand up to them.
I believe that somebody has to.)
I also have some limited experience with cross-platform tools like React Native and Flutter.
Portfolio
As a software engineer, I worked on many (open-source) "personal projects" over the years.
Past Projects
I worked on many different projects over the years.
Published Books
Writing a book is probably the least rewarding work you can invest your time on. ๐ I spent a few years of my life writing (educational) books, and I ended up selling/giving away no more than a few hundred/dozen copies for each book.
Work Experience
A summary of my professional journey and contributions.
Sr. Fullstack Developer, OpenTable
2018-2019
Migrated the old photo/image server written in Clojure into C#/ASP.Net Core.
Implemented a new media metadata API server in C#/.Net.
Created a number of media-serving React components for the OpenTable website (Typescript).
Sr. Backend Developer, Yahoo!
2007-2010
Created an automatic keyword generator, for the Yahoo Small Business customers, based on their sales and Web search data.
Implemented a KPI dashboard using the internal business data for the upper management.
Created a rule engine to automatically update the business logic based on Yahoo SMB's business requirements.
Worked on the checkout system (PHP), and re-designed and re-implemented its API service, according to the REST paradigm.
Sr. Software Developer, PeopleSoft
2004-2005
I was part of a core team which worked on creating a new infrastructure to help the engineering migrate PeopleSoft's HR apps to the Web. I was primarily responsible for the "data table" component, in C++/Javascript.
Software Developer, Brio Software
2000-2003
I Participated in the migration of the legacy desktop BI app to the newly designed BI Web service in C++.
Also worked on both frontend and backend layers of a new "thin client" Web app, in Java and Java Servlet/JSP, which was a company-wide project.
Education
My educational background.
1995-1999
The Hebrew University of Jerusalem, Israel.
1990-1995
University of California, Santa Cruz.
1988-1990
Pohang Institute of Science and Technology, Korea.
1984-1988
Seoul National University, Korea.
Summary
First of all, thanks very much for reading!
As you can see from a long list of things that I've built over the years, I love building things.
Despite the appearance, I'm extremely focused on the "current" task to the level of obsession.
Again, despite the long list, I'm very persistent when I work on certain ideas or projects.
I consider myself a self-starter, doer (and, not a talker), and a true innovator.
I'm a fast learner, and I love learning things that I can use to build new things.
I really believe in the future of AI, and I am currently doing what I can to help shape this future.
Always Learning. Always Building.
Using the state-of-the-art AI technologies, ...
Questions and Answers
Some frequently asked questions.
How can I help you?
Please contact me if you have any further questions.