We were in Mammoth Lakes for a week. Day 1: Canoeing and DnD Rented a Canoe and splashed around Lake Mary for about an hour. Sempi was in the front, Vian in the middle and I sat in the back. Our coordination was abysmal but we managed. Next a hike near Horseshoe Lake on an easy trail to the double falls view point. The kids were engrossed in their fantasy DnD world building.| Amjith Ramanujam
Part 1 LiteCLI has an optional feature to use LLM powered SQL generation to get answers from your database. The default LLM used by LiteCLI is OpenAI’s gpt-4o-mini. This can be changed to a different model including a local LLM running on Ollama. Here are the steps to show how to switch your LLM model. Run \llm to enable the feature. sqlite> \llm This will offer to enable this feature by installing the necessary libraries.| Amjith Ramanujam
** This feature is ONLY enabled when it is used for the first time. ** LiteCLI v1.14.2 now has an LLM feature to help you write SQL. AsciinemaPlayer.create('/llm-in-litecli-1/litecli1.cast', document.getElementById('demo1'), { idleTimeLimit: 2, poster: 'npt:0:07', terminalFontSize: "15px", fit: false, }); Getting Started: Upgrade litecli to the latest version (at least v1.14.2 or higher). uv tool install litecli@latest Open a SQLite database with litecli. $ litecli your_database_file.db Run t...| Amjith Ramanujam
Click is a python library for creating command line applications in Python. The llm tool created by Simon uses click and it has a lot of subcommands. eg: $ llm keys set openai Enter key: ... $ llm models default gpt-4o I am building a wrapper around this CLI tool that let’s me use it in an interactive REPL. I wanted autocompletion to help me remind the available subcommands and their appropriate nested subcommands. Here’s how I got a list of all the nested subcommands and built an autocom...| Amjith Ramanujam
A simple snippet to restart a Python CLI from within the CLI. import os import sys import click @click.command() defcli(): click.echo("CLI is running.") # Logic that determines when to restartif click.confirm("Do you want to restart the CLI?"): click.echo("Restarting CLI...") executable = sys.executable args = sys.argv os.execv(executable, [executable] + args) else: click.echo("Exiting CLI.") if __name__ =='__main__': cli() os.execv is the system call that can replace the current process with...| Amjith Ramanujam
LiteCLI is a command-line client for SQLite databases that has auto-completion and syntax highlighting. I’ve added the ability to use an LLM to create a SQL query. Disclaimer: This is an EXPERIMENTAL feature. Not yet released. Ask a question about your database in English and get a SQL query back to find out the answer. This is the SQLite db used by Chrome. Exploring my Chrome history to find interesting things about my browsing habits. Adjust the SQL before executing it. Sometimes the SQL ...| Amjith Ramanujam
“People are exhausting. But you’re not people.” A direct quote from my teammate during a dinner at a conference. We became very good friends after that trip. Back in 2017 I joined Netflix and moved our family to San Jose. I joined the team that built Chaos Kong. We brought our failover time from ~45 mins to under 7 minutes. True to Netflix’s culture I received some of the best feedback in my career.| Amjith Ramanujam
I got beta access to Ghostty and set it up on my MacOS (Sonoma) laptop. The terminal is nice out of the box. It has tab support and splits. The default color theme is pleasing. I still needed to adjust the configuration to make some changes to match my taste. The configuration file is located in ~/.config/ghostty/config, there is no UI based preference dialog (planned for the future). This is my config: font-size = 17 font-family = Monaco macos-option-as-alt = true # Enables alt+f/alt+b keys ...| Amjith Ramanujam
Sempi is the resident expert on all things greek mythology in our household. He will often share “interesting” facts in the form of “Did you know… ?”. One such conversation ensues. Sempi: Did you know that Apollo actually shot a plague of arrows? But it is often misintepreted as he shot arrows of palgue. Vian : What do you mean? Sempi: He shot so many arrows in the sky that it was a plague of arrows. He did not shoot an arrow with plague in it. Vian : Ooohhh. So he is not the god of...| Amjith Ramanujam
Vian : I think I'm ok at comedy. Yoshi: Oh yeah! Vian : Muhuhahaha! Muhuhahaha! *Vian starts laughing maniacally* *Yoshi joins in and start laughing* *Vian stop abruptly while Yoshi is still laughing* Vian : See, I told you I'm ok at comedy.| Amjith Ramanujam
I’m reviewing math lessons with Vian before his test. We’re on a chapter about polygons. Me: What is a pentagon? Vian: It's a polygon with five sides. Me: Good! What is a regular pentagon? Vian: A regular pentagon? Me: Yeah. Vian: I think it is a pentagon that is not special? Me: What? Vian: It's a pentagon without anything special about it. Just regular. Me: *laughing* It's a pentagon with equal sides.| Amjith Ramanujam
Vian: Will you be available later today to answer some questions? Me: Sure, I'll be around. What questions do you have? Vian: What was the best part of your day? Worst part of your day? things like that.... Me: Dude, asking each other about our day is not an interrogation.| Amjith Ramanujam
Background context - Sempi likes to be very precise. Sempi: I'm going to have some tea before I get in the shower. Me: Hurry up you have 5 mins to finish your tea. Sempi: It'll take me more than 5 mins to just make the tea. Me: It's already 8 o' clock. I don't think you have time. Sempi: Ok. (Checks his watch) Me: (realizes he is precise) Technically it is 3 mins to 8.| Amjith Ramanujam
I’m on a walk with Vian. We’re strategizing about this new Donkey Kong vs Mario game. Vian: How can we make sure we finish the levels before the timer runs out? Me: What if we go for different keys in parallel? Vian: Oh yeah! I'll go for the silver key and you can go for the gold key? Me: Why? You don't trust me to get the silver key?| Amjith Ramanujam
OKR - Objectives and Key Results Plenty of companies have chosen to use OKRs as their planning tool. Each team publishes a set of OKRs at the beginning of a quarter to signal to the rest of the company what work they intend to do. This is written in the form of an Objective (Eg: Make Builds Faster). Then comes the Key Result which is usually expressed as a measurable metric (eg: Reduce build time by 25%).| Amjith Ramanujam
It’s a Sunday afternoon and the kids chose to do 1:1 with each other. They are watching some minecraft tutorial videos on Youtube. Suddenly I hear Sempi running towards me and asks for 5 more minutes. I say sure and get back to my own activity (reviewing PRs on personal projects). Then 5 minutes later he comes back and asks for 3 more minutes to finish the current video. I agreed since it felt like such a small time frame. After they finished the video it dawned on me that if he had origina...| Amjith Ramanujam
Have you wondered what my room looks like? Do you want to see my room? It’s fuzzy, warm, comfy and plain. My bed is comfy and fuzzy and warm. My walls are plain with one painting. Also it has mario streamers on a different wall than the painting. I hope you liked learning about my room, if not that’s ok. And now you have learned what’s in my room. By V—— Ra—-| Amjith Ramanujam
In the late 1900s (say 1997) I learned about this theoretical concept called artificial intelligence, in high school. I asked my cousin (a CS college grad) about it. He explained that AI is a research field that is trying emulate a human brain but with a computer program. I wondered if that would be a nuisance? For instance, while I’m studying I get distracted and decide to start watching TV (Freewill?| Amjith Ramanujam
TL;DR: Underscore is a matching character in LIKE queries to match a single character. I’m using Postgresql for one of my projects to store some python package metadata. Canonical python packages must be all lowercase and should not use underscores (_) but instead should use hyphens (-) as delimiters. It is just a recommendation and not enforced by PyPI or pip. I wanted to check how many packages in my database were using underscores.| Amjith Ramanujam
Recently I learned about a new kind of search called Vector Search or Semantic Search. This is a search technique that tries to find documents that match the meaning of the user’s search term instead of trying to match keywords like a Full Text Search (FTS). I wanted to try Semantic Search for my blog. I came across Alex Garcia’s post about a new SQLite extension for Vector Search called sqlite-vss.| Amjith Ramanujam
sqlite-utils is a CLI tool for manipulating SQLite databases. I’ve used sqlite-utils and shot-scraper in the past to port my blog from PostHaven to this static site. Recently sqlite-utils added plugin support and Simon the creator of sqlite-utils wrote a few plugins to showcase the plugin system. One of them is a sqlite-utils-litecli plugin which launches an interactive shell with litecli. One obvious advantage is litecli has auto-completion and syntax highlighting which is a huge improveme...| Amjith Ramanujam
Zoran and I were guests on the Talk Python Podcast to discuss how Python is used at Netflix. The host of the podcast Michael Kennedy was well prepared with the background context and led the conversation in interesting ways. We got to cover a ton of different use cases at Netflix that use Python. I got to talk about some of my favorite OSS projects (bpython, pdb++, dbcli etc). We ran out of time before we could talk about pickley but we did mention it during the episode.| Amjith Ramanujam
I have a table with a list of trails that I’ve biked. I wanted to find out which trail I’ve biked the most. I used the following SQL query to find out: SELECT name, count(name) AS ct FROM trails GROUP BY name ORDER BY ct DESC LIMIT 5 This gave me the 5 trails I’ve biked the most. Translated to SQLAlchemy. from sqlalchemy import func def most_common_trails(db: Session): return ( db.| Amjith Ramanujam
I had a table with a bunch of users and one of the users is a demo user and I wanted to copy the login token from my row to the demo user. This is how I managed to do that. UPDATE users SET token = (SELECT token FROM users u WHERE u.id = 1) WHERE id = 2; This will update the token column for the user with the id 2 with the value from the user with the id 1.| Amjith Ramanujam
Now that my blog is statically generated I need a way to support searching. Fuse.js ships with the theme and does a pretty good job of matching words in the blog posts. I want something a little bit more powerful. I mentioned in my previous post that I am using SQLite to store the blog posts. SQLite has a full text search feature that I can use to implement search.| Amjith Ramanujam
I am a big fan of htmx and use it in a lot of my projects. I recently had a use case where I needed to trigger multiple api calls in a single htmx request. I was able to do this by using the hx-trigger attribute. The idea is to listen to the keyup event on the input box and trigger the api calls after a delay of 200ms.| Amjith Ramanujam
My blog was hosted on PostHaven for about 12 years now. It’s a pretty good platform and has served me well. But I wanted to move my blog to a MarkDown powered static site. Unfortunately, posthaven doesn’t provide an export option, probably because it not in their financial interest. Oh well, I’ll scrape my own blog and extract the posts. My first attempt was to use the requests and BeautifulSoup to fetch the urls from the archives page.| Amjith Ramanujam
I am setting the table for breakfast. I announce loudly “Breakfast is ready”. Vian sits down at the table and notices that I had left two forks next to his plate of cantaloupe slices. Vian: Who put two forks? Me: Oh, I didn’t realize I left two forks. My mistake. Vian: No, it’s ok. Then proceeds to use both his forks to pick up two slices of cantaloupes and starts shoving them in his mouth.| Amjith Ramanujam
The kids are having Pizza. One of the pizza slices had a trapped air bubble and looked engorged. Yoshi: Looks like there is a crater in your pizza. (from her angle she could only see the gaping hole). Sempi: (from his side he can only see the bulge) No it is the opposite of a crater. It is a meteor. TIL the opposite of a crater is a meteor.| Amjith Ramanujam
We are at the breakfast table. Vian is having cereal and I am having hard boiled eggs for breakfast. I offered one of my eggs to Vian. Vian: I don’t like the yolk. Me: I can take it out for you. Vian: Yeah, if you can take out the yolk, I will eat just the skin.| Amjith Ramanujam
Vian’s last day of graduation was yesterday. It was a heartwarming ceremony where the teacher recognized each kid with a certificate for a certain quality and had the kids announce what they want to be when they grew up. Vian was recognized as a problem solver. He then stood up and announced, I want to be a dad when I grow up. Needless to say I was floored by this announcement.| Amjith Ramanujam
Yoshi is having a serious conversation with the kids. Vian is jumping around being playful and generally not paying any attention to Yoshi. Yoshi: Vian did you hear what I just said. Vian: Yeah! Yoshi: Can you tell me what you heard? Vian: I don’t know. Yoshi: But you said you were paying attention. Vian: I’m just really good at forgetting.| Amjith Ramanujam
We’re at a restaurant waiting for our food. My 9yo is discussing large numbers. Sempi: Did you know that googol is 1 followed by 100 zeroes? Me: Yeah. Sempi: And googolplex means 1 raised to the power of googol. Me: Technically it is 10 to the power of googol because 1 to the power of anything is just 1. Sempi: Ok. (whatever). Me: Also Google is named after googol. Sempi: I know.| Amjith Ramanujam
Yoshi is making hot cocoa for everyone after our snow play day. Me: I think I’m going to drink all the hot chocolate that Amma is making. Vian (5yo): If you drink my hot chocolate, I’m going to punch you 5 million times in your face. Me: You can’t even count that high, Vian. Vian: Ok then I’m going to punch you one hundred times.| Amjith Ramanujam
Vian (5yo) is curious as ever. He asked me how old I am. Me: I am 40. Vian: You know 40 is not that old for an adult. Me: Really? How come? Vian: I can count to 40 really fast and it doesn’t even take that long. He then proceeds to demonstrate how quickly he can count from 1 to 40.| Amjith Ramanujam
I don’t know how to play Minecraft. Vian (5yo) decided he’s going to educate me. We’re now playing real-world Minecraft in the front yard without a computer. He’s narrating various aspects of the game as he’s walking around the front yard. A leather armor, iron ingot, wooden pickax, bedrock and so on. Then he delivers this pearl of wisdom. Vian: Here’s a good tip. When you’re in the game don’t mess with me.| Amjith Ramanujam
The kids like to scare me by trying to jump out from under the covers and yell “BOO!”. I like to pretend that I’m scared of their tactics. The other day I decided to return the favor by suddenly entering their room and yelling “BOO!”. I managed to scare Vian and he started giggling in fear and shrunk back under his comforter. Me: Hey Vian, looks like I scared the bejeezus out of you.| Amjith Ramanujam
Vian is back from school, wearing a button up shirt and slacks. Me: Vian, you look dapper today. Vian: Yeah. Today was picture day. Me: Oh yeah. Did you guys go out and take a picture? Vian: No. It was just someone else taking the picture. I didn’t take the picture. Talking to my kids is the best way for me to realize how imprecise my communication is.| Amjith Ramanujam
Me: Whoa! It’s very late, we should have started getting ready for bed 20 mins ago. Sempi: 20 minutes isn’t that much. If you think about it, it is only 4 time 5 minutes. Sempi: And if you think about it, 5 minutes is just 5 times 1 minute. Sempi: And if you really think about it, 1 minute isn’t that long. That’s the spirit. I should remind him of this conversation when he starts doing planks.| Amjith Ramanujam
Sempi gets very creative when he’s building Lego structures. So I asked him about it. Me: How did you get so good at building these lego creations, Sempi? Sempi: I don’t know, I just like building things. Me: Would you say that I should just keep building things and I’ll get better over time? Sempi: It is easy to create something for yourself. You know what you want and you can make a place for a boat or an airplane in your creations.| Amjith Ramanujam
Tonight we read Calvin and Hobbes for bedtime. After I read the comic strip above, I tried to explain a little about Michelangelo. Me: Remember, Michelangelo, we saw the statues he made when we went to Italy? Sempi: Yeah. Me: He’s a great sculptor. Do you guys remember the David statue? Vian: I know who Michelangelo is, he’s a TURTLE! o_O| Amjith Ramanujam
Vian was playing with his stuffed animals. Vian: Watch my deer. It can do a somersault backwards. Sempi: (thinks for a bit, turns to me)… if you call a flip a somersault, do you call a backward flip a wintersugar? Me: What a terribly missed opportunity. They just call it a reverse somersault, those unimaginative linguists.| Amjith Ramanujam
We are having dinner. Sempi is eating enthusiastically and suddenly cried out, “AAARGH!”. Me: What happened? Sempi: I accidentally bit my tongue while chewing. Me: I’m sorry Sempi, that must be quite painful. Vian who is listening to all this plays around with the food in his mouth and suddenly declares: Vian: You can actually bite your tongue anytime you want, not just on accident. Me: That’s…. that’s not a feature Vian, it’s a bug.| Amjith Ramanujam
I’m reading a bedtime story to the kids. There’s a picture of a Pterosaur in one of the pages. Vian: That is not even a dinosaur. I am quite proud that he know that Pterosaurs are not Dinosaurs. Me: Oh, what are they? Vian: They’re just grown-up chickens in the sky. Sempi: Argh! They’re called Pterosaur, Vian. Ugh! Vian likes taunting his brother, so he repeats his flying chicken theory one more time for good measure.| Amjith Ramanujam
I like giving and receiving kisses from Vian (my 4yo son). Recently, Vian complained that my beard was prickly. Obviously, I’m now clean shaven (no more goatee). On the nights I put him down for bedtime, he usually gets quite sleepy while I lay down with him. Occasionally he would run his hands on my cheeks and say “Amma?” (mom). That’s gotta be the highest praise for shaving. Today during lunch, he is sitting in my lap and munching on his pasta.| Amjith Ramanujam
Vian (4yo) and Yoshi are snuggled up in the office couch with a cozy blanket around them, playing a game on iPad. Vian turns to me and says, Vian: Appa, can you get me something to eat? Me: Come with me, let’s find something for you. Vian: But I’m too comfy. You get me something. Me: Ok, but you have to eat whatever I get. Vian: Nevvvermind….| Amjith Ramanujam
Vian (4yo) runs into my home office and threatens to slice me. He strikes a pose with a hand on his hip, legs wide apart and a foam sword in one hand. I turn on my music which plays an upbeat song on the speakers. His tiny legs start moving to the melody and pretty soon he’s shaking his hip and bobbing his head. The kid can’t control himself when it comes to music.| Amjith Ramanujam
Both kids insisted that they want to get ready for bed last. I told Vian (4yo) in secret that we’re going to trick Sempi (8yo). He should floss and brush but not do MiPaste (a Fluoride paste). Then after I get Sempi ready we can do MiPaste, Vian would be the last to get ready. Vian bought into the idea and he brushed first with a mischievous glee. The plan worked like a charm, Sempi was happy that he was brushing after Vian and Vian was happy that he didn’t do his MiPaste until after Semp...| Amjith Ramanujam
When Sempi and I go on walks, we occasionally discuss something we both find interesting. Today during our walk today, I told Sempi memory is a tricky thing. If we have to remember a sequence of numbers some of them are really easy but others are hard. For example, we can easily remember 1,2,3,4,5,6,7. We can also remember 7,6,5,4,3,2,1 but it is quite hard for us to remember a random sequence like 3,4,2,5,1,7,6.| Amjith Ramanujam
Sempi declared that he found a word that rhymes with Orange, the color Orange. He thought they had different spelling, after I corrected him the following conversation ensued. Me: The color orange and the fruit orange have the same spelling. The meaning differs based on the context. For example, when you say my car is orange it means the car’s color is orange, it doesn’t mean the car is a fruit.| Amjith Ramanujam
I’m trying to work at home and Vian (4yo) is playing in the office next to me. He requests me to play with him. I took a break and told him that I’d draw with him. He insisted that I should play legos. So we made a compromise that we would draw then play legos. After what seemed like a good amount of drawing vehicles for a while, I told him that it is time for me to get back to work.| Amjith Ramanujam
I am kind of a celebrity at home for making really bad dad jokes. Me: What does Darth Vader have for breakfast? Kids: Um. What? Me: Dark Toast! Sempi (7yo) decided that he’s going to try his hand. Sempi: Why does Darth Baker make cookies in space? Me: Um. Why? Sempi: Because they go well with the Milky Way. I’m impressed by his ability to make up a joke on the spot.| Amjith Ramanujam
I’m playing with Vian and Sempi. Vian comes at me swinging a plastic sword. I stop it with my hand and hold onto it, to prevent further assault. Vian: Appa is the strongest in the family. Sempi: No, Amma is the strongest. Vian: But Appa is bigger. Sempi: He is bigger but Amma has more muscles. So she’s stronger. I’ve got nothing to say, that’s just the truth.| Amjith Ramanujam
I had the pleasure of attending !!con west last weekend. I met a lot of incredible people and listened to talks that rekindled my joy in programming. I took out my trusty Stabilo point 88 and started taking notes. The person sitting next to me complimented my choice of pen. I got very excited that someone recognized the pen and shared my interest in stationery. She then proceeded to show me her stationery collection from Japan (tiny scissors, a permanent marker, multicolor highlighter, and a ...| Amjith Ramanujam
Vian (3yo) is in the bathtub and I’m trying to get him to come out. Sempi (7yo) is already out and changing his clothes. I am losing my patience with Vian and he is losing his patience with this toy that he’s trying balance on the rim of the bathtub. After pleading with him for a while, I lost my patience and stormed out and turned off one of the lights in the bathroom.| Amjith Ramanujam
One of my favorite items is sourdough toast with butter. This morning I decided to spread some jam on the toast as a treat. Vian enjoyed it quite a bit and came back for a second helping. Vian: Appa can you make me a loaf of jam? Me: You mean a slice, not a loaf. Vian: Oh, can I have a slice of jam? Me: Yes! Btw, it’s a slice of bread with jam.| Amjith Ramanujam
Imagine a chubby 3 yr old with stubby legs and a cute smile. That’s Vian. Vian can be a charming little kid when he chooses. This morning I was helping him use the restroom. After he washed his hands I offered him a towel to dry himself. He refused the offer and decides to wipe his hands on his shirt. I told him with a hint of frustration that he should use a towel and not wipe his hands on his shirt.| Amjith Ramanujam
It is raining in San Jose, there are little puddles of water on the sidewalk. I’m walking with Vian in our neighborhood. I notice a small puddle and step over it to make sure I don’t get my shoes wet. Vian walks right through the puddle. Stops. Turns around and jumps in the puddle for good measure and then runs over to hold my fingers as we proceed with our walk.| Amjith Ramanujam
Dancing is in my blood. Yoshi decides that the kids need to learn how to dance properly(?). So she starts teaching them “The Floss”. Not to be outdone by her, I decide to show the kids how to do the Floss correctly. As I start to get into the groove, Vian runs over and turns the light off, just as Yoshi remarks “Yeah, nobody needs to see that”. Tough crowd!| Amjith Ramanujam
There are two things I look for whenever I check out an Opensource project or library that I want to use. Screenshots (A picture is worth a thousand words). Examples (Don’t tell me what to do, show me how to do it). Having a fully working example (or many examples) helps me shape my thought process. Here are a few projects that are excellent examples of this.| Amjith Ramanujam
Vian: Amma, the roomba is not cleaning anything. Yoshi: Let me check. She finds lego pieces and strings blocking the Roomba wheels. Yoshi: Thank you, Vian. You’re right it wasn’t picking up anything. Me: Vian, did you just tattle on Roomba to your mother?| Amjith Ramanujam
Sempi is a big fan of Leonardo Da Vinci. Ever since we got back from Italy he’s been talking about the various inventions of Leonardo. Earlier today he was playing in the park after school. Apparently, he fell down from the monkey bars trying to do something brave. Yoshi took him to the ER and the doctors announced he has a small fracture and put his arm in a sling.| Amjith Ramanujam
When we were in Italy, we visited the Ufizzi museum and saw a lot of old world statues. There was one statue of a warrior holding a shield in his hand. I told the kids that it is Captain Italy who happens to be the cousin of Captain America. Obviously, neither of them believed me and Sempi groaned at my lame joke. Recently Vian started potty training. He’s proud of wearing his underwear and strikes a pose every now and then.| Amjith Ramanujam
Vian and I are playing legos. I accidentally drop a lego piece from the table, we both bend down to get it and bonk our heads. Me: I am sorry, Vian.Vian: (rubbing his head) No appa, I am sorry. Me: I guess we’re both sorry. :)Vian: No appa. I AM SAD, SO I AM SORRY (loudly). Me: Ok. Ok you’re sorry.| Amjith Ramanujam
Vian is 3 years old which is the minimum age required in this family to be eligible for big boy underwear. So naturally, we started potty training him this week. He’s come a long way since Monday and it is going very well. He does get frustrated by the inconvenience of having to stop playing just to empty his bladder. This morning he declared “I need to wear diapers or else I’m not going to eat anymore**!| Amjith Ramanujam
We are at the dining table. I take out the croissant from the bag and place it on a plate in front of Vian. Vian: Appa, what kind of “cossant” is it? Me: It’s a plain croissant, Vian. Vian: No. It’s a bum-bum “cossant”. Me: Huh? Vian: Look it (pointing to his misshapen croissant that looks like a butt). You win this round, Vian.| Amjith Ramanujam
I sometimes share clean adult jokes that are too clever for a 2 year old to grasp. Sometimes it is fun to see the confused look on his face when he sees me cracking up on my own jokes. Yes, I laugh at my own jokes, moving on. We’re hanging out at a coffee shop and I start with the setup for a great joke. Me: Vian, did you know that humans eat more bananas than monkeys?| Amjith Ramanujam
Sempi and I read bedtime books together and discuss the story before he goes to sleep. The story we read had a mention of illegal drugs. Apparently he didn’t know what drugs were. So we discussed what drugs were and how some bad guys can sell drugs to victims and why it is illegal. Suddenly Sempi drops this nugget of wisdom. People are always born to be strong and good. No one is born to be weak or evil.| Amjith Ramanujam
Sempi (my 6yo son) and I have this tradition of sharing our problems and asking each other’s opinion on how to solve it. We do this while we walk to his school. We’ve been doing this since he was 3. Here’s an example from Portland. Me: When I bike to work, I have to wait a long time for the elevator. Sempi (3yo): You should just build a ramp to your 28th floor, so you can just bike all the way up.| Amjith Ramanujam
Some nights I read a book about Gandhi to Sempi for bedtime. There is an incident in Gandhi’s life when he’s thrown out of a first-class coach in South Africa because he is not white. I told Sempi that it was an injustice and it doesn’t happen anymore. He listened intently and nodded approvingly. The next night I’m reading a comic about superheros and he asks me, “How come everyone in Justice League is white?| Amjith Ramanujam
This happened a few weeks ago. The kids are having a funtime playing with their mom. I enter the room, which usually sets off the anxiety for Vian. Vian: I don’t need you, appa. Yoshi: That’s not very nice. Vian: Go away, appa. Yoshi: Can you say something nice to appa? Vian: Appa, can you pleeease go away? Me: Thank you! That’s much better.| Amjith Ramanujam
One of the ways we trained Sempi to say “Please” and “Thank you” is by asking him “What do you say?” after he receives a favor from someone. With that context in mind, this conversation happened in the car. Vian: Can I have that monster truck, Sempi? Sempi: Here you go. Vian takes the truck. Sempi being the responsible older brother wants to teach Vian good manners. Sempi: What do you say, Vian?| Amjith Ramanujam
Vian is having lunch. I’m still making a plate for myself. He requests some water, so brought him a cup of water. Vian: Appa, this is too watery. Me: I’m glad to hear that Vian. The water is supposed to be watery. Vian: No appa, I can’t drink it. Me: Why not? Vian: Because it is too watery. I walked over to him to check it out. He was complaining because I filled the water to the brim and he couldn’t drink out of it.| Amjith Ramanujam
It was a cold Sunday morning. Sempi doesn’t want to leave the house. I’m trying to convince him to go out for family brunch. Yoshi is still getting ready. Sempi: I don’t want to go. I want to stay home and play legos. Me: If you want to stay home, that’s fine. I’m going out for brunch. Sempi: Ok. Me: I’m taking Vian with me. Sempi: Ok, you can take Vian and I’ll stay with Amma.| Amjith Ramanujam
It is no secret that both Sempi and Vian prefer their mom over me. Vian perceives me as the guy who lives in the same house and occasionally grabs him from his mom to change his diaper. If I happen to enter a room in which he is playing, he will preemptively declare “I don’t need you, appa”. Which is a wonderfully heartwarming phrase to hear from your child. A couple of days ago, the entire family was in the living room.| Amjith Ramanujam
Sempi’s new obsession is playing police. Every chance he gets, he recruits me and Vian to play police. Sempi: Appa, let’s play police. You can be the bad guy and I’ll be police Me: Ok! Vian, what are you going to be? A good guy or a bad guy? Vian: I’m batman. Me: I see, so is batman a good guy or a bad guy? Vian: No appa, I’m batman. Me: Alrighty then.| Amjith Ramanujam
It is freezing outside. We bundle up and go out to explore. When we got back to our lodging it was warm and cozy. Yoshi decided to make everyone hot cocoa. She brings the cups of hot cocoa and the bag of marshmallows. Yoshi: Vian, how old are you? Vian: Two! Yoshi: You can have 2 marshmallows for your hot chocolate. Vian: Yay! (and proceeds to grab a handful of marshmallows and dumps it into his hot chocolate).| Amjith Ramanujam
We don’t have any wiretap devices like Google Home or Amazon Echo at our house. So whenever we encounter on in the wild the kids get excited about talking to them. We went on a vacation where the AirBnB had a Google version of the wiretap. So Sempi requested it to tell him a story and was pleased with the results. Vian decided that he will try his luck on this device.| Amjith Ramanujam
Sempi is really into superheroes and police. The other day I was walking him to school and he tells me, Sempi: Appa, can I tell you a secret? Me: Yeah. Sempi (whispers): My secret identity is (redacted). Me: Wow, really? Why didn’t you tell me sooner, I could have used your powers to crush the boxes in the recycling bins. Sempi: You can’t tell anyone. Well, maybe just amma, but no one else.| Amjith Ramanujam
Vian is still having trouble pronouncing the sound ‘ka’. He uses the sound ‘ta’ when he tries to say ‘ka’. See previous post for some examples. We’re reading a picture book on the couch. Vian: What is this? Me: That is a farm. Vian: Farm!? Vian: What is this? Me: That’s a chicken. Vian: A Tciten? Me: Yeah a chicken. I noticed that his pronunciation of “Tciten” is suspiciously close to how he would pronounce “Kitchen”.| Amjith Ramanujam
We’re visiting India and the kids are playing with my brother’s son, Thiralon (the 3yo protagonist). He’s a matter of fact guy who is unintentionally hilarious. The phone rings at home and Thiralon picks up the phone. It’s his grandpa calling. Grandpa: Hi Thiralon, how are you? Thiralon: I’m fine. Grandpa: What are you doing? Thiralon: Right now I’m talking to you on the phone. He’s a rambunctious kid who loves to smash things.| Amjith Ramanujam
Vian is quite eloquent these days. But he still can’t pronounce the sounds ‘Ka’ and ‘Ga’. Instead, he replaces them with the sounds ‘Ta’ and ‘Da’ respectively. Here are some choice selections: Vian: Appa, where is my tar (car)? Vian: Tan I have a tootie (cookie)? Vian: Amma, gone to yoda (yoga) class. I always had a nagging suspicion that my wife is a Jedi. The way she can change my mind in one sentence….| Amjith Ramanujam
My 2-year old (Vian) is getting eloquent by the day. He is not afraid to try out his new vocabulary. Yesterday we were playing in the backyard. The kids want me to find them a rake. I walk around trying to find it, muttering to myself. Vian comes over and says, “I help you”. I accept graciously and tell him that I’m looking for the rake. Me: I wonder where it is.| Amjith Ramanujam
Note: I do NOT suffer from depression. I’m not trying to make light of the serious condition that is depression. I just got back from PyCon. I had a booth for DBCLI (OpenSource project), I gave a talk about my work at Netflix, I manned the job fair table and participated in the sprints. People were coming up to me and showering with praise about my OpenSource project and my talk.| Amjith Ramanujam
Vian has more than a few words in his vocabulary now and he’s not afraid to show off. I’m having breakfast with Vian. We hear the bathroom flush. Vian gets all animated and yells “Poop!” and points to the restroom. Another day, the same setup. I’m having breakfast with Vian. Yoshi joins us with a cup of tea. Vian points to the steam rising from the cup and yells “HOT”.| Amjith Ramanujam
I love dosas. Dosa is a south Indian dish. A better version of a crepe (shots fired) or a ridiculously thin pancake. Sempi (5yo) is also a huge fan. I’m making dosas for his breakfast and he requested that I make the dosas into shapes for him. He requested a police car. I was happy to oblige. Sempi: What is this? Me: A police car. Sempi: It looks like a spaceship.| Amjith Ramanujam
I believe that the language you speak influences the way you think. I don’t have any kind of proof other than some anecdotal evidence. Recently I started noticing this in the field of computer languages as well. I consider Python to be my dominant language. I have a coworker (let’s call him Aaron, because that’s his name) who likes to bait me by pointing out certain lack of features in Python and how Ruby gets it right.| Amjith Ramanujam
You can add a git sub-command by defining a new alias in your ~/.gitconfig file as follows: This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters [Show hidden characters]({{ revealButtonHref }}) [alias] open = !| Amjith Ramanujam
Vian is picking up new words. His new addition is “Yeah”. It is pronounced with an emphatic “EYAH!” (imagine a Karate yell). I like asking him random questions that are at the edge of his understanding and watch him say “Yeah!”. But sometimes he uses his “Yeah!” with such precision it catches us off guard. Such as last night when we were getting him ready for bed. Yoshi: Vian, would you like to hold a toy?| Amjith Ramanujam
Vian has been picking up a few words courtesy of Sempi. The words he has picked up so far are the ones that Sempi uses with forceful emotion. STOP: Whenever Vian tries to take Sempi’s toys, Sempi yells “STOOOOP” with conviction and distress. So that’s the first word that Vian decided to pick up. Now he uses it with us generously. He can’t quite pronounce the sound “ssss” so his STOP sounds like “TOP”.| Amjith Ramanujam
When I drop off Sempi at school, I walk him to the front desk where they have name badges for the kids arranged in random order. I ask Sempi to pick out his badge while I sign the sign-in sheet. This is my way of training him to recognize his name. This morning he told me, “Appa, do you see how the safety pin is attached sideways to my badge? I did that yesterday so I can find my badge easily in the mornings”.| Amjith Ramanujam
Yoshi was washing her face in the bathroom while Vian was playing with the bathroom scale. Yoshi: Why is it upside down? Vian: Appaaaa Yoshi: Appa did it? Vian: Appaaa Yoshi: oh, appa did it Vian: Appaaa Appaaa Yoshi: no Vian, you did it Vian: (silence) All of this happened while I was at work. Appa means dad in Tamil.| Amjith Ramanujam
Conversation with Sempi this morning. Me: I’m going to finish making the fried rice and then we can do our usual shenanigans. What do you say? Sempi: Yeah, you finish the fried rice and then we’ll throw it in our mouths. It was a wonderful morning. :)| Amjith Ramanujam
My younger son (16 months) can’t speak any words yet but he has no problems expressing himself by pointing and grunting. When he’s hungry he whines and points to the pantry. When he wants a specific fruit out of the fridge he will reject all the other ones with a head shake and sometimes a shove until I offer him the right fruit. This morning I witnessed him do a gesture that can only be construed as “Look ma no hands”.| Amjith Ramanujam
I started listening to classical music in my late 20s. Violin pieces are my favorite. I started with classical because I needed music without words while I programmed. Nowadays I listen to it for the pure joy of listening. I got started with Vivaldi’s Four Seasons. I thought that was the best piece of music ever conceived by humans. I used to argue with my wife (a music major) about how Vivaldi was better than Tchaikovsky.| Amjith Ramanujam
Vian is eating dates that I bought from the Indian store. He seems to be a fan. I take another date out of the package for myself. Vian intercepts my new date even though his mouth is full. I’m curious to see his next action. He takes the old date out of his mouth and shoves it into my mouth and then proceeds to eat his new one.| Amjith Ramanujam
We were sitting at a restaurant eating brunch. Yoshi got Calamari which was served with a lemon. Sempi is sipping his orange juice. Suddenly he drops this pearl of wisdom. Why do we call an orange, orange but don’t call a lemon, yellow? Yoshi and I both choked on our food from laughing so hard.| Amjith Ramanujam
We’re all having dinner as a family. Sempi is complaining about the food. He eats a little, here and there. Yoshi warns him to eat well or he might get hungry later. He doesn’t pay any attention. Dinner is over and he’s ready for bed. Yoshi is reading him a story. Sempi declares he’s hungry now. Yoshi: You should have eaten well when we were all having dinner. Sempi: I’m hungry.| Amjith Ramanujam
It was a dark and stormy evening. The rain was pouring down. A young couple pulled into an apartment complex in the middle of Portland. The wife was pregnant and the husband was clueless (as always). Despite his cluelessness, they thrived in the city. They made new friends and established their roots. The husband sprouted gray hairs and the wife grew motherly. Before they knew it, five years have gone by.| Amjith Ramanujam
I’m playing Tamil songs on the computer and busting my moves. Sempi: Appa why does this song keep saying ‘poop’. Me: Haha. It’s not saying ‘Poop’, it’s saying ‘poo’. I guess that’s not any better. In Tamil ‘Poo’ means flower. They’re singing about a flower. Sempi: ‘Poo’ means flower? Me: Yeah. But to be fair we had that word a long time before English. English stole it from us. Sempi: How do you steal words?| Amjith Ramanujam