# Ivan's IO > Snippets and learnings. Public Ghost content for AI and LLM tooling. This file includes a bounded export of public pages first, then recent public posts. Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`). ## Pages ### About this site URL: https://ivans.io/about/ Last updated: 2022-12-02T03:11:55.000Z Ivan's IO is an independent publication launched in December 2022 by Ivan Smirnov. If you subscribe today, you'll get full access to the website as well as email newsletters about new content when it's available. Your subscription makes this site possible, and allows Ivan's IO to continue to exist. Thank you! ### Access all areas By signing up, you'll get access to the full archive of everything that's been published before and everything that's still to come. Your very own private library. ### Fresh content, delivered Stay up to date with new content sent straight to your inbox! No more worrying about whether you missed something because of a pesky algorithm or news feed. ### Meet people like you Join a community of other subscribers who share the same interests. --- ### Start your own thing Enjoying the experience? Get started for free and set up your very own subscription business using [Ghost](https://ghost.org/?ref=ivans.io), the same platform that powers this website. ### About URL: https://ivans.io/about-2/ Last updated: 2021-04-12T17:50:23.000Z Welcome to Ivan's IO! This blog is an experiment with lightweight blogging in short form. I already have a long-form blog at [https://blog.ivansmirnov.name/](https://blog.ivansmirnov.name/?ref=ivans.io), but those articles are meaty and take a while to polish and publish. My intent with this space is to cultivate a more simple and direct posting style, where I can simply share my thoughts and discoveries as I come across them. This will solve my perfectionist tendencies that have led to hundreds of drafts and only a few dozen published posts on the other blog. I will be posting about various topics that are at the forefront of my mind. They will range from computer tips to cat training to cooking or life musings. As I build up the corpus of posts the tag and system should become more useful. Please enjoy! ## Posts ### Block Device Passthrough to Docker guest on Proxmox LXC URL: https://ivans.io/block-device-passthrough-to-docker-guest-on-proxmox-lxc/ Last updated: 2022-11-26T19:56:02.000Z I run Proxmox on my homelab server, with one of my LXC's running a docker engine with all of my smallworkloads. Recetnly, I needed to pass through block devices (`/dev/sda` , etc) to a docker container so that I could monitor SMART status (using [scrutiny](https://github.com/AnalogJ/scrutiny?ref=ivans.io)). Since the docker engine is running on an LXC, this had some small challenges. We can solve them with some clever mapping in two places. ## Solution ### Part 1: Set up mounts on the proxmox host Edit the appropriate LXC file on your proxmox host, and add a mount point for `/dev` ```conf # vim /etc/pve/lxc/106.conf mp4: /dev,mp=/mnt/dev # add this line at the bottom of your file ``` ### Part 2: Map the block devices back into docker On our docker guest, we now have the `/mnt/dev` endpoint with all of our host devices under it. > Note: this is incredibly insecure, and should only be done to completely trusted systems. We don't want to mount to `/dev` inside the guest, as that would clobber the exisitng `/dev` mounts and cause various problems. Now, inside our docker compose we can add the [devices](https://docs.docker.com/compose/compose-file/compose-file-v3/?ref=ivans.io#devices) mappings back to the expected paths: ```yaml # https://github.com/AnalogJ/scrutiny version: '3.4' services: collector: image: 'ghcr.io/analogj/scrutiny:master-collector' cap_add: - SYS_RAWIO - SYS_ADMIN volumes: - '/run/udev:/run/udev:ro' environment: COLLECTOR_API_ENDPOINT: 'http://your.endpoint' devices: - "/mnt/dev/sda:/dev/sda" # map the device back in ``` ### The Roller Coaster of Life URL: https://ivans.io/the-rollercoaster-of-life/ Last updated: 2022-08-30T20:45:14.000Z A close friend of mine recently asked me an interesting question: > Do you ever have days where you just get stuck in these hopeless spirals wondering what you've actually accomplished with your life? After thinking on it for a bit, I realized that the answer is typically a resounding no. The reason for this is my mental framework of evaluating my life goals, achievements, and performance so far. **I learned long ago I can't compare myself to my ideal version, or other people. I just have to compare myself to 2 weeks ago, 2 months ago, and 2 years ago.** ## Why not the ideal? True ideal is impossible. The ideal version of you may have finished school with perfect grades, had no cavities, never messed up a relationship and has never stubbed a toe. We learn though our mistakes and experiences. If we lived our ideal life from the start, how would we learn, adapt, grow, and change? We would never face any challenges or encounter any obstacles that make us stronger. It simply does not make sense to compare yourself to your ideal version that lives in your head. I believe it's smart to selectively strive for some of those traits, but there should **NEVER** be an expectation that you would actually become that person. ## Why not others? It's tempting to compare yourself to others. Someone 10 years younger than you who is smarter or has more money or a better job. Or maybe someone your own age, happily married, while you are single despite your best efforts. This isn't healthy either. Why would you compare yourself to the Queen of England, or Bill Gates? They had a different life than you, a different start, different opportunities. You have talents they know not, and vice versa. Comparison is meaningless. ## What about your past self? This is where things get interesting. Your past self is **you**, with all of your flaws, imperfections, and fun quirks. The question to ask yourself is this: > Are you still growing and evolving? Or are you stagnating? You probably already know the answer. But if not, a few simple comparisons can help you check your trajectory. **1\. How do you compare against yourself 2 weeks ago?** This is a very short time frame, but habits can be born or die in this time. Sometimes, life kicks us hard. We get divorced, our car breaks, we have to move out, and maybe our job changes. Shit happens. But sometimes, you meet new friends. Learn a new skill. Get new inspiration, or discover new joy in your life. **2\. How do you compare against yourself 2 months ago?** Meaningful change can happen over 2 months. A workout and diet may start to stick. A friendship or relationship can blossom as the connection deepens. Your move might be done, or you can find your feet at a new job. Check the trajectory - are things getting better? **3\. How do you compare against yourself 2 years ago?** A year can sometimes feel like a lifetime, or fly by in a blink of an eye. Either way, we aren't given that many years to enjoy on this planet. I find that two years is a long enough time that change should be immensely clear. It doesn't have to be external - it's awesome if you are in a stable relationship at a well paying job. The question to ask yourself is this: are you still learning and evolving? Are you growing in other ways, perhaps with deeper introspection or new personal insights. As long as you are in a better place, no matter what that means to you, then you know you're on the right path. ## Onward! It is my sincere hope that this mental framework will be useful to you. ### Introduction to Web Serials URL: https://ivans.io/introduction-to-web-serials/ Last updated: 2022-08-30T20:45:55.000Z I love reading - since an early age I have devoured every single book that I could get my hands on. To this day, reading is my activity of choice to wind down after a long day of hard work. While there's many incredible published books out there, today I'd like to talk about Web Serials. > What is a web serial? A web serial is a new method of writing, employed by online authors who prefer to put out consistent content on a recurring basis and get rapid feedback from their readers. These stories often grow and evolve dynamically as their readership waxes and wanes. For many authors, this is an easy way to rapidly check the viability of a story, rather than slaving away for years and then fighting with publishers. > Where do I find these web serials? Typically, these stories are born on an existing platform where there is a strong reading community. Sometimes they will branch out and start posting on their own site, and other times they will stay on the platform where they started. Some good sources: - [https://www.royalroad.com/welcome](https://www.royalroad.com/welcome?ref=ivans.io) - [https://www.reddit.com/r/WritingPrompts/](https://www.reddit.com/r/WritingPrompts/?ref=ivans.io) - [https://www.reddit.com/r/HFY/](https://www.reddit.com/r/HFY/?ref=ivans.io) Various reddit threads like [this one](https://www.reddit.com/r/Fantasy/comments/9arleb/a%5Fcurated%5Fintroduction%5Fto%5Fweb%5Fserials/?ref=ivans.io) have more lists and recommendations. ## Ivan's Favorites Here are some of my favorite stories (many of which are still ongoing). - [http://www.hpmor.com/](http://www.hpmor.com/?ref=ivans.io) \- a fascinating Harry Potter Fanfic, which explores the premise of Harry being a super genius with a scientific background. The plot is simply astounding. - [https://www.royalroad.com/fiction/21220/mother-of-learning](https://www.royalroad.com/fiction/21220/mother-of-learning?ref=ivans.io) \- excellent story set in a fantasy world where the main character fights with his brain, not brawn. - [https://wanderinginn.com/table-of-contents/](https://wanderinginn.com/table-of-contents/?ref=ivans.io) \- this is a stunning novel, standing at an insane [10 million words](https://wanderinginn.neocities.org/statistics.html?ref=ivans.io). I'm still working my way through it, but already this is one of the BEST fantasy series I have ever had the pleasure of reading. - [https://deathworlders.com/](https://deathworlders.com/?ref=ivans.io) \- an HFY classic, a Sci-Fi fantasy story set in the near future. Excellent worldbuilding and character development. Still ongoing, but probably going to get wrapped up in 12-18 months judging by the plot and pace. ### Visited Countries URL: https://ivans.io/visited-countries/ Last updated: 2022-05-11T22:15:13.000Z As a followup to , here's a map of all the countries I've been to: [Create your own visited countries map](https://www.amcharts.com/visited%5Fcountries/?ref=ivans.io) or check out the [JavaScript Charts](https://www.amcharts.com/?ref=ivans.io). ### Speeding up git operations for CI/CD URL: https://ivans.io/speeding-up-git-operations-for-ci-cd/ Last updated: 2022-04-20T19:11:18.000Z I recently found myself undergoing an epic journey to speed up our CICD builds at work. After some initial digging, I found that our git clone operations were taking 3 minutes and pulling 2gb of data, just to test a tiny Golang binary (3,500 LoC, 20mb). With some easy tweaks, I was able to reduce our clone time to 5 seconds and only pull 35mb of data. ## Faster Git clones *\*Requires a modern version of git (v2.25+) with sparse-checkout support.* ``` # clone our repo. Note the blob filter and --no-checkout git clone --no-checkout --filter=blob:none ssh://git@example.com:22/monorepo.git # Pop into the folder. If you ls, there is only the .git/ foldere cd monorepo ## Set up our sparse checkout git sparse-checkout init --cone # Specify the paths we care about git sparse-checkout set /your_path/ /some/other/path # Pull the files. git read-tree -mu HEAD ``` ## Additional links I found these three links very helpful in my research: - [https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/?ref=ivans.io) - [https://dev.to/patricksevat/optimize-your-git-clone-fetch-strategy-for-ci-pipeline-3pka](https://dev.to/patricksevat/optimize-your-git-clone-fetch-strategy-for-ci-pipeline-3pka?ref=ivans.io) - [https://stackoverflow.com/questions/9572407/git-sparse-checkout-with-exclusion](https://stackoverflow.com/questions/9572407/git-sparse-checkout-with-exclusion?ref=ivans.io) ### Acknowledge the Truths in Your Reality URL: https://ivans.io/acknowledge-the-truths-in-your-reality/ Last updated: 2022-11-11T11:35:38.000Z I had an interesting situation come up in my life recently, where I caught myself being highly irrational. It took me some time to work through it, but today I'm ready to share the story and the lessons I gained. ## A Blurry World I've had terrible vision since as early as I can remember. By age 7 I was wearing glasses with a `-3` (20/150) prescription. By age 12 I was down to `-5` (20/400), and by high school I was functionally blind without my glasses. For those with good vision - imagine you are standing face to face with a friend, and all you see is a giant skin colored blob. It's that bad. I got tired of being so reliant on glasses, as they are a small, easy to lose (or break) object, so a few years ago I got PRK Laser Eye Surgery. The surgery was a complete success, followed by a rapid recovery. I enjoyed a beautifully crisp world, awesome nigh vision, and finally felt free from the shackles of a pair of glasses. I was clocking in at 20/15+ on the exams. Since I am a big fan of data and keeping track of baseline indicators in my body, I continued to religiously perform annual eye exams. On the most recent one, it came to light that I'm now closer to -0.25 (20/25). This is not a change that can be easily noticed as it happens, but when the optometrist tweaks the [phoropter](https://en.wikipedia.org/wiki/Phoropter?ref=ivans.io) the difference can be seen. To be fair, 20/25 is still quite good. It's infinitely better than what I had pre-surgery, but the fact remains that at this point a pair of sunglasses with a tiny prescription will make the world look better. ## Inner Fights On the surface, this seems like a simple situation. Accept slightly subpar vision, or get a pair of prescription sunglasses and call it a day. Either choice is great. I examined my own feelings and found resistance. It didn't make sense: why wouldn't I want to improve my vision to be perfect again, and instead live with what I have now? I delved deep within and finally understood: I held the illusion of having flawless eyesight, and by getting prescription sunglasses I was forced to accept the undeniable fact that my vision is no longer perfect. I was irrationally avoiding the artifact that would force me to confront that the story in my mind does not match reality. After ruminating on this I realized that the truth will be there, no matter if I acknowledge it or not. I can choose to ignore it, as is my right. However, I do not believe there is anything to be gained by that. I will simply experience the world in a slightly more hazy manner, possibly missing out on intricate details or worse, increasing eyestrain. While it hurts to accept the fact that something I had hoped to keep for longer is gone, it's worse to experience these inconveniences in life. Especially since they can be remedied with such a simple solution. ## The Lesson This brings up a fascinating realization, one that I believe could serve more people if widely known: > Ignoring the truth doesn't change its' existence. Doing so only serves to cultivate a lie in your mind, giving a false sense of security, comfort, and safety in hiding behind this belief in a truth that does not exist. It takes energy to sustain a lie. Every time the truth confronts you, the defenses have to be built up to keep it out. This creates a cycle of self delusion, which drains energy from you continuously. It hurts to break this cycle and acknowledge the truth, but is must be done. Ultimately, only when we accept the truth of a situation can we begin the healing process, working through the problem instead of working on burying our heads in the sand. Picking at the source of resistance to a truth can uncover deeper concerns within us, concerns that would otherwise be invisible. What truths are you hiding from yourself today? ### Jump Start a Car When Alone URL: https://ivans.io/jump-start-a-car-when-alone/ Last updated: 2022-12-02T03:19:54.000Z Earlier this year, I took a 6 month road trip through most of America. You can see the path I took on . While on that epic adventure, I had my car battery die on me a few times. Once it was due to the cold, and the other few times were due to vampire power draw by my dashcam. This is a common problem with newer cars. There are so many smart systems and electronics which are always online that the battery simply can't keep up. There exist portable batteries that are specifically rated to jump start a car. This is really nice, as you don't have to deal with the cables, find another car, or lose time waiting for rescue. I don't plan to have referral links on my blog, so I am simply sharing the product that I use. I picked the DBPOWER 1000A battery from amazon: [https://www.amazon.com/DBPOWER-Portable-Starter-Battery-Flashlight/dp/B07SST4Y63/](https://www.amazon.com/DBPOWER-Portable-Starter-Battery-Flashlight/dp/B07SST4Y63/?ref=ivans.io) It has worked well for me, but YMMV. Please do your own research. ### Random Life Tips URL: https://ivans.io/random-life-tips/ Last updated: 2021-12-16T04:59:02.000Z This is a tiny post with an assortment of life tips. I use these every day, and I've had enough people express amazement at some of these that I decided to write them up and share them. I'll try to come back here and add to the list once in a while. 1. Hold your keys in your left hand while closing your front door. You will never be locked out again. 2. Learn the [Ian Knot](https://www.fieggen.com/shoelace/ianknot.htm?ref=ivans.io) \- the fastest method for tying shoelaces. It's so fast you can tie it mid-step. 3. Practice deterministic thinking - think where you would put that things when searching, look there. If you find yourself consistently checking the second place you think to look, move the thing there instead. 4. When you're in an unfamiliar car and don't know which side has the gas tank, look at the gas icon. There's an arrow on one side pointing to the correct side. 5. Keep a water bottle by your bedstand - you'll find it empty without remembering you drank in the middle of the night. 6. Turn on your oven light when your oven is on. Only turn off the light when you take out your food and turn off the oven. This way, you can tell from far away if you left your oven on. ### Simple Mobile File Access URL: https://ivans.io/filerun/ Last updated: 2021-12-03T05:45:00.000Z Once in a while I need to access my documents from my phone. When using Android, I was able to use [Solid Explorer](https://play.google.com/store/apps/details?id=pl.solidexplorer2&hl=en%5FUS&gl=US&ref=ivans.io) paired with [ZeroTier](https://www.zerotier.com/?ref=ivans.io) to log in remotely to my [SMB](https://ubuntu.com/tutorials/install-and-configure-samba?ref=ivans.io#1-overview) share on my home server. After moving to iOS, I have yet to discover a files app that is able to transfer any files reliably. I've tried the native Files app, as well as a variety of 3P solutions. Ultimately, it was easier to just deploy a web app. ## Filerun After some light digging, I found [https://filerun.com/](https://filerun.com/?ref=ivans.io) which met my criteria: 1. Self hosted with docker 2. Decent UI 3. Mobile support 4. Allows mapping existing file systems to the shares. For my particular deployment, I set up a [docker image](https://docs.filerun.com/docker?ref=ivans.io) on my cloud server, and added some additional protection using [Client Side SSL](https://fardog.io/blog/2017/12/30/client-side-certificate-authentication-with-nginx/?ref=ivans.io), using [https://github.com/cloudflare/cfssl](https://github.com/cloudflare/cfssl?ref=ivans.io) for the generation and management of my PKI. I did have to patch the `uploads.ini` to allow larger file uploads, so I mapped that directly into the docker container using a volume mount: `./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini`. I also edited the `config.php` and mapped it in: `./config.php:/var/www/html/customizables/config.php`. Everything else works flawlessly. ## Config Examples Here's a sample docker-compose: ``` --- version: '2' services: db: image: mariadb:10.1 environment: MYSQL_ROOT_PASSWORD: your_mysql_root_password MYSQL_USER: your_filerun_username MYSQL_PASSWORD: your_filerun_password MYSQL_DATABASE: your_filerun_database PUID: 1000 PGID: 1000 volumes: - ./db:/var/lib/mysql restart: unless-stopped web: image: afian/filerun environment: FR_DB_HOST: db FR_DB_PORT: 3306 FR_DB_NAME: your_filerun_database FR_DB_USER: your_filerun_username FR_DB_PASS: your_filerun_password APACHE_RUN_USER: your_user APACHE_RUN_USER_ID: 1000 APACHE_RUN_GROUP: your_user APACHE_RUN_GROUP_ID: 1000 UPLOAD_LIMIT: 1024M PUID: 1000 PGID: 1000 depends_on: - db links: - db:db ports: - "8311:80" volumes: - ./html:/var/www/html - ./config.php:/var/www/html/customizables/config.php - ./user-files:/user-files - /your/data:/user-files/folder1 - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini restart: unless-stopped ``` My `uploads.ini` ``` file_uploads = On memory_limit = 1024M upload_max_filesize =1024M post_max_size = 1024M max_execution_time = 600 ``` My `config.php` ``` This process takes less than 3-5 minutes once or twice a day. Generally less than 5% of articles make it into the next step in the pipeline. ## Pocket as a destination Ultimately, everything that I choose as a candidate for reading lands in Pocket. I like it because it's a consistent UI, supports offline reading, and most importantly integrates with [https://readwise.io/](https://readwise.io/?ref=ivans.io). This allows me to take highlights and practice [spaced repetition](https://www.gwern.net/Spaced-repetition?ref=ivans.io) to work on my recall of useful information. It's worth pointing out that I will read about 30% of the articles that make it into Pocket, and archive the rest without even opening them. This allows me yet another escape valve to relieve the backlog when the list gets too long. ## Managing Overhead Ultimately, the whole point of this system is to reduce overhead and improve the signal to noise ratio of the content we consume. This system provides the following benefits: 1. Your inbox is purely actionable emails, not passive information that waits to be consumed 2. You can have a more dedicated and intentional approach to media consumption: only open Miniflux and Pocket when you want to consume media. 3. You save time by not running a mental "diff" each time you view a news site to see if something new appeared 4. The pipeline allows you to filter out articles at several points - at the RSS selection, as well as Pocket 5. Using Pocket -> Readwise, the content you read can be surfaced back to you during your weekly or daily repetition practice. I hope you find this system useful. You may end up picking different tools, and that's great - as long as you save time and mental overhead, it's progress. ### Adulting App URL: https://ivans.io/adulting-app/ Last updated: 2021-11-07T00:18:14.000Z I recently stumbled upon [https://www.realworld.co/](https://www.realworld.co/?ref=ivans.io) \- an app that helps young adults understand the basics of common "adulting" challenges, and provides specific action items. This is similar to the financial course I would like to build one day. In the meantime, check out this app! I took a glance over it and the material seems quite solid. ### Visited States URL: https://ivans.io/visited-states/ Last updated: 2022-05-11T22:13:29.000Z It's always fun to see charts or graphs of my past exploits. I wanted to see which states I've seen so far as an adult. Using [AmCharts.com](https://www.amcharts.com/visited%5Fstates/?ref=ivans.io#US-AL,US-AZ,US-CA,US-CO,US-FL,US-GA,US-IL,US-KS,US-KY,US-LA,US-MI,US-MO,US-MS,US-NE,US-NM,US-NV,US-NY,US-OR,US-PA,US-TN,US-TX,US-UT,US-WA), we can generate a nifty map: [Create your own visited states map](https://www.amcharts.com/visited%5Fstates/?ref=ivans.io) or check out the [JavaScript Charts](https://www.amcharts.com/?ref=ivans.io). What about you? Where have you been, and what's next on your list? ### Investing Starter Kit URL: https://ivans.io/investing-starter-kit/ Last updated: 2021-10-05T02:17:06.000Z I strongly believe that access to financial knowledge should be universal. Personal finance is often viewed as a scary or taboo topic, but it really doesn't have to be. > All of the knowledge is out there, and everyone deserves to be wealthy. Here are some starter resources to get you started on your journey. I'm always happy to make time to chat with you and help you discover your goals - all I ask is that you pay it forward and share this knowledge with others who may need it. Remember: **you should not have to pay to get this knowledge**. There are no "secrets" that a special guru can teach you for the "low price of 19.99/mo". All of this knowledge is free and accessible to anyone who looks. Investing is the key to wealth. At first, you work for money. Later, your money should be working for you. The power of compound interest is unimaginable. ## Examples of Compound Interest ### Scenario 1: If you start with $1,000 and invest $100 every month, over 10 years your portfolio can grow to $20,514 (assuming an 8% return). \[[calculator](https://smartasset.com/investing/investment-calculator?ref=ivans.io#qeVHIjk7Pd)\] ![](https://ivans.io/content/images/2021/07/image.png) ### Scenario 2: If you have more resources that you can put towards your portfolio, the growth is even crazier. Let's pretend you have $20,000 to start with and can invest $400 every week. **You will end up with $362,768 in 10 years.** \[[calculator](https://smartasset.com/investing/investment-calculator?ref=ivans.io#dFUQ74FT9k)\] ![](https://ivans.io/content/images/2021/07/image-2.png) Notice how during the later years, your interest actually starts catching up to your contributions. This is the power of compound interest. Your money starts to work **for you** faster and faster, all while you sleep. ## Market Investing: Stocks, Bonds, and Funds So, where do you start? First, you must learn. Read up on the basics, go through the guides and try out the simulators. Once you are comfortable, start with a small amount of money that you won't lose sleep over, and just start practicing. It's much better to lose $1,000 in your 30's compared to losing $100,000 in your 50's. Start now and learn on small portfolios, so that later you can make great decisions. **Basic Guides (start here)** - [https://www.investopedia.com/articles/basics/11/3-s-simple-investing.asp](https://www.investopedia.com/articles/basics/11/3-s-simple-investing.asp?ref=ivans.io) \- Simple guide that gently introduces you to various common terms and concepts. There are more links in the sidebar. - [https://www.nerdwallet.com/article/investing/stocks-vs-bonds](https://www.nerdwallet.com/article/investing/stocks-vs-bonds?ref=ivans.io) \- Stocks vs Bonds guide. - [https://www.nerdwallet.com/article/investing/what-is-an-etf](https://www.nerdwallet.com/article/investing/what-is-an-etf?ref=ivans.io) \- Guide for ETF's - [https://www.fool.com/investing/how-to-invest/](https://www.fool.com/investing/how-to-invest/?ref=ivans.io) \- Starter guide that covers the basics. - [https://www.millennial-revolution.com/investworkshop/](https://www.millennial-revolution.com/investworkshop/?ref=ivans.io) \- this is an excellent starter guide. It explains the basics of stocks, bonds, ETF's, portfolios, and more. **Practice** Once you are ready to play, you can use these two tools as simulators with "paper money" to get a sense of how things work. - [Investopedia Simulator](https://www.investopedia.com/simulator/?ref=ivans.io) - [ThinkOrSwim](https://www.tdameritrade.com/tools-and-platforms/thinkorswim.html?ref=ivans.io) \- you can set up an account and practice using a more advanced interface. MAKE SURE that you are using your paper funds and not real money. **Tools for Analysis** - [Backtest Portfolio Asset Class Allocation](https://www.portfoliovisualizer.com/backtest-asset-class-allocation?s=y&mode=1&timePeriod=4&startYear=1972&firstMonth=1&endYear=2019&lastMonth=12&calendarAligned=true&initialAmount=10000&annualOperation=0&annualAdjustment=0&inflationAdjusted=true&annualPercentage=0.0&frequency=4&rebalanceType=4&absoluteDeviation=5.0&relativeDeviation=25.0&asset1=TotalStockMarket&allocation1%5F1=80&allocation1%5F2=100&asset2=TotalBond&allocation2%5F1=20&allocation2%5F2=0&asset3=IntlStockMarket&asset4=GlobalBond&total1=100&total2=100&total3=0&ref=ivans.io) \- as you start to form an opinion about what you would like your portfolio to look like, you can use this tool to see how you WOULD have performed. I typically set it to start in 2000 or 2009, since the world has changed a TON since 1980. - [Personal Capital](https://www.personalcapital.com/?ref=ivans.io) \- Provides an excellent visualization and overview of what your accounts look like. I'm a big fan of the "Net Worth" chart, since it shows how you are doing overall. There are also some planning and simulation capabilities in there. **Books:** - [One Up on Wall Street](https://www.goodreads.com/book/show/762462.One%5FUp%5FOn%5FWall%5FStreet?ref=ivans.io) \- I've heard really good things about it. Haven't read it yet, but it's come up enough that it's a good candidate for you to check out. - [The Little Book of Common Sense Investing](https://en.wikipedia.org/wiki/The%5FLittle%5FBook%5Fof%5FCommon%5FSense%5FInvesting?ref=ivans.io) - **Anti Recommendation:** I have read [Rich Dad, Poor Dad](https://en.wikipedia.org/wiki/Rich%5FDad%5FPoor%5FDad?ref=ivans.io) several times, but I didn't actually see tons of useful insights in there. It's considered a classic, but it's honestly mostly just a memoir of a real estate mogul who managed to achieve success. The biggest takeaway is: have your money work for you, and optimize for passive income growth. Don't trade time for money directly. Make your resources (money or your business) work for you. **Broker Choice** Once you are ready to start investing for real, you will need to pick a broker. Common choices are: - [Ally Invest](https://www.ally.com/invest/self-directed-trading/?linkTo=choices-and-pricing&setPanel=first-ic-panel&ref=ivans.io) - [Charles Schwab](https://www.schwab.com/investment?ref=ivans.io) - [E\*Trade](https://us.etrade.com/home?ref=ivans.io) - [Fidelity](https://www.fidelity.com/?ref=ivans.io) - [Interactive Brokers](https://www.interactivebrokers.com/en/home.php?ref=ivans.io) - [Robinhood](https://robinhood.com/us/en/?ref=ivans.io) - [Sofi](https://www.sofi.com/invest/fractional-shares/?ref=ivans.io) - [TD Ameritrade](https://www.tdameritrade.com/home.html?ref=ivans.io) - [Vanguard](https://investor.vanguard.com/home?ref=ivans.io) I have strong opinions about which ones to use and which ones to avoid, but in the interest of fairness I will simply list them all and let you decide for yourself. Key things to look out for are no commission fees (you shouldn't have to pay to buy or sell stocks) and a good selection of ETF and mutual funds. You can see comparisons on [https://www.nerdwallet.com/best/investing/online-brokers-for-stock-trading](https://www.nerdwallet.com/best/investing/online-brokers-for-stock-trading?ref=ivans.io) and other similar sites. ## General Financial News and Analysis None of these sites are required or part of the basic toolkit I list above. If you want to dive deeper into this space, these can be a good starting point to get the lay of the land. - [https://seekingalpha.com/](https://seekingalpha.com/?ref=ivans.io) \- This is an interesting site. It's more focused on individual stock picks, and they will try to up-sell you to pay for their premium analysis. I don't think it's worth it. However, this can be an interesting site to peruse every few months to see what the latest trends are. - [https://www.ft.com/](https://www.ft.com/?ref=ivans.io) \- Good overview of general market trends and situations. - [https://www.mckinsey.com/featured-insights](https://www.mckinsey.com/featured-insights?ref=ivans.io) \- High level overviews of the business world and long term trends. Not related to specifically market news. - [https://www.fool.com/](https://www.fool.com/?ref=ivans.io) \- Similar to Seeking Alpha. General Ticker news. --- ## Real Estate Investing This is a topic I am still quite new to, but I have already found a number of highly useful guides and resources. - [BiggerPockets](https://www.biggerpockets.com/?ref=ivans.io) \- This is the best site out there for comprehensive advice. They have an excellent [Ultimate Beginner's Guide](https://assets2.biggerpockets.com/uploads/user%5Ffile/file%5Fobject/1694/UBG%5F2018.pdf?ref=ivans.io) that covers everything you need to know. - [https://www.madfientist.com/tax-benefits-of-real-estate-investing/](https://www.madfientist.com/tax-benefits-of-real-estate-investing/?ref=ivans.io) - [How to analyze a real estate market in 60 minutes - Neal Bawa](https://www.youtube.com/watch?v=J-5akkEKzG0&ref=ivans.io) \- worth watching in its' entirety. Neal runs [MultifamilyU](https://multifamilyu.com/lp/real-estate-trends-toolkit/?ref=ivans.io) and has a course on [Udemy](https://www.udemy.com/course/realfocus/?ref=ivans.io) with the same material. --- ## Final Comments A few words of advice: 1. Make sure you understand all the basic terms: stocks, bonds, funds, portfolio allocation, backtesting, SP500 index, bear market, bull market. 2. AVOID OPTIONS AT ALL COSTS. These are very powerful tools which *can* make you a TON of money if you know what you are doing. However, it is my ***strong*** recommendation to avoid options (calls, puts, straddles, etc) until you have spent at least 2-3 years investing in basic financial instruments such as ETF's and mutual funds. 3. Take everything you read online with a grain of salt. There are many people who claim they are "experts" and can beat the market. Don't believe them. Ask to see their historical returns. To the best of my knowledge, there is no one that has consistently outperformed the SP500 or general stock market over the long run. Anyone can outperform the index by sheer dumb luck over a short enough time horizon. It's consistency that matters. 4. Beware of advisory fees or high expense ratios. Some of the ETF's or mutual funds you may find (such as blackrock, etc) are professionally managed and charge up to 1% management fees. That eats into your profits, and you pay the fee no matter if you made money or lost money. Vanguard funds charge 0.04%, which is a much better deal. 5. Understand you HAVE NOT LOST MONEY until you sell. Your portfolio can be down 50%, but it's only when you sell your assets at a loss do you lock in your losses. Do not panic - you might have lost tons of value on paper, but it's not the same as getting your bank account robbed. 6. Understand what you are investing in. There are tons of new financial instruments coming out, proposing investments in art, wine, crypto, and more. Read the fine print on these and seek to understand what is it exactly that you are investing in, and what are the hidden fees. 7. Not all stocks are listed on the Nasdaq or New York stock exchange. There are markets all over the world: [https://craft.co/nasdaq/competitors](https://craft.co/nasdaq/competitors?ref=ivans.io) . Don't be surprised if you can't find a particular company. 8. If you have the funds and interest, I wholeheartedly encourage you to set aside some small percentage of your portfolio for gambling with individual stocks. I find that it's a great way to scratch that itch of picking stocks. After a few years, you can compare your returns to the standard ETF portfolio you probably set up and draw your own conclusions about whether the time and effort you put into day trading is worth it. > Go forth and prosper! ### YNAB Podcast Guest URL: https://ivans.io/ynab-podcast-guest/ Last updated: 2021-07-18T19:48:44.000Z I was recently hosted on the YNAB Podcast where I had an awesome chat with Jessse Mecham (the founder) and Daniel Chen (my mentor). We covered a plethora of topics - please enjoy our content! Video: [High-Income Earners Using YNABJesse chats with two people that are passionate about personal finance and share a common trait: they are high income earners. YNAB doesn’t often talk about ...![](https://www.youtube.com/s/desktop/a910c60b/img/favicon_144x144.png)YouTube![](https://i.ytimg.com/vi/MZXimyzCrnE/maxresdefault.jpg)](https://www.youtube.com/watch?v=MZXimyzCrnE&ref=ivans.io) Audio: [EP08 Money Stories: Ivan Daniel Budget for the High Income Earner

Jesse chats with two people that are passionate about personal finance and share a common trait: they are high income earners. YNAB doesn’t often talk about people earning high incomes, but contrary to popular belief, earning a lot of money does NOT mean you don’t need to budget!

As Ivan Sm…![](https://player.fm/assets/v_20210616154302/logos/v3/icon180x180-3d4fb22c2f5d09c8f1725379e5385dcef82ebfc0267441eb465849a50c396e5a.png)You Need A Budget (YNAB)Player FM![](https://cdn.player.fm/images/2386/series/uob5tP2tDWDMdWNJ/512.jpg)](https://player.fm/series/you-need-a-budget-ynab/ep08-money-stories-ivan-daniel-budget-for-the-high-income-earner?ref=ivans.io) ### Just Ask URL: https://ivans.io/just-ask/ Last updated: 2021-06-25T16:49:00.000Z I had an interesting phone call with a hotel chain the other day, where I called to politely express some concerns I had with my experience. There was a massive voltage surge that fried all the lights, so I had to move out by flashlight late at night into a different room. The conversation went roughly like this: > Me: Hi, my name is Ivan and I had some concerns about my recent stay {list concerns here}. Could I get some rewards points for the inconvenience? > Rep: Sure, let me look into that. {after a 15 minute hold} Hi there, we can give you X points. > Me: Thank you, that's very kind. Given the nature of the concern, could you do more? > Rep: Since you asked, the max I can do is 1.5X. Here you go. And that was that. I earned a fairly significant volume of reward points for a hotel chain that I enjoy, simply by being polite. The biggest showcase here is that second question: > Can you do more? Most people never even ask the first question. I know many folks who will complain or boycott the hotel. Yet, it always amazes me when those same people don't call and ask for points or other perks. **If you never ask, the answer is always no.** It's incredible how often a simple ask, followed by a humble clarification if this is the most that is possible, leads to incredible results. **It's important to never be entitled or expect anything.** Most service reps that you chat with are underpaid and working long hours. Coming into the conversation with compassion and politely asking for the benefits that you would like has a surprisingly high success rate. I have called and used this technique many times. Just asking one question has been enough to double my signing bonus, get tickets to sold out shows, and so much more. It doesn't always work - sometimes there really is no leeway. But, by calling and politely asking you are already doing more than most. Don't be afraid of rejection - the worst that happens is that some call center representative you will never talk to again says "no". If you are polite, you are not imposing on them. They are trained for this and want to help you out and make things better. **Just ask.** ### One Handed Typing URL: https://ivans.io/one-handed-typing/ Last updated: 2021-06-18T16:47:00.000Z A short while back I had a small sports accident and injured my left thumb quite badly, to the point that my left hand needs to be left alone to heal. As a software engineer, this presents a major challenge. I decided to look into one handed typing layouts. Mechanical Keyboards have been making huge leaps and bounds with hardware and sofware design, and as a corollary folks have gotten VERY deep into ergonomic keyboard layout design and scientific optimization based on biomechanics. After some initial research, I found two layouts optimized specifically for one handed typing: 1. [http://www.frogpad.com/](http://www.frogpad.com/?ref=ivans.io) 2. [https://www.artsey.io/](https://www.artsey.io/?ref=ivans.io) Both of these remind me of [ASETNIOP](http://asetniop.com/combinations/?ref=ivans.io) used by the [Ginny](https://www.gboards.ca/product/ginni?ref=ivans.io), but that one is aiming to be a stenographic keyboard for two handed typists. The community around Frogpad seemed a little less engaged, so I joined the Artsey.IO discord server and started diving into the layout. I picked up a [Boardsource 3x4 macro pad](https://boardsource.xyz/store/5ecc2008eee64242946c98c1?ref=ivans.io) and flashed [Artsey.IO ](https://www.artsey.io/?ref=ivans.io)on it. ![](https://ivans.io/content/images/2021/06/boardsource.JPG) The training is slow, but it's better than not being able to type at all. ### My Top Book Recommendations URL: https://ivans.io/my-top-book-recommendations/ Last updated: 2021-07-20T19:38:37.000Z I deeply enjoy reading books. Here's a short list of some of my favorites. ## Non Fiction Every book on this list has changed my life in a pivotal manner. I invite you to read them for yourself and hope it brings about positive change for you as well. - [How to Win friends and Influence People](https://www.goodreads.com/book/show/4865.How%5Fto%5FWin%5FFriends%5Fand%5FInfluence%5FPeople?ref=ivans.io) by Dale Carnegie - great foundation on interacting well with people. - [Getting Things Done](https://www.goodreads.com/book/show/1633.Getting%5FThings%5FDone?ref=ivans.io) by David Allen- the root of my time management philosophy. - [The Alchemist](https://www.amazon.com/Alchemist-Paulo-Coelho/dp/0061122416?ref=ivans.io) by Paulo Coehlo - great philosophical foundation. - [Esentialism](https://gregmckeown.com/books/essentialism/?ref=ivans.io) by Greg McKeown - pivotal work on how to priorize in life. - [Deep Work](https://www.calnewport.com/books/deep-work/?ref=ivans.io) by Cal Newport - a must read on how to work better. - [Algorithms to Live By](https://www.goodreads.com/book/show/25666050-algorithms-to-live-by?ref=ivans.io) \- fun read on how to apply computer algorithms to optimize your daily life. - [Sapiens](https://www.ynharari.com/book/sapiens-2/?ref=ivans.io) by Yuval Noah Harari - an excellent history of the human race. - [Give and Take](https://www.adamgrant.net/book/give-and-take/?ref=ivans.io) by Adam Grant - understand different types of people and how to interact best with them. - [Atomic Habits](https://jamesclear.com/atomic-habits?ref=ivans.io) by James Clear - an actionabe guide on how to set up proper habits in life. - All books by [Malcolm Gladwell](https://en.wikipedia.org/wiki/Malcolm%5FGladwell?ref=ivans.io#Works) ## Fiction Sometimes you just need to decompress. I like reading books with well developed worlds and consistent logic. - [Harry Potter and the Methods of Rationality](http://www.hpmor.com/?ref=ivans.io) \- A mind blowing fan fiction with deep tenets in rationalism and science. Extremely enjoyable. Familiarity with original Potterverse is a must. - [Deathworlders](https://deathworlders.com/?ref=ivans.io) \- excellent web serial about humans in space. Touches upon all parts of life, and characters and world are incredibly well developed. - [Mother of Learning](https://www.royalroad.com/fiction/21220/mother-of-learning?ref=ivans.io) \- a fun web serial about a mage in a time loop. Download [here](https://github.com/asdkant/bookify-mol/releases?ref=ivans.io). - [Nexus Trilogy](https://www.goodreads.com/book/show/13642710-nexus?ref=ivans.io) by Ramez Naam - This is a very interesting series about the emergence of superconsciousness and how the world reacts to it. I believe that it is entirely possible that events such as these will unfold in our future here on Earth, and found the description of events here very enlightening and thought provoking. - [Mistborn Trilogy](https://www.goodreads.com/book/show/68428.Mistborn?ref=ivans.io) by Brandon Sanderson - A very fun read, set in an alternate universe in medieval times. What I liked about this series was that it was more than just action and drama - the author managed to encode some very interesting discussions and thoughts about morality, life, philosophy, and ethics. Very enjoyable read, and quite deep. - [Tide Lords](https://www.goodreads.com/book/show/2038926.The%5FImmortal%5FPrince?from%5Fsearch=true&from%5Fsrp=true&qid=pFOMpQhO9u&rank=1&ref=ivans.io) by Jennifer Fallon - This was definitely more of a fun time killer. Action, magic, and a captivating plot. Grat for a nice vacation. - All works by [Terry Pratchett](https://en.wikipedia.org/wiki/Terry%5FPratchett?ref=ivans.io). Here is the suggested [reading order](https://i.redd.it/fdr5qy7s47051.png?ref=ivans.io). ### CyberPro Podcast Guest URL: https://ivans.io/cyberpro-podcast-guest/ Last updated: 2021-05-24T17:22:20.000Z I had a chance to be hosted on the [CyberPro Podcast](https://cyberpropodcast.podbean.com/e/82-ivan-smirnov-cto-elude/?ref=ivans.io) recently. We had a fun chat about cyber security, continuous learning, and retro technology. It's 5 questions in 9 minutes - enjoy! You can find it on: - [LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:6802627491463868416?ref=ivans.io) - [PodBean](https://cyberpropodcast.podbean.com/?ref=ivans.io) - [Apple Podcasts](https://podcasts.apple.com/us/podcast/cyber-it-professional-podcast/id1547469694?ref=ivans.io) - [YouTube](https://youtu.be/y4umlibXNBw?ref=ivans.io) - [Twitter](https://twitter.com/ShortArmSAS/status/1396863823877976066?ref=ivans.io) ### Credit Card Points Hacking with PayPal Key URL: https://ivans.io/credit-card-points-hacking-with-paypal-key/ Last updated: 2021-05-01T06:21:00.000Z I maintain several credit cards which yield good points rewards if used well. For many years now, I've really wanted to be able to pay my rent with my credit card. Unfortunately, most providers will pass along the 3% [network charge fee](https://www.fool.com/the-ascent/research/average-credit-card-processing-fees-costs-america/?ref=ivans.io) directly to you. There are a few companies that offer virtual debit cards, such as [https://privacy.com/](https://privacy.com/?ref=ivans.io) or others. All of them link you actual bank account though. Surprisingly, PayPal has a product called [PayPal Key](https://www.paypal.com/us/smarthelp/article/what-is-paypal-key-and-where-can-i-use-it-faq4240?ref=ivans.io) which allows you to link a credit card and get a virtual Mastercard debit card, with no fees. I am able to use this card to pay rent. --- Update: April 2020 - I wanted to use this to [pay my taxes](https://www.irs.gov/payments/pay-your-taxes-by-debit-or-credit-card?ref=ivans.io) but it appears that PayPal has caught on and [blocked](https://frequentmiler.com/paypal-key-virtual-master-card/?ref=ivans.io) these companies. ### Reflections on Mindset and Framing URL: https://ivans.io/reflections-on-mindset-and-framing/ Last updated: 2022-11-25T23:09:17.000Z I recently had a chance to visit the [Carlsbad Caverns](https://en.wikipedia.org/wiki/Carlsbad%5FCaverns%5FNational%5FPark?ref=ivans.io) in New Mexico. It's a curious system of caves with various stalactites and stalagmites and interesting rock formations, located in the ancient seabed in the mountains. ![](https://ivans.io/content/images/2021/04/image.jpeg) I found the experience enjoyable, but at times it felt slightly underwhelming because of the lack of color variety. One could say that a cave is a cave, after all. As I descended into the earth, I started playing with different framing and mindset adjustments. On the surface level, my experience boils down slowly walking into a dark cave on a path. Going one level deeper, I started to appreciate the incredible volume of work that went into creating the pathway that I was on. It was smooth concrete with metal guard rails the entire mile down. There were lights placed to illuminate the rock formations from the most appealing angle, and various signs with educational texts. Given that this was in a cave, all of the materials must have been carried in by hand or at best wheeled in. Some of the passages were narrow and I could tell that they were carved out by hand. Thinking about it even deeper, I realized that the cavity that I was descending into was the vacuum created by the absence of a truly incomprehensible volume of water that used to be the body of a sea. I was walking into a geological crypt, seeing the bottom of an ocean as it slowly receded it into the earth over the aeons. It no longer became just a cave, but rather a unique experience with sights, smells, and sensations that can only be experienced here. Going even one level deeper, I started ruminating about the relative time scales of events. Some of those stalactites grew at most a fraction of a millimeter during the entirety of my lifetime, and with luck will continue growing long past the human race expands into the universe. If my entire life is but a fleeting moment on the geological time scale, what do my accomplishments mean? Which one of my creations will stand the test of time, and what failures of mine will fade into oblivion? --- Reframing this walk lead to quite curious ruminations. I have noticed similar anecdotes from other events in my life. A boring party can turn into a fascinating anthropological event. Misfortune at work can highlight the incredible nuances of human collaboration. A failure of plans can lead to novel spontaneity. I'm really enjoying exercising this muscle of gratitude and appreciation and rumination about the different mindsets I can simultaneously maintain in an experience. In a way, all of the viewpoints are correct. I spent an hour walking in a dark hole. I spent 60 minutes traversing what took years to build for humans. I spent 3600 seconds walking through the tomb of an ancient sea. And finally, I spent 3,600,000 microseconds walking past growing structures to which I myself am but a fraction of a moment. ### Solving Cooking Once and For All URL: https://ivans.io/solving-cooking-once-and-for-all/ Last updated: 2021-04-24T06:14:00.000Z I've always had a challenge with cooking. I'm capable of following directions on a recipe and not burning down the house, but that doesn't solve the problem of consistent caloric intake. Since the start of the pandemic, I have been exploring with different systems to set up a proper meal habit that doesn't break the bank or suck up all my time. Initially, I would cook ad-hoc - getting excited about a recipe, making it, then eating it all and ending up with an empty fridge and a hungry stomach. This didn't scale well and caused a lot of food waste, extra miscellaneous ingredients and a general dislike of cooking. My next experiment was signing up for Hello Fresh. It's a meal kit delivery service which has the ingredients portioned already, but it's up to you to do the actual cooking. I found that their portions were quite small, and the three meals a week plan that I signed up for didn't completely close the gap. However, after cooking several dozen recipes I started to see patterns. Ultimately, solving cooking is like learning any other skill - it requires a foundation that knowledge can attach to. If you already understand how to build a house, learning plumbing isn't hard. In my case, I had zero foundations for cooking, but the meal-kit helped me create those. Simple, rote repetition taught me common tricks, techniques, and approaches that then scale out to other recipes. My latest experiment is with going all in on meal-prep. I'm lucky enough to be flexible with food, so I'm perfectly OK eating the same meal 18 times in a row. I received an Instant Pot for the holidays, so I've been combining that with frozen meal prep. The concept is simple - with an instant pot, you just dump in all the ingredients and punch a button. You can take this one step further by measuring everything into large bags and freezing the raw ingredients. Then, when you are hungry you can simply place the frozen raw brick into the Instant Pot and have a fresh, healthy dinner less than an hour later. I like reading [https://pinchofyum.com/freezer-meals](https://pinchofyum.com/freezer-meals?ref=ivans.io) and [https://www.mealprepsunday.com/](https://www.mealprepsunday.com/?ref=ivans.io) \- so far they have had good recipes that aren't disappointing. I've supplemented the instant pot meals with some light meal prep, where I bake chicken and veggies and put them into single serving containers. ![](https://ivans.io/content/images/2021/04/IMG_0283.png) ### Better Status Bar for MacOS URL: https://ivans.io/better-status-bar-for-macos/ Last updated: 2022-12-13T17:25:28.000Z I've been using [Ubersicht](https://tracesof.net/uebersicht/?ref=ivans.io) to [generate](https://github.com/issmirnov/dotfiles/tree/7c2e5c894d42c1a6741a5ecc9f0b6c999b451965/ubersicht?ref=ivans.io) a pretty status bar for me on MacOS: ![](https://ivans.io/content/images/2021/04/Screen-Shot-2021-04-09-at-4.39.31-PM.png) Ubersicht status bar (right) After upgrading to Big Sur, I've noticed that my [Battery](https://github.com/issmirnov/dotfiles/tree/7c2e5c894d42c1a6741a5ecc9f0b6c999b451965/ubersicht/lib/Battery?ref=ivans.io) widget seems to have broken. While searching for ways to fix it, I stumbled upon [https://www.jeantinland.com/toolbox/simple-bar/](https://www.jeantinland.com/toolbox/simple-bar/?ref=ivans.io) [simple-bar | Jean Tinland![](https://www.jeantinland.com/favicon.ico)Jean Tinland![](https://www.jeantinland.com/images/simple-bar/demo/bg.jpg)](https://www.jeantinland.com/toolbox/simple-bar/?ref=ivans.io) ![](https://ivans.io/content/images/2021/04/Screen-Shot-2021-04-09-at-4.32.30-PM.png) simple-bar screenshot (right) This is a beautiful bar that brings some more interactivity to the widgets, and fixes some of the issues I had with the [yabai](https://github.com/koekeishiya/yabai?ref=ivans.io) space indicators. Old: ![](https://ivans.io/content/images/2021/04/Screen-Shot-2021-04-09-at-4.39.24-PM.png) Ubersicht - old indicators (left) New: ![](https://ivans.io/content/images/2021/04/Screen-Shot-2021-04-09-at-4.33.08-PM.png) simple-bar screenshot (left) I now set my MacOS menu bar to automatically hide, and use this bar instead for all of my needs. ![](https://ivans.io/content/images/2021/04/Screen-Shot-2021-04-09-at-4.41.34-PM.png) Combined with [named spaces](https://github.com/issmirnov/dotfiles/blob/master/yabai/yabairc?ref=ivans.io#L78) and app icon previews, it's now very convenient to navigate on my Mac. If you want to set this up, install these apps: 1. [Yabai](https://github.com/koekeishiya/yabai?ref=ivans.io) \+ [skhd](https://github.com/koekeishiya/skhd?ref=ivans.io) (sample configs: [yabai](https://github.com/issmirnov/dotfiles/blob/master/yabai/yabairc?ref=ivans.io) and [skhd](https://github.com/issmirnov/dotfiles/blob/master/skhd/base?ref=ivans.io)) 2. [Ubersicht](https://tracesof.net/uebersicht/?ref=ivans.io) 3. [Simple Bar](https://github.com/Jean-Tinland/simple-bar?ref=ivans.io) ### Fixing DNS for Wireguard on MacOS URL: https://ivans.io/wireguard-on-macos/ Last updated: 2021-04-13T23:55:00.000Z If you are using the [Wireguard MacOS App](https://apps.apple.com/us/app/wireguard/id1451685025?ls=1&mt=12&ref=ivans.io) with your VPN's, you will notice that your custom DNS entries are not getting set at the system level. You can manually edit Network Preferences -> Wi-Fi -> Advanced -> DNS and add your DNS server, but that will cause DNS errors if your VPN drops and your system DNS still points to the wireguard DNS instance. ![](https://ivans.io/content/images/2021/04/Screen-Shot-2021-04-09-at-3.10.25-PM.png) A workaround is to add a `PostUp` and `PostDown` option to your wireguard config: ```ini [Interface] Address = 10.200.200.1/24 ListenPort = 51820 PrivateKey = SERVER_PRIVATE_KEY # DNS server DNS = 10.66.66.1 # Commands to set and clear DNS PostUp = sudo /usr/sbin/networksetup -setdnsservers Wi-Fi 10.66.66.1 PostDown = sudo /usr/sbin/networksetup -setdnsservers Wi-Fi "Empty" [Peer] # foo PublicKey = PEER_FOO_PUBLIC_KEY PresharedKey = PRE-SHARED_KEY AllowedIPs = 10.200.200.2/32 ``` Wireguard Sample Configuration The wireguard GUI [will not read](https://www.reddit.com/r/WireGuard/comments/bea47m/wireguard%5Fmacos%5Fapplication%5Fpostuppostdown/?ref=ivans.io) the PostUp and PostDown, so you will have to run your wireguard commands from the command line. ## Solution: Use the CLI First, install the tools: ``` brew install wireguard-tools wireguard-go ``` Then, save your config to the folder: ``` vim /usr/local/etc/wireguard/myvpn.conf ``` Finally, launch your VPN - using the same name as the `conf` file. ``` sudo wg-quick up myvpn ``` ## Bonus: Alias/Visudo You can set up an alias with `alias vpnup='sudo wg-quick up myvpn'` If you don't want to enter your password each time, simply run `sudo visudo -f /private/etc/sudoers.d/wireguard` and paste the following contents, replacing `myuser` with your username. ``` myuser ALL = (root) NOPASSWD: /usr/local/bin/wg-quick ``` ### Abusing Public DNS for Zerotier Routing URL: https://ivans.io/abusing-public-dns-for-zerotier-routing/ Last updated: 2021-04-12T19:11:22.000Z ## Picking a Mesh VPN I've been a big fan of [mesh VPNs](https://www.csoonline.com/article/3575088/mesh-vpns-explained-another-step-toward-zero-trust-networking.html?ref=ivans.io) for many years now. It's great to not have to deal with [Strongswan](https://www.strongswan.org/?ref=ivans.io) or [OpenVPN](https://openvpn.net/?ref=ivans.io) on a central server. Mesh VPN's also come with intelligent routing, so if both of my devices are at home on the same network they will dial each other directly. This concept also combines nicely with my interest in setting up a [BeyondCorp](https://research.google/pubs/pub43231/?ref=ivans.io) analog for my home use. I used to run a private cloud on [Tinc](https://www.tinc-vpn.org/?ref=ivans.io), but adding new devices was extremely cumbersome and there is no mobile device support. After looking into alternatives, I discovered [Tailscale](https://tailscale.com/?ref=ivans.io) and [Zerotier](https://www.zerotier.com/?ref=ivans.io). I don't need the hardcore firewall rules of [Tailscale](https://tailscale.com/?ref=ivans.io), so I decided to set up [Zerotier](https://www.zerotier.com/?ref=ivans.io) on all of my devices. The installation truly is less than 5 minutes - I am impressed. ## Abusing DNS I can set custom IP's in my [class B](https://study-ccna.com/classes-of-ip-addresses/?ref=ivans.io) address space (prefix 172.xx), but I don't want to memorize them all. Even though it's not up to DNS spec, we can set internal IP's as A records on [Amazon Route53](https://aws.amazon.com/route53/?ref=ivans.io) and have them resolve to the Zerotier address space. I don't view it as a strong security risk, because even if someone knows my internal VPN IP, they still have to break into the network to route any requests to my devices. By setting up semi-proper DNS for my machines, I can completely detach from the physical network layout and have all of my proxies and scripts reference the internal VPN DNS names. This works extremely well - I can move my server and plug it into any network, and still be able to access it. ## Mobile Support Most importantly, I now have easy addresses to use on my mobile devices. I can install the [app](https://apps.apple.com/us/app/zerotier-one/id1084101492?ref=ivans.io) and join my network, then use Files, [Termius](https://termius.com/?ref=ivans.io), or [Solid Explorer](https://play.google.com/store/apps/details?id=pl.solidexplorer2&hl=en%5FUS&gl=US&ref=ivans.io) to view my files and media on the go. ### Interview Resources URL: https://ivans.io/interview-resources/ Last updated: 2021-04-09T23:13:18.000Z I recently went through the interview prep process as I prepared to leave Google and find a new position. These are the resources that I used that helped me land my current role at Stripe. ## Action Log - Solve every problem in the [https://www.interviewcake.com/](https://www.interviewcake.com/?ref=ivans.io) - Do at least 10 mock coding interviews - Complete the [https://www.educative.io/courses/grokking-the-system-design-interview](https://www.educative.io/courses/grokking-the-system-design-interview?ref=ivans.io) course - Do at least 3 SDI (system design interview) mocks with friends - Complete the [https://www.educative.io/courses/grokking-the-behavioral-interview](https://www.educative.io/courses/grokking-the-behavioral-interview?ref=ivans.io) course - Do at least 1 sample behavioral interview. ## Topics to brush up on - Know all the topics on [https://github.com/jwasham/coding-interview-university](https://github.com/jwasham/coding-interview-university?ref=ivans.io) ### System Design Interviews - [Anatomy of a System Design Interview](https://hackernoon.com/anatomy-of-a-system-design-interview-4cb57d75a53f?ref=ivans.io) - [How to Succeed in a System Design Interview](https://blog.pramp.com/how-to-succeed-in-a-system-design-interview-27b35de0df26?ref=ivans.io) - [System Design Primer](https://github.com/donnemartin/system-design-primer?ref=ivans.io) \- has good collection of solved problems. - [System Design Reference Sheet ](https://gist.github.com/vasanthk/485d1c25737e8e72759f?ref=ivans.io) - [System Design Template](https://leetcode.com/discuss/career/229177/My-System-Design-Template?ref=ivans.io) ## Problem Sets - [https://github.com/liuchuo/LeetCode-Top100](https://github.com/liuchuo/LeetCode-Top100?ref=ivans.io) - [https://github.com/fterh/leetcode-curation-topical](https://github.com/fterh/leetcode-curation-topical?ref=ivans.io) - [https://h1ros.github.io/posts/coding/leetcode-top-100-problem-selection/](https://h1ros.github.io/posts/coding/leetcode-top-100-problem-selection/?ref=ivans.io) - [https://medium.com/@koheiarai94/60-leetcode-questions-to-prepare-for-coding-interview-8abbb6af589e](https://medium.com/@koheiarai94/60-leetcode-questions-to-prepare-for-coding-interview-8abbb6af589e?ref=ivans.io) - [https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU](https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU?ref=ivans.io) ## Additional Resources - [Reddit Post with massive list of free resources](https://old.reddit.com/r/cscareerquestions/comments/e4v755/master%5Flist%5Fof%5Ffree%5Fresources/?ref=ivans.io) - [Google Questions](https://leetcode.com/discuss/interview-question/352460/Google-Online-Assessment-Questions?ref=ivans.io) - [Blind](https://www.teamblind.com/?ref=ivans.io) is a great anonymous community for getting information about companies and what sort of problems to expect. - [Huntr](https://huntr.co/?ref=ivans.io) is a modern job tracking kanban board tool, so that you don't forget about any company. ### Just Do It URL: https://ivans.io/just-do-it/ Last updated: 2021-04-15T17:52:13.000Z > Being a perfectionist is the antithesis of the Silicon Valley ethos. If you wait until it's perfect, you will never ship. Just send it. I've been working on living this mantra and leaning in towards shipping faster. This blog is one such example - I've been meaning to set this up for years, but always wanted to polish it more. At this point, I realize that I simply need to start publishing to share the nuggets of knowledge I have before they fade into obscurity. This echoes into other parts of my life as well. I was recently invited as a guest on two different podcasts. Initially I wanted to ask for a month of time to prepare. Just now, I booked a slot for this coming Wednesday because there's simply no reason to delay - it's only fear of failure and pre-emptive shame of embarrassment that holds me down. Time to live. What are you holding yourself back from right now? Go do it.