1. What I'm thinkng about...

    I wish February wasn't nearly half over when I discovered this from Whiona!

    Having a month dedicated to finishing existing projects is something I need. There are so many incomplete projects I'm working on I could really benefit from having a month where I focus on what's in progress and file away new ideas for later.

    There's still half a month left. I'm going to make a push to finish my Peloton Pal app. There are a few bugs to work out and then I'm toying with redoing the interface (not all LLM apps need to have a chat interface!)

    Now let's go and get this finished!

    /February 12, 2024

  2. What I'm watching...

    I loved this from Jason.

    Stinge watching describes my viewing habits of the past couple years. Two kids under two has severely limited the time available for sitting down to watch a TV show. By the time the kids are asleep and all the todos that accumulated throughout the day are done I'm lucky to have time for one episode of a show.

    A second catalyst for this behavior is that I hate picking something to watch. When I find a show that's engaging I want to prolong that enjoyment as long as I can, build a little anticipation for the next episode, and delay having to pick something else to watch.

    Recently I just finished watching The Brothers Sun on Netflix. Both kids have been going through a rough period sleeping and this show has been nice to put on at the end of the day. Funny, entertaining, intriguing enough, don't have to invest too much thought into it.

    /February 09, 2024

  3. What I'm doing...

    A couple months ago I wrote about using LLMs to generate personalized workout recommendations connected to my Peloton account. After a month of using my Peloton Pal I couldn't be more enthusiastic about the results!

    I worked out everyday this month! Since I started using Peloton roughly four years ago I've only achieved that goal on one other occassion. Similarly I'm on track for nearly 12,000 minutes with Peloton this year where my previous best was only ~7,500 minutes.

    There are two reasons for the increased engagement: reduced decision burden and more variety. Before I log into Peloton I know what my workout is. I don't have to scroll and consider all the options. The agent has access to my Peloton activity and is able to make the best suggestion given my preferences. I no longer have to scroll through classes to decide the workout I want to do. It seems small, but removing that one barrier has made a huge difference.

    Having the agent create my workouts also ensures there is variety in my workouts. The agent has recommended class types I otherwise would have scrolled past. There has also been a mix of instructors to keep things fresh. Looking at the breakdown of class types I've done a little bit of everything this month:

    • Meditation: 17 (when P has trouble falling asleep)
    • Stretching: 16
    • Cycling: 12
    • Strength: Upper Body: 8
    • Yoga: 6
    • Strength: Lower Body: 5
    • Strength: Full Body: 4
    • Strength: Core: 2

    For my fitness goals that's a pretty good mix of disciplines to get me closer to my goals.

    Beyond the quantifiable metrics, I feel like I'm finally starting to get close to my pre-diagnosis abilities. I'm moving the best I have since my diagnosis two years ago. Overall I feel healthier and want to responsibly keep the momentum going.

    There are still some bugs. The agent doesn't do math well (a well known issue with LLMs) so it will sometimes recommend a workout that exceeds the time limit I set. Sometimes an error is made mapping the class ID when adding recommended classes to the stack. These are relatively minor issues, but I want to invest some time to get them resolved.

    If you want to run Peloton Pal for yourself you can get the code on GitHub.

    /February 01, 2024

  4. What I'm making...

    RecipeSnap Update

    Earlier this year I released RecipeSnap, a simple web app creating a digital interface for cookbooks and recipe cards to make them easier to use in the kitchen.

    The initial version utilized a PyTorch model to finetune LayoutLMv3. While this worked well, finetuning the model introduced quite a bit of overhead for an app that has small volume. The model had to be created, maintained, hosted, monitored and improved. All of this was a bit much for a small side project.

    In November 2023 OpenAI released the preview of their GPT4-V model that allows you to incorporate vision capabilities into your request. After some initial testing the gpt-4-vision-preview model performed really well extracting information from images of recipes. In this update I've rewritten the app to replace the PyTorch model with GPT-4V to reduce the maintenance overhead of this small app. So far I'm happy with these results. I was able to save costs by turning off my model server. I also don't need to invest a ton of time into retraining the model to improve the performance. In this small use case GPT-4V performs well enough.

    OpenAI also introduced JSON mode to force the model to generate strings that can be easily parsed into valid JSON objects. Since all of the responses are being parsed to JSON anyways to fill the UI enabling this has simplified the process of extracting the information from the model. For an added layer of validation I also defined Pydantic models to validate the JSON responses. This has made the app more robust and easier to maintain.

    On the usability front some of the UI components were shuffled. I usually reference my laptop or iPad when I cook. Previously the app displayed the ingredients in a component above the instructions. While cooking I was doing a lot of scrolling. Hands get dirty while cooking so I wanted to minimize the amount of buttons that needed to be clicked. To fix this the ingredients and instructions are displayed side-by-side in separate columns. This makes it easier to cross reference.

    Finally, I added some basic logging. I know the app doesn't get a lot of traffic, but I've been curious if anyone else out there is using the app. Having some basic logging in place will help me understand how the app is being used and if there are any issues. The logging is very basic. Streamlit doesn't have a mechanism to reliably track users, so there is not user specific info. Instead I'm generating a random session ID at start-up and tracking actions for the session. It's crude, but it's a starting point.

    If you haven't go try RecipeSnap and let me know what you think! There are a few ideas I'm considering for next steps, but I'd love to hear what you think about the kinds of features you'd like to see!

    /January 01, 2024

  5. What fills me with joy...

    P has trouble with the J so for the past couple of weeks she’s been singing “Bingle bells” and it’s the most adorable thing. She’s really picked up on Christmas this year. She saw a couple depictions of Santa and now whenever she sees the guy in the red suit she says “Ho Ho Ho Merry Christmas”. I don’t think she has made the connection between Santa and presents. She genuinely enjoys the Santa character. Of course when she met Santa it was complete train wreck full of tears and screams. Maybe next year will be better.

    “Ornament” is her new favorite word, but as an extension she’s a little too interested in the ornaments on the tree where we strategically put the ones least likely to break on the lower branches.

    Every morning P moves Mr. Bear. She scoots her tower over to the hanging quilt and moves Mr. Bear to the next location to see if he finds Christmas. There are no gifts. It’s just pushing a doll bear into a snap on the quilt, but every morning she gets the biggest smile moving him.

    Her favorite Christmas movies are Elf and Grinch. She requests them by name. To be clear this is the 2016 iteration of the Grinch. Honestly this is my favorite version as well so I’m pleased with this choice. When we were shopping for a few last gifts she saw the Grinch book in the store. We were not leaving the store without that book. Despite being half her body size she walked around with the book tucked under her arm for the rest of the day. It was adorable. Her affinity for Elf as a two year old seems odd. I guess she likes Will Ferrell’s green elf costume? Regardless she’ll watch this for tens of minutes when it’s time to settle down.

    While P has been enjoying all Christmas-related things the past couple weeks (her and her mother had a dance party listening to “Fairytale of New York” yesterday!), P has no idea what Christmas actually is. I’m pretty sure she doesn’t know about the presents. She hasn’t been asking about them at least. And then all the food and family. She’s just entirely invested in the season. I’m taking time to enjoy every minute of this age with P.

    /December 17, 2023

  6. What I've been up to...

    The girls have had a hard time going down to sleep. Once they fall asleep they’re usually able to sleep through the night. It’s the act of getting them to sleep that’s tricky. The entire process takes nearly two hours. After you factor in work, cooking dinner, playing with the kids, taking care of the other endless odds and ends doesn’t leave much time for anything else in the evening. So I haven’t really been able to get deep into hence this bunch of little thoughts.

    LLM Agents- This would go under the “What I’m learning…” heading, but I haven’t been able to coalesce everything together. I’ve been converting my Peloton AI Trainer to use an agent framework and it’s powerful. I’m stuck on one bit of the agent. Once I get that resolved I’ll share more on this.

    Open LLMs in Healthcare- This Nature piece really hit home. I don’t think it even goes far enough. All logic that’s used in healthcare for diagnosis, payment, clinical decisions etc. should be open source. Healthcare is too important to have algorithms and models making decisions stuck within black boxes.

    Why isn't Twitch a better website? A couple years ago I streamed regularly on Twitch. Whatever little side project I was working on I would stream. I really enjoyed the experience and had a small group of regular folks who would check-in. I was doing it for fun and slowly the amount of effort to plan a stream became too much. Working from home I also enjoyed the coworking streams. Now I have a coworker who likes to watch Ms Rachel and Bluey. Anyways, I’m also shocked how Twitch never seemed to evolve. Not only did it never evolve but it also never became easier to use. I’m also shocked how Twitch never invested in its own community building product. All streamers had their own Discord server for community interactions. I’m flabbergasted that Twitch never tried to build that same community function to keep users engaged on their site. It’s sad to see Twitch go down like this, but I still might pop on one of these days. One of the main reasons I streamed was to work on teaching and presentation skills. I just need a refreshed on setting up OBS!

    All Systems Red (Murderbot Diaries)- This was entertaining enough. I read this on my Kindle for a few nights trying to get P to fall asleep. I’m undecided on the remaining books of the series. We’ll see. I’m choosing my next read now.

    156 Weeks of Peloton!- Last week I hit my goal of being a weekly Peloton user for three years! I’m really proud of this one. Peloton has been a huge part of my recovery after the diagnosis almost two years ago. The quality of my life would be significantly worse today without Peloton. I’m looking forward to keeping this streak going well into the future!

    Digital Gardens- I’ve been thinking a lot about the idea of Digital Gardens. Once I wrap up the Peloton AI Trainer I’m going to focus on this. I want to redesign this site to be more along the lines of a digital garden, so this is tagged on my next big side project.

    /December 09, 2023

  7. What I'm watching...

    Klaus (2019)

    The beginning of this movie is curious. A few years ago I first tried to watch this movie with my wife. The Christmas theme takes a while to get started, so after ten minutes she wanted to watch something else.

    P recognizes Santa. She doesn’t know anything about Santa Claus bringing presents, but she knows he wears a red suit and says “HO! HO! HO! Merry Christmas!”. It’s adorable. I was looking for a Santa-themed movie to put on to get a reprieve from Ms. Rachel and put on Klaus.

    P really enjoyed the animation style. She lost interest after about ten minutes, but she’s not even two yet so to be expected. As P played and I watched the movie go on I started to recognize how brilliant this movie is with its unique take on Christmas. P needed dinner so I stopped the movie to feed her. During dinner I told my wife that we really should give Klaus another try with the promise that the opening ten or so minutes are different, but also the foundation for a sweet and unique Christmas story.

    A few days later I went down to the basement where Christine was playing with the girls. They were watching Klaus without me! Christine turned to me and said “You were right this is really good!”.

    Klaus is definitely going into the holiday rotation for the girls. Rarely do you find a Christmas movie with a fresh take like Klaus. In addition the thoughtful story the animation is delightful. I’m really glad we returned to this one!

    /December 03, 2023

  8. What I'm doing...

    Basement Renovation

    When we moved in the basement was partially completed. The drywall is up, but the ceiling is mostly unfinished and the floor is bare concrete. Last week we finally started the process of finishing the basement to make it a more usable space by installing new flooring. For much of the past week I've been working on getting the room ready and installing the flooring.

    The first couple of rows were rough. There were a couple of jut outs along the wall to work around. Frustratingly we found that these weren't square angles. I had to cut and recut boards a few times to get them to fit. Thankfully my dad helped out for a majority of the installation. Once we got around those obstacles the floor went down easily! Especially for the middle rows we were able to get into a rhythm and make quick progress. Without his help I've still be working on getting the floor installed.

    By the end my fingers were raw from handling the boards with a couple fingers nursing bruises from some errors in judgement with the hammer. I'm grateful I took the week off because I needed a couple days to recover my strength. I'm less than happy about that particular development, but that's for another time.

    We're still trying to decide what exactly we want to do with the room. Part of the room will be the home gym. Part will be a play area for the girls where we can let them make a mess and not have to be living among it throughout the day. We also want to allow guests to have a comfortable place to sleep. So we're trying to design around those different needs and starting to look for furniture to fill the space.

    While I'm happy this stage is done, there is much still to do. The trim and baseboards need to be installed. C wants to repaint the room. There's another room that needs flooring installed. Although the room is smaller it has a lot my angles to workaround. A lot of work to do, but I enjoy to have this side project to escape to when I have the time!

    /November 22, 2023

  9. What I'm reading...

    Annihilation

    This was just okay. It was entertaining enough to finish at least. Recently I've been enjoying getting absorbed into book series (see The Three Body Series). I was expecting this to be the next universe I got sucked into, but there wasn't a compelling hook to get me to the next book. Not having that hook was a letdown. The entire book being told from a first person narrative didn't connect with me either. Okay, I just didn't like this one. A lot of people liked this book. It won a lot of awards, but not for me.

    /November 15, 2023

  10. What I'm learning...

    For most of the past week I've been working on a rewrite of the Peloton AI Trainer. I added a chat interface for the user to have more control over the workout being generated. The model starts by recommending the best workout based on the user preferences, but things happen. There are days where you might be sore and need a little extra break or shift focus to another body part. The chat feature allows the user to provide that information.

    User preferences are now managed within the UI instead of in a JSON file making for a much better user experience. There are also some UI updates by pushing some options to the left sidebar instead of dealing with nested buttons in Streamlit. As the app became more complicated the initial Streamlit layout was getting too complicated. This simplified layout should be easier to extend capabilities going forward.

    There are still some usability issues I need to work through, but I'm happy with the progress so far. I still don't plan to host this service, but that could change as it becomes more polished.

    I finished the LangChain for LLM Application Development course. My plan was to integrate LangChain into the app. As I began integrating LangChain into the app I began to realize the benefits of doing so for this use case were not significant enough to justify the effort.

    For this use case the main LLM activities are to:

    • Make a call to the OpenAI API.
    • Parse the responses.
    • Make string substitutions for the prompts.
    • Maintain the conversation history.

    Inside this app all of these can be completed with a few functions. Carrying around the extra baggage of an abstraction layer for these functions is not worth it.

    Another reason is the LangChain docs are a mess. I tried to reconcile what was covered in the course with the docs and it was a disaster. An example is the secion on adding memory to a chain. The documentation contains nothing but code snippets. Having code examples are a start, but there is zero intuition to go along with the code so the user knows why each step is being taken, common customizations and guidance how each step should be implemented.

    The lack of good documentation on the LangChain site means there could be a good opportunity to write my own to fill that gap. I have an idea for a project where I can see the value of the LangChain abstractions, so this is not the end of LangChain for me.

    /November 12, 2023

  11. What I'm cooking...

    Cast Iron Pizza

    On the Today Show this morning I caught a glimpse of a food segment where a chef I peripherally follow, Matt Moore, was making a Cast Iron Pizza. To C's dismay I love cooking with my cast iron. Cooking a pizza in a cast iron never crossed my mind, but with a free day and a quick inventory of the pantry I had everthing I needed to give this a whirl.

    I was surprised how easy this was to make. I've never made my own pizza dough before, so I was a little intimidated, but it turned out to be not as bad as I was expecting. After that it was pretty easy. There was leftover bacon from breakfast so I chopped that up for a topping along with some garlic.

    Overall it was pretty tasty (P really liked it!). Not remarkable, but also not something you'd just feed to the dog under the table. The pizza was a little too doughy for my liking. That could be due to a couple things I overlooked. First, the recipe calls for a 15 inch skillet whereas mine was a 13 inch, so next time I might not use quite as much dough. Second, the recipe uses bread flour and all I had was all-purpose flour. I need to check if I need to make adjustments for this difference.

    As our standard Friday night pizza bill has been creeping towards $100 after adding taxes, tips, service and delivery fees I've been trying to think of alternatives. I'll need to keep refining this as it could be an easy, affordable replacement to ordering out.

    /November 10, 2023

  12. What makes me happy...

    Bedtime Stories

    Before every naptime and bedtime for the past month when P gets into bed she's snuggled in her sleep sack and quietly questions "ta-cos?". After a few seconds she gets a little more demanding "ta-cos? ta-cos?" I get up and bring Dragons Love Tacos into bed and she screams "TACOS!". Even after reading the book dozens of times seeing how excited P gets brings me a lot of joy.

    Each time we read it she picks up on something new. She likes to point to different things on the page and label what they are. At first everything was a taco, but now she is pointing to everything dog, sun, ball, and of course the tacos. For some reason the kid in the book is "da-da". I'm not sure why, but I'm not going to correct her.

    When we finish the book she gets excited again and asks (demands) "TI-NY?!" in her quiety screechy voice. So we read "Tiny T-Rex and the Impossible Hug" where P loves to point at the ice cream, Tiny, and Pointy.

    No matter how many times we read these books I'll never get tired of her enthusiasm for Tacos and Tiny. I really enjoy these moments with P as a way to end my day. It's one of those activities that I know I'll do for the last time with P sooner than I'd like to think. Even if I have to keep reading a silly story about dragons and tacos every night I'm going to enjoy every moment of it.

    /November 08, 2023

  13. What I'm learning...

    Learning has been a little slower since the last update. I spent a lot of time with my family celebrating the life of my grandmother who passed away. She was the nicest and kindest woman I’ve ever known. Living to the age of 99 I can’t recall a single instance where she said something unkind about someone else. I’m happy I was able to say goodbye in the end. I brought P with me for our last visit and my grandmother got so much joy from seeing days before the end. Those are a memory I’ll treasure.

    Now that I’m back to work the amount of time I can realistically set aside each day is limited so I need to maximize the effectiveness of that time. I’m still progressing down the AI engineer path, but need to be a little more deliberate in my learning path.

    I’ve decided to narrow my current focus on how to effectively use LLMs like ChatGPT, Claude and Bard to build applications then branch out into PyTorch, Hugging Face, and building the models on my own.

    Most of my dedicated learning has been working through the deeplearning.ai catalog on LLMs. Being able to work with LLMs seems like it is going to be a foundational skill of the future so before I get into the deeper concepts I want to make sure I have the basics covered. Specifically I’ve worked through the ChatGPT Prompt Engineering for Developers and Building Systems with ChatGPT courses. I’m also in the middle of the LangChain for LLM Application Development course.

    For me learning isn’t just rushing through courses to say they’re completed. I learn by applying the course material to different use cases. After the first two deeplearning.ai courses I built an AI personal trainer that connects to my Peloton account to suggest a workout-of-the-day. I’ve been tracking the progression in the GitHub repo. As I learn the project evolves just a little bit. I’m already planning to incorporate LangChain into the project when I finish the course.

    Aside from the courses I’ve discussed I’ve also been thinking about embeddings and their use cases. I saw this talk from Simon Willison about embeddings, which reminded me about a post from Amelia Wattenberger about how to get creative with embeddings. LLMs are expensive, but you can generate embeddings for massive amounts of text for pennies, so I’ve been thinking about how I can leverage embeddings for a project.

    That’s the update. I’m looking forward to building more of the Peloton trainer and getting LangChain added into the mix. With the limited time available I’m not putting timelines on when this will be done. Instead I’m relying on good note taking and issue tracking to make steady progress.

    /November 05, 2023

  14. What I'm watching...

    For me the highest praise you can provide for a piece of streaming entertainment is to watch without picking up your phone. For eight episodes Indidnt pick up my phone once. The series was so engaging. The whole cast is wonderful, but Carla Gugino really stands out.

    If you missed it this year definitely bookmark this for next October. I didn't realize Mike Flanagan had released two other series, Midnight Mass and The Midnight Club, over the past couple of years. The Netflix algorithm dropped the ball there, but I have these bookmarked for next fall.

    /October 31, 2023

  15. What I'm building...

    TLDR; Summary
    • AI can be used to provide personalized exercise experiences with Peloton.
    • Building a working prototype is easy and cheap.
    • Chain-of-though reasoning is a helpful technique.
    Background

    An AI use case that I've wanted to explore is how it can help reduce decision fatigue. A lot of services overwelm users with choices and burden the user with sifting through the content. I'd hardly call this a personal experience.

    One place to apply this is with my Peloton workouts. When I log into the bike I'm faced with nearly twenty different options. What one is best for right now? They're all cycling classes should I even be doing a cycling class today? The other week I mentioned I needed to workout more. Eliminating decisions around what workout to do is one way to help reestablish a routine and keep workouts fresh, so I started building an AI system connected to my Peloton account to provide me with a workout of the day based on my personal fitness goal.

    Results

    All of the code and prompts are in this GitHub Repo if you want to follow along.

    What I wanted to do is define a goal that's unique to me. Given the goal and my recent workouts I want GPT-4 to suggest a Peloton workout for me. For example, given the goal of:

    I want to go from couch to 5k in the next month.

    GPT-4 generates the following workout recommendation:

    5 min Warm Up Run

    15 min Hip Hop Run

    The selected classes are designed to gradually increase the client's running capacity. The '5 min Warm Up Run' is a good start to prepare the body for the workout and prevent injuries. The '15 min Hip Hop Run' is a moderate-intensity run that will help the client build endurance and stamina, which are crucial for a 5k run. The total workout time is exactly 20 minutes, which aligns with the client's workout duration preference. The difficulty levels of the classes are also suitable for someone transitioning from a sedentary lifestyle to running a 5k.

    Seems pretty reasonable! If I change my goal to be focused on building strength GPT-4 makes sure I'm not skipping leg day:

    30 min Glutes & Legs Strength

    The '30 min Glutes & Legs Strength' class is suggested as it aligns with the client's goal of building strength and muscle mass. This class focuses on lower body strength, which is part of the client's fitness goal. The difficulty level is high, which is suitable for muscle building. The duration of the class is exactly 30 minutes, which fits the client's workout duration preference. The client's recent workouts have been more focused on cardio and upper body strength, so this class will help balance their routine by focusing on lower body strength.

    Challenges

    There were a couple of challenges. First, I needed to get my recent workouts and available classes from the Peloton API. The peloton.py file contains a class that handles this.

    Next, I had to write the prompts. The prompts.py file contains the templates for the different prompts I used. A system prompt instructs the model about the user's fitness goal and provides information about class difficulties. Data from the API is then inserted into the prompts.

    I split up the workout recommendation class into two parts:

    1. What type of workout should the user do (i.e. cycling, strength, running etc.)?
    2. What classes should be included in the workout?

    Using this chain-of-thought reasoning simplifies the code a bit. Instead of stuffing the class prompt with hundreds of classes from different disciplines only the classes for the discipline chosen by the model are included in the prompt reducing its size and cost.

    An ongoing challenge has been forcing the model to not build a workout that exceeds the user's time limit. The model periodically constructs a longer workout and acknowledges it has done so and will provide an explanation for why it's over the time limit. Almost like it's purposely exceeding the limit.

    Finally, there are a couple issues with the Streamlit flow I had to work through related to having nested buttons.

    Wrapping Up.

    I've been using these workout suggestions for about a week and have been pleased with the results. One takeaway was how quickly I could stand up this project. A few hours of effort and I had a workout prototype that cost me the equivalent of a good cup of coffee.

    There are still some bugs I'm working through, but it's still fun to use. Let me know what you think over at the GitHub Repo and feel free to add your own goals to the project!

    /October 29, 2023

  16. What I'm cooking...

    Chicken Pot Pie Soup

    Soup season is one of my favorite culinary seasons. I love the warming feeling of a good soup on a chilly night. My favorite soups are like this Chicken Pot Pie Soup from The Modern Proper, delicious and cooked in one pot!

    I was expecting this soup to be a lot heavier than it turned out being. I liked how it wasn't too creamy and the vegetable flavor really came through. While cooking this I learned that P really likes chicken. I gave her some of the rotisserie chicken and she kept asking for more! So any recipe that uncovers a new food my kids will eat without protest is another win in my book.

    /October 25, 2023

  17. What I'm learning...

    Last week I shared a summary of what I've been learning w.r.t. AI. Since I've been on paternity leave I've been making more of an investment into learning. I've always subscribe to the idea of being a lifelong learner, but admittedly I've let myself slide a little in those investments. AI is such a large field and being aware of my own resource constraints (mostly time) I'm trying to be more deliberate with my learning. Part of that is sharing some nights and resources in public on a regular basis. I'm maintaining a Notion page with all the raw notes as I work through materials. At the end of the week I can revisit to summarize and draw connections that I may have missed initially.

    The other part is defining my objective. What do I want to achieve from this time I'm investing? Ultimately I want to legitimately be able to put AI engineer on my resume. I don't mean just making API calls to OpenAI. I want to have a deeper understanding of how AI systems work, how they're built to scale, and the intuition behind them. I think there are a few high-level intermediate objectives:

    1. Understanding deep learning archetectures (especially Transformers).
    2. Build with third party LLMs like OpenAI. There is value in demonstrating compentency with these tools, but my initial thought is the value lies in developing competency in a few core skills. Beyond that I think there are diminishing returns, so I view this step as a good way to quickly prototype and get some early wins on the learning path.
    3. Learn to build my own AI models with PyTorch. Combine parts of 1 and 2 with learning some PyTorch to build my own models. I can envision a scenario where relying on third party LLM providers is not the future of AI for a variety of reasons. Having the knowledge of how to build custom AI models for a diverse set of use cases will be valuable.
    4. and Hugging Face. This could be 3a I suppose. Hugging Face sits at an intersection between hosted third party LLMs and building from scratch. Having some knowledge with the HF ecosystem, the transformers library, and the models available will be valuable.

    There's a lot wrapped into those items. I entirely expect these to evolve as I get into more details, but in the early going these are the learning objectives I'm setting for myself. When I feel confident in these areas could be measured on the order of years... and that's okay. Slow consistent work. A lot is changing in the AI ecosystem so I'm being careful at the beginning to not invest heavily in any single aspect. By starting with these larger categories I can learn and reserve the right to narrow a focus later.

    I'm looking forward to this. Having a structure has kept me slowly learning and becoming more confident. I'll continue posting my weekly learning and will revisit these objectives time-to-time to see at a macro level how I am progressing.

    /October 24, 2023

  18. What I'm cooking...

    Preparing for the holidays

    Holiday season is approaching, which in my family means food. The Christmas Eve menu is discussed months in advance. We had family visiting this weekend so I did a test of a small appetizer plate from tinned fish. The plate has three bite sized nibbles:

    All three required minimal prep. The sauces can be prepped the night before. The only prep that would be required night of is lightly cooking the sardines and squid in a pan. The mussels are good to go straight from the tin. Assembling them onto a platter is quick work as well.

    All three were delicious. The squid was the favorite of everyone. Such a simple delightful bite! For the sardines I deviated from the recipe and riffed off of Spanish Pan con Tomate instead of the roasted red peppers in the recipe.

    Overall, I'm happy with the results and with a couple minor adjustments I'm looking forward to trying these out on Christmas Eve!

    /October 23, 2023

  19. What I'm learning...

    A weekly roundup of some resources I've found helpful learning more about AI and building AI systems:

    • Large language models, explained with a minimum of math and jargon: The most accessible description of attention heads that I've read. I've read about attention mechanisms in transformers, but their importance really clicked after reading this article. The discussion about how the attention heads and the feed-forward layers are utilized to provide an answer to a question was particularly helpful.

    • Opportunities in AI: A great talk by Andrew Ng. AI is becoming more accessible. I'm excited to see what problems are going to be solved that haven't traditionally had a large enough ROI to justify an AI solution previously.

    • Let's build GPT: from scratch, in code, spelled out: I'm enjoying this video from Karpathy. Still working through it. I'm coding along with the video while watching and planning to take some of the ideas here and apply them to another project from scratch. Noodling on what that other project will be...

    • Introduction to PyTorch: Establishing a foundation on the basics of PyTorch.

    /October 20, 2023

  20. What I'm eating...

    Maple Apple Caramel Sundaes

    Last night the family went out for our last ice cream of the season. This is my favorite ice cream trip of the year. The maple soft serve is delicious on its own, but in the sundae it's twisted with vanilla surrounded by warm apple pie filling and caramel sauce. Of course with whipped cream and a cherry. A perfect treat to transition from summer to fall.

    Apple really shows off it's range with this sundae just adding to the abundance of evidence that apple is the superior fall flavor.

    /October 19, 2023