Adding loading items into database as part of this crate
This commit is contained in:
parent
469b839993
commit
66de1ffa36
47 changed files with 3734 additions and 39 deletions
34
Cargo.lock
generated
34
Cargo.lock
generated
|
|
@ -6,11 +6,10 @@ version = 3
|
||||||
name = "achubb_backend"
|
name = "achubb_backend"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"achubb_database",
|
|
||||||
"anyhow",
|
|
||||||
"askama",
|
"askama",
|
||||||
"axum",
|
"axum",
|
||||||
"bb8",
|
"bb8",
|
||||||
|
"clap",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"serde",
|
"serde",
|
||||||
"sqlx",
|
"sqlx",
|
||||||
|
|
@ -22,19 +21,6 @@ dependencies = [
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "achubb_database"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"clap",
|
|
||||||
"futures-util",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"sqlx",
|
|
||||||
"time",
|
|
||||||
"tokio",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "addr2line"
|
name = "addr2line"
|
||||||
version = "0.21.0"
|
version = "0.21.0"
|
||||||
|
|
@ -127,12 +113,6 @@ dependencies = [
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "anyhow"
|
|
||||||
version = "1.0.82"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "askama"
|
name = "askama"
|
||||||
version = "0.12.1"
|
version = "0.12.1"
|
||||||
|
|
@ -351,9 +331,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "4.5.4"
|
version = "4.5.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
|
checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap_builder",
|
"clap_builder",
|
||||||
"clap_derive",
|
"clap_derive",
|
||||||
|
|
@ -361,9 +341,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_builder"
|
name = "clap_builder"
|
||||||
version = "4.5.2"
|
version = "4.5.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
|
checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anstream",
|
"anstream",
|
||||||
"anstyle",
|
"anstyle",
|
||||||
|
|
@ -373,9 +353,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_derive"
|
name = "clap_derive"
|
||||||
version = "4.5.4"
|
version = "4.5.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
|
checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"heck 0.5.0",
|
"heck 0.5.0",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,10 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
achubb_database = { path = "../achubb_database" }
|
|
||||||
anyhow = "1.0.75"
|
|
||||||
askama = "0.12.1"
|
askama = "0.12.1"
|
||||||
axum = "0.6"
|
axum = "0.6"
|
||||||
bb8 = "0.8.3"
|
bb8 = "0.8.3"
|
||||||
|
clap = { version = "4.5.13", features = ["derive"] }
|
||||||
futures-util = "0.3.30"
|
futures-util = "0.3.30"
|
||||||
serde = { version = "1.0.197", features = ["derive"] }
|
serde = { version = "1.0.197", features = ["derive"] }
|
||||||
sqlx = {version = "0.7.4", features = ["runtime-tokio-rustls", "postgres", "time", "macros"]}
|
sqlx = {version = "0.7.4", features = ["runtime-tokio-rustls", "postgres", "time", "macros"]}
|
||||||
|
|
|
||||||
108
blog/AMindForNumbers.html
Executable file
108
blog/AMindForNumbers.html
Executable file
|
|
@ -0,0 +1,108 @@
|
||||||
|
id: mfn
|
||||||
|
title: A Mind for Numbers
|
||||||
|
previous: sdl
|
||||||
|
next: afh
|
||||||
|
date: 2021-02-05
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
A Mind for Numbers
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
For my first look at a specific book I have decided on A Mind for Numbers by Barbara Oakley.
|
||||||
|
Partially because it is a very good explanation of ideas found elsewhere and mostly because it is the first book on the subject I read and my most used by far.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Before I dove deeply into the subject of productivity (in this case specifically learning optimization) I was given this book.
|
||||||
|
I was still in my undergrad studying chemistry and this book helped immensely.
|
||||||
|
It was a few years before I started down the rabbit hole I find myself in today.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A Mind for Numbers specifically talks about learning math and science, however, the learning techniques help with any subject.
|
||||||
|
There is a public perception of math and science being difficult so that people think that they are just not good at it and give up.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
How to study is unfortunately not taught at any point in regular schooling and students are left to just figure it out.
|
||||||
|
This is a huge oversight and it scares me to think how many hours have been spent in futile frustration because one was never taught how to properly study.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The way that most students study is moderately effective at best and, at worst, completely ineffective over the long term.
|
||||||
|
Repeated reading and rote memorization does little to promote understanding.
|
||||||
|
Cramming may help with the test the next day but the material won’t be retained for longer than that if it even makes it to the test.
|
||||||
|
The reason that re reading material over and over is not helpful is that it continually reinforces the idea in short term memory and makes you feel like you know it.
|
||||||
|
Stop thinking about it, and most of it will fly away.
|
||||||
|
Learning retention takes time, dedication and perseverance.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Working memory is limited to somewhere between 4 and 7 items depending on the topic and the individual.
|
||||||
|
Understanding an idea or concept deeply reduces the strain on this relatively limited resource.
|
||||||
|
Unfortunately the times when we most feel like giving up entirely are often on the edge of the greatest shift in understanding.
|
||||||
|
Learning is not a linear process, it can be characterized more like steps with rapid leaps in understanding and periods of seeming stagnation.
|
||||||
|
Sometimes new information we are taking in requires our brain to restructure our understanding of the world creating the feeling of hitting a wall when trying to learn new information.
|
||||||
|
Once this reorganization is complete we make that jump in understanding.
|
||||||
|
‘Chunking’ occurs when ideas coalesce together into a single concept.
|
||||||
|
You have to understand the relationship between ideas to chunk them together.
|
||||||
|
This is why just memorizing information won’t lead to chunks and makes recall difficult.
|
||||||
|
With a chunk you no longer have to remember each idea individually, experts can’t hold more in their working memory at a time but appear to due to the library of large and complex chunks they have built up over time.
|
||||||
|
They work with the concepts as a whole rather than individual ideas.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The brain has two modes of thinking, often referred to as focussed and diffuse.
|
||||||
|
Focussed thinking is when we direct our attention at an idea.
|
||||||
|
It gets the idea into our working memory in order to solve problems, however it limits our ability to connect various ideas.
|
||||||
|
This is where diffuse mode comes in.
|
||||||
|
When we are not directly focussing on anything our brain will keep working on the problem outside of our awareness.
|
||||||
|
Without the laser-like focus our brain draws on knowledge from all sorts of areas and tests out the fit with other ideas, forming relationships and eventually chunks.
|
||||||
|
This helps link our knowledge together, solving the problem many of us face when we think harder and harder, staying stuck on the same solution that is not working.
|
||||||
|
Alternating between these two modes of thinking is the key to understanding.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
When you are studying or working on a problem and you get stuck; take a break.
|
||||||
|
What you do during your break is important.
|
||||||
|
Stick to activities that don’t grab your attention and pull you into focussed thinking on another subject.
|
||||||
|
Go for a walk, hit the gym, play with a dog or anything else that does not suck in your attention.
|
||||||
|
Things like video games or the internet will pull your attention away from the problem but focusses your thinking and will not let you reach the diffuse state you need.
|
||||||
|
The break should be long enough that you are no longer actively thinking about the problem, usually a couple hours.
|
||||||
|
When you come back to it you will often find that you leap ahead in your progress and understand the concept more deeply.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Long term memory is reinforced by repeatedly recalling information.
|
||||||
|
This learning tool is ‘spaced repetition’.
|
||||||
|
You have to wait long enough for it to move from your working memory, then come back to it the next day and try to remember it without looking at your text.
|
||||||
|
Only use the text to confirm if you are right and correct if you are wrong.
|
||||||
|
When first learning a new subject you want to revisit it daily, then space out the repetition more and more.
|
||||||
|
In order to keep the new information in your long term memory you need to revisit it periodically to reinforce the memory.
|
||||||
|
As the connections get stronger you need to revisit it less and less.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
‘Interleaving’ is a tool of learning that involves alternating between two different but somewhat related topics in your studying.
|
||||||
|
This is opposed to doing one thing over and over until you feel that you get it.
|
||||||
|
Interleaving helps with memory because each time you move back to a topic you have to pull all the relevant information from your long term memory back into your working memory.
|
||||||
|
It works like spaced repetition explained above but within a single study session.
|
||||||
|
The new topic helps get the old one out of your working memory in less time.
|
||||||
|
This helps understanding by increasing your exposure to different types of problems.
|
||||||
|
Understanding learning techniques allows you to know when to pull a particular tool out of your toolbox, and how they can fit together.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A good test to see if you understand a subject (and a great tool for studying) to explain it to someone with little to no background in the field.
|
||||||
|
If you can explain it in a way that they can understand you have a very good grasp of it yourself.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Studying for memory and understanding requires spreading out the same amount of studying time across a much longer period so that the information can be assimilated.
|
||||||
|
This makes procrastination the largest enemy of learning.
|
||||||
|
Even if it is just for a short time each day you will retain more than trying to cram the night before a test.
|
||||||
|
Periods of intense focus (without distraction) are needed to properly learn and understand anything.
|
||||||
|
This works along with the breaks to form the connections and incorporate the new information into your understanding of the world.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A Mind for Numbers also covers test taking, overcoming procrastination, why we procrastinate, the importance of sleep in learning and various memory tricks such as: visualization and the famous “memory palace” technique.
|
||||||
|
It goes into depth on all these subjects and has very helpful diagrams and illustrations that help understanding.
|
||||||
|
Of all the books on learning that I have read I think it is the most beginner friendly with helpful suggestions and exercises as opposed to just giving the reader the information.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Books like this do their part to fix the problem of studying faced by students everywhere.
|
||||||
|
The more that we know of and use them the better off we will all be.
|
||||||
|
So if this sounds interesting to you take a look at the book A Mind for Numbers and save on time and frustration when learning something new.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thank you for reading.
|
||||||
|
</p>
|
||||||
135
blog/AskingForHelp.html
Executable file
135
blog/AskingForHelp.html
Executable file
|
|
@ -0,0 +1,135 @@
|
||||||
|
id: afh
|
||||||
|
title: Asking for Help
|
||||||
|
previous: mfn
|
||||||
|
next: ewt
|
||||||
|
date: 2021-02-12
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Asking for Help
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
In life, it is generally advisable to focus on our strengths and do our best to avoid our weaknesses.
|
||||||
|
Focusing on strengths gives us the greatest return for our investment both in time and effort.
|
||||||
|
Sometimes though, there is no option but to tackle a weakness when; it can't be worked around and is greatly hindering the rest of your work.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This is a difficult post for me to write.
|
||||||
|
Like most people, I am very reluctant to admit my failures.
|
||||||
|
It is very unpleasant to decide that enough is enough and I need to do something about it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am extremely stubborn, that can be good, can be bad, but it is at its worst when I convince myself that I need to do everything on my own.
|
||||||
|
I have a history of being unwilling to ask for help.
|
||||||
|
I can remember having trouble with history in high school and having to be forced by my parents to go talk to the teacher to get caught up.
|
||||||
|
For some reason I have always felt that having to ask for help is failure.
|
||||||
|
I know in my head that it is not but, the feeling still remains.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This has resulted in me spending extra time and effort on things that would have been significantly sped up by reaching out and getting other input.
|
||||||
|
Honestly I think the worst case of this in terms of long term cost has been in the last few years.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There were a couple of points during my undergrad in chemistry that I wanted to teach myself how to code.
|
||||||
|
I bought a book and took a couple of runs at learning C.
|
||||||
|
Those that program know that C is not the most beginner friendly language and that was not helped at all by the fact that I was determined to learn it myself.
|
||||||
|
I failed twice due to the frustration of stepping back for a few weeks when school got busy and having to almost start over each time.
|
||||||
|
I left programming until after I graduated and got back into it with python as soon as I finished.
|
||||||
|
I wonder how much further I would have been at that point had I asked the questions I had rather than stopping.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Python is much easier to work with and using a couple textbooks with projects and practice problems did give me a decent grounding and I was able to get good enough to really enjoy the process.
|
||||||
|
As anyone who has learned a new skill will tell you there is often a period of rapid improvement followed by running into a wall.
|
||||||
|
It took me maybe 6 months of playing around to run into that wall.
|
||||||
|
Instead of looking for help from those with more experience I decided to pursue school again.
|
||||||
|
This may sound like the right path to take and it is taking me where I want to go but it is both expensive and time consuming.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have nothing against school, I think it is a fantastic experience and (especially for chemistry) was needed if I wanted to work in the field.
|
||||||
|
It also forced me to improve my work ethic.
|
||||||
|
I would likely make the same choice again (though knowing where I want to go career wise now I might just have gone with computer science right away).
|
||||||
|
For my current Master’s degree and the prerequisites I needed, I don’t think I did it for the right reasons.
|
||||||
|
I had the right work ethic, I knew academia and think I had learned the lessons that could only be learned through school.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
From the beginning of taking the prerequisites to the end of my Master’s degree I will have spent 3 years and $30,000.
|
||||||
|
This is for online school where I am mostly watching educational videos and reading class notes and textbooks.
|
||||||
|
All things I could have done at home myself.
|
||||||
|
What I was looking for was a little guidance to help me know what I needed to learn as opposed to just stumbling blindly.
|
||||||
|
How else could I have gotten this guidance? I could have asked.
|
||||||
|
|
||||||
|
I have friends that are software developers, there are whole subreddits dedicated to helping people learn how to program.
|
||||||
|
Some users go as far as to personally chat with and mentor those of us that are learning.
|
||||||
|
Often with courses, I work ahead and then have to wait for more to be uploaded or for the next semester to start.
|
||||||
|
Even if I worked no faster but filled that time with more learning and practice supported by others, I would likely be at the same point now that I will be at the end of the degree.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I do wonder how much further I would be having learned the material this way instead.
|
||||||
|
Would I have a job in the field already? What would I do with an extra $30,000 in my pocket? Within the closed environment of myself I try to do everything as efficiently as possible.
|
||||||
|
But I ignored and have never taken advantage of the fact that being able to work with others is a force multiplier.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This idea is explored extremely well in a conversation between two characters in one of my favourite fantasy books.
|
||||||
|
In The Wise Man’s Fear two characters have a conversation.
|
||||||
|
One is the lord of a large portion of a kingdom (think one step down from king type).
|
||||||
|
The other is a poor boy who is acting as minstrel/assistant who has made it to that point purely by his own skill and tenacity.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The conversation centers around the difference between granted and inherent power and which is the greatest of the two.
|
||||||
|
Inherent power is within a person, things like the power of your mind or the strength of your body fall into this category.
|
||||||
|
Inherent power can’t be taken away from you short of actual physical or mental harm but has a sharp limit.
|
||||||
|
There is only so much one person can know, do and only so strong they can make their body.
|
||||||
|
Granted power is the power granted to you though loyalty, cooperation, employment etc.
|
||||||
|
It involves working with others so that the collective outcome is greater than that of any single member of the group.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Obviously the minstrel, who has only relied on himself for his entire life, believes that inherent power is greater.
|
||||||
|
It is the safer of the two because it can’t be so quickly taken away.
|
||||||
|
If you are always fearing loss then that might make sense.
|
||||||
|
The lord is on the other side and states that granted power is greater due to its lack of limit.
|
||||||
|
The example he uses is that even if you were very strong, in order to be stronger he could just go and get three friends to help him.
|
||||||
|
There is no way that one person, even being extremely strong could be stronger than four.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am not completely in one camp or another, there are obviously times when you can only rely on yourself but those are rarer and rarer these days.
|
||||||
|
A balance of both relying on yourself and working with others is the ideal.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
As I stated at the beginning it often pays off the most to capitalize on your strengths and try to avoid your weaknesses.
|
||||||
|
This is only possible when you can cooperate with others who can cover for your weaknesses with their own strengths.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
When working in a group setting on something that is not my own there is no sign of my aversion to ask for help.
|
||||||
|
But for my personal challenges it comes in full force.
|
||||||
|
In my own programming projects and learning I have not taken advantage of the fantastic community resources available online.
|
||||||
|
However, In the past week I have: reached out, gotten help and project suggestions on my portfolio, found someone to try and do a project with cooperatively and, started to rekindle relationships with friends and acquaintances that have fallen away as I have moved around and circumstances have changed.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am quite an introverted and solitary person.
|
||||||
|
I have little network outside of family and a couple of friends.
|
||||||
|
This makes finding opportunities and getting feedback much more difficult.
|
||||||
|
Fixing this is one way of my making this year more about taking action as opposed to pure learning.
|
||||||
|
So much of our success is dependent on others.
|
||||||
|
The people that we know and care for, and who care for us, play such a huge role in our lives.
|
||||||
|
This is both professionally and personally true.
|
||||||
|
Making more friends and getting to know more people is always valuable and makes life better by being able to share it, get help and most importantly, being able to help others.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I feel like this last week has upped my productivity immensely and is one of the best investments of time that I have made.
|
||||||
|
Productivity is so often about finding the bottlenecks, the individual things that are limiting us the most, and improving them.
|
||||||
|
System optimization for any sort of system follows this same rule.
|
||||||
|
A chemical reaction is limited in speed by the slowest step and that is where you want to focus your efforts to speed it up.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The bottleneck in my life is definitely social.
|
||||||
|
I need to open up more and invest more time in reaching out from my few core relationships to build new ones.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Your problem may be something completely different, but everyone has one.
|
||||||
|
What is your bottleneck and how might you be able to do something about it?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
|
|
||||||
159
blog/DeepWork.html
Executable file
159
blog/DeepWork.html
Executable file
|
|
@ -0,0 +1,159 @@
|
||||||
|
id: deepwork
|
||||||
|
title: Deep Work
|
||||||
|
previous: ewt
|
||||||
|
next: habits
|
||||||
|
date: 2021-02-27
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Deep Work
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
So often I try to do a lot of things at the same time.
|
||||||
|
Answering emails while working, putting on a movie or show while studying, or even just bouncing rapidly between a few productive tasks. We refer to this as multitasking and feel that it makes us more productive. But what this really makes us is busy and little else.
|
||||||
|
We refer to this as multitasking and feel that it makes us more productive.
|
||||||
|
But what this really makes us is busy and little else.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In his book Deep Work Cal Newport outlines the cost that this sort of thing has on knowledge work, in particular.
|
||||||
|
Whether it is; writing a book, running experiments in a lab or any sort of cognitive task in between, the bane of actual productivity is distraction.
|
||||||
|
Back in the days before global connectivity and the internet, it was easier to make time for for long periods of uninterrupted work.
|
||||||
|
Writing by hand on paper is an inherently solitary activity that offers no direct path to doing anything else.
|
||||||
|
As I am writing this I notice again and again that I am struggling not to pick up and check my phone.
|
||||||
|
Is there an email or message that has come in since I last checked? Anything new and interesting on Reddit or Youtube? These thoughts constantly intrude and pull me out of writing.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have been having some difficulties with writing this week and that makes those urges doubly present and more difficult to ignore.
|
||||||
|
It is often a problem that I am not aware of and results in a fairly significant cost in the long run.
|
||||||
|
The internet is a fantastic thing but this is one area where it works against us.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Deep work is a term used by Cal Newport and he defines it as: “Professional activities performed in a state of distraction-free concentration that push your cognitive capabilities to their limit.
|
||||||
|
These efforts create new value, improve your skill, and are hard to replicate.” I am sure that everyone has experienced this feeling.
|
||||||
|
you get really absorbed by a challenge or project and have no desire to do anything else for a long period of time.
|
||||||
|
The idea of flow is often used to convey that particular feeling I mentioned above and while deep work will often increases the amount of time that you spend in a flow state that is not all that it is.
|
||||||
|
Getting a stretch like this often feels somewhat like winning the lottery.
|
||||||
|
In his book Cal outlines methods for learning this skill and applying it on a regular basis.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Cal argues that as distractions become more present and shallow work takes up more and more of our working time that the ability to work deeply is becoming more and more valuable and will help you stand out professionally.
|
||||||
|
Shallow work is non-cognitively demanding tasks, often performed while distracted.
|
||||||
|
These efforts tend to not create much new value in the world and are easy to replicate.
|
||||||
|
He is very clear however that the shallow work needs its time as well.
|
||||||
|
Those tasks need to get done but they are there to support the production that comes from deep work and can’t replace it.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
At its core deep work is developing the ability to focus on a single task for an extended period of time.
|
||||||
|
Cal Newport outlines four rules that he uses to help maximize the amount of this sort of time that he has.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
Rule 1: Work Deeply
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
This section covers adding routines and rituals to help minimize the willpower it takes to transition into and maintain a state of deep work.
|
||||||
|
We can train ourselves to react in certain ways that will create a ritual that tells our mind it is time to work deeply.
|
||||||
|
There is no one size fits all approach to this.
|
||||||
|
you will need to develop your own ritual.
|
||||||
|
He uses a couple questions to help figure out your routine.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Where you will work and for how long? Time limits help keep the process from feeling endless.
|
||||||
|
Having a dedicated space you keep free of distractions will help you get into your work.
|
||||||
|
I don’t have a dedicated office but I do have a desk (which unfortunately I also use when playing games on my computer), I try to make it tidy and put easy distractions out of arm's reach like my phone.
|
||||||
|
Ways to deal with not having a set space come up in the later questions.
|
||||||
|
I generally try and work for 1-2 hours at a time.
|
||||||
|
I find that the first half hour or so is picking up steam and getting into whatever mental space I need to be in for the task at hand.
|
||||||
|
This means that sessions of less than an hour are mostly preparation and little actual work.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
How will you work once you start? Set the bounds for your work so that you don’t go off topic.
|
||||||
|
Often it is easy to stray into something not directly related to what you are trying to accomplish without it being as obvious a distraction as opening youtube or checking your phone.
|
||||||
|
Will you let yourself use the internet? fidget toys? what books will you open?, what programs are you allowed to use?.
|
||||||
|
Setting these rules beforehand keeps you from having to make these decisions while you work.
|
||||||
|
As a programmer I am almost always working on my computer and often need to look up a specific syntax or function.
|
||||||
|
As I get more proficient this will be needed less but for now I use the internet often.
|
||||||
|
I limit myself to using google only for looking up problems that I can’t find the answer to in a textbook and don’t have any game or chat apps open while I work (when I am doing it properly).
|
||||||
|
I do keep a fidget cube on my desk as I find the urge to grab my phone almost overwhelming at times and it is something much less distracting to grab instead though I am trying to wean myself off of that as well.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
How will you support your work? You need to be comfortable and ready to put in the effort that this sort of work requires.
|
||||||
|
I take a five minute break every half hour to stretch my legs and move around a bit.
|
||||||
|
I also like to have a cup of tea and avoid going into a work session hungry or tired.
|
||||||
|
I also use music.
|
||||||
|
This may seem counter intuitive, but blocking outside noises is useful.
|
||||||
|
My work playlist is mostly the Glitch Mob.
|
||||||
|
I find that high energy but not necessarily complex music works best especially not having vocals is key for me.
|
||||||
|
I also only listen to them while working and therefore I have trained myself that when the Glitch Mob is playing it is time to work.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
Rule 2: Embrace Boredom
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
You can’t avoid distractions while you are working and succumb to them everywhere else in life.
|
||||||
|
Our mind develops habits and if we are going to break them we have to work at it.
|
||||||
|
Getting used to being bored at times is practice at breaking the habit of constant distraction outside of work time.
|
||||||
|
Schedule the time that you are allowed to take advantage of things like social media that have a large temptation to distract.
|
||||||
|
You can still enjoy them without constantly switching activities and being distracted.
|
||||||
|
Resisting impulses is in and of itself an exercise in concentration.
|
||||||
|
This lets you focus completely on developing that skill by practicing and accepting being bored without also trying to get meaningful work done at the same time.
|
||||||
|
Scheduling internet use is helpful for this.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Boredom is something that I struggle with a lot.
|
||||||
|
Reading, listening to a podcast, or just sitting and thinking is often interrupted by grabbing my phone or some other distraction.
|
||||||
|
Walking outside with devices in my backpack as opposed to my pockets is helpful and having something else to grab from my pocket instead of my phone also helps.
|
||||||
|
It is something that I continue to practice.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
Rule 3: Quit Social Media
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
Social media is often the vehicle for a lot of distraction.
|
||||||
|
This does not mean that there is no use for social media at all.
|
||||||
|
It is a great tool and can be used to great effect but it also comes with a cost.
|
||||||
|
Carefully analysing what platforms you use, why you use them, and if the benefits outweigh the costs is something that we don’t often do.
|
||||||
|
The different platforms are all different tools.
|
||||||
|
Just like every job does not need a table saw, not every task needs specific social media or any at all.
|
||||||
|
Find the ones that concretely help what you are trying to do and avoid the rest.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I use Reddit but try to limit myself to my subscribed subreddits that contain targeted information and conversations for me.
|
||||||
|
Linkedin is great for professional networking.
|
||||||
|
I feel that the benefits from these two outweigh the cost, though there are times that I will take a break from them when they are starting to pull at my attention.
|
||||||
|
When in doubt, take a break for a few weeks, to see if your life is improved or lessened by not having that particular platform.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
Rule 4: Drain the Shallows
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
This is where managing the shallow work comes in.
|
||||||
|
When it dominates a lot of work time it costs a lot in productivity.
|
||||||
|
Try to batch shallow work together so that it is not a constant pull on your attention.
|
||||||
|
Cut out those tasks that are not actually providing a benefit.
|
||||||
|
Check your email only at set times of the day and make sure that your replies preemptively answer some possible questions to reduce the length of email chains.
|
||||||
|
Make yourself a little harder to reach so that only people who actually need to contact you take the time to get through.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I check email twice a day, once in the morning before I get to work, and once in the afternoon before I finish up for the day.
|
||||||
|
This early in my career I think it is valuable to be accessible.
|
||||||
|
I need to build a network and gain contacts and so do not make myself harder to contact but that is a conscious choice.
|
||||||
|
I do take the time to try and craft emails and text messages to minimize back and forth and save time as a whole.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I can see the benefits Deep Work offers but I have certainly not mastered it yet.
|
||||||
|
I find that I have periods where I feel that I am doing really well and then fall off the wagon for a few days or even a week.
|
||||||
|
It does get easier the more that you do it
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Deep Work is a very useful book and one of the ones that I return to the most often.
|
||||||
|
It is a skill that is very rare today and is well worth developing.
|
||||||
|
I certainly advise picking up a copy and giving it a read if you want to give yourself an edge in productivity.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
68
blog/DisciplineAndMotivation.html
Executable file
68
blog/DisciplineAndMotivation.html
Executable file
|
|
@ -0,0 +1,68 @@
|
||||||
|
id: dm
|
||||||
|
title: Discipline and Motivation
|
||||||
|
previous: llf
|
||||||
|
next: wgl
|
||||||
|
date: 2021-03-20
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Discipline and Motivation
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
Motivation is fantastic.
|
||||||
|
I can rarely get as much done as when I am fully engaged and want nothing more than to keep chugging.
|
||||||
|
When I get excited, doing nothing just does not seem like an option.
|
||||||
|
If you get hit with that feeling take full advantage of it.
|
||||||
|
The problem is that days like that are rare.
|
||||||
|
It depends on so many things and some luck.That means that relying on motivation for consistent productivity is pretty much relying on chance.
|
||||||
|
I do my best to think of times like that as a bonus.
|
||||||
|
Something extra that bumps me a little further forward then I had planned.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I picked this topic this week because I am having trouble writing.
|
||||||
|
There is a fair bit going on in my life at the moment and so it is more work than usual to sit down and write.
|
||||||
|
This is definitely not my best post, I am pretty stuck, but just going through the motions is still worth something.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So it might be short this week but it is important to know that everyone runs into blocks and has a rough time.
|
||||||
|
We might not be able to do everything at our best.
|
||||||
|
It is very important to still do as much as we can.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Discipline is motivation’s much less fun but much more reliable partner, it is also what we need to turn to when motivation is lacking.
|
||||||
|
Things need to be done every day, and it is surprising how much we can get done by doing a little at a time.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Jocko Willink has a good guidebook that is characteristically titled Discipline Equals Freedom.
|
||||||
|
It is a collection of thoughts on the subject and includes some actions to take to use as a baseline.
|
||||||
|
It is true that the more disciplined you are in an area the more freedom you often have in that same area.
|
||||||
|
Disciplined spending plans result in financial freedom, disciplined exercise routines result in physical freedom etc.
|
||||||
|
It is also very true that even when we are feeling off it is important to try anyway.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Now that I am getting into writing this is flowing much more easily.
|
||||||
|
Often getting started is the hardest part when I am not feeling it.
|
||||||
|
It reminds me a lot of the times when I was younger and did not want to go to gymnastics at times.
|
||||||
|
My parents would make me go and start the class.
|
||||||
|
It was never the case that once I was a half hour into the class that I still wanted to go home.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
More than any other thing, I have found that, discipline is needed for habit formation.
|
||||||
|
Over time the repetition builds (or breaks) habits.
|
||||||
|
No matter how excited you are to start something there are always going to be bumps.
|
||||||
|
Times when you don’t want, or can’t manage to follow through.
|
||||||
|
Habit formation is dependent on regular repetition more than anything else.
|
||||||
|
When designing your new habit you want to make it as easy as possible to minimize the amount of discipline you need.
|
||||||
|
It is impossible to completely eliminate it though.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Discipline is never easy, but the more you use it the easier it gets.
|
||||||
|
It makes life easier in the long run.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: 11h 34m
|
||||||
|
</p>
|
||||||
98
blog/DoingMoreWithMyIdeas.html
Executable file
98
blog/DoingMoreWithMyIdeas.html
Executable file
|
|
@ -0,0 +1,98 @@
|
||||||
|
id: dmwi
|
||||||
|
title: Doing more with my Ideas
|
||||||
|
previous: wgl
|
||||||
|
next: ile
|
||||||
|
date: 2021-04-10
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Doing more with my Ideas
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
It seems that a lot of very deep thought has come from conversations lately.
|
||||||
|
Last week was “why” and this week was a less philosophical and more practical question.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Walks are amazing.
|
||||||
|
When I am alone they are amazing for thinking, and with company they are a perfect time to have a great conversation.
|
||||||
|
I don’t have my phone or any other distractions out while walking (except for music) and that gets put away when I have company.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So the other day on a walk with my girlfriend we were talking and she asked what the purpose of the idea generation that I do is.
|
||||||
|
That is: I try to come up with 10 ideas a day.
|
||||||
|
The question was not really about the thought exercise itself, but what I want to do with that skill I am training.
|
||||||
|
My initial answer was that I wanted to be good at generating ideas of course, but that was not enough.
|
||||||
|
“Why do you want to be good at generating ideas? What do you want to do with those ideas?”.
|
||||||
|
I outlined some very vague things such as starting a business, self employment, making interesting tools, writing etc.
|
||||||
|
Then she asked why I was not doing anything with the hundreds of ideas that I had already come up with over the past few months.
|
||||||
|
Even if most are bad; some must be useful.
|
||||||
|
I couldn’t answer that.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I realized that I had been overlooking the important fact that there could be a lot of value in the mess of ideas I had already come up with.
|
||||||
|
I was waiting for an idea to feel just right before going after it while forgetting that that sort of expectation is unreasonable.
|
||||||
|
I was only looking at my gut reaction to the ideas without delving any deeper to find the value that was not directly apparent.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This is one reason why it is vitally important to talk with others often.
|
||||||
|
Not only do they provide a differing perspective but the act of expressing an idea will refine it.
|
||||||
|
I have to think of an idea much more clearly when I explain it to someone else than if it is just floating around in my head.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I came to the conclusion that I was losing out on: the value of the ideas themselves and on building other skills that can come from pursuing them further.
|
||||||
|
So I have spent the last week working on a system to help with this.
|
||||||
|
I don’t know exactly how well this experiment will turn out.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
My daily practice (which I have been slacking on) is still generating 10 ideas.
|
||||||
|
The system consists of a program that will provide sequential filters so I can take each idea as far as it merits and practice the further steps to implementation.
|
||||||
|
At each step if I find a roadblock I can’t get through, I can drop the idea there.
|
||||||
|
The program takes care of organization, file creation, and access.
|
||||||
|
This makes working on the ideas as easy as possible.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The system involves four steps after the generation of the idea.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Quick look.
|
||||||
|
Does the idea have merit and is it interesting to me?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Generate a coherent vision of what this idea might look like if it was implemented, what the final stage would actually do.
|
||||||
|
I don’t need specifics here but just articulate what the outcome would be without worrying about how to get there yet.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Develop an actual plan for it.
|
||||||
|
Is it possible? This is the step where I will have to start researching specific methods of implementation and try to coherently plan how it might come about.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Lastly the experimentation step.
|
||||||
|
If an idea makes this far it is something that I can see implementing and am fairly interested in.
|
||||||
|
Here I will develop small scale experiments to actually test the implementation.
|
||||||
|
This is the first point where the idea will have to actually come in contact with the outside world to test its viability.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If the experiments are promising then I can go further.
|
||||||
|
There is no restriction on what the ideas might be.
|
||||||
|
Business ideas, home projects, role playing games, anything is fair game.
|
||||||
|
I am hoping that actually pursuing them will result in a bunch of new and interesting activities and projects.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Yesterday I loaded all of the ideas from the past months into the program and started filtering through the first step.
|
||||||
|
It is quite enjoyable to revisit some of the horrendous ones I came up with.
|
||||||
|
In total there are a little over 1000.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I plan to work through the steps as I have time.
|
||||||
|
My goal is to spend a little time each day working on it.
|
||||||
|
I have several other daily practices I am trying to implement so it is going to be wherever I can fit it in at the moment.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Most of my daily practices have been suggested through books, podcasts etc so this is one of the first experiments that is my own.
|
||||||
|
I am looking forward to seeing how it turns out over the next few months.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: 16h 30m
|
||||||
|
</p>
|
||||||
137
blog/ExercisingWithoutTime.html
Executable file
137
blog/ExercisingWithoutTime.html
Executable file
|
|
@ -0,0 +1,137 @@
|
||||||
|
id: ewt
|
||||||
|
title: Exercising with Little Time
|
||||||
|
previous: afh
|
||||||
|
next: deepwork
|
||||||
|
date: 2021-02-19
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Exercising with Little Time
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
I feel like a lot of my posts are going to mention Tim Ferriss somewhere.
|
||||||
|
He has led me to most of the people that I have studied and talk about.
|
||||||
|
I always think it is good to remember, not only what we have learned but, how we got there.
|
||||||
|
So as he is coming up again today I felt like this might be a good time to give this salute to him.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
When it comes to exercise, the most common issue that I hear is that it takes a lot of time.
|
||||||
|
It certainly can and for a large portion of my life it did.
|
||||||
|
In my teens I was a competitive gymnast.
|
||||||
|
It did not seem at all unusual for me to train for 20+ hours in a week.
|
||||||
|
Once I stopped competing I sort of kept that up.
|
||||||
|
Martial arts class every day, plus adult recreation at the gymnastics centre 2-3 days a week.
|
||||||
|
Sprinkle in some parkour in the evenings and rock climbing here and there.
|
||||||
|
I never gave much thought to the fact that a solid chunk of every day was spent on something athletic.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It resulted in me being in pretty good shape and it works.
|
||||||
|
If you take care not to overtrain then your body is used to it and there is not really much downside physically.
|
||||||
|
The problem that I ran into in my last few years of university was time.
|
||||||
|
I needed more time for school, then I needed more time for work.
|
||||||
|
Working a full day and training so much left me with no time to learn new things or pursue new skills.
|
||||||
|
This is the problem that a lot of us face today, with more and more demands on our time we often take the all or nothing route for exercise.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have not trained at a sport in a few years.
|
||||||
|
I would love to get back into it but again time rears its ugly head.
|
||||||
|
Classes are at specific times on specific days and it is not always possible to work that into my schedule.
|
||||||
|
So I have focussed on general conditioning.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
General conditioning is the act of improving your body without necessarily having a particular goal or sport in mind.
|
||||||
|
It gives you a baseline on which to add skills and sport specific conditioning.
|
||||||
|
It is what a lot of “going to the gym” is composed of.
|
||||||
|
Lifting weights, calisthenics, running.
|
||||||
|
That is unless your sport falls into that category.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I had been so used to training with a lot of specificity that spending hours a day on exercise seemed normal.
|
||||||
|
My first forays into minimal effective training came from trying out the regimens in Tim Ferriss’ 4 hour body.
|
||||||
|
Like all his books, it is a fantastic amalgamation of tips and tricks from all sorts of experts.
|
||||||
|
I did have one problem with it and that was the fact that it had very infrequent workouts (for me).
|
||||||
|
I use training in part to help set the tone for my day and as an integral part of my morning routine.
|
||||||
|
Training 3 times a week just didn’t feel right mentally even if it was working perfectly physically.
|
||||||
|
If you are trying to cut down as much as possible on time and want the best bang for your buck as far as physical benefit, then I certainly suggest taking a look at his book and giving it a try.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It was through a mention in his book and a guest appearance on his podcast that I found Pavel Tsatsouline and his work.
|
||||||
|
I have read a fair few of the books he has written and have been following his programs for a few years now and it is exactly what I was looking for.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Pavel is a strong advocate of minimalism in training.
|
||||||
|
While he has had no shortage of training high level athletes, he has also spent a considerable amount of time training special forces and other military personnel.
|
||||||
|
His “Grease the Groove” methodology is I think the perfect system for daily training that leaves you more energized and ready for the day.
|
||||||
|
The idea is quite simple, if training wipes you out; how are you going to be ready for anything else you need to tackle that day? The point of training is to slowly and methodically build up your fitness without ever pushing so hard that you can’t function.
|
||||||
|
A controlled, and intelligent practice daily is much better in the long term then a few large body destroying workouts and fits perfectly with using it as a part of a daily routine.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I love his books.
|
||||||
|
Some of his books cover only a few exercises but go deep into the science behind their choice and the programming that goes along with them.
|
||||||
|
If you don’t like the long explanations then you can generally get the exercises and programming in a couple of chapters but I like understanding why.
|
||||||
|
He spends a lot of time on progressions and technique for the few exercises in each book and then more time explaining the theory behind it.
|
||||||
|
Most of his practices involve only a handful of exercises and some as few as one or two (yes he has a full practice consisting of a single exercise).
|
||||||
|
This keeps the length of training sessions short and allows them to comfortably fit into even a busy schedule.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I think one of the most useful books for beginners is a collaboration between Pavel and Dan John (another strength coach) called Easy Strength.
|
||||||
|
They focus on general conditioning but also discuss the broad types of conditioning that different sports need and then go into implementation and exercises.
|
||||||
|
The general framework of 5 movements to hit in a training session for their 40 day training plan has been extremely helpful for me.
|
||||||
|
The categories being: a large posterior chain movement, upper body push, upper body pull, full body explosive move and a core exercise.
|
||||||
|
If you want to start and have access to a gym (you will need barbells), I advise taking a look at this fantastic book.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It is only in the last 6 months that I have had regular access to a gym and have been implementing the contents of Easy Strength.
|
||||||
|
Before that I had to make do with what I could have at home.
|
||||||
|
Kettlebells are a fantastically versatile piece of equipment and what I would suggest if you can only have a single piece of equipment other than space.
|
||||||
|
The books that I use the most regularly however are: Kettlebell Simple and Sinister (KSS), The Naked Warrior (NW), and Relax into Stretch (RS).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
KSS is a simple 2 exercise program along with a warmup.The exercises are kettlebell swings and turkish get ups.
|
||||||
|
I still make use of that program almost everyday.
|
||||||
|
It takes about a half hour from start to finish.
|
||||||
|
The book has very in-depth progressions to follow if you are not familiar with the exercises and a system to increase the weight as you get stronger.
|
||||||
|
It is the most compact strength workout I have tried and is very effective.
|
||||||
|
You need a single kettlebell and that is it.
|
||||||
|
If you master this, then his book The Quick and the Dead is a great follow up but I am still working towards it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
NW is a book about body weight training and is also only two exercises.
|
||||||
|
It is hard to build strength beyond a certain point using only body weight.
|
||||||
|
Pavel chooses the pistol squat and one arm pushup to counteract this slightly.
|
||||||
|
They are exercises that take advantage of worse leverage and force one limb to lift your entire body weight.
|
||||||
|
The book focuses a lot on technique so that these exercises require the use of your entire body.
|
||||||
|
He has good progressions that make the moves easier without requiring other exercises as a lead up.
|
||||||
|
Transitioning from one exercise to a harder one can be difficult, the technique is different and often is a large jump in strength required.
|
||||||
|
I find that his slow progression of a single exercise allows finer control over the difficulty.
|
||||||
|
This book is unique in my experience in that he does not ask you to set aside any specific time to train.
|
||||||
|
The exercises are meant to be done throughout the day as you find time and only after you are completely recovered from the previous set.
|
||||||
|
5 pistols per side and 5 one arm pushups per side, that is it.
|
||||||
|
As often as time and your body allow.
|
||||||
|
Just a warning: your co-workers will look at you strangely if you start doing pistol squats at the office.
|
||||||
|
Even so, it still makes a great break from sitting at a desk and can be done anywhere.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
RS is the only book that I have ever read that discusses the theory behind stretching.
|
||||||
|
There are different types of stretching and some require more skill but are more effective.
|
||||||
|
He outlines the dangers of blindly stretching and ways to get more flexibility with less time.
|
||||||
|
He also has a long list of stretches and the muscles they target for you to use and advises how often they should be done.
|
||||||
|
Coming from a gymnastics background stretching was too often the coach pushing you down, which is dangerous.
|
||||||
|
It was eye opening to understand how flexibility works and that there are actually systems in the body that we can take advantage of to increase our flexibility faster than we think and most importantly without injury.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Pavel’s work has been the foundation of my training for a few years now and has made me stronger than I was (while staying as flexible), and freed up a lot of time.
|
||||||
|
I can get a solid practice with little time and if I am super busy I can squeeze it into the spare moments I have during the day.
|
||||||
|
It has also helped me understand how our bodies respond to training and how best to take advantage of that.
|
||||||
|
His work emphasizes longevity and regularity over the all-too-common ‘train till you drop’; and I think promotes better care of your body.
|
||||||
|
I have not had a single day of extreme muscle soreness on his programs.
|
||||||
|
This is in stark contrast to being so sore that I could barely stand from previous training sessions, while providing more of a benefit in terms of strength.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I strongly advise taking a look at his work.
|
||||||
|
It is an endless supply of useful suggestions and information that I think anyone interested in the fundamentals behind physical training should read.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
64
blog/FirstStepsToDigitalIndependence.html
Executable file
64
blog/FirstStepsToDigitalIndependence.html
Executable file
|
|
@ -0,0 +1,64 @@
|
||||||
|
id: fsdi
|
||||||
|
title: First Steps to Digital Independence
|
||||||
|
previous: independence
|
||||||
|
next: wdtg
|
||||||
|
date: 2023-08-28
|
||||||
|
---
|
||||||
|
<h2>First Steps to Digital Independence</h2>
|
||||||
|
<p>
|
||||||
|
It has been in the back of my mind for a while that I would like to have control over my own digital life.
|
||||||
|
I had made this website, keep local backups of my data, but never really went for full independence.
|
||||||
|
Not sure where to start and allowing other things in life to take priority.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Taking the first steps down this road were prompted by listening to
|
||||||
|
Derek Sivers' most recent appearance on <a href="https://tim.blog/2023/04/21/derek-sivers/" target="_blank">Tim Ferriss' podcast</a>.
|
||||||
|
A fantastic conversation overall.
|
||||||
|
The part that stuck out most to me was his quick explanation on what to do to set up a personal server to host things like contacts, calendar, some file storage.
|
||||||
|
I am on Derek's mailing list and just after listening to that got an email that he had written up these <a href="https://sive.rs/ti" target="_blank">instructions</a> for people to follow.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This is fantastic I think, and for a fair portion of the setup it was as simple as following along.
|
||||||
|
For anybody not terribly familiar with any of this I would advise doing exactly as instructed in the post.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I do a lot of my personal programming in Rust.
|
||||||
|
Little tools and things to help with my workflow.
|
||||||
|
I love the language and programs written in it tend to be very fast and lightweight.
|
||||||
|
I knew that I would want to be able to run those on my server so I had to deviate from the instructions.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
OpenBSD is a fantastic operating system, however it does not have native support for Rust in the package repository.
|
||||||
|
Also Rust has a new release every 6 weeks and OpenBSD has a very conservative release and update schedule.
|
||||||
|
This results in an extremely stable, reliable, and secure operating system but one that just does not fit my needs.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Considering that I wanted to keep the server resources to a minimum I decided to go with Arch Linux.
|
||||||
|
Arch is very lightweight and comes packaged with a minimum of programs.
|
||||||
|
Kind of have to set it all up yourself.
|
||||||
|
They have one of the best package repositories I have found for any Linux distro that I have used and have great documentation for everything on their wiki.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
They have a rolling release, so all packages get updates pretty much as soon as they are out which will be great for keeping everything up to date but the price is paid in stability.
|
||||||
|
I am alright making this tradeoff.
|
||||||
|
I think I can work out and fix any issues that may arise when updating.
|
||||||
|
And it will let me run my own programs/automations that I write without any complicated workarounds.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Some of the packages available on Arch are different than OpenBSD so I had to sort out some replacements.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The differences you can see <a href="/projects/archserver">here</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So far I am using it to run my calendar and contacts, some file backups, a personal git server, and this website.
|
||||||
|
I decided not to host my own email, but am using my own url.
|
||||||
|
I am using Fastmail, but am free to move it anywhere else and still maintain the same email address.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It has not really changed my day to day activities much at all.
|
||||||
|
Currently backups are slightly more complex than uploading something to google drive, but git and everything else are just as easy.
|
||||||
|
And I have the peace of mind that these particular components of my digital life are in my control.
|
||||||
|
I also understand them much better having set them up myself.
|
||||||
|
</p>
|
||||||
95
blog/GraduateSchool.html
Executable file
95
blog/GraduateSchool.html
Executable file
|
|
@ -0,0 +1,95 @@
|
||||||
|
id: gs
|
||||||
|
title: Graduate School
|
||||||
|
previous: srw
|
||||||
|
next: pwi
|
||||||
|
date: 2022-01-07
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Graduate School
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I recently finished my Master's Degree.<br>
|
||||||
|
And my feelings on it are mixed.<br>
|
||||||
|
On one hand I am proud of the work it took.<br>
|
||||||
|
Of what I learned.<br>
|
||||||
|
And having that recognized.<br>
|
||||||
|
On the other hand I don't think it was the right decision.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It was expensive.<br>
|
||||||
|
And took more time than the material needed.<br>
|
||||||
|
Had I been more disciplined.<br>
|
||||||
|
And thought through what I needed to learn.<br>
|
||||||
|
I could have learned the material in a fraction of the time.<br>
|
||||||
|
I could have saved almost $25000.<br>
|
||||||
|
I could have shown my work on my website.<br>
|
||||||
|
And used that on my resume instead of a degree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It worked out in the end because I got lucky.<br>
|
||||||
|
I graduated at the right time to get a job through a new grad program.<br>
|
||||||
|
But I don't want to confuse luck with making the right decision.<br>
|
||||||
|
Whether a decision is right or not is not only based on the outcome.<br>
|
||||||
|
We need to see what we did right when things failed.<br>
|
||||||
|
And what was wrong when we succeeded.<br>
|
||||||
|
We don't control the outcome of many of our decisions.<br>
|
||||||
|
There are too many factors.<br>
|
||||||
|
So we decide with the information on hand.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The right decision is the one we would make if we had to roll the dice on the outcome.<br>
|
||||||
|
Again and again.<br>
|
||||||
|
If I had to roll.<br>
|
||||||
|
I think the better choice would have been to choose myself.<br>
|
||||||
|
I could have moved faster.<br>
|
||||||
|
I could have saved a lot of money.<br>
|
||||||
|
I could have taken the process into my own hands.<br>
|
||||||
|
And shaped it into something of my own.<br>
|
||||||
|
Rather than following a process laid out for me.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It would have taken more care and attention.<br>
|
||||||
|
As anything truly worth doing deserves.<br>
|
||||||
|
Everything we do.<br>
|
||||||
|
Can be made wonderful with focussed effort.<br>
|
||||||
|
Or can be boring and lifeless.<br>
|
||||||
|
If we are not paying attention.<br>
|
||||||
|
I chose the easier route.<br>
|
||||||
|
That did not require the same care.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Regardless of the fact that it turned out well.<br>
|
||||||
|
Abdicating the requirement of making my own path.<br>
|
||||||
|
Was not the correct decision.<br>
|
||||||
|
I chose not to analyze my options.<br>
|
||||||
|
As carefully as I could have.<br>
|
||||||
|
I didn't think.<br>
|
||||||
|
I didn't explore.<br>
|
||||||
|
I didn't trust myself.<br>
|
||||||
|
That I would end up in the right place.<br>
|
||||||
|
Under my own guidance.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
While the outcome was successful.<br>
|
||||||
|
I think that what I learned most.<br>
|
||||||
|
From this experience.<br>
|
||||||
|
From this success.<br>
|
||||||
|
Is to be more present.<br>
|
||||||
|
To put more care and focus in everything I do.<br>
|
||||||
|
In every decision I make.<br>
|
||||||
|
To make sure that my process is as right as I can make it.<br>
|
||||||
|
And stop worrying about the outcomes.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I learned the most.<br>
|
||||||
|
By realizing the things I missed.<br>
|
||||||
|
As opposed to the things that I did.
|
||||||
|
</p>
|
||||||
181
blog/Habits.html
Executable file
181
blog/Habits.html
Executable file
|
|
@ -0,0 +1,181 @@
|
||||||
|
id: habits
|
||||||
|
title: Habits
|
||||||
|
previous: deepwork
|
||||||
|
next: llf
|
||||||
|
date: 2021-03-05
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Habits
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
Habits are both one of the most useful and most destructive things that we do in our lives.
|
||||||
|
The effects of habits compound over time; good habits will produce better and better results while bad habits do more and more damage.
|
||||||
|
The difficulty is that bad habits are often built automatically while good habits take time and effort to set up.
|
||||||
|
This is because of the tradeoff.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Bad habits give us the reward now, the sugar high of the donut, the warm coziness of not getting up, and the mindless comfort of binge watching yet another television show.
|
||||||
|
The cost is deferred to the future.
|
||||||
|
If I keep eating donuts or never leave my couch we all know that the cost will be my health.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
For good habits, on the other hand, the cost is immediate.
|
||||||
|
It is not easy to drag myself out of bed in the morning and get started on the day, nor is it easy to take the time to cook and eat healthily.
|
||||||
|
The benefits are in the future.
|
||||||
|
Good habits are like an investment while bad ones are taking on debt.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The good and bad news is that while habits take time to build, once set up they are quite difficult to break.
|
||||||
|
They also don’t require the perfection that most people think they do.
|
||||||
|
Often when I miss something for a day I feel defeated, it makes me feel like “Well I missed it yesterday so why do it today?” but it has been shown (see Atomic Habits for a more in depth explanation) that a single missed day has little effect on how long it takes to build a habit.
|
||||||
|
More than one day however and the cost starts to climb.
|
||||||
|
Make sure that if you are trying to form a new habit you avoid missing two days in a row at all costs.
|
||||||
|
Mistakes happen but don’t let them compound.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In his book Atomic Habits, James Clear outlines the four steps that are involved in a habit forming and how to use those to both make new ones and break down old, unwanted habits.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Habits don’t need to start out large In fact making them as easy as possible really helps when building new ones.
|
||||||
|
You want to minimize that cost you have to pay right now in order to make it more and more likely that you will keep following through.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The four steps are cue, craving, response and reward.
|
||||||
|
All four are needed for repetitive behaviour.
|
||||||
|
The cue is what initially starts your brain on the loop, this is something external like your phone buzzing.
|
||||||
|
The craving is what that internally provokes, that is the desire to know what the buzzing notification is.
|
||||||
|
The response is the action you take like picking up your phone and checking it.
|
||||||
|
Lastly the reward is that little dopamine kick you get when you read the email, text message or whatever it was.
|
||||||
|
That reward links the cue to the action through satisfying the craving.
|
||||||
|
Over time the buzz becomes associated with picking up and checking your phone.
|
||||||
|
You may even start doing it automatically without realizing that the phone is now in your hand.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We can tweak each of these steps to build or break habits.
|
||||||
|
For example: I am trying to build the habit of getting up early.
|
||||||
|
I do it often but it is not a habit yet.
|
||||||
|
There are stretches where I fail, especially lately when I have had other stressors in my life, it has fallen off a little.
|
||||||
|
The habit I am trying to break is my overly close connection to my phone.
|
||||||
|
I check it too much, use it too often and keep it too close at hand.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
The Cue:
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
Build - Make it obvious: It is hard to get more obvious than an alarm, however I have had the same alarm noise for a while, I have become used to it, so it is probably a good idea to change it.
|
||||||
|
That will make it stand out more and will force me to wake up more to understand what is going on.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Break - Make it invisible: I try not to have too many apps that show notifications on my phone.
|
||||||
|
My habit is bad enough that I just check it periodically, notification or not.
|
||||||
|
This means that I need to keep my phone out of my line of sight and off my person so that I can’t feel it.
|
||||||
|
I can keep it off my desk when I am working and in my bag (as opposed to my pocket) when I am going out.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
The Craving:
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
Build - Make it attractive: We like to anticipate things, anticipation is often more of a driver then the actual reward itself.
|
||||||
|
In order to make getting up attractive I want to have some sort of reward that I know is waiting for me when I get out of bed.
|
||||||
|
This is not getting the reward but I need to anticipate it to drive me to take action.
|
||||||
|
Now that I think about it I might be structuring my morning incorrectly.
|
||||||
|
Normally I journal, meditate, then go to the gym.
|
||||||
|
The activity I enjoy the most is the exercise.
|
||||||
|
It also has the advantage of waking me up.
|
||||||
|
So I will use exercise as the reward (the gym is best earlier anyway as it is quieter and less likely I will have to wait for a station).
|
||||||
|
The anticipation of the gym is how I am going to make getting up more attractive.
|
||||||
|
Even better would be using the social pressure of meeting a friend at the gym.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Break - Make it unattractive: I am pretty sensitive to wasting time but, not always in the moment.
|
||||||
|
This is the problem and I certainly beat myself up for it later.
|
||||||
|
I need a way to bring it more immediately to my attention.
|
||||||
|
Finding or writing some sort of widget that displays how long I have spent on my phone so far that day is a good one.
|
||||||
|
This could be on my lock screen and home page.
|
||||||
|
Then I will anticipate that number staring me in the face if I do, in fact, pick up the phone.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
The Response:
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
Build - Make it easy: This may not necessarily make it any easier but it will certainly motivate me a lot more.
|
||||||
|
Having my alarm on the desk instead of beside the bed will make me get up and walk across the room to turn it off.
|
||||||
|
(It may also help with breaking my phone habit).
|
||||||
|
By the time I turn it off I am up, or if I let it go for a few minutes I won’t be able to doze back off.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Break - Make it difficult: Having the phone out of line of sight is good, out of reach is even better.
|
||||||
|
I can also make sure the apps that normally entice me to check it are harder to get to.
|
||||||
|
They should be off the home screen for sure.
|
||||||
|
Buried under folders in my apps menu is better.
|
||||||
|
I could hide them so that I have to actually type in the name to find them, or uninstall them altogether.
|
||||||
|
Some combination of these will work, depending on if the app in question is useful or not.
|
||||||
|
Making it take more time to get to apps will give me more opportunity to realize what I am doing and stop.
|
||||||
|
I may even decide that the time is not worth checking it in the first place.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
The Reward:
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
Build - Make it satisfying: Getting right to the gym and the endorphin rush that comes from moving is good, moving that to the top of the list is much better.
|
||||||
|
For me exercising is more viscerally satisfying than journalling or meditating.
|
||||||
|
Also I take great satisfaction at having a huge chunk of my daily list done by noon which I can’t do if I don’t get up early.
|
||||||
|
Making sure I give myself the time and space to appreciate that and remember why I am so ahead on the day is important.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Break - Make it unsatisfying: I am going to make this public, which makes it hurt more if I don’t improve.
|
||||||
|
I am going to, at the end of each blog post, list how many hours I have spent on my phone that week.
|
||||||
|
The number is pretty likely to be embarrassing and will only be more so if it gets worse.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There are more tips and tricks in Atomic habits and I will be trying to use all of them.
|
||||||
|
It is worth the read.
|
||||||
|
Now that I have gone over how, there is still the question of why you want to build (or break) habits?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There are a few reasons.
|
||||||
|
The benefits of good habits compound over time while the costs of bad ones also compound.
|
||||||
|
Even if the habit is a very small one the effect over time can be massive.
|
||||||
|
People often overestimate what they can do in the short term but underestimate what they can achieve in the long term.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The example that is used in Atomic Habits is the change of 1% per day for a year.
|
||||||
|
If every day of the year you are 1% better than you were the previous day by the end of the year you are more than 37x better.
|
||||||
|
Obviously there are limits to what we can do but this thought experiment goes to show that small changes compounded over time add up to huge changes.
|
||||||
|
The opposite is also true.
|
||||||
|
If you are 1% worse each day at the end of a year you are 1/33rd of what you were at the beginning of the year.
|
||||||
|
This feeds into the next reason that habits remove decisions: making your life easier.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We are bombarded every day with choices and as the day progresses, the more choices you have to make, the worse decisions you make.
|
||||||
|
This is known as decision fatigue.
|
||||||
|
The point of habits is that they are automatic, it is no longer a choice that adds weight throughout the day.
|
||||||
|
It frees you up to spend that energy on choices that are more important or can’t be turned into habits.
|
||||||
|
Once your habit is properly set up, like going for a run every day, you can reap the benefits without the cost on your willpower it takes to force yourself to go out and run.
|
||||||
|
Breaking bad habits stops you accruing the cost of them over time without your awareness.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Habits provide a foundation upon which to build your life.
|
||||||
|
If you have good habits they will take care of you by making your life easier.
|
||||||
|
They also allow time for just doing the things that are important to you in life.
|
||||||
|
Bad habits are something you have to constantly compensate for.
|
||||||
|
They leave you spending all of your free time just offsetting their cost.
|
||||||
|
So often we think of habits as just happening and not something that we can control.
|
||||||
|
This is not the case.
|
||||||
|
It certainly takes work, but it is possible to change habits and this knowledge leaves me personally with a much greater sense of control over my life.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Managing our habits is something that we can all take advantage of to live better lives with a greater amount of control over what we do and ultimately where we are in life.
|
||||||
|
If you can think of a habit that you want to build or break try writing out how to take the four steps for that particular habit and give it a shot.
|
||||||
|
It may take some work now, but the benefits are for life.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: I am going to go from last friday to yesterday (thursday) so that I get 7 full days.
|
||||||
|
Across all different applications (some are useful I swear but I bet that most are not) I spent 34 hours and 29 minutes on my phone in the last 7 days.
|
||||||
|
That is almost a full work week.
|
||||||
|
Adding that all together surprised me and this is definitely hard to post.
|
||||||
|
</p>
|
||||||
123
blog/ImmersiveLearningAndExperimentation.html
Executable file
123
blog/ImmersiveLearningAndExperimentation.html
Executable file
|
|
@ -0,0 +1,123 @@
|
||||||
|
id: ile
|
||||||
|
title: Immersive Learning and Experimentation
|
||||||
|
previous: dmwi
|
||||||
|
next: lim
|
||||||
|
date: 2021-04-16
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Immersive Learning and Experimentation
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
This past week I have started learning how to use Vim and I thought that the process was interesting and wanted to talk about it.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Vim is a text editor, like Notepad, Atom, Emacs, or many others.
|
||||||
|
Mainly used for programming and simple text files.
|
||||||
|
Vim is an older editor that runs in the command line instead of a graphical user interface and relies completely on the keyboard instead of making use of the mouse.
|
||||||
|
It uses a lot of keyboard shortcuts instead and allows for very quick and very precise editing.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This means that it has a very steep learning curve but seems to have an equally high ceiling for skill with the program and its speed of use.
|
||||||
|
The downside is that it is going to take me a lot of time to learn and will slow me down a lot while I do.
|
||||||
|
The temptation to go back to Atom, which was my text editor of choice in the past, in order to make more headway on my projects is very strong.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Switching back and forth slows down learning so I had to decide what was more important.
|
||||||
|
I don’t have any programming to do for school so I am only delaying my own projects.
|
||||||
|
I decided to leave myself no other option and fully uninstalled all the other text editors on my laptop.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Full immersion and necessity is the fastest way to learn a lot of things but is not always possible.
|
||||||
|
Language learning is fastest if you are travelling and actually have to use the language day to day to get by and I see using this new tool as the same thing.
|
||||||
|
I am trying to train my brain to incorporate the use of Vim.
|
||||||
|
Changing back and forth would keep reinforcing the particular way I use Atom as opposed to overwriting that with using Vim.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have noticed the cost of switching back and forth when trying to learn more than one coding language at a time.
|
||||||
|
Last semester I had one course using Java and one using C.
|
||||||
|
Both languages I had seen before but not coded much in.
|
||||||
|
I repeatedly made mistakes which were often using the syntax of one language in the other.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have been using Vim exclusively for almost a week and I am no longer feeling painfully slow.
|
||||||
|
I am still not as quick with it as I was with Atom but it is catching up.
|
||||||
|
It also feels much better on my laptop where I much prefer using exclusively the keyboard as opposed to the touchpad.
|
||||||
|
I am not sure how it would compare to a mouse.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have not forced myself to learn anything in this way for a long time.
|
||||||
|
So often I am trying to do a lot of related things at once that bleed over into one another.
|
||||||
|
This was the perfect opportunity of retooling a task that I use very often but only affects a small portion of my overall life.
|
||||||
|
It definitely is making me wonder where I can apply that level of immersion to other learning tasks in my life.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This ties into something else I am exploring.
|
||||||
|
I have recently been reading a lot of articles on Derek Sivers’ website and listening to various interviews with him on spotify.
|
||||||
|
I find his life philosophy very appealing in general but specifically I want to talk about his approach to experimentation for life.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It is quite rare that all the rules in a given philosophy, religion, or other system that one can use to structure their life or any activity in it will work for everyone.
|
||||||
|
However having no rules often results in far too many options to properly analyze and make the best decision.
|
||||||
|
There is a freedom that comes from restrictions.
|
||||||
|
They help us by cutting down choices so that we can focus our attention on deciding between them.
|
||||||
|
*Find the book that this is from* When faced with a larger number of options people are generally less happy with their choice as they wonder if another was better.
|
||||||
|
Fewer choices results in making them faster and often being more happy with the decision.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Derek suggests coming up with your own rules and testing them.
|
||||||
|
They can be pulled from anywhere but the key is that they can be tested one by one, keeping those that work and getting rid of those that don’t.
|
||||||
|
The length of the tests can vary and will be dependent on how long I think I will need to give the rule a good run.
|
||||||
|
In the end I will hopefully end up with a system that is personalized and works best for me.
|
||||||
|
Getting rid of all the other text editors was essentially setting the rule that if I have to edit text I use Vim and it is working out well.
|
||||||
|
I think I will keep it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Other ideas I have are
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Only speaking french with people I know can speak it.
|
||||||
|
(get my french back.
|
||||||
|
Used to speak it regularly but not in years)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
No complaining (if a conversation starts going down that route change the subject)
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Slow carb diet
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
No watching video of any type
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Phone stays out of the bedroom
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
No internet use for an hour after I wake up and an hour before bed
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Start each day with time outside
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
I feel like the default for testing will be for a week, but for things that will take longer to have an effect like the diet I could see doing it for a few weeks to a month.
|
||||||
|
I have done the slow carb diet for a while before but have fallen off for the last year.
|
||||||
|
I remember feeling quite good on it and would like to give it another shot.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I look forward to testing some of these out and building my own structure for my life, up until this point I have been implementing practices that others have suggested without determining if they are best for me.
|
||||||
|
They have been fantastically useful but by blindly implementing them I am cutting off the opportunity to find something that fits me better.
|
||||||
|
If I don’t I will keep using them but it is important to leave open the option.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: 8h 7m
|
||||||
|
</p>
|
||||||
40
blog/Independence.html
Normal file
40
blog/Independence.html
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
id: independence
|
||||||
|
title: Independence
|
||||||
|
previous: pwi
|
||||||
|
next: fsdi
|
||||||
|
date: 2023-07-05
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Independence
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
With less monetary pressure on me this past year I have been able to really dive deeply into what is important to me.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Independence has come to the forefront.
|
||||||
|
To me being independent in something is having the choice in how you approach it.
|
||||||
|
It does not need to mean that I do everything myself.
|
||||||
|
It means that I can if I need to.
|
||||||
|
It gives me control over various aspects of my life that are important to me.
|
||||||
|
For other areas less important I can consciously relinquish that control to save time and effort.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Society is full of large complex systems that provide what I need to live.
|
||||||
|
If any of those systems breaks or even slows down it can negatively affect my life if I don't have any other options.
|
||||||
|
For the sake of robustness ideally a system is as small and simple as possible.
|
||||||
|
For independence as many of those steps should be in my hands as possible.
|
||||||
|
That results in fewer points of failure and the ability for me to shore up more of those failures myself when they happen.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
With the rise of smaller, personally available, and more affordable technologies I think that I can have much of the independence that I want without giving up many, or even any, of the conveniences of modern life.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I want to track and publish this journey to try and build more independence into my life.
|
||||||
|
Both as a record and maybe it could help others who feel the same way that I do do the same.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Currently I think that it will break into digital, work, and personal independence going forward.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thank you for reading.
|
||||||
|
</p>
|
||||||
87
blog/LessIsMore.html
Executable file
87
blog/LessIsMore.html
Executable file
|
|
@ -0,0 +1,87 @@
|
||||||
|
id: lim
|
||||||
|
title: Less is More
|
||||||
|
previous: ile
|
||||||
|
next: writing
|
||||||
|
date: 2021-04-24
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Less is More
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
I am in a bit of a rut at the moment and am fairly overwhelmed with things that I have to do as opposed to things I want to do.
|
||||||
|
This means that I have little space to add new things to my schedule to test or improve.
|
||||||
|
Thankfully there is still something that can be done even with no time and that is cutting things out.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Often I think of changes I can make in terms of new things to try or practices to add to my routine, but there is just as much, and at times more, value in removing items.
|
||||||
|
My personality often leads me to forget this aspect.
|
||||||
|
I am interested in so many things and like the feeling of doing more, so I have to say that I am glad that the current situation is forcing me to approach this differently.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am going to err on the side of removing something if I am not sure if it should be removed or not.
|
||||||
|
I should be able to get it back pretty easily if I miss it, and it also lets me test out the change as opposed to just guessing what will happen.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Firstly I am subscribed to the mailing lists of a decent number of blogs and podcasts.
|
||||||
|
I sometimes read the emails but often when I want to read the content I go directly to the site.
|
||||||
|
I also don’t read them right when new posts are made so knowing that is not useful to me.
|
||||||
|
It means that each day I am getting at least one if not a small handful of messages that I sort into the relevant email folders and then more often than not never read.
|
||||||
|
The notifications are distracting, sorting takes time, and I know where to get the information when I want it as opposed to having it fed to me.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Speaking of notifications I have turned off almost all notifications for various apps on my phone.
|
||||||
|
The only things that should make any noise are calls and text messages.
|
||||||
|
No emails, no new songs on spotify.
|
||||||
|
If someone is trying to contact me directly I want them to be able to (within reason which I will talk about in a second), but as with the emails I want to go get the information when I need it and reduce the amount being thrown at me.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This is a common theme for me, I love getting information and learning new things but having it all fed to me is too much of a temptation and a distraction.
|
||||||
|
The information is readily available, so I am happy to take the responsibility for finding it into my own hands and be able to choose when to read, watch, or listen as opposed to doing it in reaction to a notification or email.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am uninstalling and unsubscribing from all video streaming services.
|
||||||
|
When I watch I usually watch with others.
|
||||||
|
On my own I am often tempted to put something on in the background while I am working and that is another distraction.
|
||||||
|
The other people I am watching with can certainly put on a movie; so if I don’t have access to the services it will affect my work time but not any relaxation viewing.
|
||||||
|
One of the rules I am testing currently is no multi tasking so this will help with that.
|
||||||
|
It is tempting to have something playing while writing this for instance.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am unsubscribing from all channels on youtube and deleting my watch history so that it won’t recommend videos that fit my tastes anymore.
|
||||||
|
As I use them I can re-subscribe to channels, but at the moment the suggested videos are far too tempting and it is very easy to go down the rabbit hole for an hour or more of moving from one video to the next.
|
||||||
|
I have also taken a look at what the suggested videos are when I am logged out and I have no interest in any of them.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am turning my phone onto airplane mode for the evening and until after I have meditated and journaled in the morning.
|
||||||
|
I have family and friends in other timezones and a close friend that works nights.
|
||||||
|
It is not unusual to get text messages when I am sleeping or before I have gotten myself started for the day.
|
||||||
|
This will let me control the times that I am available to be contacted and not interrupt those important routines.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am simplifying my exercise routine.
|
||||||
|
I am testing out only doing bodyweight training for a while.
|
||||||
|
I will definitely add kettlebells and weights back in but I am having some trouble with my joints and I think it is because I went too hard and too quickly with the weights.
|
||||||
|
My background is in gymnastics so I have more experience with bodyweight training then anything else and that will allow me to get my body back into proper working order and reduce the overall load on my connective tissue.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
My cooking has gotten more elaborate recently, which also often means less healthy.
|
||||||
|
By making simpler meals I hope to save time in the kitchen and increase the quality of my diet.
|
||||||
|
I do enjoy cooking and will save the more involved meals for weekends when I have the extra time to spare.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
All of these should hopefully free up a decent amount of time.
|
||||||
|
I am not planning on adding anything new to fill in that time until I have grown accustomed to doing less.
|
||||||
|
I don’t want to just overload my schedule with new things right away, I want to add them in slowly and give each new activity the time that it deserves to ensure that I do it well.
|
||||||
|
I have never tried to remove so much at once and I am not sure what my reaction to it will be.
|
||||||
|
All part of the experimentation I guess.
|
||||||
|
Paying close attention to my actions for a week or so really surprised me how much of what I was doing was reactive as opposed to active.
|
||||||
|
I am hoping to change that by getting rid of all these things.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: 8h 28m
|
||||||
|
</p>
|
||||||
57
blog/LevelingTool.html
Executable file
57
blog/LevelingTool.html
Executable file
|
|
@ -0,0 +1,57 @@
|
||||||
|
id: lt
|
||||||
|
title: Leveling Tool
|
||||||
|
previous: writing
|
||||||
|
next: tw
|
||||||
|
date: 2021-06-28
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Leveling Tool
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
So I know that I have not posted in a while, to be honest priorities have shifted and so unfortunately writing has been put on the back burner.
|
||||||
|
However this week I came up with something and wanted to share it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have been working on making an interlock patio in my parents back yard.
|
||||||
|
Once the hole was dug and filled with GA and stone dust we had to level.
|
||||||
|
This past Thursday after being outside in the heat and sun for days I was just not feeling crawling around on my knees with a long level scraping and pushing stone dust around to not only get the surface level but graded properly away from the buildings.
|
||||||
|
I was also distracted by a totally separate idea for something computer and website related.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I gave myself 15 minutes to come up with something that could help and if I didn’t I would go back to doing it the old fashioned way.
|
||||||
|
There were a few problems that I was looking to solve.
|
||||||
|
I wanted something that did not require me to hold my shorter level onto a piece of wood while I was scraping, I wanted a system that did not require having my weight on it (on my knees reaching forward with the level and scraping backwards), and something that I could do while standing up.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I was initially thinking of some sort of track that gets pre-leveled and I just slide a board across, but that seemed too complicated and precise to throw together quickly.
|
||||||
|
While looking at what scrap wood was around I found an old finished but more importantly straight piece of a bed frame and a broken shovel handle.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Drilled a few holes in the piece of wood to tie the level to the top of it and cut off the shovel handle at an angle and screwed it to the board.
|
||||||
|
The result was this.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/LevelingTool.jpg" alt="LevelingTool" />
|
||||||
|
<figcaption>Version 0.1 Leveling Tool</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
It worked very well all things considered.
|
||||||
|
It allowed me to hold it at a slight angle to get the grade while I was drawing it over the stone dust.
|
||||||
|
I could vary the pressure to have it scrape off various amounts and I could reach much farther then I could from my knees with just the level.
|
||||||
|
This version is obviously rough but it made the job much faster and easier.
|
||||||
|
The handle should be longer and at a bit less of an angle.
|
||||||
|
It would also be nice to work the level into the scraping edge itself.
|
||||||
|
A regular level can be looked at from the front or the top, but there are some angles that with this particular tool it is hard to see.
|
||||||
|
Having the entire top open to be seen at any angle and possibly a lens to make the actual bubble look bigger would make watching it easier while pulling the device across the stone dust.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I find that I am often slowed down by trying to make things I create perfect but recently I have been just getting something that works.
|
||||||
|
Having something to work with makes other design changes and improvements jump out at you.
|
||||||
|
It is way easier to iterate off of something as opposed to trying to make it perfect in theory before making anything.
|
||||||
|
You end up with a better product and much quicker.
|
||||||
|
Don’t wait to make something perfect.
|
||||||
|
Just make it and it will be far easier to improve once you start using it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
87
blog/LookingLikeAFool.html
Executable file
87
blog/LookingLikeAFool.html
Executable file
|
|
@ -0,0 +1,87 @@
|
||||||
|
id: llf
|
||||||
|
title: Looking Like a Fool
|
||||||
|
previous: habits
|
||||||
|
next: dm
|
||||||
|
date: 2021-03-13
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Looking Like a Fool
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
I was listening to an old episode of Tim Ferriss’ podcast this morning with the creator of DuoLingo, Luis Von Ahn.
|
||||||
|
For those of you that don’t know; DuoLingo is a free language learning platform.
|
||||||
|
One point was that people who are willing to make a fool of themselves learn languages faster than those who want to wait until they sound perfect.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It got me thinking that this applies to far more than just language learning.
|
||||||
|
It applies to any type of knowledge or skill acquisition.
|
||||||
|
If I am not screwing something up, often it means that I am not at the edge of my knowledge.
|
||||||
|
Work should be done in the realm of competency.
|
||||||
|
I want to make sure I am putting out a solid product, but learning something new should be at that uncomfortable edge.
|
||||||
|
Pushing so that I may just be able to manage what I am trying to do means stumbling often.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There is a great quote from Samuel Smiles, “We learn wisdom from failure much more than from success.
|
||||||
|
We often discover what will do, by finding out what will not do; and probably he who never made a mistake never made a discovery.” Most of us feel stupid when we fail and that is what the podcast was getting at.
|
||||||
|
In learning languages it is increasingly pronounced.
|
||||||
|
Being unable to express yourself and displaying that lack to others can be embarrassing and makes most people feel foolish.
|
||||||
|
When seen from another perspective, it can be funny for everyone involved.
|
||||||
|
Learning other skills is like this as well.
|
||||||
|
We feel clumsy when picking up a new sport or just can’t seem to get that new math concept.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This connects quite strongly to the learning mindsets I have heard put forward in a couple of different books and discussions on learning.
|
||||||
|
The two are often characterized as fixed and growth mindsets.
|
||||||
|
The fixed mindset assumes that abilities are innate, a result of intrinsic talent.
|
||||||
|
A growth mindset believes that abilities are developed.
|
||||||
|
While people do vary in capability; the ability that we have to improve is often far greater than we realize.
|
||||||
|
We may not all be able to be Einstein but we can certainly get better than we are now.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A fixed mindset leads us to fear failure, thinking that if we fail, we have hit the limit of our capacity.
|
||||||
|
This thought is extremely destructive and leads us to shy away from anticipated failure.
|
||||||
|
Feeling foolish through this lens also speaks fundamentally to who we are and what we are capable of.
|
||||||
|
So we shy away from the challenges that run a high risk of us making mistakes, both in front of others and by ourselves.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Small aside, feeling foolish is not just for when you do something in public.
|
||||||
|
I am my harshest critic and almost universally judge myself more harshly than the people around me do.
|
||||||
|
This includes when I feel foolish.
|
||||||
|
I think that this is the case for most of us, so don’t discount being able to watch yourself make mistakes even if there is no one else there to see.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Adopting a growth mindset allows challenges and mistakes to be seen as steps on the road to mastery.
|
||||||
|
They reflect only that we still have more to learn and nothing about us as a person.
|
||||||
|
This makes those with a growth mindset much more tolerant to making mistakes and admitting them.
|
||||||
|
The result is often much more success in long term learning.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Mistakes and failures are signposts.
|
||||||
|
How do we know where we are lacking? what we need to get better at? Using current technology we can easily access any information we could want but, we do need to know what to look for.
|
||||||
|
If you can successfully do something then you don’t need to look it up, if you can’t then you know what you need to research.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Unfortunately there is no easy way to get used to making mistakes and feeling foolish other than just doing it.
|
||||||
|
It is not as big a deal as most of us think, the world won’t end and it is likely no one will think less of you.
|
||||||
|
You can start with people that you trust and know well, or take classes with other beginners.
|
||||||
|
Having other people struggling along with you means that you all get to feel foolish together.
|
||||||
|
It is quite likely that someone else is having exactly the same problem as you.
|
||||||
|
The people you trust give you the reassurance that your mistakes won’t change how they view you and make it safer to take those risks.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Everyone learns new things, everyone makes mistakes and feels like a fool sometimes.
|
||||||
|
It can even be fun.
|
||||||
|
It can leave you with a funny story to tell later and it will certainly help you learn.
|
||||||
|
Success is often just a function of how many times you try.
|
||||||
|
Being willing to fail means that you will try more new things and meet with more success in the end.
|
||||||
|
That is worth a few stumbles and some embarrassment.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: 8h 20m
|
||||||
102
blog/NotUpdated/PersonalUpdate2021-03.html
Executable file
102
blog/NotUpdated/PersonalUpdate2021-03.html
Executable file
|
|
@ -0,0 +1,102 @@
|
||||||
|
id: 2021-03
|
||||||
|
title: Personal Update March 2021
|
||||||
|
date: 2021-03-27
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Personal Update March 2021
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
So in the spirit of honestly chronicling my journey, I have to say that this past week has been fairly unsuccessful.
|
||||||
|
Due to significant stresses in my life a lot of my routines have fallen apart.
|
||||||
|
This week I am going to do an analysis of what I have been able to keep up with and what has dropped off.
|
||||||
|
It outlines what activities I am still using discipline and willpower to do (which are more susceptible to breakdowns when stressed) and what seems to have held together (habit).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Starting with the things that have held together.
|
||||||
|
I am still exercising regularly.
|
||||||
|
It feels odd not to go to the gym.
|
||||||
|
Even though some days I have cut down on the intensity and amount of the exercise it is still there.
|
||||||
|
On certain days I cut back on the weight I was lifting and on others I did fewer and/or less effective exercises.
|
||||||
|
Swapping out an exercise for a slightly less effective one may seem completely counter productive, but I have found that when I am not feeling it, the novelty of something different helps raise my interest.
|
||||||
|
It is better to do something sub optimal then nothing at all.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have still been reading a fair bit.
|
||||||
|
I was reading The Gulag Archipelago which is a book about life in Stalinist Russia.
|
||||||
|
Needless to say it is dark, so for this week I put it down in favor of easier reading.
|
||||||
|
I continue to read one of Seneca’s letters each day and am in the process of reading Malcolm Gladwell’s The Tipping Point.
|
||||||
|
It is about what causes sudden drastic changes in systems when one would expect more gradual ones.
|
||||||
|
It touches on epidemics of various sorts, fashion, crime, adoption of technology etc.
|
||||||
|
I am also reading more fiction for pure enjoyment.
|
||||||
|
A short story collection by my favourite author Greg Egan is also for fun.
|
||||||
|
It is called Artifacts and I strongly suggest his work if you like very hard science fiction.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
School is the area where I have just kept up.
|
||||||
|
Normally I try to work ahead and try to do two weeks of reading for each week that passes.
|
||||||
|
That way when it is time to work on a project or study for a test I have the time to focus solely on that without falling behind.
|
||||||
|
This week was just a week’s worth of reading and I called it at that.
|
||||||
|
Some of the time I would normally spend working on school I spent listening to podcasts on whatever topic I was interested in that day.
|
||||||
|
The learning this week may have been less focussed than usual, and for less total time but it was still there.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So learning, and exercise seem to have held together alright.
|
||||||
|
This makes sense, I have had these practices for a long time.
|
||||||
|
While they have all been ratcheted down in intensity they have continued.
|
||||||
|
This is the advantage of habits, it truly feels odd when I don’t do them for a day.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Now for the areas that have not held up so well under stress.
|
||||||
|
I have not been consistent with my sleep schedule.
|
||||||
|
I have been staying up later and sleeping in more in the morning.
|
||||||
|
Not by a small amount either.
|
||||||
|
2-4 hours later both in bed and waking time is significant.
|
||||||
|
I have been loath to cut my sleep short, I know how important having enough sleep is especially when your body is under stress.
|
||||||
|
I am not sleeping much more, just not at the times that I prefer.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have been spending more time on my phone, watching youtube videos mostly.
|
||||||
|
I think the common trend with my behavioural changes this week is that I am leaning towards immediate enjoyment and a little bit of escapism as opposed to longer term thinking.
|
||||||
|
It also makes sense, my brain is trying to make me feel better using the things that reward me quickly.
|
||||||
|
My phone use is not as high as it was the first week.
|
||||||
|
I tracked it and it has been going up since last week.
|
||||||
|
I am also spending more time playing video games.
|
||||||
|
Normally I try to keep them within my off time at the end of the day, but it has creeped out into the rest of my day.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Writing my 10 ideas for the day has been problematic.
|
||||||
|
I normally do it later in my routine so I can use whatever problems I have encountered throughout the day to generate ideas.
|
||||||
|
While under stress I am very mentally drained at the end of the day and it feels insurmountably difficult to come up with ideas when my mind is so occupied.
|
||||||
|
I could try and do it earlier in the day when I am feeling fresher.
|
||||||
|
Something to look into for the next week.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am doing my best to keep meditating.
|
||||||
|
This is the exact time that it is most needed, but clearly it has not been instilled as a habit yet.
|
||||||
|
Iit has been a lot of work to get myself to sit so this practice has been spotty.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Obviously as this is getting posted a day late this blog falls into that category.
|
||||||
|
I had it written by the end of the day on friday but did not have it edited and posted until saturday.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It is only when under pressure that I can really see how well my routine holds up.
|
||||||
|
A lot of my habits around getting things done have held up reasonably, while self care has fallen apart.
|
||||||
|
That makes sense to me.
|
||||||
|
I have only implemented a lot of the self care and quality of life actions in the last 6-months to a year while the learning and exercising has been an integral part of my life for over a decade.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I still have plenty of time, even though it often does not feel that way, and these things can be fixed.
|
||||||
|
I do tend to focus on giving myself a hard time when I don’t perform up to my standards but I am trying to extract some good from it in the form of a lesson instead.
|
||||||
|
We often learn some of our most valuable lessons from difficult times if we remember to look.
|
||||||
|
The current goal for me is to keep doing whatever I can while I take care of myself.
|
||||||
|
That way I can get through this particular rough patch in life without trying to go so hard that I make it worse and it becomes more than I can handle.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: 16h 9m
|
||||||
|
</p>
|
||||||
72
blog/OnReading.html
Executable file
72
blog/OnReading.html
Executable file
|
|
@ -0,0 +1,72 @@
|
||||||
|
id: onreading
|
||||||
|
title: On Reading
|
||||||
|
previous: thestart
|
||||||
|
next: mop
|
||||||
|
date: 2021-01-06
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
On Reading
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
I think that reading does not quite get the credit for the marvelous thing it is in the public eye.
|
||||||
|
It is pretty rare to hear people talking very much about reading anymore and the phrase “I don’t read” has become more and more common.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I would like to make a case for reading.
|
||||||
|
It has a few things going for it that I don’t think any other medium has.
|
||||||
|
More than anything else reading is a purely cerebral experience.
|
||||||
|
There is nothing else intensely stimulating in the activity to pull your attention away from the ideas being conveyed.
|
||||||
|
And conveyed they are.
|
||||||
|
Writing is the crystallization of ideas into words, there is nothing else the author has to concern themselves with, and the act of writing helps to clarify and hone the thoughts.
|
||||||
|
Therefore books when written well often deliver the purest idea, honed by writing and editing to the reader.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Reading a book is like having a conversation, albeit a unidirectional one, with the author.
|
||||||
|
Similar to a lecture, reading is an act of listening and parsing the information given.
|
||||||
|
Like most other distributed media it transcends distance, once a book is published you don’t need direct access to the author to benefit from their ideas contained within.
|
||||||
|
Unlike most media however it also transcends time.
|
||||||
|
We have only had film and recorded music for coming up on 100 years now.
|
||||||
|
There is no way to communicate with anyone beyond that point in time.
|
||||||
|
Oral traditions are the only method of communication older than writing and that runs into the space problems of needing to be with a storyteller.
|
||||||
|
By reading I have access to the teachers from the entirety of recorded human history.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There are ideas and ways of thinking that have fallen by the wayside.
|
||||||
|
This does not make them less valuable, just forgotten.
|
||||||
|
The words and the books that they have left behind are the only way to find these ideas in their original form.
|
||||||
|
There are a few in the modern age that try to spread them and teach them to the new generations, but this is also almost always in the form of writing books.
|
||||||
|
It is the only way to connect to the timeless wisdom found in the older texts that have survived and maintained relevance.
|
||||||
|
If something has been around and useful for a few hundred or even a thousand years I think it bears looking into.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Reading is one of the few actions these days that force us to slow down, and focus on a single thing.
|
||||||
|
You can’t chat while reading, you can’t watch a show, work, or eat very well (when I try to read and eat I end up spending more time finding my place than reading).
|
||||||
|
In a world that increasingly moves faster and demands more of our time moments of slowness and peace are more valuable than ever.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Taking the time to absorb an idea, roll it around in your head, and come to conclusions about it is fantastic, almost meditative.
|
||||||
|
Reading a thing takes time, so it forces some level of contemplation.
|
||||||
|
We are bombarded with all sorts of bite sized opinions and ideas, those often provoke a strong emotional response and very little conscious thought.
|
||||||
|
Spending the extra time with it forces us to think, let that initial gut reaction no longer be our only point of reference.
|
||||||
|
I am not saying that the gut is always wrong, instinct and intuition are valuable tools, but more and more things are designed to take advantage of that system.
|
||||||
|
It is much harder to do that to someone's critical thinking.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Reading is beautiful and often seems to be the cure to a lot of the ailments of the modern day.
|
||||||
|
When we are always told to go faster and do more, reading forces us to sit still and think.
|
||||||
|
When all our senses are constantly bombarded by all sorts of stimulation reading forces us to give them a rest, except for the occasional eye strain when you get into a really good book and can’t put it down.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It forces us to exercise our imagination.
|
||||||
|
With modern technology our movies and shows are so realistic that we no longer have to use our imagination to picture things.
|
||||||
|
I can’t help but think there is a massive benefit practicing being able to picture things we have not seen in our heads.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So that is my case for reading.
|
||||||
|
I hope my thoughts on the topic were interesting.
|
||||||
|
</p>
|
||||||
79
blog/PetsWorryAndInformation.html
Executable file
79
blog/PetsWorryAndInformation.html
Executable file
|
|
@ -0,0 +1,79 @@
|
||||||
|
id: pwi
|
||||||
|
title: Pets Worry and Information
|
||||||
|
previous: gs
|
||||||
|
next: independence
|
||||||
|
date: 2022-07-23
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Pets, Worry, and Information
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am just coming out of a long haul taking care of my Rabbit through a particularly rough time health wise.
|
||||||
|
He had a gastric obstruction which essentially means that his gut was blocked.
|
||||||
|
Rabbits have a digestive tract that is completely one way.
|
||||||
|
They need to keep food moving through it or gas builds up.
|
||||||
|
Because it is one way they can't burp or vomit to relieve the pressure.
|
||||||
|
Eventually the stomach can't take the pressure and bursts.
|
||||||
|
This is a very serious condition.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We struggled with meds, iv fluids, emergency food that can be given by a syringe, and multiple trips to the vet.
|
||||||
|
There were a few days when I was sure that it would be my last with him.
|
||||||
|
Thankfully we seem to be getting through it and he is eating and acting normally again.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This whole process got me thinking about pets and death in general.
|
||||||
|
I had to come to terms with the fact that my friend of 7 years, who has been with me for 2 moves across the country, whose existence has been fundamental to my lifestyle and many of my life choices, won't be here someday.
|
||||||
|
I have always known that would be the case but never had to face it so clearly.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Everything in life is transitory even though we like to think that it is not.
|
||||||
|
I think the thing that helped me come to terms with his potential loss was knowing that I had done what I could.
|
||||||
|
The first few days we went to the vet a couple of times for emergency care.
|
||||||
|
I got given some meds to give him but because the visits were emergency and not planned appointments they did not have the time to really explain what whas going on and what could be done about it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The third visit was an appointment.
|
||||||
|
We talked and I was asked how much I was comfortable doing.
|
||||||
|
I got fluids and needles to inject them sub cutaneously to keep him hydrated.
|
||||||
|
We went over his reaction to the meds and tweaked the doses.
|
||||||
|
I was taught how his gut works, what the various parts are, and what foods would be better or worse for him in his condition.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Armed with this extra knowledge and these tools I was much more at ease.
|
||||||
|
Even though he still had a few more very rough days before things turned around I was more at peace.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
When we clearly know the boundaries of our control it is easier to let go of the other things.
|
||||||
|
Until I knew what I could do, and that I was doing it, my worries extended to the entire situation, including the parts that no matter how hard I tried I could not directly affect.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I had no direct say in if he lived or died.
|
||||||
|
His body was either going to heal or not.
|
||||||
|
What I could do was give it the best chance, make the best environment, give him the right medication at the right time, and wait.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am so glad that he is doing better.
|
||||||
|
I love him deeply and having more time with him is invaluable.
|
||||||
|
However he is transitory just like everything else.
|
||||||
|
He is getting old so someday, possibly soon, he is going to die.
|
||||||
|
I don't get to do anything about that.
|
||||||
|
I can however enjoy the time that we have to the fullest and come to terms with that eventuality.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
So much worry comes from a lack of information.
|
||||||
|
Not knowing enough about how we can affect a situation causes us to worry about everything.
|
||||||
|
Next time I find myself overwhelmed, terrified about some possible outcome I am going to learn as much as I can.
|
||||||
|
Find out what I can affect (and thus can take action as opposed to worrying), and what I can't (which is pointless to worry about anyway).
|
||||||
|
There is no need to make difficult situations more so because of the way that we think.
|
||||||
|
</p>
|
||||||
86
blog/SelfDirectedLearning.html
Executable file
86
blog/SelfDirectedLearning.html
Executable file
|
|
@ -0,0 +1,86 @@
|
||||||
|
id: sdl
|
||||||
|
title: Self Directed Learning
|
||||||
|
previous: foundation
|
||||||
|
next: mfn
|
||||||
|
date: 2021-01-29
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Self directed learning
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
More and more these days we have access to all the information that we could possibly need to accomplish almost anything.
|
||||||
|
Learning is no longer the solo scholarly pursuit that it used to be.
|
||||||
|
Everything is connected.
|
||||||
|
Immersing yourself in the various communities will guide you to the specific resources that you need for the later steps of sitting down and reading, practicing and experimenting yourself.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The world is moving faster all the time and we need to be adaptable to keep up.
|
||||||
|
Being committed to learning constantly is so valuable.
|
||||||
|
Being able to learn effectively on your own is one of the most important skills and only becomes more so over time.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
When access is an issue, libraries usually provide free computer access.
|
||||||
|
Another option is fantastic cheap little computers called Raspberry pi’s.
|
||||||
|
They have most of the functionality of a full desktop and work wonderfully for reading documents or internet browsing.
|
||||||
|
They are also a tinkerer’s dream (but that is not the purpose of this post).
|
||||||
|
You can get a full setup for somewhere in the range of 150$ with monitor, keyboard and mouse.
|
||||||
|
They come with a lot of educational tools built in that can help you learn how to program as well.
|
||||||
|
All the information on them can be found at https://www.raspberrypi.org/ .The buy now section will direct you to sellers nearby.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
No longer is the problem a lack of information but an overabundance of it.
|
||||||
|
The meat of the problem is finding the right information.
|
||||||
|
Every field has subfields and even those have specialities.
|
||||||
|
With all that out there.
|
||||||
|
it is hard to parse.
|
||||||
|
Is the information you find accurate? Is it relevant to what you want to do? There are rabbit holes to dive down everywhere.
|
||||||
|
They can just as easily distract you as provide useful information.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you are learning purely for interest's sake then, by all means, follow your curiosity wherever it might take you and have fun.
|
||||||
|
You can spend your whole life learning and not even scratch the surface of what humanity knows.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am going to assume however that the learning you want to do has a purpose.
|
||||||
|
Having a project in mind is a fantastic filter for looking at things.
|
||||||
|
What is relevant to the project? We don’t always know when we start but we don’t have to.
|
||||||
|
If you start working you can learn what you need to as you go.
|
||||||
|
Part of learning on your own is that you get to apply what you learn as you learn it.
|
||||||
|
That allows you to quickly see where you are running into roadblocks and need more research.
|
||||||
|
It also helps with focussing your attention when you are looking for information.
|
||||||
|
A goal makes you much more sensitive to relevant information as you contact it.
|
||||||
|
Working through a problem in the background will snap your attention to anything you see that can help.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There are online communities for almost everything out there somewhere and most are happy to share with people who are genuinely interested.
|
||||||
|
Find a group that is already doing what you want to do and ask.
|
||||||
|
Ask publicly at first rather than with private messages.
|
||||||
|
Asking will often spark a discussion allowing the debate on the topic to inform and guide you to the things you need to know.
|
||||||
|
Reddit is a great space when you find the right subreddits (and avoid the unpleasant ones).
|
||||||
|
Social media is also very helpful, and a good old Google search will turn up tons of places people congregate to talk about their projects.
|
||||||
|
It is often better to search for a community than just looking up the topic itself.
|
||||||
|
The community will have already filtered out the bad information for you.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Another resource I have found invaluable is podcasts.
|
||||||
|
The world of podcasting has exploded in the last couple years and it now covers every topic imaginable.
|
||||||
|
I find that a good way to get started is to try more general podcasts until you find one you like.
|
||||||
|
If you know exactly what you want to find, looking for a subject specific podcast is great.
|
||||||
|
but they tend to be a little less widely known and harder to find.
|
||||||
|
This is especially true if you are just starting into an area and don’t know the various experts in the field.
|
||||||
|
Something like the Joe Rogan Experience or the Tim Ferriss Show (general but with a focus on performance) have a wide variety of guests who are experts in a field.
|
||||||
|
Many of the experts have their own shows, books, or recommendations for new people getting into the field.
|
||||||
|
You can specialise more as you get more familiar with the podcasting space and start to get to know the names and work of the people working in your area of interest..
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Whether you are using a library computer, a Raspberry Pi, or a smartphone to access information online you can learn all your life.
|
||||||
|
The variety that Reddit, podcasts and Google contain give you unprecedented access to anything that interests you.
|
||||||
|
So go ahead and jump in, enjoy the ride.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thank you for reading.
|
||||||
|
</p>
|
||||||
59
blog/SpeedReadingWorkbook.html
Executable file
59
blog/SpeedReadingWorkbook.html
Executable file
|
|
@ -0,0 +1,59 @@
|
||||||
|
id: srw
|
||||||
|
title: Speed Reading Workbook
|
||||||
|
previous: tw
|
||||||
|
next: gs
|
||||||
|
date: 2021-07-10
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Speed Reading Workbook
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I have finally finished this workbook.
|
||||||
|
It has languished as a pdf file only for a couple of months while I worked on other things.
|
||||||
|
I wanted to have it as a functional epub file before I posted it here.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I spend a fair bit of time in the last couple weeks looking at extracted epub files to figure out their structure and the formatting that I needed to do to get everything working.
|
||||||
|
It was pretty fun and like the website I really enjoyed doing it by hand.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This workbook is designed as help with practicing Tim Ferriss' speed reading technique.
|
||||||
|
You can see his full explanation of it <a href="https://tim.blog/2009/07/30/speed-reading-and-accelerated-learning">here</a>.
|
||||||
|
The workbook uses public domain text (Grimm's fairy tales) as the practice material and adds in the formatting as you work through it.
|
||||||
|
Then takes it away to see if you can maintain the speed.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I chose Grimm's fairy tales because they are easy to read for a variety of reading levels.
|
||||||
|
My first iteration was using some of Seneca's letters but they were too hard to follow while trying to read quickly for the first time.
|
||||||
|
I decided that as much as I loved the idea of sneaking some philosophy into the workbook it detracted from the actual skill that I was trying to build.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This particular technique is one that I have been using for a few years.
|
||||||
|
I mainly use it for non fiction as it is definitely a bit of a strain to keep up for any length of time, so leisure reading just doesn't fit.
|
||||||
|
I find that going through a text a couple of times fast as opposed to once slowly helps with both recall and highlighting the important points.
|
||||||
|
Especially if you pause to take notes once in a while and try to write down the important points without referencing the book in between readings.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
After each story is a short section with the word count of the book to save time calculating your reading speed, and the last story of each section has some simple questions to get a ballpark of your retention while reading at an increased speed.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I hope that this is as useful to others as it has been to me.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="/assets/files/SpeedReadingWorkbook.epub" download>Epub Download here</a><br><a href="/assets/files/SpeedReadingWorkbook.pdf" download>PDF Download here</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
Any feedback on this is welcome.
|
||||||
|
I am looking into the possiblity of making a tool that lets you add the speed reading formatting of your choice to your own text on this website.
|
||||||
|
That would let people make their own practice material if they wanted more then what was in the book.
|
||||||
|
</p>
|
||||||
76
blog/TheFoundation.html
Executable file
76
blog/TheFoundation.html
Executable file
|
|
@ -0,0 +1,76 @@
|
||||||
|
id: foundation
|
||||||
|
title: The Foundation
|
||||||
|
previous: mop
|
||||||
|
next: sdl
|
||||||
|
date: 2021-01-22
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
The Foundation
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
I think that the most important part of productivity is self care.
|
||||||
|
You can have all the neat, time saving tricks in the world but if you are tired, can’t focus, or anything else it becomes much harder to implement them.
|
||||||
|
Therefore ensuring that you can perform at your best often saves much more time then it takes.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There is always a tradeoff when looking at time spent on an activity to improve your performance elsewhere.
|
||||||
|
In the long run I think it is almost always worth it.
|
||||||
|
If you are pressed up against a deadline and you really need to get something finished then of course making sure you exercise and get enough sleep is not going to be as important as just grinding out your work.
|
||||||
|
Something like that should not take more than a couple of days though.
|
||||||
|
Any longer and the value judgement flips.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I really like the way that James Altucher puts it in his book Choose Yourself.
|
||||||
|
There are a few core components that you need to take care of in order to function at your best.
|
||||||
|
He specifies four: physical health, mental health, emotional health and spiritual health.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Physical health is all the things that most of us know: exercise, eat well, sleep enough.
|
||||||
|
They are the easiest ones to measure so if you are starting from scratch they are a good place to start.
|
||||||
|
You don’t need to exercise for hours, eat a perfect diet, and religiously monitor your sleep environment and practices.
|
||||||
|
You can and you will get better results but it takes more time and effort.
|
||||||
|
If you want to stay simple you can take walks a couple times a day (the time outside especially also helps with some of the other areas), avoid processed foods (shop around the perimeter of the grocery store is often a good suggestion) and make sure you are getting around 8 hours of sleep at around the same time every night.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
He refers to mental health as exercising the brain.
|
||||||
|
This is not quite the same as the way mental health is commonly used and is in no way a replacement for therapy or that type of mental work.
|
||||||
|
For your mental health he suggests trying to generate 10 ideas every day.
|
||||||
|
This is a fantastic exercise and also leaves you with a bunch of ideas you can pursue if you are ever looking for a change or just something to do.
|
||||||
|
They don’t have to be good, just get a list of 10 done.
|
||||||
|
Reading, math, programming, any sort of puzzle (sudoku, crossword etc), writing, drawing, sculpting or anything else that fits into the learning, puzzle, or creative fields will help support the health of your mind.
|
||||||
|
A lot of skill development fits in here and it is a good place to invest time to build marketable skills.
|
||||||
|
If you want to keep this minimal try reading a little before bed (learning something) and getting your ideas down (brain exercise).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We are social animals and emotional health fits into that.
|
||||||
|
Even for the introverts (like me) it is important to do something with others.
|
||||||
|
Your preferences can dictate what that activity is but do something.
|
||||||
|
Calling a friend for a chat, playing games together whether online or in person (if online try to use voice), or going to a group activity (sports, games, book club) all fit in here.
|
||||||
|
Make sure that you do something each day that leaves you truly happy and not just the dopamine hit that a lot of our technology gives us these days.
|
||||||
|
Baseline for this is to have a conversation, not just small talk, with someone who you genuinely enjoy being around each day.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Spiritual health is different for most people.
|
||||||
|
In general the goal is to spend a little time in a place of peace with yourself.
|
||||||
|
This could come through meditation (any type), prayer or anything else that you feel works.
|
||||||
|
There is a fantastic quote from the French philosopher Blaise Pascal, "All of humanity's problems stem from man's inability to sit quietly in a room alone,".
|
||||||
|
While this may not literally be the case I think intuitively the point he is getting at makes sense.
|
||||||
|
Spending time with yourself is important.
|
||||||
|
The noise of life distracts us from what is going on inside and it is important to give ourselves space to step back and just be.
|
||||||
|
It is very interesting what sort of questions and answers you start coming up with if you commit to sitting in a room and having nothing to do but think for a time.
|
||||||
|
Try to at least take a few minutes each day to just sit.
|
||||||
|
Don’t touch your phone, watch tv, or even read.
|
||||||
|
You don’t have to meditate necessarily, though it can be extremely helpful, just take some time to be you without any distractions.
|
||||||
|
This of the four can be the hardest.
|
||||||
|
We train ourselves to do the opposite and getting started can be very difficult but the benefits are enormous.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I will dive into these topics more deeply another time but for now it is important to keep in mind that no matter how much you are trying to do, taking care of yourself will always pay off.
|
||||||
|
Doing a little something for each of these every day will let you get more done in the time you spend working, enjoy your time more, and help keep you from burning out over the long haul.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thank you for reading.
|
||||||
|
</p>
|
||||||
75
blog/TheMythOfPerfection.html
Executable file
75
blog/TheMythOfPerfection.html
Executable file
|
|
@ -0,0 +1,75 @@
|
||||||
|
id: mop
|
||||||
|
title: The Myth of Perfection
|
||||||
|
previous: onreading
|
||||||
|
next: foundation
|
||||||
|
date: 2021-01-15
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
The Myth of Perfection
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
I am not sure if you have had this problem, maybe you have, maybe you haven’t.
|
||||||
|
It seems to me something that plagues many of us and is often reinforced by our environment.
|
||||||
|
It is expecting perfection from ourselves when we are fundamentally imperfect.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I often try to fit too much in a day.
|
||||||
|
Either planning it too granularly down to 15 minute intervals, or just making an unreasonably long list of things to get done.
|
||||||
|
They could get done in a day for sure if I was a machine.
|
||||||
|
I am not however and life is too variable to plan that way, then when I fail at getting something done, something unforeseen happens and my schedule falls apart, or I just did not properly estimate how long something would take me I feel terrible.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Striving to do more is a good thing I think.
|
||||||
|
We have limited time and it takes work to realise our dreams, however looking only to the future is a sure way to be miserable in the present.
|
||||||
|
I struggle with this.
|
||||||
|
I spend most of my time working towards some future reward, goal, or achievement, I don’t plan my schedule around things that make me feel good or allow me to recuperate.
|
||||||
|
When I inevitably need some time to decompress I feel guilty for taking it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This is something I have been working on recently.
|
||||||
|
Giving myself more space to make mistakes and more time to enjoy the moment.
|
||||||
|
It is hard and I still feel like I should be doing more but I try to do it anyway in the hopes that over time I will accept it.
|
||||||
|
Taking time for myself does allow me to work harder but it never feels that way at the time.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In the fantastic book Deep Work by Cal Newport he speaks to the need to schedule downtime, decide in advance and write it into your calendar to give yourself space.
|
||||||
|
It is often the case that our mind keeps working on a problem when we are no longer directly focussed on it, the eureka moment in the shower or the solution that pops into your head as you are falling asleep.
|
||||||
|
By never taking the step back from the work we block out that diffuse thinking that allows for such intuitive leaps.
|
||||||
|
He also strongly advises having a cutoff time for the work day.
|
||||||
|
A time past which no work is allowed.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have school and a number of projects including this blog that I am working on currently.
|
||||||
|
It makes it hard to back away, it also means that at any point work is just a few steps away.
|
||||||
|
I try to implement a cutoff, but when it gets to that point and my list has only a few items left I more often than not keep working.
|
||||||
|
Then I stay up later to have a little time to decompress and it makes it harder to get up the next morning.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This is doubly painful as it is much easier to schedule the earlier parts of the day then later.
|
||||||
|
People are just waking up and you have not had so much time for things to deviate from the plan.
|
||||||
|
If I am up at 5am I can often fairly solidly follow my schedule until 1 or 2pm, that is 8-9 hours of solid productive time before things begin to fall apart.
|
||||||
|
If I need to run errands, have a short nap, or do any number of other things they can fit into this afternoon time and still give me a few more hours of work before I try to call the day at 5 or 6pm.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If I stay up late and get up later it is much harder to get started.
|
||||||
|
The gym is busy, the world is loud and I am already feeling bad for turning off my alarm.
|
||||||
|
I often have a broken schedule from the start which makes me work later, get less done, and feel worse.
|
||||||
|
The cycle repeats.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I feel like for the most part this is one of the most predominant stresses in my day to day life.
|
||||||
|
I can’t remember a day where I have not gone to bed feeling like I could have done more.
|
||||||
|
I am also aware that this is likely one of the main changes that I could make to improve both my quality of life and productivity.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
When looking at it in the short term it seems counter intuitive, but in the long term a more reliably planned routine including time for rest and relaxation will reduce burnout and allow me to try and find what that ideal level of work is that I can accomplish in a day.
|
||||||
|
I feel like my oscillations around this amount are getting smaller.
|
||||||
|
I used to swing far into trying to get far too much done, and then crashing to getting almost nothing done for a number of days.
|
||||||
|
The extremes are now less extreme and I hope that over time it can settle completely into a steady stream of productivity.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thank you for reading.
|
||||||
|
</p>
|
||||||
46
blog/TheStart.html
Executable file
46
blog/TheStart.html
Executable file
|
|
@ -0,0 +1,46 @@
|
||||||
|
id: thestart
|
||||||
|
title: The Start
|
||||||
|
next: onreading
|
||||||
|
date: 2021-01-01
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Where I started:
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
I have always been fairly competitive and enjoyed pushing myself.
|
||||||
|
From sports at a young age to chemistry and computer science in university I don’t generally shy away from the difficult.
|
||||||
|
I am also lazy however and don’t like to exert myself unnecessarily.
|
||||||
|
A classic case of preferring to work smart over hard.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It has only been in the past few years that I have really begun to make a study of performance optimization.
|
||||||
|
There were a few books on studying better that I read before that, but it was never a large focus in life until recently.
|
||||||
|
Like many people who go down this road I got my start with Tim Ferriss’ 4 hour series.
|
||||||
|
His results first approach drew me in quickly and I drew some parallels between what he was suggesting and what I already did.
|
||||||
|
Specifically what I did with games.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have long been an avid gamer, board games, video games, role-playing games and any other type of game I can get my hands on.
|
||||||
|
The structured systems have always fascinated me and I am the sort of player (that some dislike) who spends a large amount of time thinking about the games and their systems.
|
||||||
|
Figuring out how they interact and seeing if any interactions I can find break the system and provide easier or unintended paths to victory.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It was not until I saw his approach to applying the same sort of deconstruction to challenges in life that the two worlds connected.
|
||||||
|
I had always treated games as something separate living in their own space but that is no longer the case.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Over the last few years I have read dozens of books on everything including business, learning, fitness, health (physical and mental), focus, discipline and scheduling.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Like with games however I have run into another problem.
|
||||||
|
Especially with games that are not online my academic interest sort of consumes all the time I spend on the pursuit.
|
||||||
|
Some of the information I have been able to implement but it has not been a large portion.
|
||||||
|
I am aiming to change that.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
My plan is to work to create tools to help facilitate the implementation of the various techniques that I have read about and record my success (or failures) at the implementations themselves.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
As this is my first blog post it is a pretty exciting time, anyone who either reads this near its posting, or who reads this far back (I am committing to one post a week) you have my thanks.
|
||||||
|
</p>
|
||||||
101
blog/ThisWebsite.html
Executable file
101
blog/ThisWebsite.html
Executable file
|
|
@ -0,0 +1,101 @@
|
||||||
|
id: tw
|
||||||
|
title: This Website
|
||||||
|
previous: lt
|
||||||
|
next: srw
|
||||||
|
date: 2021-07-05
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
This Website
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For the last little while I have been working on making this rebuild of my website and it is finally at the point where everything works and it can replace my WordPress one.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am not going to say that it is finished because it certainly isn't, I don't know if it will ever be.
|
||||||
|
I think it is going to keep evolving as my knowledge of website design increases and I discover more of my personal style.
|
||||||
|
In its current state it has all the information of the previous one.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Visually I know that this is a downgrade.
|
||||||
|
Currently it is mostly plain text and images with very little styling, but I love it.
|
||||||
|
It is something that I have created myself from scratch and this has a couple distinct advantages to me.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
I know it inside and out.
|
||||||
|
This means that I can have it do anything I want and have the highest level of control over it possible.
|
||||||
|
If something is not working correctly I can fix it.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
It is independent.
|
||||||
|
With no libraries or outside generators being used if support for something stops it won't affect me.
|
||||||
|
Putting in the extra work now to program it from the ground up means that it won't ever need to be rebuilt because something is no longer supported.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
It is simple.
|
||||||
|
This is not the same as easy.
|
||||||
|
When I first made my WordPress site at the beginning of this year it took me all of a few hours to get it up and running.
|
||||||
|
Not counting moving all the articles over and formatting them this one took weeks.
|
||||||
|
I did not track the time it took, nor did I work a consistent amount of time each day.
|
||||||
|
This counts learning all the html, css, javascript and php.
|
||||||
|
It also includes learning how to set up my own local lamp stach web server at home to test it and make sure everything was working before uploading.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
It is fast.
|
||||||
|
Being written with no extra complexity and with each page being a raw php file means that there is minimal information being sent and minimal extra computation before the page is ready.
|
||||||
|
This makes the site feel much more responsive and is something that I personally appreciate.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
It is mine.
|
||||||
|
It is hard to describe how differently I feel about this website compared to the previous one.
|
||||||
|
The previous one felt like something I curated and took care of, but there was little emotional investment in the site itself.
|
||||||
|
It worked an looked decent so I was not really interested in tweaking or improving it because of that feeling of distance.
|
||||||
|
Now my mind is swimming with all sorts of ideas of things to try, what sort of look I want to end up with, and all sorts of other stuff.
|
||||||
|
I want to iterate on this and improve it.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The whole process has taught me a lot and having even a basic knowledge in these skills is very freeing.
|
||||||
|
I now know how to make what I want web wise and get it up there.
|
||||||
|
I think that personal websites are becoming more and more necessary these days for a few different reasons.
|
||||||
|
Job searching is a big one.
|
||||||
|
Being able to show your work is more important than ever and a personal website lets you share what you do completely on your own terms.
|
||||||
|
The other one is having a space online that is yours.
|
||||||
|
With more and more of our online interactions taking place through some companies portal it is easy to forget how much the interface can influence how we interact.
|
||||||
|
There is also the whole issue of privace when your entire online presence is at the behest of a few companies.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I want to take a minute to talk about the simplicity point that I made earlier.
|
||||||
|
I listened to a really interesting <a href="https://youtu.be/rI8tNMsozo0">talk on simplicity</a>.
|
||||||
|
It is programming focussed so might be a little hard to follow, but I think that the main points apply to anything.
|
||||||
|
The more complicated someting is the more points of failure there are.
|
||||||
|
Ther harder it is to change, and the more unforseen problems we run into.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
It is important to take the time to ensure that the things that we create are as simple as possible while still doing everything they need to do.
|
||||||
|
It often makes them harder to make in the first place but the extra investment of time and energy upfront make maintaining and modifying them much simpler.
|
||||||
|
Overall it saves much more time then it takes, but the time saved is spread out over years and is less noticeable.
|
||||||
|
Kind of like good <a href="/blog/habits">habits</a> where the cost is now and the rewards are later.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am very happy with it so far and look forward to continually working on it and learning more about web design.
|
||||||
|
I am going to be helping my parents with their business website in the near future which is a great application for everything I am learning here.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Thanks for reading
|
||||||
|
</p>
|
||||||
83
blog/WhereDidTimeGo.html
Normal file
83
blog/WhereDidTimeGo.html
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
id: wdtg
|
||||||
|
title: Where Did Time Go?
|
||||||
|
previous: fsdi
|
||||||
|
date: 2024-05-22
|
||||||
|
---
|
||||||
|
|
||||||
|
<h2>Where Did Time Go?</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I keep trying to get to work on personal projects.
|
||||||
|
Expanding this website, making some new ones for a business and some utility things.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am also trying to stay healthy and get better at Brazilian Jiu Jitsu.
|
||||||
|
Sleep enough.
|
||||||
|
Spend time with my Fiance.
|
||||||
|
Learn Japanese.
|
||||||
|
Keep journaling.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I don't know if I am crazy but I feel like life should have time for things like this.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If I am up early enough to spend time building stuff I inevitably get frustrated when I have to stop and get to work.
|
||||||
|
It takes time to get into the flow of building something new and getting a couple of hours (or even an hour) on a weekday is hard.
|
||||||
|
So I wind up working on it on the weekends and just trying to capture ideas that I have throughout the week.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Obviously to me the time is going to work.
|
||||||
|
Very often over the last few months I am spending time outside of regular work hours on work.
|
||||||
|
We are trying to finish off a big project.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In the past most of the jobs that I have worked are physical.
|
||||||
|
Coaching gymnastics, fixing hot tubs, sauna construction.
|
||||||
|
They all require you to be there in person and therefore are not something that you can just casually log on outside of your normal hours.
|
||||||
|
Software development is so much different.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
There is this weird feeling of guilt when spending time coding my own stuff.
|
||||||
|
There is always more work to do at work with most jobs.
|
||||||
|
But software feels different in that this is also something that I like to do on my own time as well.
|
||||||
|
With project deadlines looming and the simplicity of logging onto my work computer instead of my own to do broadly the same thing I feel bad when I spend my own coding time on my own projects.
|
||||||
|
Writing that out sounds insane but it is the case a lot of the time.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Working from home a couple days a week also does not help.
|
||||||
|
My desk is no longer my workshop, but partially an extension of my desk at work.
|
||||||
|
Being able to work remotely feels like a gift.
|
||||||
|
And for a lot of reasons it is.
|
||||||
|
I can do laundry or cook meals during breaks, less commuting.
|
||||||
|
However it really does make the lines blur between work and not, especially when I am wanting to code in my free time.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I think the answer is to treat this job as a physical one.
|
||||||
|
Get a locker, leave my computer there.
|
||||||
|
I wouldn't be able to work from home during regular work time anymore.
|
||||||
|
That also means that I can't work outside of work time.
|
||||||
|
I need that sharp delineation between work and the rest of my life.
|
||||||
|
It just bleeds over too easily for me.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Which brings me to my more general thoughts that everything that we do has a cost associated with the benefit that it brings.
|
||||||
|
We often get excited about the benefits and forget to take the cost into account.
|
||||||
|
Working from home, adopting a new software tool, etc.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I am more and more often finding that the costs are not worth it.
|
||||||
|
It has taken me 2 years to get to this realization with working from home in particular.
|
||||||
|
I think the benefits were front loaded with realizing that I could get things done during work breaks.
|
||||||
|
The costs however were slowly training me over time to see my home desk as a workspace and for my mind to associate the two.
|
||||||
|
And it isn't worth it so I am going to try without and see how that goes.
|
||||||
|
</p>
|
||||||
102
blog/WhyAndGettingLost.html
Executable file
102
blog/WhyAndGettingLost.html
Executable file
|
|
@ -0,0 +1,102 @@
|
||||||
|
id: wgl
|
||||||
|
title: Why and Getting Lost
|
||||||
|
previous: dm
|
||||||
|
next: dmwi
|
||||||
|
date: 2021-04-02
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Why
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
This week I had a fantastic conversation that started a cascade introspection that I feel I need to write about.
|
||||||
|
The question was on the existence of God, more generally on the existence of something outside ourselves, and even more generally the all encompassing question of why?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
All my thoughts seem to circle this question either closely or at a bit of a distance.
|
||||||
|
It is the” big question” and is phrased in all sorts of ways.
|
||||||
|
What is the meaning of it all? Does God exist? What started everything? All lines of inquiry are attempts to answer this question at various scales.
|
||||||
|
We can answer small why’s but it is the question you can keep asking as it gets bigger and bigger until it is unanswerable.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It is important to be able to recognize unanswerable questions and allow them to be.
|
||||||
|
That does not mean that it is useless to pursue answers.
|
||||||
|
The honest pursuit of this question guides us toward the best in ourselves.
|
||||||
|
On the other hand, it is often when we presume we have an answer that things go wrong.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Life beyond survival is each person’s personal quest to try and answer why; a constant exploration.
|
||||||
|
While the answer can never be complete, (the universe is too complicated for that) the search gives life meaning and we can understand it better.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have been focussing a lot on philosophy these days.
|
||||||
|
All forms of inquiry used to be under the umbrella of philosophy before being spun off into sub categories.
|
||||||
|
So in this case I don’t differentiate them when I refer to philosophy in this sense.
|
||||||
|
I have been reading older texts like Seneca’s letters, Epictetus, Laozi and am working my way towards more contemporary philosophers.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
One of the books that is making me think a lot is a much more recent work, not necessarily formal philosophy, called A Field Guide to Getting Lost by Rebecca Solnit.
|
||||||
|
I am almost halfway through.
|
||||||
|
It is a collection of stories about being lost.
|
||||||
|
Not just physically, but also in all sorts of other ways.
|
||||||
|
Lost in history: by tracing back her family history and where the stories have fallen away, people have passed away etc.
|
||||||
|
Lost in life: by struggling to find what to do and where to go with the plan for her life, and others.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The purpose of the book to me seems to be that there are different ways to go about being lost and being comfortable in that state.
|
||||||
|
You can be lost unintentionally.
|
||||||
|
This is when you think you know where you are, move ahead, and then discover that you really have no idea where you might be.
|
||||||
|
This type of being lost is what most of us normally think about when we hear the word lost.
|
||||||
|
It is the type that is generally scary.
|
||||||
|
You find yourself in an unknown space with no preparation, no knowledge, no idea of if you are going to be able to find your way back.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
However you can set out to get lost.
|
||||||
|
You can analyze the space you are moving into and prepare.
|
||||||
|
You can have the confidence going in that you can handle what is going to happen even if you don’t know what that might be.
|
||||||
|
This is the lost that comes with exploration.
|
||||||
|
Refusing to get lost in this way is the refusal to do anything new, the refusal to move out of your comfort zone and, the refusal to grow or change.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It is nearly impossible to live life without getting lost.
|
||||||
|
The question I have had to ask myself while I am reading this book is; do I want to prepare myself and get lost on purpose, wait until getting lost is forced upon me, or try to live without growing or changing doing my best to never get lost.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phrased like that it does not seem like much of a choice.
|
||||||
|
I have never looked at being lost in that way before and I am starting to see how that view has been limiting me.
|
||||||
|
It brings me back to an idea that I heard from Dilbert’s author Scott Adams when he was a guest on a podcast.
|
||||||
|
He focuses almost purely on process and very little on goals.
|
||||||
|
This is because no matter how hard you try you can never be sure how it will turn out.
|
||||||
|
Having rigidly defined goals means that you are expecting life to unfold in a linear manner, no getting lost, no unexpected changes.
|
||||||
|
The road of life is not that smooth.
|
||||||
|
By focusing on process you ensure two things.
|
||||||
|
Firstly, that you are as prepared as you can get.
|
||||||
|
Processes build skill, competence, and more familiarity with whatever subject they surround.
|
||||||
|
They necessarily build the tools that allow you to feel comfortable getting lost.
|
||||||
|
Secondly, processes keep you moving without defining where you need to go.
|
||||||
|
They leave you open to exploration and changing course as opportunities arise.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Scott seems to completely embrace this idea of getting lost on purpose and building in yourself the capability to navigate this state.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In this life there are nearly an infinite number of dimensions to explore.
|
||||||
|
We have the standard 3 spatial dimensions and time of course but often I have disregarded everything else.
|
||||||
|
Those are the dimensions that are objective.
|
||||||
|
The ones that we all agree on but subjectively not all that exists.
|
||||||
|
Ideas, emotions, states of consciousness, spirituality, and anything else where experiences can be explored even though they are different for everyone.
|
||||||
|
I can get lost in them all.
|
||||||
|
It is through this getting lost that I can search for the answer to “why”.
|
||||||
|
I am going to do my best to be prepared and to get lost with intention so that I can search actively and not just have to make the best of wherever I find myself, and whatever tools I have that may or may not help me.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time: 15h 39m
|
||||||
|
</p>
|
||||||
75
blog/Writing.html
Executable file
75
blog/Writing.html
Executable file
|
|
@ -0,0 +1,75 @@
|
||||||
|
id: writing
|
||||||
|
title: Writing
|
||||||
|
previous: lim
|
||||||
|
next: lt
|
||||||
|
date: 2021-05-08
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Writing
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
Missed the post last week.
|
||||||
|
No excuses that I am going to trot forward, but there was something more important going on so I had to prioritize.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have been writing a lot lately.
|
||||||
|
Not necessarily structured writing or with a point for anyone but myself.
|
||||||
|
It has not just been sitting down to write either, it has gotten to the point where I am carrying around a notebook and pen with me everywhere I go.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Most of what I am writing is my thoughts.
|
||||||
|
I am finding it useful for a few reasons.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Firstly it slows me down.
|
||||||
|
While I am writing I am focussed only on that single thought and it really forces me to look at it and analyze it in a way that never happens when I am just thinking.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Secondly it lets me see my thoughts without any of the clouding that memory gives.
|
||||||
|
So much of how we remember things is coloured by our current state of mind and warped by time.
|
||||||
|
Having my thoughts written down lets me know exactly what was going through my head at a given moment.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It would be nice to always have my laptop on me.
|
||||||
|
Keeping my notes digitally does wonders for organization, but it is not practical and I find that physically writing helps with slowing down more.
|
||||||
|
I don’t often transcribe the notes into files but I do keep my notebook organized with dates and page numbers.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The more I am writing the more I want to write, I think that without a doubt it is the most useful habit I have picked up and it both clarifies my thoughts and teaches me about myself.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It also shows where I am confused.
|
||||||
|
Looking back at some of my notes they don’t necessarily make much sense even though the thought felt like it did at the time.
|
||||||
|
This is a practice in communication with myself for now and hopefully these skills will translate into communicating well with others.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I don’t use my phone for notes anymore, it is much slower than both typing on a keyboard and writing by hand, it also has too many other distractions and is just unpleasant to use for this task.
|
||||||
|
I find that overall I am using my phone for less and less.
|
||||||
|
Other than texting and phone calls, everything I use it for these days is something I am trying to cut out, I am honestly debating going back to a clamshell, or at least not carrying my phone with me all the time, but I would rather use it wisely as it is still a fantastic tool.
|
||||||
|
I am looking at it as more of an emergency tool though.
|
||||||
|
If I am lost I can use maps, if I really need to look something up I can.
|
||||||
|
This is quite the tangent but it is just where my mind is going at the moment.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am not going to keep the blog solely focussed on productivity.
|
||||||
|
I find that my mind is moving to philosophy and other questions and I am going to let this evolve with me.
|
||||||
|
It is still something I am very interested in and so I expect it to continue showing up, but I won't be so stringent in my topic selection in the future.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am going to keep writing and hopefully I can keep finding more time to write.
|
||||||
|
Some of it will be useful to others and will hopefully make its way up onto the website but the majority of it is just for me.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I think that it is something that everyone should try, it is a behaviour that is fairly easy to implement; you can just start writing out your inner monologue and who cares what it looks like, it is only for you.
|
||||||
|
It also forces patience and introspection which is something that I can always use more of and that a lot of my day to day life is lacking.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Thanks for reading.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Phone time for the past 2 weeks: 9h 45m
|
||||||
|
</p>
|
||||||
277
pages/ArchServer.html
Executable file
277
pages/ArchServer.html
Executable file
|
|
@ -0,0 +1,277 @@
|
||||||
|
id: archserver
|
||||||
|
title: Arch Server
|
||||||
|
date_created: 2023-08-28
|
||||||
|
date_last_updated: 2023-08-28
|
||||||
|
description: The set up for my Arch cloud server that hosts this website and some other stuff.
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Arch Server
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
The majority of the process to set up this server was followed from <a href="https://sive.rs/ti" target="_blank">here</a>.
|
||||||
|
Here I will outline where I deviated and use workarounds to make all this work on Arch Linux.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Register a Domain -> Create SSH Key</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>No changes</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Create Your Server</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>Step 6: Select Arch as operating system istead of OpenBSD</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Attach Storage -> Point Your Domain Here</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>No changes</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>SSH Into Root</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>Step 9: command to update packages on Arch is <code>pacman -Syu</code> instead of <code>syspatch</code></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Create Your Username</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>Step 2-16: <code>useradd -m <UserName></code> will automatically fill out all the defaults</li>
|
||||||
|
<li>Step 17-20: <code>passwd <UserName></code> to set the users password.</li>
|
||||||
|
<li>Step 21: <code>usermod -aG wheel,wheelnpw <UserName></code> to allow executing as root without password</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Another User?</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>No extra users added</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Secure Your login</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>Step 2: replace <code>doas</code> in command with <code>sudo</code></li>
|
||||||
|
<li>Step 5: replace <code>rcctl</code> in command with <code>systemctl</code></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Format Storage</h3>
|
||||||
|
<p>
|
||||||
|
Here I deviated much more from the steps so I will write out the steps used without referring to Derek's original document.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li><code>ssh <UserName>@yourdomain.name</code></li>
|
||||||
|
<li><code>sudo su</code></li>
|
||||||
|
<li><code>fdisk -l</code> will list the disks available, look for the one with the size of the blockstorage you added to your server.
|
||||||
|
<ul class="ml-10 list-disc">
|
||||||
|
<li>Likely /dev/vdb</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><code>cryptsetup -y -v --type luks2 luksFormat /dev/vdb</code>
|
||||||
|
<ul class="ml-10 list-disc">
|
||||||
|
<li>Will ask for storage name, I used blockstorage</li>
|
||||||
|
<li>Enter your passphrase when asked and confirm it. Make sure you note this down somewhere, you will not be able to access your storage without it.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><code>dd if=/dev/zero of=/dev/mapper/blockstorage status=progress</code>
|
||||||
|
<ul class="ml-10 list-disc">
|
||||||
|
<li>This will write all 0s to the memory of the blockstorage and ensure that the data seen from the outside is random.</li>
|
||||||
|
<li>It will take a long time to complete. status=progress will show you the progress and you will be able to tell when it has completed.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><code>mkfs.ext4 /dev/mapper/blockstorage</code> will create the filesystem on the disk</li>
|
||||||
|
<li><code>mkdir /mnt/blockstorage</code> to create the mountpoint </li>
|
||||||
|
<li><code>chown /mnt/blockstorage <UserName>:<UserName></code> to set ownership to your user</li>
|
||||||
|
<li>Basic commands to manually manage the filesystem
|
||||||
|
<ul class="ml-10 list-disc">
|
||||||
|
<li>To mount the filesystem <code>sudo mount /dev/mapper/blockstorage /mnt/blockstorage</code></li>
|
||||||
|
<li>To unlock the filesystem <code>sudo cryptsetup luksOpen /dev/vdb blockstorage</code></li>
|
||||||
|
<li>To lock the filesystem <code>sudo cryptsetup luksClose blockstorage</code></li>
|
||||||
|
<li>To unmount filesystem <code>sudo umount /mnt/blockstorage</code></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
We don't need to deal with these complex commands each time. We can use aliasing to substitute much simpler commands to remember instead.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li><code>echo "alias mntblk='sudo mount /dev/mapper/blockstorage /mnt/blockstorage' >> .bashrc"</code> will set the mounting command to <code>mntblk</code></li>
|
||||||
|
<li><code>echo "alias unlkblk='sudo cryptsetup luksOpen /dev/vdb blockstorage' >> .bashrc"</code> will set the unlocking command to <code>unlkblk</code></li>
|
||||||
|
<li><code>echo "alias lkblk='sudo cryptsetup luksClose blockstorage' >> .bashrc"</code> will set the locking command to <code>lkblk</code></li>
|
||||||
|
<li><code>echo "alias umntblk='sudo umount /mnt/blockstorage' >> .bashrc"</code> will set the unmounting command to <code>umntblk</code></li>
|
||||||
|
</ul>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
This will still need 2 commands to mount, and 2 more to unmount.
|
||||||
|
I like having these aliased separately just in case I want to run one without the other for some reason.
|
||||||
|
To bring this to 1 command for each I will make 2 more aliases using the ones I just created.
|
||||||
|
You could make each of these 2 using the expanded commands above, but I find this way simpler to read.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li><code>echo "alias m='mntblk && unlkblk' >> .bashrc"</code> will make <code>m</code> mount the system and unlock it</li>
|
||||||
|
<li><code>echo "alias m-x='lkblk && umntblk' >> .bashrc"</code> will make <code>m-x</code> lock the filesystem and unmount it</li>
|
||||||
|
<li>log out and log back in to be able to use these new aliases or run <code>source .bashrc</code></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Use Your Storage</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>No changes</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>FreeFileSync</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>I did not use this</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Verify and Unmount</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>No changes</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Web Server</h3>
|
||||||
|
<p>
|
||||||
|
Ports are not open externally by defaul on Arch.
|
||||||
|
<code>sudo ufw 80</code> will open the port for the web server.
|
||||||
|
Do not open unnecessary ports.
|
||||||
|
Arch is fully capable of hosting an apache server like is used in the guide.
|
||||||
|
I prefer Nginx and so used that.
|
||||||
|
The configuration is a little more complex than apache but I am more familiar with it and it works well for single site hosting.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>install with <code>sudo pacman -S nginx</code></li>
|
||||||
|
<li>enable with <code>sudo systemctl enable nginx.service</code></li>
|
||||||
|
<li>start with <code>sudo systemctl start nginx.service</code></li>
|
||||||
|
</ul>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
When I was testing I was serving static content from /srv/http/domain.com/public_html.
|
||||||
|
In the /etc/nginx/nginx.conf file in the http block I added:
|
||||||
|
</p>
|
||||||
|
<pre><code>
|
||||||
|
server {:
|
||||||
|
server_name yourdomain www.yourdomain
|
||||||
|
location / {:
|
||||||
|
root /srv/http/yourdomain/public_html
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
Run <code>nginx -s reload</code> to reload the configuration file.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Then the html files to be served can be put in whatever folder specified in root and will be served from there.
|
||||||
|
In the end I have my website built and served using SvelteKit and Nginx is working as a proxy for that program.
|
||||||
|
I will go into Svelte in the future.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
To have a secure webserver (https) I need a certificate.
|
||||||
|
</p>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li><code>sudo pacman -S certbot certbot-nginx</code> to install the certbot package and nginx plugin</li>
|
||||||
|
<li><code>sudo certbot --nginx</code> will scan for nginx sites and create certificates</li>
|
||||||
|
<li><code>sudo certbot renew</code> will renew all certificates on the machine managed by certbot.</li>
|
||||||
|
</ul>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
To run this renewal periodically I made certref file in bin containing:
|
||||||
|
</p>
|
||||||
|
<pre><code>
|
||||||
|
#!/bin/bash
|
||||||
|
sudo certbot renew
|
||||||
|
</code></pre>
|
||||||
|
<p>
|
||||||
|
Set permissions to 700 with <code>sudo chmod 700 bin/certref</code>, then added a cronjob to run the refresh once a month.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Simple Website</h3>
|
||||||
|
<p>
|
||||||
|
Can use exactly what is in the guide here.
|
||||||
|
Just make sure the files are located in the root you specified in the Nginx configuration above.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>File Sharing With Pub</h3>
|
||||||
|
<p>
|
||||||
|
Did not set this up with Nginx yet.
|
||||||
|
If I do will update this.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Calendar and Contacts</h3>
|
||||||
|
<p>
|
||||||
|
This is very similar for both Arch and OpenBSD so will list changes
|
||||||
|
Arch does not have htpasswd by default.
|
||||||
|
Install with <code>sudo pacman -S apache</code> then continue.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>Step 2: sudo su</li>
|
||||||
|
<li>Step 3: pacman -S radicale</li>
|
||||||
|
<li>Step 9: systemctl enable radicale.service</li>
|
||||||
|
<li>Step 10: systemctl start radicale.service</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Android and Iphone + Test</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>No changes</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Backups</h3>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>Step 3: replace '/sh' with '/bash' and 'doas' with 'sudo' in the echo command.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Email</h3>
|
||||||
|
<p>
|
||||||
|
I decided to use an external email provider (FastMail) instead of setting up the email verification myself.
|
||||||
|
This was before the explanation for this was published in this article.
|
||||||
|
May try again in the future but for now I am happy with my own email for a few dollars a month that I can move to a different provider if needed
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h3>Git</h3>
|
||||||
|
<p>
|
||||||
|
I use git extensively in my coding projects, configurations, and notes so I wanted to be able to host my own git server.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<ul class="list-decimal">
|
||||||
|
<li>assume root with <code>sudo su</code></li>
|
||||||
|
<li>install with <code>pacman -S git</code></li>
|
||||||
|
<li>in /etc/passwd file set the home directory for the git user to /srv/git</li>
|
||||||
|
<li>created .ssh folder in /srv/git and added an ssh key like above to log into the server</li>
|
||||||
|
<li>enabled with <code>systemctl enable git-daemon.socket</code></li>
|
||||||
|
<li>started with <code>systemctl start git-daemon.socket</code></li>
|
||||||
|
</ul>
|
||||||
|
<br>
|
||||||
|
<p>
|
||||||
|
To make a new project I navigate to /srv/git and make a new project with <code>git -bare init <projectName>.git</code>.
|
||||||
|
Set ownership to git user with <code>chown <projectName>.git git:git</code>.
|
||||||
|
To set the remote origin for a project that is already initialized <code>git remote add origin git@url:/srv/git/<projectName></code>
|
||||||
|
To clone a project from remote to local <code>git clone git://url/<projectName> localName</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<h2>Evolving</h2>
|
||||||
|
<p>
|
||||||
|
This project is slowly but constantly evolving.
|
||||||
|
The above state is how it is running currently and that may change.
|
||||||
|
I will endeavor to update it when things do.
|
||||||
|
Slowly grow from something mostly taken from Derek's guide (thank you so much for that) to something uniquely my own and serving the my exact needs.
|
||||||
|
</p>
|
||||||
98
pages/EdgeDetection.html
Executable file
98
pages/EdgeDetection.html
Executable file
|
|
@ -0,0 +1,98 @@
|
||||||
|
id: ed
|
||||||
|
title: Edge Detection
|
||||||
|
date_created: 2021-02-01
|
||||||
|
date_last_updated: 2021-02-01
|
||||||
|
description: Edge detection algorithm project for a ML course I took for my Masters
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Edge Detection
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
This was a project that I did with two classmates for a parallel programming class.
|
||||||
|
Source code <a href="https://github.com/Avi-1/cp631">here</a>.
|
||||||
|
The programming was done in C except for a python script for image pre-processing (it was just much faster to write).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Edge detection is usually done with convolutions.
|
||||||
|
A convolution is a matrix of values (kernel) that detects the difference in colour density of pixels in an image.
|
||||||
|
The kernel is overlayed on the pixel values in the image and each pixel value is multiplied by the value in the kernel above it.
|
||||||
|
All the resulting values are added together into a single value.
|
||||||
|
The design of the kernel dictates what sort of feature will be detected.
|
||||||
|
A large resulting value indicates the presence of the desired feature.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This is the sample input image we used for some of the testing.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/InputImage.png" alt="Input" />
|
||||||
|
<figcaption>Input image</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
This image has a lot of both horizontal and vertical lines for detection.
|
||||||
|
The image gets converted into grayscale during preprocessing for ease of use.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We used Sobel Kernels as opposed to designing our own.
|
||||||
|
These are very commonly used for edge detection.
|
||||||
|
The larger the dimensions of the kernel the larger an area of the image it inspect.
|
||||||
|
A smaller kernel will only find very well defined edges.
|
||||||
|
3×3 was the smallest kernel that we used.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/Horizontal3x3.png" alt="Horizontal line 3x3 kernel" />
|
||||||
|
<img src="/assets/images/Vertical3x3.png" alt="Vertical line 3x3 kernel" />
|
||||||
|
<figcaption>3x3 Soebel Kernels (left:Horizontal, right:Vertical)</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
These kernels found the very defined edges on the sides of the trees and branches.
|
||||||
|
This includes their reflections in the water below, though the reflection did dampen the edges a fair bit.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/Output3x3.png" alt="3x3 detection output" />
|
||||||
|
<figcaption>3x3 Edge detection output</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
As you can see it picked up almost nothing from the sky in the image.
|
||||||
|
We also tested kernels of size 5×5, 7×7, and 9×9.
|
||||||
|
Here are the 9×9 kernels we used.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/Horizontal9x9.png" alt="Horizontal line 9x9 kernel" />
|
||||||
|
<img src="/assets/images/Vertical9x9.png" alt="Horizontal line 9x9 kernel" />
|
||||||
|
<figcaption>9x9 Soebel Kernels (left:Horizontal, right:Vertical)</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
These large kernels will detect differences in gradient across a much larger portion of the image at once.
|
||||||
|
This results in a much more textured image.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/Output9x9.png" alt="9x9 detection output" />
|
||||||
|
<figcaption>9x9 Edge detection output</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
As you can see the trees are almost a uniform mass of edges.
|
||||||
|
The reflections less so but still very dense.
|
||||||
|
It did also manage to pick up the texture of the clouds.
|
||||||
|
Different kernels are good at detecting different types of edges.
|
||||||
|
A smaller kernel will be much better for sharp edges and will ignore the rest.
|
||||||
|
A larger kernel will get much less well defined edges.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There is also a large difference in the speed of the program, a larger kernel has significantly more operations that need to be performed.
|
||||||
|
After the application of the convolutions the rest of the project was parallelizing this process in an effort to speed it up.
|
||||||
|
We used both Message Passing Interface (MPI) and CUDA for parallelization in order to compare them.
|
||||||
|
MPI uses the CPU and so is limited by the number of cores the CPU of the device has.
|
||||||
|
CUDA uses the graphics card so has many more cores to work with but has more overhead.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/ConvolutionTime.png" alt="Convolution time graph" />
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
Unless you have access to a large number of CPU cores CUDA is almost always better.
|
||||||
|
For a general application as long as you have access to a graphics card CUDA is the way to go.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This project was very enlightening as to how the underlying processes for image recognition work.
|
||||||
|
I have done a little bit of machine learning with convolutional neural networks, but for most libraries this portion is already done for you.
|
||||||
|
Understanding what is going on under the hood was very interesting.
|
||||||
|
</p>
|
||||||
117
pages/Tak.html
Executable file
117
pages/Tak.html
Executable file
|
|
@ -0,0 +1,117 @@
|
||||||
|
id: tak
|
||||||
|
title: Tak
|
||||||
|
date_created: 2021-05-01
|
||||||
|
date_last_updated: 2021-05-01
|
||||||
|
description: My effort at making a functioning python program to play Tak.
|
||||||
|
---
|
||||||
|
<h2>
|
||||||
|
Tak
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
One of my favourite fantasy book series is the Kingkiller Chronicles by Patrick Rothfuss.
|
||||||
|
In the second book The Wise Man’s Fear there is a board game that they play that sounded fascinating.
|
||||||
|
I have always like abstract strategy games and this was his worlds “Chess”; the game that had been around forever, simple rules but deep strategy etc.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I was so excited when I found out that it was being made into a full game by <a href="https://cheapass.com/tak/">Cheapass Games</a>.
|
||||||
|
The rules are available for free on their website.
|
||||||
|
I bought myself a copy and it is a lot of fun.
|
||||||
|
They did an amazing job getting the feel of the game right and it is now for sale on <a href="https://worldbuildersmarket.com/collections/tak-a-beautiful-game">WorldBuilders Market</a>.
|
||||||
|
Proceeds from WorldBuilders go to charity so if you try out the game and enjoy it please consider buying a copy.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
As a project I made a digital copy of the game.
|
||||||
|
Source code <a href="https://github.com/OrthogonalStar/Tak-BoardGame">here</a>.
|
||||||
|
It is written in python 3 and the only extra library it needs to run is pygame.
|
||||||
|
If you want to run the tests you will need pytest as well.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Here is the program interface.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/TakProgram.png" alt="Home Board" />
|
||||||
|
<figcaption>Tak Program</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
The game was a very interesting challenge to implement for a few reasons.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The board size is flexible.
|
||||||
|
It ranges from 3×3 to 8×8 (skipping 7×7 but I am not quite sure why).
|
||||||
|
The rules for victory are the same regardless of board size but the number of pieces each player has access to changes.
|
||||||
|
The board had to be housed in a flexible object that would also dictate the number of pieces.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
While there are only two types of pieces (regular and capstones), the standard pieces can be played in 2 different orientations.
|
||||||
|
Flat placement is the default.
|
||||||
|
It contributes to win conditions and can make stacks.
|
||||||
|
Placing a normal piece as a wall blocks other pieces but does not contribute to your win condition and can only be at the top of a stack.
|
||||||
|
The capstone has the best characteristics of both and can squish walls to flat if it lands on them alone.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/TakPieces.png" alt="Pieces" />
|
||||||
|
<figcaption>Tak pieces (left to right: flat, wall, capstone)</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
Rather than make an object for each piece I built the piece specific rules into the move action.
|
||||||
|
The move is the same at its core for each piece and the only difference is the interaction when one piece lands on top of another.
|
||||||
|
Storing the pieces as integers in a 2d array makes this far simpler.
|
||||||
|
As the interactions depend on both pieces, using an integer makes that comparison very easy.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The game has an interesting 3 dimensional component.
|
||||||
|
The pieces can be stacked on top of one another and a stack can move as far as the stack is high (in a straight line controlled by the player whose piece is at the top) dropping one piece at a minimum on each square along the way.
|
||||||
|
This means that each square in the 2d array needs to contain a stack where new pieces are added to the top.
|
||||||
|
When pieces are lifted off a stack your hand acts like a second stack.
|
||||||
|
Pieces are popped off the top of the square and added to the stack in your hand.
|
||||||
|
Then they are dropped from the “bottom” of this inverted stack as you move.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/CurrentMove-2.png" alt="Move view" />
|
||||||
|
<img src="/assets/images/CurrentDrop-2.png" alt="Drop view" />
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
The comparison needs to be done from the “bottom” of the inverted stack in your hand to the top of the stack that the piece will land on.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
That is the main challenge of the game play.
|
||||||
|
The victory conditions were also challenging.
|
||||||
|
The game has 3 different ways that it can end and 2 possible ways to calculate who won.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The game ends when one player builds a connected line of pieces from one of the sides of the board to the opposite side.
|
||||||
|
The line does not need to be straight but squares do not connect on the diagonal.
|
||||||
|
The victor in this case is the player who has the “road”.
|
||||||
|
If a move creates a road for both players the active player wins.
|
||||||
|
</p>
|
||||||
|
<figure>
|
||||||
|
<img src="/assets/images/Victory.png" alt="Victory" />
|
||||||
|
<figcaption>Victory!</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>
|
||||||
|
The game also ends if either player runs out of pieces or there are no more open spaces on the board.
|
||||||
|
In that case the winner is the player with the control of the most squares of the board.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Both of these need to be checked after each turn and when a winner is found the points are calculated based on the size of the board and the number of pieces left.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Compared to Chess or Go, Tak is a little bit more complicated.
|
||||||
|
This is not through having a significantly large number of rules but the systems intertwine more and are more flexible.
|
||||||
|
This does not mean that it is a better game just different, but it has a similar feeling of depth and timelessness.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The board being stored as an array of integers means that it takes very little memory.
|
||||||
|
That made it simple to store past boards in a stack and implement an undo function.
|
||||||
|
Both to take back moves and even go back to a previous game from the same session.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am pleased with how the game turned out.
|
||||||
|
I am working on other things at the moment but in the future I would like to do two more things with this game.
|
||||||
|
I want to implement it online so that I can play with friends over the internet.
|
||||||
|
I would also like to try and develop an A.I.
|
||||||
|
agent to play the game.
|
||||||
|
I had this in mind when I was writing it so made sure that the GUI was disconnected from the actual mechanics behind the game.
|
||||||
|
This will hopefully make it easier to connect to an agent for training.
|
||||||
|
</p>
|
||||||
61
pages/about.html
Normal file
61
pages/about.html
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
id: about
|
||||||
|
title: About
|
||||||
|
date_created: 2020-01-01
|
||||||
|
date_last_updated: 2023-11-01
|
||||||
|
description: About me
|
||||||
|
---
|
||||||
|
<h2>General</h2>
|
||||||
|
<p>
|
||||||
|
My greatest joy in life is learning new things.
|
||||||
|
Early on I leaned almost exclusively toward the sciences.
|
||||||
|
I still trend that way but my interests have broadened considerably in recent years.
|
||||||
|
Philosophy, science, business, programming, religion, psychology, anything that helps me understand the world better.
|
||||||
|
My specific fascination for the last four years has been computers.
|
||||||
|
They are an unbelievably amazing intersection of so many sciences both physically and in the logic of programming.
|
||||||
|
They also provide the perfect platform for learning and creating.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A close second is making things and tinkering.
|
||||||
|
There is a satisfaction that comes from making or changing something with your own hands that is unique.
|
||||||
|
That is part of the reason that I switched my website from WordPress to something written by hand.
|
||||||
|
Even if I can't make something as good as what I could purchase, it is still mine.
|
||||||
|
I know it intimately and can build or tweak whatever it is to fit my needs exactly.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I read extensively and while my reading list is only getting longer I am always looking for new book recommendations.
|
||||||
|
I listen to a lot of music, almost all styles these days.
|
||||||
|
With a preference for instumentally complex music.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am quite introverted and enjoy interacting with others one on one.
|
||||||
|
I find that my focus on learning things deeply extends to how I interact.
|
||||||
|
One long deep conversation is more pleasant to me than a dozen short ones.
|
||||||
|
I am more interested in talking about each other and our own interests than current events.
|
||||||
|
It does make interactions more work but personally I find it very fulfilling.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have recently discovered just how important independence is to me.
|
||||||
|
I think that removing the worry of money from day to day life has allowed me to focus on what is important to me in a broader sense.
|
||||||
|
I think that it is too easy to give up control of things that are important.
|
||||||
|
To rely on external things that I have no control over.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have been working lately to slowly move my digital life away from cloud services.
|
||||||
|
Hosting my own calendar, contacts, email, backups.
|
||||||
|
There is a sense of peace with that.
|
||||||
|
Knowing that I have control over things that are important to me.
|
||||||
|
It a stress that I had gotten used to and barely noticed.
|
||||||
|
Like not sleeping quite enough for a long time.
|
||||||
|
Didn't notice the effect until it was gone.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I would like to do the same with more of life eventually.
|
||||||
|
Work, food, electricity.
|
||||||
|
Try to make and fix things instead of buying or replacing them.
|
||||||
|
That thought feels right.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It and other feelings about the best way for me to live are things that I am constantly exploring.
|
||||||
|
Trying to live more in line with what feels right internally.
|
||||||
|
A wonderful exploration and adventure.
|
||||||
|
</p>
|
||||||
8
pages/blog.html
Normal file
8
pages/blog.html
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
id: blog
|
||||||
|
title: Blog
|
||||||
|
date_created: 2020-01-01
|
||||||
|
date_last_updated: 2021-05-01
|
||||||
|
description: Chronological articles
|
||||||
|
---
|
||||||
|
<ul class="no-bul" hx-trigger="load" hx-get="/api/articles">
|
||||||
|
</ul>
|
||||||
10
pages/contact.html
Normal file
10
pages/contact.html
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
id: contact
|
||||||
|
title: Contact
|
||||||
|
date_created: 2020-01-01
|
||||||
|
date_last_updated: 2023-07-22
|
||||||
|
description: Contact me
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
I am always happy to meet new people.
|
||||||
|
I can be contacted by email at <a href="mailto:awstin@achubb.com">awstin@achubb.com</a>.
|
||||||
|
</p>
|
||||||
25
pages/garden.html
Normal file
25
pages/garden.html
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
id: garden
|
||||||
|
title: Garden
|
||||||
|
date_created: 2024-07-31
|
||||||
|
date_last_updated: 2024-07-31
|
||||||
|
description: Home page and starting point for exploring my digital garden
|
||||||
|
---
|
||||||
|
<h2>My Garden</h2>
|
||||||
|
<p>
|
||||||
|
Hi all, welcome to the starting point for exploring my digital garden.
|
||||||
|
I am just starting out so things will be sparse as I tend to and grow it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am finding the idea of a digital garden to be much more attractive then a traditional blog.
|
||||||
|
It alligns with how I like to write, organize my information, and explore the web.
|
||||||
|
So I am going to switch the site over to that structure and see where things go from there.
|
||||||
|
I expect the structure to change over time as more information is added and I work out how I want to have it organized.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Some projects that I have worked on
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/garden/archserver">ArchServer</a></li>
|
||||||
|
<li><a href="/garden/tak">Tak</a></li>
|
||||||
|
<li><a href="/garden/ed">Edge Detection</a></li>
|
||||||
|
</ul>
|
||||||
30
pages/gifts.html
Normal file
30
pages/gifts.html
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
id: gifts
|
||||||
|
title: Gifts
|
||||||
|
date_created: 2024-07-01
|
||||||
|
date_last_updated: 2024-07-01
|
||||||
|
description: Getting me gifts
|
||||||
|
---
|
||||||
|
<h2>Gifts</h2>
|
||||||
|
<p>
|
||||||
|
If you are here you are probably thinking of getting me a gift.
|
||||||
|
I do very deeply appreciate it and thank you for the thought.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am not much of a receiving gift person.
|
||||||
|
I don't like having a lot of things and am quite particular about what I do get.
|
||||||
|
I would much rather spend time together.
|
||||||
|
If you can spare the time to sit down and have a nice conversation or do something together that would be wonderful.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
There are a few people in my life that I think are an exception to this rule.
|
||||||
|
If you are one of these people you know it and I say do whatever you see fit.
|
||||||
|
Otherwise if you feel that you must give me something I would suggest cash.
|
||||||
|
Not sure what I will use it for but there are always various things that I am eyeing, usually larger purchases.
|
||||||
|
I will certainly let you know what use it went to.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Regardless, thank you so much, I really appreciate it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Awstin
|
||||||
|
</p>
|
||||||
66
pages/home.html
Normal file
66
pages/home.html
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
id: home
|
||||||
|
title: Home
|
||||||
|
date_created: 2020-01-01
|
||||||
|
date_last_updated: 2024-07-30
|
||||||
|
description: Home page
|
||||||
|
---
|
||||||
|
<section id="about">
|
||||||
|
<h1>Awstin Chubb</h1>
|
||||||
|
<h2>About me</h2>
|
||||||
|
<h3>Short version</h3>
|
||||||
|
<p>
|
||||||
|
I have been a gymnastics coach, hot tub technician, carpenter (saunas), chemist, and now software developer work wise.
|
||||||
|
I am an athlete, tinkerer, and lifelong student of all things.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I have a deep and abiding interest in how the world works and how best I can live within it.
|
||||||
|
Over the last year I have really discovered the importance of independence to me.
|
||||||
|
Of having minimal reliance on external systems that I don't have any control over.
|
||||||
|
Much of my time is slowly working to bring more of this into my life.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Born in Ottawa and living in Toronto, Canada.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you are interested in reading more see my <a href="/about">about</a> page.
|
||||||
|
</p>
|
||||||
|
</section><br>
|
||||||
|
|
||||||
|
<section id="now">
|
||||||
|
<a href="/now">
|
||||||
|
<h2>What am I up to?</h2>
|
||||||
|
</a>
|
||||||
|
</section><br>
|
||||||
|
|
||||||
|
<section id="blog">
|
||||||
|
<h2>Blog</h2>
|
||||||
|
<h3>Most Recent</h3>
|
||||||
|
<ul class="no-bul" hx-trigger="load" hx-get="/api/recentarticles">
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For the full list see my <a href="/blog">Blog.</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</section><br>
|
||||||
|
|
||||||
|
<section id="garden">
|
||||||
|
<h2>Garden</h2>
|
||||||
|
<p>
|
||||||
|
Just starting to work to shift the structure of my website from chronological posts to a digital garden.
|
||||||
|
Start <a href="/garden">here</a>.
|
||||||
|
</section><br>
|
||||||
|
|
||||||
|
<section id="uses">
|
||||||
|
<h2>Uses</h2>
|
||||||
|
<p>
|
||||||
|
Some things that I <a href="/uses">use</a> on a regular basis if not daily.
|
||||||
|
</p>
|
||||||
|
</section><br>
|
||||||
|
|
||||||
|
<section id="contact">
|
||||||
|
<h2>Contact Me</h2>
|
||||||
|
<p>
|
||||||
|
Here is my <a href="/contact">contact</a> information.
|
||||||
|
</p>
|
||||||
|
</section><br>
|
||||||
83
pages/now.html
Normal file
83
pages/now.html
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
id: now
|
||||||
|
title: Now
|
||||||
|
date_created: 2020-01-01
|
||||||
|
date_last_updated: 2024-07-11
|
||||||
|
description: What I am up to now.
|
||||||
|
---
|
||||||
|
<p>
|
||||||
|
Last updated: 2024-07-11
|
||||||
|
</p>
|
||||||
|
<h2>Work</h2>
|
||||||
|
<p>
|
||||||
|
Still in Toronto, still working in software at Amazon.
|
||||||
|
My team writes tools to help automate and test new machine setups.
|
||||||
|
Just got a promotion from L4 (entry level software engineer) to L5 (regular software engineer).
|
||||||
|
Was not something that I chased but there is an "up or out" when in the L4 position so it is really nice to have that worry off my mind.
|
||||||
|
</p>
|
||||||
|
<h2>Life</h2>
|
||||||
|
<p>
|
||||||
|
I am engaged and living with the most wonderful woman I have ever met.
|
||||||
|
Planning our wedding (slowly bit by bit) for next spring.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
My brother is getting married soon, so we are preparing to travel back to my hometown for that in a week.
|
||||||
|
He is the happiest I have ever seen him and I am so grateful for that.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Actually planning for the long term financially now that I am lucky enough to have a job that leaves me with money to save and invest after the bills are payed.
|
||||||
|
It still feels new to have that cushion and to plan long term, definitely enjoying it.
|
||||||
|
</p>
|
||||||
|
<h2>Brazilian Jiu-Jitsu</h2>
|
||||||
|
<p>
|
||||||
|
Got my blue belt just before the new year.
|
||||||
|
Still training as much as I can.
|
||||||
|
The team here at GB Toronto has become an external family.
|
||||||
|
I am so grateful for the community.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Competiton is this Saturday.
|
||||||
|
I have made the weight, however they opened the weigh in on Friday evening which is unusual.
|
||||||
|
Means that I can cut water weight aggressively and re-hydrate before the first match so I don't feel terrible.
|
||||||
|
So putting a little of it back on.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We have a lot of people from the school going.
|
||||||
|
It is going to be a very fun day.
|
||||||
|
</p>
|
||||||
|
<h2>Learning</h2>
|
||||||
|
<p>
|
||||||
|
I am working to learn Japanese and Portuguese on Duolingo.
|
||||||
|
I love the program and it is 100% worth paying for, but the fact that even when paying it keeps asking for ratings, putting widgets on my home screen, or turning on notifications bothers me.
|
||||||
|
You already have my money now please don't bother me.
|
||||||
|
Finding the lessons really helpful.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I started studying for the CompTIA ITF+ certification test but that has fallen off in the last little bit.
|
||||||
|
I have been learning hardware and networking playing with my home network and a small homelab consisting of my NAS and a few raspberry pis.
|
||||||
|
Just not very stoked on going for certifications and much prefer to learn this stuff by just playing around with it than reading textbooks and doing practice questions.
|
||||||
|
</p>
|
||||||
|
<h2>Tinkering</h2>
|
||||||
|
<p>
|
||||||
|
Have just finished setting up some self hosted software.
|
||||||
|
Firefly for budgeting and personal finance.
|
||||||
|
Pihole for local network addblocking and as a DNS server.
|
||||||
|
Syncthing to keep all my devices synchronized.
|
||||||
|
Slowly working to have more and more of my digital life hosted myself, and it feels good to have control over these things even though it is more work.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This website is the main thing that I have been working with.
|
||||||
|
I rebuilt it using HTMX and a Rust backend.
|
||||||
|
Added a <a href="/uses">uses page</a> recently with just a list of the common things that I use every day.
|
||||||
|
Going to add links and other curated stuff next.
|
||||||
|
I love these pages on other personal websites and want to contribute to that.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am looking at restructuring the site into more of a <a href="https://hapgood.us/2015/10/17/the-garden-and-the-stream-a-technopastoral/">garden than a stream.</a>
|
||||||
|
It is a structure that I find much more interesting and fits with how I want to build much more.
|
||||||
|
Treating most things as timeless and growing as opposed to a strict timeline.
|
||||||
|
It is how I keep most of my personal notes, dates more of as reference than things needing to be in order.
|
||||||
|
Will see how that works.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Awstin
|
||||||
|
</p>
|
||||||
165
pages/uses.html
Normal file
165
pages/uses.html
Normal file
|
|
@ -0,0 +1,165 @@
|
||||||
|
id: uses
|
||||||
|
title: Uses
|
||||||
|
date_created: 2024-06-30
|
||||||
|
date_last_updated: 2024-06-30
|
||||||
|
description: Things that I use
|
||||||
|
---
|
||||||
|
<h2>Things I use</h2>
|
||||||
|
<h3>Analog stuff</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b>Bike:</b> Trek... something. Hybrid. I have had it for almost 15 years and it shows no signs of slowing down as long as I periodically replace some parts.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Bag:</b> <a href="https://kifaru.net/en-ca/products/checkpoint">Kifaru Checkpoint</a>. Never thought that an expensive backpack was worth the investment. I was so wrong. I tend to fill my bag pretty full for daily use and the fitted backplate makes it so that I notice almost no difference carrying it no matter what I have packed.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Chair:</b> <a href="https://www.ergocentric.com/product-category/tcentric-hybrid-task-chair/?filter_series=tcentric-hybrid">ErgoCentric t-centric hybrid</a>. Canadian ergonomic chair company. Was able to go and try it out in the showroom and get fitted for the chair. Fantastic and fully worth the price, especially with how much time I spend sitting in it.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Home Fitness:</b> <a href="https://treadmillfactory.ca/collections/cast-iron-kettlebells">Extreme Monkey Kettlebells</a>, yoga mat blocks and straps, <a href="https://www.ironmind.com/product-info/ironmind-grippers/captains-of-crush-grippers/">Captains of crush grippers</a>, various therabands and other elastics.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Hardware</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b>Desktop:</b> My desktop is one that I built myself quite a while ago. AMD RX580 GPU and recently upgraded the cpu and memory to Ryzen 5 4500 and 32G of Crucial DDR4. 2.5Gb network card
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Network Attached Storage:</b> Built it myself with a Jonsbo N1 mini ITX case, 32G RAM and a Ryzen 3 4100 cpu. 2 12TB Seagate Ironwolf Hard drives and a 500Gb NVME SSD. 2.5Gb network card
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Laptop:</b> 2018 Asus Zenbook 3, have replaced the battery in it so is still going strong. If I was to buy a laptop today I would certianly go for a <a href="https://frame.work/ca/en">Framework</a>. Really believe in their mission and value being able to fix and upgrade my stuff.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Phone:</b> Samsung Galaxy A20, got it used. Gets the job done.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Keyboard:</b> Built a <a href="https://github.com/davidphilipbarr/Sweep">Ferriss Sweep</a>, looking at building another so that I can keep one at work and one at home. Has made such a difference to my comfort when typing. Kalih Choc blue switches.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Mouse:</b> SteelSeries something, currently using a wired mouse, have a logitech MxMaster and logitech MxAnywhere but the logitech univesal receiver dongle does not work through the KVM so don't use them at home. On my list to see if I can figure that out but not a high priority as I don't use my mouse all that much.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b><a href="https://www.raspberrypi.com/">Raspberry Pis</a>:</b> I have 2 raspberry pis in use at the moment and 1 more that I have yet to decide what to do with.
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
2GB Pi4 runs my vpn, dns, network wide ad blocking
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
8GB Pi4 runs some of my own scripts and programs, will also be hosting a home website when I get around to writing that
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
8GB Pi5 still unused until I both decide what to use it for and take the time to get it set up
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>General gadgets:</b>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.amazon.ca/gp/product/B081251PBW">KVM</a> to switch between desktop and work computer when I am working from home
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.amazon.ca/gp/product/B08XWK4HNT">5 port 2.5Gb switch</a>, and <a href="https://www.amazon.ca/gp/product/B00A128S24">5 port 1Gb switch</a> so that all of my devices that can be hard wired are. The 2.5Gb switch is to have that bandwidth between my desktop and NAS for fast file transfer.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>E-reader:</b> <a href="https://www.kobo.com/">Kobo</a> touch 2.0, reliable, though the screen has taken some damage over the years, might be time to replace. I like the Kobo because of they support epub format which is open and I think should be the default for all ebooks.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Software</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b>Writing/Programming:</b> <a href="https://neovim.io/">Neovim</a> with a fair few plugins. <a href="https://github.com/nvim-telescope/telescope.nvim">Telescope</a> and <a href="https://github.com/ThePrimeagen/harpoon/tree/harpoon2">Harpoon</a> for file navigation, <a href="https://en.wikipedia.org/wiki/Language_Server_Protocol">lsp</a> and <a href="https://github.com/nvim-treesitter/nvim-treesitter">Treesitter</a> for coding, <a href="https://github.com/folke/zen-mode.nvim">Zenmode</a> for minimal distraction writing.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Finance:</b> <a href="https://www.firefly-iii.org/">Firefly</a> hosted on my NAS to budget and track my finances. <a href="https://github.com/victorbalssa/abacus">Abacus</a> on my phone to interact with Firefly on the go.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Media:</b>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://jellyfin.org/">Jellyfin</a> hosted on my NAS for movies, shows, and music/audiobooks
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/jmshrv/finamp">Finamp</a> on my phone to stream music/audiobooks from Jellyfin
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://calibre-ebook.com/">Calibre</a> for managing my ebook library
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://lzone.de/liferea">Liferea</a> RSS feed reader for blogs and webcomics that I follow
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://freetubeapp.io/">Freetube</a> for watching Youtube without sign in, tracking etc.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Synchronization:</b> <a href="https://syncthing.net/">SyncThing</a> hosted on my NAS to keep files synced on my laptop, desktop, and phone. Lets my laptop and desktop function as essentially one computer
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Browser:</b> <a href="https://www.mozilla.org/en-CA/firefox/new/">Firefox</a> browser with <a href="https://ublockorigin.com/">Ublock Origin</a>, <a href="https://privacybadger.org/">Privacy Badger</a>, and <a href="https://lydell.github.io/LinkHints/">Link hints</a>, plugins
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Operating Systems:</b>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Desktop, laptop, and cloud server: <a href="https://archlinux.org/">Arch linux</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
NAS: <a href="https://www.truenas.com/truenas-scale/">TrueNas Scale</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Window Manager:</b> <a href="https://i3wm.org/">i3 tiling window manager</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Terminal:</b> <a href="https://github.com/alacritty/alacritty">Alacritty</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Shell:</b> <a href="https://fishshell.com/">Fish</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Terminal Multiplexer:</b> <a href="https://zellij.dev/">Zellij</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Programming Languages:</b> <a href="https://www.rust-lang.org/">Rust</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Memory:</b> <a href="https://apps.ankiweb.net/">Anki</a> flashcard app
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Services</h3>
|
||||||
|
<p>
|
||||||
|
I try to pay for the services that I use. I find that "free" services don't often respect the user very much and have been getting worse pretty quickly lately.
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b>Password Manager:</b> <a href="https://1password.com/">1Password</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Music:</b> <a href="https://spotify.com/">Spotify</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Server:</b> <a href="https://www.vultr.com/">Vultr</a> minimal size instance
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Domain Registrar:</b> <a href="https://porkbun.com/">PorkBun</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Backups:</b> <a href="https://www.backblaze.com/">Backblaze</a>, encrypted locally before uploading, periodic backup from my NAS.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Email:</b> <a href="https://www.fastmail.com/">FastMail</>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Search:</b> <a href="https://kagi.com/">Kagi</a> payed alternative to Google. So much different, any time that I use Google on another device I am reminded how bad the search has gotten
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Language Learning:</b> <a href="https://www.duolingo.com/learn">Duolingo</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
135
src/database/article.rs
Normal file
135
src/database/article.rs
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
use crate::database::PsqlData;
|
||||||
|
use futures_util::TryStreamExt;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use sqlx::postgres::PgPool;
|
||||||
|
use std::{
|
||||||
|
error::Error,
|
||||||
|
path::Path,
|
||||||
|
};
|
||||||
|
use time::{macros::format_description, Date};
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
|
||||||
|
pub struct Article {
|
||||||
|
pub id: i32,
|
||||||
|
pub reference: String,
|
||||||
|
pub title: String,
|
||||||
|
pub content: String,
|
||||||
|
pub previous: Option<String>,
|
||||||
|
pub next: Option<String>,
|
||||||
|
pub date: Date,
|
||||||
|
pub description: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Article {
|
||||||
|
pub fn from_file<P>(file_name: P) -> Self
|
||||||
|
where
|
||||||
|
P: AsRef<Path>,
|
||||||
|
{
|
||||||
|
let mut reference: Option<String> = None;
|
||||||
|
let mut title: Option<String> = None;
|
||||||
|
let mut previous: Option<String> = None;
|
||||||
|
let mut next: Option<String> = None;
|
||||||
|
let mut date: Option<Date> = None;
|
||||||
|
let mut description: Option<String> = None;
|
||||||
|
let mut lines: Vec<String> = super::read_lines(file_name);
|
||||||
|
lines.reverse();
|
||||||
|
while lines.len() > 0 {
|
||||||
|
let line: String = lines.pop().expect("Something went terribly wrong here");
|
||||||
|
if line.contains("id: ") {
|
||||||
|
reference = Some(line.clone().replace("id: ", ""));
|
||||||
|
} else if line.contains("title: ") {
|
||||||
|
title = Some(line.clone().replace("title: ", ""));
|
||||||
|
} else if line.contains("previous: ") {
|
||||||
|
previous = Some(line.clone().replace("previous: ", ""));
|
||||||
|
} else if line.contains("next: ") {
|
||||||
|
next = Some(line.clone().replace("next: ", ""));
|
||||||
|
} else if line.contains("date: ") {
|
||||||
|
let format = format_description!("[year]-[month]-[day]");
|
||||||
|
date = Some(
|
||||||
|
Date::parse(&line.clone().replace("date: ", ""), format).expect("not a date"),
|
||||||
|
);
|
||||||
|
} else if line.contains("description: ") {
|
||||||
|
description = Some(line.clone().replace("description: ", ""));
|
||||||
|
} else if line.eq("---") {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lines.reverse();
|
||||||
|
let contents: String = lines.join("\n");
|
||||||
|
Article {
|
||||||
|
id: 0,
|
||||||
|
reference: reference.unwrap(),
|
||||||
|
title: title.unwrap(),
|
||||||
|
content: contents,
|
||||||
|
previous,
|
||||||
|
next,
|
||||||
|
date: date.unwrap(),
|
||||||
|
description,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn read_by_reference(
|
||||||
|
pool: &PgPool,
|
||||||
|
reference: &String,
|
||||||
|
) -> Result<Box<Self>, Box<dyn Error>> {
|
||||||
|
let result = sqlx::query_as!(
|
||||||
|
Self,
|
||||||
|
"SELECT * FROM articles WHERE reference = $1",
|
||||||
|
reference
|
||||||
|
)
|
||||||
|
.fetch_one(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(Box::new(result))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PsqlData for Article {
|
||||||
|
async fn read_all(pool: &PgPool) -> Result<Vec<Box<Self>>, Box<dyn Error>> {
|
||||||
|
crate::psql_read_all!(Self, pool, "articles")
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn read(pool: &PgPool, id: i32) -> Result<Box<Self>, Box<dyn Error>> {
|
||||||
|
crate::psql_read!(Self, pool, id, "articles")
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn insert(&self, pool: &PgPool) -> Result<(), Box<dyn Error>> {
|
||||||
|
sqlx::query!(
|
||||||
|
"INSERT INTO articles (reference, title, content, previous, next, date, description) VALUES ($1, $2, $3, $4, $5, $6, $7)",
|
||||||
|
self.reference,
|
||||||
|
self.title,
|
||||||
|
self.content,
|
||||||
|
self.previous,
|
||||||
|
self.next,
|
||||||
|
self.date,
|
||||||
|
self.description,
|
||||||
|
)
|
||||||
|
.execute(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn update(&self, pool: &PgPool) -> Result<(), Box<dyn Error>> {
|
||||||
|
sqlx::query!(
|
||||||
|
"UPDATE articles SET reference=$1, title=$2, content=$3, previous=$4, next=$5, date=$6, description=$7 WHERE id=$8",
|
||||||
|
self.reference,
|
||||||
|
self.title,
|
||||||
|
self.content,
|
||||||
|
self.previous,
|
||||||
|
self.next,
|
||||||
|
self.date,
|
||||||
|
self.description,
|
||||||
|
self.id,
|
||||||
|
)
|
||||||
|
.execute(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn delete(&self, pool: &PgPool) -> Result<(), Box<dyn Error>> {
|
||||||
|
let id = &self.id;
|
||||||
|
crate::psql_delete!(id, pool, "articles")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,14 @@
|
||||||
use sqlx::postgres::{PgPool, PgPoolOptions};
|
use sqlx::postgres::{PgPool, PgPoolOptions};
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::error::Error;
|
use std::{
|
||||||
|
error::Error,
|
||||||
|
fs::File,
|
||||||
|
io::{BufRead, BufReader},
|
||||||
|
path::Path,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub mod article;
|
||||||
|
pub mod page;
|
||||||
|
|
||||||
pub async fn establish_connection() -> Result<PgPool, Box<dyn Error>> {
|
pub async fn establish_connection() -> Result<PgPool, Box<dyn Error>> {
|
||||||
let db_url = match env::var("DATABASE_URL") {
|
let db_url = match env::var("DATABASE_URL") {
|
||||||
|
|
@ -15,3 +23,26 @@ pub async fn establish_connection() -> Result<PgPool, Box<dyn Error>> {
|
||||||
|
|
||||||
Ok(pool)
|
Ok(pool)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait PsqlData {
|
||||||
|
async fn read_all(pool: &PgPool) -> Result<Vec<Box<Self>>, Box<dyn Error>>;
|
||||||
|
|
||||||
|
async fn read(pool: &PgPool, id: i32) -> Result<Box<Self>, Box<dyn Error>>;
|
||||||
|
|
||||||
|
async fn insert(&self, pool: &PgPool) -> Result<(), Box<dyn Error>>;
|
||||||
|
|
||||||
|
async fn update(&self, pool: &PgPool) -> Result<(), Box<dyn Error>>;
|
||||||
|
|
||||||
|
async fn delete(&self, pool: &PgPool) -> Result<(), Box<dyn Error>>;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// The output is wrapped in a Result to allow matching on errors.
|
||||||
|
// Returns an Iterator to the Reader of the lines of the file.
|
||||||
|
fn read_lines<P>(filename: P) -> Vec<String>
|
||||||
|
where
|
||||||
|
P: AsRef<Path>,
|
||||||
|
{
|
||||||
|
let file = File::open(filename).unwrap();
|
||||||
|
BufReader::new(file).lines().flatten().collect()
|
||||||
|
}
|
||||||
|
|
|
||||||
126
src/database/page.rs
Normal file
126
src/database/page.rs
Normal file
|
|
@ -0,0 +1,126 @@
|
||||||
|
use crate::database::PsqlData;
|
||||||
|
use futures_util::TryStreamExt;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use sqlx::postgres::PgPool;
|
||||||
|
use std::{error::Error, path::Path};
|
||||||
|
use time::{macros::format_description, Date};
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
|
||||||
|
pub struct Page {
|
||||||
|
pub id: i32,
|
||||||
|
pub reference: String,
|
||||||
|
pub title: String,
|
||||||
|
pub content: String,
|
||||||
|
pub date_created: Date,
|
||||||
|
pub date_last_updated: Date,
|
||||||
|
pub description: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Page {
|
||||||
|
pub fn from_file<P>(file_name: P) -> Self
|
||||||
|
where
|
||||||
|
P: AsRef<Path>,
|
||||||
|
{
|
||||||
|
let mut reference: Option<String> = None;
|
||||||
|
let mut title: Option<String> = None;
|
||||||
|
let mut date_created: Option<Date> = None;
|
||||||
|
let mut date_last_updated: Option<Date> = None;
|
||||||
|
let mut description: Option<String> = None;
|
||||||
|
let mut lines: Vec<String> = super::read_lines(file_name);
|
||||||
|
lines.reverse();
|
||||||
|
while lines.len() > 0 {
|
||||||
|
let line: String = lines.pop().expect("Something went terribly wrong here");
|
||||||
|
if line.contains("id: ") {
|
||||||
|
reference = Some(line.clone().replace("id: ", ""));
|
||||||
|
} else if line.contains("title: ") {
|
||||||
|
title = Some(line.clone().replace("title: ", ""));
|
||||||
|
} else if line.contains("date_created: ") {
|
||||||
|
let format = format_description!("[year]-[month]-[day]");
|
||||||
|
date_created = Some(
|
||||||
|
Date::parse(&line.clone().replace("date_created: ", ""), format)
|
||||||
|
.expect("not a date"),
|
||||||
|
);
|
||||||
|
} else if line.contains("date_last_updated: ") {
|
||||||
|
let format = format_description!("[year]-[month]-[day]");
|
||||||
|
date_last_updated = Some(
|
||||||
|
Date::parse(&line.clone().replace("date_last_updated: ", ""), format)
|
||||||
|
.expect("not a date"),
|
||||||
|
);
|
||||||
|
} else if line.contains("description: ") {
|
||||||
|
description = Some(line.clone().replace("description: ", ""));
|
||||||
|
} else if line.eq("---") {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lines.reverse();
|
||||||
|
let contents: String = lines.join("\n");
|
||||||
|
Page {
|
||||||
|
id: 0,
|
||||||
|
reference: reference.unwrap(),
|
||||||
|
title: title.unwrap(),
|
||||||
|
content: contents,
|
||||||
|
date_created: date_created.unwrap(),
|
||||||
|
date_last_updated: date_last_updated.unwrap(),
|
||||||
|
description,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn read_by_reference(
|
||||||
|
pool: &PgPool,
|
||||||
|
reference: &String,
|
||||||
|
) -> Result<Box<Self>, Box<dyn Error>> {
|
||||||
|
let result = sqlx::query_as!(Self, "SELECT * FROM pages WHERE reference = $1", reference)
|
||||||
|
.fetch_one(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(Box::new(result))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PsqlData for Page {
|
||||||
|
async fn read_all(pool: &PgPool) -> Result<Vec<Box<Self>>, Box<dyn Error>> {
|
||||||
|
crate::psql_read_all!(Self, pool, "pages")
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn read(pool: &PgPool, id: i32) -> Result<Box<Self>, Box<dyn Error>> {
|
||||||
|
crate::psql_read!(Self, pool, id, "pages")
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn insert(&self, pool: &PgPool) -> Result<(), Box<dyn Error>> {
|
||||||
|
sqlx::query!(
|
||||||
|
"INSERT INTO pages (reference, title, content, date_created, date_last_updated, description) VALUES ($1, $2, $3, $4, $5, $6)",
|
||||||
|
self.reference,
|
||||||
|
self.title,
|
||||||
|
self.content,
|
||||||
|
self.date_created,
|
||||||
|
self.date_last_updated,
|
||||||
|
self.description,
|
||||||
|
)
|
||||||
|
.execute(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn update(&self, pool: &PgPool) -> Result<(), Box<dyn Error>> {
|
||||||
|
sqlx::query!(
|
||||||
|
"UPDATE pages SET reference=$1, title=$2, content=$3, date_created=$4, date_last_updated=$5, description=$6 WHERE id=$7",
|
||||||
|
self.reference,
|
||||||
|
self.title,
|
||||||
|
self.content,
|
||||||
|
self.date_created,
|
||||||
|
self.date_last_updated,
|
||||||
|
self.description,
|
||||||
|
self.id
|
||||||
|
)
|
||||||
|
.execute(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn delete(&self, pool: &PgPool) -> Result<(), Box<dyn Error>> {
|
||||||
|
let id = &self.id;
|
||||||
|
crate::psql_delete!(id, pool, "pages")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
use achubb_database::data::{article::Article, PsqlData};
|
use crate::database::{article::Article, PsqlData};
|
||||||
use askama::Template;
|
use askama::Template;
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Extension, Path}, http::StatusCode, response::IntoResponse, routing::{get, Router}
|
extract::{Extension, Path},
|
||||||
|
http::StatusCode,
|
||||||
|
response::IntoResponse,
|
||||||
|
routing::{get, Router},
|
||||||
};
|
};
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
use std::{collections::HashMap, error::Error};
|
use std::{collections::HashMap, error::Error};
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Extension, Path}, http::StatusCode, response::IntoResponse, routing::{get, Router}
|
extract::{Extension, Path},
|
||||||
|
http::StatusCode,
|
||||||
|
response::IntoResponse,
|
||||||
|
routing::{get, Router},
|
||||||
};
|
};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
use crate::database::page::Page;
|
||||||
use askama::Template;
|
use askama::Template;
|
||||||
use achubb_database::data::page::Page;
|
|
||||||
use axum::{
|
use axum::{
|
||||||
http::StatusCode,
|
http::StatusCode,
|
||||||
response::{Html, IntoResponse, Response},
|
response::{Html, IntoResponse, Response},
|
||||||
|
|
@ -64,4 +64,3 @@ pub async fn get_page(db: &PgPool, path: &str) -> Result<impl IntoResponse, Stat
|
||||||
};
|
};
|
||||||
Ok(HtmlTemplate(template))
|
Ok(HtmlTemplate(template))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
60
src/lib.rs
60
src/lib.rs
|
|
@ -1,11 +1,18 @@
|
||||||
use sqlx::PgPool;
|
#![allow(async_fn_in_trait)]
|
||||||
|
use crate::database::{article::Article, page::Page, PsqlData};
|
||||||
|
use sqlx::{PgPool, Pool, Postgres};
|
||||||
|
use std::error::Error;
|
||||||
|
use std::{
|
||||||
|
fs::{self, metadata},
|
||||||
|
path::PathBuf,
|
||||||
|
};
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||||
mod database;
|
mod database;
|
||||||
mod html;
|
mod html;
|
||||||
mod macros;
|
mod macros;
|
||||||
|
|
||||||
pub async fn run() -> std::io::Result<()> {
|
pub async fn run_server() -> std::io::Result<()> {
|
||||||
let pool: PgPool = match database::establish_connection().await {
|
let pool: PgPool = match database::establish_connection().await {
|
||||||
Ok(p) => p,
|
Ok(p) => p,
|
||||||
Err(_) => panic!("error connecting to database"),
|
Err(_) => panic!("error connecting to database"),
|
||||||
|
|
@ -31,3 +38,52 @@ pub async fn run() -> std::io::Result<()> {
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn run_load() -> Result<(), Box<dyn Error>> {
|
||||||
|
let pool: PgPool = match database::establish_connection().await {
|
||||||
|
Ok(p) => p,
|
||||||
|
Err(_) => panic!("error connecting to database"),
|
||||||
|
};
|
||||||
|
|
||||||
|
load_articles(&pool).await?;
|
||||||
|
load_pages(&pool).await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn load_articles(pool: &Pool<Postgres>) -> Result<(), Box<dyn Error>> {
|
||||||
|
let paths = fs::read_dir("blog/").unwrap();
|
||||||
|
for path_entry in paths {
|
||||||
|
let path: PathBuf = path_entry.unwrap().path();
|
||||||
|
let metadata = metadata(path.clone()).unwrap();
|
||||||
|
if metadata.is_file() {
|
||||||
|
let mut article: Article = Article::from_file(path);
|
||||||
|
match Article::read_by_reference(pool, &article.reference).await {
|
||||||
|
Ok(art) => {
|
||||||
|
article.id = art.id;
|
||||||
|
article.update(pool).await?
|
||||||
|
}
|
||||||
|
Err(_) => article.insert(pool).await?,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn load_pages(pool: &Pool<Postgres>) -> Result<(), Box<dyn Error>> {
|
||||||
|
let paths = fs::read_dir("pages/").unwrap();
|
||||||
|
for path_entry in paths {
|
||||||
|
let path: PathBuf = path_entry.unwrap().path();
|
||||||
|
let metadata = metadata(path.clone()).unwrap();
|
||||||
|
if metadata.is_file() {
|
||||||
|
let mut page: Page = Page::from_file(path);
|
||||||
|
match Page::read_by_reference(pool, &page.reference).await {
|
||||||
|
Ok(proj) => {
|
||||||
|
page.id = proj.id;
|
||||||
|
page.update(pool).await?
|
||||||
|
}
|
||||||
|
Err(_) => page.insert(pool).await?,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
|
||||||
32
src/main.rs
32
src/main.rs
|
|
@ -1,5 +1,33 @@
|
||||||
|
use clap::Parser;
|
||||||
|
use std::error::Error;
|
||||||
|
|
||||||
|
#[derive(Parser, Debug)]
|
||||||
|
#[command(version, about, long_about = None)]
|
||||||
|
struct Args {
|
||||||
|
#[arg(short, long)]
|
||||||
|
setup: bool,
|
||||||
|
|
||||||
|
#[arg(short, long)]
|
||||||
|
load: bool,
|
||||||
|
|
||||||
|
#[arg(short, long)]
|
||||||
|
run: bool,
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> anyhow::Result<()> {
|
async fn main() -> Result<(), Box<dyn Error>> {
|
||||||
achubb_backend::run().await?;
|
let args = Args::parse();
|
||||||
|
|
||||||
|
if args.setup {
|
||||||
|
println!("Setup was passed");
|
||||||
|
}
|
||||||
|
|
||||||
|
if args.load {
|
||||||
|
achubb_backend::run_load().await?;
|
||||||
|
}
|
||||||
|
|
||||||
|
if args.run || !(args.load || args.setup) {
|
||||||
|
achubb_backend::run_server().await?;
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue