# 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
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…You Need A Budget (YNAB)Player FM](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.  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.  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.  ### 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:  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 TinlandJean Tinland](https://www.jeantinland.com/toolbox/simple-bar/?ref=ivans.io)  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:  Ubersicht - old indicators (left) New:  simple-bar screenshot (left) I now set my MacOS menu bar to automatically hide, and use this bar instead for all of my needs.  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.  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.