# Rasul Kireev's Website Content
This is a machine-readable version of all content from rasulkireev.com
Generated on: 2025-12-05T21:47:13.673Z
Total content pieces: 115
===
## Static Pages
# About Rasul Kireev
URL: https://www.rasulkireev.com//about
Type: static-page
Content:
# About Me
My name is Rasul.
I write code at [Readwise](https://readwise.io).
In my free time, I love to do more web dev. More specifically, I like to develop small and fun projects that help
me learn new technologies. You can see a list of my projects [here](https://rasulkireev/projects).
As a programmer, I learned to love writing. I try to write regularly, be it
tech tutorials or about [any other topic](/articles/). An extension of written
tech tutorials was to start making videos. For that, you can check
[my Youtube channel](https://www.youtube.com/channel/UC-r4_CjDp4n4O-36rnUe8gg).
I like to experiment a lot. Trying something new is a passion of mine. Some of my recent successes were with
brewing Kombucha, fermenting different foods, and baking bread. On the failure side of things, I can't keep
a plant alive for more than a week.
---
# Projects Built by Rasul Kireev
URL: https://www.rasulkireev.com//projects
Type: static-page
Content:
# Projects
I love to work on small and fun projects in my free time. These projects are the
[perfect vehicle for learning](https://www.nateliason.com/blog/self-education).
In addition to learning, these projects help me find like-minded people online.
## Current
- [TuxSEO](https://tuxseo.com) helps founders write SEO-friendly blog posts for their projects.
- [Built with Django](https://builtwithdjango.com) was built to highlight all things Django, mainly projects and makers.
- [TJ Alerts](https://gettjalerts.com) helps you stay on top of new jobs in the tech market.
- [Is It Keto](https://isitketo.org) helps you learn what foods are keto compliant.
- [Talent Leads](https://gettalentleads.com) helps startups find the Best Talent.
- [LevReview](https://levreview.com) was built to help local businesses get better reviews on Google.
- [OSIG](https://osig.app) is an Open Source Social Image Generator.
- [Cleanapp](https://cleanapp.dev) is an Anki for your site. Get a page a day to check for old style/content.
## Past
- [StatusHen](https://statushen.cr.lvtd.dev) Uptime Monitoring for your SaaS. Putting it on pause for now, might pick up later.
- [Awesome BASB](https://github.com/rasulkireev/awesome-basb) a collection of Awesome "Building a Second Brain" resources.
- [Cistercian Date Club](https://opensea.io/collection/cistercian-date-club) is an NFT collection that allows you to own a piece of history by owning a unique date.
- OTBChess - Community for people who like to play chess in real life.
- [Joplin Parse](https://github.com/rasulkireev/joplin-parse) is a Python library that helps you parse your Joplin notes in a format that can be used in a static site builder.
- [Kushim](https://github.com/rasulkireev/kushim) is an Open Source Life Management Tool I built as my first Django SaaS. This project didn't "get anywhere", but I learnt a ton! Still use some of the code I've written back then.
- [Tolstoy Newsletter](https://tolstoy-newsletter.herokuapp.com) is an automated newsletter that sends you a quote from Tolstoy Calendar every day.
- Fermentline Apparel for fermentation enthusiasts.
- Shop for Dev was a small shopify store where people could buy merchendise from popular open source projects, Ruby on Rails, for example. I always asked for permission to use the logos and shared profits with creators. Too bad, we didn't make a single sale.
- OSAR Journal. Second website I built (with Wordpress). The idea was to use Ray Dalio's believability principle on Research Papers. Essentially the idea is to open source all the research papers and let people vote on the best. Didn't work out.
- Your Guides to Lifeis the first website I've built (with Wordpress) after reading the 4 Hour Workweek. I wanted to write cool and interesting guides for different areas of life and charge people to read this. Not enough traffic and any Wordpress plugin costed big $$$, so decided to drop and focus on learning coding.
---
# What I Use - Tools & Setup by Rasul Kireev
URL: https://www.rasulkireev.com//uses
Type: static-page
Content:
# What I use
## Hardware
- Macbook Pro 16-inch, 2023, with Apple M2 Max and 32GB RAM
- Samsung Galaxy S22 Ultra
- Samsonite Backpack
- [Deeper Connect Air](https://shop.deeper.network/products/deeper-connect-air)
## Software (in no particular order)
- ❤️ [Readwise (+ Reader)](https://readwise.io/i/rasul)
- ❤️ [Buttondown](https://buttondown.email/refer/rasulkireev)
- VSCode
- PyCharm
- Firefox
- ❤️ Obsidian
- ❤️ TablePlus
- Loom
- ❤️ Orbstack (as a Docker Desktop replacement)
- Todoist
- ❤️ [Hetzner](https://hetzner.cloud/?ref=Ju1ttKSG0Fn7) (for all my server needs)
- ❤️❤️ [Caprover](https://caprover.com/) (to host and organize all my projects)
- ❤️ Alfred
- Raycast (barely)
- Keyboard Maestro
- iTerm2
- ❤️ Bitwarden
- Postgres (my db to go ❤️)
- ❤️ Metabase
## Langauge, Frameworks and alike
- ❤️ Django (all my side projects)
- Python
- Astro (for this website)
- React
- React-Native
---
# Rasul
URL: https://www.rasulkireev.com//favourites
Type: static-page
Content:
# Favourites
This is a list of my favourites.
## Feeds
I follow a lot of various blogs/feeds. Here are some of my favourites (meaning I read them immediately as new posts come out):
- [Ryan Kulp](https://www.ryanckulp.com/)
- [Of Dollars and Data](https://ofdollarsanddata.com/) by Nick Maggiulli
- [Joan Westenberg](https://www.joanwestenberg.com/)
- [Infinite Play](https://blog.nateliason.com/) by Nat Eliason
- [FlatNine Blog](https://flatnine.co/) by Mike Rubini
- [A Smart Bear](https://longform.asmartbear.com/) by Jason Cohen
- [Successful Software](https://successfulsoftware.net/) by Andy Brice
## Books
You can see most of the books I've read, rated and reviewed [here](/book-notes).
Some of the memorable options that I haven't reviewed (yet), are:
- The Da Vinci Code
- The Lost Symbol
- Angels & Demons
- Inferno
- The Harry Potter Series
## Movies
Same as with games, I haven't been watching movies much lately.
Here are some movies I have loved the most in the last decade:
- The Da Vinci Code
- Angels and Demons
- The Harry Potter Series
- National Treasure 1 & 2
- The Intern with Anne Hathaway and Robert De Niro
- Man from UNCLE
- Gentlemen with Matthew McConaughey
- Kingsman
- RED with Bruce Willis
- Knives Out
## Podcasts Episodes
This list hasn't been updated for a while (2-3 years ago?).
I have listened to quite a few episodes, since last update.
Although at the same time I haven't been listening much in the last 6 months, so muught just leave it as is.
-
))}
## Games
I haven't been playing games much lately. Between raising a toddler, work, side projects, and
[reading Great Books](/10-years-of-great-books), there is not much time left.
This makes me a little sad, since I love games.
Anyway, here are some games I have loved the most as a kid and a teenager:
- **FIFA 02-18**
This was pretty much the only game I played when i was a kid.
- **Command & Conquer Generals Series**
Probably game number 2 after FIFA that I played as a kid.
- **Age of Empires 2**, which I also played as a kid on my PS2.
I probably did poorly, but I had fun.
Fun fact: I played in English without knowing it.
**Terra Invicta**
[Recommended](https://x.com/patio11/status/1576157669437501440) by [Patio11](https://www.kalzumeus.com/) and I loved it.
I definitely only brushed the surface, due to time constraints, but the settings and the mechanics were cool.
**Europa Universalis IV**
I definitely did not play as intended... I started properly as an Ottoman Empire and at some point got tires and started using cheatcodes.
It was relaxing capturing enemy territory after work easily.
- **God of War: Ragnarok** - PS5
- **Spider-Man** - PS5
---
# Project Ideas - Free Startup Ideas by Rasul Kireev
URL: https://www.rasulkireev.com//project-ideas
Type: static-page
Content:
# Project Ideas
If you are a developer you konw this problem well: you have a million ideas for projects, but you don't have time to build all of them.
So, I decided that instead of having them collect dust in Todoist, Obsidian, Google Keep, Google Sheets, and god knows where else, I will write them down here and share them with you.
These are sorted by how much I like these ideas, but that is obvioulsy a changing matter.
Feel free to steal them!
If you have some comments, ideas or questions, please [let me know](mailto:kireevr1996@gmail.com)!
## Know Thy Self
Let user connect various sources to get all their comments, posts and thoughts. Load them into db as a centralized location for all their thoughts. This will allow to do fun stuff like:
- create a prompt for ai that will be hyper specific to that person this helping ask personal questions
- give recommendations to that person on various things: events , books, games, gifts
Additional notes
Sources:
Social Media Comments: Hacker news, Reddit
personal website sitemap
Twitter tweets
note taking apps (google keep, obsidian)
conversations with ai (chatgpt, claude, perplexity, typingmind)
save-it-later apps (reader, instapaper) to give insight into what type of stuff you read
## Smart Bookmarking Extension
Simple extension that can be triggered with a shortcut, allowing users to instantly bookmark. On the backend we parse, summarize, taggify and generate the embeddings for the page.
This will make it super easy to search and use the bookmarks in the future, plus will allow us to create interesting graphs and data for the user.
## Async Book Club
Place where people can discuss books asynchronously. One post per book, limitless discussions.
Additional notes
Tech Stack: https://www.discourse.org/
## ICP Suggester
A simple tool that helps you find various ultra niche ICPs for your business.
Additional notes
1. $1
2. $1
Return structured output that can be easily entered
into various online tools that help with prospecting.
---
# Ongoing Lists - Curated Collections by Rasul Kireev
URL: https://www.rasulkireev.com//lists
Type: static-page
Content:
# Ongoing Lists
I like to collect cool links and ideas from various places, and can never be bothered to make some posts out of them.
Instead of doing that I decided to create separate list pages that will be updated as I run into something interesting.
- [Favourites](/favourites)
- [My Project Ideas](/project-ideas)
- [Free Books and Courses](/free-books-and-courses)
---
# Rasul Kireev - Software Engineer & Digital Garden
URL: https://www.rasulkireev.com//
Type: static-page
Content:
# Hey, I'm Rasul
I'm a Software Engineer. This website is my Digital Garden, a collections of things I've learnt and created over the years.
I like to
[read](/book-notes/),
[write](/articles/),
[code](/tutorials/),
and do a lot of
[other things](/projects).
You can read more about me,
[here](/about).
Here is a good place to start, when it comes to this site:
My Favourites
My Project Ideas
- Feel free to steal them!
Free Books and Courses
- I found online over the years.
'Economical Writing' Book Review
- Most read book review on my site.
Managing a Django Project with Poetry
- Most read tutorial on my site.
10 Years of Great Books
- Most read post on my site.
---
## Content Collections
# Burnout is about moving forward
URL: https://www.rasulkireev.com/burnout-momentum/
Type: article
Date: 2025-11-17
Description: Feeling burned out? The solution isn't rest—it's momentum. Making progress in any area of your life can break the burnout cycle and get you moving forward again.
Tags: Developer Life, Burnout, Productivity, Mental Health, Work-Life Balance
Content:
import Quote from '../../components/Quote.astro';
A body in motion tends to stay in motion.
**TL;DR**
- If you feel burnout, try to move forward.
- You have many dimensions to your life where you can make progress.
- Any progress will make you feel better and reduce your burnout.
- It will work best, if you progress in the area of your life that is stuck the most,
or that is most important to you at the moment.
---
As many other developer I'm prone to the veeling of burnout.
I run a few [projects](/projects), I work at [Readwise](https://readwise.io/), I have a family and a small toddler. I have enough things that happen in my life.
Right now I'm going through a period where everything stopped moving at the pace I'm used to:
- My wife got a little sick, so I spent some time taking care of her, of our son.
- I was working on a feature at Readwise that was a little over my head performance wise. SO it has been going through the process of review and rewrites for a couple of weeks now.
- I'm working on updating [TuxSEO](https://tuxseo.com/) generation reliability, which is much harder then I relized.
- My inlaws are visiting us, so I have to find new places to work from.
This has been going on work 3 weeks now.
This morning I felt burnout the most. I did not want to do anything (work). I pushed through and got started...
And suddenly, things started to flow again. Not becuase all those things got fixed, they didn't. Just because I shipped one small update at work, related to that project I mentioned above. Then another, then another.
Suddenly I don't feel so burntout anymore. Just because things started moving along.
So, my suggestion to you is this. If you feel burnout, try to move forward. You have many dimensions to your life where you can make progress. Any progress will make you feel better and reduce your burnout. It will work best, if you progress in the area of your life that is stuck the most, or that is most important to you at the moment.
"most important" can be work, no shame in that. On a grander scale of things, family is the most important, of course. But, there is no shame admitting that getting unblocked at work, is more important to you in that second. All the other things will get better to if you approach that part of your life first.
---
# Cleanapp and Fast Shipping
URL: https://www.rasulkireev.com/cleanapp/
Type: article
Date: 2025-10-21
Description: Building and deploying Cleanapp in just a few hours using Django CookieCutter starter and AI-assisted coding. How the right tools and approach can turn an idea into a live product incredibly fast.
Tags: Django, SaaS, Indie-Hacking, Productivity, Development
Content:
Yesterday, I was reading [my feed](https://readwise.io/i/rasul) and ran into [Justin Duke](https://jmduke.com/)'s [post](https://weeknotes.buttondown.email/archive/mise-incidents-anki-dogfooding-the-api/) from his [Weeknotes newsletter](https://weeknotes.buttondown.email/). In it, he had an interesting paragraph:
> I want a service that every morning sends me a random entry from my sitemap so that I can go through and review it for outdated copy or screenshots.
This was supposed to help with pages containing old content, old screenshots, or anything outdated. I thought it was an interesting idea, and more than that, it was a simple idea to implement.
So I got to work.
This morning, I quickly got my [Django SaaS Starter](https://github.com/rasulkireev/django-saas-starter) ready to generate the project.
After a couple of hours of coding, it was live on [cleanapp.dev](https://cleanapp.dev/), ready for people to check out. I was very surprised by how quickly I was able to get it running.
Yes, the app is super simple, so the coding part did not take too long. But I also bought the domain, hosted it, set up CI/CD to push to my self-hosted server using CapRover, setup Mailgun and Emai Alias. Everything from start to finish... Logs, Sentry, db, you name it, everything.
I'm very thankful to my past self for creating and updating the Django SaaS Starter.
Now on to AI. It was also a lot of fun to use it for this project. Mostly, I've been working on legacy projects where there's a lot of existing code, and AI isn't very good with that. But here, with new code, UI (the part I hate most), logic, models were done under an hour.
Granted, I didn't do the "standard vibe coding" approach where I prompt AI to just build the app. I worked bit by bit, knowing what I needed to update. With this approach, it's been a lot of (reliable) fun. The sheer amount of good (by my standards) code that I was able to ship today is mind-boggling. Thank God for AI, it just makes stuff so quick and so enjoyable.
I really don't understand people who say that using AI to ship code isn't fun. I guess I'm not a purist who writes code for code's sake. I write it for the end result, and getting this end result has been very, very enjoyable.
Side note: The reason I was able to do all this is because starting today, my son began going to kindergarten. Usually I spend my mornings with him, but today I got three to four hours to myself while he was there. I was able to accomplish all of this in that time.
Given that he's probably going to continue going, I can't wait to make more progress on my other apps, mainly [TuxCEO](https://tuxseo.com), which I'm really hoping to grow to at least some MRR. Right now, all of my projects are at zero MRR.
So stay tuned. I'll try to make all of this public, and I hope to share more updates soon.
---
# There is Always Another Way
URL: https://www.rasulkireev.com/there-is-always-another-way/
Type: article
Date: 2025-09-03
Description: Rules and limitations can be overcome through creativity and finding alternative categories or approaches.
Tags: Problem-Solving, Creativity, Marketing, Life-Lessons
Content:
I was reading "The 22 Immutable Laws of Marketing" this week and this sentence stood out to me.
> If you didn’t get into the prospect’s mind first, don’t give up hope.
> Find a new category you can be first in. It’s not as difficult as you might think.
It was in the "[The Law of the Category](https://ericsink.com/laws/Law_02.html)" stating that if you want your business to succeed, you need to be the best or the first in a category. If you can't be the first, you just need to create another category.
I'm still going through the book, but it seems that the world "law" is used sparringly here. Yes, these are strict rules, but all of them have an interesting workaround that can be exploited.
I'm sure this is the same with life. There are rules and laws that prevent you from doing something or becoming something. But all of these [rules can be "broken"](https://julesh.com/2017/08/16/breaking-the-rules/) if you use your imagination and creativity.
The simplest example that comes to mind is that with a Russian citizenship (which I have) [you can't apply for a Dutch visa](https://www.netherlandsworldwide.nl/visa-the-netherlands/schengen-visa/apply-russian-federation), which I needed to travel to Curacao to meet with my team. I could give up, or I could realize that you can enter on a different Schengen visa. Yes, the travelling would take much longer, but at least I achieved the desired goal, despite the rules.
This may be a silly example... but I urge you to think about your life and remember times where you succeeded, despite the circumstances, despite the rules. Share them with [me](mailto:me@rasulkireev.com)and I'll add the to this post.
To take this point further, some of the most interesting ideas come from restrictions and limitations:
- Dr. Seuss wrote the classic children's book 'Green Eggs and Ham' after being challenged to produce a book using no more than fifty different words.
- Alfred Hitchcock filmed "Rope" to appear as one continuous shot using only 10-minute film reels
- Some of the most famous and popular games in the world (Tetris, Pac-Man) came to be due to severe limitation in processing power available.
You get the gist.
Maybe you shouldn't just find another way when you run into a problem, maybe you should seek these problems out to find another way!
Marcus Aurelius probably said it better than me in his "Meditations":
> The impediment to action advances action. What stands in the way becomes the way.
---
# Start Small, Stay Small
URL: https://www.rasulkireev.com/start-small-stay-small/
Type: book
Date: 2025-08-11
Description: A practical, market-first playbook for developers to bootstrap software startups without external funding. Walling stresses niches, marketing over features, and measurable validation (keyword research, AdWords tests). Build a high-converting sales site, grow an email list, price with tiers, and use VAs/outsourcing and documented processes to scale. Set clear goals (e.g., first $500 MRR), iterate quickly, and focus on verticals where you can be the best.
Author: Rob Walling
Tags: Bootstrapping, Micropreneur, Niche Marketing, Vertical SaaS, Marketing, Email Marketing, Sales Websites, Conversion, Pricing, SEO, AdWords, Product-Market Fit, Launch Strategy, Outsourcing, Virtual Assistants, Time Management, Process, Entrepreneurship, SaaS, Lean Startup
Content:
## My Thoughts
This book is filled with actionable, direct suggestions on how to ship a product that will generate revenue. It helps you avoid non-income-bearing ideas that waste time by forcing you to think about earnings as early as possible. While I haven't successfully applied these ideas yet, it feels as though following this advice strictly would inevitably lead to earning money.
## Summary
Start Small, Stay Small is a practical, execution-first playbook for developers who want to launch and grow profitable software businesses without external funding. Rob Walling argues that marketing beats code in determining success: start with a clearly defined, underserved niche, validate demand before building, and focus on building an audience and a sales system that converts. The book emphasizes a market-first approach, lightweight testing via keyword tools and AdWords, and building a minimum viable product while rigorously managing time, scope, and priorities.
Walling lays out a complete operating system for a micro SaaS: set written goals (e.g., first $500/month profit), value your time, outsource early, document processes, and channel energy into Top Shelf marketing (email list, content, SEO). He details how to craft a high-converting sales website (capture emails first, clear hook, single CTA, simple pricing tiers, guarantees), nurture leads with autoresponders, earn focused traffic, and build compounding assets. Finally, he shows how to iterate, measure, and decide whether to double down or start over.
## Learnings
- Adopt the entrepreneur mindset: write goals, make public commitments, create accountability; aim for the first $500/month profit milestone.
- Market first, product second: failure most often comes from building something no one wants.
- Choose a tight niche (preferably “warm”) to reduce competition, increase relevance, and simplify marketing and feature scope.
- Validate demand before coding: use keyword tools, competition scores, and short AdWords tests to measure real search volume and interest.
- Product Success Triangle: product, market, execution—early effort should prioritize market and execution.
- Ship a 200–400 hour MVP; trim features aggressively to reach launch faster and learn sooner.
- Value your time; outsource/VA repetitive and low-value tasks; delay automation until the process proves its worth.
- Document repeatable processes to enable delegation, reduce mistakes, and increase the startup’s eventual sellability.
- Focus beats busyness: avoid “fake work” (excess reading/research); take action notes; single-task; either work or truly rest.
- Build compounding marketing assets: an email list, a blog/podcast/video presence, and organic search visibility.
- Use PPC as a learning tool (keyword discovery and validation), not a permanent growth crutch.
- Optimize for quality traffic: small, highly targeted placements convert better than broad “big press” spikes.
- Sales website rule: don’t try to sell on first visit; primary goal is email capture via trust, relevance, and a clear reward (lead magnet, contest, course).
- Core site principles: one primary CTA per page; everything within two clicks; strong hook; buttons that look clickable; visual over text where possible.
- Include core pages: Home, Tour, Testimonials, Pricing/Purchase, Contact; keep the home page simple with a single next step.
- Pricing: anchor to value and market norms; prefer three tiers; lean higher; end prices in 7/8/9; consider support/maintenance fees for one-time licenses.
- Offer a free trial or a strong money-back guarantee to reduce friction and increase conversions.
- Email strategy: build an autoresponder series; maintain relevance; optimize send timing and subject lines; mix education with periodic offers.
- SEO and links: prioritize high-quality, relevant links; vary anchor text; build consistently over time; leverage directories, niche sites, competitor backlinks, alerts, articles, testimonials, and ethical link opportunities.
- Iterate and test relentlessly (copy, pricing, funnels); accept uncertainty, fail fast, measure, and improve.
- Decide to grow or reset based on data; track key metrics from day one to improve operations and preserve optionality for a sale.
---
# Growth Levers and How to Find Them
URL: https://www.rasulkireev.com/growth-levers/
Type: book
Date: 2025-08-10
Description: A practical playbook for finding outsized growth by shifting from optimization to discovery—map the customer journey (Struggle → Search → Selection), build a growth model (North Star, key drivers, rate‑limiting step), and run hypothesis‑driven sprints to do fewer, bigger things that truly move the needle.
Author: Matt Lerner
Tags: Growth, Startups, Product Management, Marketing, Experimentation, Customer Development, Jobs To Be Done, Data-Driven, Business Strategy, Lean Startup
Content:
## My Thoughts
I definitely liked the book. I read it with my personal projects in mind and how to grow them, but it wasn't super applicable for me because my projects are in very early stages—no revenue, no customers, no employees. Although a few pieces of advice were definitely useful to consider, they weren't directly applicable to my current situation.
At the same time, since I work at Readwise, and this book is definitely more suited for a company like this, it was useful for thinking about growth levers for Readwise specifically and the frameworks that could be beneficial. This is especially relevant because I work as a growth analyst there, so thinking about applying some of those concepts would be very valuable.
I have yet to implement any of these ideas since I was using Readwise to read the book and made numerous highlights that I can revisit and analyze—which should be very useful for the company. I think in general, if any of my personal projects do become successful in the future, this book would prove quite valuable.
## Summary
Growth Levers and How to Find Them argues that early-stage growth comes from a tiny set of outsized levers, not from doing lots of small things a bit better. Startups win by becoming instruments of discovery—learning faster who the right customers are, what value they want, where to reach them, and which few tactics drive step-change outcomes. Effort and complexity don’t pay; outcomes and insight do.
Lerner’s system has four parts: understand the customer journey (Struggle → Search → Selection), map a growth model (North Star Metric, key drivers, levers, and the rate-limiting step), run rapid growth sprints (hypothesis-driven experiments that favor big learning), and shift culture from optimization to discovery. Do fewer, bigger things; align the company on a simple dashboard; and expect a non-linear path of “nothing…nothing…bang!”
## Learnings
- Outcomes over effort; do fewer, bigger things that move the needle.
- Early stage: discovery for step-changes beats optimization for marginal gains.
- Map the journey (Struggle → Search → Selection) and match tactics to stage.
- Use "Jobs to be Done" interviews with recent buyers/substitutes to uncover triggers and anxieties.
- Anchor on a simple, absolute North Star Metric that rises with delivered customer value and revenue.
- Define key drivers as outcome metrics across the funnel; avoid counting activities.
- Turn drivers into levers with outcome targets; track via a simple, shared dashboard.
- Find the rate-limiting step—if doubling it would double the business, focus there.
- Prioritize by potential impact, learning value, effort, strengths, and feedback loops.
- Run growth sprints: score (Key driver, Impact, Effort), test quickly, learn, repeat.
- Write falsifiable hypotheses (risky assumption → experiment → predicted metric change → business decision).
- Minimize complexity; progress is non-linear (“nothing…bang”)—if you’re learning, you’re on track.
---
# February 2025
URL: https://www.rasulkireev.com/february-2025/
Type: article
Date: 2025-03-07
Description: Bringing back monthly reviews. February 2025 was pretty good.
Tags: 2025, February, Review
Content:
Looking back at February, I'm struck by how much I've settled into a sustainable rhythm between my work at Readwise, my side projects, and family life is what I wish I could say.
It's been hard. I'll share more below, but for Readwise work it felt a lot of the time that I just have a shitty streak where I can't get many things done. A lot of new things are flying at me and spending considerable amount of time on each, without succeeding in the end is bringing me down a bit.
Personal work is also lacking a bit. Though there are things to celebrate, in general direction it feel like I am a little lost and am not sure how to proceed.
Family wise, it often feel like I could be dedicating more time to my wife and my son.
So each part feels like it is not getting enough attention and success from me.
But then, at the same time, all of these are more or less good, nothing crazy bad is going on. Weird thoughts, weird state.
This month was about finding balance while still making progress on multiple fronts.
## Major Themes
### Balancing Pragmatism with Exploration
This month, I juggled practical work tasks with creative exploration. At Readwise, I found myself diving deep into debugging issues while simultaneously exploring new AI tools in my side projects. I'm learning that both sides of this coin are important - the meticulous problem-solving builds career skills, while the creative exploration feeds my passion.
### Documentation and Reflection
I've developed a strong habit of daily logs. Thanks to AI I have a strong feeling that those logs would never be lost. I can just feed them all into an LLM model and it will help me solve a problem I'm having with the context of my own thoughts. Need to find a specific event/thought? Boom, done. Need help summarizing your week/month? Boom, done. Just this simple thought of it being useful and not lost has been a game changer to keeping this habit stick. I wonder if there is a way to integrate this into other parts of life...
### Embracing AI as a Multiplier
This month reinforced my belief in AI as a force multiplier. From updating Built with Django to enhancing [SEO Blog Bot](https://seoblogbot.com) with PydanticAI, I'm seeing firsthand how these tools can accelerate development. As I reflected on February 3rd: "I will be so stupid if I don't take action and leverage the usefulness of AI now. It's not about the hype. What matters is the speed revolution."
### Family Milestones
Amidst all the work, there were beautiful family moments. Theo's potty training success was a highlight, and I cherished our morning routines together. These moments remind me why finding work-life balance matters so much. A huge personal win on this front is the discovery of "Hunt, Gather, Parent" book. Game. Changer. Thanks to [Johannes](https://github.com/jhlabs) for recommending it. It further improved the relationship I have with my son. I'm now recommending it to aaaaaal parents.
## Readwise Work Highlights
### Debugging and System Improvements
A significant portion of my work involved investigating and fixing user-reported issues. While not always glamorous, I recognized the importance of this skill: "Having the ability to quickly debug and figure out what's going on and fix it is very important, because most of the work of a programmer is actually maintaining code." Yet at the same time it is a hard thing to do, not only from a skill point of view, but from a psychologial (especially if you were not the one to write the code in the first place). The feeling of spinning your own wheel and going into a never ending rabbit whole of code is hard. If you succeed the light at the end of the tunnel feels great. If you don't, it just brings moral down. I was a little in the latter camp this month.
Key accomplishments included:
- Have been setting up and fixing all [Wiseup](https://wiseup.readwise.io/) issues.
- Improved Twitter integration logs and diagnostics. Didn't really ship any fixes, but just got a much better inderstaing of all the moving parts.
- Fixed some smaller bugs, like Enhanced Send to Kindle functionality and Export Integration bugs.
- Created better NewRelic dashboards for monitoring, as well as improving our logging in general.
## Personal Life Highlights
### Side Projects
#### Built with Django
- Added pagination and search functionality
- Integrated PydanticAI and Gemini to analyze web pages
- Fixed migration issues and storage problems
- Added more featured projects to the directory
#### SEO Blog Bot
This became my most active side project, with numerous improvements:
- Added a cheaper pricing tier to attract more customers
- Implemented PydanticAI for better content generation
- Added like/dislike functionality for feedback
- Refactored code to make future updates easier
- Improved error handling for scanned projects
### Content Creation
- Published blog posts including "Throw Away Dead Code" and "Getting Real"
- Created my first video demo for SEO Blog Bot and shared it on social media
- Started using AI to summarize books like "How to Get Rich" by Felix Dennis
---
# Hunt, Gather, Parent
URL: https://www.rasulkireev.com/hunt-gather-parent/
Type: book
Date: 2025-03-07
Description: I am a huge fan of this book. This is **the** book I'm recommending to all parents. I believe that this book can make the whole world a better place just by helping parents figure out how to have fun with their kids and not be all tires and depressed.
Author: Michaeleen Doucleff
Tags: Parenting, Anthropology, Child Development, Cross-Cultural Studies, Indigenous Cultures, Maya, Inuit, Hadzabe, Non-Western Parenting, Attachment Parenting, Alternative Education, Unschooling, Minimalist Parenting, Positive Discipline, Emotional Intelligence
Content:
## My Thoughts
A lot of thought and learning below. To set the right tone, I'll start by saying that I am a huge fan of this book. This is **the** book I'm recommending to all parents. I believe that this book can make the whole world a better place just by helping parents figure out how to have fun with their kids and not be all tires and depressed.
Some points below might seem a little unstructured, but I'm just brain vomitting things here. I am such a huge fun of this book that I just want to share all the things it changed in my life.
I like how the author shared her problems with her kid and how her experiences and learning have helped to deal with tough moments. Actual practical stories that are very relatable. Maybe they would be less relatable for other parents and hence less helpful, but I somehow doubt it.
## How It Affected Me and My Son
Every morning when Theo wakes up we start with him doing his own breakfast, which usually means:
- moving the chair to the fridge and getting all the butter there is (the more the better), thermos with prepared oatmeal and a bottle of milk
- moving the chair to the counter (he is usually lazy to do it by himself and asks me, i oblige) and start preparing the plate, which means, trying to cut and eat as much butter as possible, while I put the oatmeal in his plate.
- put the plate with oatmeal and butter into microwave and press all the buttons
- once it is hot enough, pour the cold milk and stir. by the time it is time to stir he is usually in his sit and ready to eat, so i do the stirring
this ritual takes time, but it is fun, makes the time go faster and wakes me up. and there is not much that can go wrong:
- milk spilling?... didn't happen once
- butter overeating. oh well, he is not going to die from that.
after eating for a bit, he goes to play, usually with his cars. he does try to involve me, but I refuse under the pretense of drinking coffee and reading. sometime it works, sometimes it doesn't. and by "it works" i mean he just plays by himself. it is usually a rare occurence, but after using the tips and tricks from the book it happens more and more (the tip i'm referring to is just ignoring him as i like to put it, though it is descirbed below in a more sophisitcated manner).
This is just one example of how I spend time with him.
There are many others, but the point is that we don't really do kid activities any more, but try to do all the stuff together. I even let him come to my "home office" while I work, while before I would shut the door. Yes he comes more often and yes he is trying to interrupt or use the computer. But, again, this is slowly improving with consistent approach of saying that you can be nearby and ply by yourself and we can be together in the same room. It definitely feel much nicer, than just locking myself in.
Plus, he helps me by keeping me acountable. Can't be setting a bad example of just being on social media.
All of this to say it is not easy, but it is incredibly rewarding. Changing the way I coomunicate with my son just changes the whole dynamic. He is no longer a kid, but an adult that just has trouble communicating sometimes and requires a little more attention.
I've stopped yelling altogehter. Before I would sometimes raise my voice. Now I just don't do it. Not because it is bad for your kid or anything like, but becuase this book helped me realize it is just useless. It is not helping you, nor your kid. This has had a profound effec too. He was not a very hysterical to begin with, but these screaming matches have become almost non existent. And when they do appear you know they are about something real.
## Book Analysis
### Unity Statement
By examining parenting practices in three diverse cultures, Doucleff reveals how Western parenting norms, which emphasize control, isolation, and constant stimulation, often undermine children's innate drive to cooperate, learn independently, and regulate their emotions, and offers an alternative approach based on togetherness, encouragement, autonomy, and minimal interference that fosters children's natural development into confident, capable, and well-adjusted individuals.
### Problems Author is Trying to Solve
How can parents in Western cultures raise children who are helpful, cooperative, emotionally intelligent, and confident, while minimizing conflict and stress for both the child and the parent?
### AI Prompt Ideas
- Age-Appropriate Chore Ideas
Prompt: "My child is [...] years old. Suggest a variety of household chores that they can help with safely, considering their age and abilities. Focus on tasks that promote a sense of helpfulness and contribution to the family."
- Teacheable Storytelling
Prompt: "Generate a story to teach my child about [ Desired Value or Lesson ]. Use [ Characters/Theme based on child's interests ] for the characters and setting. The story should highlight the importance of [ Desired Value 1 ], [ Desired Value 2 ], and [ Desired Value 3 ]."
## Learnings
* The isolated nuclear family is a modern anomaly, not the historical norm. Children evolved to be raised within multi-generational communities with diverse caregivers. This isolation places undue burden and stress on modern parents.
* Much of modern parenting advice stems from 18th-century manuals written for foundling hospitals, not scientific study or traditional wisdom. This advice often prioritizes efficiency and control over child well-being.
* Western parents overuse praise and feel pressured to constantly stimulate their children. This can create anxiety, competition between siblings, and an unhealthy dependence on external validation.
### Alternative Approaches from Traditional Cultures
* **Maya (Mexico):**
* **Acomedido (Helpfulness):** Children have an innate desire to help. Maya parents foster this by including children in chores from a young age, patiently teaching them, and acknowledging their contributions.
* **Cooperation:** Maya parents prioritize family togetherness over child-centered activities. Children learn by observing and participating in adult tasks, fostering cooperation and a sense of belonging.
* **Intrinsic Motivation:** Maya parents minimize praise and punishment, focusing instead on fostering intrinsic motivation by connecting with their children, respecting their autonomy, and allowing them to feel competent.
* **Inuit (Arctic):**
* **Emotional Intelligence:** Inuit parents prioritize calmness and avoid yelling at children. They model emotional regulation and teach children to control their anger through gentle guidance and storytelling.
* **No Arguing:** Inuit parents avoid arguing with children, viewing it as unproductive and disrespectful. They use tools like "the look," consequence puzzles, and questions to encourage children to think and learn.
* **Hadzabe (Tanzania):**
* **Autonomy:** Hadzabe parents grant children significant autonomy, allowing them to explore, play freely, and learn through experience. This fosters confidence, self-reliance, and reduces anxiety.
* **Alloparenting:** Hadzabe children benefit from a network of caregivers beyond their parents, including older siblings, other children, and community members. This social support network protects against depression and promotes well-being.
### TEAM Parenting
Michaeleen synthesizes these learnings into the TEAM parenting approach:
* **Togetherness:** Prioritize family togetherness over child-centered activities.
* **Encouragement:** Encourage and guide children, rather than forcing or controlling them.
* **Autonomy:** Grant children age-appropriate autonomy to foster confidence and self-reliance.
* **Minimal Interference:** Intervene only when necessary, allowing children to learn through experience.
### Everyday Parenting Tools
#### Tools for Taming Tantrums
* **Energy:** In the calmest, lowest-energy state possible, simply stand near the child, silently, and show them that you are close by, supporting them.
* **Physicality:** Reach out and gently touch the child on the shoulder or offer a hand. Sometimes a soft, calm touch is all a child needs to calm down.
* **Awe:** Help the child replace their anger with the emotion of awe. Look around and find something beautiful. Tell the child, in the calmest, most gentle voice, “Oh wow, the moon is so beautiful tonight. Do you see it?”
* **Outside:** If the child still won’t calm down, take them outside for some fresh air. Gently lead them outside or pick them up.
#### Tools for Changing Behavior and Transmitting Values
* **The look:** Take whatever you want to say to a misbehaving child and channel it into your facial expression. Open your eyes wide, scrunch up your nose, or shake your head. Then shoot the look over to the child.
* **Consequence puzzle:** Calmly state the consequences of the child’s actions, then walk away (e.g., “You’re going to fall off and hurt yourself”).
* **Question:** Instead of issuing a command or instruction, ask the child a question (e.g., “Who’s being mean to Freddie?” when a child hits a sibling, or “Who’s being disrespectful?” when a child ignores a request).
* **Responsibility:** Give a misbehaving child a task to do (e.g., say to a whining child in the morning: “Come over and help me make your lunch”).
* **Action:** Instead of asking a child to do a task (e.g., leave the house), just do the task yourself. The kid will follow.
#### Tools for Sculpting Behavior
##### Stories
* **Tell a story from your childhood:** Explain how you and your parents handled a mistake, problem, or misbehavior. Were you punished? How did you react?
* **Put on a puppet show:** Get a stuffed animal or a pair of socks to act out the consequences of the child’s behavior and how you would like them to behave. Have them play one of the characters in the show.
* **Bring the problem into the play zone:** Tell the child, “I noticed we’ve been arguing a lot about homework [or whatever problem you have]. Let’s play a game about it. Who do you want to play? Me or you?” Then reenact in a fun way what happens during the argument. Don’t be afraid to exaggerate and act outrageous. The goal is to laugh and release tension built up over the issue.
* **Use a monster story:** Create a monster that hides out near your house. Tell the child the monster is watching and if the child misbehaves in a particular way, the monster will come and take them away (for only a few days).
* **Bring an inanimate object to life:** Have a stuffed animal, piece of clothing, or other inanimate object help you coax a child to complete a task. Have the object do the task itself (e.g., brush a stuffed animal’s teeth) or have the object ask the child to do a task (e.g., have a toothbrush ask the child to brush their teeth).
##### Dramas
* **Stage a drama:** In a peaceful, calm moment, stage a reenactment of what happened when the child misbehaved. Typically the performance starts with a question, tempting the child to do something she knows she shouldn’t. For example, if the child hits others, the mom may start a drama by asking, “Why don’t you hit me?” Then the child has to think: “What should I do?” If the child takes the bait and hits the mom, the mom doesn’t scold or yell, but she performs a reenactment of what happened, using a slightly playful, fun tone. She acts out the consequences. “Ow! That hurts!” she might exclaim. The mom continues to emphasize the consequences by asking follow-up questions to the child. For example: “Don’t you like me?” or “Are you a baby?” These questions continue to trigger thought. They also link the desired behavior with maturity and the undesirable behavior with infancy.
* **Bring the problem to the play zone:** Wait for a calm, peaceful moment during the day (*not* at the time of the problem) and say something like this to the child: “Hey, Rosy, I’ve noticed there’s been a lot of arguing around bedtime. Let’s play a game about that.”
* **Put on a puppet show:** Take two stuffed animals—or even a pair of socks—and make them into characters who aren’t related to you and your child. This approach will help ensure the child feels relaxed and not like they’re being disciplined or lectured. Then set the scene, act out the problematic activity, and then act out the consequences of that behavior.
---
# Getting Real
URL: https://www.rasulkireev.com/getting-real/
Type: book
Date: 2025-02-22
Description: Building software doesn’t need a large team, huge budget, or a perfect plan up front. Products should do less and work smarter by focusing on solving real problems and evolving with user feedback. The key is to create sustainable software by making smart, incremental improvements that truly meet users’ needs.
Author: 37 Signals
Tags: Software Development, Entrepreneurship, Product Management, Startup, Web Applications, Minimalism, Business Strategy, User Experience, Agile, Project Management, Marketing, Customer Support, Software Design, Lean Startup, Bootstrapping
Content:
## My Thoughts
One of my favorite books. So action packed, relevant and appliacable. I have read it 3 times now. And will probably re-read it again in the future.
If you want to create your own business this is a must read. It doesn't matter if you can code or not. This books will be useful for any type of person.
The coolest thing is that it is still mega applicable even with all the recent advances in AI.
## Problems with summarizing this book
I read all my books in Readwise Reader. So, my reading flow involves reading the full text, and taking highlights to remember the things that stood out the most to me. Then, go over those highlight and write a summary. Recently I have been integrating AI into this flow by helping me sinthesize my highlights into a summary, in different ways.
I'll write a separate post about this in detail. The reason I metnion this here is that that flow is nearly impossible for this book. Getting Real is so dense that it is hard to compress further. I heard DHH mention somewhere that in writing this book they have thrown out a lot, and it shows!
## Learnings
- Build less than your competitors - solve simple problems well rather than tackling complex ones
- Solve problems you personally experience - this ensures genuine passion and understanding
- Self-fund if possible - constraints drive innovation and force faster market validation
- Fix time and budget, but keep scope flexible - better to make half a product than a half-assed product
- Focus on a core target market - don't try to please everyone
- Make opinionated software with a clear vision - take a stance and stick to it
- Say no to most feature requests - only build what's absolutely essential
- Launch quickly and iterate based on real feedback - don't wait for perfection
- Keep your code and features simple - complexity grows exponentially with each addition
- Design the interface first - it's cheaper to change design than code
- Write good copy - every word in your interface matters and is part of the design
- Skip long functional specifications - they rarely match the final product
- Give something away for free to attract customers
- Make signup and cancellation processes painless - avoid contracts and tricks
- Build buzz through blogs and preview releases rather than expensive advertising
- Let customers help each other through forums and community features
- Be transparent about problems and quick to communicate issues
- Keep showing progress after launch through regular updates and blog posts
- Don't hide behind "beta" labels - commit to quality from day one
- Prioritize bugs - not all issues need immediate fixing
- Stay lean as you grow - resist feature bloat and unnecessary complexity
- Focus on execution - ideas are common, but great execution is rare
- Maintain a balance between design, code, promotion, and support - weakness in any area can sink the product
---
# Throw Away Your Code
URL: https://www.rasulkireev.com/throw-away-dead-code/
Type: article
Date: 2025-02-18
Description: Discover why removing dead code is essential for maintainable software, better debugging, and team productivity. Learn practical strategies for identifying and eliminating unused code.
Tags: Software Development, Code Quality, Clean Code, Developer Tips, Best Practices
Content:
> Source code is read many, many more times than it's written, so it's usually worth some effort to help make the code more human-readable.
This quote from [Pragmatic Thinking and Learning](/pragmatic-thinking-and-learning) resonated with me during a recent experience at Readwise.
Last week, while investigating user reports about tweet saving issues, I stumbled upon two functions: pull_tweet_v1 and pull_tweet_v2 (simplified for brevity). As a new engineer, I naturally gravitated toward v2, assuming newer meant better. After some time, I learned from a colleague that v2 was actually deprecated - Twitter's API changes had forced us back to v1, but the obsolete code remained, silently misleading anyone who encountered it.
This experience highlighted a common challenge in software development: we form [emotional attachments to our code](https://www.codereadability.com/emotional-attachment-to-code/). Every function represents hours of effort, making it surprisingly difficult to hit that delete key. We keep code around "just in case" or because "[we spent so much time on it](https://www.nateliason.com/blog/option-not-obligation)." But this attachment comes at a cost.
As 37 Signals notes in Getting Real:
> You'd think that twice as much code would make your software only twice as complex. But actually, each time you increase the amount of code, your software grows exponentially more complicated. Each minor addition, each change, each interdependency, and each preference has a cascading effect.
Dead code isn't just harmless [digital clutter](https://paulstamatiou.com/digital-clutter) - it's a silent productivity killer. When debugging, every line is a potential suspect, and dead code creates false leads that waste precious time. New team members must wade through [unnecessary complexity](https://michaeljennings.blogspot.com/2011/08/unnecessary-complexity.html), trying to understand relationships between components that no longer matter.
The solution? As [Getting Real](/getting-real) suggests: "The way you fight this complexity is with less software. Less software means less features, less code, less waste." When you find dead code, document what you're removing and why. If there's valuable logic worth preserving, capture it in documentation. Remember, Git history is always there if you need to reference something later.
Making this a regular practice isn't easy - it requires overcoming our natural instincts to hold onto things we've created. But like cleaning out an old closet, the result is always worth it. The only real price is a small hit to our ego, and that's a price worth paying for the sake of those who'll work with our code in the future - including our future selves.
---
# Create Smarter & Better Git Commits with AI
URL: https://www.rasulkireev.com/commit/
Type: tutorial
Date: 2025-02-03
Description: Learn how to automate Git commit messages using AI and Bash scripting. This tutorial shows you how to create meaningful, consistent commits with minimal effort.
Tags: Git, Bash Scripting, AI, Developer Tools, Automation, Python, DevOps
Content:
How many times have you stared at your terminal, trying to craft the perfect git commit message? Probably not much.
I know what you have done often though...
```bash
git add --all
git commit -m "fix"
git push
```
If you are a super lazy person like, me you maybe even created a git alias for that and only have to do:
```bash
git cm "fix"
gp
```
Today I decided to change this forever. I decided to be the most thoughtful person in he world and think about my future self an anyone who is going to search for my code in the future...
Enter `commit`.
## 🙏 The Script
```bash
#!/bin/bash
check_git_repo() {
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
exit 1
fi
}
check_changes() {
if [ -z "$(git status --porcelain)" ]; then
exit 0
fi
}
generate_commit_message() {
local diff_content=$(git diff --cached)
local files_changed=$(git status --porcelain)
echo -e "Files changed:\n$files_changed\n\nChanges:\n$diff_content" | \
llm -m anthropic/claude-3-5-sonnet-latest \
"Generate a git commit message for these changes. The message must have:
1. TITLE LINE: A specific, concise summary (max 50 chars) that clearly
describes the primary change or feature. This should not be generic like
'Update files' but rather describe the actual change like 'Add user
authentication to API endpoints'
2. BLANK LINE
3. DETAILED DESCRIPTION: A thorough explanation including:
- What changes were made
- Why they were necessary
- Any important technical details
- Breaking changes or important notes
Wrap this at 72 chars.
IMPORTANT:
- Output ONLY the commit message
- Make sure the title is specific to these changes
- Focus on the what and why, not just the how"
}
# Main execution
main() {
check_git_repo
check_changes
git add --all
commit_message=$(generate_commit_message)
git commit -m "$commit_message"
}
main "$@"
```
## ⚒️ Breaking it Down
1. **Repository Validation**
```bash
check_git_repo() {
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
exit 1
fi
}
```
This function ensures we're working within a git repository.
2. **Change Detection**
```bash
check_changes() {
if [ -z "$(git status --porcelain)" ]; then
exit 0
fi
}
```
Verifies that there are actually changes to commit.
3. **AI-Powered Message Generation**
```bash
generate_commit_message() {
local diff_content=$(git diff --cached)
local files_changed=$(git status --porcelain)
echo -e "Files changed:\n$files_changed\n\nChanges:\n$diff_content" | \
llm -m anthropic/claude-3-5-sonnet-latest \
"Generate a git commit message for these changes. The message must have:
1. TITLE LINE: A specific, concise summary (max 50 chars) that clearly
describes the primary change or feature. This should not be generic like
'Update files' but rather describe the actual change like 'Add user
authentication to API endpoints'
2. BLANK LINE
3. DETAILED DESCRIPTION: A thorough explanation including:
- What changes were made
- Why they were necessary
- Any important technical details
- Breaking changes or important notes
Wrap this at 72 chars.
IMPORTANT:
- Output ONLY the commit message
- Make sure the title is specific to these changes
- Focus on the what and why, not just the how"
}
```
This is where the magic happens - the script analyzes your changes and uses AI to generate a meaningful commit message.
The script uses [Simon Willison](https://simonwillison.net/)'s `llm` [command-line tool](https://github.com/simonw/llm), which is an incredibly useful utility for interacting with various AI models directly from your terminal. Head over to his [documentation](https://llm.datasette.io/) to learn more about it. How to set it up and actually use it.
Please note that I use anthropic's model in this script, which means you will have to set up the [llm-anthropic](https://github.com/simonw/llm-anthropic) plugin.
## 💻 Setting it up
To run this, just create a commit file and add it your bin directory, such that it ends up in you PATH.
Don't forget to run
```bash
chmod +x ~/.local/bin/commit
```
to make the script executable. Of course, update the path to the script depending on where you save it.
## 🎉 Yay
Now after working hard on your code you'll just have to run `commit` and you'll get a commit message generated by AI.
---
# 2025 Goals
URL: https://www.rasulkireev.com/2025-goals/
Type: article
Date: 2025-02-02
Description: In this post, I want to publicly list all my 2025 goals. This will help keep me accountable and more structured. Though I doubt I will be consulting it often.
Tags: 2025, goals, habits, review
Content:
My 2024 Annual Review was a little all over the place. I think this is due to lack of goals set in the beginning of the year. I'm going to avoid this mistake this year. Here are my goals for 2025.
## Health
Health is going to be a huge part of 2025 for me. I think if I prioritize this the rest will fall in place.
- Sleep!!! Give Theo's early rise at 5:30-6:30, bedtime should be around 9pm! No way around that. Even if it is not me waking up, still the same. That way I get more energy to do other things.
- Slowly and methodically reduce sugar consumption. Right now the main culprits are Yoghurt with sugar, after dinner dessert... And munching on shit food when good food is available in the fridge.
- Physical Activity. This should include morning exercise with Theo. Fighting training twice a week and weightlifting twice a week.
## Work
These are less quantifiable on more feel based. For instance the last 2 weeks of January have been much better than the first 2.
- Complete tasks on dev planning!
- Do work that will help me and others in the future (such as log charts on new relic, documentation)
- Be proactive about fixing bugs that are easy to fix
## Family
- Be more proactive about my relationship with Tanya. I think [[The Way of the Superior Man]] is a fantastic source for that!
- Continue spending time with Theo! I've been pretty good with that in 2024.
## Personal Work
I don't have a lot of time to work on side projects unfortunately. This became apparent in my experiment to put them on pause for two weeks to see how this reflects my work and I was much happier with my progress.
I'm not ready to stop my pursuit of creating my own business, so I will continue working on them. Though I need to be smart about it, here.
Now that I have stabilized my work work, I'm slowly going to insert more Side Project work, bit by bit. Here are some things to keep in mind.
- Work on highest potential projects (preferring the existing ones)
- Automate the process as much as possible!
- Prefer working on marketing.
- When coding, work on highest impact tickets.
## Learning
- I'm not going to put any specific tech to learn in 2025. I think through the virtue of goals above some things will come naturally. Plus, my previous expserience has shown that interests change during the year. I have no concrete desire to learn anything specific, so I don't need to be too intentional about it. If I had to choose something it would be learning to automate work with AI.
- My reading habit has been pretty good in [[2024 in Review | 2024]], especially when I've been going to bed early. Keep it up in 2025.
- Be a little more consistent with daily logs. Which should help me with consistency on the weekly and monthly logs. Many times during the year I felt like I haven't done much from day to day, later to look at the month and realize that quite a bit was done. I want to reduce this useless feeling of unproductivity.
---
# 2024 in Review
URL: https://www.rasulkireev.com/2024/
Type: article
Date: 2025-01-19
Description: My 2024 in Review I was very sad that I didn't finish this post last year. I hope to keep the tradition in the future.
Tags: Annual Review, 2024
Content:
This's Year's Annual Review is a little hectic. I started it around Jan 5th, but then added more to it, bit by bit. Plus, the start of the year hasn't been that great from productivity standpoint. Thankfully I have picked up the pace in the last 2 weeks. So, was finally able to complete it.
Clearly no one will care about it but me, so I'm not sure why I am even posting it, could have left it in my Obsidian... But I'm posting it anyway, for history. Plus, I did leave out some juicy stuff from my personal life in my private collection 😈.
If you are reading it, thanks for the interest. Feel free to ask me any questions, and I will be happy to answer.
## Data
Data is always the most entertaining part of anyone's annual review. So, I will start with that. I will leave the rest for myself and anyone who is curios about me. I imagine that is not a lot of people.
### Reading
```
This is from my Readwise Reader Usage. Here is the script I used:
https://gist.github.com/rasulkireev/9402416ae04e3857af3a41ef774bab03
📚 READWISE READER STATISTICS 2024 📚
==================================================
📊 OVERALL METRICS
Total items: 437
Items with word count: 430
Total words read: 4,471,100
Average words per item: 10,397
Completed items: 160
Partially read items: 192
📑 BREAKDOWN BY CATEGORY
----------------------------------------
Article : 254 items | 415,689 words | avg: 1,636 words/item
Rss : 98 items | 134,820 words | avg: 1,375 words/item
Epub : 37 items | 3,778,468 words | avg: 102,120 words/item
Email : 27 items | 32,976 words | avg: 1,221 words/item
Tweet : 10 items | 10,494 words | avg: 1,049 words/item
Video : 6 items | 0 words | avg: 0 words/item
Pdf : 5 items | 98,653 words | avg: 19,730 words/item
📅 MONTHLY DISTRIBUTION
----------------------------------------
December : 18 items
November : 65 items
October : 17 items
September : 22 items
August : 33 items
July : 25 items
June : 17 items
May : 25 items
April : 74 items
March : 39 items
February : 41 items
January : 61 items
✍️ TOP AUTHORS
----------------------------------------
Nick Maggiulli : 16 items
Jakob Greenfeld : 12 items
Justin Duke : 8 items
Nat Eliason : 7 items
jmduke.com : 5 items
📈 Completion Rate: 36.6%
```
```
# Here is the script to get this data:
# https://gist.github.com/rasulkireev/7ceffa24e543dc513d128e4330e0e39b
📚 READWISE ACTIVITY SUMMARY 2024 📚
==================================================
📊 OVERALL METRICS
Total books/articles with highlights: 215
Total highlights made: 2,294
Total notes added: 225
Favorite highlights: 1
📑 HIGHLIGHTS BY CATEGORY
----------------------------------------
Books : 1628 highlights across 55 sources
Articles : 645 highlights across 150 sources
Tweets : 21 highlights across 8 sources
📅 MONTHLY DISTRIBUTION
----------------------------------------
January : 247 highlights
February : 123 highlights
March : 104 highlights
April : 59 highlights
May : 98 highlights
June : 203 highlights
July : 158 highlights
August : 114 highlights
September : 149 highlights
October : 204 highlights
November : 447 highlights
December : 388 highlights
📖 TOP 5 MOST HIGHLIGHTED SOURCES
----------------------------------------
How to Read a Book : 281 highlights
Getting Real - The Smarter, Faster, Easier Way to : 178 highlights
The Art and Business of Online Writing: How to Bea : 161 highlights
Alpha Trader : 129 highlights
Нетворкинг для разведчиков: Как извлечь пользу из : 108 highlights
🔍 SOURCE DISTRIBUTION
----------------------------------------
reader : 2287 highlights
twitter : 5 highlights
voicenotes : 1 highlights
api_book : 1 highlights
```
### Built with Django
```
2024 Statistics
📊 Project Statistics:
New Projects: 68
💼 Job Statistics:
New Jobs Posted: 126
Remote Jobs: 89
📝 Blog Statistics:
Tutorial: 4 <- Wow, that's bad. Got to step it up in 2025
👨💻 Developer Statistics:
New Developers: 85
Looking for Job: 20
Role Distribution:
- Junior: 5
- Mid: 73
- Senior: 4
- Principal: 3
- C_Level: 0
👤 User Statistics:
New Users: 1953
Pro Users: 2
Public Profiles: 1911
GitHub Connected: 17
Twitter Connected: 11
📧 Newsletter Statistics:
New Subscribers: 5953 <- I bet only 5% of that is real. Jesus, there are so many bots going around on the web.
```



### TJ Alerts
```
==================================================
💼 JOB POSTING STATISTICS 2024
==================================================
📊 CORE JOB METRICS
Total Jobs Posted: 4,202
Remote Jobs: 2,588 (61.6% of all jobs)
Onsite Jobs: 1,956 (46.5% of all jobs)
💰 SALARY INFORMATION
Jobs with salary info: 4,202 (100.0%)
Average salary range: $27,281 - $35,463
📅 MONTHLY JOB POSTINGS
------------------------------
January | ██████████████ 303
February | █████████████████ 357
March | ███████████████ 319
April | ██████████████ 311
May | ████████████████████ 419
June | █████████████████ 369
July | ███████████████████ 404
August | ████████████████ 341
September | ████████████████ 337
October | ████████████████ 355
November | ███████████████ 335
December | ████████████████ 352
🔧 TOP 10 MOST IN-DEMAND TECHNOLOGIES
--------------------------------------------------
1. Python | 737 jobs (17.5%)
2. React | 689 jobs (16.4%)
3. AWS | 442 jobs (10.5%)
4. Typescript | 371 jobs ( 8.8%)
5. TypeScript | 292 jobs ( 6.9%)
6. Postgres | 253 jobs ( 6.0%)
7. Kubernetes | 233 jobs ( 5.5%)
8. Rust | 229 jobs ( 5.4%)
9. Go | 207 jobs ( 4.9%)
10. PostgreSQL | 183 jobs ( 4.4%)
==================================================
🔍 CONFIRMED ALERT SYSTEM ANALYTICS 2024 🔍
==================================================
📊 CORE METRICS
Total Confirmed Alerts: 134
Currently Active Alerts: 104
Email Notifications Sent: 1,965
👥 USER ENGAGEMENT
Registered Users: 37 (27.6%)
Non-registered Users: 97 (72.4%)
📈 PERFORMANCE METRICS
Unsubscribe Rate: 22.4%
📅 MONTHLY GROWTH
------------------------------
January | ████ 8
February | █████ 9
March | ██████ 11
April | █████ 9
May | ████████████████████ 36
June | ██████████████████ 33
July | ████ 8
August | ██ 5
September | ██ 4
October | ██ 4
November | █ 3
December | ██ 4
🎯 TOP 10 MOST WATCHED TECHNOLOGIES
--------------------------------------------------
1. React Native | 15 alerts (11.2%)
2. React | 13 alerts ( 9.7%)
3. Python | 11 alerts ( 8.2%)
4. Django | 10 alerts ( 7.5%)
5. PHP | 9 alerts ( 6.7%)
6. C# | 9 alerts ( 6.7%)
7. Elixir | 7 alerts ( 5.2%)
8. Python/Django | 4 alerts ( 3.0%)
9. Ruby on Rails | 3 alerts ( 2.2%)
10. Go | 3 alerts ( 2.2%)
```




### SEO Blog Bot
The images here include the full month of January in 2025. Sorry, got a little lazy there.





### Notes
```
2 Tag/Concept Notes Created
185 Content Notes Created
422 Total Notes Created
# Notes by Folder Distribution
Shows where you're creating most of your notes
| Folder | Count |
|-------------------------------|-------|
| notes/archive | 2 |
| notes/inbox | 8 |
| notes/ongoing | 11 |
| notes/ongoing/archive | 1 |
| notes/ongoing/to_post | 2 |
| notes/recurring/daily | 142 |
| notes/recurring/yearly | 3 |
| notes/writings | 6 |
| notes/writings/done | 6 |
| notes/zettelkasten/literature | 4 |
| people | 3 |
| sources/Readwise | 229 |
| tagnotes | 2 |
# Linking Statistics
Shows which notes are most connected to others
| File | Outgoing Links | Incoming Links | Total Connections |
|----------------------------------------------------------------------------------------|----------------|----------------|-------------------|
| Oh Crap! I Have a Toddler | 30 | 1 | 31 |
| The Algebra of Wealth | 28 | 2 | 30 |
| How to Do Great Work | 28 | 0 | 28 |
| robotics is sort of happening in our peripheral vision now 202406271748 | 25 | 1 | 26 |
| Сравнительные Жизнеописания | 20 | 0 | 20 |
| the imperfect project you actually complete is worth more than the perfect project... | 19 | 1 | 20 |
| having a social component in a place where you post can be a big boost... 202411020830 | 17 | 1 | 18 |
| The Beginning of Infinity | 16 | 0 | 16 |
| courses I own | 14 | 0 | 14 |
| browser extensions allow and encourage users to modify the apps... 202406271853 | 13 | 1 | 14 |
# Monthly Creation Patterns
Shows your note creation patterns by month
| Month | Notes Created |
|----------|---------------|
| 2024-01 | 48 |
| 2024-02 | 27 |
| 2024-03 | 23 |
| 2024-04 | 26 |
| 2024-05 | 30 |
| 2024-06 | 34 |
| 2024-07 | 41 |
| 2024-08 | 44 |
| 2024-09 | 33 |
| 2024-10 | 36 |
| 2024-11 | 48 |
| 2024-12 | 32 |
# Weekly Activity Patterns
Shows which days of the week you're most active
| Day | Notes Created |
|-----------|---------------|
| Tuesday | 85 |
| Wednesday | 84 |
| Monday | 66 |
| Thursday | 61 |
| Friday | 56 |
| Saturday | 43 |
| Sunday | 27 |
```
### Writing
I got a little lazy here. There is much more I can get, like character count, but I'll leave it until next year.

## Family
The biggest event that happened with our family is that we had to temporarily move back to Russia for some time. This was a very annoying disturbance to our way of life. We had a rhythm, Tanya and I, dealing with life, work and a year old son. The moving process was hectic, but we got it done.
Moved all our belongings in the storage, sold our car, bought airplane tickets and packed 9 bags to travel back with us.
The trip went much better than expected. All of our bags went to the final destination and we got a long layour after our first flight, which allowed us to sleep. Thank god Theo decided to sleep with us.
This was in February, so we spent most of the year in Russia. First 2 months we lived with my mom. She helped us, while we slowly got back up on our feet which we are very grateful for. My sister Aida was very helpful too, the way that they bonded with Theo still means a lot to me.
Of course when you have a 1 year old most of the year will be about him. He made a lot of progress this year, which made Tanya and I very happy. I'm not going to list it all, cause the list is pretty generic for babies this age. We and I are happy to see how is growing up.
This means that we didn't get to spend too much quality time with my wife, alone. But, we are trying every chance we have. Work in progress.
All in all this has been a great year. Yes, some bad moments, bad fights, but I'm very happy about the family I have and the direction we are going in.
## Readwise
This was my first full year at Readwise. I joined in November 2023. This has been an amazing year. Got to work on so many different parts of the project. I worked both on Readwise and Reader. Bother mobile and web. Frontend and backend. App and Analytics. The diversity of skills required on my part has never been so broad. For a person whose life goals to be a highly skilled generalist this is a dream come true.
People I work with are amazing. To be honest, I have always been lucky with people I work with. In my short period of working at 5 companies people have always been great, smart and kind. One thing that Readwise beats all those companies in is that I get to know all the people I work for. In my previous experience of working for larger companies I only got to work with people in my department. Here, though, with a full team of 23 people, I know each single person. People from Finance, CX, Engineering, Business Operations, everyone.
I got to go to Curacao on an offsite to meet personally with the team (since we are a remote team). It was amazing. Even the 36+ travel time to that location did not take away from the experience. Though I've got to admit, I love flying, especially when I get to do it alone (without my wife and son 🙈).
Here are some professional highlights from working at Readwise:
- Started using and valuing logs a lot. Became much better at NRQL queries to use as app usage analytics.
- Gained a much better understanding (and appreciation of complexity) of models and data. It ain't easy parsing web content reliably.
- Here are some projects I worked on:
- Allow users to customize their import emails
- Advanced email subscriptions management (sub/unsub)
- Data Analytics on large, large data for various questions people had. Those could be revenue related or app usage related. When you have a lot of users and a lot of data, it is much more fun to ask questions. Though at the same time hard to answer them too.
- Better internal tracking of user journey.
- I've worked a lot on our Export and Import integrations. This is not the code I wrote. So this is less fun, I just have to make sure to fix bugs and monitor nothing breaks. Since each integration is a separate module it takes a lot of time to learn and understand, which makes my work much slower makes me conscious a lot.
## Personal Work
I'm the type of person that always thinks he is not doing enough. The Impostor Syndrome is my good old friend by now. This Annual Review and any type of long term review is extremely useful to cope with that nasty thing.
Day to day you think that not much is done, then you zoom out and you see that you actually made some good progress. This is a summary of the progress I made this year.
This has been a good year. Not the whole year, though. I was able to do some work on my existing projects, but it all exploded in Fall. Tanya and I found a wonderful daycare for Theo which added 3-4 additional hour in my day. And once that happened I went nuts.
First project I decided to make was a replacement for ogi.sh, which is a programmatic OG-image generator. It was closed by the creator and I decided to whip up a quick version of my own. While doing that I spent a lot of time updating my cookiecutter for django based Saas projects. This second part actually took a while, but the ROI was amazing.
Write after getting OSIG stable, I started working on Statushen. For some reason I thought it would be a profitable project. But to be honest with you I was so in the zone while coding it, I actually can't remember whether I launched it or not. I started using it for all my projects as a Stasus page for my services, but it didn't get much traction. Well, the infrastructure is there and maybe I can work on it in 2025, we will see. Needless to say, this project helped me update Saas Starter Kit even further, which brings me to the next point.
The next project I decided to make was inspired by John Rush. He was building seobotai, which I thought was very cool. I sort of stole the idea and decided to put a spin on it. I'm currently using it for all my projects, but not nearly enough. I think this is the project that has the most potential. There are already a couple of trial users, even without me launching it officially. I definitely need to think about this product more in 2025. There is a lot I can do I think.
One notable thing I have done with one of my existing projects is adding advertising more heavily on Built with Django. I have been reaching out to various companies in the attempt to get some server funding. It worked Ramy from Hovercode decided to pay for a sponsored post and reported back with good results even providing me with a testimonial.
One last thing I want to mention here is that this year has had another big event in my professional life. I have finally made my first business acqusition. I bought Is It Keto from Michael Lynch, who made this process a dream come true. I wrote more about it here.
---
# AI Prompts Suggestions
URL: https://www.rasulkireev.com/ai-prompts-suggestions/
Type: prompt
Date: 2025-01-06
Description: This prompt helps come up with AI prompt ideas could help me automate some tasks, using the highlights I made in the book.
Tags: AI, Prompts, Book
Content:
I recently tried to add a small change in my life. After every book I read, I try to come up with some ways I could use the learning from the book to automate or improve some parts of my life or work.
Prompt below helps uses the highlights I made (ideas that I though were the most important in the book) to come up with those ideas. It has been working very well.
```
Here is some info about the book I just finished reading:
Title: {{ book_title }}
Author: {{ book_author }}
Below are the highlights I made from the book:
{{ book_highlights }}
Can you come up with some ideas for AI prompts that I could use to automate
or improve some parts of my life using the ideas from the highlights attached.
```
---
# Analyze the Book's Table of Contents and Index
URL: https://www.rasulkireev.com/analyze-book-itoc/
Type: prompt
Date: 2024-12-26
Description: This prompt helps to analyze book's table of contents.
Tags: Reading, Book, Structure
Content:
This prompt was inspired by an awesome book "[How to Read a Book](/how-to-read-a-book)" by Mortimer Adler.
```
{#- BACKGROUND: This prompt analyzes a book's table of contents and index to provide additional insight into its structure and nature. -#}
Please analyze these book components:
===
Title: {{ document.title }}
Author: {{ document.author }}
TABLE OF CONTENTS:
{{ document.content.toc }}
INDEX:
{{ document.content.index }}
Please analyze both components:
1. TABLE OF CONTENTS ANALYSIS
- Organization method (chronological, topical, etc.)
- Major sections/parts structure
- Progression of ideas/topics
- Depth and breadth of coverage
- Notable patterns in chapter arrangement
2. INDEX ANALYSIS
- Key concepts and their frequency
- Main themes based on cross-references
- Depth of subject coverage based on sub-entries
- Special terms or technical vocabulary
- Notable omissions or emphasis
3. COMBINED INSIGHTS
- Relationship between TOC structure and index entries
- Subject matter coverage patterns
- Target audience indicators
- Theoretical vs practical content indicators
Based on your analysis, provide:
## Book Structure Overview
[One paragraph synthesizing the book's overall organization and approach]
## Core Subject Areas
[Bullet list of 3-5 main themes or subjects, with brief context for each]
## Knowledge Prerequisites
[One paragraph identifying what the reader should know before starting]
## Recommended Reading Strategy
[One paragraph suggesting specific approach based on book's structure]
{#- NOTE: Focus on insights that will help readers efficiently navigate and understand the book. -#}
```
---
# Analyze key sentences
URL: https://www.rasulkireev.com/analyze-key-sentences/
Type: prompt
Date: 2024-12-25
Description: This prompt helps identify and analyze important sentences in a text, following Mortimer Adler's sixth rule of analytical reading from "How to Read a Book". It breaks down sentences into their core propositions, explores their significance, and connects them to broader contexts.
Tags: Reading, Book Analysis, Critical Thinking, Text Analysis, Comprehension, Adler Method, Literary Analysis, Study Skills
Content:
This prompt provides detailed analysis of important sentences and their propositions, following Mortimer Adler's sixth rule of analytical reading. It's designed to be used after identifying key sentences.
```
You are an expert reader trained in analytical reading. Your task is to provide a thorough analysis of important sentences from a text.
For the following sentence(s), provide a detailed analysis:
1. Deep dive into significance:
- Explain how this sentence advances the author's argument
- Identify what problem or question it addresses
- Describe its role in the larger context of the work
2. Break down the proposition(s):
- Restate complex ideas in simpler terms
- Define and clarify any difficult concepts
- Show logical relationships between ideas
- Identify any unstated assumptions
3. Illustrate through examples:
- Provide concrete examples that demonstrate the proposition
- Suggest relevant analogies that clarify the meaning
- Show how the proposition applies in different contexts
4. Connect to broader context:
- Link to other key ideas in the text
- Show how this proposition builds on or challenges previous points
- Identify implications that follow from this proposition
Here are the sentences to analyze:
"""
Title: {{ document_title }}
Author: {{ document_author }}
Domain: {{ document_domain}}
{{ sentences }}
"""
Please provide a thorough analysis that helps deepen understanding of this sentence and its significance.
```
---
# Find the Author's Problems
URL: https://www.rasulkireev.com/find-authors-problems/
Type: prompt
Date: 2024-12-25
Description: This prompt helps identify the problems that the author tried to address in his book.
Tags: Reading, Book
Content:
This prompt was inspired by an awesome book "[How to Read a Book](/how-to-read-a-book)" by Mortimer Adler. It actually works pretty well.
I use it in [Readwise Reader](https://readwise.io/i/rasul) project, to help me identify the kind of book I am about to read.
```
{#- BACKGROUND: This prompt helps identify the problems or questions that the author is trying to solve or answer in their work. This is Rule 4 of analytical reading: "FIND OUT WHAT THE AUTHOR'S PROBLEMS WERE." Understanding the author's problems is crucial for truly grasping the book's purpose and message. -#}
Your task is to analyze the document and identify the key problems or questions that the author is trying to address. Consider that:
- Authors start with questions, even if they don't explicitly state them
- The book contains the answers to these questions
- The problems should be formulated as precisely as possible
- Questions should be ordered by importance (primary vs secondary)
===
Title: {{ document.title }}
Author: {{ document.author }}
Domain: {{ document.domain}}
{#- The if-else logic below checks if the document is very long, long, or short to not exceed the GPT prompt window. -#}
{% if (document.content | num_tokens) > 25000 %}
{{ document.html | central_paragraphs | join('\n\n') }}
{% elif (document.content | num_tokens) > 2500 %}
{{ document.content | central_sentences | join('\n\n') }}
{% else %}
{{ document.content }}
{% endif %}
Please identify and list:
1. The main problem or question the author is trying to solve
2. The subordinate problems or questions that support the main one
3. The order of these problems (which must be solved first to answer others)
Format your response as:
## The Author's Problems
### Main Problem
[State the primary question/problem in one clear sentence]
### Supporting Problems
1. [First supporting problem]
2. [Second supporting problem]
3. [Third supporting problem]
(etc.)
### Problem Hierarchy
[Brief explanation of how these problems relate to each other and why they are ordered this way]
IMPORTANT: Focus on identifying actual problems the author is trying to solve, not just topics they discuss. The problems should be specific enough to guide understanding but broad enough to encompass the book's major themes.
```
---
# Find Key Terms
URL: https://www.rasulkireev.com/find-key-terms/
Type: prompt
Date: 2024-12-25
Description: This prompt helps identify and analyze important terms in a text, following Mortimer Adler's fifth rule of analytical reading from "How to Read a Book".
Tags: Reading, Book, Analysis, Vocabulary, Understanding
Content:
This prompt was inspired by Mortimer Adler's "[How to Read a Book](/how-to-read-a-book)". It helps identify and understand key terms in any text, which is crucial for deep comprehension and analytical reading.
I actively use this prompt in my [Readwise Reader](https://readwise.io/i/rasul) workflow to:
- Identify crucial terminology
- Understand special usage of common words
- Connect key terms to main arguments
- Build a quick reference glossary
```
{#- BACKGROUND: This prompt helps identify and understand key terms in a text, following Mortimer Adler's fifth rule of analytical reading: "FIND THE IMPORTANT WORDS AND THROUGH THEM COME TO TERMS WITH THE AUTHOR." -#}
Analyze the following text and help me:
1. Identify the most important words that:
- Give me trouble understanding
- Are used in an unusual or special way
- Appear to be crucial for understanding the author's message
- Are used repeatedly throughout the text
2. For each important word found:
- Show how the author uses it in context
- Explain its specific meaning in this text
- Compare it with its common usage (if different)
- Connect it to the author's main arguments
===
Title: {{ document.title }}
Author: {{ document.author }}
Domain: {{ document.domain}}
{#- The if-else logic below checks if the document is long. If so, it will use key sentences to not exceed the GPT prompt window. We highly recommend not changing this unless you know what you're doing. -#}
{% if (document.content | count_tokens) > 2000 %}
{{ document.content | central_sentences | join('\n\n') }}
{% else %}
{{ document.content }}
{% endif %}
===
Present your findings in this format:
## Quick Reference
- [Word 1]: Simple explanation in 10-15 words
- [Word 2]: Simple explanation in 10-15 words
[etc.]
## Detailed Analysis
### [Word 1]
- Context: [relevant quote(s) showing usage]
- Author's Usage: [specific meaning in text]
- Common Usage: [if different from author's usage]
- Connection to Main Arguments: [how it relates to key points]
[Repeat for each important word]
IMPORTANT: Focus on words that are truly significant for understanding the author's message. Quality over quantity. The Quick Reference section should be easily scannable and understood by anyone.
```
---
# Find key sentences
URL: https://www.rasulkireev.com/find-key-sentences/
Type: prompt
Date: 2024-12-25
Description: This prompt helps identify and analyze important sentences in a text, following Mortimer Adler's sixth rule of analytical reading from "How to Read a Book".
Tags: Reading, Book, Analysis, Understanding, Arguments
Content:
This prompt was inspired by Mortimer Adler's "[How to Read a Book](/how-to-read-a-book)". It helps identify and analyze the most important sentences in any text, which is essential for understanding the author's key arguments and main propositions.
I actively use this prompt in my [Readwise Reader](https://readwise.io/i/rasul) workflow to:
- Identify crucial arguments and claims
- Extract core propositions
- Connect major ideas together
- Build a quick reference of key points
```
{#- BACKGROUND: This prompt helps identify the most important sentences in a book and discover their propositions, following Mortimer Adler's sixth rule of analytical reading. -#}
You are an expert reader trained in analytical reading. Your task is to identify the most important sentences in the text and discover their propositions.
Find 3-5 of the most important sentences in the text. Focus on sentences that:
- Contain the author's key arguments or conclusions
- Introduce important concepts or principles
- Make significant claims or assertions
- Connect major ideas together
For each identified sentence:
1. Quote the sentence
2. Explain in 2-3 lines why this sentence is crucial to understanding the author's message and what proposition it contains
Here is the text to analyze:
"""
Title: {{ document.title }}
Author: {{ document.author }}
Domain: {{ document.domain}}
{% if (document.content | count_tokens) > 2000 %}
{{ document.content | central_sentences | join('\n\n') }}
{% else %}
{{ document.content }}
{% endif %}
"""
Please list the key sentences and their significance, being concise but precise in your explanations.
```
---
# Analyze the Book's Structure
URL: https://www.rasulkireev.com/analyze-book-structure/
Type: prompt
Date: 2024-12-22
Description: This prompt helps identify book's structure, which is essential for analytical reading according to Mortimer Adler's "How to Read a Book".
Tags: Reading, Book, Structure
Content:
This prompt was inspired by an awesome book "[How to Read a Book](/how-to-read-a-book)" by Mortimer Adler.
I use it in [Readwise Reader](https://readwise.io/i/rasul) project, to help me identify the structure of the book I'm reading.
```
{#- BACKGROUND: This prompt helps identify and understand how the major parts of a book work together to develop its main theme or argument, following Mortimer Adler's second rule of analytical reading. -#}
You are an expert at analyzing the structure and organization of books. Help me understand how the major parts of this book work together to form a coherent whole.
Please analyze the following text and:
1. Identify the major parts/sections and their main points
2. Explain how these parts relate to and build upon each other
3. Show how they connect to and support the book's central theme/argument
4. Create a visual outline showing the hierarchical relationship between parts
Consider:
- How earlier parts lay groundwork for later ones
- Key transitions and connections between sections
- How each part contributes to the book's unity
- The logical flow and progression of ideas
Here is the content to analyze:
===
Title: {{ document.title }}
Author: {{ document.author }}
Domain: {{ document.domain}}
{#- The if-else logic below checks if the document is very long in order to not exceed the GPT prompt window -#}
{% if (document.content | num_tokens) > 25000 %}
{{ document.html | central_paragraphs | join('\n\n') }}
{% elif (document.content | num_tokens) > 2500 %}
{{ document.content | central_sentences | join('\n\n') }}
{% else %}
{{ document.content }}
{% endif %}
Please provide:
1. A brief overview of the major parts/sections
2. An explanation of how they work together
3. A hierarchical outline showing their relationships
4. Commentary on how this structure serves the book's main purpose
Focus on understanding and explaining the book's structural unity rather than just summarizing content. Add the following in the beginning of the output: `## Book's Structure`
```
---
# Nature of the Book
URL: https://www.rasulkireev.com/nature-of-the-book/
Type: prompt
Date: 2024-12-22
Description: This prompt helps identify the kind of book you are about to read, which is essential for analytical reading according to Mortimer Adler's "How to Read a Book".
Tags: Reading, Book
Content:
This prompt was inspired by an awesome book "[How to Read a Book](/how-to-read-a-book)" by Mortimer Adler. It actually works pretty well.
I use it in [Readwise Reader](https://readwise.io/i/rasul) project, to help me identify the kind of book I am about to read.
```
{#- BACKGROUND: This prompt helps identify basic classification of the book. -#}
Analyze the following book and help me identify what kind of book it is:
===
Title: {{ document.title }}
Author: {{ document.author }}
Domain: {{ document.domain }}
{#- The if-else logic below checks if the document is long. If so, it will use key passages to not exceed the GPT prompt window. -#}
{% if (document.content | count_tokens) > 2000 %}
{{ document.content | central_sentences | join('\n\n') }}
{% else %}
{{ document.content }}
{% endif %}
Please answer the following questions to help classify this book:
- Is this a theoretical or practical book?
- What general category does it fall under? (e.g., fiction/non-fiction, science, philosophy, history, etc.)
- What specific subject matter does it address?
1. STRUCTURAL INDICATORS
- What does the title page tell us about the scope?
- What does the table of contents reveal about its structure?
- What does the preface or introduction indicate about the author's aims?
- How is the index organized (if present)?
1. CONTEXTUAL ELEMENTS
- When was it written and in what context?
- Who is the intended audience?
- What level of expertise does it assume?
Based on this analysis, provide:
1. A clear statement of what kind of book this is
2. The main subject matter it covers
3. Any special considerations for reading this particular type of book
IMPORTANT: Focus on understanding the nature of the book before diving into its content. This classification will guide how to approach reading it. Also add a heading before output: `## Book's Nature`
```
---
# Unity of the Book
URL: https://www.rasulkireev.com/unity-of-the-book/
Type: prompt
Date: 2024-12-22
Description: This prompt helps identify the kind of book you are about to read, which is essential for analytical reading according to Mortimer Adler's "How to Read a Book".
Tags: Reading, Book
Content:
This prompt was inspired by an awesome book "[How to Read a Book](/how-to-read-a-book)" by Mortimer Adler.
I use it in [Readwise Reader](https://readwise.io/i/rasul) project, to help me identify the main theme of the book
```
{#- BACKGROUND: This prompt helps identify and articulate the unity or main theme of a book in a single sentence or short paragraph, following Mortimer Adler's second rule of analytical reading from "How to Read a Book". -#}
Your task is to analyze the following text and express its fundamental unity - the single main point or theme that the entire work revolves around - in one sentence, or at most a short paragraph.
===
Title: {{ document.title }}
Author: {{ document.author }}
Domain: {{ document.domain}}
{% if (document.content | num_tokens) > 25000 %}
{{ document.html | central_paragraphs | join('\n\n') }}
{% elif (document.content | num_tokens) > 2500 %}
{{ document.content | central_sentences | join('\n\n') }}
{% else %}
{{ document.content }}
{% endif %}
INSTRUCTIONS:
1. Consider what single, central point the author is trying to communicate
2. Identify how all major arguments or sections of the book support this central point
3. Express this unity in ONE sentence, or if absolutely necessary, a very short paragraph
4. Focus on WHAT the book is about as a whole, not its method or structure
5. Avoid merely describing what the book talks about; instead, capture its essential message or argument
Format your response as follows:
## Unity Statement
[Your one-sentence or short paragraph response here]
IMPORTANT:
- Be concise but complete
- Capture the essence, not just the topic
- Express the unity in a way that shows how all parts of the book relate to this central point
- Avoid listing multiple main points; find the ONE unifying idea
```
---
# How to Read a Book
URL: https://www.rasulkireev.com/how-to-read-a-book/
Type: book
Date: 2024-12-12
Description: This book is a must read for anyone who wants to read better. It's not easy to read, but it's worth it.
Author: Mortimer Adler
Content:
## My Thoughts
This is not the easiest book to read. It took me 2 tries. When the Analytical Reading is dicussed at great lengths, the book starts to be a little bit dry.
That said, the book is definitely worth reading. Not only will you learn how to read better, but you will also get inspired to read more difficult books, that are over your head. This will skyrocket your learning and personal growth.
Reading great literature is hard and it requires a lot of work on your part. Mortimer Adler is not hiding this fact from your. He is not giving you rules that will drastically simplify that process. He is giving you a framework that will help you make sure that all your efforts are not wasted.
Another thing that I thought a lot about is AI. This books was written when there were no computers. I'm not entirely sure what would Mortimer have to say about computers and AI, but I personally view them as great helpers.
I don't want to offload my thinking to AI, but I do want to use it to augment my understanding. I have just started thinking about it, but here are some prompts that I came up with, that I use in [Readwise Reader](https://readwise.io/i/rasul), when reading books:
- [Nature of the Book](nature-of-the-book)
- [Unity of the Book](unity-of-the-book)
- [Book Structure Analysis](analyze-book-structure)
The potential is limitless. I'm planning to write more prompt to help me read better.
One thing I know for sure is that Mortimer would want me to replace my own reading with AI, since it is similar to reading cliff notes and that means I offload my thoughts and understanding to someone else.
If you have any ideas, please let me know.
I'm glad I read this book. I feel more prepared for a journey of a lifetime. A journey to better myself through reading great books. This is a book that helped me find the [10 Year Reading Plan](10-years-of-great-books), by the way.
## Learnings
### There are 4 levels of reading:
- Elementary reading: Basic reading comprehension
- Inspectional reading: Systematic skimming to get an overview
- Analytical reading: Deep, thorough reading for full understanding
- Syntopical reading: Reading multiple books on same subject
### Inspectional Reading
The purposed of **Inspectional Reading** is to get an overview of the book and decide if deeper reading is needed.
- Pre-reading:
- Examine the title page and preface to understand the book's scope
- Study the table of contents to grasp the book's structure
- Check the index for crucial topics and key references
- Read the publisher's blurb (especially for expository works)
- Look at pivotal chapters' opening/closing summaries
- Thumb through the book, reading selected paragraphs
- Always read the last few pages, where authors often summarize key points
- Superficial reading:
- Read the book straight through without stopping for difficult parts
- Focus on what you can understand, don't get stuck on challenging sections
- Aim to understand what you can (even if it's only 50%)
- Avoid consulting footnotes or secondary sources prematurely
- Remember: understanding part of a difficult book is better than none at all
- Key Principles:
- Both steps should be performed quickly
- Every book contains both easy and difficult sections
- Don't get bogged down in details on the first reading
- Save detailed analysis for subsequent readings
### Analytical reading
**Analytical Reading** is a deep, thorough reading for full understanding
Analytical reading consists of three stages, each with specific rules:
#### Rules
1. YOU MUST KNOW WHAT KIND OF BOOK YOU ARE READING, AND YOU SHOULD KNOW THIS AS EARLY IN THE PROCESS AS POSSIBLE, PREFERABLY BEFORE YOU BEGIN TO READ.
- Before starting to read, identify the genre and category of the book (like philosophy, science, fiction) as this determines how you should approach reading it.
2. STATE THE UNITY OF THE WHOLE BOOK IN A SINGLE SENTENCE, OR AT MOST A FEW SENTENCES (A SHORT PARAGRAPH).
- After reading, you should be able to summarize the book's main point or central theme in one or two sentences, demonstrating your grasp of its essential message.
3. SET FORTH THE MAJOR PARTS OF THE BOOK, AND SHOW HOW THESE ARE ORGANIZED INTO A WHOLE, BY BEING ORDERED TO ONE ANOTHER AND TO THE UNITY OF THE WHOLE.
- Identify and understand how the major sections or parts of the book work together to develop the main theme or argument.
4. FIND OUT WHAT THE AUTHOR'S PROBLEMS WERE.
- Determine what questions or problems the author is trying to address or solve in writing the book.
5. FIND THE IMPORTANT WORDS AND THROUGH THEM COME TO TERMS WITH THE AUTHOR.
- Identify and understand the key terms or words the author uses, especially those that are crucial to understanding their arguments.
6. MARK THE MOST IMPORTANT SENTENCES IN A BOOK AND DISCOVER THE PROPOSITIONS THEY CONTAIN
- Find and understand the most significant statements in the book where the author makes their key points or assertions.
7. LOCATE OR CONSTRUCT THE BASIC ARGUMENTS IN THE BOOK BY FINDING THEM IN THE CONNECTION OF SENTENCES.
- Identify or piece together the author's arguments by connecting related sentences and passages throughout the book.
8. FIND OUT WHAT THE AUTHOR'S SOLUTIONS ARE.
- Understand what solutions or answers the author provides to the problems they identified.
9. YOU MUST BE ABLE TO SAY, WITH REASONABLE CERTAINTY, "I UNDERSTAND," BEFORE YOU CAN SAY ANY ONE OF THE FOLLOWING THINGS: "I AGREE," OR "I DISAGREE," OR "I SUSPEND JUDGMENT."
- You must fully understand the author's position before you can legitimately agree, disagree, or reserve judgment.
10. WHEN YOU DISAGREE, DO SO REASONABLY, AND NOT DISPUTATIOUSLY OR CONTENTIOUSLY.
- When disagreeing with an author, do so based on reason and logic rather than emotion or the desire to win an argument.
11. RESPECT THE DIFFERENCE BETWEEN KNOWLEDGE AND MERE PERSONAL OPINION BY GIVING REASONS FOR ANY CRITICAL JUDGMENT YOU MAKE.
- Support your agreements or disagreements with well-reasoned arguments, distinguishing between factual knowledge and personal opinion.
#### STAGE 1: Finding What a Book is About
1. Classify the book according to kind and subject matter
2. State what the whole book is about with utmost brevity
3. Enumerate its major parts in order and relation, and outline these parts
4. Define the problem(s) the author is trying to solve
#### STAGE 2: Interpreting the Book's Contents
5. Come to terms with the author by identifying and understanding key words
6. Grasp the author's leading propositions by finding important sentences
7. Know the author's arguments by finding or constructing them from sequences of sentences
8. Determine which problems the author solved and which they did not
#### STAGE 3: Criticizing the Book as a Communication of Knowledge
General Rules:
9. Don't criticize until you fully understand
10. Don't disagree disputatiously
11. Present good reasons for any critical judgment
Specific Criteria for Criticism:
12. Show where the author is uninformed
13. Show where the author is misinformed
14. Show where the author is illogical
15. Show where the author's analysis is incomplete
#### Key Points about Analytical Reading:
- It requires active engagement with the text
- You must first understand before criticizing
- The goal is to have an intelligent conversation with the author
- It involves asking questions and seeking answers
- You should be able to state the book's content in your own words
- Critical thinking must be supported by reasons
- If you can't show the author is uninformed, misinformed, or illogical, you must agree or suspend judgment
### Syntopical Reading
**Syntopical Reading** is the fourth and highest level of reading. This is where you are reading multiple books on same subject.
STAGE 1: Surveying the Field (Preparation)
1. Create a tentative bibliography using library catalogs, advisors, and bibliographies in books
2. Inspect all books through inspectional reading to:
- Determine which are relevant
- Get a clearer idea of the subject
- Note: These steps are not strictly chronological but interact with each other
STAGE 2: Syntopical Reading Proper
1. Find the Relevant Passages
- Don't read books entirely
- Focus on finding sections relevant to your problem
- Remember you're serving your purpose, not the books'
2. Bring Authors to Terms
- Create a neutral terminology
- Force authors to use your language, not theirs
- Establish common terms that work across all authors
3. Get the Questions Clear
- Frame a set of questions that all authors can be seen as answering
- Questions might not be explicitly addressed by authors
- Questions should help solve your problem
4. Define the Issues
- Identify where authors answer same questions differently
- Order multiple viewpoints in relation to each other
- Classify authors according to their views
- Sometimes need to frame questions in ways authors didn't explicitly address
5. Analyze the Discussion
- Maintain dialectical objectivity
- Present opposing views impartially
- Quote authors directly to support interpretations
- Order the questions and issues to maximize understanding
- Don't aim for final answers but rather understanding the discussion
Key Points about Syntopical Reading:
- It's the most active form of reading
- The goal is not to find definitive answers but to understand the discussion
- Requires maintaining objectivity and avoiding bias
- Must resist taking sides while trying to see all sides
- Fiction and poetry are generally difficult to include in syntopical reading
- The reader must be the master of the situation, not the books
- Success depends heavily on the initial inspection phase to identify relevant works
### Key Principles
1. **Active Reading**
- Reading is like a conversation with the author
- You must ask questions while reading
- Make notes and annotations
- Think critically about content
2. **Understanding Before Criticism**
- You must fully understand before agreeing/disagreeing
- Avoid being contentious or disputatious
- Give reasons for any critical judgments
- Recognize difference between knowledge and opinion
3. **Different Types of Reading for Different Materials**
- Practical books require different approach than theoretical
- Fiction requires imagination and emotional engagement
- Scientific works need attention to experimental evidence
- Philosophy requires careful attention to arguments and terms
4. **Reading for Growth**
- Must read books beyond your current level to improve
- Good books reward effort with wisdom and understanding
- Reading keeps mind active and growing
- Very few books (perhaps 1%) deserve deep analytical reading
- Even fewer (<100) are truly inexhaustible and worth rereading
5. **The Importance of Multiple Readings**
- Some books reveal more with each reading
- Great books grow with the reader
- Different levels of understanding possible with repeated readings
---
# Gateway to Great Books
URL: https://www.rasulkireev.com/gateway-to-great-books/
Type: article
Date: 2024-12-07
Description: In this post I'll be listing the works from the "Gateway to Great Books" series that I'll be reading to keep track of my progress.
Tags: Reading, Literature, Great Books, Books, Gateway to Great Books, Reading List, Classics, Education, Self-improvement
Content:
Not too long ago I have [started a 10 year long journey to read great books](/10-years-of-great-books). It's been a pleasant journey thus far. I'm definitely behind on the plan, but that's fine, I've been reading both older ('great') and newer books. I originally came across that plan in the "How to Read a Book" book by [Mortimer Adler](https://en.wikipedia.org/wiki/Mortimer_J._Adler), which I almost finished and am about to write a review on.
Well, this time around I noticed there was a reference to another book compilation called "[Gateway to Great Books](https://www.amazon.com/Gateway-Great-Books-10-Set/dp/B000K078GY/ref=sr_1_1)". This is very similar to the "Great Books of the Western World" series, but with works that are simpler/shorter. I thought it would be a good idea to start reading some of them too.
So, in this post I will be listing the works I'll be reading to keep track of my progress. As with the 10 Year Reading Plan, I'll be leaving links to the online resources where you can read these books for free, as well as links to the posts where I review/summarize/leave my thoughts on the book.
## Reading List
### Volume 2: Imaginative Literature I
- Daniel Defoe, *Excerpts from Robinson Crusoe*
- Rudyard Kipling, "Mowgli's Brothers" from *The Jungle Book*
- Victor Hugo, "The Battle with the Cannon" from *Ninety-Three*
- Guy de Maupassant, "Two Friends"
- Ernest Hemingway, "The Killers" from *Men Without Women*
- Sir Walter Scott, "The Two Drovers" from *Chronicles of the Canongate*
- Joseph Conrad, "Youth"
- Voltaire, *Micromégas*
- Oscar Wilde, "The Happy Prince" from *The Happy Prince and Other Tales*
- Edgar Allan Poe, "The Tell-Tale Heart"; "The Masque of the Red Death"
- Robert Louis Stevenson, *The Strange Case of Dr. Jekyll and Mr. Hyde*
- Mark Twain (Samuel Clemens), *The Man That Corrupted Hadleyburg*
- Charles Dickens, "A Full and Faithful Report of the Memorable Trial of Bardell against Pickwick" from *The Pickwick Papers*
- Nikolai Gogol, "The Overcoat"
- Samuel Butler, "Customs and Opinions of the Erewhonians" from *Erewhon*
- Sherwood Anderson, "I'm a Fool"
- Anonymous, *Aucassin and Nicolette*
### Volume 3: Imaginative Literature II
- Stephen Crane, "The Open Boat"
- Herman Melville, "Billy Budd"
- Ivan Bunin, "The Gentleman from San Francisco"
- Nathaniel Hawthorne, "Rappaccini's Daughter"
- George Eliot, "The Lifted Veil"
- Lucius Apuleius, "Cupid and Psyche" from *The Golden Ass*
- Ivan Turgenev, "First Love"
- Fyodor Dostoevsky, "White Nights"
- John Galsworthy, "The Apple-Tree"
- Gustave Flaubert, "The Legend of St. Julian the Hospitaller"
- F. Scott Fitzgerald, "The Diamond as Big as the Ritz"
- Honoré de Balzac, "A Passion in the Desert"
- Anton Chekhov, "The Darling"
- Isaac Singer, "The Spinoza of Market Street"
- Alexander Pushkin, "The Queen of Spades"
- D. H. Lawrence, "The Rocking-Horse Winner"
- Henry James, "The Pupil"
- Thomas Mann, "Mario and the Magician"
- Isak Dinesen, "Sorrow-Acre"
- Leo Tolstoy, "The Death of Ivan Ilyich"; "The Three Hermits"; "What Men Live By"
### Volume 4: Imaginative Literature III
- Molière, *The Misanthrope*, *The Doctor in Spite of Himself*
- Richard Brinsley Sheridan, *The School for Scandal*
- Henrik Ibsen, *An Enemy of the People*
- Anton Chekhov, *The Cherry Orchard*
- George Bernard Shaw, *The Man of Destiny*
- John Synge, *Riders to the Sea*
- Eugene O'Neill, *The Emperor Jones*
### Volume 5: Critical Essays
- Virginia Woolf, "How Should One Read a Book?"
- Matthew Arnold, "The Study of Poetry"; "Sweetness and Light"
- Charles Augustin Sainte-Beuve, "What Is a Classic?"; "Montaigne"
- Francis Bacon, "Of Beauty"; "Of Discourse"; "Of Studies"
- David Hume, "Of the Standard of Taste"
- Arthur Schopenhauer, "On Style"; "On Some Forms of Literature"; "On the Comparative Place of Interest and Beauty in Works of Art"
- Friedrich Schiller, "On Simple and Sentimental Poetry"
- Percy Bysshe Shelley, "A Defence of Poetry"
- Walt Whitman, *Preface to Leaves of Grass*
- William Hazlitt, "My First Acquaintance with Poets", "On Swift", "Of Persons One Would Wish to Have Seen"
- Charles Lamb, "My First Play", "Dream Children, a Reverie", "Sanity of True Genius"
- Samuel Johnson, *Preface to Shakespeare*
- Thomas de Quincey, "Literature of Knowledge and Literature of Power", "On the Knocking at the Gate in Macbeth"
- T. S. Eliot, "Dante", "Tradition and the Individual Talent"
### Volume 6: Man and Society I
- John Stuart Mill, "Childhood and Youth" from *Autobiography*
- Mark Twain, "Learning the River" from *Life on the Mississippi*
- Jean de La Bruyère, "Characters" from *A Book of Characters*
- Thomas Carlyle, "The Hero as King" from *On Heroes, Hero-Worship and the Heroic in History*
- Ralph Waldo Emerson, "Thoreau"
- Nathaniel Hawthorne, "Sketch of Abraham Lincoln"
- Walt Whitman, "Death of Abraham Lincoln"
- Virginia Woolf, "The Art of Biography"
- Xenophon, "The March to the Sea" from *The Persian Expedition*; "The Character of Socrates" from *Memorabilia*
- William H. Prescott, "The Land of Montezuma" from *The Conquest of Mexico*
- Haniel Long, "The Power within Us"
- Pliny the Younger, "The Eruption of Vesuvius"
- Tacitus, "The Life of Gnaeus Julius Agricola"
- François Guizot, "Civilization" from *History of Civilization in Europe*
- Henry Adams, "The United States in 1800" from *History of the United States of America*
- John Bagnell Bury, "Herodotus" from *The Ancient Greek Historians*
- Lucian, "The Way to Write History"
- Great Documents
- The English Bill of Rights
- Declaration of the Rights of Man and of the Citizen
- The Virginia Declaration of Rights
- The Declaration of Independence
- Charter of the United Nations
- Universal Declaration of Human Rights
- Thomas Paine, "A Call to Patriots – December 23, 1776"
- George Washington, "Circular Letter to the Governors of All the States on Disbanding the Army"; "The Farewell Address"
- Thomas Jefferson, "The Virginia Constitution" from *Notes on the State of Virginia*; "First Inaugural Address"; "Biographical Sketches"
- Benjamin Franklin, "A Proposal for Promoting Useful Knowledge among the British Plantations in America", "Proposals Relating to the Education of Youth in Pennsylvania"
- Jean de Crevecoeur, "The Making of Americans" from *Letters from an American Farmer*
- Alexis de Tocqueville, "Observations on American Life and Government" from *Democracy in America*
- Henry David Thoreau, "Civil Disobedience"; "A Plea for Captain John Brown"
- Abraham Lincoln, "Address at Cooper Institute"; "First Inaugural Address"; "Letter to Horace Greeley", "Meditation on the Divine Will"; "The Gettysburg Address"; "Second Inaugural Address"; "Last Public Address"
### Volume 7: Man and Society II
- Francis Bacon, "Of Youth and Age", "Of Parents and Children", "Of Marriage and Single Life", "Of Great Place", "Of Seditions and Troubles", "Of Custom and Education", "Of Followers and Friends", "Of Usury", "Of Riches"
- Jonathan Swift, "Resolutions when I Come to Be Old", "An Essay on Modern Education", "A Meditation upon a Broomstick", "A Modest Proposal for Preventing the Children of Ireland from Being a Burden to Their Parents or Country"
- David Hume, "Of Refinement in the Arts"; "Of Money"; "Of the Balance of Trade"; "Of Taxes"; "Of the Study of History"
- Plutarch, "Of Bashfulness"
- Robert Louis Stevenson, "The Lantern-Bearers" from *Across the Plains*
- John Ruskin, "An Idealist's Arraignment of the Age" from *Four Clavigera*
- William James, "On a Certain Blindness in Human Beings", "The Energies of Men", "Great Men and Their Environment"
- Arthur Schopenhauer, "On Education"
- Michael Faraday, "Observations on Mental Education"
- Edmund Burke, "Letter to the Sheriffs of Bristol"
- John Calhoun, "The Concurrent Majority"
- Thomas Babington Macaulay, "Machiavelli"
- Voltaire, "English Men and Ideas" from *Letters on the English*
- Dante, "On World Government" from *De Monarchia*
- Jean-Jacques Rousseau, "A Lasting Peace through the Federation of Europe"
- Immanuel Kant, "Perpetual Peace"
- Carl von Clausewitz, "What Is War?" from *On War*
- Thomas Robert Malthus, "The Principle of Population" from *Population: The First Essay*
### Volume 8: Natural Science
- Francis Bacon, "The Sphinx"
- John Tyndall, "Michael Faraday" from *Faraday as a Discoverer*
- Ève Curie, "The Discovery of Radium" from *Madame Curie*
- Charles Darwin, "Autobiography"
- Jean-Henri Fabre, "A Laboratory of the Open Fields"; "The Sacred Beetle"
- Loren Eiseley, "On Time"
- Rachel Carson, "The Sunless Sea" from *The Sea Around Us*
- J. B. S. Haldane, "On Being the Right Size" from *Possible Worlds*
- Thomas Henry Huxley, "On the Relations of Man to the Lower Animals", "On a Piece of Chalk"
- Francis Galton, "The Classification of Human Ability" from *Hereditary Genius*
- Claude Bernard, "Experimental Considerations Common to Living Things and Inorganic Bodies"
- Ivan Pavlov, "Scientific Study of the So-called Psychical Processes in the Higher Animals"
- Friedrich Wöhler, "On the Artificial Production of Urea"
- Charles Lyell, "Geological Evolution" from *Principles of Geology*
- Galileo, "The Starry Messenger"
- Tommaso Campanella, "Arguments for and against Galileo" from *The Defense of Galileo*
- Michael Faraday, *The Chemical History of a Candle*
- Dmitri Mendeleev, "The Genesis of a Law of Nature" from *The Periodic Law of the Chemical Elements*
- Hermann von Helmholtz, "On the Conservation of Force"
- Albert Einstein and Leopold Infeld, "The Rise and Decline of Classical Physics" from *The Evolution of Physics*
- Arthur Eddington, "The Running-Down of the Universe" from *Nature and the Physical World*
- James Jeans, "Beginnings and Endings" from *The Universe Around Us*
- Kees Boeke, "Cosmic View"
### Volume 9: Mathematics
- Lancelot Hogben, "Mathematics, the Mirror of Civilization" from *Mathematics for the Million*
- Andrew Russell Forsyth, "Mathematics, in Life and Thought"
- Alfred North Whitehead, "On Mathematical Method" from *An Introduction to Mathematics*, "On the Nature of a Calculus"
- Bertrand Russell, "The Study of Mathematics", "Mathematics and the Metaphysicians", "Definition of Number"
- Edward Kasner and James R. Newman, "New Names for Old", "Beyond the Googol"
- Tobias Dantzig, "Fingerprints", "The Empty Column"
- Leonhard Euler, "The Seven Bridges of Königsberg"
- Norman Robert Campbell, "Measurement", "Numerical Laws and the Use of Mathematics in Science"
- William Clifford, "The Postulates of the Science of Space"
- Henri Poincaré, "Space", "Mathematical Creation"; "Chance"
- Pierre-Simon Laplace, "Probability" from *A Philosophical Essay on Probabilities*
- Charles Sanders Peirce, "The Red and the Black"
### Volume 10: Philosophical Essays
- John Erskine, "The Moral Obligation to Be Intelligent"
- William Clifford, "The Ethics of Belief"
- William James, "The Will to Believe", "The Sentiment of Rationality"
- John Dewey, "The Process of Thought" from *How We Think*
- Epicurus, "Letter to Herodotus"; "Letter to Menoeceus"
- Epictetus, *The Enchiridion*
- Walter Pater, "The Art of Life" from *The Renaissance*
- Plutarch, "Contentment"
- Cicero, "On Friendship"; "On Old Age"
- Francis Bacon, "Of Truth"; "Of Death"; "Of Adversity"; "Of Love"; "Of Friendship"; "Of Anger"
- George Santayana, "Lucretius"; "Goethe's Faust"
- Henry Adams, "St. Thomas Aquinas" from *Mont-Saint-Michel and Chartres*
- Voltaire, "The Philosophy of Common Sense"
- John Stuart Mill, "Nature"
- Ralph Waldo Emerson, "Nature"; "Self-Reliance"; "Montaigne; or, the Skeptic"
- William Hazlitt, "On the Feeling of Immortality in Youth"
- Thomas Browne, "Immortality" from *Urn-Burial*
---
# 10 Years of Great Books
URL: https://www.rasulkireev.com/10-years-of-great-books/
Type: article
Date: 2022-07-01
Description: I'm starting a 10 Year Reading Plan proposed by Robert Hutchins and Mortimer Adler in their book "The Great Conversation". You should join me so that we can learn together better.
Tags: reading, classics, great books
Content:
import FoldableParagraph from '../../components/FoldableParagraph.vue';
I'm starting a 10 Year Reading Plan proposed in the [1st Volume (The Great Conversation)](/the-great-conversation) of the "Great Books of the Western World" series.
This plan is great because it is designed to help increase your chances of consuming and understanding classic works that might feel difficult at first (Aristotle, Thomas Acquinas, Hegel, and others).
> [Texts] get more difficult from year to year in two ways. The selections get longer, and they deal with more difficult subject matters.
See the reading plan with links [below](#reading-list).
Right now I'm reading in isolation, but would love to find a group of people who would join me on this journey. I think the best thing one can do to improve understanding is to discuss it with others. If you would like to join me, email me (me at domain of this site).
This is an ongoing project / post, so feel free to follow along and join me at whatever stage of the journey you are at. Would love to talk to similar minded people.
## Great Books
About 4 year ago I was reading Mortimer Adler's book "[How to Read a Book](https://www.goodreads.com/book/show/567610.How_to_Read_a_Book?from_search=true&from_srp=true&qid=SEJLp8bb3B&rank=1)", since I wanted to greatly improve how I read. I read a good chunk of the book, but found it a little to dry, so I "dropped" it. Reading it, was not a waste of time, as I learnt quite a bit of things about Analytical reading and [reading in general](/reading-is-good). However, one of the biggest gifts this book has given me is [a list of Recommended Books](https://bathtubbulletin.com/mortimer-adlers-reading-list/) that would go well with the type of reading that Mortimer talked about in the book.
This list intrigued me. I thought that it would be very cool to finish such a list, as if some world secret would open up to me. Obviously I don't think that, but I still do think that books from that list could change someone's life for sure.
At the time I thought that most of the books were a little difficult for me, to which Mortimer agreed:
> All of these books are over most people’s heads—sufficiently so, at any rate, to force most readers to stretch their minds to understand and appreciate them.
So I kind of the left the list for some time.
Fast forward 3 years, after reading a lot of (**newer**) books, and not making many notes, I decided to change my approach. I started to read more thoughtfully. I started to make more highlights, more annotation, more side notes, using various mediums (Kindle, Book Stickies, Journal, etc.). I also synced all these mediumd into [Readwise](https://readwise.io/) and slowly loading all the notes to my [Zettelkasten](/how-to-take-smart-notes/) using [Obsidian](https://obsidian.md/).
I started learning and remebering more from the books I read. Then earlier this year I somehow ran into the book series called the "[Great Books of the Western World](https://en.wikipedia.org/wiki/Great_Books_of_the_Western_World)". I started looking at the contents and realised it is very similar to the one that Mortimer Adler compiled. To my surprise he compiled that one too, with a team from University of Chicago.
I thought I'm ready to start reading the old books, the Great Books. I mostly read books on Kindle, but for this, I really wanted to read physical books from the actualy Encyclopædia Britannica publishing. I found the full set printed in 1971 on Ebay for $80, plus $70 for delivery.

When I received them, I was in shock. Some of them felt like they were never opened. That is to say condition of most of them was superb. Now I just have to start reading.
## Reading List
Where possible I'll be adding links to online resources where you can [read them for free](/how-to-read-books-for-free). When such
resources are available it is highly likely that I'll be leaving thoughts and comments using the
[Hypothes.is](https://web.hypothes.is/) Add-on. I encourage you to install it and join the conversation,
like the authors of these fantastic books did.
### Year 1
1. Plato
- ~~Apology~~ ([Text](http://classics.mit.edu/Plato/apology.html), [My Notes](/apology-plato/))
- ~~Crito~~ ([Text](http://classics.mit.edu/Plato/crito.html))
2. Aristophanes
- ~~Clouds~~ ([Text](http://classics.mit.edu/Aristophanes/clouds.html))
- ~~Lysistrata~~ ([Text](https://www.gutenberg.org/files/7700/7700-h/7700-h.htm))
3. Plato: ~~Republic [Book I-II]~~ ([Book I Text](http://classics.mit.edu/Plato/republic.2.i.html), [Book II Text](http://classics.mit.edu/Plato/republic.3.ii.html))
4. Aristotle: ~~Ethics [Book I]~~ ([Text](http://classics.mit.edu/Aristotle/nicomachaen.1.i.html))
5. Aristotle: ~~Politics [Book I]~~ ([Text](http://classics.mit.edu/Aristotle/politics.1.one.html))
6. Plutarch: The Lives of the Noble Grecians and Romans
- Lycurgus ([Text](http://classics.mit.edu/Plutarch/lycurgus.html))
- Numa Pompilius ([Text](http://classics.mit.edu/Plutarch/numa_pom.html))
- Lycurgus and Numa Compared ([Text](http://classics.mit.edu/Plutarch/n_l_comp.html))
- Alexander ([Text](http://classics.mit.edu/Plutarch/alexandr.html))
- Caesar ([Text](http://classics.mit.edu/Plutarch/caesar.html))
7. New Testament
- The Gospel According to Saint Matthew
- The Acts of the Apostles
8. St. Augustine: Confessions [Book I-VIII]
9. Machiavelli: The Prince
10. Rabelais: Gargantua and Pantagruel [Book I-II]
11. Montaigne: Essays
- Of Custom, and That We Should Not Easily Change a Law Received
- Of Pedantry
- Of the Education of Children
- That It Is Folly to Measure Truth and Error by Our Own Capacity
- Of Cannibals
- That the Relish of Good and Evil Depends in a Great Measure upon the Opinion We Have of Them
- Upon Some Verses of Virgil
12. Shakespeare: Hamlet
13. Locke: Concerning Civil Government [Second Essay]
14. Rousseau: The Social Contract [Book I-II]
15. Gibbon: The Decline and Fall of the Roman Empire [Ch. 15-16]
16. ~~The Declaration of Independence~~ ([Text](https://readwise.io/reader/shared/01j18e8yypzhfkwqzp0qyp7zkp), [my notes](/declaration-of-independence))
17. The Constitution of the United States
18. The Federalist [Numbers 1-10, 15, 31, 47, 51, 68-71]
19. Smith: The Wealth of Nations [Introduction—Book I, Ch. 9]
20. Marx—Engels: Manifesto of the Communist Party
### Year 2
1. Homer: The Iliad
2. Aeschylus: Agamemnon, Choephoroe, Eumenides
3. Sophocles: Oedipus the King, Antigone
4. Herodotus: The History [Book I-II]
5. Plato: Meno
6. Aristotle: Poetics
7. Aristotle: Ethics
- Book II
- Book III, Ch. 5-12
- Book VI, Ch. 8-13
9. Nicomachus: Introduction to Arithmetic
10. Lucretius: On the Nature of Things [Book I-IV]
11. Marcus Aurelius: Meditations
12. Hobbes: Leviathan [Part I]
13. Milton: Areopagitica
14. Pascal: Pensées [Numbers 72, 82-83, 100, 128, 131, 139, 142-143, 171, 194-
195, 219, 229, 233-234, 242, 273, 277, 282, 289, 298, 303, 320, 323, 325, 330-331,374, 385, 392, 395-397, 409, 412-413, 416, 418, 425, 430, 434-435, 463, 491, 525-531, 538, 543, 547, 553, 556, 564, 571, 586, 598, 607-610, 613, 619-620, 631, 640,644, 673, 675, 684, 692-693, 737, 760, 768, 792-793]
15. Pascal: Treatise on the Arithmetical Triangle
16. Swift: Gulliver’s Travels
17. Rousseau: A Discourse on the Origin of Inequality
18. Kant: Fundamental Principles of the Metaphysic of Morals
19. Mill: On Liberty
### Year 3
1. Aeschylus: Prometheus Bound
2. Herodotus: The History [Book VII-IX]
3. Thucydides: The History of the Peloponnesian War [Book I-II, V]
4. Plato: Statesman
5. Aristotle: On Interpretation [Ch. 1-10]
6. Aristotle: Politics [Book III-V]
7. Euclid: Elements [Book I]
8. Tacitus: The Annals
9. St. Thomas Aquinas: Summa Theologica [Part I-II, QQ 90-97]
10. Chaucer: Troilus and Cressida
11. Shakespeare: Macbeth
12. Milton: Paradise Lost
13. Locke: An Essay Concerning Human Understanding [Book III, Ch. 1-3, 9-11]
14. Kant: Science of Right
15. Mill: Representative Government [Ch. 1-6]
16. Lavoisier: Elements of Chemistry [Part I]
17. Dostoevsky: The Brothers Karamazov [Part I-II]
18. Freud: The Origin and Development of Psychoanalysis
### Year 4
1. Euripides:
- Medea
- Hippolytus
- Trojan Women
- The Bacchantes
3. Plato: Republic [Book VI-VII]
4. Plato: Theaetetus
5. Aristotle: Physics [Book IV, Ch. 1-5, 10-14]
6. Aristotle: Metaphysics [Book I, Ch. 1-2; Book IV; Book VI, Ch. 1; Book XI, Ch. 1-4]
7. St. Augustine: Confessions [Book IX-XIII]
8. St. Thomas Aquinas: Summa Theologica [Part I, QQ 16-17, 84-88]
9. Montaigne: Apology for Raymond de Sebonde
10. Galileo: Two New Sciences [Third Day, through Scholium of Theorem II]
11. Bacon: Novum Organum [Preface, Book I]
12. Descartes: Discourse on the Method
13. Newton: Mathematical Principles of Natural Philosophy [Prefaces, Definitions, Axioms, General Scholium]
14. Locke: An Essay Concerning Human Understanding [Book II]
15. Hume: An Enquiry Concerning Human Understanding
16. Kant: Critique of Pure Reason [Prefaces, Introduction, Transcendental, Aesthetic]
17. Melville: Moby Dick
18. Dostoevsky: The Brothers Karamazov [Part III-IV]
19. James: Principles of Psychology [Ch. XV, XX]
### Year 5
1. Plato: Phaedo
2. Aristotle: Categories
3. Aristotle: On the Soul [Book II, Ch. 1-3; Book III]
4. Hippocrates:
- The Oath;
- On Ancient Medicine;
- On Airs, Waters, and Places;
- The Book of Prognostics;
- Of the Epidemics;
- The Law;
- On the Sacred Disease
6. Galen: On the Natural Faculties
7. Virgil: The Aeneid
8. Ptolemy: The Almagest [Book I, Ch. 1-8];
9. Copernicus: Revolutions of the Heavenly Spheres [Introduction—Book I, Ch. 11];
10. Kepler: Epitome of Copernican Astronomy [Book IV, Part II, Ch. 1-2]
11. Plotinus: Sixth Ennead
12. St. Thomas Aquinas: Summa Theologica [Part I, QQ 75-76, 78-79]
13. Dante: The Divine Comedy [Hell]
14. Harvey: The Motion of the Heart and Blood
15. Cervantes: Don Quixote [Part I]
16. Spinoza: Ethics [Part II]
17. Berkeley: The Principles of Human Knowledge
18. Kant: Critique of Pure Reason [Transcendental Analytic]
19. Darwin: The Origin of Species [Introduction—Ch. 6, Ch. 15]
20. Tolstoy: War and Peace [Book I-VIII]
21. James: Principles of Psychology [Ch. XXVIII]
### Year 6
1. Old Testament [Genesis, Exodus, Deuteronomy]
2. Homer: The Odyssey
3. Plato: Laws [Book X]
4. Aristotle: Metaphysics [Book XII]
5. Tacitus: The Histories
6. Plotinus: Fifth Ennead
7. St. Augustine: The City of God [Book XV-XVIII]
8. St. Thomas Aquinas: Summa Theologica [Part I, QQ 1-13]
9. Dante: The Divine Comedy [Purgatory]
10. Shakespeare: Comedy of Errors, The Taming of the Shrew, As You Like It, Twelfth Night
11. Spinoza: Ethics [Part I]
12. Milton: Samson Agonistes
13. Pascal: The Provincial Letters
14. Locke: An Essay Concerning Human Understanding [Book IV]
15. Gibbon: The Decline and Fall of the Roman Empire [Ch. 1-5, General Observations on the Fall of the Roman Empire in the West]
16. Kant: Critique of Pure Reason [Transcendental Dialectic]
17. Hegel: Philosophy of History [Introduction]
18. Tolstoy: War and Peace [Book IX-XV, Epilogues]
### Year 7
1. Old Testament [Job, Isaiah, Amos]
2. Plato: Symposium
3. Plato: Philebus
4. Aristotle: Ethics [Book VIII-X]
5. Archimedes
- Measurement of a Circle
- The Equilibrium of Planes [Book I]
- The Sand-Reckoner
- On Floating Bodies [Book I]
7. Epictetus: Discourses
8. Plotinus: First Ennead
9. St. Thomas Aquinas: Summa Theologica [Part I-II, QQ 1-5]
10. Dante: The Divine Comedy [Paradise]
11. Rabelais: Gargantual and Pantagruel [Book III-IV]
12. Shakespeare: Julius Caesar, Antony and Cleopatra, Coriolanus
13. Galileo: Two New Sciences [First Day]
14. Spinoza: Ethics [Part IV-V]
15. Newton
- Mathematical Principles of Natural Philosophy [Book III, Rules]
- Optics [Book I, Part I; Book III, Queries]
16. Huygens: Treatise on Light
17. Kant: Critique of Practical Reason
18. Kant: Critique of Judgment [Critique of Aesthetic Judgment]
19. Mill: Utilitarianism
### Year 8
1. Aristophanes: Thesmophoriazusae, Ecclesiazusae, Plutus
2. Plato: Gorgias
3. Aristotle: Ethics [Book V]
4. Aristotle: Rhetoric
- Book I, Ch. 1—Book II, Ch. 1;
- Book II, Ch. 20—Book III, Ch. 1;
- Book III, Ch. 13-19
6. St. Augustine: On Christian Doctrine
7. Hobbes: Leviathan [Part II]
8. Shakespeare: Othello, King Lear
9. Bacon: Advancement of Learning [Book I, Ch. 1—Book II, Ch. 11]
10. Descartes: Meditations on the First Philosophy
11. Spinoza: Ethics [Part III]
12. Locke: A Letter Concerning Toleration
13. STERNE: Tristam Shandy
14. Rousseau: A Discourse on Political Economy
15. Adam Smith: The Wealth of Nations [Book II]
16. Boswell: The Life of Samuel Johnson
17. Marx: Capital [Prefaces, Part I-II]
18. Goethe: Faust [Part I]
19. James: Principles of Psychology [Ch. VIII-X]
### Year 9
1. Plato: The Sophist
2. Thucydides: The History of the Peloponnesian War [Book VII-VIII]
3. Aristotle: Politics [Book VII-VIII]
4. Apollonius: On Conic Sections [Book I, Prop. 1-15; Book III, Prop. 42-55]
5. New Testament
- The Gospel According to St. John
- The Epistle of Paul the Apostle to the Romans
- The First Epistle of Paul the Apostle to the Corinthians
7. St. Augustine: The City of God [Book V, XIX]
8. St. Thomas Aquinas: Summa Theologica [Part II-II, QQ 1-7]
9. Gilbert: On the Loadstone
10. Descartes: Rules for the Direction of the Mind
11. Descartes: Geometry
12. Pascal: The Great Experiment Concerning the Equilibrium of Fluids, On Geometrical Demonstration
13. Fielding: Tom Jones (Vol.. 37)
14. Montesquieu: The Spirit of Laws [Book I-V, VIII, XI-XII]
15. Fourier: Analytical Theory of Heat [Preliminary Discourse, Ch. 1-2]
16. Faraday: Experimental Researches in Electricity [Series I-II], A Speculation Touching Electric Conduction and the Nature of Matter
17. Hegel: Philosophy of Right [Part III]
18. Marx: Capital [Part III-IV]
19. Freud: Civilization and Its Discontents
### Year 10
1. Sophocles: Ajax, Electra
2. Plato: Timaeus
3. Aristotle:
- On the Parts of Animals [Book I, Ch. 1—Book II, Ch. 1]
- On theGeneration of Animals [Book I, Ch. 1, 17-18, 20-23]
5. Lucretius: On the Nature of Things [Book V-VI]
6. Virgil: The Eclogues, The Georgics
7. St. Thomas Aquinas: Summa Theologica [Part I, QQ 65-74]
8. St. Thomas Aquinas: Summa Theologica [Part I, QQ 90-102]
9. Chaucer: Canterbury Tales
- Prologue
- Knight’s Tale
- Miller’s Prologue and
- Tale
- Reeve’s Prologue and Tale
- Wife of Bath’s Prologue and Tale
- Friar’s
- Prologue and Tale
- Summoner’s Prologue and Tale
- Pardoner’s Prologue and Tale]
11. Shakespeare:
- The Tragedy of King Richard II
- The First Part of King Henry IV
- The Second Part of King Henry IV
- The Life of King Henry V
13. Harvey: On the Generation of Animals [Introduction—Exercise 62]
14. Cervantes: Don Quixote [Part II]
15. Kant: Critique of Judgement [Critique of Teleological Judgement]
16. Boswell: The Life of Samuel Johnson
17. Goethe: Faust [Part II]
18. Darwin: The Descent of Man [Part I; Part III, Ch. 21]
19. Marx: Capital [Part VII-VIII]
20. James: Principles of Psychology [Ch. I, V-VII]
21. Freud: A General Introduction to Psycho-analysis
---
# Blog Post Title Suggestions
URL: https://www.rasulkireev.com/blog-post-title-suggestions/
Type: prompt
Date: 2024-12-02
Description: This prompt generates blog post titles for any given project. It is inspired by the book "The Art and Business of Online Writing" by Nicolas Cole.
Tags: Writing, Blogging, SEO
Content:
This prompt was inspired by an awesome book "[The Art and Business of Online Writing](/the-art-and-business-of-online-writing)" by Nicolas Cole. It actually works pretty well.
I use it in my [SEO Blog Bot](https://seoblogbot.com/) project, to help indie founders come up with ideas for their project's blog.
That project is [built with django](https://builtwithdjango.com/), so the `{}` syntax you are seing comes from that. You just need to replace the `{name}` with an actual project name, and so on.
```
Generate blog post titles for the following project:
- Project Name: {name}
- Project Type: {type}
- Project Summary: {summary}
- Blog Theme: {blog_theme}
- Key Features: {key_features}
- Target Audience: {target_audience_summary}
- Pain Points: {pain_points}
- Product Usage: {product_usage}
Generate exactly 15 blog post titles (5 for each category) and format them as a JSON array with the following structure:
{{
"titles": [
{{
"category": "General Audience",
"title": "Example Title 1",
"description": "This title works because..."
}},
{{
"category": "Niche Audience",
"title": "Example Title 2",
"description": "This title works because..."
}},
{{
"category": "Industry/Company",
"title": "Example Title 3",
"description": "This title works because..."
}}
]
}}
Ensure each title:
1. Is specific and clear about what the reader will learn
2. Includes numbers where appropriate
3. Creates curiosity without being clickbait
4. Promises value or solution to a problem
5. Is timeless rather than time-sensitive
6. Uses power words to enhance appeal
Provide exactly 5 titles for each category (General Audience, Niche Audience, Industry/Company).
Return only valid JSON, no additional text or explanations outside the JSON structure.
```
---
# Pragmatic Thinking and Learning
URL: https://www.rasulkireev.com/pragmatic-thinking-and-learning/
Type: book
Date: 2024-10-10
Description: This books is an amazing resource for upping you mental game. It's super dense, so you might not finish it in one sitting, nor should you. If you implement at least 5% of the advice in this book you will drastically improve as a human being.
Author: Andy Hunt
Tags: Learning, Personal Development, Cognitive Science, Brain Science, Skill Acquisition, Expertise Development, Mind Management, Productivity, Focus, Self Improvement, Knowledge Management, Problem Solving, Critical Thinking, Habit Formation, Mental Models, Mindfulness, Professional Development, Deliberate Practice, Time Management, Neuroscience
Content:
## My Thoughts
This book is dense. Andy has clearly put a lot of thought and research into it.
Yet, it is very clear and easy to understand.
This feels like a rare combo these days.
Another awesome thing about this books is that each chapter can easily stand on its own, so there is no need to digest this book in one sitting. If you ever feel tired of the infromation and thought populating your head, you can put it down and return later to it. Days, weeks or even months after you've put it down.
As the title suggest the book will help you to improve your learning and thinking skills, which are getting important everyday. With the recent developments in AI more and more people will offload their thinking to the machine. That is the biggest mistake that you can make. However good the AI is and will be, the need to think clearly and learn/adapt quickly is crucial to our survival and flourishing.
If you apply learning form this book, you can get ahead of your competition quickly. But know, that this won't be easy. It will require a lot of planning, effort and dedication.
## Learnings
- There are five stated of competency, which would help you on your journey of learning:
- Stage 1: Novices
- Stage 2: Advanced Beginners
- Most people are advanced beginners
- Stage 3: Competent
- Stage 4: Profcient
- Stage 5: Expert
- Statistically, there aren’t very many experts—probably something on the order of 1 to 5 percent of the population
- when you are a novice you should follow rules, and as you move up the ladder you should start listening to intuition more.
- the best way to learn is to watch and imitate
- once you are and expert, you can't just stop. you will have to keep practicing to remain up there at the top.
- Expand on the idea of learning with your R-mode and then following with the L-mode.
- The reason that metaphors help people in the learning process is that it activates the R-mode in your brain.
- Create creative problems for yourself to help in the learning process. For example, try taking 2 seemingly unrelated terms and finding a connection between them like the author did here:
> For example, cigarette and traffic light might meld into the concept of using a red band on the cigarette as a stop-smoking aid.
As a side benefit this can help you with humor:
> talent for humor comes from drawing or extending relationships beyond the norm, truly seeing “out of the box.” A quick wit—being able to draw connections between things that aren’t related or to extend an idea past its breaking point—is a skill well worth practicing, honing, and encouraging in your team.
- Exapnd on "Working together is a provably effective way to discover helpful and interesting abstractions."
- To help verbalize ideas generated by R-mode use image streaming.
- Writing is an even better activity to bring ideas from your subconcsoius to your consvious and on to the paper. This can be any form of writting: blogging, morning journal, dream journal, letter writing (to yourself or someone else) etc. This doesn't have to be published, that's not the point here.
- If you have no topic you want to write about but do want to start blogging try Jerry Weinberg’s Fieldstone method
- If you are having a hard problem you can't seem to solve, try stepping away from your computer and go for a walk. Game changer! Doesn't have to be a walk, just needs to be distracting and non work related, preferrably not think intensive (stay away from technology! no phones, no tvs!). Cooking a meal, playing with your kids, etc, is the way to go.
- Introduce physical activity into your life, and do it regularly. This will drastically improve your on the job thinking as well as your subconcous thinking. Yoga, meditation, breathing techniques, and martial arts all affect how your brain processes information.
- The key to creativity and problem solving lies in finding different ways of looking at a problem
- Introduce small changes to your routine often. Your brain is tuned to be adaptive and these changes help "update" the wiring and prevent neural ruts.
- Rare things happen way more often then you think. Let's say any given (rare) event has a probability of 1/1000 to happen on any given day. Now take 1000 such events. Now the probability of any one of those events happning on any given day is 100%.
- When working on a project leave important decisions for later (as much as possible). This makes sense since in the beginning of the project we are most ignorant, but in the end we are experts and can make better decisions.
- Don't trust your memories too much, especially if they are a deciding factor. Memories changes, there is no way around that. Write things done for that.
- The is an interesting research siggesting that there are 4 generational archetypes which is important becuase the world changes its trajectory when a new generation has a different archetype. The go in cycles, where each generation creates a new generation with an opposing archetypes. Here are the 4 archetypes and their main characteristics:
- Prophet: Vision, values
- Nomad: Liberty, survival, honor
- Hero: Community, affluence
- Artist: Pluralism, expertise, due process
- When you are dead solid convinced of something, ask yourself why.
- Expectations create reality, or at least color it. If you expect the worst from people, technology, or an organization, then that’s what you’re primed to see.
- When you have a goal (e.g. learn something, build something) having a plan is a huge help to that project.
- Attending to that project when you have some free time is not going to cut it unfortunately. That means your streak in Duolingo will probably not make you fluent in Spanish. If you want to learn Spanish, come up with a plan and stick to it, otherwise, you are just wasting you time.
- Keep in mind though. It is no the plan that we are after, but the planning itself. Plans change and that is ok. What matter is that you have scoped the project you want to do and have estimated what it will take.
- Attend to your project often, on a regular basis. Some sessions will be productive, some won't and that's ok too. Ideally you should know what you will be working on during your session. Otherwise you could be easily distracted.
- Various learning techniques can be a huge help, but combining different learning techniques can drastically improve your results. Explore various techniques on your own, but here is a list to get you started:
- use mind maps to summarize you learning material. this will help you find interesting relationships and connections
- form a study group to discuss your learnings. hearing other peoples' ideas can help you with understanding and application
- use SQ3R for written material
- use Spaced Repitition (Anki) to test yourself often. Testing is one of the best ways to make sure you retain previously gained knowledge.
- try to explain the idea you learned to someone else, personally or through a blog post/video tutorial.
- your brain evolved to consume information through experience more than anything else. Sitting and consuming is not going to do much. You have to get out there an get experience learning the skill you want to achieve:
- learning a language? go and talk to someone
- learning a programming language? go and build a project with it
- learning brazilan jiu jutsu? go and train
- learning to play the guitar? go and play it
- learning to draw? go and draw
- learning to cook? go and cook
- another thing that can improve the odds of you sticking to your learning plan is to make it playful. make it fun.
- Give yourself permission to fail; it’s the path to success.
- give yourself some time during the day to think. no phones, no projects, no learning, just thinking. wonderful things happen when you mind is let wild without being distracted.
- Store your ideas in a notebook or a [wiki](/how-to-take-smart-notes), so that you can come back to it any time. Human do have a tendency to forget.
- Switching context is an underrated way to distract yourself. Try to avoid it as much as possible.
---
# The Art and Business of Online Writing
URL: https://www.rasulkireev.com/the-art-and-business-of-online-writing/
Type: book
Date: 2024-10-10
Description: Wonderful book about writing content that people will resonate. Very simple approach, but that is not to say it is not easy. It will take work to implement, but I have no doubt it will work.
Author: Nicolas Cole
Content:
## My Thoughts
I had a lot of fun reading this book. It was easy to read and easy to understand. Now, the only thing left is to actually start implementing the learnings.
One thing that surprised me is the recommendation agianst publishing on one own's site. But it definintely makes sense if you main goal is reach. I will try a form of this. I will start writing and if I'm proud of the written piece I will publish it on my own site and then federate. If not, I will post it elsewhere and federate everywhere.
Nicolas's life story was very interesting and motivating. In fact, it seems that in the books I have been reading lately, the parts with personal stories were the most engaging. That just goes to show that people like to hear stories and AI won't take over good writing.
## Learnings
### Core Writing Strategy
- Don't start a blog - focus on writing where audiences already exist (social platforms)
- Writing on your own platform hoping for audience is "Blogging", bringing voice to existing audience is "Online Writing"
- Focus on writing first, SEO/marketing later
- Consistency beats talent - successful writers are the most consistent ones
- Aim to publish at least every other week (2x per month minimum)
- The internet favors what's fast - optimize for speed and skimmability
### Content Structure
- Every post should follow: Introduction → Main Points → Conclusion
- First sentence should be short, clear, and capture the point in 10 words or less
- Use 1/3/1 or 1/5/1 paragraph structure (one opener, three/five supporting sentences, one conclusion)
- Break up text into small, digestible chunks
- Remove anything that isn't absolutely necessary
- Optimize for "Rate of Revelation" - how quickly you deliver value
### Headlines
- Must answer 3 questions:
1. What is this about?
2. Who is this for?
3. What's the promise/outcome?
- Start with numbers when possible (creates clear expectation)
- Make promises specific and emotional
- Remove unnecessary connecting words
- First 2-3 words are most important
### Content Categories
- Define your 3 main "content buckets":
1. General Audience (universal topics)
2. Niche Audience (your expertise)
3. Company/Industry Audience
- Focus on timeless content over timely content
- Use 5 main content forms:
1. Actionable Guide
2. Opinion
3. Curated List
4. Story
5. Credible Talking Head
### Growth Strategy
- Gather data for first 6 months to see what resonates
- Study top performers in your category
- Repurpose successful content into longer "Pillar Pieces"
- Syndicate content across multiple platforms
- Build email list with specific, valuable offers
- Focus on building a large library of content
- Use collaboration and cross-promotion with similar-sized creators
### Monetization
- Give away 99% of content for free
- Monetize through:
- Premium content
- Courses/workshops
- Consulting/services
- Books/products
- Speaking/teaching
- Think like an entrepreneur, not just a writer
- Focus on building loyal audience over quick views
The most important takeaway is that success requires consistent execution and implementation of these principles over time. Just knowing them isn't enough - you have to actually do the work consistently.
---
# Never Enough
URL: https://www.rasulkireev.com/never-enough/
Type: book
Date: 2024-09-09
Description: Andrew Wilkinson's autobiography on his path to become an accidental billionaire. Captivating and full of little golden nuggets to pick up by aspiring entrepreneurs.
Author: Andrew Wilkinson
Tags: Entrepreneurship, Business Memoir, Silicon Valley, Startup Culture, Personal Growth, Wealth Building, Tech Industry, Networking, Business Strategy, Risk-Taking, Success Stories, Failure and Resilience, Financial Wisdom, Career Development, Leadership
Content:
## My Thoughts
Fantastic story.
I have admired [Andrew](https://www.neverenough.com/about) for a long time. The frist time I heard him speak was on the My First Million Podcast. He is one of the most popular guests on that show and for a good reason. His story is fascianting and a lot to look up to. I have listened to a few of his interviews where he talked about various stories from his life, but getting this raw story in a book format is great.
Initially, I though about this book as a collection of lessons he learned along the way (which it sort of is), which is why I first read it with the intention of making a lot of notes. Then, about half way thrpuigh the book I just started reading for the story and stopped making notes. Reads very easily and very captivating at the same time.
One thing is for sure, his story is not finished. Yes, the book has an ending, but there is no way it ends here. I'm sure we will here more interesting stories in the future.
I definitely recommend it to anyone interested in building a business.
## Learnings
As I mentioned above I stopped reading this book for notes and immediate learnings, I just enjoyed the story. So here are a few tangible learning I picked up from the book. I'm sure I have internalized way more that will surface up later one.
- Andrew tried various business ideas, many of which failed, but he kept trying. This [persistence](https://signalvnoise.com/svn3/persistence-is-undervalued/) eventually led to his success.
- Business is about [solving problems for others](https://www.kalzumeus.com/2009/01/20/problem-solving-at-my-job-and-my-business/). Don't forget that on your next venture.
- Asking for more than expected often led to favorable compromises.
- You have to be able to [connect with people](https://sive.rs/dbt), there is just no way around that. You have to come out of your shell if you are an introvert.
- In SF, friendliest looking people are usually the most dangerous ones.
- Finding people who enjoy [doing the tasks you dislike](https://sive.rs/delegate) is crucial for the long term success of your business.
---
# The Code Book
URL: https://www.rasulkireev.com/code-book/
Type: book
Date: 2024-09-01
Description: This is a great intro into the world of Cryptography, if that is something you are into. Reads as easy as a novel.
Author: Simon Singh
Tags: Cryptography, History, Mathematics, Computer Science, Security, Codebreaking, Encryption, Ancient Scripts, World War II, Quantum Computing
Content:
## My Thoughts
I have tried reading a few books on Cryptography in the past as this is the subject I'm somewhat interested in. Every single time I dropped the book as I was either getting bored or started to lose the grasp on what was going on. It couuld be that it was the wrong time and place to read those books, but I'm going to stick to the former.
This read like a novel. Literally. I read it before going to sleep, which is when I usually read fiction.
Simon, did a great job describing complex topics in a simple way, through excellent storytelling. Each chapter has focuses on one develpoment in the world of cryptography and on one story where this development is relevant. So, not only are you learning about cryptography, but you are also learning some history.
This is not a book that gives you many life tips and advices. You are not going to take away a lot that would be super useful in your day to day life. But, this is not why you picked up this book. You picked it up to get a gentle intro into the world of cryptography. And that job is done excellently.
---
# The Dhandho Investor
URL: https://www.rasulkireev.com/dhandho-investor/
Type: book
Date: 2024-08-30
Description: Making investments is all about minimizing risk and maximizing returns. Learn all about Mohnish's "Heads, I win; tails, I don’t lose much!" approach.
Author: Mohnish Pabrai
Tags: Investing, Value Investing, Finance, Business
Content:
## My Thoughts
This book was recommended to me by [Andrew Wilkinson](https://www.neverenough.com/about). Well, not personally, I heard him mention it on one of the podcasts where he was a guest. Probably the [My First Million](https://www.mfmpod.com/) podcast.
Since Andrew is one of my heroes I thought that I have to read it. And I was not disappointed, I loved it. [Mohnish Pabrai](https://www.wagonsfund.com/people/mohnish-pabrai) did an excelent job here!
If you know who [Warren Buffett](https://en.wikipedia.org/wiki/Warren_Buffett), [Charlie Munger](https://en.wikipedia.org/wiki/Charlie_Munger) and Andrew Wilkinson are and like their approach to business, you will love this book. The whole book can be summarized in the following sentence: "Heads, I win; tails, I don’t lose much!".
It's all about making investment bets with basic principles in mind that will help you minimize risk and maximize return. When I say investments, it could mean either acquiring whole businesses like Patels' purchase of motels or just plain stock investments.
## Summary
- You can use [creative thinking](https://brainbaking.com/post/2021/11/creative-critical-thinking/) to go around the problem of lack of capital. [Richard Branson](https://en.wikipedia.org/wiki/Richard_Branson) is an amazing example of this, [creating a whole airline](https://corporate.virginatlantic.com/gb/en/our-story.html) withouth butloads of cash.
- The Dhandho framework consists of nine key principles:
- Focus on buying existing businesses
- Invest in [simple businesses](https://signalvnoise.com/posts/1757-a-reminder-of-how-simple-business-can-be-when-you-dont-make-it-complicated) in industries with slow change
- Buy distressed businesses in distressed industries
- Look for businesses with durable [competitive advantages](https://blog.asmartbear.com/unfair-advantages/) (moats)
- Make few, big, and infrequent bets
- Focus on [arbitrage](https://www.alexcrompton.com/blog/2018/02/15/how-to-beat-silicon-valley-competitors) opportunities
- Buy businesses at big discounts to intrinsic value
- Seek low-risk, high-uncertainty businesses
- Invest in copycats rather than innovators
- When invesing, simplicity is they key. If you can [write down the business thesis in a one short paragraph](/economical-writing) it is a good sign. If, on the other hand, you need to fire up Excel for some financial modelling, that's a red flag.
- Here are some ways to find distressed businesses:
- If you read the business headlines on a daily basis, you’ll find plenty of stories about publicly traded businesses. Many of these news clips reflect negative news about a certain business or industry.
- Stocks that have lost the most value in the preceding 13 weeks
- Take a look at Value Investors Club (VIC; www.valueinvestorsclub.com).
- Portfolio Reports (www.portfolioreports.com) is a monthly publication that lists the 10 most recent stock purchases by 80 of the top value managers
- free alternative is looking directly at the public filings (e.g., [SEC Form 13-F](http://access.edgar-online.com))
- read The Little Book That Beats the Market by Joel Greenblatt. After reading the book, visit www.magicformulainvesting.com.
- To be a good capital allocator, you have to think probabilistically. Bet big when the odds are in your favor.
---
# My First Acquisition
URL: https://www.rasulkireev.com/first-acquisition/
Type: article
Date: 2024-08-10
Description: After years of failures, I finally bought my first site.
Tags: business, acquisition, growth
Content:
In October 2019, I purchased [Ryan Kulp](https://www.ryanckulp.com/)'s [course about acquiring existing businesses](https://acquire.podia.com/how-to-buy-startups) to grow, instead of building one from scratch.
Ever since I wanted to try that. I had a [few projects](/projects) built from scratch under my belt, but they were not making any money, so I wanted to work with something that does.
In all these 5 years, I've been looking here and there for such a business, but they were either outside my price range or no a good match (not interesting to me or using a foreign tech stack).
Regarding the price range, it was not the price, but more so the lack of balls that stopped me. Getting into debt is scary, even if it is somewhat calculated. I understand that to make money you need to make a few risks, but I guess those were the risks I was not willing to take at the time.
July 2024, one of my favorite Developer who blogs, [Michael Lynch](https://mtlynch.io/) [posted](https://mtlynch.io/notes/buy-is-it-keto/) that he is selling [Is It Keto](https://isitketo.org/).
🚨🚨🚨
I knew, this is my chance.
For a product that made $1,793.20 in the last 12 months through ads and affiliate links, he was asking $1k... 🤯
I opened up the application form and answered all questions honestly, including the fact that I just wanted to work (even if for a small bit) with one of my favorite developers. I offered to pay $2k.
Michael reached out to me a few days later saying that he picked me 🥳 I couldn't believe it.
And so, we have started the process.
As far as business purchases go, I know that this was an easy one. Michael did most of the work. He:
- sent over the contract
- initiated the [Escrow.com](https://www.escrow.com/) transaction
- went through the altogether process
I only had to wire the money to Escrow.com. That was it. I didn't have to do all the due diligence stuff, since I trusted the seller.
The only hiccup in this process was Escrow.com. I haven't dealt with them before, so did Michael. And I sincerely hope that in the future I won't have to deal with them in the future.
Escrow have slowed done the process tremendously, from what should have been a week's worth of work to almost a month. Gazzilion verification related questions both for the buyer and the seller. Slow Customer Support replies, etc.
Thankfully in a few weeks the transaction has been approved and the business transfer was started.
Again, props to Michael for doing all the heavy lifting. He promptly transferred all the repos to my Github account, inititated the domain transfer, sent over all the Social Account transfers. I only had to not fuck up. Which I mostly did not, I think.
Deploying this site (that was built with [Gridsome](https://gridsome.org/), which I am familiar with) to [Vercel](https://vercel.com/) was a breeze.
The last pieces to this puzzle are getting re-approved by Google Adsense to start advertising on the site and updating all the Amazon affiliate links. Hopefully that goes smoothly, as well 🤞.
Next, I am planning to port this site to django, which shouldn't take much time due to the lack of complexity on the current version. I am also planning to add authentication so that users can save their favorite foods and automating the addition of products to the list.
Once that is done, I hope to come up with a viable strategy to earn income from this site, so that I can rely less on Google Ads, which I am not a huge fan of.
That's it. It was an exciting process and project for me. As they say you always remember your first. Regardless of how the future looks like regarding this project I am extremely happy with how everything went, and 99% of the credit for that definitely goes to Michael.
If you have any suggestions or ideas for Is It Keto, definitely shoot me an [email](mailto:me@rasulkireev.com), would love to discuss.
---
# Buttermilk pancakes
URL: https://www.rasulkireev.com/buttermilk-pancakes/
Type: recipe
Date: 2024-07-14
Description: Great Pancakes base recipe that can be enhanced easily (with berries, chocolate chips or other toppings)
Tags: Breakfast, Sweet
Content:
This is pretty much [Bon Appetit's Buttermilk Pancakes recipe](https://www.bonappetit.com/recipe/bas-best-buttermilk-pancakes), but with a few tweaks, mainly reduction of sugar.
Ingredients:
- 1.3 cups all-purpose flour
- 1.5 tablespoons sugar
- 1 teaspoon baking powder
- 1 teaspoon baking soda
- 1 teaspoon kosher salt
- 2 large eggs
- 1.25 cups buttermilk (can be replaced with Kefir or any other sour milky liquid)
- 2 tablespoons unsalted butter, melted
Steps:
1. Mix flour, baking soda and baking powder in a bowl.
2. Mix eggs, buttermilk, sugar, salt in a separate bowl (doesn't have to be large) until sugar dissolves.
3. Pour the liquid into the bowl with flour and mix (don't over do it, lump are ok).
4. Melt and add the butter to the mix. __Tip: cover with something to avoid butter being everywhere__.
5. Fry with a bit of oil in a pan. Turn, when the top part is no longer liquidy and is covered with bubbles.
---
# Оладушки
URL: https://www.rasulkireev.com/oladushki/
Type: recipe
Date: 2024-07-14
Description: Отлчиный базовый рецепт оладушек, которые можно несного видоизменить по вашему желанию.
Tags: Завтрак, Сладкий
Content:
По сути, это [рецепт блинов с пахтой от Bon Appetit](https://www.bonappetit.com/recipe/bas-best-buttermilk-pancakes), но с некоторыми изменениями, в основном с уменьшением количества сахара.
Ингредиенты:
— 1,3 стакана муки.
- 1,5 столовые ложки сахара
- 1 чайная ложка разрыхлителя
- 1 чайная ложка пищевой соды
- 1 чайная ложка (кошерной) соли
- 2 больших яйца
- 1,25 стакана кефира.
- 2 столовые ложки несоленого сливочного масла, растопленного
Шаги:
1. Смешайте в миске муку, соду и разрыхлитель.
2. В отдельной миске (не обязательно большой) смешать яйца, кефир, сахар, соль до растворения сахара.
3. Выливаем жидкость в миску с мукой и перемешиваем (не переусердствуйте, комочки в порядке).
4. Растопите и добавьте в смесь сливочное масло. __Совет: накройте чем-нибудь, чтобы масло не оказалось повсюду__.
5. Обжарьте на сковороде с небольшим количеством масла. Переверните, когда верхняя часть перестанет быть жидкой и покроется пузырьками.
---
# The Anthology of Balaji
URL: https://www.rasulkireev.com/balaji-anthology/
Type: book
Date: 2024-06-30
Description: Great book for people interested in optimistic high-tech future. If you are a 'side-project' person, you'll get many ideas from this book.
Author: Eric Jorgenson
Tags: Technology
Content:
## My Thoughts
It was a great read!
- Made me much more [optimistic](https://kk.org/thetechnium/radical-optimis/) about the [future](https://writings.stephenwolfram.com/category/future-perspectives/) (even though I was pretty optimistic already).
- Gave me a gazillion ideas for [side projects](https://www.joelonsoftware.com/2016/12/09/developers-side-projects/) to build (search on this page for "project ideas" too see a few).
- Helped me think about technology in a new light, the possibilities are endless.
- Introduced me to many new ideas to look into further.
- Motivated me to do and share more.
[Eric Jorgensen](https://twitter.com/EricJorgenson) did a great job compiling/writing this. Makes me want to learn about [Balaji](https://balajis.com/) a great deal more.
## Summary
In this book, Balaji, shares deep insights into the [future of technology](https://kk.org/thetechnium/undetectable-te/), its impact on society, and the possibilities it opens for [innovation](https://sirupsen.com/books/how-innovation-works) and [entrepreneurship](https://sive.rs/mentre). He also discusses the transformative power of technology in reducing scarcity and reimagining traditional systems, from cities and countries to regulatory bodies like the FDA.
Balaji argues that the tech industry has reached a pivotal point where starting new ventures like [Bitcoin](https://gwern.net/bitcoin-is-worse-is-better), [startup cities](https://paulgraham.com/cities.html), and even new countries might be easier and more effective than attempting to reform existing institutions. He believes in the critical role of technology in eliminating mortality and fundamentally changing sectors lagging due to regulation and subsidies, such as education, healthcare, and finance.
The book shows the potential of emerging technologies like cryptocurrency, AI, robotics, and digital nomadism, highlighting their early stages of adoption despite their transformative capabilities. Balaji also critiques modern education systems and suggests that digital tools offer a more personalized and efficient learning path.
Furthermore, Balaji discusses the alignment of media with truth, advocating for tools that track and verify the accuracy of [tech journalism](https://kk.org/thetechnium/investigative-journalism-by-am/), and he foresees a significant shift in the way we perceive and interact with the physical world through advancements in VR and robotics.
Throughout the anthology, there is a strong focus on the philosophy of building over arguing, [encouraging entrepreneurs to create alternatives](/minimalist-entrepreneur) rather than getting entangled in debates. By leveraging a deep understanding of history and a strategic view of the future, Balaji calls for a new era of builders and innovators who can think beyond the constraints of current systems to shape the future of technology and society.
This book is a call to action for tech enthusiasts, entrepreneurs, and thinkers to leverage technology not just for incremental improvements but for monumental shifts in how we live and work.
### Actionable Advive
- Embrace New Ventures Over Reform: Rather than trying to reform outdated systems, consider starting new initiatives. For example, instead of fixing old regulations, launch new technologies like Bitcoin or start new cities.
- Identify and Address Your Weaknesses: Self-awareness is crucial for personal and [professional growth](/you-are-the-problem). Regularly assess your weaknesses and actively work on turning them into strengths.
- Leverage Technology for Scalability: If you're in a field like academia or research, think about how starting a business might provide you with more resources and a broader impact than traditional grant-dependent paths.
- Regularly Reset Your Perspective: Treat every few years as a new beginning. Use it as an opportunity to leverage your accumulated resources such as your network, knowledge, and capital.
- Reduce Conservatism in Innovation: Encourage risk-taking in safe environments, especially in sectors like medicine and technology, to drive systemic improvements and innovations.
- Utilize Emerging Technologies: Keep an eye on and engage with emerging technologies such as blockchain, AI, VR, and biotech. These fields are ripe with opportunities for groundbreaking work and investments.
- Digital Literacy and Media Consumption: Critically evaluate the media you consume and consider developing tools to parse and verify the accuracy of information, especially in technology journalism.
- Building Full-Stack Startups: When entering traditional industries with technology, consider a full-stack approach where you control all aspects from production to customer interaction, which can significantly reduce dependency on outdated systems.
- Focus on Learning and Adaptability: Always be learning and adapting. Use the power of the internet and digital tools to stay updated with the latest developments in your field and beyond.
- Prioritize Projects That Scale: Focus on projects and startups that have the potential to scale massively. Use technology to build solutions that address large, underserved markets.
- Build With a Philosophy: Adopt the "win and help win" mentality over "live and let live." Focus on creating value that helps others succeed while ensuring your own success.
- Invest in Personal Growth: Allocate time to learning new skills and improving existing ones, particularly those that can leverage technological advancements.
- Innovate by Doing: Start building and experimenting with your ideas as soon as possible. Learning through practical implementation can lead to faster and more robust innovations.
- Engage With History and Global Perspectives: Study the history and practices of other cultures and industries to better understand potential technological impacts and innovations.
---
# Oh Crap! I Have a Toddler
URL: https://www.rasulkireev.com/i-have-a-toddler/
Type: book
Date: 2024-06-29
Description: Good book about raising a toddler. If you are reading this book, you are probably running into some difficulties with your kid. This book won't solve them in the way you are hoping, but it will still help.
Author: Jamie Glowacki
Tags: Parenting, Toddlers
Content:
## Summary
If you're in the throes of toddlerhood, Jamie Glowacki’s book is like having a wise friend who's got your back.
I'll be honest, it won't solve all your problems if any, but it might open your eyes to some aspects of your toddler's life.
What’s in the book?
- Boundaries: Jamie teaches us that setting clear boundaries isn’t mean—it’s necessary. It helps toddlers feel secure and know what to expect.
- Flexibility: She reminds us that rigid parenting philosophies often don’t stand a chance against the whirlwind of toddler needs. It’s all about staying flexible and meeting your child where they are.
- Connection is Key: Before you even think about correcting your little one, you need a solid connection. It’s about engaging with them in a meaningful way that makes both of you feel good.
- Self-Care: Yep, you matter too. Taking care of yourself isn’t just good for you—it teaches your toddler about self-care and sets a healthy example.
- Play and Learning: Play is serious business in toddler world. Jamie emphasizes letting kids lead their learning through play and warns against pushing formal education too early.
- Routine Matters: Whether it’s sleep, food, or managing transitions, having predictable routines can make a big difference in your toddler's behavior.
- Emotions and Discipline: She advises against traditional time-outs, suggesting instead that we try to understand what’s beneath the behavior. Also, learning to validate feelings can go a long way.
Jamie's approach is all about shifting your perspective from controlling to connecting. Her strategies aren’t just about surviving these years but really enjoying this wild phase of life.
Actinable advice:
- Define what is okay and what isn't clearly and consistently. Don't change the rules often. Stand by what you say.
- Adapt your parenting as your child's needs change. Don't be rigid, your kid is growing and his personality as well.
- Spend quality, focused time with your child every day, preferably doing what your kid wants (play).
## My Thoughts
You are curious about this book for one of two reasons:
1. You are preparing for the toddler years of your baby and are curious.
2. You have a uncontrollable toddler on your hands and need some help and support, now!
When I picked up this book I was the latter. It was a difficult week and our baby was out of control. I needed some help, fast.
This book doesn't have a magical pill that will make your baby quiet and sit still for hours on end. Such advice doesn't exists.
Ther is no changing your baby. Instead, you are the one that needs to change.
That was a hard pill to swallow, but a necessary truth.
This books still brough some comfort by aknowledging my feelings and helping me go through them (something you should apply to your baby too).
And co-incidentilly, our toddler is much more fun to play with. Not sure if I actually changed my ways, or just accepted the truth.
He is always fun to play with but sometimes, it gets a little too much. Knowing that this is a small test by your baby, which you should calmly get through is great.
---
# My Notes on the Declaration of Independence
URL: https://www.rasulkireev.com/declaration-of-independence/
Type: article
Date: 2024-06-27
Description: I finally read the Declaration of Independence and here are my thoughts on it.
Tags: reading, classics, great books, usa, freedom
Content:
## Preface
I was always scared to read this document. I was worried that I will not understand the way that
people wrote ~250 years ago, or even worse just won't have the vocab to understand (English is not my native tongue afterall).
In the end as with many things it turned out to be not that scary, even pleasent I would say.
Two things helped my conquer my fear:
1. The fact that this document was added in Year 1 of the 10 Year Plan proposed by Robert Hutchins and Mortimer Adler.
2. The fact that I had [Readwise](https://readwise.io/i/rasul) [Ghostreader](https://docs.readwise.io/reader/guides/ghostreader/overview) helping me along the way was crucial.
## Summary
For anyone who hasn't read this monumental document, here is the gist of it:
- American Colonies (united States of America) got tired of King George III tyranny.
- They think it is their moral duty to the world and god to put all of their thoughts on a document.
- They list all the things that King has done horribly.
- Finally they declare that from the moment of signing this document they are independent.
## Thoughts
It was very interesting to read, knowing a bit of context from [OverSimplified video](https://www.youtube.com/watch?v=gzALIXcY4pg).
My only question/lack of understanding was regarding the "all men created equal" message give all the slavery that was going on at the time.
I would love some historian to shed some light on this for me. Seems somewhat hypocrticial.
Other than that is was a great statement from the group that felt they can govern better than their current government.
## My Notes
- **The unanimous Declaration of the thirteen united States of America,** When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.
**Note:** The Declaration of Independence says that when a group of people feel the need to break away from another group and become their own separate and equal country, they should explain why they want to do this.
- We hold these truths to be self-evident, that all men are created equal
**Note:** The first immediate thought I'd that it is slightly hypocritic given all the slavery that was going on?
- whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness.
**Note:** I wonder what the founding fathers thought when they imagined people abolishing the government. How is it best to implement.
- Assent to Laws
**Note:** In the Declaration of Independence: A Transcription written by Carter Braxton, the term "Assent to Laws" is used to describe King George III's refusal to approve or agree to certain laws that were deemed necessary for the public good. This refusal is seen as a violation of the principles of good governance and the consent of the governed, which ultimately leads to the declaration of independence by the American colonies. King George III's denial of assent to laws is one of the grievances listed in the document as evidence of his tyranny and the justification for the colonies' separation from British rule.
- He has refused to pass other Laws for the accommodation of large districts of people, unless those people would relinquish the right of Representation in the Legislature, a right inestimable to them and formidable to tyrants only.
**Note:** He wouldn't make new laws to help many people unless they gave up their right to have a say in making decisions in the government, which is really important to them and only scary to cruel rulers.
- as we hold the rest of mankind, Enemies in War, in Peace Friends.
---
# The Algebra of Wealth
URL: https://www.rasulkireev.com/algebra-of-wealth/
Type: book
Date: 2024-06-26
Description: Great guide to building financial security in our modern, tech-driven world. Cuts through the bullshit and just speaks plain facts.
Author: Scott Galloway
Tags: Personal Finance, Wealth Building, Career Development, Investing, Time Management, Stoicism, Financial Planning, Self-Improvement, Economic Strategy, Life Skills
Content:
## Summary
The Algebra of Wealth has four main components: [Stoicism](https://durmonski.com/book-summaries/the-little-book-of-stoicism/), [Focus](https://signalvnoise.com/svn3/how-do-you-focus/), [Time](https://m.signalvnoise.com/compounding-time/), and [Diversification](https://ofdollarsanddata.com/its-not-about-the-money/).
- Stoicism:
- Living an [intenational life](https://en.wikipedia.org/wiki/Intentional_living) is one of the greatest things you can do. Don't just go with the flow, actually plan out your life. Have [goals](https://www.joelonsoftware.com/2009/01/08/goals/).
- [Saving money](https://durmonski.com/life-advice/art-of-saving-money/), [developing strong character](https://www.nateliason.com/blog/focus-mental-operating-system-not-apps), and connecting with community will do wonders for your [happiness](https://tetw.org/Happiness).
- Virtues to focus on and grow: courage, [wisdom](https://www.nateliason.com/notes/lessons-seeking-wisdom-peter-bevelin), justice, and [temperance](https://www.nateliason.com/notes/autobiography-benjamin-franklin).
- Focus:
- Primarily about earning income.
- Don't "follow your passion". Instead [follow your talent](https://signalvnoise.com/posts/2566-you-can-not-buy-ideas-or-talent).
- Find something you're good at and become great at it.
- Time:
- This is you most important asset in your life. Use it well.
- This doesn't only apply to what [you do](https://matt-rickard.com/showing-up-everyday), but what your money does too. [Compund interest](https://ofdollarsanddata.com/wanna-get-rich-think-fractally/) is one of the strongest forces.
- Improve you [time management skills](https://m.signalvnoise.com/manufacturing-quality-time/). That might mean a "[digital detox](https://durmonski.com/life-advice/why-i-quit-social-media/)" or just [intentional media consumption](https://durmonski.com/life-advice/benefits-of-staying-off-social-media/).
- Diversification:
- This part is very hard to properly summarize. There is just so much details and nuance that Scott goes into.
- He goes into a lot of detail on different asset classes and financial and economic principles that will help you make choices regarding your finances and goals.
Key Advice:
- Economic security is more about what you keep than what you earn.
- Success often comes from persistence and the ability to move through failure.
- Building a strong community and [network](https://vadimkravcenko.com/shorts/networking-introvert-cto/) is crucial for success.
- Consider market dynamics when choosing a career path. Since we covered no "following your passion" it makes a lot of sense to choose you calling based on the market interest. For example, with the advancements in AI it might make sense to learn about that from the prism of your talents.
- Invest in real estate when it aligns with your life stage. Buying a house is probably going to be the largest purchase in your life. It can be a great asset, but might not be the best investment if you are early in your career.
- Convert income into capital and diversify investments. The difference being that income is something you earn and spend, while capital is something that works for you.
- Be aware of and strategically plan for taxes.
- Maintain a long-term perspective in wealth building.
## My Thoughts
I loved this book.
It cuts through the bullshit and just states plain facts. [Scott Galloway](https://profgmedia.com/) is master communicator.
There is no groundbreaking information here, just useful things for your life that you might have not considered or forgot about.
---
# Mochi Waffles
URL: https://www.rasulkireev.com/mochi-waffles/
Type: recipe
Date: 2023-11-11
Description: This is my wife's favorite breakfast.
Tags: Breakfast, Sweet
Content:
My Wife's Favorite Breakfast. 99% the credit goes to [Joshua Weissman](https://www.joshuaweissman.com), since I basically use [his recipe](https://www.joshuaweissman.com/post/perfect-homemade-waffles). I make just a couple adjustments, most notable: sugar redaction.
Ingredients:
- 225g mochiko flour
- 1.5 teaspoons baking powder
- 180 grams of milk
- 1 egg
- 30g sugar
- pinch of salt
- 2 tablespoons (28g) melted unsalted butter
Steps:
1. Mix flour and baking soda in a bowl.
2. Mix eggs, milk, sugar, salt in a separate vessel (doesn't have to be large) until sugar dissolves.
3. Pour the liquid into the bowl with flour and mix.
4. While mixing, put butter into that vessel you used for liquids and melt in the microwave. __Tip: cover with something to avoid butter being everywhere__.
5. Mix in the butter until smooth.
6. Then use your waffle maker. There are two ways you can do that:
1. Use low heat setting to make waffles that are chewy from outside to the inside.
2. Use high heat setting to get waffle that are crispy on the outside and chewy on the inside.
---
# The Happy Sleeper
URL: https://www.rasulkireev.com/happy-sleeper/
Type: book
Date: 2023-11-18
Description: This book will help you to teach your baby to fall asleep by himself. That's it, that's the premise on the book. And let me tell you... It delivers. The earlier you begin the better.
Author: Julie Wright & Heather Turgeon
Tags: Parenting, Sleep
Content:
## Summary
- Overhelping babies and children to sleep can hinder their natural sleep abilities and development.
- Consistency and creating patterns are important for babies and children to relax and sleep well.
- Well-rested babies and children are emotionally balanced, healthier, more creative, and have better cognitive abilities.
These are the arguments laid out to convince you to follow their method. Below I will describe the method they provide for kids 6 months and older. They do also have a chapter for younger kids, but I skipped it since it was irrelevant to me.
**The Sleep Wave method** is going to be your weapon of choice.
First, you need to establish a nighttime ritual. Here are some examples from the book:

My wife and I tried to do a full 6 month one but then reduced it down a little. Here is what we do:
1. Dinner (solid foods) at ~6pm
2. Bath until about ~7pm
3. Pajamas
4. A little Breast Milk
5. "Songs and Lullabies" if my wife putting him to sleep, and saying good night to objects if I'm putting him to sleep.
6. Key Phrase: "Mom and Dad love you very much. We are right here, next door. Have some rest and when you wake up we will play". This can be anything that you want.
This is the first portion. Next things can go 2 ways. Your baby sleeps (great!) or your baby screams. If the former, nothing for you to do, just enjoy life. If the latter, here is what you do:
1. Go into your baby's room. Don't go close to him, just enter and close the door behind you (not all the way).
2. Say the key phrase that you came up with earlier.
3. Exit.
That's it. With this method, your baby will be a pro sleeper in no time. There are some psychological difficulties for parents to let their baby cry. Authors cover this too. However, these arguments didn't really help my wife. In the "My Thoughts" section I will share what helped her. But here is what the authors have to say about this:
- The Sleep Wave method requires consistency and may take time for the baby to adjust and develop their sleep abilities.
- Follow this path religiously and don't cave in to your baby's screams.
Here are some Nap Schedule Examples:

## My Thoughts
This book is great. In reality, this could be described in a blog post or even a tweet, but that doesn't matter. If you have a baby that is at least 4 months old, you should give it a read. I read it in 4-5 days, even though I'm generally a slow reader.
**Dealing with Screams**
I personally didn't have an issue with my son screaming his lungs out (yes, sounds horrible, but hear me out). I just knew how much we loved him and how happy his life must be during the day. We do everything for him. I concluded that those screams and cries are not from pain or suffering, they are just tears of change. People don't like to change, but they must.
My wife was crying her eyes out every time she had to wait those 5 minutes of screaming. And nothing that I said calmed her down. Here is what helped her.
One morning she decided to stay with our son while he was "falling asleep". He was in his crib and she was right next to him. He did not care. He was just looking at the door and screaming hoping that someone would pick him up. If you do this, make sure not to touch or pick up your baby, just be near and try to calm him with your voice.
---
# Four Thousand Weeks
URL: https://www.rasulkireev.com/4000-weeks/
Type: book
Date: 2023-10-24
Description: Great book about our relatinship with time and productivity. The core idea is that we are to consumed by the idea of being at maximum productivity and that harms us and stops from enjoying life.
Author: Oliver Burkeman
Tags: Nonfiction, Self Help, Philosophy, Productivity, Psychology, Personal Development, Management
Content:
## Summary
In Four Thousand Weeks, Oliver Burkman explores the concept of time and how our limited lifespan affects our perception of it. He argues that our obsession with productivity, efficiency, and control over our time actually makes us more stressed and anxious. He goes against the idea that we can achieve work-life balance or find satisfaction by trying to do more and be more productive. Instead, he suggests embracing our limitations, accepting that we can't do everything, and focusing on what truly matters to us. The book also delves into the importance of patience, embracing discomfort, and finding meaning in the present moment. Ultimately, the author encourages us to let go of the pressure to achieve greatness and instead embrace the ordinary moments of life.
Here are some things you can do to improve your life, today:
- Embrace your limited time and accept that you can't do everything. Focus on what truly matters to you.
- Implement a "fixed volume" approach to productivity, setting predetermined time boundaries for your work.
- Serialize your tasks and focus on one big project at a time, avoiding the temptation to multitask.
- Prioritize and decide in advance what you are willing to fail at, freeing up your time and energy for what truly matters.
- Keep a "done list" to focus on what you have already accomplished, rather than constantly worrying about what's left to complete.
- Embrace boring and single-purpose technology to minimize distractions and stay focused on the task at hand.
- Seek novelty in the mundane by paying more attention to every moment and finding curiosity in everyday interactions.
- Cultivate instantaneous generosity by acting on generous impulses right away, whether it's giving money, checking in on a friend, or praising someone's work.
- Practice doing nothing and embracing moments of stillness and quiet, allowing yourself to rest and recharge.
- Let go of the pressure to achieve greatness and find meaning in the present moment, appreciating the ordinary moments of life.
## My Thoughts
I can't exactly recall why I decided to pick up that book, but I can tell you that I was suprised when I started reading it.
I expected it to be something else entirely. That was a pleasant surprise though.
If you are into producitivity stuff, you might have seen that more and more blog posts are devoted to our unhealthy relationship with productivity.
I think the source for such inspiration and focus change is that book.
At times I have felt that it could have been shorter and that a similar theme is streched out over the course of the whole book, but that was a rare thought. Most of the time the author kept me interested by sharing not only his thoughts on the topic, but the thoughts and examples from many different people across the world and ages.
I definitely would recommend this book to a friend.
---
# List of SEO Meta Tags I Use
URL: https://www.rasulkireev.com/list-of-seo-metatags/
Type: tutorial
Date: 2023-10-24
Description: SEO Metatags I use in my articles... Done for my personal future references, since there are no such posts available online that are not overSEOed.
Tags: HTML, SEO, Metatags
Content:
I just couldn't find a simple list of SEO metatags to use. Only over-SEOed articles (funne enough). So here is the list of all the SEO tags and Schema data I put on my articles:
```html
Sample Webpage
```
---
# Count of Monte Cristo
URL: https://www.rasulkireev.com/count-of-monte-cristo/
Type: book
Date: 2023-07-07
Description: This is a beautiful and engaing story of wrongful imprisonment and a desire for a revenge. At times a little slow, but exciting enough in other parts to fully compensate.
Author: Alexandre Dumas
Tags: Fiction, France, Revenge, Love, God
Content:
## Summary
I'm not going to go into great detail when summarizing this book, as to not spoil anything.
This is a story of wrongful imprisonment and a desire for the revenge.
## My Thoughts
I enjoyed reading this story. Some parts were a little slow, but other parts compensated with an extremely interesting plot twists and stories.
Some questions to ponder while reading this book:
- Is revenge a justified means of achieving justice or does it perpetuate a cycle of violence and destruction?
- Analyze the transformations undergone by the main characters, particularly Edmond Dantès, as they navigate through their journey. How does one's understanding of self change over time? Is it possible to maintain one's true identity in the face of adversity?
- Does wealth bring happiness or corrupt individuals? How does the pursuit of power drive the actions of the characters?
- Can trust be regained once it is broken?
---
# You are the Problem
URL: https://www.rasulkireev.com/you-are-the-problem/
Type: article
Date: 2023-09-25
Description: We always blame the other person for being hard to deal with, but it is likely that you are the problem.
Tags: Self-Reflection, Psychology
Content:
When we are unhappy about our interactions with another person, we always blame them for that. We think that they are very difficult to deal with.
It very well may be that they are hard to deal with, but I have bad news for you... You are a pain in the ass to deal with too.
In fact, I think that in a negative situation, it is safe to assume that you are the problem and you are hard to deal with.
That's good news actually. Because when the other is to blame you can't do anything about that. But if you are at fault you can fix everything, because you are 100% responsible for the action that you take and the words you say.
## Example from my life
The reason I thought about this was because of the memory that cropped into my head.
About 3 years ago, when it was just my wife and I living in our little Newark apartment, we would often fight. I thought that she didn't give me enough free time to do things that I wanted (at the time it was building a side project to learn programming).
To me, she was the problem. We spend our time always watching tv, too much walking, etc., etc. (I realize that when writing this I sound like a total dick. I promise you I'm not, but at the same time I kind of was, and you can see where I'm going with this.)
Now that we have a baby, and I'm working two jobs. I somehow found time to do those things. We still walk, talk, and watch movies. We have a 9-month-old baby on our hands, but I somehow find time to work on side projects (granted I am a better and more efficient programmer now, so that helps).
I realized that the problem wasn't that she somehow robbed me of my precious time, but that I didn't find time for it myself. I didn't tell her that I needed certain blocks of time. I didn't make it clear what I needed. The list can go on and on.
I now realize that I was probably very hard to deal with and she deserves all the credit in the world for putting up with me.
---
# On the Golden Balance in Life
URL: https://www.rasulkireev.com/golden-balance/
Type: article
Date: 2023-09-08
Description: It pays to approach your life with the golden balance in mind.
Tags: Balance, Spectrum, Life, Personal Growth, Focus
Content:
> Focus means head down. Big picture means head up. The more you’re doing of one, the less you’re doing of the other. If you’ve been head-down on a task for too long, lift your head up to make sure you’re going the right way. Don’t do well what you shouldn’t do at all.
This is just one of the many golden nuggets in [Derek Sivers](https://sive.rs)' book [How to Live](https://sive.rs/h). The point is that if you are too focused on your current tasks, you might miss out on something on a bigger scale, and vise versa.
But I think there is a an even bigger idea hidden here.
Most things in our lives live on the spectrum. Most of the time, the best place to be on that spectrum is in the middle and tipping your toes on either side of that middle from time to time.
Many cultures have stories that support these ideas:
- The Story of Yin and Yang in the Chinese Culture
- The Story of the Two Wolves in the Cherokee Culture
- The Story of Icarus and Daedalus in the Greek Mythology
Here are some examples form our own life.
## 1
Let's start with the most toxic topic on the internet. Parenting. Instead of fixating on being permissive or an authoritarian parent, why don't you be both. Different situations require different reactions. There is no use of applying one strategy to all situations.
> If all you have is a hammer, everything looks like a nail.
## 2
Instead of being a atheist or a religious fanatic, why don't try the other side some time? If you hate religion, try going to a Sunday service some time, maybe you'll see a community of supportive people. If you can't imagine you life without religion, why don't you try going to a bar once to see what it is like to do something different.
## 3
Let's finish on the example from politics... Why be an ultra right and support ideas like "total repeal of gun control laws" or "total denial of climate change", or be an ultra left and support "complete police defunding" or "communism like policies". By being in the middle you can take a weighted approach to making choices about policies. You can take the best of the two world.
---
# July 2023
URL: https://www.rasulkireev.com/july-2023/
Type: article
Date: 2023-08-01
Description: What I did in July with my side projects.
Tags: 2023, July, Review
Content:
Here are the things I did during July 2023.
## Tech Job Alerts ([🔗](https://gettjalerts.com/))
This was the project I focused the most on this month. I had a skeleton ready where I can trigger an async task to scrape various sources for any jobs that companies are hiring for. Decided to finally make this into a "finished" products. Here is what I did:
- Create a search page where user can search for all the past and current job offerings.
- Create a newsletter which will send subscribers a weekly email based on the technology they chose. Right now, I'm only allowing one. Thining of allowing multiple for paid users, but not sure yet. Still, yet to setup paid accounts.
- All of the tasks are now automated. Finding jobs, parsing texts, sending emails. Feels awesome! Will surely do this for all the other projects I'm working on.
## Other Projects
I do have other projects I'm working on, but this month haven't done much work on them:
- [Talent Leads](https://gettalentleads.com). Just a couple bug fixes and improvements.
- [Built with Django](https://builtwithdjango.com). Nothing.
- [Personal Website](https://www.rasulkireev.com). Almost done writing book review for "Count of Monte Cristo"
- [LevReview](https://levreview.com). Nothing.
- OTB Chess. Realized that instead of using Digital Ocean Snapshot, I can backup directly from the app. So, I did that and am moving the ofrum to the new server. Unfortunately the domain is gone, so will have to find a new one.
---
# Get a Newsletter
URL: https://www.rasulkireev.com/get-a-newsletter/
Type: article
Date: 2023-03-26
Description: You really need to get a newsletter it is the best way to keep up with your online friends.
Tags: Newsletter, Online Friends
Content:
## TL;DR
- "The Algorithm" will make it easy for your friends to miss news share online.
- So, we should all create a personal newsletter and keep up with each other that way.
- Go to [Buttondown](https://buttondown.email), create a Newsletter (it's free).
- Share it with the world, your Twitter followers, Friends, or anyone else you think of.
- Also, share it me via [this form](https://baserow.io/form/2fyNlrdETFHg0GYkEWH_VQmbuzDrFwpRMGMZfpQrrSQ). It will show up in a [Public List of Personal Newsletters](https://baserow.io/public/grid/U0RmCAWJaiF9s2nzBFpi-J45TjBgONCKH6RM10Q8WNk).
- And start writing, when you have something to share.
## Why
A while back I ran into [Jakob’s](https://jakobgreenfeld.com/) [tweet](https://twitter.com/jakobgreenfeld/status/1619668018577149952):
https://twitter.com/jakobgreenfeld/status/1619668018577149952
He made a good observation that most of Justin Jackson's subscribers did not see his tweet where he shares the link to his "[Year in Review](https://justinjackson.ca/2022-review)" even though they would find it useful.
I agree, as a subscriber I would have loved seeing it in my feed. But, guess what, I found this link through [Justin's newsletter](https://justinjackson.ca).
This made me think that in the future, the most reliable way to keep up with your online friends (besides reaching out directly) will be through personal newsletters.
In the not too distant past, people used RSS to keep up with others. The new version of that will be Personal Newsletters.
## How
Some people will overthink this:
- “I need to do this on the schedule”
- “I need to think about optimizations”
- “I need to style the sign up forms”, etc.
Remember that we are not talking about promoting your business. We are just concerned with personal connections. This means:
- You don't have to make every week, or month. Just send it to people who subscribed, whenever you have anything to share.
- Don’t think about pretty sign up forms. Just find a a free service that will do that boring stuff for you. [Buttondown](https://buttondown.email) is amazing for this.
- You don't have to think about open rates, conversion and other stuff like that, it doesn't matter when you are sending it to friends.
So, just create a newsletter and share it with the world. Also share it with me via [this form](https://baserow.io/form/2fyNlrdETFHg0GYkEWH_VQmbuzDrFwpRMGMZfpQrrSQ), so that it shows up in the [Public list of Personal Newsletters](https://baserow.io/public/grid/U0RmCAWJaiF9s2nzBFpi-J45TjBgONCKH6RM10Q8WNk).
Here is a list of free tools you can use (however, in my opinion [Buttondown](https://buttondown.email) is the best):
- [TinyLetter](https://tinyletter.com/)
- [Substack](https://substack.com/)
- [ListMonk](https://listmonk.app/)
- [Beehiiv](https://www.beehiiv.com/)
---
# The Millionaire Fastlane
URL: https://www.rasulkireev.com/millionaire-fastlane/
Type: book
Date: 2023-03-17
Description: The Millionaire Fastlane is a highly motivational guide advocating entrepreneurship and smart money management. I strongly recommend it to anyone who wants to improve their life financially.
Author: MJ DeMarco
Tags: Education, Personal Finance, Wealth Building, Entrepreneurship, Financial intelligence, Motivation, Success, Investment, Financial freedom, Self-help, Business, Money management, Retirement planning, Passive income, Financial education, Financial planning
Content:
## My Thoughts
Overall, "The Millionaire Fastlane" is more of a motivational then practical guide to achieving financial freedom through entrepreneurship and smart money management. That is not a bad thing. The first time I "read" this book, was actually by reading it on Audible. It was an awesome experience.
I recommend to listen to this book while doing chores, or activities that don't require listening. I, for example, listened to it in a few days when walking with my son (he is an infant and slept the whole walk). MJ DeMarco (the author) does an awesome job narrating this book. I had no trouble understanding and following when listening on 2x.
The second time, I actually read it to take more notes. Another awesome thing about this book (besides being greatly narrated by the author) is that MJ does a stellar job summarizing each chapter, which is why you almost don't need to make any notes yourself. Below you can see those highlights.
If you are thinking of becoming an entrepreneur or are thinking to change something about your life, then this is a fantastic book to do that! Not only will you get very motivated to improve your life, but you will also get a ton advice on how to do this efficiently.
## Summary
The main idea described in "The Millionaire Fastlane" is that the traditional paths to wealth, such as saving, investing in the stock market, or climbing the corporate ladder, are slow and unreliable. Instead, he suggests that the "fastlane" to wealth is through entrepreneurship and creating value for others. MJ DeMarco outlines a set of principles and strategies for building a successful business and creating passive income streams that can lead to financial independence.
Here are some of the main principals that DeMarco preaches:
- Entrepreneurship is key: Entrepreneurship offers the fastest and most reliable path to wealth. Starting a successful business is the best way to create passive income streams.
- Focus on creating value: To build wealth, you need to provide value to others. Focus on creating products or services that solve problems or fulfill needs.
- Avoid the "slowlane" mindset: The traditional path to wealth (saving, investing in the stock market, etc.) is slow and unreliable. Instead, adopt a "fastlane" mindset and focus on creating value and building businesses.
- Take calculated risks: Building wealth requires taking risks, but they should be calculated risks based on a solid understanding of the market and the potential rewards.
- Be persistent and determined: Building wealth is not easy, and setbacks are inevitable. Persistence and determination are key to overcoming obstacles and achieving success.
- Focus on your strengths: Identify your strengths and focus on developing them. Outsource tasks that are not your strengths to others who are better equipped to handle them.
- Build a strong personal brand: Your personal brand is critical to building a successful business. Develop a reputation for excellence and deliver on your promises.
- Seek mentorship and guidance: Learning from those who have already achieved success can be invaluable. Seek out mentors and coaches who can guide you and offer advice.
---
# Most Advice is Wrong
URL: https://www.rasulkireev.com/most-advice-is-wrong/
Type: article
Date: 2022-12-02
Description: I think that most advice online is bad. You shouldn't listen to anyone but yourself. Here is why...
Tags: self-improvement, advice
Content:
There is a ton prescriptive content online (articles, videos, podcasts, and any other type of media):
- "You should meditate"
- "Why taking a cold shower will change your life"
- "Journaling helped me improve"
- "Don’t drink caffeine"
and that is just a tip of the iceberg. Most of this advice is bullshit.
I’m here to tell you that you shouldn’t follow anyone’s advice.
The reason that most advice online is bullshit is that no one knows you like you do. Only you care enough about yourself to test different ideas and how they affect your life, work and other aspects of your life.
Of course you can look at other successful people for inspiration, but never expect everything to work out the same way it does for them, it won’t.
Do your own “I tried ___ for 30 days and here is what I think” experiment and see if it works for you. Write down your results, or don’t, I don’t know what suits you better.
I think the approach where you are in a life long research mode is the best. Try something new and see if it sticks. If not, go to the next one, if it does, find a way to implement it in your life in a way that will maximize simplicity.
P.S. Ironic that the last paragraph is my advice to you. Feel free to ignore it.
---
# Building a Second Brain
URL: https://www.rasulkireev.com/building-a-second-brain/
Type: book
Date: 2022-08-16
Description: Building a Second Brain is a great PKM approach created by Tiago Forte. He has been teaching that course for a while now and has been publishing for many years at Forte Labs. This books is a collection of methods, techniques and ideas that he has formulated over those years. This book is perfect for someone who hasn't yet started collecting thoughts and ideas in a Second Brain.
Author: Tiago Forte
Tags: Education, PKM, Personal Knowledge Management, Productivity
Content:
## My Thoughts
This is a great book for anyone who is not familiar with the concept of Second Brain or haven't yet encountered PKM. The reason I gave it such a low grade is that for me there wasn't much new information.
This doesn't mean that the book won't work for you. If you are new to this, then go ahead, read it, Tiago is indeed one of the best experts in the field. If, on the other hand, you are familiar with the Second Brain narrative, then you don't need to read this. It is unlikely, that you will pick up anything new.
Tiago has some fantastic writings in the blog format at [fortelabs](https://fortelabs.co), but this book (in my personal opinion) is just a collection of these posts. I would strongly recommend you check out those first and then consider the book.
Despite all of the things I have said above, I still made some notes that might prove useful in the future. Some of the highlights are great summarizations of the ideas that Tiago talks about, thgouhout the book. You can check them out below.
## Summary
- Creating a digital archive (or the Second Brain) with learning, ideas and anthing else that sparks your interest is something that anyone can and should do to thrive in the digital world that we live in today.
- Your professional success and quality of life depend directly on your ability to manage information effectively.
- There are 4 key components to your Second Brain (CODE framework):
- **Capture** - You need to make it as easy as possible to capture ideas, whether from your own head or from reading a book or an article.
- **Organize** - You need a system to organize there ideas. For that Tiago proposes the PARA system, discussed later.
- **Distill** - Just saving ideas won't do you any good, you need to activly summarize and imrpove the notes you are taking. This is the key to meaningful ideas.
- **Express** - The purpose of knowledge is to be shared. What’s the point of knowing something if it doesn’t positively impact anyone, not even yourself? Learning shouldn’t be about hoarding stockpiles of knowledge like gold coins. Knowledge is the only resource that gets better and more valuable the more it multiplies.
- PARA Method is one of the most efficient and simplest method to organize your work accoridng to Tiago. PARA stands for:
- **Project** - is for projects (duh) with a clear end goal in mind. For example, "write a review on 'Building a Second Brain'"
- **Area** - is for things that don't have an end goal but are ongoing in your life, for example, "Finances", "Cooking", "Journaling", etc.
- **Resource** - Is for general topics that you are interested in, this is where you will put notes, ideas, highlights, that are not most immediate to any of your projects. For example, "Neuroscience", "Coding", "American History", etc.
- **Archive** - Is for projects, resources, or areas that are no longer useful to you. Though, generally, you will be putting "projects" here. You don't want to delete things, only archive, since that way you will be able to look them up later, and leverage the power of search that most applications have.
- The three habits most important to your Second Brain include:
- **Project Checklists**: Ensure you start and finish your projects in a consistent way, making use of past work. The purpose of using project checklists isn’t to make the way you work rigid and formulaic. It is to help you start and finish projects cleanly and decisively, so you don’t have “orphaned” commitments that linger on with no end in sight.
- **Weekly and Monthly Reviews**: Periodically review your work and life and decide if you want to change anything.
- **Noticing Habits**: Notice small opportunities to edit, highlight, or move notes to make them more discoverable for your future self.
---
# How to Version Control your Django project
URL: https://www.rasulkireev.com/django-version-control/
Type: tutorial
Date: 2021-08-29
Description: In this post, we will be talking about version control and the best practices when it comes to Django projects.
Tags: Python, Django, Git, Version Control
Content:
In the previous post, we have gone through the process of [setting up a basic Django project](https://builtwithdjango.com/blog/basic-django-setup). In this post, we will be talking about version control and the best practices when it comes to Django projects.
TL;DR use the [following .gitignore](https://gist.github.com/rasulkireev/1412ab0c3585ab8ffa50764e68f2d6d7).
I'm not going to be teaching you git in this post. I'm going to assume that you have git installed on your computer and you have a Github account. If you haven't worked with git before I recommend you check out [this post](https://phoenixnap.com/kb/how-to-use-git), it helped me when I was learning, but really there are a [ton of other awesome posts](https://duckduckgo.com/?q=how+to+git&ia=web).
However, that said, this post is aimed toward beginners when it comes to version controlling Django projects.
## Why?
Why is it important to dedicate an entire post on how to version control your Django project?
When I was starting out I was just doing stuff and not using tutorials. I was silly, unlike you! I ended up putting secret information to the public. For example, I was using AWS to host images, and accidentally put my secret key on Github. I was contacted by the Amazon team and was told to delete it and immediately create a new one so that some bad actors would use it maliciously. I almost sh\*t my pants. I don't want this to happen to you!
Another important point is that eventually (in the next post) we are going to be creating a SQLite database and storing user information on it. We don't want to expose that either.
So, now that you understand the importance of good practices when it comes to version control we can begin.
The good news is that it actually is not so hard.
## Beginning of History
After you finished the previous post, you should have a functional code. Make sure everything works by running `poetry run python manage.py runserver`.
Let's start by creating a repo for your project on [Github](https://github.com). If you head over to https://github.com/new you will be prompted for some info.
Give your repo a name and press "Create repository". No need to change anything else.
> Tip: use kebab case for the name: something-like-that.
Once you've done that you will see a convenient list of instructions on Github:

We don't need the first line, since we already have some files.
We do however need to run `git init` in our terminal (hopefully in an integrated VS Code terminal) to start the version control history. Once you run `git init` you should see a couple of changes.
First is the terminal itself will show the branch you are on:

Second is the File Explorer, all files should have turned green meaning that they are new files in our repo, they haven't appeared before in our history. If files had existed but were changed, they would have turned yellow.

## Ignoring secrets
Awesome! Now, before adding all our files to our repo history let's create a `.gitignore` file in which we will list all the files and folders that we don't want to end up in the history.
So, create `.gitignore` file at the root of your project. Copy the content from the [following gist](https://gist.github.com/rasulkireev/1412ab0c3585ab8ffa50764e68f2d6d7) and paste it into the `.gitignore` file. Now files and folders that match the Regex in `.gitignore`, will not be version controlled.
You should care about most of them. Here are the important ones:
- `.env`. We will be storing our secrets in this file, so we don't want them to end up on Github.
- `*.sqlite3`. We don't want any database to end up on Github either.
- `node_modules/` this is where all Javascript packages will be stored, once we get there. `node_modules/` are notoriously large directories, so we don't want them to be on Github as they will slow up all actions immensely.
- `media/` when we are going to work locally, some images that we will upload into our database will end up in the media folder. Since Github has some rules regarding how much space you can take, we don't want any images to end up there, as they tend to be heavy.
- other than that you shouldn't worry too much about other things, at least for now.
## Final Steps
Now we can run other commands provided by Github. In your terminal run:
1. `git add --all` to add all the files (except the ones in `.gitignore`) to version control history.
2. `git commit -m "first commit"`, to "commit" the changes.
3. `git branch -M main` to rename the main branch. New standard.
4. `git remote add origin git@github.com:{your username}/{your project name}.git`. Use the command provided by Github.
5. Finally, run `git push -u origin main`
If you didn't run into any issues, then you can try reloading the Github page and seeing if the files have been added to the repo.
If all is good, then congratulations.
## Conclusion
In this post, we have created a repo and committed our files to it. This will help us keep track of our code in future posts.
---
# The Great Conversation
URL: https://www.rasulkireev.com/the-great-conversation/
Type: book
Date: 2022-06-26
Description: This is an intro book to the Great Books of the Western World series. Authors do a great job of convincing you to invest your life in pursuing this series, that they refer to as Liberal Education.
Author: Robert Hutchins
Tags: Education, Philosophy, Knowledge, Democracy
Content:
## Summary
- Old voices can help us live better lives now, they did not have the distraction we have today, and properly thought about the use of our time and brains.
- Intellectual people can't be lied to by loud politicians. Smart people have their own opinion.
- The liberally educated man has a mind that can operate well in all fields. He may be a specialist in one field. But he can understand anything important that is said in any field and can see and use the light that it sheds upon his own.
- By the end of the first quarter of this century great books and the liberal arts had been destroyed by their teachers. The books had become the private domain of scholars. The word "classics" came to be limited to those works which were written in Greek and Latin. In reality, these books are the public domain and are available to everyone and can be consumed by any one person.
- Community is the future (of humanity). To improve we need better messages, better people, not better methods of distribution.
- Facts have to be supplemented by thinking.
- Great books teach people not only how to read them, but also how to read all other books.
- No one said that these books are easy. But they will get easier as you go through them.
- Many people now expect to be done with learning ones they are out of college. However, the most important things that human beings ought to understand cannot be comprehended in youth. Youth is for building habits and discipline that will allow one to pursue further education in the adulthood. Childhood and youth are no time to get an education. They are the time to get ready to get an education. The great issues, now issues of life and death for civilization, call for mature minds. Childhood is a stage of life reserved for being a child nothing more.
- The principle of an aristocracy was honor, and the principle of a tyranny was fear, the principle of a democracy was education.
- The understanding of the west will help with understanding of the east.
- Every man's mind ought to keep working all his life long; Liberal education ought to end only with life itself.
## My Thoughts
This book is an intro book to the [Great Books of the Western World series](https://en.wikipedia.org/wiki/Great_Books_of_the_Western_World) (GBotWW, or just 'series' from now on), where Robert Hutchins and Mortimer Adler try to convince the readers on why it is crucial to read these books. They refer to this series as liberal education and they believe each one of us is capable and should pursue it.
This book has been written in 1952, and with that in mind it is incredible how many topics they cover are relevant today. Not only are they relevant, but also predict the future in a very precise manner.
I don't think it makes too much sense to read this book in a vacuum, but only if you are planning to read the series. You surely be convinced that spending the time to read this challenging books is worth your time and effort.
Apart from convincing you to approach the series they will do a great job of telling you how to approach it (there are multiple approaches). The approach I have decided to follow is a 10 Year Reading Plan, which slowly gets you into the minds of the Greatest People in our history. Conveniently, they have sorted these works by the level of difficulty, and so as you follow along you will get more and more accustomed to authors and topics. And by the end of this series you will be able to tackle any works that your heart and brain desire.
By reading these books you can take part in the [Great Conversation](/10-years-of-great-books) between those authors. While reading you will find them referring to each other and being influenced by each other. Their thoughts and opinions are built on top of their predecessors. Standing on the shoulders of giants.
---
# The Minimalist Entrepreneur
URL: https://www.rasulkireev.com/minimalist-entrepreneur/
Type: book
Date: 2022-06-18
Description: This is my favorite book on the topic of entrepreneurhip. It doesn't matter what stage you are at, whether just trying to find an idea to work on, or already have a profitable company, you will surely learn something new from Sahil.
Author: Sahil Lavingia
Tags: Business, Entrepreneirship, Minimalist, Indiehacking, Bootstrapping
Content:
## Summary
These are some of the key points that I have picked from reading this book. By no means it is an exhaustive list of things that this book has to offer. For more insights check out the [highlights](#highlights) section. For even more insights, just buy and read the book, it's awesome.
- Profitability should be your first concern when creating a business. You might be tempted to give your product/service for free or below the cost at first to attract customers, but if your idea is worth anything, customers will come regardless of the price.
- Do not try to create the next Facebook or Google. Keep your idea simple and start with a minimal amount of features. Your plan and ideas will change a million times as you go along.
- Participating/contributing in communities around you is a great way to find business ideas. By participating and being your true self you will start to see people's problems, maybe even your own problems. That's where the best ideas are.
- If you ever feel like you don't belong or don't know something, understand that this is normal and everyone feels that from time to time. What you have to do is to learn from mistakes and continue working.
- Launch is only for when you have confirmed that your business idea works and not to test if it works. In other words, you should launch only after you have a considerable amount of customers.
- Don't dismiss your friends and family, they can be your first customers/supporters.
- In the beginning, the best marketing will take time, not money. Forget about ads, and focus on social outreach (blogging, Twitter, Youtube, etc.)
- Also consider doing a newsletter. Each subscriber is worth a lot more than a follower. Give away some sort of content for free to increase subscribers.
- You don't have to go the VC route, you can raise from your community directly.
## My Thoughts
This is my favorite book on the topic of entrepreneurship. I may be biased as I have been following Sahil for a while now. Even, with that bias, I think anyone who wants to make money with his/her own business should give this book a read.
Sahil takes you on a journey from coming up with an idea all the way to creating a culture you want to work in. He discusses the topics of marketing, profitability, planning, sourcing first customers, and more.
It doesn't matter what stage you are at, whether just trying to find an idea to work on, or already having a profitable company, you will surely learn something new from Sahil.
---
# The Way of Superior Man
URL: https://www.rasulkireev.com/way-of-superior-man/
Type: book
Date: 2022-06-04
Description: David Deida explores the most important issues in men's lives—from career and family to women and intimacy to love and spirituality and relationships—to offer a practical guidebook for living a masculine life of integrity, authenticity, and freedom.
Author: David Deida
Tags: Love, Romance, Family, Relationships, Sex
Content:
## Summary
Here are some useful tidbits I learned from this book, that stuck with me the most:
- Sometimes our women can act as a proxy for the real world. If your SO is giving you trouble with something you think is unfair, think about the universe, it won't care what's fair and what's not. You just have to learn to deal with it.
- Our significant others (the feminine) improve better from appreciation instead of criticism. If you want your lady to do something more, you got to compliment her on that action, however small.
- Men must have a goal in life to work their ass off towards.
- As time went by, relationships between man and woman have equalized (which can and is a good thing), but that can dull out some emotions as well. Do not forget to show your passion to your significant other, as people would in the old days.
- You should not be dependent on the opinions of others, whoever they may be father, boss, wife, etc.
- Be confident and brave enough to admit your fears. They partially define you. And they define the most useful parts. By knowing your fears you can make decisions accordingly and improve your life greatly.
- You need to be able to receive criticism from your friends well. And be able to give similar criticism to your friends when they need it. Make sure you make friends with people who can do both.
- If your lady has a problem she shares with you, don't analyze it or try to solve it. Just hear her out and offer your support and love, that's all she needs.
- Try "leading" more often. Instead of asking "what do you want to watch? or Where do you want to go tonight? Pick something that you both are likely to enjoy and go with it. If you got it wrong no worries, it's not a life or death situation.
- Try to guess/understand what she wants/needs and give/do that for her. (8 options here 😆)
- Often her feminine feelings will be a much better basis for a decision than your masculine analysis. So, encourage her to feel into the situation and trust her feelings.
- You need to have good friends or as the author puts it: "A man rediscovers and fine-tunes his purpose in solitude, in challenging situations, and in the company of other men who won’t settle for his bullshit."
You can see more in the [highlights](#highlights) section.
## My Thoughts
I read it a while back and have forgotten my exact feelings about this book. I do remember feeling quite motivated and relieved. This book provides men with a path to being good. Good to their women, good to themselves, and good towards the world. It gives you advice and direction you should be looking towards, but in all the biggest decisions in life, you still get to decide for yourself.
As you can see from the score I gave this book, I would certainly not consider reading this book a waste of time. I would certainly recommend it to my friends.
It would be interesting to re-read this book in a few years, as it would give a very different impression and advice as you go along your life's journey. Even the same advice can apply differently during different stages in life.
---
# The Phoenix Project
URL: https://www.rasulkireev.com/phoenix-project/
Type: book
Date: 2022-03-04
Description: Great book to listen to while doing chores. A lot of the principles have penetrated the tech industry, so you will be familiar with what this book has to offer. However, you should still give it a try, since there aren't many book like that one. A fictious story about DevOps practices. THat's pretty cool and unique.
Author: Gene Kim
Tags: IT operations, DevOps, Project management, Systems thinking, Continuous improvement, Lean methodology, Team collaboration, Leadership, Risk management, Business strategy
Content:
## My Thoughts
Listing to this book is the only method of consumption I can recommend. I am a little biased since this is the way I have decided to approach it. However hear me out:
- It is not as dense with useful material as pure nonfiction books, so you don't need to make a ton of highlights.
- It is a little to basic to be read like a proper novel.
- It is a great way to learn about DevOps principles while doing simple activities like exercising, dish washing, etc.
In my experience I have been not to succesfull in staying engaging when listening to non-fiction books. This was perfect however. So, with the method of consumption out of the way, what did I think about this book.
It is really good. If you are a programmer, you journey is very likely to be a unique one. In my case for example, I learnt to program myself, and when I got my first full-time gig programming, the team I was on was already implenenting the principles mentioned in this book. Everything was documented, all the processes were automated with Github Actions and or project manager did a great job keeping the projects in Agile format.
If you have never heard of DevOps procedures, than you might recognize a lot of characters from this book. You will likely learn quite a few things.
All of that said, the principles described in this books have already penetrated the industry deep enough, so anyone who is doing programming these days, even if you are an Indiehacker you likely you something like that.
I would certainly recommend people listen to this book as a complement to the everyday routine. It might motivate you to be more structured about your work, like it did for me.
## Summary
The story revolves around the character of Bill, who is tasked with reviving a struggling IT department at a company called Parts Unlimited. Through his journey, the reader is introduced to various IT concepts, such as Agile, Lean, and DevOps, and the benefits they can bring to an organization. Here are some of the lessons you will encounter while consuming this book:
1. Document as many procedures as possible.
2. Don't have a star programmer who is the only one who knows how to fix something. If you see someone like that tell them to follow step one to make sure as many people know how to do any given thing.
3. Automate all the repetetive processes: Unit testing, Deployments, Updates, etc. You may find more tutorial on this topic by searching for terms like continuous integration, continuous delivery, and continuous improvement.
4. Try to keep tech debt to a minimum and if that exists resolve as soon as possible. Point 1 and 3 will help with that a lot!
5. Consider learning about Agile and Lean methodologies. Optional! I think (personally) that this mostly means that you should use a Kanban board and move things along as you work through them. This point might mean more to bigger teams, I don't have such experience.
---
# Managing a Django Project with Poetry
URL: https://www.rasulkireev.com/managing-django-with-poetry/
Type: tutorial
Date: 2020-10-31
Description: Poetry is relatively new packaging and dependency manager. It makes it very easy to upload libraries to PyPI, manage dependencies visually, and has a couple of handy features. Today, I'm not going to do a deep dive into how Poetry works and all its features. Today I just want to focus on how to configure it for a Django project.
Tags: Python, Django
Content:
Update (02/03/2022): I wrote an [updated guide on how to create a django project with poetry](https://builtwithdjango.com/blog/basic-django-setup) for the builtwithdjango site. It focuses on creating a project with poetry. In the future I will also write a guide on how to migrate a project to poetry.
Poetry is relatively new packaging and dependency manager. It makes it very easy to upload libraries to [PyPI](https://pypi.org/), manage dependencies visually, and has a couple of handy features. Today, I'm not going to do a deep dive into how [Poetry](https://python-poetry.org/) works and all its features. Today I just want to focus on configuring a [Django](https://www.djangoproject.com/) project.
## 1. Install Poetry
```bash
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
```
## 2. Create a Directory for you Django Project
```bash
mkdir django_poetry_example && cd django_poetry_example
```
## 3. Initiate a Poetry Project
```bash
poetry init
```
You will be asked to confirm the information about your project. You can skip through most of it.
```
This command will guide you through creating your pyproject.toml config.
Package name [django_poetry_example]:
Version [0.1.0]:
Description []:
Author [Rasul Kireev , n to skip]:
License []:
Compatible Python versions [^3.7]:
Would you like to define your main dependencies interactively? (yes/no) [yes] no
Would you like to define your development dependencies interactively? (yes/no) [yes] no
Generated file
[tool.poetry]
name = "django_poetry_example"
version = "0.1.0"
description = ""
authors = []
[tool.poetry.dependencies]
python = "^3.7"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Do you confirm generation? (yes/no) [yes]
```
## 4. Add the Necessary Dependencies
Run `poetry add django` in your terminal. Poetry will add `django` to the `pyproject.toml` file under the dependencies section. A virtual environment will also be created for you.
## 5. Start you Django Project
```
poetry run django-admin startproject django_poetry_example .
```
## 6. Working on your Django Project
When you need to run any python function (for example, `python manage.py createsuperuser`) you have two options.
1. You can leverage `poetry run`, which will run against the current project's dependencies. The command will be this: `poetry run python manage.py createsuperuser`.
2. You can activate the virtual environment with a `poetry shell` command. Now you can run python commands, as is. They will be run with dependencies you have installed.
I prefer the first method, for an explicit approach.
## Bonus. Export dependencies to a requirements.txt
If you need to have the `requirements.txt` file with all the dependencies, you can run `poetry export -f requirements.txt --output requirements.txt`. If you have configured a CI/CD job that auto deploys your project, you can add this function as a step, which will generate the updated version on each update.
## Bonus II. Video
If you prefer a more visual approach, I have made a video that shows how to start a Django project with Poetry.
https://www.youtube.com/watch?v=-c8DASfFNZM
---
# Socrates is Kind of a D*ck
URL: https://www.rasulkireev.com/socrates-is-kind-of-a-dick/
Type: article
Date: 2022-02-04
Description: In this post, I want to share my opinion on Socrates' style of conversation and argumentation, and why I think he is being a little bit of a dick.
Tags: Republic, Socrates, Philosophy
Content:
This post comes as a reflection of reading the first book of Plato's Republic.
First of all, I will say that I have thoroughly enjoyed it. Plato’s writing is very clear, very understandable, and approachable. It is very interesting to observe how Socrates thinks and argues.
In the first book, Socrates talks to Cephalus and Thrasymachus about the nature of justice. In that short "book" you can clearly see the Socratic Method in action. You will notice that he never makes statements, rather he asks questions. In fact, Thrasymachus shouts at Socrates in the middle of the discussion as Socrates proves Cephalus's definition to be wrong:
> I say that if you want really to know what justice is, you should not only ask but answer, and you should not seek honor to yourself from the refutation of an opponent, but have your own answer; for there is many a one who can ask and cannot answer.
So, why do I say that Socrates is kind of a dick? Well, here is why.
At the end of Book I, or rather at the end of the conversation Socrates says:
> the result of the whole discussion has been that I know nothing at all. For I know not what justice is, and therefore I am not likely to know whether it is or is not a virtue, nor can I say whether the just man is happy or unhappy.
And he says something along these lines all the time. He always claims that he knows nothing. There is nothing wrong with that, in fact having this mindset is good for people. However, I consider this a lie. When you read Book I of the Republic you will see that the questions that Socrates is asking are not random smart questions. He asks very direct, well-thought-out questions that lead his "opponent" to the point that Socrates has in mind. And boy, you better believe that he has a point, an opinion in mind. He just never shares it directly.
It isn't very easy to do, to "trick" the opposing side with such questions, you need to have a good intellect, and more importantly, you need to be well versed in the topic at hand, otherwise, it is impossible to come up with such questions during the conversation.
In fact, Thrasymachus accuses Socrates of this:
> Socrates: And you suppose that I ask these questions with any design of injuring you in the argument?
> Thrasymachus: Nay, he replied, 'suppose' is not the word --I know it, but you will be found out, and by sheer force of argument you will never prevail.
In this point I agree, at this point, it seems that Socrates is just trying to prove the opponent wrong and succeeds most of the time. I feel like this is a d*ck move.
Let me know what you think. Would love to know your opinion. In fact, I have left a lot of notes and annotations [here](http://classics.mit.edu/Plato/republic.2.i.html) using [hypothes.is](https://web.hypothes.is/), you can continue the conversation there.
---
# Apology
URL: https://www.rasulkireev.com/apology-plato/
Type: book
Date: 2022-01-25
Description: The Apology is Plato's record of the speech given by Socrates in court as he tries to defend himself in 399BCE against the accusations of 'corrupting the young, and by not believing in the gods in whom the city believes'.
Author: Plato
Tags: Philosophy, Death, Life, Virtue, Politics, Knowledge, Wisdom
Content:
## Summary
The Apology is Plato's record of the speech given by [Socrates](/socrates-is-kind-of-a-dick) in court as he tries to defend himself in 399BCE against the accusations of "corrupting the young, and by not believing in the gods in whom the city believes".
There are three parts to this work (Spoiler Alert).
1. Socrates defends himself against accusations.
2. Socrates argues for various punishments after the jury finds Socrates guilty.
3. Socrates' last words after the jury condemns Socrates to death.
## My Thoughts
These are 3 very different "scenes". And we get to see Socrates in each one of them. It is fascinating to see what arguments Socrates comes up with and how he presents them to the public. It is very inspiring to see how a man handles himself when sentenced to death.
For me, this work has the highest ratio of notes to words (ie. how many notes I took compared with the size of the work).
Here are some life lessons that I have picked up from this work:
- You should always show humility by assuming that you don't know something. If you always assume that you know everything, you can't really learn anything new.
- We only fear death because we know nothing about it. In fact, death is the ultimate test to "we fear what we don't know" since it is likely we will never find out what happens after death.
- Start by trying to improve yourself, not others.
- "Good men" don't spend much time thinking about how to avoid death, but rather they think about doing good deeds. That's all that matters.
Some interesting stats:


---
# 2022 Goals
URL: https://www.rasulkireev.com/2022-goals/
Type: article
Date: 2022-01-18
Description: In this post, I want to publicly list all my 2022 goals. This will help keep me accountable.
Tags: 2022, goals, habits, review
Content:
As with my [2021 in Review post](https://www.rasulkireev.com/2021-in-review/), I am following [Anthony Gustin](https://dranthonygustin.com/)'s [Extensive Review Process](https://docs.google.com/document/d/1K2P_yL1Ah976P7MLicb55wgY2DY-39jP3Lvp810H6HQ/edit#).
### What Do You Want?
#### What type of person do I want to be?
- I want to be a good person. That entails being loving to my family, helping my friends, being kind to all the people. I want to be a very well-disciplined person that doesn't wait for things to happen to him, but rather pursues the goals and things that he wants. I want to do good work that helps people, improves their lives.
- I think I spoke about this in other parts of this review, but at the end of the day, I just want to be a good person.
- Clearly, different people have different ideas of what "good" is. So, perhaps, listing some people I look up to when it comes to being good, would help entail what my idea of good is. So here are some such people:
- [Jordan O'Connor](https://jdnoc.com/)
- [Nat Eliason](https://www.nateliason.com/)
- [Daniel Vassallo](https://dvassallo.com/)
- [Natalie Nagele](https://twitter.com/natalienagele)
- [Sahil Lavingia](https://sahillavingia.com/)
- I also want to be a human being that always looks to improve in some way. Be it learning some history, reading some philosophy, building an app to learn a programming language, or anything else that improves me as a human being. This sounds corny to me by now, but I want to be a person that is in a constant beta mode.
- This is not exactly behavior, but I would like to be a person that earns well and provides all the basic needs for his family, and more.
#### Themes
- Being more attentive to my SO (compliments, gifts, etc.)
- Learning
- Health & Exercise
- Finance
I mean, these are pretty regular themes :) We all want the same things I think.
#### Themes of Life (+ Goals)
1. Family: 7
- Have a kid
2. Finances: 7
- Get to around $1000 MRR with Side Hustle
3. Physical health: 6
- Get to 70kg without added muscle mass
- Bring back the simple morning exercise (push-ups, pull-ups, sit-ups)
4. Mental health: 6
- Make meditation a regular morning habit
5. Learning: 8
- see below
6. Relationships: 5
- Reach out to more people online and in real life.
7. Fun: 4
8. Work: 7
- get a raise (in the title this year)
- work on more visible projects (like abode)
9. Travel: 7
- Travel around the US this year
- Visit Russia and travel to European countries for fun and a visa.
10. Creativity: 4
- post a few articles with the help of my Obsidian database.
11. Spirituality: 1
#### Projects in Life
**Personal Website (Blog, Audience)**
- start a new podcast (either like the [Built with Django Podcast](https://builtwithdjango.com/podcast/) or like [Made you Think Podcast](https://madeyouthinkpodcast.com/))
- Write at least one [tutorial](https://www.rasulkireev.com/tutorials/) this year
- Write at least one [blog post](https://www.rasulkireev.com/articles/) with the help of Obisidian
- Get to 1000 [Twitter Followers](https://twitter.com/rasulkireev)
- Get to 500 [Newsletter subscribers](https://www.rasulkireev.com/newsletter)
- Publish a newsletter every week
- Publish Notes on [12 books](https://www.rasulkireev.com/book-notes/)
**Built with Django (Site and Podcast)**
- Publish [12 podcast episodes](https://builtwithdjango.com/podcast/)
- Publish [12 blog posts](https://builtwithdjango.com/blog/) (can be tutorials, interviews, or reposts)
- get to 100 users
- get to 500 subscribers
- get to 150 views per day by the end of the year ([source](https://twitter.com/VassalloBot/status/1480056748471955456))
**OTB Chess (Community and Blog)**
- get to [100 members](https://otbchess.org/u)
- publish a city on Reddit once a week
- publish [6 blog posts](https://blog.otbchess.org/)
**Other (Crypto/NFT/Learning)**
- Programming
- build a small random project in Rust
- build a small Solana project with Rust
- improve in Python even more
- build a small Algorand project with Python
- build a mobile app with React Native
- complete Cistercian Dates NFT Project
- Chess
- get to 1600 ELO
- Language
- Complete the Duolingo Italian Course
- Learn 625 Italian Words
- Reading
- Try going through the First Year program on the Great Books of the Western World
- Other Tech to Learn/Improve in
- React Native
- Rust
- Kubernetes
- Django
- Celery
- Stripe
### 2022 Action and Plan
- This is where I take my goals from the last step and think about accountability and completion mechanics. Or in other words, how am I going to ensure that these tasks get done, how am I going to track them?
- I don't want to be too aggressive with my systems as the failure to comply with them might be crushing.
- I like my current approach where I work on a project that kind of feels right.
- Of course, I do have a hard schedule for some tasks. For instance:
- Personal Newsletter every Tuesday.
- Django Newsletter Every Friday that I have something to show for.
- Chess improvements, meetups every Saturday, and 2 tournaments per month. That's around 52 practices + 24 tournaments.
- Add notes to the Obsidian database every day
- Do Duolingo exercises every day
- Exercise every other day
- Follow the slow carb diet
- Some of these tasks motivate and inspire further work on these projects.
- For other things, I will be waiting for the right time and regularly reviewing the goals. For example, to learn Rust I need a good amount of free time and mental space. For that, I need to finish the NFT project.
- So can't work on all the items, simultaneously, so with every milestone just have to consult my goals to see what can do next.
---
# 2021 in Review
URL: https://www.rasulkireev.com/2021-in-review/
Type: article
Date: 2022-01-10
Description: This year I'm partly following Anthony Gustin's Annual Review process. In this post, I will share my responses to Steps 2 and 3. I will also share personal statistics that I was able to collect during the year.
Tags: review, personal, goals
Content:
This year I'm partly following [Anthony Gustin](https://dranthonygustin.com/)'s [Annual Review process](https://docs.google.com/document/d/1K2P_yL1Ah976P7MLicb55wgY2DY-39jP3Lvp810H6HQ/edit#). In this post, I will share my responses to Steps 2 (Reflect on 2021) and 3 (Review 2021 Outcomes). I will also share personal statistics that I was able to collect during the year.
> Note: My last two articles on this blog have been "[2020 in Review](https://www.rasulkireev.com/2020/)" and "[2021 Goals](https://www.rasulkireev.com/2021-goals/)", which is not a good start.
### Table of Contents:
- [Stats](#stats-and-graphs)
- [Writing in Obsidian](#writing-in-obsidian)
- [Chess](#chess)
- [Goal Review](#goal-review)
- [Overview](#overview)
- [Lessons](#lessons)
- [Reflect on 2021](#reflect-on-2021)
## Stats and Graphs
### Writing in Obsidian
I have created:
- 523 [Tagnotes](https://www.youtube.com/watch?v=1NjMO-KKcJY)
- 172 ["Evergreen" Notes](https://notes.andymatuschak.org/Evergreen_notes)
- 1091 Total Notes
And a rough distribution of these notes looks something like this:



**Top 10 Backlinked Tagnotes in 2021:**
1. Chess - 21
2. Python - 18
3. Django - 18
4. Quote - 16
5. Ethereum - 12
6. Built with Django - 11
7. Web3 - 10
8. Smart Contract - 9
9. Guy Carpenter - 9
10. Cryptocurrency - 9
**Top 10 Backlinked Tagnotes Thus Far:**
1. Learning - 37
2. Writing - 28
3. Chess - 21
4. Python - 18
5. Django - 18
6. Journaling - 17
7. Habits - 17
8. Quote - 16
9. Community - 16
10. Obsidian - 15
Here is how the graph looks like (red are evergreen notes and green are tagnotes. everything else are notes for books, courses, people, etc.):

### Chess
There is not going to be much analysis just yet, since I have started the journey just this year. I have obviously improved a lot, but the real test will be in 2022. Will I be able to break 1500 or possibly 1700 to give a fair battle to my Dad? We will see. I think if I will naturally reach 1500 with videos, puzzles, and games, I will require something more concrete to continue the improvement. Something like a training plan with books, and specialized training.
**Daily**

**Rapid**

**Puzzles**

I have also played on lichess, but I think the chess.com rating system is a little more accurate.
## Goal Review
In this part I'll be looking at goals I have set for myself [last year](https://www.rasulkireev.com/2021-goals/).
I've split my goals into 6 categories as per Doist's [suggestion](https://blog.doist.com/annual-review/):
- Work
- Productivity
- Health
- Finance
- Relationships
- Learning
### Overview
I haven't been looking at my 2021 goals for most of the year, but luckily I was able to achieve most of them. I think the reason for that is that most of these goals were very well aligned with my internal state at the time, which didn't change much during the year.
#### Work (3/4) - A
- No title "promotion", but a big wage bump (~22%)
- Currently working on a [FastAPI](https://fastapi.tiangolo.com/) webapp at work.
- Have dropped building a Django course with [Newline](https://www.newline.co/).
- Had great progress on [Built with Django](https://builtwithdjango.com/)
- [Started a podcast](https://builtwithdjango.com/podcast/)
- [Built a Job Board](https://builtwithdjango.com/jobs/)
- Haven't published any written interviews.
#### Productivity (0/3) - D
- Can't claim that I have written something down every day, or even most of the days for that matter.
- I have picked up the [Readwise](https://readwise.io/) / [Obsidian](https://obsidian.md/) habit closer to the end of the year, which I hope to continue throughout the year.
- Failed to consistently send a [personal newsletter](https://www.rasulkireev.com/newsletter).
- [Twitter](https://twitter.com/rasulkireev) not too consistent.
- No new articles this year, however, published a couple of [book reviews](https://www.rasulkireev.com/book-notes/) and a [good Python/Ethereum tutorial](https://www.rasulkireev.com/creating-ethereum-token-with-python/).
- Didn't end up using Todoist for my tasks. The systems that I have tried seemed too cumbersome and unsustainable.
- Totally failed to use Anki for Language Learning.
This year when setting up goals for something similar to this section need to make more quantifiable goals. "Using Todoist" is not really a good goal, unless you are Todoist.
#### Health (0/4) - F
This is just a complete miss.
- Gained weight, lost muscles.
- Bad diet (even with some improvement, overall is just bad)
- Bad sleep
- Less exercise
- No meditation
- A lot of stress
Don't even want to continue. Health will be a huge goal for me this year. I did purchase an [Oura Ring](https://ouraring.com/) on Black Friday, hopefully, it will be easier to track those things.
#### Finance (2/2) - A+
Financially this has been a great year.
- I did earn some money from a side project on the internet. Surprisingly it was an [NFT project](https://www.cisterciandate.club/).
- I did pay off all my debts, mostly due to the bonus I have received at the beginning of the year.
#### Relationships (2/5) - B-
**successes**
- Join a club ✅. I did join a regular chess meetup in Newark. Even won one tournament. I also tried to start a small club in my building, but that didn't work out too well. Maybe I should try starting a club for board games, I do have a lot of those after all.
- Sponsor 5 people is probably too many. I think the fact that I'm [sponsoring two people](https://github.com/rasulkireev?tab=sponsoring) and donating to Wikipedia is very good already. With the increased rent rate I might have to scale this down a little. Actually, this will come as a point in the 2022 goals, but I imagine we will have to be a little cautious of our spending due to the increased rent rate this year.
- Didn't get any sponsors this year. Although the support I got for the Cistercian Date Club could be considered a sponsorship.
**failures**
- Unfortunately didn't do a lot to help my wife find her calling. I was supportive, but the pandemic took its toll, and nothing sparked a bunch of joy for her.
> Become more social
> - get 100 newsletter subscribers by the end of 2021
> - get 500 Twitter followers by the end of 2021
- Was not able to reach newsletter counts and Twitter followers goal as haven't been too active. However, if you take into account the Built with Django project, it would reach the goal, although I think I meant the personal accounts here.
#### Learning (3/8) - B
This is probably the "heaviest" group due to the number of goals. And really, those are just inspirations at the start of the year that can freely change during that year. So, I'll try to take that into account.
**successes**
- I think I became a much better Python programmer
- I haven't built 5 web projects, but a few projects that I have been working on involved me learning some of the tech I've listed. For example, React and D3js.
- I did not do a test, but I think my typing speed and accuracy have improved a bit.
**failures**
- not using vim for coding, and am not sad about that. maybe some other day
- did not reach 1600 in ELO rating and haven't beaten dad yet, but I have improved a lot. See some stats in the Chess section below.
- didn't buy any existing company
- didn't do too much open source contribution
- as mentioned earlier did not use Anki to learn Italian
### Lessons
1. How many did I hit?
So, a quick calculation tells me that my success rate with 2021 goals is … 🥁 … ~38% which is not fantastic, but knowing the full story I would probably argue for ~65%.
2. Which three am I the proudest of and why?
- I'm very proud of my ability to eliminate all kinds of debt from my life and about making my first money on the internet. I think these two are very important to think about when entering 2022. This should show me that anything is possible.
- Another one I'm very proud of is me joining a chess club and playing with real people. Meeting with Daniil Chen for the New Year's helped me realize that Tanya and I are not meeting nearly enough people in our lives. And the only way to move forward is to meet more people.
3. Why did I miss the mark on any of them?
Most of the tasks I did not complete were due to me changing course during the year, which is totally fine. The rest, it's hard to say. The first one that comes to mind is the health objective. And I'm not sure why exactly I have missed that one so badly. One thing that comes to my mind is the lack of a system. When I came up with a simplified system to make a note on the books I read it became much simpler and easier to convert this action into a habit. Creating a simple system, when it comes to diet and exercise shouldn't be too hard, but for some reason it is. One reason I think it is is that once you start a healthy habit you want to pile on many other things and this leads to a collapse of the whole system. To give you an example, I decided to go to the gym every other day and am successful at it, good. Then I add a good diet (lentils and meat), also good. Then I decide to meditate every morning, for that, I need to go to bed a little earlier, for that, I need to spend more quality time with my wife in the evening, for that I need to finish my work a little earlier, for that I need a little more time, this means, less cooking time or gym time during the day.
As you can see, this quickly turned into a failed shit show. So this whole process needs to be a well-thought-out process. But in the end, it kind of depends on your Time Management and Work Efficiency.
4. Are these goals still important? If so, pull down to 2022 planning. If not, don't feel bad crossing them out and moving on.
I absolutely think some of those tasks are still important, which is a good sign that I have created some decent goals for myself. Some others are not going to the next year's list, which is also fine.
5. What habits, people, routines, or environments supported me in reaching my goals?
Even though I have succeeded in some goals I have set for myself, I can't say that it was any one habit that helped me do that. On the contrary, I didn't have any habits that would help me, so I was kind of going against the grain. In 2022 I want to spend more time building up those habits and systems as opposed to reaching specific small goals.
6. What habits, people, routines, or environments prevented me from reaching my goals?
Some bad habits that were destroying me in 2021 are:
1. phone in the bedroom
2. late-night snacking
## Reflect on 2021
### 1. What were my major milestones or moments? What accomplishments am I most proud of?
- A 30% percent increase in my annual wage. This has been a big moment and is one of the first things that comes to my head.
- Doing a lot of good work for my employer (Guy Carpenter).
- Starting to do more Web Development at work.
- Greatly improved my Chess game and won a small tournament in Newark.
- Went to Costa Rica, which is the first "adult" vacation/trip I did with Tanya.
- Did a lot of work on the [Built with Django](https://builtwithdjango.com/) project.
- Finally published [Built with Django Podcast](https://builtwithdjango.com/podcast/).
- Learned a lot about Web3 and about Cryptocurrency.
- Created a small NFT project ([Cistercian Dates NFT](https://www.cisterciandate.club/)), which I yet have to finish.
- Made 30x on a small [ConstitutionDAO](https://www.constitutiondao.com/) project.
- Made my own wine, and improved a lot in my cooking skills.
### 2. What are the people, events, habits, or tasks that I look back fondly, energized me the most, or made me feel the most expansive 2021? How can I do more of this in 2022?
- Traveling with Tanya to Costa Rica was certainly an energizing event.
- I certainly enjoyed participating in the Chess tournaments at Method Cafe. When I was playing chess in a tournament I felt a sense of deep focus and enjoyment, very similar to the Flow. The last time I remember feeling something like that was when I was playing Football.
- The feeling of progress (when you are learning something new) is something that is very addictive and positive. Whenever I can solve a problem that I have been stuck on for a while I am very happy.
- I haven't met many people that made me feel energized or expansive. In fact, a few gatherings I've been to, make me feel a little bad, because I'm not a social/extroverted person.
- Although that said, I do remember that listening to [Sahil Lavingia](https://sahillavingia.com/) talk during one of the NYC gatherings was awesome. I felt so energized to work on small projects that will help me earn extra cash.
- Due to the pandemic, I've spent a lot of the time with my SO at home. There was one time I went to a sauna, alone (without my neighbor), and the 20-30 minutes I spent there were very enjoyable. I had some time to think, relax, come up with ideas, and recharge.
- I really enjoyed learning interesting facts about History through though [OverSimplified's videos](https://www.youtube.com/c/OverSimplified/videos).
So, what can I do in 2022 to feel more energized and expansive:
- Be a part of communities that I'm passionate about. Right now it is Chess.
- Go to the Gym and Sauna alone, more often.
- Read more History books and consider Writing blog posts on the events that interest you the most.
- Consider traveling in 2022. Maybe talk to Clay Hambrick about combining vacation with a business trip.
- Need to extend my network in the sense that I should meet more people and make more friends, like Daniil Chen and Elizaveta Chen.
### 3. What are the people, events, habits, or tasks that I dreaded, drained me the most, or made me feel the most contracted in 2021? How can I do less of this in 2022?
As mentioned above, large gatherings (ala networking) are certainly draining me out. This is pretty much it from a negative standpoint.
### 4. How did I grow as a person?
- I've grown in many different ways I'd say, with the most being professional. I have learned a lot of things related to my work over the last year. I have improved my code and my understanding of some general concepts. I still have a ton of room to grow, but that will be the truth any year.
- I'm not sure if I can claim to have grown intellectually, psychologically, spiritually, or physically, so this is certainly something that I'm looking forward to in 2022. I'll try to make sure that some of my goals are aligned with this point.
- I certainly want to grow as a family man too, as my relationship with Tanya has been good but not too much growth, and I want to improve that.
### 5. What were my favorite books, podcasts, articles, videos and how did they shape my thinking?
- As mentioned in question two I have really enjoyed learning about major historical events from the [OverSimplified channel](https://www.youtube.com/c/OverSimplified/featured).
- I have certainly listened to fewer podcasts this year, and I'm not sure this is something I want to change, will see how it goes. There are a ton of options after all.
- I have been enjoying audio versions of Blinkist Book Reviews. Maybe I can continue that and also include actual audiobooks. Hopefully, there is an app for listening to audiobooks and making notes like in Airr or Snipd.
- I have started a new book by [Ray Dalio](https://en.wikipedia.org/wiki/Ray_Dalio) recently and am enjoying that very much. It is a combination of Economics, Finance, and History.
- I have been reading various books in 2021, but a theme of "entrepreneurship" books has occurred. Those books do provide some new/useful information, but more than that they are focused on motivating the reader on doing something.
- I think I do have all the knowledge necessary to start my own business and earn some money with it. I think what I need is books that provide new info (History, Physics, anything that will teach me new, change my worldview).
### 6. How could I have been better as a person? Friend? Manager? Parent? Etc.
- I think my biggest role in 2021 has been of a husband and I could certainly make some better actions/decisions. I could have been a little annoyed at my spouse more than I should have. I could be a little condescending or impatient.
- Regarding my role of being a friend, I should certainly be reaching out to my friends more often, more than just their birthdays.
- Same goes for my role of being a brother. My sisters have been going off track on their life journey, and I think maybe I could help them by talking to them more often.
- In general, though, I think I have mostly been a good person, but there is always room to improve.
### 7. What am I most grateful for in 2021?
- I'm grateful for Tanya (my spouse), as we have been living in the same room for more than a year due to the pandemic. And even though, at times, it was difficult, overall we did fine. So, I'd like to thank her for her patience.
- However, that said, I don't think that this can continue much longer without changing anything. So, in 2022 I want to help her find her calling. We will find a class for her that will help her learn something new and apply those skills to find something to do during this pandemic (which will last another 50 years, according to South Park 🤣)
- Grateful for my colleagues. I have learned a ton and have become a much better developer thanks to my colleagues at Guy Carpenter. I haven't been a part of many teams after graduation but know for a fact that the team I am a part of now is pretty much the best one could get.
- As an extension of that, I am thankful for the company that I work for. Guy Carpenter allows me to work on the things that excite me and help me learn and become better. Furthermore, the conditions that I work under are very nice. Work-Life Balance is very good.
- Grateful for my family (dad, mom, and sisters). Grateful to my mom and dad for all the support they give me and Tanya.
### 8. What books did I read? Which ones were most impactful and why? What were the main takeaways?
Below is the list of books I read in 2021 (and made a note in Goodreads)
- [Doing Content Right](https://www.rasulkireev.com/doing-content-right-book-review/)
- [The Art of Learning](https://www.rasulkireev.com/the-art-of-learning-book-review/)
- [The Richest Man in Babylon](https://www.rasulkireev.com/richest-man-in-babylon/)
- [The Way of the Superior Man](https://amzn.to/3HVkBz1)
- [Atomic Habits](https://amzn.to/3r3SlDn)
- [How to Take Smart Notes](https://www.rasulkireev.com/how-to-take-smart-notes/)
All those books were influential in some way. I haven't implemented learning from these books as much as I would have liked.
For example, Atomic Habits gives a great framework for implementing systems that will help one with creating new habits, however, I have failed to follow the advice from this book.
The same goes for Doing Content Right which teaches a lot about creating content, however, I haven't created much content in 2021, which I plan to change in 2022.
The Richest Man in Babylon and The Art of Learning were a little different in the sense that the whole books are dedicated to a few main ideas and tell stories around those ideas. The first book did a good job of ingraining an idea of saving a portion of income and investing into businesses that will continue to bring income in the future, ala Microacqusitions. The Art of Learning "forced" the idea that (or at least how I understood it) to become an expert learner you need to approach new fields with a child-like curiosity and exploration. It further taught me a few good techniques to enter the state of Flow and Relax | relaxation.
As for the How to Take Smart Notes, it taught me a system of [Zettelkasten](https://zettelkasten.de/introduction/), which I'm implementing "as we speak".
### 10. What is currently stressing me out the most?
- #1 thing that is stressing me out is the accumulation of junk in our house. We are failing to get rid of things we don't need, but we keep accumulating more.
- Me being a little overweight and lacking Self-Control and Self-Discipline to take this under control.
---
# Fluent Forever
URL: https://www.rasulkireev.com/fluent-forever-book-review/
Type: book
Date: 2021-12-14
Description: Gabriel shares his expeience and his research into the most effective ways of learning any foreign language. THe main idea of the book is to use an SRS like Anki. But there are a ton of other details that will help you excel in you journey of learning a language.
Author: Gabriel Wyner
Tags: Language, Learning, SRS
Content:
## My Thoughts
I think this is a great book. It re-introduced me to the concept of the SRS and Anki. I have encountered those before, but haven't used them much. Admittedly, I'm not very active about using those now either, but this is more of a discipline problem. The ideas laid out in this book are simple and effective. You just got to want to learn a language enough to actually follow through.
Learning a language is hard, don't let anyone tell you otherwise, but once you are equipped with tools from this book you are much more likely to succeed in your endeavors.
## Summary
Below are the most important points from the book, IMHO. For more, check out the highlights below, especially the Key Points paragraphs.
1. THE THREE KEYS TO LANGUAGE LEARNING:
* Learn pronunciation first.
* Don't translate.
* Use spaced repetition systems.
2. We recall images much better than words because we automatically think conceptually when we see an image. Image-recall studies have repeatedly demonstrated that our visual memory is phenomenal. So **when learning new words you need to bind them to images**.
3. Rote repetition is boring, and it doesn't work for long-term memorization. Take the lazy route instead: **study a concept until you can repeat it once without looking and then stop**. After all, lazy is just another word for "efficient."
4. To maximize efficiency, spend most of your time recalling rather than reviewing. Use [Anki](https://apps.ankiweb.net/) for that.
5. Memory tests are most effective when they're challenging. The closer you get to forget a word, the more ingrained it will become when you finally remember it. If you can consistently test yourself right before you forget, you'll double the effectiveness of every test. Again, [Anki](https://apps.ankiweb.net/) will help with that.
6. This is painful, but a necessary one. Do flashcards yourself. Only you will have an emotional connection with images and words.
7. Use writing to test out your knowledge and find your weak points. Use the example sentences in your grammar book as models, and write about your interests. Submit your writing to an online exchange community. Turn every correction you receive into a flashcard. In this way, you'll find and fill in whatever grammar and vocabulary you're missing.
---
# Doing Content Right
URL: https://www.rasulkireev.com/doing-content-right-book-review/
Type: book
Date: 2021-12-04
Description: Steph is taking you on a journey from figuring out what you can write about all the way to earning money from it.
Author: Steph Smith
Tags: Blogging, Writing, Content, Marketing, SEO, Monetization, Personal Monopoly
Content:
## My Thoughts
Doing Content Right by [Steph Smith](https://stephsmith.io/) is not just a regular book and should not be judged as such. Think of it like a written course, where in addition to the "book" that Steph wrote you will get access to:
- live cohorts
- private AMAs
- bonus podcast events
- bonus podcast chapters
- private Telegram Community
- exercises that will help you nail down the main points
- various spreadsheets that Steph came up with to help her manage her life
- and all of this just to this date, who knows what she will come up with (as of December 2021)
For anyone remotely interested in producing written content, I strongly recommend you purchase that book.
One thing to note is that since I have purchased the book, the price has increased slightly, and it now costs $200. If you should still buy it or not, I can't say, it all depends on how much money you've got to spend. But what I can say is that you will enjoy reading and learning anything that Steph has to share.
If you don't believe me look at those reviews...

## Summary
As you will see in the [highlights](#highlights), the book consists of five parts:
1. [Your Personal Monopoly](#chapter-1---your-personal-monopoly)
2. [Building Your Home](#chapter-2---building-your-home)
3. [Distribution](#chapter-3---distribution)
4. [Search Engine Optimization](#chapter-4---channels)
5. [Monetization](#chapter-5---monetization)
Steph is taking you on a journey from figuring out what you can write about all the way to earning money from it. Here are the key ideas that you will see in this book that will help you achieve your goals in writing.
- In order to succeed with your writing you either need to come up with something new and relevant, or improve something that already exists.
- Don’t write just to “make money”. Write to solve problems. Money should always be a byproduct of your creations, not the original intent.
- Start with something niche and branch out as you go along and make a good habit of writing and publishing.
- When it comes to your digital home there are many options, so try to keep it as simple as possible. Prefer to pay a little bit to own your content and your distribution. [Ghost](https://ghost.org/) is a great option, you can pay $9/month and they will handle all the technical details. If you are at least a little tech-savvy, you can host your Ghost blog on [Digital Ocean](https://m.do.co/c/a2a2c0826ff3), this will cost you around $5/month. If you don't want to pay, [Substack](https://substack.com/) is probably your best bet.
These are my major learnings from all the chapters apart from Distribution and SEO. Unfortunately, there is no one thing that I can summarize about those chapters. The majority of the book is focused on those topics. A highlight of what you might see is below.
If I had to summarize, I would do it like this:
- Write and publish ofter.
- Keep the blog simple.
- Produce useful content.
- Talk to your audience to gather feedback.
- Think about your content, make sure it is discoverable via search engines.
- Don't charge until you gather a substantial following.
- Have fun.
- Own your content, then syndicate to other platforms.
---
# How to Take Smart Notes
URL: https://www.rasulkireev.com/how-to-take-smart-notes/
Type: book
Date: 2021-11-13
Description: If you've heard the term 'Zettelkasten' flying around recently, then you might be wondering what is all the rage. Well, this book pretty much started this trend. Sönke Ahrens describes in great detail the note-taking process through which Niklas Luhmann was able to achieve phenomenal productivity in writing academic papers. Good news is that you can use this method too.
Author: Sönke Ahrens
Tags: Nonfiction, Productivity, Writing, Self Help, Personal Development, Education, Business, Psychology, Reference, Research
Content:
## My Thoughts
If you've heard the term 'Zettelkasten' flying around recently, then you might be wondering what is all the rage. Well, this book pretty much started this trend. [Sönke Ahrens](https://takesmartnotes.com) (author of this book) describes in great detail the note-taking process through which Niklas Luhmann was able to achieve phenomenal productivity in writing academic papers. The good news is that you can use this method too. I strongly recommend this book to most people.
## Summary
### The Zettelkasten system can help you become very productive when it comes to publishing written work.
The protagonist of this book is [Niklas Luhmann](https://en.wikipedia.org/wiki/Niklas_Luhmann) a German Sociologist. He is considered one of the most important social theorists of the 20th century. The reason he is the main hero in this book is his note-taking (Zettelkasten) system. This system helped Niklas [publish 50 books and over 600 articles](https://zettelkasten.de/introduction/#luhmann-s-zettelkasten).
### This is a rough outline of a Zettelkasten process
1. Make fleeting notes (ideas that pop into your mind as you go through your day [[1]](https://betterhumans.pub/zettelkastens-3-note-taking-levels-help-you-harvest-your-thoughts-58326840f969)).
2. Make literature notes (anything you capture from the content you are consuming).
3. Make permanent notes (result of going through the literary and fleeting notes and massaing them into your permanent storage tobe used for your work).
4. Now add your new permanent notes to the slip-box (for example [Obsidian](https://obsidian.md)).
5. Develop your topics, questions and research projects bottom up from within the system. Do not brainstorm for a topic. Look into the slip-box instead to see where chains of notes have developed and ideas have been built up to clusters.
6. After a while, you will have developed ideas far enough to decide on a topic to write about.
7. Turn your notes into a rough draft.
8. Edit and proofread your manuscript.
### Zettelkasten system will help you avoid the blank page syndrom.
> To get a good paper written, you only have to rewrite a good draft; to get a good draft written, you only have to turn a series of notes into a continuous text. And as a series of notes is just the rearrangement of notes you already have in your slip-box, all you really have to do is have a pen in your hand when you read ([Chapter 10](#101--read-with-a-pen-in-hand))
---
# The Art of Learning
URL: https://www.rasulkireev.com/the-art-of-learning-book-review/
Type: book
Date: 2021-10-22
Description: In this book the reader is taken on a journey of learning, improving, and personal growth. Josh is an incredible human, who achieved great success in different fields all thanks to his ability to learn. In this book, we get to see stories from his life as he tells them and see what is it that makes a great learner.
Author: Josh Waitzkin
Tags: Biography, Chess, Learning, Tai Chi
Content:
## My Thoughts
Fantastic book. I enjoyed reading it a lot. It feels a little different from the other books we read nowadays. Most (non-fiction) books are filled with facts and arguments to support those facts. In this book, however, Josh takes us on a journey of a lifetime, literally. We get to see how Josh was like when growing up and becoming a chess master, all the way to his adulthood where he was mastering the art of Tai Chi. Through those stories, we get to learn what does it take to become a great learner.
I'm not saying this book is unique in the sense that we get to hear stories (there are many autobiographies out there), but rather that the way Josh tells those stories. There are parts in this book that I couldn't stop reading and was just consumed by the story that was happening. To those who have read the book, I'm referring to the puma store. Still is stuck with me.
## Summary
* If you want to achieve greatness you must learn to lose. To improve you need to compete at your level or above. When you do that losses are inevitable and you need to accept them and learn from them. ([Chapter 2](#chapter-2-losing-to-win))
* Don't rush the process. Keep the learning incremental, focus on short-term goals ([Chapter 4](#chapter-4-loving-the-game)).
* Practice, practice, practice. It's good for any reason, but things especially useful is ingraining the learning deep in your brain, to the point where the skill the second nature. Now you don't even have to think about it. ([Chapter 13](#chapter-13-slowing-down-time) and [Chapter 15](#chapter-15-the-power-of-presence))
* Learn to disregard any destruction by entering the Soft Zone. This is a state where you embrace the destruction and instead of fighting them, you roll with them. Easier said than done, many will say. This is how to learn to enter the soft zone. First, realize there is a distraction that is confusing you. Try accepting it. After that seek out that distraction in your learning process to get accustomed to it. This will help both with this exact distraction, but it will also make you better at dealing with any other distraction. ([Chapter 5](#chapter-5-the-soft-zone-lose-yourself))
* You can gain a huge boost to your cognitive and physical performance by learning efficient recovery techniques. In other words, you need to regularly undergo hard physical exercises, for example riding a bike at max speed for a minute. Every time you do this, your heart rate will increase by a lot, but each time it will get much better at reducing the heart rate after the exercise is done. This exercise will teach your body to quickly recover from physical and cognitive overload. ([Chapter 16](#chapter-16-searching-for-the-zone))
* Learn to enter the zone by creating a routine ([Chapter 17](#chapter-17-building-your-trigger)). This is a simple process:
1. Observe your life and find the moments/activities where you feel the best/most focused.
2. After you found it attach small quick exercises before that activity (for example, quick snack, 5min meditation, and a 5min light exercise)
3. Repeat this over and over
4. At some point those small exercises (snack, meditation, etc.) will become a trigger for you to enter "The Zone".
---
# How to create an Ethereum Token with Python (ERC20)
URL: https://www.rasulkireev.com/creating-ethereum-token-with-python/
Type: tutorial
Date: 2021-09-01
Description: This tutorial teaches you how to create/develop your own Ethereum token (ERC20) with Python on Polygon Network.
Tags: blockchain, ethereum, erc20, crypto, python, vyper
Content:
In this tutorial, we will create an Ethereum token on the Polygon Network from scratch. To create our token we will use Python and Python-like programming languages ([Brownie](https://eth-brownie.readthedocs.io/en/stable/toctree.html) and [Vyper](https://vyper.readthedocs.io/en/latest/), we will learn more about them later).
By the end of this tutorial, you will have a personal token on a real Polygon network and hopefully a better understanding of how everything works on the Ethereum network.
One thing to keep in mind is that the Python library we will be using today is meant for development and testing only. This means that the code we will write today is not meant to be used for production and users should not be interacting with it. However, that doesn't mean your token isn't "real". It is very real and can be used as any other token. Mainly you can just transfer it to someone else. At this stage, there isn't a ton of utility behind it, since it will be created in isolation.
I have decided to call my token razzle-dazzle for unimportant reasons. Even though it doesn't matter too much, but I encourage you to come up with a fun, short name that will be somewhat personal to you.
If at any point you are lost or having trouble following, you can also use my [Github repo](https://github.com/rasulkireev/razzle-dazzle) where I host this code. If you have any questions, feel free to create an issue in that repo.
## 1. Prerequisites
In this tutorial, we are going to use a lot of cool Python-related libraries, so it would be great if you had some experience with Python. Even if you didn't you should be fine, but if you run into any issue, it will be harder for you to debug. Furthermore, if you didn't have any Python experience, it would make more sense for you to learn Ethereum related development with Javascript, as it is more popular, offers more tutorials and support. This tutorial is done for people who love developing with Python and would love to learn more about the crypto development space with the language that they already know and love.
> Python is in my ♥️
Now that we have the basic knowledge out of the way let's talk about technical things. I will be developing on a macOS with the following technologies:
### a. Poetry
[Poetry](https://python-poetry.org/docs/) is the new, hot tool that helps with dependency management and deployment. It is awesome. If you haven't worked with it before then you are in for a treat. You can install poetry by running this script in your terminal
```
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
```
### b. Pyenv
[Pyenv](https://github.com/pyenv/pyenv). Pyenv helps us to manage multiple versions of Python on our machine. It is a great tool that will make your life easier as you develop different Python projects. I recommend installing pyenv via Homebrew. If you have Homebrew installed just run `brew install pyenv` in your terminal.
> If you don't have Homebrew, use [this tutorial](https://setapp.com/how-to/install-homebrew-on-mac) to get it working.
### c. Pipx
[Pipx](https://pypa.github.io/pipx/). Pipx is a tool that allows us to install python libraries on your local machine without worrying about virtual environments and version mismatches. Pipx can also be installed with Homebrew. Just run `brew install pipx` in your terminal.
### d. Brownie
[Brownie](https://eth-brownie.readthedocs.io/en/stable/toctree.html). Brownie is a Python-based framework that will make it a lot easier for us to develop and test smart contracts on the Ethereum network. Brownie will need to be installed via pipx. So, make sure you install that first. Once you are ready, run `pipx install eth-brownie` in your terminal.
Alright! If all went well, you can pat yourself on the back. Take a breath or two and start reading the next part of the tutorial. This is where all the meat is.
## 2. Setting up your Project
### a. Creating Project Folder
The first thing that comes in handy is the brownie installation. Brownie has a lot of cool templates that we can use to quickstart our development. To see the list of templates (mixes), look in [their repo](https://github.com/brownie-mix/). We are going to use the [vyper-token-mix](https://github.com/brownie-mix/vyper-token-mix) since we are going to "write" our smart contracts in Vyper (a Python-like language to write smart contracts. Solidity competitor).
So, to use the template we are first going to the folder where you host all your code. I like to keep my project under the `code` folder. This makes it very neat. If you have a folder of your preference, "go there" in your terminal via `cd {folder of your choice}`. If you don't have a centralized location for all your code, do this:
1. Run `mkdir ~/code` in your terminal. This will create a `code` folder inside your home directory.
2. cd into that new folder via the `cd ~/code` command in your terminal
Now in that folder run the following command `brownie bake vyper-token`. This will scaffold a project folder for you that will work in. The created folder will be called `vyper-token`. Feel free to change the name of this folder to the name you have decided to give your project. Mine is called `razzle-dazzle`.
**From now on I'm going to refer to this folder as `razzle-dazzle`. So, whenever you see this name, replace it with your own.**
#### Getting familiar
If you look under the contracts folder there is a file called `Token.vy`. This is the general ERC-20 type smart contract that will lay out the basic token requirements. You don't have to do anything more. The core functionality is already there. In fact, we are not going to do any other Vyper related work in this tutorial. Just more brownie and python.
### b. Setting up Dependencies and Versions
#### Poetry
This is the part where we start using Poetry. First open up your project folder in VS Code or another code editor of your choice (ideally, it should have a terminal built-in). From the terminal of your code editor run `poetry init` to start the poetry project. In reality, running this function will just help you with creating the `pyproject.toml` file where we will keep note of the dependencies we are using.
Once you run `poetry init` you will be asked for some inputs, like the project name, project description, etc. Feel free to use the defaults or to change them up. **The only thing that I want you to be careful with is the python version we are going to use. The default is likely to be `^3.7`, but I want you to change it to `^3.8` and press enter.** If for some reason you can accidentally, pressed enter at the Python version stage, don't worry you can change it later, directly in the `pyproject.toml` file.
When you are asked if you want to set dependencies programmatically, enter `no`. Finally, the script will ask you to confirm the creation of the toml file, to which you should respond `yes`!
> This is where you would manually change `^3.7` to `^3.8` on the python version line.
#### Pyenv
Another really important part is the actual Python version we are going to use in our project. What we did a second ago in the pyproject.toml file is that we said what is the minimum python version we are willing to work with, but now we actually need to set the python version we are going to use. Pyenv will help us with that.
So from the inside of your project directory, run the following command in your terminal `pyenv install 3.9.6`. This will install Python 3.9.6 version on your machine. Once it finishes installing (it might take a minute or two, be patient :) ), run `pyenv local 3.9.6`. This will set the python version inside your project directory. Test this, by running `python -V`, you should be able to see the `3.9.6` response.
If this step was successful, let's move to the next one.
#### Dependencies
**Pytest**. The one annoying thing with brownie is that it is very picky with package versions. For instance, by default poetry adds a pytest version that is incompatible with brownie. To fix that we are going to run `poetry add -D pytest@latest` in your terminal. This will install the latest pytest version. Once this command finishes running you should be able to see the change that happened in your `pyproject.toml` file.
**Brownie**. Next, let's add brownie as a dependency in our project. You can do this by running `poetry add eth-brownie` in your terminal. This should run nicely.
**Vyper**. Next, let's add vyper as a dependency. As you can guess, you can do that with a `poetry add vyper` command. Here, there might be a catch with versions. If not you are lucky, otherwise here is what it might look like. By far the most common issue you can get at this point is that if poetry throws an error that will sound something like this:
> `eth-brownie` depends on `vyper {version something, something}`
If you see this then all you need to do is to run `poetry add vyper@^{required version}` instead of just vyper. That tells poetry to add a specific version of vyper to your project that `eth-brownie` package likes.
#### Testing the environment
Now that we did all the groundwork, let's test if all the installations are working nicely with each other. Try running `poetry run brownie console` in your terminal. If the console doesn't throw any error at you and you can actually see something that looks like a Python interpreter, then good job, we can move to the next steps! If you are running into some issue make sure to DM me on [Twitter](https://twitter.com/rasulkireev), I'll help you debug your issues.
> The reason we are running commands with `poetry run` before them is that this way we are telling our console to run using poetry. This way poetry will create a virtual environment for us and we don't have to think about these things anymore.
Try playing around with the console. Type `accounts` and press `Enter`. This should display the 10 wallet addresses that brownie created for us in the test network. To see other things you can do in brownie console, check out [their docs](https://eth-brownie.readthedocs.io/en/stable/toctree.html) (they are excellent).
### c. Setting up the Wallet and Network Connection
To create a token on one of the Ethereum networks we will have to connect to those networks. For that we will need two things:
- a wallet (like [metamask](https://metamask.io))
- an [infura account](https://infura.io)
A wallet will hold your token and will be used to make any transactions. An Infura account is required to actually connect to the Ethereum network. You could try doing it yourself, for that you would need to get the whole Ethereum ledger among other things. This is a hassle, so I recommend going with Infura, they make it very easy, and free, especially if you are just playing around with it. They only start charging after more than 100k operations have been made with your Id.
#### Infura
1. Go to the [Infura's website](https://infura.io) and create an account there.
2. Once registered go to the Ethereum tab and "Create a New Project".


3. Then go to the setting tab under your project and see if a "client id" and a "project secret" have been generated. If so, then we are all good on the Infura front.

4. One last config you have to do is to enable the Polygon Network on your Infura account. To do that, head over to the [payments page](https://infura.io/payment), click on the Polygon PoS option, and `Update Subscription`.

#### Wallet
For the wallet requirement, we are going to use [Metamask](https://metamask.io).
1. Go to the link above and install the browser extension.
2. Follow the steps to create your first wallet.
1. If you already have a wallet, I suggest you create a new one, just for testing this tutorial. That way we minimize any chance of leaking secret info. Although this tutorial has this covered.
3. Then you need to add Polygon mainnet and testnet to your metamask wallet. To do that please follow [this tutorial](https://www.publish0x.com/the-glitcher/how-do-i-connect-polygon-matic-to-metamask-xxyyqpw).
4. One last final thing. You need to have some MATIC in your wallet, both on the Mainnet and the Testnet. You can get MATIC for Testnet [here](https://faucet.polygon.technology) and Mainnet [here](http://macncheese.finance/matic-polygon-mainnet-faucet.php). If either option is not working try the [following link](https://blog.pods.finance/guide-connecting-mumbai-testnet-to-your-metamask-87978071aca8).
#### Environment Variable
It is never a good idea to keep your secrets directly in the code. Instead, we need to use the environment variable. Here is how to do it well.
1. create a `.env` file.
2. In that file add the following:
```
WEB3_INFURA_PROJECT_ID='asdfasdfasdfasdf'
PRIVATE_KEY='0x123489jdfghsdfhdfghdfhh'
```
Where the `WEB3_INFURA_PROJECT_ID` is the Infura Project ID that you saw when you created the Infura Project. Copy that over to the `.env` file. The PRIVATE_KEY is your wallet private key. To get it, you should click on your Metamask extension and press the three dots on the top right corner.

Once you clicked the Account Details button, the next button to click will be the Export Private Key.

Copy the key over to the `.env` file.
3. Finally, the final step to making this super secure is to make sure git doesn't track and therefore doesn't expose that file. In order to do that, create a file called `.gitignore` and add `.env` to it. Make sure to have only one file/folder per line. This is what I have in my .gitignore file:
```
__pycache__
.history
.hypothesis/
build/
reports/
.env
```
4. Once you add those secrets, we need to make sure our code can read them. For that add a new dependency to our project by running `poetry add python-dotenv` in your terminal.
> Note: if you ever run into an issue with dependency versioning like below try installing the exact version that is "requested". This is because `eth-brownie` is somewhat strict on versions it uses for some packages. So in this example, I would do `poetry add python-dotenv@0.16.0`

5. Finally, we need to tell Brownie where to look when it comes to Env Vars. We can do that by modifying the `brownie-config.yaml` file. We don't yet have that in our repo. So, go ahead and create that file in the root folder of your project. Then add the following line to it:
```
dotenv: .env
```
That's it.
## 3. Deploying your Token
Now that we are done with the set up we can get to the actual Token creation.
### a. Creating a Local Account
When we first played around with the Brownie console you saw that 10 accounts were created. None of these were "our" accounts. Since a minted token will need to be created from an account we need to create one.
So, to create an [account](https://eth-brownie.readthedocs.io/en/stable/account-management.html#local-accounts) on our local machine you are going to run this command:
```
poetry run brownie accounts new test-account
```
> Note that you can use any name that you want instead of `test-account`. You can give it the name of your token like I did `razzle-dazzle-account`.
You will be asked for your Private Key and Your Password. For the Private Key you can use the value that you saved in the `.env` file. For the Password you can use your Metamask password.
> Note: You can actually use other values for that command, something that you come up with. But to keep it simple, I thought it makes sense to use the same values.
Once you give those, you should see a message like this:
```
SUCCESS: A new account '0x84E080ABF7657948ACa5eEF631069b3d8f7a7asdasdasd' has been generated with the id 'test-account'.
```
### b. Preparing the deployment file
In the `scripts` folder create a `token.py` file. Then add the following to that file:
```python
#!/usr/bin/python3
import os
from brownie import Token, accounts
def main():
account = accounts.load('test-account') # If you gave your account a different name, use that instead.
return Token.deploy("Razzle Dazzle", "RD", 18, 1e20, {"from": account})
```
Let's quickly go over what is happening on the last line.
1. "Razzle Dazzle" is the name you want to give your Token. You can enter anything you want here.
2. "RD" is the short ticker symbol. You can enter anything you want here.
3. 18 is the number of decimals your token will have. This is mostly a standard, so I suggest you keep this value.
4. 1e20 is the number of tokens you will receive. This is the same as 1000. You can enter any amount you want.
We should be ready to deploy our token!!!.
### c. Deploying our Token
Well, we are almost done. First, we will deploy to the test network. To do that use the following command (in your terminal):
```
poetry run brownie run token.py --network polygon-test
```
You will be asked to enter the password. Use the password you used in the account creation stage. If everything goes well, you should see something like this:
```
Brownie v1.16.2 - Python development framework for Ethereum
RazzleDazzleProject is the active project.
Running 'scripts/token.py::main'...
Enter password for "hello":
Transaction sent: 0x0512b92fa73b127db55b7c9db7bd15db69d2ee2f1275f24a7f9ee03391b5d568
Gas price: 3.0 gwei Gas limit: 527562 Nonce: 2
Token.constructor confirmed Block: 20278304 Gas used: 479602 (90.91%)
Token deployed at: 0xE7A5707dC35FFFfb90e0D100500830dba066A5dC
```
If that happened, congrats, you did it. We can move on to the mainnet network. If it didn't work, you need to look at the error output, it will suggest what you need to do.
Let's deploy to the mainnet now (to make it more "real"). All you have to do is replace the network flag, like so:
```
poetry run brownie run token.py --network polygon-main
```
You will have to repeat the same process as before.
### d. Seeing you Tokens in your wallet
The last thing to check if everything worked is to check if the tokens are in your wallet. To do that we can head over to the Metamask extension and import the token.
1. Copy the location where the token was deployed to. It is the last value you get in the output, after running the `token.py` pipeline.
2. In the Metamask extension, go to the `Assets` tab and press the `Import Token` button.
3. Enter Contract Address (for me it is `0xE7A5707dC35FFFfb90e0D100500830dba066A5dC`), Token Symbol (for me it is `RD`) and the Token Decimal (18).
4. Press `Add Custom Token`
You should now see the token in your wallet and can do anything you want.
## 4. Final Words
Congrats on completing this lengthy tutorial. I hope everything was clear and understandable. Also, I hope it went smoothly, without any issues. If any issues occurred I hope you contacted me for help.
As mentioned in the beginning, this token is a real deal and you can do all the regular things you would do to other tokens, like sending them to other people. However, there isn't much use to your token, in other words, it doesn't have much utility.
But don't get disappointed. The whole point of this tutorial was to show you how easy it is to develop and test your Crypto ideas using python and brownie. If you spend some time learning vyper or solidity to develop smart contracts, you will be able to easily test your ideas with the eth-brownie library.
Thanks for taking the time to read this tutorial. Hope you have a great day and a great crypto learning journey.
---
# Why Buddhism is True
URL: https://www.rasulkireev.com/why-buddhism-is-true/
Type: book
Date: 2021-08-24
Description: Why Buddhism is True feels a little too watery, however I can't judge it fully since I haven't finished it. The reason I did was that after Chapter 7 I wasn't getting any new information, it felt like 7 chapters of the same thing.
Author: Robert Wright
Tags: Buddhism, Psychology, Religion, Evolutionary Psychology
Content:
## My Thoughts
I remember being very excited when I picked up this book. I got interested in the topic of Buddhism and downloaded a couple of Buddhism related books (more reviews coming 😏). First few chapters felt very fresh, exciting. However, by the 7th chapter I felt like I'm reading water. As in the main point of the books is regaring meditation, being present and happiness. I decided to stop reading after finishing the 7th chapter, as I had other exciting titles to check out. However, I might return to it at some point.
Despite saying this was mostly water, I did make a few notes. You will notice that the theme of those note is very similar. Hope you find something useful that resonates with you.
---
# Economical Writing
URL: https://www.rasulkireev.com/economical-writing/
Type: book
Date: 2021-05-18
Description: Even though this book is titled and marketed as a book for economists, in reality, it can help anyone to improve their writing (especially, nonfiction writers).
Author: Deirdre N. McCloskey
Tags: Writing, Economics
Content:
## My Thoughts
A Harvard Economics Professor recommended this book to me 5 years ago. I got it immediately. Unfortunately, it did not stick at the time. I was not a [voracious reader](/reading-is-good), back then. I regret not reading it, as it would have helped my writing in college a lot. Well, you can't change that now. But, I can improve my writing now, and this book does give you a lot of great ways to do that.
I have no idea if it is working yet (is my writing any good :D), but I'd like to believe it is.
The book is short, around 100 pages, and a few pages per chapter. Each chapter is a suggestion on how to become a better writer.
Even though this book is titled and marketed as a book for economists, in reality, it can help anyone to improve their writing (especially, nonfiction writers).
## Summary
* Learn to take [criticism](https://blog.glyph.im/2008/07/constructive-criticism.html).
* The [style of writing](https://m.signalvnoise.com/writing-style/) matters at least as much as the content.
* [Try to be clear as possible](https://signalvnoise.com/posts/3144-what-clarity-is-all-about). If any of your readers don't understand something, it is most likely your fault. You need to rewrite the sentence.
* In matters of taste the only standard is the practice of good people.
* As you improve, your previous work might seem rubbish. There is not much you can do, apart from fighting this feeling. You will keep improving, you have to accept that.
* Don't wait until the research is done to begin writing because writing, to repeat, is a way of thinking. Research is writing.
* So What? Answer that question in every sentence, and you will become a great scholar, or a millionaire; answer it once or twice in a ten-page paper, and you'll write a good one.
* At the end of a session, always write down your thoughts. This will save you half an hour of warming up when you start again.
* Keep your paragraphs short (though, not too short). One idea per paragraph is enough.
* Use fewer commas, quite often they add unnecessary pauses.
---
# The Richest Man In Babylon
URL: https://www.rasulkireev.com/richest-man-in-babylon/
Type: book
Date: 2021-05-11
Description: 'The Richest Man In Babylon' is a collection of short and educational stories. These stories tell you about people living in ancient Babylon. Each story teaches you a small lesson on how to make progress towards financial stability.
Author: George S. Clason
Tags: Wealth, Finances, Money
Content:
## My Thoughts
Before I read this book I was not sure what to expect. So, this summary for someone in a similar position.
"The Richest Man In Babylon" is a collection of short and educational stories. These stories tell you about people living in ancient Babylon. Each story teaches you a small lesson on how to make progress towards financial stability.
You could say that this book is about getting rich, but in reality, it is about discipline. The rules are simple. If you are disciplined enough to implement them, success awaits you.
By reading this review you will get the most of the book, yet, I still recommend you give it a read. You are very likely to complete it in a few days and actually enjoy it.
## Summary
There are 10 chapters in this book. 10 little stories that have a common theme.
- Save at least 10% of your earnings
- Control your spendings. What you may call essential is probably not.
- Invest your savings
- Invest only in the thing you know about, or with someone who knows what they are doing.
- The easiest way to do that these days is by buying ETFs.
Some points are specific to different stories. For example:
- Learn, invest in yourself to increase your earning power.
- Keep a part of your savings safe, so that in the extreme case where your investment doesn't pan out, you are not left with nothing.
---
# The Lessons of History
URL: https://www.rasulkireev.com/lessons-of-history/
Type: book
Date: 2021-03-15
Description: The Lessons of History is a fantastic book, the best one I read in 2020. It is undervalued. While people talk about recent bestsellers this gem is waiting to be read. Any person can gain valuable insight and knowledge from this book.
Author: Will and Ariel Durant
Tags: History
Content:
## Summary
The Lessons of History is a fantastic book, the best one I read in [2020](/2020/). It is undervalued. While people talk about recent bestsellers this gem is waiting to be read. Any person can gain valuable insight and knowledge from this book.
There are only 100 pages, so you should be able to read this book in a couple of days. But I would suggest to take it slow. Read one chapter at a time and think about what you read.
This books is separated into 13 little chapters, each highlighting a major topic, how changed during our history, and what lessons can we take in those topics.
#### I. Hesitations
#### II. History and the Earth
#### III. Biology and History
#### IV. Race and History
#### V. Character and History
#### VI. Morals and History
#### VII. Religion and History
#### VIII. Economics and History
#### IX. Socialism and History
#### X. Government and History
#### XI. History and War
#### XII. Growth and Decay
#### XIII. Is Progress Real?
While reading the book, or those notes keep in mind that it was written in 1968. So many of Will's and Ariel's predictions came true. It makes you think that studying our history can teach us a lot about our future.
I know for certain that I will be coming back to read this again, and again, in the future.
## Book Notes
### II. History and the Earth
Climate no longer controls us as severely as Montesquieu and Buckle supposed, but it limits us. Man's ingenuity often overcomes geological handicaps: he can irrigate deserts and air-condition the Sahara; he can level or surmount mountains and terrace the hills with vines; he can build a floating city to cross the ocean, or gigantic birds to navigate the sky. But a tornado can ruin in an hour the city that took a century to build; an iceberg can overturn or bisect the floating palace and send a thousand merrymakers gurgling to the Great Certainty. Let rain become too rare, and civilization disappears under sand, as in Central Asia; let it fall too furiously, and civilization will be choked with jungle, as in Central America. Let the thermal average rise by twenty degrees in our thriving zones, and we should probably relapse into lethargic savagery. In a semitropical climate a nation of half a billion souls may breed like ants, but enervating heat may subject it to repeated conquest by warriors from more stimulating habitats. Generations of men establish a growing mastery over the earth, but they are destined to become fossils in its soil.
The development of the airplane will again alter the map of civilization. Trade routes will follow less and less the rivers and seas; men and goods will be flown more and more directly to their goal. Countries like England and France will lose the commercial advantage of abundant coast lines conveniently indented; countries like Russia, China, and Brazil, which were hampered by the excess of their land mass over their coasts, will cancel part of that handicap by taking to the air. Coastal cities will derive less of their wealth from the clumsy business of transferring goods from ship to train or from train to ship.
When sea power finally gives place to air and power in transport war, we shall have seen one of the basic revolutions in history.
### III. Biology and History
So the first biological lesson of history is that life is competition.
Competition is not only the life of trade, it is the trade of lifepeaceful when food abounds, violent when the mouths outrun the food. Animals eat one another without qualm; civilized men consume one another by due process of law. Co-operation is real, and increases with social development, but mostly because it is a tool and form of competition; we co-operate in our group-our family, community, club, church, party, "race," or nation-in order to strengthen our group in its competition with other groups.
Our states, being ourselves multiplied, are what we are; they write our natures in bolder type, and do our good and evil on an elephantine scale. We are acquisitive, greedy, and pugnacious because our blood remembers millenniums through which our forebears had to chase and fight and kill in order to survive, and had to eat to their gastric capacity for fear they should not soon capture another feast. War is a nation's way of eating. It promotes co-operation because it is the ultimate form of competition. Until our states become members of a large and effectively protective group they will continue to act like individuals and families in the hunting stage.
The second biological lesson of history is that life is selection. In the competition for food or mates or power some organisms succeed and some fail. In the struggle for existence some individuals are better equipped than others to meet the tests of survival.
Nature loves difference as the necessary material of selection and evolution; identical twins differ in a hundred ways, and no two peas are alike.
The third biological lesson of history is that life must breed. Nature has no use for organisms, variations, or groups that cannot reproduce abundantly. She has a passion for quantity as prerequisite to the selection of quality; she likes large litters, and relishes the struggle that picks the surviving few; doubtless she looks on approvingly at the upstream race of a thousand to fertilize one ovum. She sperms is more interested in the species than in the individual, and makes little difference between civilization and barbarism. She does not care that a high birth rate has usually accompanied a culturally low civilization, and a low birth rate a civilization culturally high; and she (here meaning Nature as the process of birth, variation, competition, selection, and survival) sees to it that a nation with a low birth rate shall be periodically chastened by some more virile and fertile group.
much of what we call intelligence is the result of individual education, opportunity, and experience; and there is no evidence that such intellectual acquirements are transmitted in the genes. Even the children of Ph.D.s must be educated and go through their adolescent measles of errors, dogmas, and isms; nor can we say how much potential ability and genius lurk in the chromosomes of the harassed and handicapped poor.
### IV. Race and History
It is not the race that makes the civilization, it is the civilization that makes the people: circumstances geographical, economic, and political create a culture, and the culture creates a human type. The Englishman does not so much make English civilization as it makes him; if he carries it wherever he goes, and dresses for dinner in Timbuktu, it is not that he is creating his civilization there anew, but that he acknowledges even there its mastery over his soul.
### V. Character and History
Nevertheless, known history shows little alteration in the conduct of mankind. The Greeks of Plato's time behaved very much like the French of modern centuries; and the Romans behaved like the English. Means and instrumentalities change; motives and ends remain the same: to act or rest, to acquire or give, to fight or retreat, to seek association or privacy, to mate or reject, to offer or resent parental care.
Nor does human nature alter as between classes: by and large the poor have the same impulses as the rich, with only less opportunity or skill to implement them.
History in the large is the conflict of minorities; the majority applauds the victor and supplies the human material of social experiment.
It is good that new ideas should be heard, for the sake of the few that can be used; but it is also good that new ideas should be compelled to go through the mill of objection, opposition, and contumely; this is the trial heat which innovations must survive before being allowed to enter the human race.
### VI. Morals and History
We must remind ourselves again that history as usually written (peccavimus) is quite different from history as usually lived: the historian records the exceptional because it is interesting-because it is exceptional.
Even in recorded history we find so popuissance affecretino ostituprotherican many instances of goodness, even of nobility, that we can forgive, though not forget, the sins. The gifts of charity have almost equaled the cruelties of battlefields and jails.
Sexual license may cure itself through its own excess; our unmoored children may live to see order and modesty become fashionable; clothing will be more stimulating than nudity.
### VII. Religion and History
It has kept the poor (said Napoleon) from murdering the rich. For since the natural inequality of men dooms many of us to poverty or defeat, some supernatural hope may be the sole alternative to despair. Destroy that hope, and class war is intensified.
**Note:** Atheist = rich?
Religion does not seem at first to have had connection with morals. Apparently (for we are merely guessing, or echoing Petronius, who echoed Lucretius) "it was fear that first made the gods" 25 -fear of hidden forces in the earth, rivers, oceans, trees, winds, and any sky. Religion became the propitiatory worship of these forces through offerings, sacrifice, incantation, and prayer.
**Note:** Origins of religion
Only when priests used these fears and rituals to support morality and law did religion become a force vital and rival to the state. It told the people that the local code of morals and laws had been dictated by the gods.
It pictured the god Thoth giving laws to Menes for Egypt, the god Shamash giving Hammurabi a code for Babylonia, Yahveh giving the Ten Commandments and 613 precepts to Moses for the Jews, and the divine nymph Egeria giving Numa Pompilius laws for Rome.
Pagan cults and Christian creeds proclaimed that earthly rulers were appointed and protected by the gods. Gratefully nearly ever state shared its lands and revenues with the priests.
Some recusants have doubted that religion ever promoted morality, since immorality has flourished even in of religious domination. Certainly sensuality, drunkenness, coarseness, greed, dishonesty, robbery, and violence existed in the Middle Ages; but probably the moral disorder born of half a millennium of barbarian invasion, ages war, economic devastation, and political disorganization would have been much worse without the moderating effect of the Christian ethic, priestly exhortations, saintly exemplars, and a calming, unifying ritual.
**Note:** Religion decreased violence?
A thousand signs proclaim that Christianity is undergoing the same decline that fell upon the old Greek ad nd religion after the coming of the Sophists and the Greek Enlightenment.
**Note:** Decline
One lesson of history is that religion has many lives, and a habit of resurrection. How often in the past have God and religion died and been reborn!
Does history warrant Renan's conclusion that religion is necessary to morality-that a natural ethic is too weak to withstand the savagery that lurks under civilization and emerges in our dreams, crimes, and wars? Joseph de Maistre answered: "I do not know what the heart of a rascal may be; I know what is in the heart of an honest man; it is horrible." There is no significant example in history, before our time, of a society successfully maintaining moral life without the aid of religion.
"As long as there is poverty there will be gods."
### VIII. Economics and History
The outstanding personalities in these movements were effects, not causes; Agamemnon, Achilles, and Hector would never have been heard of had not the Greeks sought commercial control of the Dardanelles;
**Note:** I like this phrase, but need to think of examples where that is true. Or just give it some more thought.
At the other end of the scale history reports that "the men who can manage men manage the men who can manage only things, and the men who can manage money manage all."
**Note:** My dad told me very similar truth about earning. People who are in close proximity to large sums of money have it easier when it comes to earning. Half percent of a million is more that 80% of 60000
Perhaps it is one secret of their power that, having studied the fluctuations of prices, they know that history is inflationary, and that money is the last thing a wise man will hoard.
The experience of the past leaves little doubt that every economic system must sooner or later rely upon some form of the profit motive to stir individuals and groups to productivity. Substitutes like slavery, police supervision, or ideological enthusiasm prove too unproductive, too expensive, or too transient. Normally and generally men are judged by their ability to produce-except in war, when they are ranked according to their ability to destroy.
We conclude that the concentration of wealth is natural and inevitable, and is periodically alleviated by violent or peaceable partial redistribution. In this view all economic history is the slow heartbeat of the social organism, a vast systole and diastole of concentrating wealth and compulsive recirculation.
**Note:** Concentration of wealth is inevitable, but so is the redistribution of such wealth.
### IX. Socialism and History
When businessmen predicted ruin, Diocletian explained that the barbarians were at the gate, and that individual liberty had to be shelved until collective liberty ent could be made secure. The socialism of Diocletian was a war economy, made possible by fear of foreign attack. Other factors equal, internal liberty varies inversely as external danger.
Conservatives, led by Wang An-shih's brother, argued that human corruptibility and incompetence make governmenis tal control of industry impracticable, and that the best economy a laissez-faire system that relies on the natural impulses of men.
**Note:** Open economy is superior to the communism type of regime since it appeals to the innate human desires. Trying to keep everything under government will lead to corruption .
Simply put, man is a flawed being.
### X. Government and History
Alexander Pope thought that only a fool would dispute over forms of government. History has a good word to say for all of them, and for for government in general.
Only fools dispute over forms of government, i.e t talking about us elections is a fools job.
Since men love freedom, and the freedom of individuals in society requires some regulation of conduct, the first condition of freedom is its limitation; make it absolute and it dies in chaos. So the prime task of government is to establish order; organized central force is the sole alternative to incalculable and disruptive force in private hands.
**Note:** One could say that government is necessary evil or rather something like a devils advocate
"If," said Gibbon, "a man were called upon to fix the period during which the condition of the human race was most happy and prosperous, he would without hesitation name that which elapsed from the accession of Nerva to the death of Marcus Aurelius. Their united reigns are possibly the only period of history in which the happiness of a great people was the sole object of government."
In that brilliant agc, when Rome's subjects complimented themselves on being under her rule, monarchy was adoptive: the emperor transmitted his authority not to his offspring but to the ablest man he could find; he adopted this man as his son, trained him in the functions of government, and gradually surrendered to him the reins of power.
**Note:** Arguably the most successful period of the Roman Empire was when the leader was not chosen by relatedness to the current emperor but by the treaties that make a good future leader. This is what Plato was suggesting in his work the Republic
How to come up with a government system that incentivizes the current leader to select the next best leader, *for the people*?
Aristocracy is not only a nursery of statesmanship, it is also a repository and vehicle of culture, manners, standards, and tastes, and serves thereby as a stabilizing barrier to social fads, artistic crazes, or neurotically rapid changes in the moral code. See what has happened to morals, manners, style, and art since the French Revolution.
The excessive increase of anything causes a reaction in the opposite direction; . . . dictatorship naturally arises out of democracy, and the most aggravated form of tyranny and slavery out of the most extreme form of liberty.
**Note:** Quote From Plato’s The Republic
All deductions having been made, democracy has done less harm, and more good, than any other form of government. It gave to hu man existence a zest and camaraderie that outweighed its pitfalls and defects. It gave to thought and science and enterprise the freedom essential to their operation and growth. It broke down the walls of privilege and class, and in each generation it raised up ability from every rank and place.
**Note:** Democracy is the best
Democracy has now dedicated itself resolutely to the spread and lengthening of education, and to the maintenance of public health. If equality of educational opportunity can be established, democracy will be real and justified. For this is the vital truth beneath its catchwords: that though men cannot be equal, their access to education and opportunity can be made more nearly equal.
The rights of man are not rights to office and power, but the rights of entry into every avenue that may nourish and test a man's fitness for office and power. A right is not a gift of God or nature but a privilege which it is good for the group that the individual should have.
if war continues to absorb and dominate it, or if the itch to rule the world requires a large military establishment and appropriation, the freedoms of democracy may one by one succumb to the discipline of arms and strife. If race or class war divides us into hostile camps, changing political argument into blind hate, one side or the other may overturn the hustings with the rule of the sword. If our economy of freedom fails to distribute wealth as ably as it has created it, the road to dictatorship will be open to any man who can persuasively promise security to all; and a martial government, under whatever charming phrases, will engulf the democratic world.
**Note:** The signs of disappearing democracy are all off
### XI. History and War
War is one of the constants of history, and has not diminished with civilization or democracy. In the last 3,421 years of recorded history only 268 have seen no war.
**Note:**
- What are those years?
- Is this legit info, cause there is always some kind of war?
- What scale of war is the author talking about ?
The causes of war are the same as the causes of competition among individuals: acquisitiveness, pugnacity, and pride; the desire for food, land, materials, fuels, mastery. The state has our instincts without our restraints. The individual submits to restraints laid upon him by morals and laws, and agrees to replace combat with conference, because the state guarantees him basic protection in his life, property, and legal rights. The state itself acknowledges no substantial restraints, either because it is strong enough to defy any interference with its will or because there is no superstate to offer it basic protection, and no international law or moral code wielding effective force.
**Note:** Causes of war. States are just like humans but without the restraints.
States will unite in basic co-operation only when they are in common attacked from without. Perhaps we are now restlessly moving toward that higher plateau of competition; we may make contact with ambitious species on other planets or stars; soon thereafter there will be interplanetary war. Then, and only then, will we of this earth be one."
### XII. Growth and Decay
History repeats itself, but only in outline and in the large. We may reasonably expect that in the future, as in the past, some new states will rise, some old states will subside; that new civilizations will begin with pasture and agriculture, expand into commerce and industry, and luxuriate with finance; that thought (as Vico and Comte argued) will pass, by and large, from supernatural to legendary to naturalistic explanations; that new theories, inventions, discoveries, and errors will agitate the intellectual currents; that new generations will rebel against the old and pass from rebellion to conformity and reaction; that experiments in morals will loosen tradition and frighten its beneficiaries; and that the excitement of innovation will be forgotten in the unconcern of time. History repeats itself in the large because human nature changes with geological leisureliness, and man is equipped to respond in stereotyped ways to frequently occurring situations and stimuli like hunger, danger, and sex. But in a developed and complex civilization individuals are more differentiated and unique than in a primitive society, and many situations contain novel circumstances requiring modifications of instinctive response; custom recedes, reasoning spreads; the results are less predictable. There is no certainty that the future will repeat the past.
Every year is an adventure.
**Note:** So, history is cyclical, but only in general. At the same time there is no certainty that the future will repeat the past.
No student takes seriously the seventeenth-century notion that states arose out of a "social contract" among individuals or between the people and a ruler. Probably most states (i.e., societies politically organized) took form through the conquest of one group by another, and the establishment of a continuing force over the conquered by the conqueror; his decrees were their first laws; and these, added to the customs of the people, created a new social order.
**Note:** War and violence has given life to the first government
When the group or a civilization declines, it is through no mystic limitation of a corporate life, but through the failure of its political or intellectual leaders to meet the challenges of change.
But do civilizations die?
Again, not quite. Greek civilization is not really dead; only its frame is gone and its habitat has changed and spread; it survives in the memory of the race, and in such abundance that no one life, however full and long, could absorb it all. Homer has more readers now than in his own day and land. The Greek poets and philosophers are in every library and college; at this moment Plato is being studied by a hundred thousand discoverers of the "dear delight" of philosophy overspreading life with understanding thought. This selective survival of creative minds is the most real and beneficent of immortalities.
**Note:** Non omnis moritur
### XIII. Is Progress Real?
History is so indifferently rich that a case for almost any conclusion from it can be made by a selection of instances. Choosing our evidence with a brighter bias, we might evolve some more comforting reflections.
**Note:** Anyone can find examples to prove their hypothesis.
We shall here define progress as the increasing control of the environment by life. It is a test that may hold for the lowliest organism as well as for man.
**Note:** Definition of progress
We have said that a great civilization does not entirely die-non omnis moritur. Some precious achievements have survived all the vicissitudes of rising and falling states: the making of fire and light, of the wheel and other basic tools; language, writing, art, and song; agriculture, the family, and parental care; social organization, morality, and charity; and the use of teaching to transmit the lore of the family and the race. These are the elements of civilization, and they have been tenaciously maintained through the perilous passage from one civilization to the next. They are the connective tissue of human history.
So our finest contemporary achievement is our unprecedented expenditure of wealth and toil in the provision of higher education for all. Once colleges were luxuries, designed for the male half of the leisure class; today universities are so numerous that he who runs may become a Ph.D. We may not have excelled the selected geniuses of antiquity, but we have raised the level and average of knowledge beyond any age in history.
Consider education not as the painful accumulation of facts and dates and reigns, nor merely the necessary preparation of the individual to earn his keep in the world, but as the transmission of our mental, moral, technical, and aesthetic heritage as fully as possible to as many as possible, for the enlargement of man's understanding, control, embellishment, and enjoyment of life.
**Note:** What is education?
If progress is real despite our whining, it is not because we are born any healthier, better, or wiser than infants were in the because we are born to a richer heritage, born on a higher level of that pedestal which the accumulation of knowledge and art raises as the ground and support of our being. The heritage rises, and man rises in proportion as he receives it.
**Note:** Compound interest in the largest of scales
The historian will not mourn because he can see no meaning in human existence except that which man puts into it; let it be our pride that we ourselves may put meaning into our lives, and sometimes a significance that transcends death. If a man is fortunate he will, before he dies, gather up as much as he can of his civilized heritage and transmit it to his children. And to his final breath he will be grateful for this inexhaustible legacy, knowing that it is our nourishing mother and our lasting life.
---
# Show Your Work
URL: https://www.rasulkireev.com/show-your-work/
Type: book
Date: 2020-05-14
Description: This is a good, solid read. I wouldn't call it life changing for me, more life upkeeping. For some people it can be life changing though. In this book, Austin argues that we should all share our work. He will share a lot of useful advice for doing work in public. Austin is very convincing. If you never considered sharing your work, by the end of this books, you will be convinced.
Author: Austin Kleon
Tags: Creativity, Work in Public, Work
Content:
## My Thoughts
This is a good, solid read. I wouldn't call it life-changing for me, more life up-keeping. For some people, it can be life-changing though.
In this book, Austin argues that we should all share our work. He will share a lot of useful advice for doing work in public. Austin is very convincing. If you never considered sharing your work, this book will change your mind.
## Summary
There are 10 main ideas in the book:
### 1. You Don’t Have to Be a Genius.
You can start sharing whatever your skill level is. In fact, the best level to do that is the beginner level. Sharing your work, while you are a beginner is a fantastic way to get to the expert level.
There are many advantages of sharing your work early on. It is more likely you will find people like you and will have more support and accountability. Furthermore, you are more likely to meet people who are more knowledgeable than you. They can become your mentors.
### 2. Think Process, Not Product.
When you are learning somethings it not about the final goal, it is about the journey. The only way to learn is to go through the process. There is no way around that. The final product is something visible to all, but if your goal is to learn, then the journey is more important. It is easier to focus on what has to be done today, than dream about the final product. This is akin to what James Clear is saying in his awesome book Atomic Habits. Each day you make a vote for you you want to be.
From the previous point, the huge point of sharing your work is attracting the right people. Those "right" people care about the process more than they care about the final product. People love seeing the creative process in action. That's the most beautiful part of any process, how it happens.
### 3. Share Something Small Everyday.
It's all about consistency. The only way to imprint this style of work and learning is by sharing something small every day. Again, I want to compare this to James Clear's Atomic Habits book. There on the first pages, he talks about one of the most important concepts of learning. Compound learning is a concept that can apply to almost anything. In this scenario, by sharing something every day you compound the effect of both learning and sharing. By the end of the year, you will be much better and would have gained a huge audience. It might not happen in the first year, but at some point, the compounding will start to show the result.
### 4. Open Up Your Cabinet of Curiosities.
All those things you collect in life, don't hoard them. Share them with the world, don't be a hoarder. This will help your audience to understand who you are.
> Don’t try to be hip or cool. Being open and honest about what you like is the best way to connect with people who like those things, too.
Your work does not happen in a vacuum. The work that you produce is always some form of other people's work. Each day you get inspired, you consume other people's work. If you use this work to produce something bigger, tell people about it.
> If you share the work of others, you have to make sure that the creators of that work get proper credit.
### 5. Tell Good Stories.
If you are going to share your work, you might as well do it well. This is easy to say, and hard to do, but still, it is important. One way to improve your storytelling ability is to add structure. The most important part of a story is its structure. People are going to read your work for enjoyment. There is nothing joyful in getting through an unstructured thought dump. This applies to any type of sharing, be it writing, audio, or video.
### 6. Teach What You Know.
Often, people are secretive about their trade secrets. They worry that someone will still their success recipe. In some cases it can make sense, but more often this will only attract more attention to your work. The easiest example to think of is chefs who write cookbooks. It may seem silly to share their recipes, as it is their bread & butter (pun intended). But if they didn't share, you wouldn't know about them.
The lesson here is to not worry about sharing your ideas, your work, and your knowledge. It will pay out great dividends throughout your life.
### 7. Don’t Turn Into Human Spam.
Earlier we talked about hoarding and why you shouldn't do it. There is also a bad quality on the other side of the spectrum, and that is spamming. If you are only sharing without giving back, you are a spammer. If you want people to help you, you need to think about helping people back. This can take many forms. Helping people with lower skill level than you. Answering questions on communities, commenting on the work of others. If you want to be helpful, there are a ton of ways to do that.
> As every writer knows, if you want to be a writer, you have to be a reader first.
### 8. Learn to Take a Punch.
The title speaks for itself here. Internet is full of nasty people. These people will start harassing and trolling you once you start getting some attention. It doesn't take much to get noticed by these people. Unfortunately, this is the case, and you will have to deal with it. So, prepare to take a punch.
### 9. Sell Out.
If you are going to be doing all this work you need to keep it sustainable. The easiest way to do this is to get paid. If you have people following your work, some of them would be happy to pay you for your work. Don't be afraid to ask. Also, remember that you are not alone in such a situation, we all need money to live. If you follow someone's work, help them out with a donation. Your donation will help them continue doing the work that you follow. It is a new circle of life.
### 10. Stick Around.
Just keep going. It may be hard sometimes, you might get demotivated, anything can happen, but don't quit. It helps to keep your end goal in mind. That said, it pays to take regular breaks from your work. We all need to offload, sometimes. Breaks can be short (a couple of hours) or long (a whole year), the main thing is that you take time to relax and refresh.
## Quotes
"The world is changing at such a rapid rate that it’s turning us all into amateurs. Even for professionals, the best way to flourish is to retain an amateur’s spirit and embrace uncertainty and the unknown"
"The best way to get started on the path to sharing your work is to think about what you want to learn, and make a commitment to learning it in front of others."
"The only way to find your voice is to use it. It’s hardwired, built into you. Talk about the things you love. Your voice will follow."
“Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. Because almost everything—all external expectations, all pride, all fear of embarrassment or failure—these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked.” —Steve Jobs
"Become a documentarian of what you do. Start a work journal: Write your thoughts down in a notebook, or speak them into an audio recorder. Keep a scrapbook. Take a lot of photographs of your work at different stages in your process. Shoot a video of you working. This isn’t about making art, it’s about simply keeping track of what’s going on around you. Take advantage of all the cheap, easy tools at your disposal—these days, most of us carry a fully functional multimedia studio around in our smartphones. Whether you share it or not, documenting and recording your process as you go along has its own rewards: You’ll start to see the work you’re doing more clearly and feel like you’re making progress. And when you’re ready to share, you’ll have a surplus of material to choose from."
"Overnight success is a myth. Dig into almost every overnight success story and you’ll find about a decade’s worth of hard work and perseverance. Building a substantial body of work takes a long time—a lifetime, really—but thankfully, you don’t need that time all in one big chunk. So forget about decades, forget about years, and forget about months. Focus on days."
"Once a day, after you’ve done your day’s work, go back to your documentation and find one little piece of your process that you can share. Where you are in your process will determine what that piece is. If you’re in the very early stages, share your influences and what’s inspiring you. If you’re in the middle of executing a project, write about your methods, or share works in progress. If you’ve just completed a project, show the final product, share scraps from the cutting-room floor, or write about what you learned. If you have lots of projects out into the world, you can report on how they’re doing—you can tell stories about how people are interacting with your work."
"Always be sure to run everything you share with others through The “So What?” Test. Don’t overthink it; just go with your gut. If you’re unsure about whether to share something, let it sit for 24 hours. Put it in a drawer and walk out the door. The next day, take it out and look at it with fresh eyes. Ask yourself, “Is this helpful? Is it entertaining? Is it something I’d be comfortable with my boss or my mother seeing?” There’s nothing wrong with saving things for later. The save as draft button is like a prophylactic—it might not feel as good at the moment, but you’ll be glad you used it in the morning."
"More than 10 years ago, I staked my own little Internet claim and bought the domain name austinkleon.com. I was a complete amateur with no skills when I began building my website: It started off bare-bones and ugly. Eventually, I figured out how to install a blog, and that changed everything. A blog is an ideal machine for turning flow into stock: One little blog post is nothing on its own, but publish a thousand blog posts over a decade, and it turns into your life’s work. My blog has been my sketchbook, my studio, my gallery, my storefront, and my salon. Absolutely everything good that has happened in my career can be traced back to my blog. My books, my art shows, my speaking gigs, some of my best friendships—they all exist because I have my own little piece of turf on the Internet."
"Your influences are all worth sharing because they clue people into who you are and what you do—sometimes even more than your own work."
“The impulse to keep to yourself what you have learned is not only shameful, it is destructive. Anything you do not give freely and abundantly becomes lost to you. You open your safe and find ashes.” —Annie Dillard
"The minute you learn something, turn around, and teach it to others. Share your reading list. Point to helpful reference materials. Create some tutorials and post them online. Use pictures, words, and video. Take people step-by-step through part of your process. As blogger Kathy Sierra says, “Make people better at something they want to be better at.” Teaching people doesn’t subtract value from what you do, it actually adds to it. When you teach someone how to do your work, you are, in effect, generating more interest in your work. People feel closer to your work because you’re letting them in on what you know."
---
# 2020 in Review
URL: https://www.rasulkireev.com/2020/
Type: article
Date: 2021-02-18
Description: This is my attempt to review everything that I made happen, and that happened to me in 2020. It is crucial to remind yourself of the things you regularly did. Writing this post was very gratifying.
Tags: review, personal, goals
Content:
I have been postponing publishing this post for a long time now. I have finished reviewing my achievements, goals, and other events of the past year on January 2nd. For some mysterious reason have not published anything.
I am procrastinating out of fear, probably, but it feels that I can't start doing anything meaningful before I publish this review. So here it goes...
The goal of this post is to compare the [goals I had for 2020](https://www.rasulkireev.com/2020-goals/) with the actual results.
If you enjoy this post you may look at my [Annual Review for 2019](https://www.rasulkireev.com/2019-in-review/)
## Become a better Data Analyst - Great
This is a goal related to my professional career. I got my first full-time job as a data analyst, and I wanted to become much better at it. This is a vague goal, but I did not know what exactly getting better would mean for me. At the end of the year, I can say that I have become much better.
I am a much better Python programmer than I was at the start of the year. On top of that, I have learned a lot about processing large data sizes with parallel computing (spark, dask). I was more focused on data engineering, than analysis. I learned how to write Azure ARM templates, to deploy Data Lakes, VMs, and other resources. Given my experience learning Django, I was able to impress my management with a small web app, which has a lot of potential of becoming a real product at my firm. I am now planning to transition to a web dev role.
## Learning - Good
In my spare time, I have learned a lot of web technologies, such as [Django](https://www.djangoproject.com), Javascript, and its children ([StimulusJS](https://stimulus.hotwire.dev), [Vue](https://vuejs.org), [React](https://reactjs.org)). I had a lot of other interests at the beginning of the year, like LaTeX, GraphQL, ArcGIS, and other fun things. Unfortunately, I only had the capacity and discipline to learn web dev.
On the web dev side, I have rebuilt my site with Gridsome, and am very happy with it. My site will be a [perfect sandbox](https://www.nateliason.com/blog/self-education) for my Vue (Javascript) learning. I have also built a small note-taking application for an interview at [Mailbrew](https://mailbrew.com/). Will continue on that front this year.
## Become the master of my mind and life - Bad
This was a complete miss, unfortunately.
At the start of the year I had a [mild depression](https://www.rasulkireev.com/dealing-with-mild-depression/).
At the end of the year, I have gained a lot of weight. My diet consisted of sweets and other junk food. This will be a big goal for 2021.
Regarding exercise and meditation, I'd say it is also a fail. Even though I did do some exercise and meditation it was not enough to make an impact. This will also transition into next year's goals.
## Earn some cash from a side hustle - Fail
$0. This year I'll make it happen!
## Become more sociable - Good
This year I was active on Twitter. I found a few cool people and even managed to talk founders of [Readwise](https://readwise.io/) ([Tristan Homsi](https://tristanh.github.io) and [Daniel Doyon](https://twitter.com/deadly_onion)) and [Mailbrew](https://mailbrew.com/) ([Francesco Di Lorenzo](https://francescodilorenzo.com) and [Fabrizio Rinaldi](https://fabriziorinaldi.com)) through Twitter. This was an insane experience.
## Become a more loving husband - Good-ish
This is hard to quantifн, but I can say that in general my wife and I had a good year. We had some ups and downs, but the general direction is good.
## Write more often - OK
I had a goal of writing 50 posts. The goal was too ambitious. However I did manage to write a couple of posts that resonated with people a bit. [How to Save Emails to Pocket](https://www.rasulkireev.com/emails-to-pocket/) and [Managing a Django Project with Poetry
](https://www.rasulkireev.com/managing-django-with-poetry/) are the first that come to mind.
Additionally, if you consider [a newsletter issue](https://www.rasulkireev.com/newsletter) as a post then I might be very close to 50.
I wish to continue this trend further. I am much more comfortable with putting my thoughts out there.
## Start a podcast - Meh
I have recorded interviews but did not publish them. Thus, it is a fail. Still a goal for 2021.
## Get out of debt - Good
Almost done. Will complete in 2021.
## Buy an existing company - Fail
Failed. Migrating to 2021.
## Other achievements
- Started a Zettelkasten with [Obsidian](https://obsidian.md)
- Read a few fantastic, potentially life-changing books
- How to Take a Smart Note
- How to Read a Book
- Atomic Habits
- The Pragmatic Programmer
- Pragmatic Thinking and Learning
- Started newsletter this year
- sent 22 letters
- got 25 subscribers
## Other Annual Reviews I enjoyed
- [Jordan O'Connor](https://jdnoc.com/2020/)
- [Anne-Laure Le Cunff](https://nesslabs.com/annual-review-2020)
- [Nat Eliason](https://www.nateliason.com/blog/2020-review)
- [David Perell](https://perell.com/essay/coolest-things-i-learned-in-2020/)
---
# 2021 Goals
URL: https://www.rasulkireev.com/2021-goals/
Type: article
Date: 2021-02-18
Description: In this post I want to publicly list all my 2021 goals. This will help keep me accountable.
Tags: 2021, goals, habits, review
Content:
As per Todoist's [post](https://blog.doist.com/annual-review/) on completing Annual Review, here are five major parts of life that you should/could judge on:
- Work
- Productivity
- Health
- Finance
- Relationships
- Learning
So the following is the exercise of me going through my 2021 goals and categorizing them based on the groups above.
## Work
- get promoted at my current job (from Data Analyst to Web Development)
- Built a webapp at current job (in production)
- Build a Django course with [newline](https://www.newline.co)
- [Built with django](https://builtwithdjango.com)
- Start a podcast (built with Django and personal)
- build a job board
- Publish a couple of written interviews
## Productivity
- spend some time each day writing. This could be:
- sharing progress on [Twitter](https://twitter.com/rasulkireev)
- writing thoughts in a journal or for a [blog post](https://www.rasulkireev.com/articles/)
- [tech tutorials](https://www.rasulkireev.com/tutorials/)
- [book reviews](https://www.rasulkireev.com/book-notes/)
- zettelkasten
- Use [Todoist](https://www.rasulkireev.com/book-notes/) to track tasks. Consult it often.
- use [Anki](https://ankiweb.net/about) regularly.
## Health
- lose fat, gain muscle. This means:
- better diet
- more exercise
- more meditation
## Finance
- earn cash (>$1) with a side hustle
- Get out of debt
## Relationships
- help my wife find her calling
- Become more social
- get 100 [newsletter subscriber](https://buttondown.email/rasulkireev/) by the end of 2021
- get 500 Twitter followers by the end of 2021
- Join a club or two, based on my interests (for example, Chess or Board Games communities)
- sponsor 5 people on Github
- would be awesome to get one [sponsor](https://github.com/sponsors)
## Learning
- use [vim](https://www.vim.org) for all my coding
- get to 1600 level in [chess](https://www.chess.com/member/rasulkireev) and/or beat my dad
- [Buy an existing company/project](https://www.microacquisitions.com/)
- Become much better with Python
- build 5 small web projects with different tech
- react
- GeoDjango
- serverless (AWS lambda)
- d3.js
- Shopify app with Django
- contribute to open source
- Gridsome plugin
- Pocket/Todoist OAuth2.0 API to Django-Allauth
- plugin for [Joplin](https://joplinapp.org) to export to markdown
- progress in learning Italian, using Anki
- increase typing speed
## Conclusion
I have started a spreadsheet to track some of the goals here (that are possible to track). Hope to see a lot of progress on most of them. There are a lot of goals, but most of them I'd say doable. Now just need to prioritize and start grinding.
Will reflect next year, maybe mid-year also.
---
# Migrating to a Custom User Model mid-project in Django
URL: https://www.rasulkireev.com/custom-user-model-mid-project-django/
Type: tutorial
Date: 2020-11-19
Description: Whenever you building a site with Django that will have user authentication, it is recommended to create a Custom User Model, before the first migration. Sometimes you forget to do that. In this case you have to follow a strict procedure, which I'll show you in the post.
Tags: django, python, database, authentication, migration
Content:
Whenever you are building a site with [Django](https://www.djangoproject.com) that will have user authentication, it is recommended to create a [Custom User Model](https://docs.djangoproject.com/en/dev/topics/auth/customizing/) before the first migration. Sometimes you forget to do that. In this case, you have to follow a strict procedure, which I'll show you in the post.
This was [Issue was discussed at length](https://code.djangoproject.com/ticket/25313) by the Django community. There is now a consensus about the best and the least painful way to do that. I'd like to take that discussion and summarize it into a set of actionable steps.
### 1. Create the `users` app
Make sure you are inside your project directory.
```bash
python manage.py startapp users
```
Then, add the following to the models.py:
```python
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
class Meta:
db_table = 'auth_user'
```
If you don't specify the name, you'll receive an error:
> django.db.utils.OperationalError: no such table: users_customuser
Then, register the new Model in the admin panel:
```python
# In users/admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
model = CustomUser
admin.site.register(CustomUser, CustomUserAdmin)
```
### 2. Update `settings.py` file
* In `settings.py` add to `INSTALLED_APPS` (`"users.apps.UsersConfig",`)
* Add a `AUTH_USER_MODEL = 'users.CustomUser'` line to the bottom of the `setting.py` file.
### 3. Replace User imports
In your project code, replace all imports of the Django User model:
```python
from django.contrib.auth.models import User
```
with the new, custom one:
```
from users.models import User
```
### 4. Delete Old Migrations
Run the following two commands in your terminal, from the root of your project:
1. `find . -path "*/migrations/*.py" -not -name "__init__.py" -delete`
2. `find . -path "*/migrations/*.pyc" -delete`
### 5. Create New Migrations
```
python manage.py makemigrations
```
### 6. Truncate (delete) contents of the migrations table
You will need to do this manually by going inside your database (Postgres, sqlite3, MySQL, etc.).
I was using sqlite3 at the time, so I had to do the following:
```
# login into the sqlite database
sqlite3 db.sqlite
# Then run the following
> DELETE FROM django_migrations;
> .quit
```
If you are using Postgres, you will have to first login into your database and then run:
```
TRUNCATE TABLE django_migrations;
```
### 7. Fake apply new migrations
```bash
python manage.py migrate --fake
```
### 8. Test
```bash
python manage.py runserver
```
This should be it. If you went through each step sequentially, your app should be using a Custom User Model. Congrats!
## Bonus Video
If you prefer a more visual approach, I've made a video that shows how to migrate to a Custom User Model mid-project.
https://www.youtube.com/watch?v=k0GwrwC5uuo
---
# Getting what you want - Nice Man Edition
URL: https://www.rasulkireev.com/get-what-you-want-nicely/
Type: article
Date: 2020-11-03
Description: As a general rule in life, you should provide more value to society than you consume. This should be, at the very least, your goal.
Tags: life, success, tutorial
Content:
As a general rule in life, you should provide more value to society than you consume. This should be, at the very least, your goal. Let me elaborate.
If, for example, you are a writer / blogger and are making a cold outreach to your fellow blogger for a guest post or a mention, you are consuming. Well, in that scenario, you should never ask for something in the first communication with that person. You should at least start with an introduction or letting them know what you did for them (mentioned them in your post, for example). I hear this recommendation from [Nat Eliason](https://www.nateliason.com/) first from his post “[How Nat Eliason Grew A Website To 10K Visitors In A Month](https://sumo.com/stories/0-10k-nat-eliason/)”.
The goal here is to introduce yourself and potentially make friends. If you are a good person and stick to this workflow, you will eventually achieve your goal, more often than not. If you are not a good person and are simply using the intro message as an excuse to ask for something, then at some point, there will be a negative view of your ways, and this won’t work for you.
Another great example is for business owners. I have had many interactions with Customer Service. Whenever I had a good experience, I have then “marked” the company as “Great” in my head. This made it more likely for me to do business with them in the future and recommending someone else does too. This is because that company didn’t want to take anything from me (more money, for example). Rather, they were looking to provide me with help and relief. For that reason, I was more likely to buy more and recommend my friends more, also. This is what the goal of the business, get more sales. This “Be awesome to your customers and good things follow.” thought comes from the book [Traction](https://amzn.to/2TQFowG) by [Gabriel Weinberg](https://ye.gg/).
You can get the things you want, as a person, or business, while staying nice. The mindset one needs to keep is to produce more than consume.
---
# Sponsorware is picking up
URL: https://www.rasulkireev.com/sponsorware/
Type: article
Date: 2020-08-18
Description: Caleb Porzio introduced me to the idea of Sponsorware. I am picking it up. I hope more people will to. In this post I tell you what Sponsorware is and why I think it is the future of open-source.
Tags: open-source, code, earning, bootstrapping
Content:
A couple of months ago, I signed up for [Caleb Porzio](https://calebporzio.com/)'s [newsletter about VS Code](https://learn-vscode.com/). I then rediscovered Caleb through his post on [hitting $100k/y through Github Sponsors](https://calebporzio.com/i-just-hit-dollar-100000yr-on-github-sponsors-heres-how-i-did-it). This post made quite the round across the internet, after all, that's the dream, right?
In this post, he said that one of the spikes was due to the [Sponsorware](https://calebporzio.com/sponsorware). It's not an app or anything, it's just an idea. The idea is that you only let your supporters use your "open-source" work until you reach a certain number of sponsors. Once you reach this level, you make the repo public. That's pretty genius.
I'm very intrigued by this idea and have decided to give it a go. I have applied for the [Github Sponsors](https://github.com/sponsors/) program. The process is very straight forward. If you do any open-source work, I suggest you apply as well, there is no harm. If you get in, try this Sponsorware thing, I think the future of open-source is very bright if more people adopt this strategy. If I don't get in, no worries, I'll just keep working on my open-source projects until I can get in.
I don't have a huge following my work, but I hope this post will spread. I think that this way of working is very healthy for the developer and for the community alike. I really hope this picks up.
Thanks for reading, have a wonderful day!
---
# Multiple Graphql Queries on a Single Page with Gridsome
URL: https://www.rasulkireev.com/multiple-gridsome-queries/
Type: tutorial
Date: 2020-07-23
Description: Ever wonder how include multiple queries on the same page, when using Gridsome? Well, this is how.
Tags: gridsome, graphql, html
Content:
Let's say you have the following queries:
```javascript
// query details about the current blog post
query Post ($path: String!) {
post: post (path: $path) {
title
dateCreated (format: "MMMM D, Y")
dateCreated (format: "MMMM D, Y")
content
path
}
```
and
```javascript
// query to pull all the webmentions on a specific post
query($path: String!) {
mentions: allWebMention(filter: { wmTarget: { regex: $path } }) {
edges {
node {
wmId
wmProperty
content {
text
}
author {
name
}
}
}
}
}
```
The question is: How do you get both of those queries in your `Post.vue` template?
I was going to give you all the options that I tried before making this work, but that would be the waste of your time. So here is he working version:
```javascript
query Post ($path: String!) {
post: post (path: $path) {
title
dateCreated (format: "MMMM D, Y")
dateCreated (format: "MMMM D, Y")
content
path
}
mentions: allWebMention (filter: { wmTarget: { regex: $path } }) {
totalCount
edges {
node {
wmId
wmProperty
content {
text
}
author {
name
}
}
}
}
}
```
Then you can access these queries like this:
```html
{{ $page.post.title }}
{{ mention.node.wmProperty }}
{{ mention.node.content.text }}
```
---
# Adding Scripts to Specific Pages with Gridsome / Vue
URL: https://www.rasulkireev.com/gridsome-page-scripts/
Type: tutorial
Date: 2020-06-05
Description: How do I add script tag to specific pages only? In this post I show how I integrated hypothes.is only on my article pages.
Tags: scripts, gridsome, vue
Content:
Let's say you want to add an external library to your Gridsome website. In my case, I really wanted to add [hypothes.is](https://hypothes.is) to my website.
> Hypothes.is tries to enable a conversation over the world's knowledge. In Layman's terms, it allows users to comment, highlight, and annotate content on any site. Adding it to my site, I will help people explore this tool and will hopefully drive more conversation about my posts.
**TL;DR**
Add script tags to your site via the [Vue Meta](https://vue-meta.nuxtjs.org/) extension.
```javascript
export default {
metaInfo: {
script: [
{ src: 'https://hypothes.is/embed.js', body: true }
]
}
...
}
```
I can add hypothes.is to my site by adding the following script tag to my index.html, right above the closing body tag.
```javascript
```
This will add the hypothesis sidebar to all my pages. This can be a good enough solution. However, I don't want to crowd each page on my site with this sidebar. Well then, how can I add it to specific Pages only?
Given Gridsome's structure, it is very easy to isolate specific pages. For example, we could target `Post.vue` if I only want this script in articles. Or I could target `About.vue` if I wanted to add to about page only.
```
├── content
| ├── articles
| ├── notes
| ├── now
├── gridsome.config.js
├── gridsome.server.js
├── src
| ├── components
| | └── socialShareButtons.vue
| ├── index.html
| ├── layouts
| | ├── Default.vue
| ├── main.js
| ├── pages
| | ├── 404.vue
| | ├── About.vue
| | ├── Articles.vue
| | ├── Index.vue
| └── templates
| ├── BookNote.vue
| └── Post.vue
```
Now the question is: "How do I add the script tag?". Well, the answer is simple. You can leverage metaInfo in your script. If you followed Gridsome instructions to add Meta info to your site then you would know that you just need to add metaInfo object (or function, if using GraphQL queries) to your export default function. This is exactly what you would use to add a script tag.
```javascript
export default {
metaInfo: {
script: [
{ src: 'https://hypothes.is/embed.js', body: true }
]
}
...
}
```
or
```javascript
export default {
metaInfo() {
script: [
{ src: 'https://hypothes.is/embed.js', body: true }
]
}
...
}
```
Now you have your desired external library only on pages you want.
---
# How to Save Emails to Pocket
URL: https://www.rasulkireev.com/emails-to-pocket/
Type: article
Date: 2020-05-30
Description: In this post I share how I save email to my 'Pocket' so that I can make notes on them. This is very useful for various email courses or other email with valuable content.
Tags: email, pocket
Content:
[Pocket](https://getpocket.com/) is a great invention for people who like to read, when they **want** to read. It gives you superpowers.
### Superpower #1
It allows you to save articles you encounter during the day for later. That way, you are not distracted from whatever it is you are doing at the moment.
### Superpower #2
You can make highlights in your Pocket Article. Then later review those highlights and add them to your [Second Brain](/building-a-second-brain), if you have one.
### So, what's the problem?
Now, let's say that you have signed up for a particularly useful email course, like [Ryan Kulp](https://www.ryanckulp.com/)'s [How to Validate an Idea](https://gohighbrow.com/portfolio/how-to-validate-an-idea/) or a particularly insightful newsletter like [Nat Eliason](https://www.nateliason.com/)'s [Monday Medley](https://www.nateliason.com/join) or [Arvid Kahl](https://www.arvidkahl.de/)'s [Bootstrapped Founder](https://thebootstrappedfounder.com/newsletter/). How can you save it for later if you are a little busy right now? Well, that is not a problem, since that is what Email Inbox is for.
The other problem is making notes. Here, email is not that useful, as opposed to Pocket. Unfortunately, Pocket does not allow for saving emails, only webpages. This is weird, and it doesn't seem like they are planning to add that feature any time soon.
### Solution
Do not worry, though, there is an insultingly easy solution for this. [Publish this email](https://www.publishthis.email/) lets you create a web page in seconds. The service is entirely free! All you got to do is send you an email to page@publishthis.email and wait for a reply. That's it. They usually reply within seconds. In that reply, you get a link to a web page with the contents of the email. Now, you can simply press "add to pocket," and you are done.
Now you have a nice centralized location for all the written words you consume during the day!
---
# How to Sell Info Products
URL: https://www.rasulkireev.com/selling-info-products/
Type: article
Date: 2020-04-23
Description: These are the notes I took and lessons I learned when listening Adam Wathan's Presentation at Microconf. In his talk, 'Nailing your first launch', he talks about the steps necessary for a successful product launch.
Tags: microconf, talk, infoproduct, course, book
Content:
MicroConf founder Rob Walling recently made an announcement. All previous MicroConf talks are now in public access. This is incredible. You can access all talks on their [Youtube Channel](https://www.youtube.com/channel/UCHoBKQDRkJcOY2BO47q5Ruw).
> It seems very weird to me that there are only 2.6k subscribers as of 4/22/2020.
There is a ton of incredible content to go through.
One of the first videos that I have noticed was Adam Wathan's presentation on selling info products. I am a huge fan of Adam and his work. He had been producing incredible content for a long time. He has made more than $2.5 million from selling his products, so you might want to listen to this guy.
This talk is no exception. It is packed with useful advice. I urge you to watch the talk. It is only 40 minutes long. In case you don't have the time, I hope you will find the notes I made useful.
I couldn't resist making these notes. I will be leveraging them heavily going forward. I am thinking about creating a book about Gridsome. To be more specific on how to create a personal website with it. Thanks to Adam, I have a clear roadmap on how to make sure my future product is successful.
Please enjoy!
---
## Why Info Products (books, courses)?
* One-time purchase is easier to sell.
* Much easier to finish. There is an end in mind.
* The payout is the opposite of SaaS (starting low and getting higher). You will sell a lot and then go down.
## Step 1. Build an Audience
* This is the most crucial step for any future success.
* One of the advantages is that audience makes up for any deficiency in your marketing.
**How do I build an audience?**
* **Be helpful on the internet**.
* Help people where they are (in a Twitter timeline, for instance.)
## Step 2. Come up with an Idea
**How to come up with an idea?**
Ideas will come to you! Post useful stuff, people will engage, and ideas will come. No need to sit and brainstorm.
> Make sure to record ideas when they come to you.
Tips on coming up with ideas for an info product:
* What are people liking from what you post?
* What are **you** excite about, that other people might be excited about.
* What did you have to figure out yourself but was helpful to learn?
* Can you make it easier for others to learn this?
## Step 3. Test your Idea
1. Do "tip tweets" for the subject you plan to produce.
2. If this gets traction, do something more in-depth like a blog post.
Tip: Catalog any useful feedback you get about your content. Twitter replies, blog post comments, etc. Not only will this direct you, but it will also be reused later.
## Step 4. Create a Landing Page

These are the things you need on your Landing page:
1. Headline
2. Short Description
3. Call to Action: Signup to Email Newsletter
* Tip: make sure to provide an incentive: e.g., free screencasts, discount on launch.
4. Proof that you know some of this stuff. Link to a blog post, for example.
5. Social Proof: Testimonials, use the Tweet you saved earlier.
6. Outline what you are going to include. No need to go too in-depth.
7. Another signup form on the bottom.

8. "Who am I" section.
[Adam's Advanced Vue Course - Example](https://adamwathan.me/advanced-vue-component-design/)
## Step 5. Build an Email List
1. Tell your audience about your launch.
* Tell them you have a landing page where they can sign up.
* Announce that you are about to announce your landing page.

2. **Share Progress** with your email list.
* Every week or so, send an updateCreated to your audience. Include a free video or a link to a live stream.
* Every week or so, send an updateCreated to your audience. Include a free video or a link to a live stream.
* Share before sending an email. Tweet to your audience that if they want to receive some free stuff to go ahead and signup.

3. Repurpose Content.
* Taking a chapter from the book and massaging it into a blog post.
* Add a signup form to that post.
## Step 6. Getting it finished
1. Make **public promises** to your audience.
2. **Email on Schedule**. Once a week is good.
3. **Reduce Scope**, if you can't finish, but have produced good material already.
## Step 7. Figure out Pricing
### 1. Tiered Pricing
**Single Tier**
* Can be fine if you charge enough
* Often necessary if pre-selling
* Nice if you can't figure out a way to add extra tiers that actually feel valuable
**Two Tiers** - Wes Bos Example
Real product id the "upper" tier. "Lower" tier is like a crippled version of the "upper" tier. The real goal of that "lower" tier is to "push" people towards the upper tier. 2 products are $10 apart, but the second one has twice as much content.
Works well with video courses.
**Three Tiers**
* great for books if you can come up with bonus content.
* Makes it easier to evaluate as its own product instead of comparing to Amazon book prices
* Prices are usually 1, ~2, ~5x.
* This will make you a lot more money from a book than selling the book on its own.
### 2. Launch Discounts
* Discount it by enough to be appealing, at least 30%
* Use stepped discounts. Lower discounts on cheaper tiers and better discount on higher tiers
* Reverse engineer non-discounted price from your planned discounted price
* i.e., If you want to charge $100 for your course and want to create a 30%, don't apply that discount to $100. Rather price your product at $143 (100 / 0.7), which will turn into $100.
* We all have a tendency to undervalue our own work.
## Step 8. Nailing the Launch
**1. Build a Sales Page.**
* Don't try to sell too hard, since most of the visitors will come from an email.
* Still include a signup form that sends preview content for new traffic, i.e., "Signup to get 4 free preview lessons."
* Testimonials and Social proof are important; use feedback from preview content to start.
* Sort tiers from highest to lowest price, use visuals to communicate to higher tiers.

**2. Announce the Launch Details**
* Send an email notifying people you include the following:
* Include al package and pricing details
* Complete TOC or content list
* Final free content if possible
**3. Launch it**
* Send a super-simple email, saying it's done and a link.
* Sending on Tuesdays seem good day to send to Adam, not stats.
* Morning EST works well for Adam.
**4. Leverage Early Feedback**
* Collect the feedback.
* Use it in a follow-up email to people who did not buy the course.
**5. Closing the Launch**
* Email to notify people that this is the last email where you can buy this at this price. LAST CHANCE!
* Don't specify a closing dateCreated in advance.
* Don't specify a closing dateCreated in advance.
---
## Other tips:
### Books vs. Video Courses
* Plan small; it will end up bigger than you think
* Short books are still books
* 3 hours is plenty for a video course
* Books are a lot easier to work on, especially if you only have short blocks of time.
* Courses are easier to sell at a higher price but a lot harder to produce on nights and weekends.
### Should I pre-sell?
**Advantages**:
* best form of product validation
* you'll make more money since you can talk about your product more often. With every updateCreated, for instance.
* you'll make more money since you can talk about your product more often. With every updateCreated, for instance.
* more motivation to finish
**Disadvantages**
* Selling multiple tiers is trickier
* Can't easily change the scope
* Can be extremely stressful
## Resources
* [Nailing Your First Launch - MicroConf Presentation](https://www.youtube.com/watch?v=ajrDxZRpP9M)
* [The Book Launch that let me quit my job - Adam's Post](https://adamwathan.me/the-book-launch-that-let-me-quit-my-job/)
* [Tools for selling your product online - Adam's List](https://gist.github.com/adamwathan/30dc4230ac575cfa3425b39ca11ea859)
---
# My Pocket Workflow
URL: https://www.rasulkireev.com/my-pocket-workflow/
Type: article
Date: 2020-03-22
Description: I wanted to discuss how I use Pocket and how it integrates into the BASB flow.
Tags: joplin, productivity
Content:
I have been slowly implementing "[Building a Second Brain](/building-a-second-brain)" (BASB) technique into my personal life. I'm doing this slowly, step-by-step. For me, any past attempts to make my life more productive, with Evernote, Pocket, or other tools, have been a failure because they have been too overwhelming. More than that, I did not have a great starting point, I had to design my flow from scratch.
This time around, I have [Tiago Forte](https://fortelabs.co/) and [David Perell](https://www.perell.com/), their learnings and writings have been an enormous inspiration. They both have courses that seem great and totally worth it. For me, the price point is a little out of my range (for know). Luckily, they have been putting a lot of content out there. That content is so valuable, it makes me wonder what do they offer during their course. I am preparing a consolidateCreatedd list of links, articles, videos, and other types of resources that those two have put out there. Stay tuned.
This time around, I have [Tiago Forte](https://fortelabs.co/) and [David Perell](https://www.perell.com/), their learnings and writings have been an enormous inspiration. They both have courses that seem great and totally worth it. For me, the price point is a little out of my range (for know). Luckily, they have been putting a lot of content out there. That content is so valuable, it makes me wonder what do they offer during their course. I am preparing a consolidateCreatedd list of links, articles, videos, and other types of resources that those two have put out there. Stay tuned.
Today, I wanted to discuss how I use Pocket and how it integrates into the BASB flow.
## Method
It is actually pretty simple. After I finish the article, I assign it a tag, "read." This allows me to see all the articles that I have finished.

I then transfer all the notes and summarizations to Joplin.
> [Joplin](/joplin) is very simple to Evernote, but with a few differences. Most importantly, it is [open-source](/open-source), which means it is free and is being developed and improved by a lot of people. I go into more detail on Joplin in [my post](/joplin).
After I am done transferring highlights, I assign that post a "Joplined" tag (totally made-up word).

## Conclusion
This is not some sort of revolutionary method of note-taking. This is a simple flow I ended up using to make sure that my Pocket articles are not mixed together, and it is easy to navigate.
I think this is the best way of using tags. I never found the use of assigning tasks like "productivity," "writing," or something like that. There is a search button for that.
---
# Designing your first personal website
URL: https://www.rasulkireev.com/designing-first-site/
Type: article
Date: 2020-03-18
Description: When I started developing my personal website I\'ve had some difficulties. In this post I try to share what you should do to avoid those.
Tags: personalwebsite, webdesign, css, html
Content:
Ever since I decided to make my own personal website, I have been struggling with the design a lot.
At first, it was about a lack of knowledge. I didn't understand what is meant by mobile-first and how you achieve that. The concept of padding vs. margin was weird to me. Basically, I knew nothing about designing a website. It is a shame I don't have an image of my first website, it looked so bad, it was funny.
What helped me the most is looking at other websites. To be more precise, looking at the HTML/CSS code of their website using "Element Inspector." I strongly recommend anyone interested in building websites do this. Just inspect websites you like and try to implement some cool features on yours.
One problem with this approach is mimicking too much. When I liked a website, I liked both the design and the content. So when I was making mine, I always thought, "Ooh, that's cool; I need that feature too." I ended up doing too many things, and the website became bloated. I made a bunch of features I did not use.
If you are starting in the world of web development by building your personal website, here is my recommendation. Have four types of pages (that way you don't have to worry about design too much):
* Home
* About
* Blog (all writings)
* Actual post
That's it, you don't need more to begin, it will make your life easier and more manageable. When you are happy, add another page, for example, "What am I up to Now" page or book notes, or whatever else your heart desires.
Then in the future, when you realize that you need more features on your website, you can easily add them. The difference is that by then, you are much more experienced.
Finally, however experienced you are, don't add too many things that will require regular maintenance unless you are 100% you are committed to it. For example, when I created my first Django website, I added the following:
* a Blog
* What am I up to Now (Derek Sivers movement)
* What I learned This Week
* Book Reviews
* Projects
* Photography
These are only the ones I can remember. I just loved the idea of having that space to fill, but pretty quickly, it became overwhelming, and I ended up not doing anything. Only once I've started removing things, I began to use other features.
> I think this is a good approach to life also. Don't try to take on too many things at once.
Only add more things when you already have something to show for, and only if you know, you will keep it going. Right now, I only have the Blog and the Now page, where the latter is updateCreatedd once a month. This way, I'm not pressured to do other things and can focus on something more substantial.
Only add more things when you already have something to show for, and only if you know, you will keep it going. Right now, I only have the Blog and the Now page, where the latter is updateCreatedd once a month. This way, I'm not pressured to do other things and can focus on something more substantial.
In the future, I want to add a photography page, because it is something I want to become better at, and am currently learning. However, unless I am consistent with it, I won't "burden" myself by adding it to my website.
## Conclusion
If you are just starting on a Web Development path and are starting with your website, congratulations, you have a fantastic road ahead of you. Not to get discouraged pretty quickly, stick to simple things.
#### 1. Keep content to a minimum:
* Have a welcome page (home)
* Have a page where you talk about yourself (about)
* Create a blog with a list of all the posts and a detailed view for each post (blog)
#### 2. Keep your design simple.
* Start with pure and simple CSS. Make sure it looks good on the phone first.
* Move one step at a time.
#### 3. Add new things as a means of learning something new.
* Learning new things won't become any easier (in a good way), but the base things you did before will become a breeze.
I hope this was at least a little bit useful. Actually, I hope this made at least a little bit of sense.
If you have any questions or comments, feel free to shoot me a message at one of the links on the about page.
Thanks for reading.
---
# Stop telling me to exercise: dealing with a mild short-term depression
URL: https://www.rasulkireev.com/dealing-with-mild-depression/
Type: article
Date: 2020-03-10
Description: In this post, I wanted to share some of my reflections on the depressive state that I went through. I'd like to share some of my thoughts that were running through my head and what helped me get over.
Tags: depression, psychology, selfhelp
Content:
The beginning of 2020 was not perfect for me. Right at the start of 2020 (literally, first hour), I started feeling a little sick. On the next day, I woke up with a high fever. Around the 10th of January, with a lot of help from my wife, I was able to fight the disease.
> I think that my boss got sick because of that and was not able to spend time with his newborn child. I feel terrible because of that. So, Alan, if you are reading this, I am sorry.
Then, the rest of the month I spent in a mild depression. It was the worst mood and the hardest time I've had in my life, psychologically. To be honest with you, I still don't fully understand why. I have been under mild stress due to a whole bunch of reasons, the main one is financial instability, of course. I have a feeling this might be one of the most popular reasons for sadness. This has been going on for a while, but mostly my mood has been fine, more or less. I guess something happened that sent me to the rock bottom, psychologically speaking.
I am okay now. In fact, I am better than before. Much better. I now wake up super early, which I was never able to do. I exercise almost every morning. I work on my personal projects before I go to work. I eat healthy foods. I have a great relationship with my wife. Everything seems to be going fine now.
In this post, I wanted to share some of my reflections on the depressive state that I went through. I'd like to share some of my thoughts that were running through my head and what helped me get over the sadness. I hope this is useful.
## Common Advice
I want to start with a brief list of things that one might find when searching the web for "How to deal with Depression."
### Exercise
It can be very annoying to search online for a solution and get the same advice over and over. Exercise, exercise, exercise.
Will you stop, please? Look, I know exercise is good. In fact, I like to exercise, it makes me feel good. But, when you are depressed, you don't want to exercise. You really don't. If, during my depressive state, I do have a glimpse of hope and light, I will exercise. Will it make me feel better? Probably. Will it solve my bigger problem? It won't! It won't because solutions like exercise work only when done regularly. You can't expect a person dealing with mood swings to exercise regularly. It just does not work that way.
What will happen to a depressed person who was told to exercise, but failed to do that? It will only lead to a worse condition.
Exercise is great. Everyone knows exercise is great for your body and mind. However, it is only great for a person who is not struggling with too many things at ones. Please, stop recommending people exercise when they are depressed. It is not a solution to the problem.
### Meditate
The problem here is the same. I know it is good for me. In my case, I actually enjoy it. But in times of great sadness, I can't make myself do it.
## Fighting the battle
Every single fucking day, I had to battle myself, my mood. Most of the time, I win the battle, but many times I don't. The only solution to this is not to have one at all. If you think about it, no human can win each time they fight something. It is impossible, you won't have the stamina to do that, and eventually, you give up. So, the only solution that comes to mind is not to have the battle at all.
The only problem with that is that it is easy to say that, but hard to do. When you are depressed, it doesn't feel like you have much control over your body, over your thoughts. So what should you do?
### Go easy on yourself
Look, I'm no doctor, I don't know what the cause for your sadness/depression is. For me, it was that I took on too many projects, too many responsibilities.
One thing that helped me was going easy on myself. After a couple of days of beating myself up, I decided to drop half of my projects, half of my attempt to build good habits, it was too much.
I made sure to enjoy junk food, even after finishing it. I tried really hard not to worry about watching too much television. I stopped worrying about missing exercise for a week. I decided to drop all my worries and enjoy whatever it is I was doing. In a lot of cases, it was nothing, just sitting on a sofa eating junk food.
That helped me a lot. Now, I'm back on track to build some good habits, but this time I'm making sure not to overdo it. Taking a step at a time.
### Other people
Another useful tool that helped me get my mood, my desire to do things back was listening to other people. In my case, those people were Jordan Peterson and DHH.
Jordan Peterson has some incredibly useful and insightful thoughts on leaving a good life and on depression specifically. A couple of videos of his lectures I found on YouTube have been crucial in my recovery.
DHH is one of my role models. I find that most of his thoughts and beliefs that he shares align with mine. Whenever I lose track of who I am and what is important for me, I will listen to one of his podcasts, and it will almost certainly make me feel better and more strong.
I recommend that you find people that inspire you, and that makes you remember who you are and what it means to be a good person.
## Some resources that helped me
### Jordan Peterson - [How To Deal With Depression | Powerful Motivational Speech](https://www.youtube.com/watch?v=Xm_2zmX6Akc)
#### 5:00 - 7:00
* You want to constraint the negative event to the smallest domain possible.
> It is going to be hard, no question about that. But it is crucial to try your best to limit the damage a negative event has. For example, when your recent side project had no traction, it does not mean you are a failure. It only means that this idea is not the one to bring you success.
> Another example of this is talking to your partner. When you argue, try your best to limit the exposure to a minimum. Instead of saying, "you always do this," say, "can you please try doing this next time." If you are nice about it, they might listen. Whatever the outcome is, it is a ton better than blaming them for everything.
#### 14:00 - 18:00
* Have a routine.
* Eat breakfast, eat well, enough.
* Have family (parents, partner, kids) in good standing.
* Listen to your partner, they will tell what they want.
### Jordan Peterson - [Advice For People With Depression](https://www.youtube.com/watch?v=6c9Uu5eILZ8)
#### 01:00 - 03:00
* Having a job (a necessary repetitive task) is helpful. It will get you in a routine. If you don't have that, you don't have a good reason to go to bed. You don't have a good reason to wake up. That is big to cause depression in a lot of people.
> Not having a set schedule for sleep and other things mess up your Circadian rhythms.
* Positive emotions are not that secret. Having a calling, accomplishing small things will make you happy. Experience makes people happy, much more than purchases do.
#### 03:00 - 05:00
> Having many problems at once makes you almost impossible to help. For example, if you have no job, friends, and relationship. Dealing with one problem is not helpful, because others pull you down.
* Get a job, even if not a dream job.
* Get out there and talk to people.
* Become more intimate with someone.
#### 4:00
* Learn to negotiate with yourself. "What are you willing to do?" What you should be willing to do is something small. Assuming you want to do better, there is always something small you can do to get closer to your final goal. If you repeat that often enough, those small going compound into something incredible.
### DHH - [Developer on Fire Interview](https://developeronfire.com/podcast/episode-030-david-heinemeier-hansson-the-pareto-principle-and-stoic-philosophy)
---
# Getting data to home page with Django
URL: https://www.rasulkireev.com/django-get-context-data/
Type: tutorial
Date: 2020-02-20
Description: In this post I show how to use get_context_data(). You might need it to display 'latest posts' on your 'home page'.
Tags: django, context, tutorial
Content:
When I was first learning Django, I decided to build a personal website first. I took [sivers.org](https://sivers.org) as an example. I loved its simplicity and directness.
I first created a blog app within my project. Then created the URL structure. `/writings/` listed all my posts and `/writings/` was for a specific post. Everything was working correctly. The next challenge was to get the latest n posts to my home page. That took me at least a week to figure out. The worst thing was that the way I did it was way too complicated. I used custom template tags to achieve that.
I wanted to write a post about it back then. Thank God I didn't. Last week I figured out a much simpler way to do that. This is what this post is about.
## Setup
### Blog app
Let's say you have a simple project setup with two apps, `pages` for static pages, and a blog for all the posts that you write.
You blog app contains a simple post model, with the following variables:
```python
class Post(MentionableMixin, models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
dateCreated = models.DateTimeField()
dateCreated = models.DateTimeField()
category = models.CharField(max_length=100)
# if you are not sure what the code below does, don't worry about it.
def __str__(self):
return "(Draft = " + str(self.draft) + ") " + self.category + ': ' + self.title
def get_absolute_url(self) -> str:
return reverse('post', kwargs={'slug': self.slug})
```
Next, you have two views, one for a list of posts and one for the post itself.
```python
class PostListView(ListView):
model = Post
template_name = 'writings/posts/all-posts.html'
ordering = '-dateCreated'
ordering = '-dateCreated'
class PostDetailView(DetailView):
model = Post
template_name = 'writings/posts/post.html'
```
You have those views attached to specific URLs like so:
```python
urlpatterns = [
path('posts', PostListView.as_view(), name='all_posts'),
path('posts/', PostDetailView.as_view(), name='post'),
]
```
This is your blog app. The very plane, almost identical to other "Make your blog tutorials":
* by [skysilk](https://www.skysilk.com/blog/2017/how-to-make-a-blog-with-django/)
* by [djanorocks](https://www.djangorocks.com/tutorials/how-to-create-a-basic-blog-in-django/)
* by [codespeedy](https://www.codespeedy.com/how-to-create-a-basic-blog-website-in-django/)
If you are starting out I strongly recommend going through [DjangoGirls](https://djangogirls.org/) [tutorial](https://tutorial.djangogirls.org/) and [Will Vincent's tutorials](https://wsvincent.com/) and [books](https://learndjango.com/books/).
### Pages app
If you have read basic tutorials by [William Vincent](https://wsvincent.com/), then this will be familiar. If you haven't, I strongly suggest it. He has a lot of posts on his [website](https://wsvincent.com). Even better are his [books on Django](https://learndjango.com/books/). Those have been a priceless resource for me when I was learning Django (I still am).
In any case, for the static pages, William suggests to set up a 'pages' app. No need to write models. You will have views and URL routing.
Your project urls.py will route to the pages app like so:
```python
urlpatterns = [
path('', HomePageView.as_view(), name='home'),
path('about/', AboutPageView.as_view(), name='about'),
]
```
And your pages app views.py will look like the so:
```python
class HomePageView(TemplateView):
template_name = 'home.html'
class AboutPageView(TemplateView):
template_name = 'about.html'
```
## Getting context
At last, we can actually work on the problem at hand.
All you have to do is:
1) import the Post model from the blog app
2) add get_context method to your homepage TemplateView
That's it. Now your views.py looks like this:
```python
class HomePageView(TemplateView):
template_name = 'home.html'
# new
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['posts'] = Post.objects.filter(draft=False).order_by('-dateCreated')[0:5]
context['posts'] = Post.objects.filter(draft=False).order_by('-dateCreated')[0:5]
return context
```
What you can do now is use the name you've given to the new context in the templates. In you home.html all you have to do is to add a for loop like so:
```python
{% for post in posts %}
{% endfor %}
```
You will now get the list of all the posts.
## Conclusion
Before I used a very complicated method to achieve the same result, I honestly don't even want to tell anyone about it. This is a much more straight forward, much more elegant solution. It requires much less additional code written.
One thing I felt when I was writing this post is a worry that people are reading this need more context. I think I will end writing a "Definitive guide to start a Django project." That way, in the future, I can always refer to the structure that already exists, as opposed to starting fresh every single time.
I hope this was helpful. Thanks for reading.
---
# Adding a dictionary to a list of dictionaries in Python
URL: https://www.rasulkireev.com/list-of-dicts/
Type: tutorial
Date: 2020-02-13
Description: I have encountered a problem where I was not able to append a dictionary to a list. In this post, I will explore this issue and show how to bypass that.
Tags: webscraping, dictionaries, python, webscraping
Content:
In my most recent project, I have encountered a problem where I was not able to append a dictionary to a list using `list_data.append(data_dict).` The result was a list of the same dictionaries.
In this post, I will explore this issue and show how to bypass that.
## Setup
Just so that we are on the same page, this is my setup.
I am parsing a page that has an entry for each day of each month.
```
January
1
blah
2
blah blah
3
blah blah blah
etc...
February
1
blah
2
blah blah
3
blah blah blah
etc...
```
I want to parse this info into a dictionary that will look like that:
```
[{'month': 'January', 'day': '1'},
{'month': 'January', 'day': '2'},
{'month': 'January', 'day': '3'}]
```
The code below was my first attempt to get this:
```python
from bs4 import BeautifulSoup
data = []
day_dict = {}
months = ['january', 'february','march',...]
# go through each month in the month list
for month in months:
month_block = soup.find(id=month)
month_name = month_block.find('h2').string
days = []
# going through each day in a month
for i in month_block.find_all(class_="subtitle"):
day = i.string.strip()
# adding info about current day to a dictionary
day_dict['month'] = month_name
day_dict['day'] = day
# adding the dicitonary to a list
data.append(day_dict)
```
This resulted in the `data` list to look like that:
```
[{'month': 'December', 'day': '31'},
{'month': 'December', 'day': '31'},
{'month': 'December', 'day': '31'}]
```
It was essentially saving the last dictionary over end over.
## Solution
This is going to be pretty straightforward, actually.
You will need to save a "copy" of the current dictionary, rather than a reference to an original dictionary. The way to do that is to use `.copy()` method.
```python
data.append(day_dict) # Replace this line with the next one
data.append(day_dict.copy())
```
---
# Joplin: open-source note-taking at its best
URL: https://www.rasulkireev.com/joplin/
Type: article
Date: 2020-02-05
Description: I use Joplin to take note. I use it for my personal life and for my projects. This post explains why you should use it too.
Tags: joplin, notetaking, opensource, productivity
Content:
Note taking apps are everywhere. Just to seem more credible I have to list a few:
* [Apple Notes](https://www.onenote.com)
* [Notion](https://notion.so)
* [Things](https://culturedcode.com/things/)
* [Todoist](https://todoist.com/)
* [Evernote](https://evernote.com)
* [OneNote](https://www.onenote.com)
* [Trello](https://trello.com)
By no means this is a comprehensive list, there are a ton of other similar apps, each offering some little difference from one another.
My argument is that you, as a user, don't need, or shouldn't care about those small differences. There is a list of core requirements for a note-taking application that will be good enough for the majority of people.
Some people will argue with that statement, and that's fine. As long as some people agree with me on this, I consider the point valid.
These are the features are think would count to a core requirement of a note-taking app:
* Available offline
* Sync across all major devices (macOS, Linux, Windows, Android, iOS)
* Has the basic structuring functionality:
* Folders
* Subfolders
* Tagging
* Can import/export notes (folders)
* Web clipper
* Free (or at least not expensive)
That's about it. Not too much to ask. Usually, you would expect that one would begin listing all the negatives of most projects and why they don't fit the criteria. I don't want to do that, or at least I don't want to start with that. Instead, I want to focus on why I think Joplin is the tool that you should use, or at least give a try.
## Structure
Joplin has its basics in a solid-state. You are free to create a structure that suits you best. This is mine:

* Create **folders, sub-folders, sub-sub-folder**, and so on.
* If you are a fan of **tagging**, that is pretty simple to do in Joplin.
> Personally, I don't do tags. I just don't understand them.
* There is a **Web clipper** plugin for most browsers.
* If you are migrating from/to Joplin, it has robust features for that. You can quickly **export** your notes, folder, subfolders, or the whole account to Markdown, JSON, CSV, and other formats. You can similarly **import** those formats into Joplin.
## Open Source
One of the most significant advantages, in my opinion, is that this piece of software is [open source](https://github.com/laurent22/joplin). This means:
* It is **free**
* It **belongs to the public**, no one is sharing your data
* If it is popular, then you get a lot of different people working on it, continually improving the product. (It currently has 12.4k stars on Github)
* If you know how to code you can easily add functionality that you need
* If you run into a bug or some sort of error, there will be someone who can help you. There are a [ton of forums](https://discourse.joplinapp.org/)and issue trackers.
One of the recent news from the Joplin core team was that they will participate in [Google's Summer of Code 2020](https://joplinapp.org/gsoc2020/). To me, this indicates further improvement. This means long term sustainability.
## Data Ownership
The way Joplin works is simple. You install an app and start taking notes. Notes are saved in your computer. No servers. If you need to access through a different device, you simply connect to Dropbox. You own the data!
Actually, there are a lot of sync options, besides Dropbox. Additionally, adding more options is in the roadmap.
If you don't need to sync between devices, you can simply host it on your computer. All the contents are stored in a folder. It is extremely easy to setup.
## Multi-device
We already covered the fact that you can sync via Dropbox and other similar solutions. The cool thing is that there is a functioning app for every major platform.
The only platform that Joplin is not on is the Web.
## Custom, yet simple
Each entry can be a "Note" or a "Todo." These are very similar, but the Todo allows you to check the entry off to be hidden but saved.
You can easily convert between the two modes without fear of losing data or breaking anything.
## CLI
If you are a fan of doing everything in your command line, Joplin has integration for that too. I realize that this is not for the general public. However, if you are an enthusiast and love using computers through a Terminal, then this could undoubtedly be a feature you enjoy.
## Use cases
### Writing
I personally find Joplin perfect for writing blog posts. Recently, I have been exploring various tools to build up a writing habit.
I tried services that let you write, draft, and post in the same interface as [Ghost](https://ghost.org/). I tried online tools like [Notion](https://notion.so), [Coda](https://coda.io/welcome), and [DraftIn](https://draftin.com/). But currently, I've stopped my searches. I'm using Joplin full time. I like it for its simplicity and reliability.
I can simply weep out my phone whenever I have a thought. It doesn't matter if I have internet access, it's just ways going to work.
I am actually writing this post in Joplin.

### Project Management
If you work in a big team, tools like [Basecamp](https://basecamp.com/) and [Asana](https://asana.com) are probably the way to go. However, if you are a single maker, like me, Joplin is going to be perfect for you.
This is my current setup for projects:

As you can see, I have a separate folder for the project, which has a bunch of subfolders for each specific project. After a couple of iterations, I ended up with 3 more subfolders for each project (it might change a little in the future).
One folder is to note all the ideas I might have for a given project. The other two folders are for short-term and long-term tasks. Essentially this is a simple separation between tasks that will take a while and tasks that are quick to complete.
I find that there is no need for a kanban style of management. This is super simple yet effective.
You might prefer to work with a tool like Trello, and that would be perfectly fine. In my case, for the sake of keeping everything under one roof and for the purpose of simplicity, I keep everything in Joplin.
### To-do lists
You can have to-do lists that are set up in two ways.
1. Have a folder where you keep to-do style notes only. Like so:

Check them off once you are done, and that's it, they will disappear (of you tell the program to do that).
2. Within a note use Markdown syntax for checkboxes, `"- [ ]"`.

> I don't use method two. I find it time-consuming.
## Conclusion
That's it. That is all there is to Joplin.
If you are still in search of an excellent and straightforward note-taking application, I encourage you to check out Joplin. If I have convinced you that will make me very happy. If you are a developer, I highly encourage you to join the ranks of people who help develop this tool. If you are not a developer, you can also help. Let people know (on the [forum](https://discourse.joplinapp.org/) or on [github issues](https://github.com/laurent22/joplin/issues))
There are a ton more features I have yet to explore. Whenever I find anything else useful, I will updateCreated this post and will send you an update if you are subscribed.
There are a ton more features I have yet to explore. Whenever I find anything else useful, I will updateCreated this post and will send you an update if you are subscribed.
Have a great day.
---
# Conference Volunteering
URL: https://www.rasulkireev.com/conference-volunteering/
Type: article
Date: 2020-01-09
Description: This is a reflection on my first volunteering experience at PyData 2019.
Tags: 2019, journal, review
Content:
Recently, I have attended the PyData 2019 conference in NYC. When I visited the website, all the tickets were sold, so I applied for the waitlist. A couple of hours later, as I was thinking about my PyGotham experience from a month earlier. I remembered one of the talkers mentioning that they desperately need more volunteers. I decided to apply for a volunteeriship to help the community, and as a bonus, get a free ticket. This was a big bonus. A couple days later, I received the email notifying me that I got the part! Usually, I don't get "You are accepted" type of email, which, come to think of it, makes me a little sad. That felt good.
I asked my employer if I can work remotely for a couple of days. Prepared the list of talks I want to attend and went through the volunteer training. Finally, I was ready to go. This was my second conference ever. More than that, it was on Python and Data, two things that I am very excited about.
In this post, I wanted to share the experience and my learnings from this experience.
## Experience
My experience overall was delightful. Tasks were not dull, people were friendly. There were enough volunteers to have regular breaks to attend different talks and to relax.
I got to talk to a lot of people and to listen to a lot of good talks, but I was still disappointed by myself. I did not use this wonderful opportunity to its fullest. After the conference ended, I realized that I was too "private." I avoided conversations with fellow volunteers, with attendees and with the speakers. To be clear, I was not acting like a total stranger, avoiding any communication at any cost. I did talk to people, but generally, they were the ones to initiate the conversation. Half of the people I spoke to were recruiters, which is just silly.
## Learnings
After the conference, I stumbled upon two conference-related resources. One is the podcast episode from the Full Stack Radio - [17: Adam Culp - Maximizing Your Conference Experience](http://www.fullstackradio.com/17). The other was a blog post by Al Sweigart - [How to Do PyCon (or any tech conference)](https://automatetheboringstuff.com/how-to-do-pycon.html).
Both were very relatable. Both resources talked about the fact that conferences are made for networking, or rather, for meeting new people. I couldn't agree more. Going forward, I will not pursue the same goals as I did at PyData2019.
The key learning for me is that meeting new people is crucial for future career and personal success. But the important thing is not to have an agenda when you are talking to people. You should not be expecting to use them as a contact for future jobs or for anything else of sorts. The point must be to have fun and to find good people to surround yourself with. Conferences are fantastic for that. There you will get a chance to interact with a selective group of people who all have a similar hobby to yours.
## Conclusion
To make this useful both for me and for anyone reading this, I will try to boil this down to several points:
* Prioritize meeting people over the talks
* For the people you've hit it off with, exchange contacts and follow up after the conference
* Use any possibility to meet new people (breakfast, breaks, lunch, maybe not bathroom breaks)
---
# 2020 Goals
URL: https://www.rasulkireev.com/2020-goals/
Type: article
Date: 2019-12-31
Description: It is important to set some goals for the future year too. This is my attmept to capture my goals.
Tags: 2020, goals, habits, review
Content:
I just finished writing the "[2019 in Review](https://www.rasulkireev.com/2019-in-review) " post, where I went over the things that I made happen in 2019. It felt great, I recommend everyone do it.
While writing the post, I kept thinking, "ok, I need to do this in 2020". I think it is a good idea to write down some goals for 2020. Not to always look at them to make sure you accomplish them. Instead, to give you some point of comparison at the end of next year. When I'm writing 2020 in Review, I will be able to see what was important to me at the end of 2019 and what changed during the next year.
So, without further ado, here are a few small goals I have for 2020.
## TL;DR
* Become a better Data Analyst
* Learn and become way more proficient with Web Technology
* Become the master of my mind and life
* Earn some $$$ from a side hustle
* Become more sociable
* Become a more loving husband
* Write more often
* Start a podcast
* Get out of debt
* Buy an existing company
* If 1, 10, and 11 are successful, set up an LLC.
## 1. Build two web apps
I think financial success lies in both quantity and quality. When it comes to building a SaaS product, one doesn't come without the other. If you look at prolific makers like [Josh Pigford](https://joshpigford.com/), [Pieter Levels](https://levels.io/), [Mubashar Iqbal](https://mubs.me/), [Tyler Tringas](https://tylertringas.com/), [Justin Jackson](https://justinjackson.ca/), and others, you will see that they have been building for years. That is a huge reason for their current success.
I understand that success doesn't come without Grit, i.e., working and trying without giving up. No matter what, I want to keep building and learning to build better products. Two SaaS projects seem like a doable goal.
## 2. Become a better Data Analyst
I thought becoming a data science is my dream for a long time. Now that I have worked with the new department within Guy Carpenter, I understand I am very far from that. Instead, I want to improve a lot in my position as a Data Analyst.
To be more specific, I want to get more accustomed to working with large datasets via Spark. My goal is not to receive a ton of error every time I try to do anything, and not Google every single idea I have. I need to improve my speed and efficiency drastically.
I also want to become a much better Data storyteller. This is a vital skill not only in a professional setting but very useful in life and personal projects.
## 3. Learn and become way more proficient with Web Technologies
Learn to Stripe. This would mean to learn to integrate Stripe API and Stripe.js into my current and future Django projects. Currently, I just can't figure that out. This doesn't mean I have to become an expert in each APIs and JavaScript, but dealing with Stripe flow will certainly greatly improved my understanding of both.
Actually, I have a list of things I'd like to learn and write posts about. There are a bunch of them actually. Here is a small sample:
* [D3.js](https://d3js.org/)
* [Webmentions](https://indieweb.org/webmention)
* [GraphQl](http://https://graphql.org/)
* [Vue.js](https://vuejs.org/) ([Gridsome](https://gridsome.org/), [JavaScript](https://www.javascript.com/))
* [LaTeX](https://www.latex-project.org/)
* [regex](https://en.wikipedia.org/wiki/Regular_expression)
* [ArcGIS](https://www.arcgis.com/index.html), [PostGIS](https://postgis.net/), and [GIS in general](https://www.esri.com/en-us/what-is-gis/overview)
* [Serverless Computing](https://en.wikipedia.org/wiki/Serverless_computing)
Next on the list are webmentions and D3.js. I am going to experiment with both through my personal Website. It should be an interesting and rewarding process.
## 4. Become the master of my mind and life
This is a broad goal, as well. It includes meditation, diet, emotion control, and spending habits.
In an attempt to make this more accountable, I would like to make a goal of:
* Do morning exercise, meditation, and journaling on 70% of mornings in 2020.
* 70% of my weekdays must be sweetless.
I think achieving this will make a massive difference in my life.
## 5. Earn some from a side hustle
It doesn't matter if it just 1 dollar. It is crucial to start. It could be through some consulting, or from a photo shoot, or from one of my web apps. As long as it makes some money.
## 6. Become more sociable
Meet 50 new people. Meeting fellow Indiehackers is the first thing that comes to mind. However, there are a plethora of other people to meet. Django developers, Data Analysts, and Scientists.
With Tanya, we could meet people at board game meetups or photographers meetups, perhaps.
Connections and relationships are everything.
## 7. Become a more loving husband
Show my love to my wife more often. Show her signs of affection and gratitude. Surprise her more often.
Certainly need to try to argue less and do less shouting.
## 8. Write more often
Share my learnings, my explorations, and anything else that could be useful to people. Make at least 50 blog posts in 2020.
## 9. Start a podcast
Start a podcast for Built with Django.
## 10. Get out of Debt
One of the biggest causes of my stress in 2019 is due to shaky finances. We are spending way more than I earn. And I fucking myself for that. That lack of discipline and control very upsetting. So this is a big goal for 2020.
Reducing costs to reflect my income. More importantly, payout all of my debts and loans. Get to zero money owned by April. This is, by far, one of the most important goals for 2020. The only reason it is not #1 is that I somehow thought about it right before posting.
## 11. Buy an existing company
Using learning from Ryan Kulp's microacqusitions class, buy an existing business. Start growing it.
## 12. If 1, 10 and 11 are successful set up an LLC
## Conclusion
I have been thinking about those for a while now. I am pretty sure this is a good and exhaustive list. As I said in the beginning, I don't have the goal of following this list closely. For me, 2020 will be about building good habits.
Achieving those habits will help me get these goals done, and in turn, these goals will help me reinforce my habits. Thus, creating a beautiful circle (of life 😉)
To whoever is reading this, have a Happy New Year. I wish you all the luck and all the strength you can have! May the next year, be the best of your life.
---
# 2019 in Review
URL: https://www.rasulkireev.com/2019-in-review/
Type: article
Date: 2019-12-30
Description: This is my attempt to review everything that I made happen, and that happened to me in 2019. It is crucial to remind yourself of the things you regularly did. Writing this post was very gratifying.
Tags: 2019, journal, review
Content:
I have seen a few "2019 Year in Review" posts on Twitter and that it would be cool to write one too.
Where should I start? This is the question I'm thinking about right now. That's a good sign. Without going in deep into my thoughts, I can see that there are at least a few things I can talk about.
I am now excited to write this post to remind myself that I have been doing good and can expect a lot more from 2020.
## Table of Contents {#start}
- [Table of Contents {#start}](#table-of-contents-start)
- [Highlights {#highlights}](#highlights-highlights)
- [## Early 2019 \[↑\] {#early-2019}](#-early-2019---early-2019)
- [## Starting the hustle \[↑\] {#hustling}](#-starting-the-hustle--hustling)
- [## Learning Web Dev \[↑\] {#learning-web-dev}](#-learning-web-dev--learning-web-dev)
- [## Networking \[↑\] {#networking}](#-networking--networking)
- [## Career Switch \[↑\] {#career-switch}](#-career-switch--career-switch)
- [## Starting to Data Science \[↑\] {#data-science}](#-starting-to-data-science--data-science)
- [## Indiehackers \[↑\] {#indiehackers}](#-indiehackers--indiehackers)
- [## Web Development / SaaS \[↑\] {#building-saas}](#-web-development--saas--building-saas)
- [## Open Source Community \[↑\] {#open-source}](#-open-source-community--open-source)
- [## Family \[↑\] {#family}](#-family--family)
- [## Stoicism \[↑\] {#stoicism}](#-stoicism--stoicism)
- [## Overall \[↑\] {#overall}](#-overall--overall)
## Highlights {#highlights}
* It was stressful.
* I learned a ton of web-related technologies.
* Wow... So much happened, it is crazy.
* This year was about discovering various communities and opening myself to them.
* There are a ton of cool and exciting things in the world. We have a whole life to discover them. In fact, there are too many, and making sure to only focus on the best and most important is crucial. Only do and learn things that make you say Hell yes.
## [##](#early-2019) Early 2019 [\[↑\]](#start) {#early-2019}
The beginning of 2019 started off with my wife and me celebrating New Year's in our little room in 5BR in Cambridge, Massachusetts. It was scary because I graduated without any job offers. Our lease was running out in mid-January. We generally did not know what is next. At that time, I was hoping to receive an internship opportunity with my previous employer. So, it was a little scary and somewhat stressful.
Thankfully I received that offer. The office is located in NYC, so we started packing up for a move to NY. We spend a month going from one Airbnb to another in search of an apartment where it would be just the two of us. Long story short, we found a great apartment in Newark, NJ. It felt great to stop moving from place to place, moving a lot of our stuff. Sadly, due to the moving, my wife's birthday was a little disappointing to her. Hopefully, this year we can make up for that.
The only disadvantage to all that is the fact that I didn't receive my EAD card, which would allow me to start my employment. Because of that, we had to take a loan to make payments for our new apartment. Still paying out that loan, with hopes to end that nightmare mid-2020. Huge thanks to my father, who could support us during that time also.
## [##](#hustling) Starting the hustle [\[↑\]](#start) {#hustling}
While not being employed, I thought it would be cool to start something that could bring us an alternative income. My salary was not going to cover everything. Unfortunately, it still does not.
I remember clearly that the only reason I got an idea to do that was thanks to Tim Ferriss. I am forever grateful to this man. I have been reading his "4 Hour" series while in my last semester in college.
Without going into too much detail, this is what I have done during March of 2019. Bought two domains:
* [osarjournal.com](https://osarjournal.com)
* [yourguidestolife.com](https://yourguidestolife.com)
Bought "BlueHost" hosting plan. I started working on two of my ideas. A service that will allow students to show their work to the world (Open Source Analytics Journal) and a list of useful guides that you get for paying a subscription fee. Needless to say, both of these failed, but they did give me a valuable lesson. I didn't like [WordPress](https://wordpress.org). More specifically, I did not like the fact that I can't customize it very well, and all the useful packages I needed were paid.
> Why in the world would I pay for simple forms?!?
> Interestingly, I remember stumbling upon "Make paid subscriptions with Django" class on Lynda.com, which was perfect at the time. But after going through a few videos, I dropped it. It did not stick. It is interesting because right now, Django is the only framework that I understand well.
My next venture was Fermentline. I heard a lot of great things about Shopify and wanted to give it a try. For a person who does not earn any money, $79 bucks might seem like a bit much. Nonetheless, I decided to try it. I have recently picked up a passion for fermentation.
> I have been making Kombucha at home. I was making fermented garlic, pickles, and other foods. I even tried to become a food YouTuber.
I can't remember why, but I thought that it would be cool to sell fermentation related apparel. No one else was making it (it still seems like a relatively good idea). Long Story short, that failed, with me paying from three months of Shopify.
Still, this was a rewarding experience. I got to work with freelance designers. This was my first attempt to build a web page. It is effortless with Shopify.
> One thing that makes me laugh now is the number of motivational videos I watched. Motivational is probably the wrong word there. A better description is "How to earn a shit load of many dropshipping on Shopify" kind of videos.
I stopped this project around the time I received my EAD card and started my internship, ones again.
## [##](#learning-web-dev) Learning Web Dev [\[↑\]](#start) {#learning-web-dev}
Mid-March I started working for Guy Carpenter. At first, I was extremely excited. Finally, a real job. I was extremely excited about the commute even. I read on my beloved kindle while I was on NJ Transit, then listening to podcasts while walking to work. The same deal on the way back home.
The podcast I was listening to mostly was "The Tim Ferriss podcast." I have only recently discovered it, and God, there was a lot of things I had to catch up. So many great interviews. Interviews with [Jason Fried](https://tim.blog/2018/07/23/jason-fried/), [Derek Sivers](https://tim.blog/2015/12/14/derek-sivers-on-developing-confidence-finding-happiness-and-saying-no-to-millions/), and [Naval Ravikant](https://tim.blog/2015/08/18/the-evolutionary-angel-naval-ravikant/) are one of my favorites. The one podcast that changed a lot for me was featuring [Ramit Sethi](https://tim.blog/2014/10/09/ramit-sethi-on-persuasion-and-turning-a-blog-into-a-multi-million-dollar-business/). To be honest, I don't remember what it was, but in general, the accessibleness of gathering wealth. One of the key things I remember was sin writing guest posts.
While I was doing Google research, I have stumbled upon a couple of personal websites. One that comes to mind is [Tom Critchlow website](https://tomcritchlow.com/). I thought, "Wow, that was cool, I need to make a personal Website and start doing consulting work to increase my revenue." Tom's website was done with [Jekyll](https://jekyllrb.com/). I started googling and ended up choosing to make a website with [Jekyll](https://jekyllrb.com/) and host it on [GitHub Pages](https://pages.github.com/)... That was a slow process. I remember I was actually writing code in GitHub, committing changes, and waiting for the website to change. I remember trying to a "resume" format website. After thinking I was done, I tried opening on my phone, and... it was shit🤣. I remember using tachyons for my CSS, without actually not knowing how CSS works properly (again, thanks to Tim for inspiration).
I don't want to go into too much detail. This is not an autobiography, although there are undoubtedly a lot of things I would love to put on paper. This is how my journey to web development started.
Actually, funny I should mention autobiography. Around the same time, I read The Bullet Journal book. I have been trying to journal, on and off, but this book helped me make it a more stable habit. I'm still working on doing regular entries, but it was a fantastic start, and I can't recommend it more. The BuJo method actually inspired me to build a project I'm working on right now - Kushim.
## [##](#networking) Networking [\[↑\]](#start) {#networking}
Around the same time, I decided to make an effort to meet more people, a.k.a Networking. I do mean professional networking. I struggled to get a single interview while in my last semester at Northeastern. I started contacting people on LinkedIn, asking for advice. I focused on people who work in the Data Science sphere, as it is what I was very interested in. Surprisingly, people are nicer in real life. I got a lot of responses and a lot of meetings.
I am thankful for this act of courage from my side. I have wasted my college years watching TV shows and other things like that, not meeting people, not trying new things.
I have recently started to prefer stey at work and code my own projects rather than meet new people during lunch. I think this is something I need to return to my schedule. Connections are everything.
## [##](#career-switch) Career Switch [\[↑\]](#start) {#career-switch}
I started my employment as an Actuarial intern. I've tried to pass the Actuarial exams several times but failed each time miserably. This is why I decided to meet more people, to find a new job in 6 months, while I was there. I failed in that too. Can you fucking imagine? In six months of job applications and networking, I did not get a single fucking on-site interview. Not one!
Thankfully, my boss at the time offered to extend my internship. So I had another six months to network and applied for jobs. At the same time, my boss asked me whether I want to keep trying to pass exams. While it was scary to say no, as there was a chance I might get fired, not extended. I am grateful that he didn't take it personally and offered to help find a new position within the company. I'm so thankful for that.
## [##](#data-science) Starting to Data Science [\[↑\]](#start) {#data-science}
I found an exciting position within GC at a Data Strategy Department. I contacted the hiring manager, Alan Anders, and we talked a little on the phone, even though his calendar had not one single spot. I'm thankful he took the time to speak with me and tell me about the position. I got so excited. The journey of transition started.
I'm now helping him with various data-related tasks. Or rather trying to help. Even though I was interested in Data Analysis for a while now, there were so many new things that I got quickly overwhelmed. Receiving so many errors, and being able to advance during the day is very discouraging. I really like working with Alan. Even if I only work part-time.
## [##](#indiehackers) Indiehackers [\[↑\]](#start) {#indiehackers}
[Indiehackers](https://pages.github.com/) is a fantastic community of people who want to start their own business without venture capital, bootstrapped. Mostly that would mean people who can code and want to build something like a web app.
I can't remember how I found that community, I tried really hard but just can't remember. To be honest, though, it doesn't matter. What matters is that I did find it. At the time I found Indiehackers, I just started to build my own website and did not know how to do "professional" coding.
I got extremely excited about building a web app, a SaaS business to support myself and my family. So I have added another goal to my list - learning to build web apps.
## [##](#building-saas) Web Development / SaaS [\[↑\]](#start) {#building-saas}
I started researching what I would need to build a web app, and the list was just too overwhelming... Php, Node.js, JavaScript, Laravel, Ruby on Rails, Django. That was a lot. Since I didn't know anything, I had to pick, that pick would probably be crucial since I would have to stick to it for some time. Just because I learned Python before (for Data Analysis purposes), I decided to teach myself Django.
First, I decided to rebuild my website. That was a long process. [William Vincent](https://wsvincent.com/) tutorials were a huge help. Huge! Thanks, William.
Again, I don't want to go into too many details, but the rebuild was somewhat successful. I now had a blog, a "now" page, and "What I learned this week" page. Since my website was hosted on Digital Ocean Ubuntu droplet, I got to learn Nginx, Gunicorn, and to use the command line. Knowing that a lot of things are possible with Django, I started recording my ideas for potential future projects. The list is now very long. I am excited to try those in the future when I am very good at Django 😁.
Now, I am building [Kushim](https://kushim.io) . It is my attempt to create a life management system for myself. The main features are Journaling, Digital Garden, and Network database to help you manage your relationships. I am almost done building a robust V1. The only thing left to do is to set up a billing process for pro accounts. And to set up automated emails for network app. I really hope to finish those soon and move onto the next project.
## [##](#open-source) Open Source Community [\[↑\]](#start) {#open-source}
Learning to code involved using GitHub a lot. On GitHub, people share their code. This encourages sharing and helping. The open-source community is all about sharing helping and doing things together.
[Derek Sivers](https://sivers.org) was the main reason discovered Open Source (OS) community. In one of his posts (about database building), he suggested people use [MonicaHQ](https://monicahq.com). Monica is an OS project. Although you can pay for it, I decided to attempt to install it on my own server. That was challenging. Very challenging. This is the first time I've run into that many errors.
> This is actually happening to me at work right now. Errors. Errors everywhere.
The only reason I pushed through that is pure excitement and enthusiasm. I really wanted it to work. A website only I can access, which hosts all my contacts and reminds me to contact them. This project was built with PHP, which wasn't my favorite thing to deal with. Thankfully, I had a lot of time in the evenings at that point and finally made it work.
At that point, I was obsessed with OS projects. Not very proud, but I started to get a little greedy. I was thinking, "what else can I use for free." Then the novelty wore off, I got better at removing things I didn't need, I changed. Now, I thought, "what projects can I help." Since I knew a little Python and Django, I couldn't contribute to many projects.
I started contributing to some instructions and other less important things. I even took part in Hacktoberfest winning a t-shirt for contributing to 5 projects. Very proud of that.
## [##](#family) Family [\[↑\]](#start) {#family}
In the summer, my wife went back home to Russia for a month. I remember that saying goodbye was very, very hard! We promised never to do that again. So when we get in a fight or argue, I try to remember that moment. It helps me remind myself how much I care about her and love her.
Sometimes it is indeed hard, very hard. But going through all the hard things together is essential. Knowing that there is always someone by your side is very comforting and helpful.
Generally, we have had a lot of ups and downs. We are a young couple, a young family. We have a whole life ahead of us to learn about each other and make a great family. I am thankful for all the good and bad moments. Each one second I spend with her is a great second.
## [##](#stoicism) Stoicism [\[↑\]](#start) {#stoicism}
Discovering Stoicism was a big help. I feel that attempting to practice Stoicism makes me a better human being. It makes me better at appreciating what I have, makes me better I controlling my emotions. Sometimes they get out of control. I get too angry very quickly, offloading it onto my wife, which is unacceptable.
Please note, I said, "attempting to practice." Becoming a stoic is hard, and I will spend the rest of my life, improving myself. But I think the hardest think of discovering and choosing a philosophy of life is done. Now to applications.
Along with Stoicism, I try to exercise and meditate every morning. I try to do this also to keep my brain under control for many things. Keeping emotions under control, being disciplined in my professional life, not allowing myself to distract easily.
## [##](#overall) Overall [\[↑\]](#start) {#overall}
I am very happy I decided and took the time to write this post. I realized that a lot was accomplished in the last year, or even last half a year. This makes me very excited about 2020. A lot of things to do, a lot to learn.
I'm forever grateful for everything life throws at me. Especially because most of what it throws is good. Thankful for all the people I get to interact with every day. Grateful for all the new people I met.
Looking back on this year, I know that our future is bright. It is crucial never to forget that.
I know that not many people will read this, and that is fine. But if you somehow read the whole thing or at least scrolled all the way here, know this:
You can make anything happen. You just need to start doing things one step at a time. Don't try to make everything happen at once. That won't happen. But if you do a little every day, it is inane what you can achieve in a year.
Thanks to 2019 for everything that happened in 2019. Good luck to everyone in 2020.
✌️
---
# Creating a Maker Widget with TailwindCSS
URL: https://www.rasulkireev.com/tailwindcss-maker-widget/
Type: tutorial
Date: 2019-12-17
Description: In this post we are making a simple Maker Widget with TailwindCSS.
Tags: builtwithdjango, tailwindcss, html, css, design
Content:
I recently built a [Built with Django](https://builtwithdjango.com) website to highlight projects that were built with Django. [Made with Vue](https://madewithvuejs.com/) has been a great inspiration for me. One of the cool features on this website is the Maker widget. You can see that [Armin](https://twitter.com/arminulrich) and [Melanie](https://twitter.com/_feloidea) built this website.

You can also see all their social links.

This is actually another project [they made](https://makerwidget.com). They make it easy to create your own widget. Kudos.
Then I stumbled upon [Makerrank](https://makerrank.co/) built by [Pieter Levels](https://levels.io/), where he made a similar widget with plain HTML & CSS.

I decided to go for simplicity and used Pieter's "widget" as a template/inspiration and rebuilt it with TailwindCSS.
## Building the Widget
```html
```

You can use this on any website you have built. You can direct users to any link you would like. The cool think about this is that it can also be used as a Feedback button. This is useful because it is always there, users can always see it. Yet, it is not right in your face. You would simply need to change the link and the text. For the link, you can make a TypeForm to collect feedback.
## Final Notes
You could combine the two widgets on one page. It will look something like this.

You are a judge on this one. For me, this looks alright. Not great, just alright. Here is the code that will get you those:
```html
```
I hope that is useful.
---
# New Project 'Built with Django'!
URL: https://www.rasulkireev.com/builtwithdjango/
Type: article
Date: 2019-12-12
Description: Launching a new hobby project. I am making a curated list of products built with Django.
Tags: webapp, ryankulp, microacquisitions, django
Content:
Last week, I purchased [Ryan Kulp](https://www.ryanckulp.com/)'s course on buying, improving, and selling microbusinesses [(affiliate link)](https://www.microacquisitions.com/how-to-buy-small-companies/8ayt5). One of the reasons I bought this course was to learn another skill (bseides, data analysis and web developemnt) he help my on a path to become financially independent. The other reason is that I desperately wanted to see how one would purchase a business without having a ton of cash upfront. Finally, I have been following Ryan for a while now, and he is just a cool dude, with [a lot to share](https://www.ryanckulp.com/projects/).
This is not a post about this course, though. I will write a short review of the course once I finish it. For now, I want to share a new project I am working on and how I came up with it.
The reason I mentioned How to Buy, Grow, and Sell Small Companies is that it helped me to get the idea. In one of the videos, Ryan said that at [Fork Equity](https://www.forkequity.com/)(Ryan's Investment firm), they care about the tech stack that the company uses. They have experience with [Ruby on Rails](https://rubyonrails.org/) and will be able to navigate in the projects once they acquire it quickly. I am a big fan of [Django](https://www.djangoproject.com/) and its [community](https://www.djangoproject.com/community/). If I am ever going to buy a business, I do not want to spend a ton of time learning the tech stack behind it. So I thought it would be cool to have a collection of websites built with Django. Hence my project "[Built with Django](https://builtwithdjango.com/)."
This seemed like an excellent idea for several reasons:
1. I get to practice and improve my [Django](/managing-django-with-poetry) & Design skills
2. I get to create a community of like-minded people. More specifically, people who like to create things and like to create them with Django.
3. I have a list of great projects that I could potentially help with or even take under my wing and improve upon.
4. Highlight the brightest mind in the community that I love.
5. In case of success, potentially monetize, by creating a job board and other non-intrusive to users way.
The project is now up and running. I published it a week ago. I will not go into more detail about how I was making right now. I will write a post on it later.
Here I just want to state that it took me about a week to go from 0 to [MVP](https://en.wikipedia.org/wiki/Minimum_viable_product). The hardest part was the front end, it is my weakness. Otherwise, Django makes it pretty easy to build the backend logic. Love Django.
I think this is going to be relatively low maintenance, yet useful project. I hope we get some people sharing their work. Hopefully, this will help grow the awesome community of Django makers.
---
# Analyzing FIFA 19 data (III). Machine Learning and Prediction
URL: https://www.rasulkireev.com/fifa-machine-learning/
Type: tutorial
Date: 2019-12-06
Description: In this post we are going to apply some basic machine learning on our clean dataset. We are going to focus on using Scikit Learn
Tags: datascience, machinelearning, fifa, numpy, pandas, python, scikitlearn
Content:
## Source code
The project source code is in [this](https://github.com/rasulkireev/fifa19-data-analysis) Github repo. You can review the code in this post in 3.1-machine-learning-by-the-book.
##Overview
In this post, we go through the process of building a machine learning algorithm. I am not making it from scratch. Scikit-learn has done all the work for us. We need to think about the "business" logic and best practices of using this library.
Please note, this is part 3 of our project. Please follow the links to review [Part 1](https://www.rasulkireev.com/fifa-data-cleaning/) and [Part 2](https://www.rasulkireev.com/fifa-data-exploration/), where we talked about Data Cleaning and Exploration, respectively.
## Initial Importing
Let's begin. First, we need to import the standard packages and a "clean" dataset (from the previous post).
```python
%matplotlib inline
# Standard Libraries to import
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
dataset = pd.read_csv('data/processed/clean_dataset.csv', index_col=0)
```
This should get us going.
## Creating a test set.
Before we begin any further exploration or analysis, we need to create a test set and set it aside. After you have your data, the first thing you should do is to set aside some test data. This ensures a safe and unbiased process.
### Categorizing Overall Skills into bins.
This step helps us get the correct proportions of data from each Overall skill bin when we are splitting the dataset.
```python
# Create a column that categorizes Overall Skills level into bins.
custom_bins = [i for i in range(45,100,5)]
dataset['overall_bins'] = pd.cut(dataset['overall'],
bins=custom_bins,
labels=[i for i in range(len(custom_bins)-1)])
dataset['overall_bins'].hist()
```
If everything works correctly, you should get a histogram that shows an uneven distribution of players that belongs to each "group."

Let's now split the dataset into the test set and training set. Thanks to Scikit-learn, it is straightforward. We are using the train_test_split function.
```python
from sklearn.model_selection import train_test_split
strat_train_set, strat_test_set = train_test_split(
dataset, test_size=0.2, random_state=42, stratify=dataset["overall_bins"])
```
Here, we set the test size to 20%, which is the standard proportion to pick. If you have a large data set, with millions of rows, then you can choose a smaller percentage. The random state helps us replicate the result in the future. You can use any integer, but 42 is a geeky standard.
> I have procrastinated on this post for a long
Time. I think this is just because it seems like there is too much work ahead. I have this subconscious desire to make it perfect, just because all the data science related posts I read seem to be that way. No more. I am at the beginning of my career, and putting this out in the world is way more important than making it perfect. So I try to keep this short, sweet, and simple (the new S3). In the future, when I have more time and experience, you can certainly expect much more detail, depth, and sass in my posts. Now, let's continue.
If you want to see the distribution of data along with the bins, you can run the following code.
```python
print(strat_test_set["overall_bins"].value_counts()/len(strat_test_set))
print(len(strat_test_set.overall))
```

## Prepare the Data for Machine Learning Algorithm
### Separating dependent and independent variables
The first thing we are going to do is to separate the dependent and independent variables. Since we are trying to predict the value of the player, it is going to be our dependent variable. Other columns are the independent variables. This is the code to achieve that separation:
```python
dataset = strat_train_set.drop("value", axis=1)
dataset_labels = strat_train_set["value"].copy()
```
### Converting categorical variable to numerical
We are using Scikit-learn built-in method called OneHotEncoder. This is great and simple to use the feature.
_**I have to give Scikit-learn dev team a huge shoutout, they are doing a great job overall.**_
The only categorical variable that we have is 'Position.' I think it is useful to consider player positions because they need different skills and attribute to be better or worse and will, therefore, affect the overall value of the player.
```python
# One hot Encoding
from sklearn.preprocessing import OneHotEncoder
dataset_categorical = dataset[['position']]
cat_encoder = OneHotEncoder()
dataset_categorical_1hot = cat_encoder.fit_transform(dataset_categorical)
```
### Scaling your features
Scaling is important when it comes to Machine Learning. Having values that vary in the range can through your algorithm off. So keeping everything on the same scale is very important. One way to do this is Scikit Learn's built-in method called StandardScaler. This method applies the [Min-Max feature scaling](https://en.wikipedia.org/wiki/Feature_scaling#Rescaling_(min-max_normalization))
, which essentially yields values from 0 to 1.
I use a Pipeline method to apply the scaling. This helps us automate the process in the future by creating a pipeline. This is how the code looks like:
```python
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
num_pipeline = Pipeline([
('std_scaler', StandardScaler()),
])
```
### Creating a Full Pipeline
The final step in preparing the data is to create a Full Pipeline that we can use to feed the unprocessed information. In our case, it is the test data that we have prepared in the beginning.
To create the full pipeline, once again, you need to use Sciki-learn built-in method called `ColumnTransformer`. It is a relatively new feature. It is very efficient. We are also going to leverage the Pipelines we have created earlier. This is how we do this:
```python
from sklearn.compose import ColumnTransformer
# Make a dataset with nums only
dataset_num = dataset.drop("position", axis=1)
num_attribs = list(dataset_num)
cat_attribs = ["position"]
full_pipeline = ColumnTransformer([
("num", num_pipeline, num_attribs),
("cat", OneHotEncoder(), cat_attribs),
])
```
Please note: the third parameter for both functions within ColumnTransfomer are lists of columns that this function applies to.
Then we will perform a fit_transform on the dataset:
```python
dataset_prepared = full_pipeline.fit_transform(dataset)
dataset_prepared.shape
```
`.shape` is here to check the dimensions of the final dataset. This is the result for me `(14516, 59)`
## Applying the Machine Learning Algorithm
There is a plethora of different Machine Learning Algorithms that was pre-built by Scikit learn. We are going to use the Random Forest Regressor. It is a robust algorithm.
I am not going to go into the details of how it works. There are some excellent resources out there that talk about this in detail.
If you followed along and did everything successfully, the following code looks extremely simple to you!
```python
from sklearn.ensemble import RandomForestRegressor
forest_reg = RandomForestRegressor()
forest_reg.fit(dataset_prepared, dataset_labels)
```
That's it. We now need to test the algorithm. One of the simplest ways to do this is to check the Root Mean Squared Error. The following code does not.
```python
dataset_predictions = forest_reg.predict(dataset_prepared)
forest_mse = mean_squared_error(dataset_labels, dataset_predictions)
forest_rmse = np.sqrt(forest_mse)
f'RMSE is ${forest_rmse:,.0f}'
```
I get `'RMSE is $374,525`. This means that, on average, the algorithm is only roughly off by $400k, which is not a lot compared to the actual values. We are talking millions here.
### Saving the model
Suppose we are happy with our model. Now the right thing to do would be to save it. The easiest way to do this is by using joblib function. It is easily accessible from sklearn.externals. This is how you save the model:
```python
from sklearn.externals import joblib
joblib.dump(forest_reg, "models/best_model.pkl")
```
Here the forest_reg is the model we want to save and the second parameter `"models/best_model.pkl"` is the path and the name of our new file.
You can check the directory to make sure everything saved correctly.
## Evaluating on the test set
Now that we have a working algorithm we want to use, it is time to finally test it on the test set to see if it works correctly.
We are going to take our test_set and feed it through the pipeline we created earlier. After that, we are going to feed it through the model we have trained. Excuse my "feed-through" language. This is the first thing that comes to mind.
```python
final_model = best_model
X_test = strat_test_set.drop("value", axis=1)
y_test = strat_test_set["value"].copy()
X_test_prepared = full_pipeline.transform(X_test)
```
The code above makes the final "prepared file."
```python
final_predictions = final_model.predict(X_test_prepared)
final_mse = mean_squared_error(y_test, final_predictions)
final_rmse = np.sqrt(final_mse)
```
Now we successfully "fed" or dataset thought he model. The last thing to do is to evaluate the error.
```python
f'RMSE is ${forest_rmse:,.0f}'
```
`'RMSE is $359,161'`
All right! The model performs better on the test set, rather than the training set. This is a little surprising to me. The difference is tiny, so no worries about underfitting.
## Final Thoughts
I can't believe this is "over."
We have gone through the process of Data Analysis from Data cleaning to Building a Model. There are so many things I have left out, even things I did for this dataset. It is impossible to cover everything in one go. I hope this was at least a little tiny bit useful.
There are fantastic books written on these topics. The books that helped me write this post is 'Hands-on Machine Learning with Scikit-Learn, Keras & TensorFlow' by Aurelion Geron.
## Final, final thoughts
These are my first baby steps in the world of Machine Learning. These are the first baby steps in the world of Data Science blogging or any blogging for that matter. So, please do not be too harsh.
You know what, actually forget it. Please, be harsh. I don't have too much free time, and I want to improve as quickly as possible. So, some constructive criticism would be great.
This post took me waaay to long to write. Also, I had big blocks of time in between those writing, so I am afraid of small inconsistencies.
In the future, I will try to break it up into a much smaller code block. I guess it was a little too ambitious to write a "form start to finish" post as my first post. Well, I am happy I wrote. I am so glad it is now behind me, and I can move on with some other things.
I promise to try to be more consistent and more frequent with posts.
---
# Just launched my first Web App!
URL: https://www.rasulkireev.com/first-web-app/
Type: article
Date: 2019-10-29
Description: Finally launched my first Web App. Kushim is my first Django project which was built from scratch.
Tags: webapp, django, saas
Content:
This is a big thing for me. I have been learning Django for several months now (around 4). I built a website with it, thanks to all the great tutorials out there. Building a Web App is a whole different thing though.
I have struggled to find time and courage to actually build this thing. It took many different forms and ideas while I was building it.
## Gratitude
I want to give a quick shout-out to people/resources that helped me achieve this. I'd like to thank:
* my wife for putting up with me during this long and hard process!
* the StackOverflow community (especially to [Daniel Roseman](https://stackoverflow.com/users/104349/daniel-roseman?tab=profile) who answers a ton of questions and very quickly I have to say).
* [William Vincent](https://wsvincent.com/) for writing a lot of good tutorials.
* [IndieHackers Community](https://www.indiehackers.com/) for constant inspiration.
* [Coutland Allen](https://www.indiehackers.com/csallen) for building Indiehackers and for the podcast, which is extremely inspirational.
* ...
This list can drag along pretty far. The point is I am thankful to all the people who helped me with this. Funny enough, none of those people know they have helped me.
## The Process
I wanted to build something. Anything, not necessarily a web app.
```
Note: While writing this I feel so shitty for some reason... "Who are you to be writing about this?", "No one cares..." are the thought that comes to my head...
```
I needed some extra money to live off, since my current wage is not enough. This leads me to try a bunch of things.
* I tried to build a t-shirt shop with Shopify, that failed.
* I tried to build a website with Wordpress to sell some written work. That failed too.
* I tried to record myself cooking to make a Youtube channel, I didn't follow through.
* I made a business newsletter for Russian Entrepreneurs. No, signups.
* I made an online journal so that students can post their work for the world to see. No submissions...
I was kind of sad and decided to do something that will at least help me get a better job. The first thing was to make a website. I tried, Wix.com, Jekyll, plain HTML, it was all shiiiiiiiit. Really, really bad... **This is turning into my life story, which it is not supposed to be. I will stop now and will continue this story sometime in the future, promise.** Long story short, I decided to learn Django and after making the website I was happy about I decided to build some kind of SaaS product that people would pay for.
One of the ideas was inspired by Derek Sivers. More specifically, by hist post on [Journaling](https://sivers.org/dj). There he talked about the benefits of journaling.
> If you care about your thoughts, keep them.
One of the ideas was to also have "Thought On" Journals, for all the different thought you might have. For example, Derek has Journals about Airports, Sex, Travel and a bunch of others.
I thought that was a great idea for a web app. Allow people to create journals for any thought that they have. That's it. That was the premise of the app and I have now built it. Now you can do that.
Building it was not very hard with the knowledge I gathered in roughly 3 months of building my personal website. The hardest thing was to actually start building it, finding time to continue building it and to have the balls to follow through and finish building it. Somehow, I managed to do all that and am still pleasantly surprised that I did.
Just as a remark I want to add that it wasn't super easy all the time, I ran into errors all the time. All. The. Time. You just need to be an adult and seek help. StackOverflow is a great place to ask for help.
## Pricing and Next Steps
I thought that this is not enough to ask people for money and so I decided to make it free until I build the next feature. The next feature will be akin to a Personal CRM like [MonicaHQ](https://www.monicahq.com/).
I think the price I will be asking for is around 4.99 a month. I won't be expecting much excitement or registration at that price point. If someone signs up I will be super happy, otherwise, I will be happy just using it myself.
## Final Thought
Just because this is the first post about me building something, I wanted to tell a lot more, but it is very easy to go down the rabbit hole of telling you each small detail about my thought process and all the vents that happened to me before I actually published. Life is a hard and complicated thing. It is very hard to isolate specific events that lead to other events. Nothing happens in a vacuum. Hopefully, if I continue to work and write about it, I won't have to talk about the details so much and a lot of things will start to become self-evident.
---
# PyGotham 2019: Day 2
URL: https://www.rasulkireev.com/pygotham-day-two/
Type: article
Date: 2019-10-15
Description: Second Day of my first conference ever. I tried to make good notes during the talks I attended.
Tags: conference, networking, pygotham, talks
Content:
Day 2 of the PyGotham conference was on Saturday. I expected there to be way more people, but surprisingly, the opposite has happened. Day 2 count was twice as small, or at least that is how it felt. Below are the note from Day 2.
You can see Day 1 notes [here](pygotham-2019-day-one)
_Please note: I took some pictures, but am not able to upload that as of this second. As soon as I can, I will updateCreated the post._
_Please note: I took some pictures, but am not able to upload that as of this second. As soon as I can, I will updateCreated the post._
***
# 1000x faster data manipulation: vectorizing with Pandas and Numpy
## Nathan Cheever @AdvancedMD Ds
* For loop vs vectorization
* Vectorization working with array or series without for loops, rather all at once.
* You are probably already doing that to some degree
* To perform conditional vectorization do: **numpy.where()**
* Numpy.vectorize()
* Numpy.select() for multiple ifs / elifs
* Pd.shift() to create anoer plumn with values shofted
* talked about Dask
* Kubernetes shirt
***
# Using Dash to Create Interactive Web Apps for Non Technical Audience
## [Joseph Willi](https://www.linkedin.com/in/joseph-willi-38b7883b/), @[underwriters labarotory](https://www.ul.com/)
### AZV Dashboard (Arizona Vortex)
* Great company, mission oriented
* Their job is to fire staff and gather data
* Somehow connected physical devices such that the plotly days gathers data from the device and inputs it to the dashboard
***
# Distributed Machine Learning with Python
## [Brad Miro](http://https://www.linkedin.com/in/brad-miro/) @google
* Latest ml updateCreateds,: Gpu, Tensorflow unit
* Latest ml updateCreateds,: Gpu, Tensorflow unit
* Kubeflow, marries Tensorflow and Kubernetes
***
# Pull Requests: Merging good practices into your project
## [Luca Bezerra](mailto:lucabezerra@gmail.com) - vinta
* Code review , even if unwanted adds greatly to the project
* Best practices:
* Pull request template.md on github
* Status checks prevent branches merging without checks
* Contributing .md for collaboration
* Enforce approval/merge rules : codeowners.nd
* Using **gitflow** makes sure your branches are always up to dateCreated
* Using **gitflow** makes sure your branches are always up to dateCreated
* Branches are cheap and great flexibility
* Keep pr size as small as possible
* More clear commit messages (talk about what and how ),
* Use linters when possible
* Tips & tools
* Refined GitHub
* Deploy Previews (Netlify)
* Check Vinta checklist
***
# Jane Doe will help you improve your project
## Rebecca Sarai - Vinta
* Netflix prizes - challenge
* Talk is about anonimization
* Psedonymization - is personal data , but you hide the data in a particular manner , includes
* Tokenization, etc.
* Anonimization no data that considered personal and can be sued to identify a person
* Static
* Dynamic
* Synthetic
***
# The Cat's Alive! Add Some Weirdness To Your Code With Quantum Computing
## Jorn Mossel, Marianne Hoogeveen
* Classical computer works with 0 and 1
* Qubit can be a bit of both (circular form)
***
# Oh, the Humanities! Interdisciplinary Thinking in Python
## [Lisa Tagliaferri](https://lisatagliaferri.org) - wrote tutorials for Digital Ocean
* Research on how women men are described in certain ages.
* Text from Gutenberg projects were analyzed
* Very interesting
* Text analysis might not be that scary after all. It never was , bit now it is certainly interesting enough to give it a try
* Gender novels project
* [Caterina.io](https://Caterina.io)
* [Hacktober fest](https://hacktoberfest.digitalocean.com/)
***
# Serverless Deep Learning with Python
## [Alizishaan Khatri](https://www.linkedin.com/in/alizishaan-khatri-32a20637/) @Kony Machine Learning Engineer
* Kony builds applications for banks
* Unfortunately I do not follow at all
***
# Airflow in Practice: How I Learned to Stop Worrying and Love DAGs
## [Sarah Schattschneider](https://www.linkedin.com/in/sarahschattschneider/) - software engineer @[blue apron](https://www.blueapron.com/) - hiring
* One of advantages is the more advanced alerting system
* Good cli and UI
* Open Sourced by Airbnb
---
# PyGotham 2019: Day 1
URL: https://www.rasulkireev.com/pygotham-day-one/
Type: article
Date: 2019-10-05
Description: First Day of my first conference. I tried to make good notes during the talks I attended.
Tags: conference, networking, pygotham, talks
Content:
This is a first conference I have ever attended. If I had to describe it in one word, it would be 'great'. Here is why:
* I've met a lot of people with similar interest personality types, which is hard to do in regular setting.
* I've made a number of "useful" contacts that might help me find a good job.
* I've seen a lot of interesting presentations that have sparked my interest in programming (in Python) even more.
During the event I took notes with [Joplin](https://joplinapp.org/) , which is a great open-source note-taking app. I strongly recommended to everyone. **Not a sponsor**.
The general structure of the notes you are about to read is the same:
# Name of the talk
## Author
* Notes are going to be bullet points.
`If i have any notes above the bullet point above, I will leave them in this grey {code} block`
* I will try to leave find as links as possible, so you don't have to google everything.
So, without further ado, here are the notes I've taken during the first day of the event.
***
# Python use spectrum
## Kojo Idrissa
* More speakers always needed.
`This makes me want to make a talk to present at one of the conferences, seems totally doable and great for portfolio.`
* Volunteers always needed
`Certainly feel I should have been volunteering at this event. Will try to consider volunteering much more often`
* [Defna.org](http://Defna.org) - Django organization
***
# Eita! Why internalization and localization matter
## Nicolle Cysneiros [@Labcodes](https://labcodes.com.br/) - (Web Design Agency whos tech stack is python, django and js)
### Differences in formats across countries
* Date Formats (mm/dd/yyy vs. dd/mm/yyyy, etc)
* Number Formats (123,123 vs 123.123)
* Currency, [Bidirectional Text](https://en.wikipedia.org/wiki/Bidirectional_Text) & [Unicode Characters](https://www.rapidtables.com/code/text/unicode-characters.html) differ from country to country.
### Python library to deal with that
* GNU [`gettext`](https://www.gnu.org/software/gettext/)
* This piece of software essentially is helping you to create a 'list' of text blocks that will need to be translated.
* [`locale`](https://docs.python.org/3.7/library/locale.html) module.
* This module helps change the formats of the above mentioned differences.
* Apparently Django makes it super easy.
***
# Can you keep a secret?
## [Aaron Bassett](https://www.gitshowcase.com/aaronbassett) @[Nexmo](https://www.nexmo.com/)
* [Git-Secret](https://git-secret.io/)
* Uses [pgp](https://en.wikipedia.org/wiki/Pretty_Good_Privacy)
***
# Absolutely Awesome Automated APIs
## [Timothy Allen](https://www.linkedin.com/in/flipperpa/) - @[WRDS](https://wrds-web.wharton.upenn.edu/wrds/index.cfm?) (uses Django)
### -@flipperpa -djangonaut -hockey_fan_flyers -guitarist -loves_icecream
* WRDS developed and open sourced [Automagic-Rest](https://pypi.org/project/automagic-rest/)
* [Drf renderer xlsx](https://github.com/wharton/drf-renderer-xlsx) - open source library to convert API endpoint to excel file
***
# Recreating "The Clock" with Machine Learning and Web Scraping
## [Kirk Kaiser](https://www.linkedin.com/in/k-p-kaiser-94500124/) @[datadog](https://www.datadoghq.com/product/)
* [Tate modern - the clock](https://www.tate.org.uk/whats-on/tate-modern/exhibition/christian-marclay-clock)
* To start, simplify: try kubernetes locally - Ubuntu + Nvidia, [ngc.nvidia.com](https://ngc.nvidia.com)
* [Dab & t-pose controlling light](https://github.com/burningion/dab-and-tpose-controlled-lights)
* [Jetson nano gpu accelerated machine 99$](https://amzn.to/2oyUSsS)
* Datadog is hiring
***
# To comment or not? A data-driven look at attitudes toward code comments
## [Veronica Hanus](https://www.linkedin.com/in/veronicahanus/)
* Funny, good presenter
* The general consensus is that comments are good and you should leave them
***
# Learning with Limited Labeled Data
## Shioulin Sam @cloudera
* Very clear and great presenter
* **Active learning** has been here for a while, but only now got integrated with ...
* Random sample data points to label (good, but not optimal)
* [Margin Sampling](https://link.springer.com/chapter/10.1007/978-3-662-45646-0_13)
* [activelearner.fastforwardlabs.com](https://activelearner.fastforwardlabs.com)
* [Twiml and Ai podcast](https://twimlai.com/)
***
# Introduction to Generative Adversarial Networks (GANs): hands-on to making new data (and some pretty pictures)
## [Nabeel Seedat](http://nabeelseedat.com/)
* [Dirpfakes](https://twitter.com/realderpfakes?lang=en)
* [Deep Convolutional GAN](https://medium.com/@jonathan_hui/gan-dcgan-deep-convolutional-generative-adversarial-networks-df855c438f)
* [Fashion Mnist](https://github.com/zalandoresearch/fashion-mnist)
* [Gan Zoo](https://github.com/hindupuravinash/the-gan-zoo)
***
# What physics can teach us about learning
## [Marianne Hoogeveen](https://www.linkedin.com/in/marianne-hoogeveen/)
* Neutral network can approximate any smooth function - [Universal approximation function](https://en.wikipedia.org/wiki/Universal_approximation_theorem)
* Scales matter when it comes to identifying patterns (neural networks) - [renormalization group](https://en.wikipedia.org/wiki/Renormalization_group) i.e. compression
***
# Django + ElasticSearch without invalidation logic
## [Flávio Juvenal](https://twitter.com/flaviojuvenal?lang=en) @[vinta](https://www.vinta.com.br/)
* Most popular search engine
* Why use search engine
* Tokenization
* Fuzzy similarity
* Cleaning
* Elastic search built ins
* Less than million rows of Data can be searched with postgres built-in capabilities (check Django postgres search ) if more than 1m than implement elastic search
* [Haystack library](Haystack library) for search in Django
* [Zombodb](https://github.com/zombodb/zombodb) works with postgres (via access method API) (Django-zombodb)
* will Soon work with postgres 11
***
# Static Typing in Python
## [Dustin Ingram](https://dustingram.com/) @Google @di_codes
* type errors happen
* When Python expects a list received a string and converts that to a list , ugly list
* Python originally is dynamically typed, but can also be static. Which is a great strength
* Pep 3107 fucntions
* Def Foo() <- max(2,9)
* Foo.__annotations
* [Mypy](http://www.mypy-lang.org/) from PhD introduced on pycon us 2013
* Experimental variant of Python that is statically typed
* After talking to Guido decided to implement to pure Python
* pep 483 theory of type hints
* Optional typing (+gradual typing)
* Variable annotation
* Check data science from scratch again, it has some static type instructions
* Pep 484 type hints
* `Pip install mypy`
* When not to use : never
* When to use : as much as possible (Start early)
* When code is confusing
* When for public consumption
* Before big migrations and refactoring
* Start early
* Note : not a replacement for unit test
***
# Convincing an entire engineering org to use (and like) mypy
## [Annie Cook](https://www.linkedin.com/in/annielcook/) @[nylas](https://www.nylas.com/) - hiring
* [Mypy](http://www.mypy-lang.org/) is a static typechecker , type of documention (self documenting )
```python
#pep 484type hints
Def Foo(type: str) -> str
Return
```
* With mypy linters work better
* Captures a large category of errors
* Union is a multiple type
* _learn x in y minutes_ . Saw some guy in the talk use this website, seemed interesting
***
# ministry of silly talks
## [in-toto](https://www.In-toto.io) - securing the whole software supply chain
### nyu , njit, Santiago Torres Aria's, Hammad Afzali, etc.
* Not rely clear, probably hard to implement
* Sounds scary where people can attack software, need to check if that actually happens
## Test your failures with xfail
### [Paul Ganssle](https://ganssle.io/)
* Decorate a test that you expect to fail with
`@pytest.mark.xtest`
## Experimental features in [Scikit-Learn](https://scikit-learn.org/)
### [Thomas J Fan](https://www.linkedin.com/in/thomasjpfan/) - scikit learn core devoler
* Deprecations?
* Use columntrasformer to transformer some of the dataframe
## Why your tech company from recruit from philosophy department
### [Katherine Hartling](http://www.katbelle.com/) - @KatOnceSaid
* [Jackpocket.com](https://jackpocket.com/)
* [Plato's concept of classes](https://oregonstate.edu/instruct/phl201/modules/Philosophers/Plato/plato_on_women_in_the_ideal_state_part_I_the_context.html)
## Greed an homage
### Julian, @[julian](https://github.com/Julian) - GitHub, @[julianwastaken](https://twitter.com/julianwastaken?lang=en) on Twitter
* Algortim of change in supermarket, greedy algorithm
* when does it work
* When you can take Independent choices within each step
* [Matroids](https://en.wikipedia.org/wiki/Matroid)
## Change just one thing
### Timothy Allen , same guy as WRDS talk in API
* Dealed with alcohol addiction problem!
* Ask help, people are willing to help, especially the Python and Django communities
## Structured logging in Python
### [Jonathan Meier](https://jonathanmeier.io/) software engineer @[openslate](https://www.openslate.com/)
* Structured logging is writing consistent logs that are easy for computers to read (JSON)
* [Python-json-logger](https://github.com/madzak/python-json-logger) or structlog
## Restructuring Data in Python
### Mahmoud Hashemi @ sedimental.org
* Flat is good vs namespaces are good. Tim Peters - Pep20
* Nested data is bad. Tim Peters
* [Glom library](https://glom.readthedocs.io/en/latest/) - Python data nester
* Good presenter.
## Ministry of silly runtime: Vintage Python on cloud run
### Dustin Ingram @Google @di_codes
* Run stateless http container
* Docker images as a service
* Installed old Python (1.0.1) on cloud run
* Good presenter
---
# Analyzing FIFA 19 data (II). Data Exploration and Visualization
URL: https://www.rasulkireev.com/fifa-data-exploration/
Type: tutorial
Date: 2019-09-26
Description: My thoughts on the Open Source community and the culture behind it.
Tags: opensource, plotly, pandas
Content:
You can find all the code to this project [here](https://github.com/rasulkireev/fifa19-data-analysis). You can review the code in this post in [2.0-plotting-and-exploration.ipynb](https://github.com/rasulkireev/fifa19-data-analysis/blob/master/2.0-plotting-and-exploration.ipynb).
In this post I will go through the process of data exploration. In [part 1](https://www.rasulkireev.com/fifa-data-cleaning) we already did some "exploration and are now much more familiar with the dataset. In this part I will mostly focus on visualizations. To be more specific, I will focus on visalizing our data set with a python library - ["Plotly"](https://plot.ly/python/).
Before we continue I just wanted to quickly explain why I will be using Plotly, instead of matplotlib or seaborn.
1. Plotly graphs and charts look really good, even without a lot of customization.
2. There are some useful features taht will allow me to explore the dataset (for example, I can zoom in on the chart interactively).
3. We can later make a ['Dash'](https://plot.ly/dash/) dashboard, which uses plotly for all its graphs.
## Installation
If you are using anaconda, you have it pre installed. If you are using your own virtual environment then install simply with
```python
pip install plotly
```
I strongly suggest you use [jupyter notebook](https://jupyter.org/) for all the analysis and exploration. Again if you are using Anaconda environemnt, you have it pre-installed and simply need to launch jupyter notebooks from the Anaconda Navigator, which is a programm you can run on your computer. If you decided not to use Anaconda than you can easily install jupyter notebooks simply following the official [installation guide](https://jupyter.org/install).
Plotly should be working fine with Jupyter Notebooks, right out of the box, but if you are running into some errors, try installing ipywidgets using pip, and generaly going throught the plotly jupiter lab [integration guide](https://plot.ly/python/getting-started/).
## Importing packages
Since we are not working with matplotlib or seaborn, we only need to import a couple packages:
``` python
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
```
* we need pandas beacuse we are wroking with a dataframe
* plotly.express is good for quick plots that don't require any customization
* plotly.graph_objects allow for full customization
Finally, before we begin let's import the dataset we made in the previous post. Please make sure you are wokring in the same directory as you csv file.
```python
combined_columns_data = pd.read_csv('reduced_clean_data.csv', index_col=0)
```
## Correlations using `scatter matrix`
### Basic Player Info (Height, Weight, Overall, Value, Wage)
One of the first things we want to look at is something called a scatter matrix. This chart will allow us to compare a bunch of variables (columns) to each other to see if there are any interesting relationships going on in our data. With plotly express it is pretty simple to do.
``` python
fig = px.scatter_matrix(combined_columns_data,
dimensions=['height','weight','age','value','overall','wage'],
color="position")
fig.show()
```
As you can see in the code above, we called plotly express graph called `scatter_matrix`, told it what data we want to use (`combined_columns_data` dataframe), specified which variables we are interested in and I also decided to add a color distinction for each positionm so that we could see if there are any clusters.
Here is the output:

Nice. Now let's see if there is anything interesting to note.
Here are my observtions (if you see something I missed, please [let me know](mailto:kireevr1996@gmail.com)):
1. _(column 2, row 3)_ The value of the player is roughly the same when the Overall Rating is between 0-80. Once the rating passes the 80 mark, the value starts to climb up quickly.
2. _(column 2, row 4)_ Same thing happens to wage.
3. _(columns 5 & 6, row 4)_ These resemble normal distribution plots. This makes sense, since height and weight tend to be normally distributed across any population. what is interesting is that Most valuable or highly paid players tend to be closer to the mean.
4. Finally, as we can expect there is a correlation betweem height and weight. The tallker the playeer, the more he weighs.
Let's continue.
### Detailed PLayer Statistics - (Speed, Passing, Physical, Control, Defending, Skill, Shooting)
Now let's look at the variables we prepared in the previous part. I want to see id there is any correlation between skills.
Currently I expect that there is in fact strong correlation between most skills like, control, shooting, passing, generally because better player will have all detailed stats higher than p[layers that are worse overall. However, specific skills like Defending and Goalkeeping will not be correlated with the rest, since they are very specific. For example, any Goalkeeper will have much higher "Goalkeeping" rating than any other position, conversly he will have much lower Speed or Control compared to other positions.
As in the previous example we first create a graph using the express tool. Then we ask to display it with `.show()`:
```python
fig_two = px.scatter_matrix(combined_columns_data,
dimensions=['speed','passing','physical','control','defending','skill', 'shooting'],
color="position")
fig_two.show()
```
Here is the result:

As expected, Goalkeepers (the purple color) are a separate group in all GK graphs. Additionally, LB, RB, and CB all form a cluster on the "Defending" graphs.
These detailed variables will be useful to differentiate between the group pf people whos overall is around 70 (mean), which is the most dense area.
## Visualizing key metrics
The main features of our data is the value and skill. Let's see how one affects the other a little closer.
Again, plotly let's us do that pretty simply:
```python
fig = px.scatter(combined_columns_data, y="value", x="overall", color="age")
fig.show()
```

Interestingly, the relationship is exponential and we will probably have to use a polynomial model in the Machine Learning part of the project.
> Note:
I should have separated the dataset into test set and training set before starting the exploration. You should too. We will see how to split your data in the next part.
In the chart above we are displaying 3 metrics: Player Value, Overall Skill Level and Age (color). This is great, we can see that the bottom corner is more of a yellow color which tells us that player of the same level but different skill level have different value, with older being less value, which makes sense. We can try to add another metric: size, by adding a `size` method.
```python
fig = px.scatter(combined_columns_data, y="value", x="overall", color="age", size="skill moves")
fig.show()
```
This does not add any value to the graph as it becomes overloaded with information. Keeping charts simple and easy to read is very important.
## Bonus: Working with separate "Positions"
Now that we looked at the dataset from a high level, let's take a closer look. My experience with FIFA tells me that each position has its own strengths and weaknesses when it comes to skills, which is why I decided to break down our data into chunks for each position (GK, CB, ST, etc.).
One way to do that would be to import all the different csv files we made and make a dataframe for each of them. This is too much writing and too costly for the computer, memore-wise. Instead I will make a function that will create a dataframe on the fly, depending on the position we want.
Here are the steps I have in mind:
1. Create a list of unique names.
2. Create a DataFrame dictionary to store key:value pair of future dataframes, i.e. {"GK":pd.Dataframe})
3. Iterate over the keys in the dictionary to create dataframes with a name DataFrameDict[key], i.e. DataFrameDict["GK"]
```python
#create unique list of names
UniqueNames = combined_columns_data.position.unique()
#create a data frame dictionary to store your data frames
DataFrameDict = {elem : pd.DataFrame for elem in UniqueNames}
for key in DataFrameDict.keys():
DataFrameDict[key] = combined_columns_data[:][combined_columns_data.position == key]
```
With this in place you can perform all of the above visualizations, but only for a position you want. For example, instead of doing
```python
fig = px.scatter(combined_columns_data, y="value", x="overall", color="age")
fig.show()
```
you will now do
```python
fig = px.scatter(DataFrameDict["GK"], y="value", x="overall", color="age")
fig.show()
```
This will output a graph with only Goalkeepers as data points.
## Conclusion
In this post we explored the data exploration with Plotly. Plotly is great and powerful tool making some of visualizations very quick and easy.
Let me be clear, I do not discard other tools like Matplotlib, the father/mother of all visualizations in Python, Bokeh and others. They do have some advantageous and disadvantageous. Plotly takes care of a lot of functionality for you which might be useful for you data exploration project.
We only looked at plotly express package, which is extremely easy to use, but doesn't offer much customization. If you do require some more formatting [plotly go](https://plot.ly/python/) should be used.
In the next post we will look into Scikit-learn and will build a model to predict the value of the player.
If you have any questions or comments, please email me at [me@rasulkireev.com](mailto:me@rasulkireev.com).
---
# Setting up Python virtual environment (for a Django Project)
URL: https://www.rasulkireev.com/django-venv/
Type: tutorial
Date: 2019-08-29
Description: How to set up a virtual environment for your Django Project, or any other Python project, for that matter.
Tags: virtualenvironment, python, django, project, venv
Content:
For this tutorial I will assume you have a little experience working with the command line tools like "Terminal". If you don't I promise to make a post or two about that, meanwhile you can check those two out:
* [Mac](https://www.dummies.com/computers/macs/mac-operating-systems/how-to-use-basic-unix-commands-to-work-in-terminal-on-your-mac/)
* [Windows](https://www.cs.princeton.edu/courses/archive/spr05/cos126/cmd-prompt.html)
## Setting up the environment
_The first steps is here for people who don't yet have a folder where they keep all their projects._
### 1. In the Terminal or Command Prompt (cmd) create a directory (folder) where you will keep your projects and websites.
```
mkdir sites
cd sites
```
`mkdir` will create a new directory and `cd` will move into into that directory. You can call your folder whatever you want.
### 2. Creating a project folder
Once in the `sites` directory you will need run `mkdir` again to make a folder specifically for your project
```
mkdir {projectname}
cd {projectname}
```
### 3. Setting up the environment
Before we initiate a django project we need to setup a python virtual environment. This will make sure that whatever machine we are working with (Mac vs. Windows, for example) the website will work by setting up the same packages and libraries.
_Generally, having a virtual environment for each one of your projects, whether Web Dev, Data Science or General Programming, is now a standard. For one, this allows other people to help you with you projects and generally makes eveything easier in the future._
For this step you need to have Python installed. I am not going to go over the installation process and will assume you have a working version of Python 3.6 or above. To create a virtual environment python has a built-in package `venv`.
```python
# If you have multiple python versions on you computer
python3 -m venv venv
# If you have python 3.6+ installed only
python -m venv venv
```
Here the first `venv` refers to the program we are running. The second `venv` is referring to the name I gave my virtual environment. So, instead of a second `venv` you can type in whatever you want. I find the word venv pretty easy to rememeber and to type up, so that's how I usually call my virtual environments.
Let the prgoram run. Congrats you now have created a virtual environment! You can check that everything worked by checking the contents of the folder. You can do that by navigating in `Finder` or `Windows Explorer` or even better just by typing `ls` to the command prompt, this will list out all the directories in your project folder.
All there is left to do is to activate the environment to start the working process.
On Mac to activate and deactivate the virtual environment you would use the following command:
```
# to activate
source venv/bin/activate
# to deactivate
deactivate
```
On Windows:
```
# to activate
.\venv\scripts\activate.bat
# to deactivate
deactivate
```
When your virtual environemnt is active you will see the name of the virtual environment within bracket to the left of the command line. Like so:

### 4. Create a Django project
Finally, we can create the project. Once you make sure your venv is activated, all you have to do is:
```python
# to install django within your virtual environment
pip install django
# to actually create a project
django-admin startproject {name of your peroject} .
```
Note the **dot** in the end of the command. You actually need to add it too. This will make sure that the project is created within the directory you have already created.
One last step:
```python
python manage.py runserver
```
This will start server with your Django project, If you go to [http://127.0.0.1:8000](http://127.0.0.1:8000) in your browser, you will see a welcome to Django screen.
**Congrats!** You can now develop your site with Django freely, which is a whole another topic of discussion.
If you have any questions please let me know at one of the social links on the top left.
---
# First Javascript Experience
URL: https://www.rasulkireev.com/first-javascript-experience/
Type: tutorial
Date: 2019-08-28
Description: Sharing my first epxerience with Javascript. Had to add some action to my new web app.
Tags: webapp, javascript, html
Content:
I have been reading a [JavaScript book](https://amzn.to/2KPIsoQ) for a couple of months now... I didn't learn much, unfortunately. I know this is becasue all reading need to be supplemented with some sorts of exercise, preferrably real world projects. Luckily, I have an idea for a project that will require some JavaSript.
So, instead of reading a book, I will start by formulating an idea and Googling it (or rather StackOverflowing it). In this post I will go over my first (baby) steps in JavaScript.
As far as I understand you can either write some JavaScrip (JS) directly in the html code, like so (the example is from [W3Schoools](https://www.w3schools.com/js/default.asp):
```
My First JavaScript
```
This will display the current time, after you click the button.
Another way is to create a separate javascript file and reference it in the html code, like so:
```
```
Usually, links scripts are referenced in the end of the `` tag.
I am going to resort to the second option, since I feel like this is much cleaner and minimal.
So, what do I need? What is the first thing I am going to ateempt first?
## Creating a form/input field with a press of a button
After googling for a bit I found that the way to create new html using javascript is with the function `createElement`. So this is what I am going to write in my main.js:
```javascript
function inputJournal() {
var z = document.createElement("FORM");
z.setAttribute("id", "myForm");
document.getElementById("new-journal").appendChild(z);
var x = document.createElement("INPUT");
x.setAttribute("type", "text");
x.setAttribute("value", "Hello World!");
x.setAttribute("id", "new-journal-name");
document.getElementById("myForm").appendChild(x);
var y = document.createElement("A");
y.setAttribute("id", "add-button");
var t = document.createTextNode("Add");
y.appendChild(t);
document.getElementById("myForm").appendChild(y);
}
```
Let's go over what happened here:
* I called my function "inputJournal"
* created a variable z, which is a `