vault backup: 2025-12-10 11:37:35
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
---
|
||||
title: "1 key food your brain MUST have to stay sharp: Harvard expert"
|
||||
source: "https://medium.com/famously-healthy/1-key-food-your-brain-must-have-to-stay-sharp-harvard-expert-d56b4bd5d503"
|
||||
author:
|
||||
- "[[James Julian]]"
|
||||
published: 2024-10-03
|
||||
created: 2024-10-29
|
||||
description: "There are more than a few “brain foods” that experts will tell you to focus on to live a long, lucid life. I find it stinky, texturally unappealing (think scallops and lobster), and I mostly dislike…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@jamesjulianwrites?source=post_page---byline--d56b4bd5d503--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/famously-healthy?source=post_page---byline--d56b4bd5d503--------------------------------)
|
||||
|
||||
There are more than a few “brain foods” that experts will tell you to focus on to live a long, lucid life.
|
||||
|
||||
[We’re talking](https://medium.com/famously-healthy/eat-these-4-foods-to-save-your-brain-harvard-nutritionist-295f6845ecf9) antioxidant-rich fruit, fiber-packed leafy greens, and [lean proteins](https://medium.com/famously-healthy/try-4-foods-harvard-brain-expert-eats-every-day-to-stay-smart-7b0ffd83930d).
|
||||
|
||||
My personal favorite is [blueberries](https://medium.com/@jamesjulianwrites/this-is-the-one-most-important-food-i-eat-every-single-day-18dcd64b967c), or ‘brain berries’ as I’ve come to know them.
|
||||
|
||||
**But is there one uber-powerful brain food to rule them all?**
|
||||
|
||||
According to one Harvard nutritionist, there is.
|
||||
|
||||
And, unfortunately, I struggle to get enough of it.
|
||||
|
||||
I bet you do too.
|
||||
|
||||

|
||||
|
||||
What’s the №1 food to protect your brain? Read on. (Licensed by the author under the [Unsplash+ License](https://unsplash.com/plus/license))
|
||||
|
||||
## What we need (and I don’t get enough of)
|
||||
|
||||
I’m sorry, but I absolutely hate seafood.
|
||||
|
||||
Where do you stand on it?
|
||||
|
||||
I find it stinky, texturally unappealing (think scallops and lobster), and I mostly dislike the taste.
|
||||
|
||||
The problem is that seafood is about as good as it gets as a source of omega-3s, which according to Harvard nutritionist Uma Naidoo, is the most important food you can eat to support healthy brain function.
|
||||
|
||||
Here’s what she [wrote for CNBC recently](https://www.msn.com/en-ca/health/nutrition/harvard-nutritionist-the-no-1-nutrient-you-need-for-a-healthy-brain-and-the-best-way-to-get-it/ar-AA1nE2Zd?ocid=msedgdhp&pc=HCTS&cvid=01fcf2e9a4244864a3bbd32b7e8d0c8a&ei=15):
|
||||
|
||||
*“While supplements can help provide these nutrients, I always tell people to first go to real foods, especially for fatty acids like omega-3s.*
|
||||
|
||||
*“When you eat a whole food you get additional vitamins, minerals, healthy fats, and protein.*
|
||||
|
||||
*“It’s a good foundation upon which to build a healthy eating plan.*
|
||||
|
||||
==*“Omega-3s are found in wild-caught fatty fish like anchovies, sardines, and salmon.*==
|
||||
|
||||
*“Wild Sockeye salmon in particular contains levels of EPA and DHA that are beneficial to our brain’s health.*
|
||||
|
||||
*“An average salmon filet in the U.S. is about three to four ounces and the suggested amount to eat per week is about eight.*
|
||||
|
||||
*“So one should try to get omega-3-rich fish onto your plate at least twice a week.”*
|
||||
|
||||
So what’s the solution if, like me, seafood kinda grosses you out?
|
||||
|
||||

|
||||
|
||||
Fish? It’s a no from me. (Licensed by the author under the [Unsplash+ License](https://unsplash.com/plus/license))
|
||||
|
||||
## Why not supplements?
|
||||
|
||||
Fish oil supplements have come under a lot of scrutiny, and one worrisome study recently suggested you might want to [avoid them altogether if you’re over 40](https://medium.com/famously-healthy/over-40-1-new-reason-you-might-want-to-skip-taking-fish-oil-doc-08de15359f53).
|
||||
|
||||
**The good news is that there are some great plant-based sources of omega-3s.**
|
||||
|
||||
As Naidoo notes:
|
||||
|
||||
*“If you are like me and don’t eat seafood (I was raised vegetarian), you may be relieved to know it is still possible to get adequate omega-3s from plant-based sources, including…*
|
||||
|
||||
- *Chia seeds*
|
||||
- *Sesame seeds*
|
||||
- *Walnuts*
|
||||
- *Flax seeds*
|
||||
|
||||
*“About one ounce of chia seeds is more than your daily recommended intake of omega-3 fatty acids and delivers about 5,000 mg.*
|
||||
|
||||
*“If you eat eggs, aim for the pasture-raised kind. Be sure to add turmeric with a pinch of black pepper to optimize the impact for brain health.”*
|
||||
|
||||
**I could be better at this.**
|
||||
|
||||
I do have a bunch of chia seeds in my freezer and it’s the easiest thing to throw into a smoothie.
|
||||
|
||||
I’ve also experimented with throwing walnuts into those smoothies as well, though I find the bitter aftertaste kind of shines through.
|
||||
@@ -0,0 +1,110 @@
|
||||
---
|
||||
title: "10 Best Practices for Writing Bash Scripts"
|
||||
source: "https://medium.com/@talhakhalid101/10-best-practices-for-writing-bash-scripts-95d57e675939"
|
||||
author:
|
||||
- "[[Talha Khaild]]"
|
||||
published: 2024-08-20
|
||||
created: 2024-10-29
|
||||
description: "Everyone who has come to this corner of mine, must for one reason or another, knows that I really like using the terminal, automating “scripting” everything I can, including my current desktop…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@talhakhalid101?source=post_page---byline--95d57e675939--------------------------------)
|
||||
|
||||
Everyone who has come to this corner of mine, must for one reason or another, knows that I really like using the terminal, automating “scripting” everything I can, including my current desktop system, which today is still i3wm. Well, for this task we use our beloved terminal, regardless of the shell you use, these tips will be useful. Definitely if you are new to GNU/Linux, then you will find yourself face to face with the bash shell.
|
||||
|
||||
A Bash Script is a file in which multiple shell commands are coded to perform a particular task, this article includes some healthy habits for writing a script, mainly to improve efficiency and make it more readable.
|
||||
|
||||

|
||||
|
||||
## 1\. Comment the code
|
||||
|
||||
Definitely something basic, but one that many forget and that is always very useful, either for yourself, or for others who want to review or modify your script, it is undoubtedly decisive in achieving clean code that can explain various parts of complex codes. While you are focused on writing the script, it is easy to get confused with the code you have written as time goes by. It is also effective when working in a group on a large project, as it helps you understand what the function or method actually does.
|
||||
|
||||
***ALSO CHECKOUT:***
|
||||
|
||||
## 2\. Using Functions
|
||||
|
||||
As you may know, a function is a set of commands grouped together to perform a specific task that helps to modulate the workflow, eliminating code repetition. It makes the code cleaner and more readable, as well as easier to maintain.
|
||||
|
||||
```
|
||||
#!/bin/bashfunction check_root() { echo "function has been called"; }
|
||||
```
|
||||
|
||||
## 3\. Using double quotes
|
||||
|
||||
Using double quotes will help eliminate unnecessary globbing as well as word splitting, including whitespace, when variable values contain a separator character or a whitespace.
|
||||
|
||||
## 4\. Terminate execution on error
|
||||
|
||||
Sometimes, when running a script, there may be some execution error. Even if a command is not executed, the script may continue to run and affect the other commands in the script. To avoid further logical errors, we should include set -o errexit or set -e to terminate the command in case of error.
|
||||
|
||||
```
|
||||
#!/bin/bash set -o errexit
|
||||
```
|
||||
|
||||
## 5\. Declaring Variables
|
||||
|
||||
Declare the variable according to its data type and usage. When the variable is not declared, bash may not be able to execute the related command. Variables can be declared globally or locally in the script. For example:
|
||||
|
||||
```
|
||||
#!/bin/bash declare -r i=30function my_variable(){ local -r name="${HOME}"}
|
||||
```
|
||||
|
||||
## 6\. The use of keys
|
||||
|
||||
Bind variables with curly braces while using variable concatenation with strings to avoid unnecessary use of variables. This also helps to easily identify the variable while using it in a string. For example:
|
||||
|
||||
```
|
||||
#!/bin/bashset -o errexitdata="${USER}_data is being used"
|
||||
```
|
||||
|
||||
## 7\. Replacing the command
|
||||
|
||||
While assigning the output of the command to the variable, bash uses the command substitution feature. We need to use $() instead of backticks to assign the output to variables as recommended.
|
||||
|
||||
```
|
||||
#!/bin/bash set -o errexit date_now=$(date)
|
||||
```
|
||||
|
||||
## 8\. Variable Nomenclature
|
||||
|
||||
In our system, all environment variables are named using uppercase letters. So when we declare a local variable, we should declare it using lowercase letters to avoid conflicts between the environment and local variable name.
|
||||
|
||||
```
|
||||
#!/bin/bash set -o errexit ser_var="$HOME is your correct login."
|
||||
```
|
||||
|
||||
## 9\. Declaring Static Variables
|
||||
|
||||
If you have static data that remains unchanged throughout the script, you can assign the value to a static variable whose value cannot be modified. You can declare the static variable using the read-only command.
|
||||
|
||||
```
|
||||
#!/bin/bashreadonly test_conf_path="/etc/nginx/conf.d/test.conf"
|
||||
```
|
||||
|
||||
## 10\. Debugging
|
||||
|
||||
Debugging is the most essential part to identify a problem. We can check the syntax error of the script, so to check it we need to run the bash script with -n using the bash command.
|
||||
|
||||
```
|
||||
$ bash -n script_name
|
||||
```
|
||||
|
||||
Additionally, we can enable and run the script in debug mode using the following command.
|
||||
|
||||
```
|
||||
$ bash -x script_name
|
||||
```
|
||||
|
||||
***ALSO CHECKOUT:***
|
||||
|
||||
## Conclusion
|
||||
|
||||
So far, I’ve left you with some good bash scripting practices that you can apply to other languages. Adopting them will undoubtedly help you improve your scripts and, most importantly, it’s a good way to leave your code clean and tidy, as well as documented and easy to understand/maintain.
|
||||
|
||||
Until another article, reader, good vibes.
|
||||
@@ -0,0 +1,179 @@
|
||||
---
|
||||
title: "10 Performance Tips I Discovered After Years of Coding in JAVA"
|
||||
source: "https://medium.com/@code-geass/10-performance-tips-i-discovered-after-years-of-coding-in-java-3f57a0125ae3"
|
||||
author:
|
||||
- "[[𝓒ode 𝓰eass]]"
|
||||
published: 2024-10-13
|
||||
created: 2024-10-29
|
||||
description: "Hey Everyone!! I wanted to share these Java Performance tips, that i feel everyone should be aware of since it took a lot of effort and mistakes for me to learn it. So, here are eight performance…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@code-geass?source=post_page---byline--3f57a0125ae3--------------------------------)
|
||||
|
||||

|
||||
|
||||
[link](https://github.com/connectaman/Java_Notes_and_Programs/blob/master/Java.md)
|
||||
|
||||
Hey Everyone!! I wanted to share these Java Performance tips, that i feel everyone should be aware of since it took a lot of effort and mistakes for me to learn it. So, here are eight performance tips that have made a real difference in my projects. Dont forget to **bookmark** them for further reference.
|
||||
|
||||
## **1\. Use StringBuilder for Joining Strings**
|
||||
|
||||
If you’re adding strings together, especially inside a loop, it’s better to use a `StringBuilder`. When you use the `+` operator, Java creates a new string each time, which can slow things down.
|
||||
|
||||
*Instead of:*
|
||||
|
||||
```
|
||||
String result = "";for (String s : words) { result += s;}
|
||||
```
|
||||
|
||||
*Try:*
|
||||
|
||||
```
|
||||
StringBuilder result = new StringBuilder();for (String s : words) { result.append(s);}String finalResult = result.toString();
|
||||
```
|
||||
|
||||
## **2\. Reuse Objects Whenever Possible**
|
||||
|
||||
Whenever you create new objects, it consumes lot of memory and time. We should try to reuse objects whenever possible. Its important to note that we should also consider using them wisely, like we need to go for it only if the object’s state changes frequently or its lifecycle require being used multiple times.
|
||||
|
||||
*Example:*
|
||||
|
||||
```
|
||||
MyClass obj = new MyClass();for (int i = 0; i < 1000; i++) { obj.doSomething();}
|
||||
```
|
||||
|
||||
## **3\. Use Primitive Types Instead of Wrapper Classes**
|
||||
|
||||
We need to be aware that *Integer, Double and Boolean* are slower than the primitive data types like *int, double and boolean*. So we need to avoid the reduntant usage of
|
||||
|
||||
*So, prefer:*
|
||||
|
||||
```
|
||||
int number = 5;
|
||||
```
|
||||
|
||||
*Over:*
|
||||
|
||||
```
|
||||
Integer number = new Integer(5);
|
||||
```
|
||||
|
||||
## **4\. Choose the Right Data Structures**
|
||||
|
||||
Whenever you need something really quick, go for *HashMap* or *HashSet* instead of *List*.
|
||||
|
||||
*Example:*
|
||||
|
||||
```
|
||||
Set<String> names = new HashSet<>();names.add("Alice");names.add("Bob");if (names.contains("Alice")) { }
|
||||
```
|
||||
|
||||
## **5\. Avoid Unnecessary Casting**
|
||||
|
||||
Casting can slow things down. If you know what type of objects you’re working with, try to avoid casting them.
|
||||
|
||||
*Instead of:*
|
||||
|
||||
```
|
||||
Object obj = "Hello";String str = (String) obj;
|
||||
```
|
||||
|
||||
*Just use:*
|
||||
|
||||
```
|
||||
String str = "Hello";
|
||||
```
|
||||
|
||||
## **6\. Cache Frequently Used Values**
|
||||
|
||||
Cache can be a double edged sword. So we need to use it wisely. We should not to much cache or should not completely avoid it. But whenever a heavy calculation or a frequent data access is required that usually doesn’t change much, we should go for it.
|
||||
|
||||
*Example:*
|
||||
|
||||
```
|
||||
Map<Integer, Integer> cache = new HashMap<>();int getFactorial(int n) { if (cache.containsKey(n)) { return cache.get(n); } else { int result = calculateFactorial(n); cache.put(n, result); return result; }}
|
||||
```
|
||||
|
||||
**7\. Limit the Use of Synchronization**
|
||||
|
||||
In multi-threaded programs, synchronization can cause delays. Use it only when necessary, and keep synchronized blocks short.
|
||||
|
||||
*Example:*
|
||||
|
||||
```
|
||||
synchronized (this) { sharedResource.update();}
|
||||
```
|
||||
|
||||
**8\. Be Careful with Exceptions Inside Loops**
|
||||
|
||||
Throwing and catching exceptions is slower than regular code execution. Try to avoid them inside loops.
|
||||
|
||||
*Instead of:*
|
||||
|
||||
```
|
||||
for (int i = 0; i < data.length; i++) { try { process(data[i]); } catch (Exception e) { }}
|
||||
```
|
||||
|
||||
*Validate before processing:*
|
||||
|
||||
```
|
||||
for (int i = 0; i < data.length; i++) { if (isValid(data[i])) { process(data[i]); }}
|
||||
```
|
||||
|
||||
But in case if the the problem lies with the data itself, you should filter or validate the data before processing.
|
||||
|
||||
```
|
||||
Stream.of(data) .filter(this::isValid) .forEach(this::process);
|
||||
```
|
||||
|
||||
So checkout what is the best approach in your case
|
||||
|
||||
**9\. Use Efficient Loops**
|
||||
|
||||
Sometimes, the way you write your loops can make a difference. For example, when looping through lists, use an indexed loop if you can.
|
||||
|
||||
*Example:*
|
||||
|
||||
```
|
||||
for (int i = 0; i < list.size(); i++) { doSomething(list.get(i));}
|
||||
```
|
||||
|
||||
**10\. Profile Your Code to Find Slow Spots**
|
||||
|
||||
Finally, use tools to see where your program is spending the most time. Profiling helps you focus on the parts that really need optimization.
|
||||
|
||||
*Tip:*
|
||||
|
||||
- Use tools like VisualVM.
|
||||
- Identify methods that take the most time and optimize them.
|
||||
|
||||
**11\. Use the Most Readable Loop for the Job**
|
||||
|
||||
As pointed out by Karl in the comment section, I noticed the importance of readability when writing loops.Using Java Streams can make your code cleaner and easier to understand.
|
||||
|
||||
Example with `for-each`:
|
||||
|
||||
```
|
||||
for (String item : list) { doSomething(item);}
|
||||
```
|
||||
|
||||
Example with Streams:
|
||||
|
||||
```
|
||||
list.stream().forEach(item -> doSomething(item));
|
||||
```
|
||||
|
||||
**Wrapping Up**
|
||||
|
||||
These are some tips that I gained over the years after making lots of mistakes. I acknowledge that every project is a bit different, and you really your solution addressing your problem and be mindful of these things whenever you are facing some kind of bottleneck.
|
||||
|
||||
**Oh, and before I forget:** always make sure to test and profile your code after making changes. Sometimes, what we think is an optimization might not have the desired effect.
|
||||
|
||||
If you’ve got any cool Java tricks up your sleeve,Please mention in the comments
|
||||
|
||||
Happy coding!
|
||||
@@ -0,0 +1,120 @@
|
||||
---
|
||||
title: "10 Things a Professional Programmer Does"
|
||||
source: "https://javascript.plainenglish.io/10-things-a-professional-programmer-does-47d6544d06ce"
|
||||
author:
|
||||
- "[[Josef Cruz]]"
|
||||
published: 2024-08-16
|
||||
created: 2024-10-29
|
||||
description: "Programming is a very demanding activity. Computer science and programming not only imply having a series of technical knowledge, but also need to be made of “special stuff”. Programming is a…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Programming
|
||||
|
||||
## Anyone who wants to be a programmer should take them into account.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://imjosef.medium.com/?source=post_page---byline--47d6544d06ce--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://javascript.plainenglish.io/?source=post_page---byline--47d6544d06ce--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Adrian Curiel](https://unsplash.com/@hencetheboom?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
Programming is a very demanding activity. Computer science and programming not only imply having a series of technical knowledge, but also need to be made of “special stuff”.
|
||||
|
||||
Programming is a constant challenge. Many people want to get started in this sector without knowing what a professional programmer does. These people are unaware of or have the wrong idea about the programming world.
|
||||
|
||||
Programming does not have the same structure as trigonometry or mathematics, as strange as it may seem, learning to program has more to do with what it means to learn a language.
|
||||
|
||||
This analogy concerns the fact that programming, like learning a new language, involves challenges and problems that require logic.
|
||||
|
||||
Programming is based on structuring solutions to solve certain problems. In this sense, a poorly implemented solution can lead to the appearance of new problems, which is why the testing phase is important.
|
||||
|
||||
In this sense, it must be said that a theoretical programmer is not a good programmer; good programmers are practical programmers, those who “get down to business” and are always investigating new ways to solve problems.
|
||||
|
||||
In this article, I will discuss 10 important aspects that a good programmer should know to grow within this technological profession. Anyone who wants to be a programmer should take these things into account.
|
||||
|
||||
## **1\. Schedule**
|
||||
|
||||
One of the things a programmer does is program. Well, this may seem obvious, but it is not so. In relation to this, it must be said that some programmers believe that by using the “formula” of copying and pasting code to solve problems, one can learn to be a good programmer. It is true that one can also learn this way; however, to be a “top” programmer, one must program. This is, without a doubt, the best way.
|
||||
|
||||
## **2\. Feedback in communication**
|
||||
|
||||
Feedback is a fluid communication channel several interlocutors use; managing this feedback is essential in the programming profession.
|
||||
|
||||
Feedback is always important in any professional field, but it is especially important in programming because for work to be carried out on time and in the correct manner, it is vital that there is fluid communication between development teams and other departments if you work as a team.
|
||||
|
||||
If this communication is not adequate, the work's results can be seriously compromised, and the consequences for the client can be disastrous.
|
||||
|
||||
Without a doubt, one of the most important aspects for a programmer to be considered a professional is to have constant and fluid communication, not only with his work team, but also with the clients of his application.
|
||||
|
||||
## **3\. Go to reliable sources of information**
|
||||
|
||||
This is another thing that a programmer does that may seem surprising. A good programmer must, above all, seek productivity in his activity, so spending too much time thinking about the next step is not an option.
|
||||
|
||||
It is important to know that even a very good programmer does not have the answers to all questions, so it is important to investigate and ask qualified people if necessary.
|
||||
|
||||
When asking questions, it is very important to go to reliable sources of information. A good tool for accessing reliable information is the programming communities on the Internet.
|
||||
|
||||
## **4\. Read documentation**
|
||||
|
||||
One of the most important tasks a programmer performs is reading the documentation. Knowing the language well is essential for programming fluently and efficiently. When a systems programmer reads the documentation, he can control the entire project.
|
||||
|
||||
You have to be aware that each language has its own particularities. It is important to know different variables such as the available versions or the parameters they receive, which is why it is so important to read the documentation.
|
||||
|
||||
## **5\. Quick reading and comprehension**
|
||||
|
||||
An increasing number of people are interested in developing a professional activity in computing and programming. This is undoubtedly a growing sector that offers good opportunities.
|
||||
|
||||
However, we must be aware that although everything can be achieved with determination and hard work, the truth is that in order to develop a professional career in this field, it is very useful to have aptitudes for logical thinking.
|
||||
|
||||
For a programmer to perform his job efficiently, he needs to have the skills to read and understand quickly. If he has these skills, his productivity can stay high, compromising the development of the projects he is involved in.
|
||||
|
||||
## **6\. Have a passion**
|
||||
|
||||
If your primary reason for pursuing a long-term career as a programmer is to make money, you are unlikely to achieve the goals you set for yourself.
|
||||
|
||||
The programming profession is a vocation; to be good at it, you have to enjoy what you are doing and your progress. In this respect, being a programmer is no different than any other professional activity, in the sense that the more you like and enjoy your work, the better you will be.
|
||||
|
||||
This passion in the programming world translates into three words: thirst for knowledge.
|
||||
|
||||
Having the desire to learn good things is what will make the difference between a good programmer and a mediocre programmer; curiosity is what will determine a programmer's growth.
|
||||
|
||||
Discovering new methodologies and tools to solve problems provides the programmer with a qualitative leap in his skills; in this sense, learning new technologies and programming languages is vital.
|
||||
|
||||
## **7\. Know different programming languages**
|
||||
|
||||
To explain this point, I will make an analogy: in the same way that knowing several languages amplifies neural connections and provides better handling in the language area, learning several programming languages produces the same effect.
|
||||
|
||||
Mastering several programming languages gives programmers better tools for confidently addressing all types of situations.
|
||||
|
||||
It is also important to know that knowledge of several programming languages considerably increases job opportunities.
|
||||
|
||||
## **8\. Do version control**
|
||||
|
||||
A good programmer knows that version control should not be overlooked, which should be the case when working with any version control system, regardless of whether it is one or the other.
|
||||
|
||||
Knowing how to work according to a branching model will allow the programmer to execute changes safely, whether alone or with a team.
|
||||
|
||||
## **9\. The importance of testing**
|
||||
|
||||
Another thing that a programmer does is to perform tests. The importance of this point lies in the fact that the code, contrary to what it may seem, is not perfect; one must be aware that it can fail.
|
||||
|
||||
That is why it is vital to program tests, especially in the application's growth phase. By doing tests, the code is much more controlled and structured, and this is undoubtedly one of the most efficient ways to avoid problems later on.
|
||||
|
||||
## **10\. Provide ongoing training**
|
||||
|
||||
One of the most important things a programmer does is continuously train himself. The technology sector is characterized by continuous changes and improvements, so an updated programmer is a good programmer.
|
||||
|
||||
A professional programmer needs to reach a certain level of knowledge and then call it a day. A good programmer is always looking for new developments in the programming world. The programmer has a “nonconformist soul” and knows that continuous learning and updating knowledge is inherent to his profession.
|
||||
|
||||
For all these reasons, you can trust your ideas, and development needs zero ideas.
|
||||
@@ -0,0 +1,176 @@
|
||||
---
|
||||
title: "12 Weird Things Christians Think Are God"
|
||||
source: "https://medium.com/deconstructing-christianity/12-weird-things-christians-think-are-god-57105a7095db"
|
||||
author:
|
||||
- "[[Lilith Helstrom]]"
|
||||
published: 2024-08-02
|
||||
created: 2024-10-29
|
||||
description: "Most of the time, when you ask a Christian why they believe in God, they won’t have a rational reason for doing so. They’ll say they have a relationship with him and see evidence of him regularly in…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## These things all have other explanations
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@lilith.helstrom?source=post_page---byline--57105a7095db--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/deconstructing-christianity?source=post_page---byline--57105a7095db--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by Tony Eight Media on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
Most of the time, when you ask a Christian why they believe in God, they won’t have a rational reason for doing so. They’ll say they have a relationship with him and see evidence of him regularly in their life. This means that even though none of us can actually see, hear, or feel him, they’ll claim to be regularly interacting with him.
|
||||
|
||||
I don’t find this compelling in any way. I can prove my husband exists, for example. Not just because I interact with him, but because I can present him to you and you can actually physically clearly see and interact with him, too. Meanwhile, me and other non-Christians have no interactions with God in our lives, even when we try hard to.
|
||||
|
||||
Christians will counter this by saying you can’t interact with God unless you believe in him and are searching for him already. So you basically need to desperately overanalyze your life and decide normal things must be supernatural and have supernatural meanings to them.
|
||||
|
||||
That’s not evidence. That’s confirmation bias. So a bunch of things always happen to Christians that they will say are God interacting with them, but really have other explanations.
|
||||
|
||||
I decided to make a list of common things Christians mistake as God that actually are something else:
|
||||
|
||||
## 1\. The voice in their head
|
||||
|
||||
The Pastor in my church always loved to give a sermon from 1 Kings 19. It was about Elijah waiting for the voice of God. There was wind, there was an earthquake, there was fire — all super dramatic things that you would think would herald the voice of God by their dramatic nature. But none of them had the voice of God.
|
||||
|
||||
God spoke in a whisper afterwards. The Bible calls it a “still small voice.” Christians use these words to explain how they hear the voice of God often as a subtle thing.
|
||||
|
||||
For most Christians, the voice of God just is a quiet voice in their head. Atheists know this is their own thoughts and brain helping them work through stuff, but many Christians think it’s magic and actually God talking to them.
|
||||
|
||||
## 2\. Natural consequences
|
||||
|
||||
Sometimes Christians, like everyone, do dumb shit. They’ll do something most people know will lead to bad things like cheating on their wife. Then their wife will find out and get mad, leave them, take the kids, and they’ll be devastated. They’ll go, “God is punishing me to teach me a lesson for sinning.”
|
||||
|
||||
No, you made mistakes and now you’re suffering natural consequences for it. This has nothing to do with God. This is normal, not supernatural, and maybe you should think things through better next time.
|
||||
|
||||
That’s all natural consequences are, not something divine.
|
||||
|
||||
## 3\. Luck
|
||||
|
||||
Even though gambling is arguably condemned by the Bible, many Christians enter the lottery and pray to win it, as I learned in a [recent article](https://medium.com/backyard-theology/what-people-pray-for-most-according-to-the-latest-research-8e74b88aec20) written by Dan Foster.
|
||||
|
||||
Most of those Christians don’t win any money, but some of them do, I’m sure. Then they think God and prayer are the reason they won.
|
||||
|
||||
Nope, it’s just luck.
|
||||
|
||||
Sometimes you get lucky in life and good things happen. Everyone eventually gets some good luck, but that doesn’t mean God had any part in it.
|
||||
|
||||
## 4\. People Being Helpful
|
||||
|
||||
This happens constantly and it drives me crazy. People pray because they need groceries and don’t have any money, for example. Then someone hears about that need and helps them get groceries. And they go, “Wow. God just gave me groceries because I prayed first!”
|
||||
|
||||
No, that human being gave you groceries.
|
||||
|
||||
Humans are stronger as a whole when they help each other. This can be through charity, kind acts, medical breakthroughs, science advances, and more. Humans only survive by helping each other.
|
||||
|
||||
There’s no proof that is God though. There’s no reason to see a human being do a nice human thing and think it’s anyone other than that human doing it. This is not something I should need to say.
|
||||
|
||||
## 5\. Coincidence
|
||||
|
||||
I get why Christians think this one. I mean, their god refuses to speak to them directly or actually show up for them in any way, so in a desperate attempt to hear from him and reassure themselves that he is real, they decide he must be orchestrating events in their life into occurring.
|
||||
|
||||
But to me, it’s like a child, who was abandoned by their father and is desperate to think their father is there and loves them, finding a penny on the ground. And the child says, “My father used to collect pennies he found on the ground and I just found one, so this must be a sign that he still loves me and he must have left it here for me.”
|
||||
|
||||
No, if your Dad loved you and was still there, he’d actually be more physically present for you and more direct.
|
||||
|
||||
And before Christians say this example is ridiculous, it’s very similar to something my Christian Dad actually does. He found a penny on the ground right before something good happened to him once, so now he thinks finding pennies on the ground is God speaking to him and trying to tell him that he’s watching over and blessing him.
|
||||
|
||||
Christians always have to think things like this or they wind up having to admit to themselves that their god might not be real because there’s no evidence of him.
|
||||
|
||||
## 6\. Good Feelings They Have
|
||||
|
||||
Christians say that God gives them peace and happiness. The Holy Spirit is supposed to feel like a “peace that passes all understanding” in their heart and make them calm, happy, and loving in situations they otherwise wouldn’t be.
|
||||
|
||||
I’ve felt the feeling they describe back when I used to be a Christian and I think it’s just them being high on religion.
|
||||
|
||||
Life is hard, but if you can convince yourself that you’re special and that ordinary experiences or bad experiences are actually God working in your life divinely, then you can start feeling happy and high during times when you otherwise would feel bad or ordinary.
|
||||
|
||||
They get addicted to it emotionally and that’s why they keep turning to religion because they think it gives them purpose and makes them special.
|
||||
|
||||
## 7\. Adversity
|
||||
|
||||
Building on that whole idea of feeling special, life is hard and full of adversity, I think many Christians cope through life by deciding the bad things they face in life are actually tests from God or attacks from the devil.
|
||||
|
||||
It makes their life story seem more dramatic if there’s supernatural forces focused on everything they do and manipulating each decision. It makes them feel powerful and like superheroes.
|
||||
|
||||
So they self-delude to help themselves cope with their life problems.
|
||||
|
||||
## 8\. Achievements
|
||||
|
||||
Christians will work really hard to do something. They’ll go to medical school, so years of residency, and start their own medical practice. They’ll think that because it all worked out that God “called” them to that profession.
|
||||
|
||||
Or maybe they just worked really hard because they had a passion for something and made it happen.
|
||||
|
||||
## 9\. Their Own Desires
|
||||
|
||||
When I was growing up, my best friend was a conservative Christian. One day, we were sitting and watching some missionaries speak snd she felt inspired by them and wanted to do the same thing as them.
|
||||
|
||||
She told me afterwards, “God is calling me to become a missionary.” She figured that that desire was in her heart because God wanted her to become a missionary and placed it there.
|
||||
|
||||
But she never actually became a missionary when we grew up. She instead became a film maker. Because it wasn’t a god speaking to her, she just had a strong desire to do something and decided that must be God.
|
||||
|
||||
## 10\. Their Own Beliefs
|
||||
|
||||
Even Christians that believe the Bible should be taken literally and directly at its word, always think it needs to be translated in some way (by the Holy Spirit supposedly), in order to understand what God is trying to tell them.
|
||||
|
||||
==All other books in the world are just supposed to be read at face value, but the Bible is a magic trick that needs to be interpreted.==
|
||||
|
||||
This is how they cover up that the Bible is outdated and doesn’t make sense. You aren’t viewing it through the Holy Spirit, so you’re translating it incorrectly and that’s why you find it nonsensical. Their god says the Bible has to be a coded puzzle and you need divine help in order to understand it.
|
||||
|
||||
Yet at the same time you are close minded and shutting out God if you don’t get it the way they do.
|
||||
|
||||
And they use all this logic regularly to make the Bible say whatever they want it to say.
|
||||
|
||||
So, for example, if the Bible says:
|
||||
|
||||
“I, God your father, am a shitty asshole and think you should all be punched in the face.” They’ll say it’s not God being an asshole and threatening everyone, it’s proof that he’s loving because that’s what they believe. And proof that we all deserve to be punched in the face, but because God is so kind and Jesus died on the cross for our sins he stopped being a shitty asshole and thinking we should all be punched in the face as long as we accept him.
|
||||
|
||||
The Bible can be saying things they don’t like directly but because they say it has to be interpreted right, they’ll always twist it to make it say whatever they want it to say that matches their beliefs instead.
|
||||
|
||||
An example of this is Numbers 5:11–31, which is an abortion ceremony described in the Bible. I’ve used this passage many times when arguing with Christians. If God doesn’t directly condemn abortion in the Bible and has a literal description of an abortion ceremony that should be performed in the Bible, then doesn’t that mean the Christian God supports abortion?
|
||||
|
||||
They always come back at me and say that I’m misinterpreting the scripture. Scripture isn’t to be read directly but interpreted to match whatever they believe it says.
|
||||
|
||||
So Christians tend to decide God believes something first and they interpret the Bible to say that God agrees with whatever they already decided he should think afterwards, and then they call it “the Holy Spirit” showing them the truth.
|
||||
|
||||
## 11\. Ideal Circumstances
|
||||
|
||||
My Mom is one of those Christians that prays for a good parking space and regularly receives one. She also lives in a small town, where there aren’t as many people to compete over parking spaces with, and only goes grocery shopping during hours when people are at work, meaning no one is at the grocery store.
|
||||
|
||||
So is it really God providing her a good parking space all the time or is she going grocery shopping during the times when she’s most likely to get a good parking space?
|
||||
|
||||
## 12\. Predictable Circumstances
|
||||
|
||||
My Dad has a story he loves to tell about why he thinks my Mom is a prophetess. It’s because when my ex-church was choosing a pastor, he was on the committee to decide who they would hire. They got hundreds of applications and my Mom said God had told her who they would choose. The pastor they chose wound up being the one she said they would choose.
|
||||
|
||||
I keep telling him, “Dad. You just made her choice happen. You were part of who was in control of hiring the pastor and you wanted her to be right.”
|
||||
|
||||
But he keeps insisting he had no choice in the matter, even though he was on the committee who chose the new pastor.
|
||||
|
||||
I told him that I was psychic and going to pick up a blue pen, then I picked up a blue pen and gasped in shock. “Either I must actually be psychic or some things are easy to predict or easy to make happen based on a prediction.”
|
||||
|
||||
My Dad insists I don’t know what I’m talking about.
|
||||
|
||||
But it’s like when “prophets” or whatever predict who is going to win an election. Is it really a sign that they are connected to God if they had a 50/50 chance of getting it right?
|
||||
|
||||
Many Christians will see this list and sigh in exasperation. I just have an explanation for everything. I’m not even trying to see God in anything. I’m just excusing all evidence of God away.
|
||||
|
||||
But they really should be more upset instead that the God they value and believe in is like an absentee Dad that abandoned them all. You shouldn’t have to search for him everywhere for any small clue that he might still be around. If he’s loving and good, if he’s actually a big part of your life and has a real relationship with you, then the evidence should be overwhelming.
|
||||
|
||||
He should be physically present. Not you trying to desperately find any shred of evidence of his existence among a million things that have other rational explanations to them.
|
||||
|
||||
And this is 100% why, when Christians tell me that they know God is real because they experience him every day in their lives, that I don’t believe them. I just feel like their “experiences” are one of the things on this list and not something that is real.
|
||||
|
||||
[Click here to support my writing](https://ko-fi.com/lilithhelstrom)
|
||||
|
||||

|
||||
|
||||
## Lilith's Thoughts On Religion And Atheism
|
||||
@@ -0,0 +1,238 @@
|
||||
---
|
||||
title: "13 Python Shortcuts Every Developer Should Use for Faster Coding"
|
||||
source: "https://python.plainenglish.io/13-python-shortcuts-every-developer-should-use-for-faster-coding-a9609daacc51"
|
||||
author:
|
||||
- "[[Abdur Rahman]]"
|
||||
published: 2024-10-18
|
||||
created: 2024-10-29
|
||||
description: "You probably know a lot about Python language you worked many hours on improving your skills. Yet even after all that time, there’s still something new in Python you might not know. This tiny trick…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## And no, I’m not talking about basic `if __name__ == "__main__"`. You’re past that.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@abdur-rahman?source=post_page---byline--a9609daacc51--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://python.plainenglish.io/?source=post_page---byline--a9609daacc51--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Icons8 Team](https://unsplash.com/@icons8?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
You’re a Python developer.
|
||||
|
||||
You probably know a lot about Python language you worked many hours on improving your skills. Yet even after all that time, there’s still something new in Python you might not know.
|
||||
|
||||
I’m about to share some tricks that will save time and make you code like a Python wizard.
|
||||
|
||||
Let’s dive in!
|
||||
|
||||
## 1\. Dictionary Default Values (`dict.get()`)
|
||||
|
||||
Ever find yourself writing this sort of thing?
|
||||
|
||||
```
|
||||
if key in my_dict: value = my_dict[key]else: value = default_value
|
||||
```
|
||||
|
||||
Well, stop. Use `dict.get()` instead and move on with your life.
|
||||
|
||||
```
|
||||
value = my_dict.get(key, default_value)
|
||||
```
|
||||
|
||||
This tiny trick cuts down your lines and makes your code cleaner. Honestly, you’ll wonder why you ever did it the long way.
|
||||
|
||||
> *Avoid overthinking when simplicity can save time.*
|
||||
|
||||
## 2\. List Comprehensions for Speed and Style
|
||||
|
||||
You know list comprehensions but sometimes you still write loops because it’s a habit. You know it happens.
|
||||
|
||||
Here’s a reminder to go back to the compact version:
|
||||
|
||||
```
|
||||
squares = [x**2 for x in range(10)]
|
||||
```
|
||||
|
||||
Want to throw in a condition? Python’s got your back:
|
||||
|
||||
```
|
||||
even_squares = [x**2 for x in range(10) if x % 2 == 0]
|
||||
```
|
||||
|
||||
It’s just cleaner and faster. It’s like Python saying, “Why write a novel when you can tweet?”
|
||||
|
||||
## 3\. Swap Variables Without Temp Variables
|
||||
|
||||
You might have been taught the ol’ temp variable swap back in the day. Forget that.
|
||||
|
||||
```
|
||||
a, b = b, a
|
||||
```
|
||||
|
||||
Yup, it’s that simple. Swaps two variables in a single line, no temp variable necessary. Python’s built for this kind of readability.
|
||||
|
||||
## 4\. Unpacking in Style
|
||||
|
||||
Let’s talk about multiple assignments. If you have a list of values you need to unpack into variables. Don’t do it one at a time.
|
||||
|
||||
Use this shortcut instead.
|
||||
|
||||
```
|
||||
numbers = [1, 2, 3]a, b, c = numbers
|
||||
```
|
||||
|
||||
And here’s a pro tip for those extra-long lists where you don’t care about most values:
|
||||
|
||||
```
|
||||
first, *middle, last = some_long_list
|
||||
```
|
||||
|
||||
No more tedious index slicing — Python just reads your mind.
|
||||
|
||||
## 5\. `enumerate()` to Simplify Loops
|
||||
|
||||
How often do you write this?
|
||||
|
||||
```
|
||||
index = 0for item in my_list: print(index, item) index += 1
|
||||
```
|
||||
|
||||
That’s more code than necessary. Python’s got your back with `enumerate()`:
|
||||
|
||||
```
|
||||
for index, item in enumerate(my_list): print(index, item)
|
||||
```
|
||||
|
||||
That’s it. Less clutter, more action.
|
||||
|
||||
> ***Pro Tip:*** *If you’re looping over something and counting at the same time, you’re doing it wrong unless you’re using* `*enumerate()*`*.*
|
||||
|
||||
## 6\. Handle Exceptions Like a Pro with `try/else`
|
||||
|
||||
You know the `try/except` block. But did you know about `try/else`? This small feature helps in cleaning up exception handling. `else` runs when no exception is raised. It’s better than putting everything in `try` because it makes clear what happens when nothing goes wrong.
|
||||
|
||||
Here’s how it works:
|
||||
|
||||
```
|
||||
try: result = risky_operation()except SomeError: handle_error()else: handle_success()
|
||||
```
|
||||
|
||||
## 7\. Fast String Concatenation with `.join()`
|
||||
|
||||
If you are joining strings inside a loop, you are wasting CPU time. Every time you use `+`, it creates a new string. The better way is `join()`. It’s fast and saves you time.
|
||||
|
||||
```
|
||||
# Inefficientresult = ""for s in list_of_strings: result += s# Efficientresult = ''.join(list_of_strings)
|
||||
```
|
||||
|
||||
This is especially noticeable when working with large datasets. Don’t sleep on this one.
|
||||
|
||||
## **8\. The Walrus Operator (**`**:=**`**): Assign While You Check**
|
||||
|
||||
Ah, the walrus operator. You may have heard about it in Python 3.8. It is helpful for making your code shorter and cleaner. It lets you assign variables as part of an expression. Especially in loops and conditionals.Instead of:
|
||||
|
||||
```
|
||||
data = input("Enter something: ")if len(data) > 10: print("Long input!")
|
||||
```
|
||||
|
||||
Do this:
|
||||
|
||||
```
|
||||
if (data := input("Enter something: ")).strip() and len(data) > 10: print("Long input!")
|
||||
```
|
||||
|
||||
See? One line, and you’re already onto your next task.
|
||||
|
||||
## **9\.** `**collections.defaultdict**`**: Because Normal Dictionaries Are So Last Year**
|
||||
|
||||
Do KeyErrors frustrate you when a dictionary key doesn’t exist? Fix this with `defaultdict` from `collections`. It automatically creates the first value when you access a new key. No need to check if the key exists.
|
||||
|
||||
Without it:
|
||||
|
||||
```
|
||||
my_dict = {}if "counter" not in my_dict: my_dict["counter"] = 0my_dict["counter"] += 1
|
||||
```
|
||||
|
||||
With it:
|
||||
|
||||
```
|
||||
from collections import defaultdictmy_dict = defaultdict(int)my_dict["counter"] += 1
|
||||
```
|
||||
|
||||
Boom. One less headache to worry about.
|
||||
|
||||
## **10\. The Underscore** `**_**`**: The Secret Keeper of the REPL**
|
||||
|
||||
If you’re using Python interactively (or in Jupyter), the last result can be quickly accessed. The underscore `_` stores it for you. Handy, right?
|
||||
|
||||
```
|
||||
>>> 5 * 25125>>> _ + 50 # Access the previous result175
|
||||
```
|
||||
|
||||
This isn’t just useful — it’s like having a secret superpower you didn’t even know you had.
|
||||
|
||||
## **11\. Context Managers: Stop Forgetting to Close Files**
|
||||
|
||||
You probably think, “I always remember to close my files.” But just in case you forget, Python’s `with` statement will close the files for you. It’s like a smart assistant.
|
||||
|
||||
Without it:
|
||||
|
||||
```
|
||||
file = open('data.txt', 'r')try: data = file.read()finally: file.close()
|
||||
```
|
||||
|
||||
With it:
|
||||
|
||||
```
|
||||
with open('data.txt', 'r') as file: data = file.read()
|
||||
```
|
||||
|
||||
Less code, fewer bugs, and fewer excuses for leaving files open.
|
||||
|
||||
## **12\. F-strings: Formatting, but Without the Nonsense**
|
||||
|
||||
String formatting in Python used to be harder. You had to use `.format()` or `%` formatting. Now f-strings make everything better. They are faster and easier to read.
|
||||
|
||||
Instead of:
|
||||
|
||||
```
|
||||
name = "Alice"greeting = "Hello, {}".format(name)
|
||||
```
|
||||
|
||||
Use:
|
||||
|
||||
```
|
||||
name = "Alice"greeting = f"Hello, {name}"
|
||||
```
|
||||
|
||||
Simple, right? And the kicker? You can evaluate expressions directly inside the curly braces. Oh, and they’re faster, too. Just thought you’d like to know.
|
||||
|
||||
## **13\.** `**setdefault()**`**: Make Dictionaries Smarter**
|
||||
|
||||
You already know dictionaries are fast. But did you know you can speed them up with `setdefault()`? It checks if a key exists and assigns a default value at the same time.
|
||||
|
||||
Old-school way:
|
||||
|
||||
```
|
||||
my_dict = {}if "fruits" not in my_dict: my_dict["fruits"] = []my_dict["fruits"].append("apple")
|
||||
```
|
||||
|
||||
Streamlined way:
|
||||
|
||||
```
|
||||
my_dict = {}my_dict.setdefault("fruits", []).append("apple")
|
||||
```
|
||||
|
||||
If you haven’t been using this, you’re probably wasting time — and nobody wants that.
|
||||
|
||||
If you think I missed any shortcut, drop it in the comments. Python can always get faster!
|
||||
@@ -0,0 +1,190 @@
|
||||
---
|
||||
title: "17 Hilarious Engineer Jokes for All You Nerds Out There"
|
||||
source: "https://medium.com/the-knowledge-of-laughter/16-hilarious-engineer-jokes-for-all-you-nerds-out-there-7acad7786c79"
|
||||
author:
|
||||
- "[[Glenn M Stewart]]"
|
||||
published: 2024-10-17
|
||||
created: 2024-10-29
|
||||
description: "A mechanical engineer, an electrical engineer and a software engineer are on a road trip, when the car won’t start. The software engineer says, “Before we do anything else, let’s all just get out of…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Guaranteed to effect an erection
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@glenn-stewartm?source=post_page---byline--7acad7786c79--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/the-knowledge-of-laughter?source=post_page---byline--7acad7786c79--------------------------------)
|
||||
|
||||

|
||||
|
||||
onesourceauctions.com
|
||||
|
||||
A mechanical engineer, an electrical engineer and a software engineer are on a road trip, when the car won’t start.
|
||||
|
||||
The mechanical engineer says, “Let me check the starter.”
|
||||
|
||||
The electrical engineer says, “Let me make sure the battery is connected.”
|
||||
|
||||
==The software engineer says, “Before we do anything else, let’s all just get out of the car and then get back in.”==
|
||||
|
||||
Two engineering students were walking across campus when one said, “Where did you get such a great bike?”
|
||||
|
||||
The second engineer replied, “Well, I was walking along yesterday minding my own business when a beautiful woman rode up on this bike. She threw the bike to the ground, took off all of her clothes and said, “Take what you want.”
|
||||
|
||||
The first engineer nodded approvingly, “Good choice, the clothes probably wouldn’t have fit.”
|
||||
|
||||
A priest, a doctor, and an engineer were waiting one morning for a particularly slow group of golfers. The engineer fumed, “What’s with those guys? We must have been waiting for fifteen minutes!” The doctor chimed in, “I don’t know, but I’ve never seen such inept golf!”
|
||||
|
||||
The priest said, “Here comes the green keeper. Let’s have a word with him.” He said, “Hello George, what’s wrong with that group ahead of us? They’re rather slow, aren’t they?”
|
||||
|
||||
The green keeper replied, “Oh, yes. That’s a group of blind firemen. They lost their sight, saving our clubhouse from a fire last year, so we always let them play for free anytime.”
|
||||
|
||||
The group fell silent for a moment. The priest said, “That’s so sad. I think I will say a special prayer for them tonight.” The doctor said, “Good idea. I’m going to contact my ophthalmologist colleague and see if there’s anything he can do for them.” The engineer said, “Why can’t they play at night?”
|
||||
|
||||
An engineer, a statistician, and a physicist are out hunting. They spot a buck, and each takes turns trying to bag it. The physicist goes first. He pulls out his lab book and quickly calculates the bullet’s trajectory, assuming it is a perfect sphere in a vacuum.
|
||||
|
||||
The bullet falls 20m short of the deer.
|
||||
|
||||
The engineer goes second. He pulls out his engineer’s pad and book of projectile assumptions. After a few minutes, he’s ready, aims, and fires. The bullet lands 20m passed the deer.
|
||||
|
||||
The statistician leaps in the air, shouting, “We got it!”
|
||||
|
||||
Three engineering students were gathered together, discussing the possible designers of the human body.
|
||||
|
||||
One said, “It was a mechanical engineer. Just look at all the joints!”
|
||||
|
||||
Another said, “No, it was an electrical engineer. The nervous system has many thousands of electrical connections.”
|
||||
|
||||
The last one said, “No, actually it had to have been a civil engineer. Who else would run a toxic waste pipeline through the recreational area?”
|
||||
|
||||
The oldest computer can be traced back to Adam and Eve.
|
||||
|
||||
Surprise!
|
||||
|
||||
It was an Apple.
|
||||
|
||||
But with extremely limited memory…
|
||||
|
||||
Just 1 byte.
|
||||
|
||||
Then everything crashed.
|
||||
|
||||
Two antennas got married — the wedding was lousy, but the reception was outstanding.
|
||||
|
||||
What’s the difference between an introverted and an extroverted engineer?
|
||||
|
||||
An introverted engineer looks at his shoes when talking to you, and an extroverted engineer looks at your shoes when talking to you.
|
||||
|
||||
How many nuclear engineers does it take to change a lightbulb?
|
||||
|
||||
Seven. One to install the new bulb and six to figure out what to do with the old one for the next 10,000 years.
|
||||
|
||||
How do you know that an engineer is having a mid-life crisis?
|
||||
|
||||
He swaps his pocket protector for a smartphone holster.
|
||||
|
||||
How do software engineers change a broken light bulb?
|
||||
|
||||
They don’t change broken light bulbs at all. That is a hardware issue.
|
||||
|
||||
An engineer that works on robots every day is never lonely. Why?
|
||||
|
||||
Because they are constantly making new friends.
|
||||
|
||||
What do engineers use as birth control?
|
||||
|
||||
Their personalities.
|
||||
|
||||
If you’re an optimist, the glass is half full.
|
||||
|
||||
If you’re a pessimist, the glass is half empty.
|
||||
|
||||
If you’re an engineer, the glass is twice as large as it needs to be.
|
||||
|
||||
A wife asks her husband, an engineer, “Darling, can you please go to the shop and buy one pint of milk and if they have eggs, get a dozen!”
|
||||
|
||||
Off he goes. Half an hour later, the husband returns with 12 pints of milk.
|
||||
|
||||
His wife stares at him and asks, “Why on earth did you get 12 pints of milk?”
|
||||
|
||||
“Well… they had eggs,” he replied.
|
||||
|
||||
Definition of an engineer: somebody who makes precise guesswork based on unreliable data provided by people with questionable knowledge. Never wrong. Likes tables.
|
||||
|
||||
A man is walking in a field when he notices a guy adrift in a hot-air balloon with no fuel. Balloon guy shouts down, “A little help here?”
|
||||
|
||||
The man on the ground looks up and shouts, “You are in a hot-air balloon with no fuel. You’re about 20 feet off the ground, travelling north at roughly walking pace.”
|
||||
|
||||
The guy in the balloon shouts, “Are you an engineer?”
|
||||
|
||||
“Yes, how did you know?”
|
||||
|
||||
“Well, everything you told me is factually accurate, but it doesn’t do me any good.”
|
||||
|
||||
The engineer on the ground considers this and then shouts back, “Are you in management?”
|
||||
|
||||
“Yes, how did you know?”
|
||||
|
||||
“You were in this predicament before I got here. I haven’t done anything, and now it’s my fault.”
|
||||
|
||||
Boudreaux goes to a new chemical plant looking for a job.
|
||||
|
||||
Unfortunately, the only job open is a for chemical engineer. Boudreaux, who is not a chemical engineer, applies anyway and is asked to come in to take a test. He shows up and is shown into a room with another man.
|
||||
|
||||
They are given a test to take and both of them complete them pretty quickly.
|
||||
|
||||
In a half hour, Boudreaux and the other man are asked in to see the supervisor. The supervisor says, “These test results were fantastic. Some of the best answers I’ve seen. Both of you got the exact same question wrong, though. So, with that, I am going to offer the position to Bob there. Sorry, Mr. Boudreaux.”
|
||||
|
||||
Boudreaux says, “How come you give him da’ job if we both got the same one wrong?”
|
||||
|
||||
The supervisor says, “Well, because for question 12, his answer was, ‘I don’t know.’ Yours was, ‘me neither.’”
|
||||
|
||||
[Chuck Haacker — Medium](https://medium.com/@charles.haacker) contributed this gem.
|
||||
|
||||
Three men are condemned to die on the Guillotine. One of them is an engineer. The first condemned is placed on the board, run under the blade, and… nothing. The blade refuses to fall! The man is released since the machine of death did not work.
|
||||
|
||||
They try again with the second man, but again, no matter what they did, they could not get the blade to release, forcing them to let the second man go free.
|
||||
|
||||
The engineer came last, but he made an unusual request: to be executed face up. His request was granted. Looking up at the blade, the engineer said, “Wait, I think I see the problem.”
|
||||
|
||||
## Is Hell endothermic or exothermic?
|
||||
|
||||
The e-mail was on the weighty matter of the nature of hell, as allegedly posed by a Dr Robert Shambaugh of the University of Oklahoma school of chemical engineering. It purports to be a final exam question from May 1997.
|
||||
|
||||
His May 1997 question for his Momentum, Heat and Mass Transfer II class was: “Is hell exothermic or endothermic? Support your answer with proof.”
|
||||
|
||||
Most of his students wrote proofs of their beliefs using Boyle’s law which, as we know you know, describes the inversely proportional relationship between the absolute pressure and volume of a gas, if the temperature is kept constant within a closed system, or some variant thereof.
|
||||
|
||||
One student, however, wrote the following: “First, we need to know how the mass of hell is changing in time. So we need to know the rate at which souls are moving into hell and the rate at which they are leaving. I think that we can safely assume that once a soul gets to hell, it will not leave. Therefore, no souls are leaving. As for how many souls are entering hell, let’s look at the different religions that exist in the world today.
|
||||
|
||||
Most of these religions state that if you are not a member of their religion, you will go to hell.
|
||||
|
||||
Since there is more than one of these religions and since people do not belong to more than one religion, we can project that all souls go to hell.
|
||||
|
||||
With birth and death rates as they are, we can expect the number of souls in hell to increase exponentially. Now, we look at the rate of change of the volume in hell because Boyle’s law states that in order for the temperature and pressure in hell to stay the same, the volume of hell has to expand proportionately as souls are added. This gives two possibilities:
|
||||
|
||||
1\. If hell is expanding at a slower rate than the rate at which souls enter hell, then the temperature and pressure in hell will increase until all hell breaks loose.
|
||||
|
||||
2\. If hell is expanding at a rate faster than the increase of souls in hell, then the temperature and pressure will drop until hell freezes over.
|
||||
|
||||
So which is it??
|
||||
|
||||
If we accept the postulate given to me by Teresa during my freshman year that, ‘It will be a cold day in hell before I sleep with you’, and take into account the fact that I slept with her last night, then number two must be true, and thus I am sure that hell is exothermic and has already frozen over.
|
||||
|
||||
The corollary of this theory is that since hell has frozen over, it follows that it is not accepting any more souls and is therefore, extinct… leaving only heaven, thereby proving the existence of a divine being which explains why, last night, Teresa kept shouting, ‘Oh my God!’.”
|
||||
|
||||
The author, it is claimed, got an A+ for the answer.
|
||||
|
||||

|
||||
|
||||
## Glenn M Stewart
|
||||
|
||||
Pugilist, polemicist, Oxford Arabist, financial mastermind, international man of mystery, film producer, playwright, part-time-poet, full-time provocateur…
|
||||
@@ -0,0 +1,555 @@
|
||||
---
|
||||
title: "23 Game-Changing Python Packages You Are Missing Out On"
|
||||
source: "https://medium.com/pythoneers/23-underrated-python-packages-you-didnt-knew-existed-36dbb0a417c0"
|
||||
author:
|
||||
- "[[Abhay Parashar]]"
|
||||
published: 2024-10-20
|
||||
created: 2024-10-29
|
||||
description: "Python’s popularity as a programming language is undeniable, largely thanks to its expansive ecosystem of external packages crafted by a vibrant community of developers. While many of us are…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Python Hidden Gems!! (A Handpicked Collection)
|
||||
|
||||
## Make Your Life Easy By Exploring These Hidden Gems
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@abhayparashar31?source=post_page---byline--36dbb0a417c0--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/pythoneers?source=post_page---byline--36dbb0a417c0--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image From FreePik, Edited Using Canva.com
|
||||
|
||||
Python’s popularity as a programming language is undeniable, largely thanks to its expansive ecosystem of external packages crafted by a vibrant community of developers. While many of us are well-versed in the usual suspects — like NumPy, Pandas, and Flask — there’s a treasure trove of lesser-known libraries out there, just waiting to enhance your coding journey. In this article, we’re diving deep into some underrated Python packages that you *must* try. Whether you’re looking to streamline your workflow or discover new tools to tackle everyday challenges, these hidden gems will surely enhance your Python experience.
|
||||
|
||||
> “Python packages: tiny tools, massive impact, endless possibilities.”
|
||||
|
||||
## 1\. ==Ruff==
|
||||
|
||||
***“The fastest linter has arrived in the town!!”***
|
||||
|
||||
Ruff is a modern Python liner and code formatter library, written in Rust providing an efficient way to catch and fix common issues with your Python code.
|
||||
|
||||
**Key features-**
|
||||
|
||||
- 10–100x faster than existing linters (like flake8) and formatters (like Black).
|
||||
- Built-in caching to avoid re-analyzing unchanged files.
|
||||
- Provide support for automatic error correction.
|
||||
- Over 800+ built-in rules, with native re-implementation of popular fixes Flage8 plugins. Like flake8-bugbear.
|
||||
- Easy integrations for VS Code and more.
|
||||
|
||||
==Ruff can be used to replace== ==[Flake8](https://pypi.org/project/flake8/)== ==(plus dozens of plugins),== ==[**Black**](https://github.com/psf/black)====**,**== ==[**isort**](https://pypi.org/project/isort/)====**,**== ==[**pydocstyle**](https://pypi.org/project/pydocstyle/)====**,**== ==[**pyupgrade**](https://pypi.org/project/pyupgrade/)====**,**== ==[**autoflake**](https://pypi.org/project/autoflake/)====**, and more**====, all while executing tens or hundreds of times faster than any individual tool.==
|
||||
|
||||
```
|
||||
pip install ruffruff path/to/your/project
|
||||
```
|
||||
|
||||
Let’s review one of my test directories with a bunch of badly written code and see how it performs.
|
||||
|
||||

|
||||
|
||||
ruff output — Screenshot by Author
|
||||
|
||||
You know ??
|
||||
You can even ask **Ruff** to fix issues with your project.
|
||||
Sounds fascinating right ??
|
||||
Let’s try that too…
|
||||
|
||||
> “Speed is irrelevant if you are going in the wrong direction.” — M. Gandhi
|
||||
>
|
||||
> The next package will ensure you’re both fast and headed in the right direction.
|
||||
|
||||
## 2\. ==HTTPX==
|
||||
|
||||
***“Supercharge your HTTP requests with httpx — async-ready and user-friendly!”***
|
||||
|
||||
**httpx** is a fully featured, user-friendly HTTP client for Python, providing synchronous and asynchronous support. It’s designed as a next-gen alternative to `requests`, allowing you to take advantage of modern async features without sacrificing simplicity. Whether you're dealing with REST APIs, web scraping, or external HTTP services, httpx offers a clean and efficient API to get the job done.
|
||||
|
||||
**Some key features of HTTPX:**
|
||||
|
||||
- Best Replacement for Requests
|
||||
- Built-in support for asynchronous requests.
|
||||
- Custom timeouts, retries, and more.
|
||||
|
||||
Let’s utilize the **HTTPX Python** library and scrape all the amazing quotes from the open-source [QuotestoScrape](https://quotes.toscrape.com/) site.
|
||||
|
||||
```
|
||||
import httpxfrom bs4 import BeautifulSoupimport asynciourl = 'https://quotes.toscrape.com/'async def scrape_quotes(): async with httpx.AsyncClient() as client: response = await client.get(url) soup = BeautifulSoup(response.text, 'html.parser') quotes = soup.find_all('div', class_='quote') for quote in quotes: text = quote.find('span', class_='text').get_text() author = quote.find('small', class_='author').get_text() print(f'"{text}" - {author}')async def main(): await scrape_quotes()if __name__ == "__main__": asyncio.run(main())
|
||||
```
|
||||
|
||||

|
||||
|
||||
Script Output — Scraped Quotes — Screenshot By Author
|
||||
|
||||
> You can learn more about this library by reading this [**article**](https://scrapfly.io/blog/web-scraping-with-python-httpx/).
|
||||
|
||||
## 3\. ==Precommit==
|
||||
|
||||
***“Automate your code quality with pre-commit hooks!!”***
|
||||
|
||||
Pre-commit is a framework that allows you to define and enforce code quality checks before every commit. It integrates seamlessly with Git and runs checks like linters, formatting, and security tools to ensure your code meets specific quality standards before it’s pushed into the repository.
|
||||
|
||||
## Key Features —
|
||||
|
||||
- Automated checks.
|
||||
- MultiLanguage support.
|
||||
- Easy Configuration.
|
||||
|
||||
## **How To ??**
|
||||
|
||||
1. Create a `.pre-commit-config.yaml` file in your project root directory.
|
||||
|
||||
```
|
||||
repos: - repo: https://github.com/abhayparashar31/webscraping rev: v0.0.285 hooks: - id: ruff args: ["--fix"] - repo: https://github.com/pre-commit/mirrors-black rev: stable hooks: - id: black - repo: https://github.com/asottile/blacken-docs rev: v1.12.0 hooks: - id: blacken-docs
|
||||
```
|
||||
|
||||
2\. Install the git hook scripts
|
||||
|
||||
```
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
3\. Commit it !!!
|
||||
|
||||
```
|
||||
git commit -m "You commit comment!!"
|
||||
```
|
||||
|
||||
Pre-commit will review your code for errors and automatically fix them!!
|
||||
|
||||
## 4\. webview
|
||||
|
||||
***“Quite simple yet very effective”***
|
||||
|
||||
Webview is a Python package that allows you to create lightweight, native-looking desktop applications using web technologies like HTML, CSS, and Javascript.
|
||||
|
||||

|
||||
|
||||
My honest reaction when i first discovered this package…Just Amazing
|
||||
|
||||
It proves a simple way to display web content in a GUI, making it easy for developers to build and run web-based applications locally without complex frameworks.
|
||||
|
||||
Some key features of webview Python package include —
|
||||
|
||||
- Cross-Platform.
|
||||
- Lightweight.
|
||||
- Easy integration with API.
|
||||
- Javascript support.
|
||||
- Fully customizable.
|
||||
|
||||
```
|
||||
pip install pywebview
|
||||
```
|
||||
|
||||
Let’s build a simple ToDo List GUI using the Webview library —
|
||||
|
||||
```
|
||||
import webviewtasks = [] html_content = """<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>To-Do List</title> <style> body { font-family: Arial, sans-serif; margin: 50px; } h1 { color: #333; } ul { list-style-type: none; padding: 0; } li { padding: 5px; background-color: #f9f9f9; margin-bottom: 5px; display: flex; justify-content: space-between; border-radius: 4px; border: 1px solid #ccc; } button { background-color: #ff4b4b; color: white; border: none; padding: 5px 10px; border-radius: 4px; cursor: pointer; } </style></head><body> <h1>To-Do List</h1> <ul id="task-list"></ul> <input type="text" id="task-input" placeholder="Enter new task"> <button onclick="addTask()">Add Task</button> <script> window.onload = () => pywebview.api.get_tasks().then(update); const update = tasks => document.getElementById("task-list").innerHTML = tasks.map( (task, i) => \`<li>${task}<button onclick="remove(${i})">Remove</button></li>\` ).join(''); const addTask = () => pywebview.api.add_task( document.getElementById("task-input").value ).then(update); const remove = i => pywebview.api.remove_task(i).then(update); </script></body></html>"""class Api: def get_tasks(self): return tasks def add_task(self, task): tasks.append(task); return tasks def remove_task(self, index): tasks.pop(index); return tasksif __name__ == '__main__': webview.create_window('To-Do List App', html=html_content, js_api=Api()) webview.start()
|
||||
```
|
||||

|
||||
|
||||
**Todo List GUI** — **Created Using webview library** — Script Output GIF crated using ezgif.
|
||||
|
||||
Want to learn more about this library ?? Check out their [***official repo***](https://github.com/r0x0r/pywebview) containing lots of useful stuff.
|
||||
|
||||
## 5\. ==FTFY==
|
||||
|
||||
***“Turning Garbled Text into Clean Magic!”***
|
||||
|
||||
FTFY (Fixes Text For You) is an amazing Python library that helps clean up messy text caused by encoding errors, especially when characters get scrambled due to misinterpreted encodings (also known as *mojibake*). It automatically detects and fixes these issues, turning unreadable text back into a clear, readable format with little effort.
|
||||
|
||||
It supports —
|
||||
|
||||
- Automatic detection and correction of encodings
|
||||
- Wide range of encodings.
|
||||
|
||||
```
|
||||
import ftfycorrupted_text = 'ThÃs Ãs an ëxample of mójibake.'fixed_text = ftfy.fix_text(corrupted_text)print("Original corrupted text:", corrupted_text)print("Fixed text:", fixed_text)
|
||||
```
|
||||

|
||||
|
||||
**FTFY** Script Output — Screenshot By Author
|
||||
|
||||
Learn more about this library [***here***](https://ftfy.readthedocs.io/en/latest/)***.***
|
||||
|
||||

|
||||
|
||||
Let’s do some reconstruction on your python program output
|
||||
|
||||
## 6==. Rich==
|
||||
|
||||
***“Make Your Terminal Shine with Stunning”***
|
||||
|
||||
Rich is a powerful Python library that helps you reconstruct your console with color and style and display advanced content such as tables, markdown, syntax-highlighted code, etc.
|
||||
|
||||
You can make Rich yours by using the below command.
|
||||
|
||||
```
|
||||
pip install rich
|
||||
```
|
||||
|
||||
Here’s some sample code you might wanna give a try…
|
||||
|
||||
```
|
||||
from rich.console import Consolefrom rich.table import Tableconsole = Console()# Create a table to display some datatable = Table(title="Daily Updates!!!")table.add_column("Task", justify="left", style="cyan")table.add_column("Status", justify="right", style="green")table.add_column("Comments", justify="right", style="magenta")table.add_row("Patch 2.3.2", "[bold green]Completed[/]", "Patched Sucesssfully!")table.add_row("Vendor Callout", "[bold yellow]In Progress[/]", "Connected, Waiting for Response!!")table.add_row("Meeting with Client", "[bold red]Failed[/]", "Client Rescheduled Meeting!!")# Print the tableconsole.print(table)
|
||||
```
|
||||

|
||||
|
||||
Script Outpit — Rich Python library — Screenshot By Author
|
||||
|
||||
Check out their [**official docs**](https://rich.readthedocs.io/en/stable/introduction.html) for more detailed information about this package.
|
||||
|
||||
## 7\. ==WeasyPrint==
|
||||
|
||||
***“Convert your web pages into polished PDFs effortlessly.”***
|
||||
|
||||
WeaspyPrint allows you to generate PDF files directly from your HTML and CSS code files. It is especially useful for web developers who need to create print-ready documents from their web pages without relying on Javascript engines or heavy browser dependency.
|
||||
|
||||
Some key features of this **weasyprint** library include —
|
||||
|
||||
- Converts HTML/CSS into high-quality PDFs. in a blink.
|
||||
- Provides support for SVG images and embedded fonts.
|
||||
- Capable of handling multiple pages, headers, and footers automatically.
|
||||
- Lightweight and fast.
|
||||
|
||||
You can review and try some examples from their [**official website**](https://weasyprint.org/).
|
||||
|
||||
## 8\. ==MyPy==
|
||||
|
||||
***“Catch errors before they break your code!”***
|
||||
|
||||
MyPy is a handy tool that serves as a static type checker for Python. Think of it as your coding buddy that helps you add type annotations to your code. Doing this allows you to catch potential type-related mistakes before they become real headaches.
|
||||
|
||||

|
||||
|
||||
that’s how we gonna catch errors with this package..picture perfect!!
|
||||
|
||||
Let’s see how this library improves your coding lifestyle by identifying type-checking errors —
|
||||
|
||||
```
|
||||
import gensimfrom gensim.summarization.summarizer import summarizefrom gensim.summarization import keywordsimport wikipediawikisearch = wikipedia.page("Machine Learning")wikicontent = wikisearch.contentprint(wikicontent)summary_ratio = summarize(wikicontent, ratio = 0.01)print("summary by ratio")print(summary_ratio)summary_wordcount = summarize(wikicontent, word_count = 200)print("summary by word count")print(summary_wordcount)
|
||||
```
|
||||

|
||||
|
||||
Script Output — **MyPy** — Screenshot By Author
|
||||
|
||||
Get a sneak peek of how this can be useful by reading this [***article from RealPython***](https://realpython.com/lessons/type-checking-mypy/)***.***
|
||||
|
||||
## 9\. Bandit
|
||||
|
||||
***“Catch the culprits of your code, your very own Python security sentinel!!”***
|
||||
|
||||
Bandit is a security-focused static analysis tool designed to find common security issues in Python code. It scans your codebase, looking for potential vulnerabilities like SQL injection, hard-coded credentials, and weak cryptography usage. This tool helps ensure that your Python applications stay secure, even as they grow in complexity.
|
||||
|
||||
**Some key features of this library include —**
|
||||
|
||||
- Security Vulnerability Detector.
|
||||
- Customizable scans.
|
||||
- Simple CI/CD Integration.
|
||||
- Detailed report generation, with links to additional context regarding flagged issues.
|
||||
|
||||
Let’s try this package on a highly insecure code example —
|
||||
|
||||
```
|
||||
import requestsimport osAPI_KEY = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" AWS_SECRET_ACCESS_KEY = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"DB_PASSWORD = "mypassword123"URL = "http://example.com/api/v1/resource"response = requests.post(URL, data={"api_key": API_KEY, "password": DB_PASSWORD})
|
||||
```
|
||||

|
||||
|
||||
Bandit Scan Result — **Bandit** — Screenshot By Author
|
||||
|
||||
Here’s **the** [**official documentation**](https://bandit.readthedocs.io/en/latest/) of Bandit if you wanna dig more around this library.
|
||||
|
||||
## 10\. FlashText
|
||||
|
||||
***“Search faster, not harder, lightning-quick keyword extraction!”***
|
||||
|
||||
FlashText is an efficient Python package for keyword extraction and text replacement. Unlike traditional regular expressions, FlashText uses a Trie data structure to store keywords, enabling it to search for whole words without scanning text character by character like regular expressions.
|
||||
|
||||
It quickly traverses the Trie when it encounters matching characters, avoiding redundant backtracking and skipping irrelevant text. This makes it much faster for keyword search and replacement, especially when dealing with large keyword lists, as it processes all keywords in a single pass.
|
||||
|
||||
**Some key features of FlashText includes —**
|
||||
|
||||
☑️ Super fast keyword research and extraction.
|
||||
|
||||
☑️ Allows case-sensitive searches.
|
||||
|
||||
☑ Produce fewer false positives.
|
||||
|
||||
Let’s utilize Flashtext to replace certain keywords inside a TXT file with over 1000+ rows, and compare its performance with regex.
|
||||
|
||||
```
|
||||
import timeimport refrom flashtext import KeywordProcessorwith open("sample.txt", "r") as file: text = file.read()keywords = { "Python": "PYTHON", "Java": "JAVA_REPLACED", "JavaScript": "JS_REPLACED"}def regex_example(text): for key, value in keywords.items(): text = re.sub(r'\b' + re.escape(key) + r'\b', value, text) return textstart_time = time.time()regex_replaced = regex_example(text)regex_time = time.time() - start_timedef flashtext_example(text): keyword_processor = KeywordProcessor() for key, value in keywords.items(): keyword_processor.add_keyword(key, value) return keyword_processor.replace_keywords(text)start_time = time.time()flashtext_replaced = flashtext_example(text)flashtext_time = time.time() - start_timeprint("\nTime Taken by Regex: {:.6f} seconds".format(regex_time))print("\nTime Taken by FlashText: {:.6f} seconds".format(flashtext_time))
|
||||
```
|
||||

|
||||
|
||||
Script Output — FlashText — Screenshot By Author
|
||||
|
||||
## 11\. ==Pydantic==
|
||||
|
||||
***“Type your data into shape”***
|
||||
|
||||
Pydantic is a fast and flexible Python library designed for data validation and settings management. It provides intuitive tools for parsing and validating data, ensuring that everything meets to the specified types and constraints. Pydantic, ensures your data is accurate and well-structured, making your development process smoother and more efficient.
|
||||
|
||||
## **Why Pydantic ??**
|
||||
|
||||
- Enhances code clarity and control through type hints.
|
||||
- Offers rapid processing, leveraging core validation written in Rust.
|
||||
- Automatically generates JSON Schema for seamless tool integration.
|
||||
- Supports validation of built-in types like data classes and TypedDicts.
|
||||
- Provides options for custom validators and serializers.
|
||||
- Integrated into over 8,000 packages, including FastAPI.
|
||||
|
||||
Below is a simple Python example using pedantic —
|
||||
|
||||

|
||||
|
||||
Without vs With Pydantic — Screenshot By Author
|
||||
|
||||
You can see how using the Pydantic library has streamlined the code, making it shorter and clearer by eliminating the need for custom `validate_user()` methods.
|
||||
|
||||
## 12\. ==Unimport==
|
||||
|
||||
***“A single line to simplify your imports across environments”***
|
||||
|
||||
These powerful tool servers as both a linter and formatter, making it easy to detect and remove any unused import from your codebase, leading to a more efficient and less cluttered code.
|
||||
|
||||
```
|
||||
pip install unimport
|
||||
```
|
||||
|
||||
Let’s use this package and run it against one of my most recent small data science projects to see how it performs…
|
||||
|
||||
## 13\. ==WTForms==
|
||||
|
||||
***“Your go-to tool for handling web forms with ease”***
|
||||
|
||||
WTForms is a powerful and flexible form-handling and validation library, that simplifies the process of handling user input by automating common tasks such as validation, error handling, and rendering HTML forms.
|
||||
|
||||
WTForms supports data validation, CSRF protection, internationalization (I18N), and more.
|
||||
|
||||
- Easy integration with Flask.
|
||||
- Functionality to create custom form fields or extend existing ones to match your web app’s needs.
|
||||
- Automatically generates user-friendly error messages.
|
||||
|
||||
```
|
||||
from wtforms import Form, BooleanField, StringField, validatorsclass RegistrationForm(Form): username = StringField('Username', [validators.Length(min=4, max=25)]) email = StringField('Email Address', [validators.Length(min=6, max=35)]) accept_rules = BooleanField('I accept the site rules', [validators.InputRequired()])
|
||||
```
|
||||
|
||||
You can take this crash course from WTForms to get a good understanding of the library [**here**](https://wtforms.readthedocs.io/en/3.0.x/crash_course/).
|
||||
|
||||

|
||||
|
||||
Deadman ❌ Deadcode ✅
|
||||
|
||||
## 14\. ==Vulture==
|
||||
|
||||
***“Dead code detector”***
|
||||
|
||||
Vulture is just another Python package, which is why I love Python. It is designed to find unused code in your projects. It scans through your codebase, identifying functions, classes, and variables that are defined but never used. By removing this dead code, Vulture helps you streamline your project, reduce technical debt, and improve maintainability.
|
||||
|
||||
Here’s some sample code to test the capabilities of this package —
|
||||
|
||||
```
|
||||
def used_function(): print("This function is used")def unused_function(): print("This function is not used")class UnusedClass: def method(self): return "Unused method"used_function()
|
||||
```
|
||||
|
||||
Let’s run Vulture on this snippet using `vulture sample.py`
|
||||
|
||||

|
||||
|
||||
Script Output — **Vulture** — Screenshot by Author
|
||||
|
||||
## 15\. Pydeps
|
||||
|
||||
***“Visualize your Project’s dependencies with ease!!”***
|
||||
|
||||
Pydeps is a Python tool that generates dependency graphs for your project. It helps visualize the relationships between the modules in your code, giving you a clearer picture of how everything is interconnected.
|
||||
|
||||
Some key features of *Pydeps* package include —
|
||||
|
||||
- Easy to use.
|
||||
- Highly customizable.
|
||||
- Supports large codebases.
|
||||
|
||||

|
||||
|
||||
Sample generated graph — [Source](https://pydeps.readthedocs.io/en/latest/)
|
||||
|
||||
Learn more about this package [**here**](https://pydeps.readthedocs.io/en/latest/).
|
||||
|
||||
## 16\. ==Mimesis==
|
||||
|
||||
***“Fake it until you make it, especially in testing!”***
|
||||
|
||||
Mimesis is a handy Python library that helps you generate all kinds of fake data in various languages. It’s great for filling up test databases, generating fake API data, creating JSON or XML files, and even anonymizing real data.
|
||||
|
||||
**Key features —**
|
||||
|
||||
- Support generating data in 30+ languages.
|
||||
- Highly customizable.
|
||||
- Easy to integrate with your testing environment.
|
||||
- Optimized for generating large datasets quickly.
|
||||
|
||||
Let’s generate some fake data using Mimesis.
|
||||
|
||||
```
|
||||
import pandas as pdfrom mimesis import Person, Addressfrom mimesis.enums import Genderperson = Person('en')address = Address('en')data = { 'Name': [], 'Email': [], 'Phone': [], 'Street': [], 'City': [], 'Zip Code': []}n = 15 for _ in range(n): data['Name'].append(person.full_name(gender=Gender.MALE)) data['Email'].append(person.email()) data['Phone'].append(person.telephone()) data['Street'].append(address.street_name()) data['City'].append(address.city()) data['Zip Code'].append(address.zip_code())df = pd.DataFrame(data)df
|
||||
```
|
||||

|
||||
|
||||
Generated Fake data — **Mimesis** — Screenshot By Author
|
||||
|
||||
You can learn more about this package in detail through their [**official docs.**](https://mimesis.name/master/)
|
||||
|
||||
## 17\. ==Numerizer==
|
||||
|
||||
***“Bringing words and numbers together!”***
|
||||
|
||||
Numerizer is a simple, yet powerful Python library that converts written numbers like *twenty-five,* into their numerical equivalents. It also supports multi-word numbers like “*one hundred twenty-two thousand.*”
|
||||
|
||||
```
|
||||
from numerizer import numerizeprint(numerize("I have twenty-five apples.")) print(numerize("He owes me one hundred twenty-three dollars.")) print(numerize("Three dozen eggs")) print(numerize("Two Million Dollars"))
|
||||
```
|
||||

|
||||
|
||||
Script output — **Numerizer** — Screenshot by Author
|
||||
|
||||
## 18\. ==Yellowbrick==
|
||||
|
||||
***“Insights come alive when data meets visuals.”***
|
||||
|
||||
Yellowbrick is a machine-learning visualization library that provides visual tools for evaluating the performance, stability, and behavior of models, allowing users to easily compare and tune machine-learning algorithms.
|
||||
|
||||
Some key features of Yellowbrick Library include —
|
||||
|
||||
✓ Provide visual tools to understand classification, regression, and clustering models.
|
||||
|
||||
✓ Visual metrics for clustering algorithms, like silhouette analysis and elbow method.
|
||||
|
||||
✓ Works seamlessly with scikit-learn models and follows similar API conventions.
|
||||
|
||||
✓ Provide tools to visualize feature analysis and model selection process much simpler.
|
||||
|
||||
Let’s create a sample model and produce ConfusionMatrix to see beautiful visualizations of Yellowbrick.
|
||||
|
||||
```
|
||||
from yellowbrick.classifier import ConfusionMatrixfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_winefrom sklearn.metrics import classification_reportdata = load_wine()X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3, random_state=42)model = RandomForestClassifier(n_estimators=100, random_state=42)model.fit(X_train, y_train)visualizer = ConfusionMatrix(model, classes=[0, 1, 2])visualizer.score(X_test, y_test) visualizer.show()y_pred = model.predict(X_test)print(classification_report(y_test, y_pred))
|
||||
```
|
||||

|
||||
|
||||
Confusion Matrix — **Yellowbrick** — Screenshot By Author
|
||||
|
||||
You can check out their [**Official Docs**](https://www.scikit-yb.org/en/latest/) to understand the different types of visualizations this library offers.
|
||||
|
||||

|
||||
|
||||
Tinder ❌ Jellyfish ✅
|
||||
|
||||
## 19. ==Jellyfish==
|
||||
|
||||
***“Efficient Text Matching”***
|
||||
|
||||
Jellyfish is a Python library that provides different string comparison methods, making it easy to find similar or phonetic matches between strings. This tool is especially useful in text processing, where exact matches are hard to come by and flexibility is important. Whether you’re cleaning up user input, comparing documents, or matching names from various datasets, Jellyfish has a variety of algorithms to help you meet your needs.
|
||||
|
||||
**Key features of Jellyfish
|
||||
**▶️ Supports various algorithms, including Levenshtein, Jaro-Winkler, and more.
|
||||
▶️ Offers phonetic encoding methods such as Soundex and Metaphone for matching similar-sounding strings.
|
||||
▶️ Easy to use with various string types and encoding formats.
|
||||
▶️ Efficient algorithms optimized for speed and accuracy.
|
||||
|
||||
Let’s build a Python script utilizing the Jellyfish library to check for impersonated domains providing proper Brand Protection. Let’s build it around “Amazon”
|
||||
|
||||
```
|
||||
import jellyfishimport pandas as pdknown_domains = [ "amazon.com", "amazonprime.com", "amazonwebservices.com", "amazonbasics.com", "amazonmusic.com", "amazonkindle.com", "amzn.com", ]suspect_domains = [ "amzon.com", "amazonprimee.com", "amazan.com", "amazone.com", "amazonsweets.com", "amacosmaticszone.shop", "amz0n.com", "amason.com", "amzomkindle.com", "amzn.com", "amazop.com", "amazon-prime.com", "amafinance.org", "amafashion.com"]def check_for_domain_impersonation(domain_list, suspects, threshold=0.7): results = [] for suspect in suspects: best_match = None best_score = 0 for domain in domain_list: score = jellyfish.levenshtein_distance(suspect, domain) similarity_score = 1 - (score / max(len(suspect), len(domain))) if similarity_score > best_score: best_score = similarity_score best_match = domain results.append((suspect, best_match, best_score)) return resultsimpersonation_results = check_for_domain_impersonation(known_domains, suspect_domains)df_results = pd.DataFrame(impersonation_results, columns=["Suspect Domain", "Known Domain", "Similarity Score"])def highlight_similarity(val): color = 'green' if val <= 0.8 else 'red' return f'background-color: {color}'styled_df = df_results.style.applymap(highlight_similarity, subset=["Similarity Score"])styled_df.set_table_attributes('style="width: 100%; border: 1px solid black;"')styled_df.set_properties(**{'border': '1px solid black'})styled_df
|
||||
```
|
||||

|
||||
|
||||
Suspect vs Known Domain — **Jellyfish** — Screenshot By Author
|
||||
|
||||
In the above script output, Red means the domain is kinda impersonating the original brand and Green means it is not much related to the legit domain. For example, we have kept the threshold to “0.7”, you can always change it based on your requirements.
|
||||
|
||||
## 20\. PyGWalker
|
||||
|
||||
***“Data speaks more when it's visually represented!!”***
|
||||
|
||||
PyGWalker is a Python package that turns your data into interactive visualization apps with one line of code and enables you to share your apps with one click.
|
||||
|
||||
Some key features of this package include —
|
||||
|
||||
- Interactive Visualization.
|
||||
- Compatibility with GNNs.
|
||||
- Fully customizable.
|
||||
- Easy Integration with Jupyter Notebook.
|
||||
- Dynamically update graphs as data changes.
|
||||
|
||||

|
||||
|
||||
**Pygwalker** — [**GIF Source**](https://kanaries.net/pygwalker)
|
||||
|
||||
You can learn more about this package through their [**official docs**](https://docs.kanaries.net/pygwalker).
|
||||
|
||||
## 21\. ==PySnooper==
|
||||
|
||||
***“Never use print for debugging again”***
|
||||
|
||||
PySnooper is an incredibly handy debugging tool that helps you track and understand code execution with minimal effort. By wrapping your code with a simple decorator, PySnooper logs the execution flow, variable values, and line-by-line activities to give you insights into what’s happening under the hood.
|
||||
|
||||
- Just a decorator can avail its functionality, no need to rewrite your code.
|
||||
- provides detailed logs including variable tracking and timestamps for every line of code executed.
|
||||
- Easy to redirect logs to files or other channels.
|
||||
|
||||
Let’s use a sample code to test the functionalities of PySnooper package —
|
||||
|
||||
```
|
||||
import pysnooper@pysnooper.snoop() def fibonacci_series(n): a, b = 0, 1 result = [] for _ in range(n): result.append(a) a, b = b, a + b return resultn = 3 fibonacci_series(n)
|
||||
```
|
||||

|
||||
|
||||
Generated Logs —**Pysnooper** — Screenshot By Author
|
||||
|
||||
Here’s the [**official Pypy page**](https://pypi.org/project/PySnooper/) of this library containing some examples you might wanna try.
|
||||
|
||||
## 22\. ==PyPerclip==
|
||||
|
||||
***“Keep track of your clipboard with ease!”***
|
||||
|
||||
PyPerclip is a simple and powerful library that provides cross-platform functionality for copying and pasting text to and from the system clipboard.
|
||||
|
||||
It's a cross-platform library that works seamlessly with Windows, macOS, and Linux without requiring any additional dependencies, making it a go-to tool for automating clipboard tasks in Python scripts.
|
||||
|
||||
```
|
||||
import pyperclipdef copy_text_to_clipboard(text): pyperclip.copy(text) print(f"Copied to clipboard: {text}")def paste_text_from_clipboard(): text = pyperclip.paste() print(f"Pasted from clipboard: {text}") return textdef check_clipboard_contains(target_text): clipboard_content = pyperclip.paste() if clipboard_content == target_text: print(f"Clipboard contains: {target_text}") else: print(f"Clipboard does not contain '{target_text}' \nClipboard Text: {clipboard_content} ")def copy_and_format_text(text): formatted_text = f"***{text.upper()}***" pyperclip.copy(formatted_text) print(f"Copied formatted text to clipboard: {formatted_text}")def demo_text_operations(): copy_text_to_clipboard("Python Programming\n") pasted_text = paste_text_from_clipboard() check_clipboard_contains("Machine Learning") copy_and_format_text("Hello World!!") paste_text_from_clipboard()demo_text_operations()
|
||||
```
|
||||

|
||||
|
||||
Sample Script Output — **Pyperclip** — Screenshot By Author
|
||||
|
||||
## 23\. Tabulate
|
||||
|
||||
***“Turn your data into beautifully formatted tables”***
|
||||
|
||||
Tabulate is designed to make it easy to create and display data in the form of pretty, well-organized tables. Whether you’re working with lists, dictionaries, NumPy arrays, or Pandas DataFrames, Tabulate will help you present your data in a clean, readable format. It’s widely used in both CLI (command-line interface) applications and Jupyter notebooks.
|
||||
|
||||
```
|
||||
from tabulate import tabulatedata = [ ["John", 28, "Software Engineer", "New York"], ["Sara", 35, "Product Manager", "San Francisco"], ["John", 25, "UX", "Florida"], ["Charles", 29, "InfoSec", "Austin"], ["David", 42, "Data Scientist", "Boston"], ["Maria", 30, "Designer", "Seattle"], ["Chris", 35, "Red Team", "Ohio"]]headers = ["Name", "Age", "Job Title", "Location"]fancy_grid_table = tabulate(data, headers, tablefmt="fancy_grid")print(fancy_grid_table)
|
||||
```
|
||||

|
||||
|
||||
Generated Table — **Tabulate** — Screenshot By Author
|
||||
|
||||
Thanks For Reading Till Here, If You Like My Content and Want To Support Me The Best Way is —
|
||||
|
||||
1. ==Leave a Clap👋and your thoughts 💬 below.️==
|
||||
2. Follow Me On ==[***Medium***](http://abhayparashar31.medium.com/)==.
|
||||
3. Connect With Me On [***LinkedIn***](https://www.linkedin.com/in/abhay-parashar-328488185/).
|
||||
4. Attach yourself to [***My Email List***](https://abhayparashar31.medium.com/subscribe) to never miss reading another article of mine
|
||||
5. Do Follow ==[**The Pythoneers**](http://medium.com/pythoneers)== Publication for more similar stories.
|
||||
@@ -0,0 +1,74 @@
|
||||
---
|
||||
title: "3 Advanced Java Best Practices"
|
||||
source: "https://orlandolorenzodeveloper.medium.com/3-advances-java-best-practices-ac7d02a55432"
|
||||
author:
|
||||
- "[[Lorenzo Orlando | Kreyzon Custom Software]]"
|
||||
published: 2024-10-01
|
||||
created: 2024-10-29
|
||||
description: "Hello everyone, today we’re diving deep in some advanced Java best practices. Let’s start right away. Java 8 introduced streams and lambda expressions, which allow for cleaner, functional-style code…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://orlandolorenzodeveloper.medium.com/?source=post_page---byline--ac7d02a55432--------------------------------)
|
||||
|
||||

|
||||
|
||||
Hello everyone, today we’re diving deep in some advanced Java best practices. Let’s start right away.
|
||||
|
||||
## 1\. Use Streams and Lambda Expressions Efficiently
|
||||
|
||||
**Why?**
|
||||
|
||||
Java 8 introduced streams and lambda expressions, which allow for cleaner, functional-style code. While they are powerful, improper use can lead to performance overhead and complexity.
|
||||
|
||||
**Best Practices:**
|
||||
|
||||
- Avoid creating multiple intermediate Stream operations like `filter()` and `map()` if not necessary, as they can add overhead.
|
||||
- Leverage **parallel streams** for CPU-bound tasks but avoid them for I/O-bound tasks (due to context switching).
|
||||
- Prefer `**forEach()**` for side effects like logging, but use terminal operations like `collect()` for transforming data.
|
||||
|
||||
**Example**
|
||||
|
||||
```
|
||||
List<String> names = employees.stream() .filter(e -> e.getAge() > 30) .map(Employee::getName) .collect(Collectors.toList());
|
||||
```
|
||||
|
||||
## 2\. Minimize Synchronization and Leverage Concurrency Utilities
|
||||
|
||||
**Why?**
|
||||
|
||||
Java provides a rich set of concurrency utilities like `ExecutorService`, `ForkJoinPool`, and `CompletableFuture`. Using these properly avoids blocking and bottlenecks in multi-threaded applications.
|
||||
|
||||
**Best Practices:**
|
||||
|
||||
- Use `**ConcurrentHashMap**` over synchronized collections for thread-safe operations with better performance.
|
||||
- Utilize **optimistic locking** (e.g., `java.util.concurrent.atomic` package) instead of traditional `synchronized` blocks.
|
||||
- Leverage **non-blocking algorithms** and modern concurrency utilities like `CompletableFuture` for asynchronous processing.
|
||||
|
||||
**Example**
|
||||
|
||||
```
|
||||
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { processData();}, executorService);
|
||||
```
|
||||
|
||||
## 3\. Apply Design Patterns and Immutability Smartly
|
||||
|
||||
**Why?**
|
||||
|
||||
Design patterns like **Singleton**, **Factory**, and **Builder** ensure better object management, while immutability improves thread-safety and reduces side effects.
|
||||
|
||||
**Best Practices:**
|
||||
|
||||
- Ensure **immutability** in frequently used objects to make them thread-safe without requiring synchronization.
|
||||
- Use **Factory Pattern** to encapsulate object creation, making the code more flexible and testable.
|
||||
- Apply the **Builder Pattern** for constructing complex objects, making the code cleaner and avoiding telescoping constructors.
|
||||
|
||||
**Example**
|
||||
|
||||
```
|
||||
public class User { private final String name; private final int age; private User(Builder builder) { this.name = builder.name; this.age = builder.age; } public static class Builder { private String name; private int age; public Builder withName(String name) { this.name = name; return this; } public Builder withAge(int age) { this.age = age; return this; } public User build() { return new User(this); } }}User user = new User.Builder().withName("John").withAge(25).build();
|
||||
```
|
||||
@@ -0,0 +1,112 @@
|
||||
---
|
||||
title: "4 Paradoxes That Will Expand Your Thinking"
|
||||
source: "https://medium.com/illumination/4-paradoxes-that-will-expand-your-thinking-7cce081bb766"
|
||||
author:
|
||||
- "[[Elias Bsaibes]]"
|
||||
published: 2024-09-06
|
||||
created: 2024-10-29
|
||||
description: "Explore 4 mind-bending paradoxes that challenge your understanding of truth, identity, and omnipotence. Expand your thinking with these philosophical dilemmas."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## PHILOSOPHY | SELF-IMPROVEMENT
|
||||
|
||||
## Challenge your mind
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@eliasbsaibes?source=post_page---byline--7cce081bb766--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/illumination?source=post_page---byline--7cce081bb766--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [K. Mitch Hodge](https://unsplash.com/@kmitchhodge?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
==Our minds crave familiarity, and as we all know, too much familiarity is bad and leads to complacency.==
|
||||
|
||||
It’s important to challenge the rational mind every now and then.
|
||||
|
||||
That’s why today we’re going to dive into 4 paradoxes that will probably make you scratch your head. (The last one will change your perspective on **God**.)
|
||||
|
||||
## 1\. The Liar Paradox
|
||||
|
||||
Let’s look at the following sentence:
|
||||
*“****This sentence is false.”***
|
||||
|
||||
Is it true? If you say yes then the liar sentence is true but it says that it’s false. Therefore it must be false but you said it is true.
|
||||
|
||||
If you say it’s false, then the sentence should be true because it says that it is false, but then that means that is also false.
|
||||
|
||||
You see where it goes.
|
||||
|
||||
The paradox here is that the sentence is true and false at the same time.
|
||||
|
||||
However, nothing can be false and true at the same time.
|
||||
|
||||
This paradox was invented by the philosopher ***Eubulides of Miletus***, who was famous for his paradoxes, in the 4th century BC.
|
||||
|
||||
## 2\. The Ship of Theseus Paradox
|
||||
|
||||
For this one, we need a little bit of context.
|
||||
|
||||
***Theseus*** was a young prince of Athens in Ancient Greece, who wanted to prove his worthiness of succeeding to the throne. To prove it, he decided to embark on a ship towards Crete where the Minotaur, a mythological creature, held Athenian kids and fought it.
|
||||
|
||||
He succeeded at rescuing the seven boys and seven girls and killed the Minotaur. Upon his return to Athens, he was welcomed with praise and recognition.
|
||||
|
||||
The Athenians decided to keep the boat that ***Theseus*** used as a national treasure for hundreds of years. However, as the boat became old, its worn-out components had to be replaced with new ones.
|
||||
|
||||
Over time, every part of the ship was gradually replaced.
|
||||
|
||||
That’s when the philosophical dilemma arises: “**Is it still the same boat?**”
|
||||
|
||||
Can it still be called ***Theseus’s ship***?
|
||||
|
||||
If not, then at what point did it stop being?
|
||||
|
||||
This paradox was created by the Greek philosopher and historian **Plutarch**, and questions the nature of identity and challenges our understanding of what makes something the “same” over time.
|
||||
|
||||
## 3\. The Barber Paradox
|
||||
|
||||
In a certain town with only one barber, the law says:
|
||||
|
||||
> 1.“The barber shaves all those men who live in the town who do not shave themselves, and only those men.”
|
||||
> 2.” All inhabitants must be shaved.”
|
||||
|
||||
But the question is “Does the barber shave himself?”
|
||||
|
||||
If the barber shaves himself, then he must stop because the law says that he shouldn’t shave someone who shaves himself.
|
||||
|
||||
However, the law also states he must shave himself because the barber needs to shave everyone in the town who doesn’t shave himself.
|
||||
|
||||
This paradox, introduced by **Bertrand Russel**, leads to a logical contradiction.
|
||||
|
||||
## 4\. The Omnipotence Paradox
|
||||
|
||||
Imagine for a second an omnipotent being, for example, a God.
|
||||
|
||||
He can do everything because he has infinite power, right?
|
||||
|
||||
Well, the question arises: **“Can an omnipotent being create a stone so heavy that even it cannot lift it?”**
|
||||
|
||||
**If the being can create a stone so heavy that it can’t lift**, then it can’t do anything — namely, lift the stone, which implies that the being is not omnipotent.
|
||||
|
||||
**If the being can’t create such a stone,** then there’s something else it can’t do — create a stone so heavy that it can’t lift, which also suggests that the being is not omnipotent.
|
||||
|
||||
This paradox, often associated with medieval theologian Thomas Aquinas, concludes that true omni potency is impossible or logically incoherent.
|
||||
|
||||
***That’s all for today!***
|
||||
|
||||
These paradoxes invite us to rethink our concepts of truth and existence. Let them inspire deeper reflection and curiosity.
|
||||
|
||||
🌟**Want to dive deeper into the process of self-discovery and personal growth? Get** [**my free self-reflection guide here.**](https://eliasbsaibes.ck.page/c6c48752e6)
|
||||
|
||||
💜[**Join my Discord server**](https://discord.gg/bjfMBxk5UM) to explore meaningful discussions on philosophy and self-improvement. Share your insights, ask questions, and grow with a like-minded community!
|
||||
|
||||
***Thank you for reading!***
|
||||
@@ -0,0 +1,139 @@
|
||||
---
|
||||
title: "5 IntelliJ IDE Features That Will Set You Apart as a Java Programmer"
|
||||
source: "https://medium.com/@gumparthypk/5-intellij-ide-features-that-will-set-you-apart-as-a-java-programmer-7ea88d79d437"
|
||||
author:
|
||||
- "[[Gumparthy Pavan Kumar]]"
|
||||
published: 2024-10-19
|
||||
created: 2024-10-29
|
||||
description: "Welcome to the playzone for developers: the IDE. For software engineers, this space is a creative hub where we bring life to ideas by writing code — almost like a second home. 🏠 If the answer is…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@gumparthypk?source=post_page---byline--7ea88d79d437--------------------------------)
|
||||
|
||||
Welcome to the playzone for developers: **the IDE**. For software engineers, this space is a creative hub where we bring life to ideas by writing code — almost like a second home. 🏠
|
||||
|
||||
**IDE:** Integrated Development Environment that provides a platform runtime for software development
|
||||
|
||||

|
||||
|
||||
IntelliJ
|
||||
|
||||
Source: [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/)
|
||||
|
||||
When was the last time you found yourself debugging or refactoring code?
|
||||
|
||||
If the answer is recent, then I’m right there with you. Whenever I review my old code, I often ask myself, “What was I thinking then?” 😀
|
||||
|
||||
Naturally after review, I tend to refactor it because ***progress — not perfection — matters to me***.
|
||||
|
||||
While performing the refactoring tasks, I discovered multiple in-house features that I didn’t know already existed, which if applied could have helped me become more productive.
|
||||
|
||||
In this article, I’m excited to share these standout features of IntelliJ that can elevate your skills and make you a more proficient software engineer.
|
||||
|
||||
Without further ado, let’s dive right in!
|
||||
|
||||
## 1\. Live Templates
|
||||
|
||||
Live templates are a feature that lets you easily insert common code constructs such as loops, classes, conditions, and print statements.
|
||||
|
||||
For instance, in Spring applications, we often need to configure databases using property files, which can make it challenging to navigate and inject these parameters. With live templates, you can create abbreviations to quickly insert these parameters directly into your code.
|
||||
|
||||
To configure Live Templates Navigate to -> **Settings -> Editor -> Live Templates**
|
||||
|
||||

|
||||
|
||||
Live Templates
|
||||
|
||||
Now we can use this abbreviation anywhere in applicable paths in this case i.e Property and Other files
|
||||
|
||||

|
||||
|
||||
Output
|
||||
|
||||
## **2\. File Templates**
|
||||
|
||||
File templates serve as default specifications for new files created through the **File | New** window in IntelliJ.
|
||||
|
||||
The IDE offers several template variables that can automatically replace content each time a file is generated. Here are a few that I found particularly useful:
|
||||
|
||||
1. DATE
|
||||
2. PACKAGE\_NAME
|
||||
3. USER
|
||||
4. PROJECT\_NAME
|
||||
5. FILE\_NAME
|
||||
|
||||
One valuable use case for this feature is the automatic generation of comments that include the author’s name and creation timestamp, a practice commonly found in well-maintained open-source codebases.
|
||||
|
||||
To configure Live Templates Navigate to -> **Settings -> Editor -> File and Code Templates**
|
||||
|
||||

|
||||
|
||||
File And Code Templates
|
||||
|
||||
## 3\. Structural Search & Replace
|
||||
|
||||
This feature lets you search for a particular code pattern in your code. It is essentially a script that you write to determine the search criteria.
|
||||
|
||||
One use case where I have observed this feature is very helpful is when searching for patterns/ dependency hierarchies:
|
||||
|
||||
For Instance, say we want to replace all occurrences of **For-Next** loop with **For-Each**
|
||||
|
||||

|
||||
|
||||
Structural Search & Replace
|
||||
|
||||
Just clicking replace will update the code in every matching code pattern.
|
||||
|
||||
## 4\. Sort Lines
|
||||
|
||||
This feature I find particularly helpful when working with property and env files
|
||||
|
||||
It is often possible that your property files become cumbersome with parameters under the same hierarchy not properly grouped, leading to a frustrating experience.
|
||||
|
||||
This feature allows you to do the same thing by simply sorting the data according to Lexicographical order
|
||||
|
||||
Setting available in **Edit -> Sort Lines**
|
||||
|
||||
## 5\. Git Tool Box
|
||||
|
||||
This is particularly helpful if you are someone who manages the VCS workflow using the IntelliJ interface
|
||||
|
||||
This lets you configure checks, and inspections to run before committing without needing to configure git-hooks.
|
||||
|
||||
To Configure Navigate to **Settings -> Version Control**
|
||||
|
||||

|
||||
|
||||
Version Control Setting
|
||||
|
||||
## Bonus
|
||||
|
||||
This will be one of those important features that will make your day much more productive in debugging
|
||||
|
||||
## Analyze Stack Trace/ Thread Dump
|
||||
|
||||
Often you are interested in analyzing exceptions received in production for some flow. Unlike the exceptions, while you get in debug mode, these exceptions do not have links to help you navigate the corresponding locations in the source code.
|
||||
|
||||
With IntelliJ, you can copy an exception trace into **Stack Trace Analyser** then explore information, and navigate to corresponding sections in your application code.
|
||||
|
||||
This feature is completely free in Intellij
|
||||
|
||||

|
||||
|
||||
Analyse Stack Trace
|
||||
|
||||
## References:
|
||||
|
||||
If you find any other features that help in day-to-day, please don’t forget to share them in the comments 🙂
|
||||
|
||||
Thank you for reading until the end. If you found this blog insightful
|
||||
|
||||
Give this blog a few claps 👏 to show your love!
|
||||
And hit that follow button 👉 and consider [subscribing](https://medium.com/@gumparthypk/subscribe) to stay updated on my latest posts.
|
||||
|
||||
Happy Learning! 😊
|
||||
@@ -0,0 +1,353 @@
|
||||
---
|
||||
title: "5 Linux Command Tricks That Will Change Your Life as a Programmer"
|
||||
source: "https://levelup.gitconnected.com/5-linux-command-tricks-that-will-change-your-life-as-a-programmer-825a4524218a"
|
||||
author:
|
||||
- "[[CyCoderX]]"
|
||||
published: 2024-10-10
|
||||
created: 2024-10-29
|
||||
description: "Discover five must-know Linux command-line tricks to enhance your workflow. Learn how to navigate directories, manage files, and track logs like a pro."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Boost your productivity with these powerful Linux commands for developers!
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://cycoderx.medium.com/?source=post_page---byline--825a4524218a--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://levelup.gitconnected.com/?source=post_page---byline--825a4524218a--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Gabriel Heinzer](https://unsplash.com/@6heinz3r?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
The command-line interface is the bread and butter for most tech professionals, especially developers and system administrators. Whether you are writing scripts, configuring servers, or automating tasks, knowing your way around Linux commands can save you hours of work.
|
||||
|
||||
For many, Linux may seem daunting at first glance, but once you unlock the potential of its command-line interface (CLI), you’ll realize it’s a programmer’s best friend. From directory navigation to file manipulation and even debugging, mastering these simple yet powerful Linux commands can drastically improve your workflow.
|
||||
|
||||
In this article, we’ll explore five command-line tricks that can make your life easier if you’re a developer. These aren’t just “nice-to-know” shortcuts — they’re game-changers that will save you time and make your interactions with the terminal far more efficient.
|
||||
|
||||
**Let’s dive in!**
|
||||
|
||||
> I’d be grateful for your support with a clap! If you’re passionate about [Python](https://medium.com/@cycoderx/list/python-sagas-by-cycoderx-5cda9957a9a2), [SQL](https://levelup.gitconnected.com/optimizing-sql-queries-tips-and-techniques-for-faster-performance-7d57aa38722e), [Data Engineering](https://aws.plainenglish.io/azure-data-factory-the-ultimate-cloud-data-integration-tool-bf3e7c6f653a) and [Data Science](https://python.plainenglish.io/automate-email-response-generation-using-the-chatgpt-api-with-python-1d97ab5ce66b), consider following me for more content.😊
|
||||
|
||||

|
||||
|
||||
## Python Chronicles CyCoderX
|
||||
|
||||
## Creating Multiple Combinations of Folders with `mkdir` and Braces `{}`
|
||||
|
||||
Organizing files and directories is a frequent task for developers, especially when managing projects or setting up complex directory structures. Normally, creating multiple directories involves a lot of repetitive typing. However, there’s a powerful trick with the `mkdir` command that allows you to create multiple directories in one go using braces `{}`.
|
||||
|
||||
## The Problem
|
||||
|
||||
Let’s say you want to create a folder structure for different environments (development, testing, and production) for several services in your project. Traditionally, you might do this manually, which could look like:
|
||||
|
||||
```
|
||||
mkdir devmkdir testmkdir prod
|
||||
```
|
||||
|
||||
This gets cumbersome when your structure becomes more complex. For example, if you needed folders for both `backend` and `frontend` services in all three environments, the process becomes tedious.
|
||||
|
||||
## The Solution: `mkdir` with Braces `{}`
|
||||
|
||||
Instead of creating each directory one by one, you can combine all of this into a single command using `mkdir` and braces `{}`. This allows you to create combinations of directories efficiently.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
mkdir -p {dev,test,prod}/{backend,frontend}
|
||||
```
|
||||
|
||||
Here’s a breakdown of what’s happening:
|
||||
|
||||
- The `-p` flag tells `mkdir` to create parent directories as needed (i.e., it won’t throw errors if the parent directories don’t exist yet).
|
||||
- The curly braces `{}` allow you to specify multiple options that `mkdir` will automatically combine.
|
||||
- The first set `{dev,test,prod}` creates directories for different environments.
|
||||
- The second set `{backend,frontend}` creates directories for different services.
|
||||
|
||||
## What Happens Behind the Scenes
|
||||
|
||||
When this command runs, the following folder structure is created:
|
||||
|
||||
```
|
||||
dev/ backend/ frontend/test/ backend/ frontend/prod/ backend/ frontend/
|
||||
```
|
||||
|
||||
## Why This Trick is a Game-Changer
|
||||
|
||||
This method saves significant time and reduces human error, especially when you’re setting up large projects with complex folder structures. Instead of typing out every combination manually, you can define them in one concise command.
|
||||
|
||||
## Navigate Back with `cd -` Instead of Repeatedly Using `cd ..`
|
||||
|
||||
As a programmer, it’s common to find yourself working within deeply nested directories. For instance, you might be moving from your project’s root directory into subdirectories for code, configuration files, or logs. However, when it’s time to return to where you started, navigating back manually by typing `cd ..` multiple times can become frustrating and error-prone.
|
||||
|
||||
## The Problem
|
||||
|
||||
Imagine you’re working in a nested directory like this:
|
||||
|
||||
```
|
||||
/home/user/projects/webapp/src/frontend/components
|
||||
```
|
||||
|
||||
To return to the project root, you might normally have to type `cd ..` several times, like this:
|
||||
|
||||
```
|
||||
cd ..cd ..cd ..cd ..
|
||||
```
|
||||
|
||||
That’s four separate commands just to get back to `/home/user/projects/`. Not only is this tedious, but it’s also easy to lose track of where you came from.
|
||||
|
||||
## The Solution: `cd -`
|
||||
|
||||
Here’s a simpler, faster alternative: use the `cd -` command to instantly return to your previous directory, no matter how deep you’ve gone into a nested structure.
|
||||
|
||||
**How It Works**
|
||||
|
||||
- The command `cd -` doesn’t navigate up the directory tree like `cd ..`. Instead, it takes you back to the last directory you were in, almost like a "back" button in a web browser.
|
||||
|
||||
For example, let’s say you started in your project’s root directory `/home/user/projects/webapp/`, then moved into the nested directory `/home/user/projects/webapp/src/frontend/components`. Now, instead of typing `cd ..` several times to return, you can simply type:
|
||||
|
||||
```
|
||||
cd -
|
||||
```
|
||||
|
||||
And you’ll be instantly back in `/home/user/projects/webapp/`.
|
||||
|
||||
## What’s Happening Behind the Scenes
|
||||
|
||||
The `cd -` command stores the previous directory in memory, so when you use it, it swaps your current directory with the last one. It’s a highly efficient way to navigate back and forth between two directories, especially when you’re jumping between a working directory and a deeply nested one.
|
||||
|
||||
## Practical Use Case
|
||||
|
||||
This trick is especially useful when you’re debugging or working on multiple parts of a project. If you need to frequently switch between the project’s root and a deep subdirectory, `cd -` saves you from typing long paths or navigating up step by step.
|
||||
|
||||

|
||||
|
||||
Photo by [Igor Starkov](https://unsplash.com/@igorstarkoff?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
## Create Multiple Files Quickly with `touch` and a Range of Numbers
|
||||
|
||||
Creating multiple files is a common task for developers, whether you’re generating test files, placeholders, or logs. While you might normally create files one at a time, doing so manually for a large number of files becomes cumbersome. Fortunately, Linux offers a way to create multiple files in a single command using `touch` and a range of numbers within braces `{}`.
|
||||
|
||||
## The Problem
|
||||
|
||||
Imagine you need to create 100 numbered files for a series of test cases, like `test1.txt`, `test2.txt`, all the way up to `test100.txt`. Doing this manually with individual `touch` commands would look something like this:
|
||||
|
||||
```
|
||||
touch test1.txttouch test2.txttouch test3.txt...touch test100.txt
|
||||
```
|
||||
|
||||
As you can imagine, this is tedious and time-consuming. But there’s a better way!
|
||||
|
||||
## The Solution: `touch` with a Number Range and Braces `{}`
|
||||
|
||||
You can use the `touch` command with a range of numbers inside braces `{}` to quickly create multiple files in one go. Here's how it works:
|
||||
|
||||
```
|
||||
touch test{1..100}.txt
|
||||
```
|
||||
|
||||
## What’s Happening Here
|
||||
|
||||
- The `touch` command is used to create new files. Normally, you’d use it like this: `touch filename.txt`.
|
||||
- By adding a number range inside braces `{1..100}`, you tell the shell to create files numbered from 1 to 100.
|
||||
- The result is the creation of `test1.txt`, `test2.txt`, `test3.txt`, all the way up to `test100.txt`—in a single command.
|
||||
|
||||
## Example
|
||||
|
||||
Let’s break it down. Running:
|
||||
|
||||
```
|
||||
touch test{1..10}.txt
|
||||
```
|
||||
|
||||
Creates the following files in your directory:
|
||||
|
||||
```
|
||||
test1.txttest2.txttest3.txt...test10.txt
|
||||
```
|
||||
|
||||
## Why This Trick is a Game-Changer
|
||||
|
||||
This method allows you to generate multiple files instantly, saving you from having to manually create each file one by one. It’s particularly useful in scenarios where you need placeholder files for testing or logging, or when automating processes that require multiple files as input.
|
||||
|
||||
## Practical Use Case
|
||||
|
||||
For example, you might use this trick to quickly generate log files for testing an application that processes large numbers of files. Instead of manually creating each file, you can generate them all with one command and focus your time on writing and testing your code.
|
||||
|
||||

|
||||
|
||||
Photo by [BoliviaInteligente](https://unsplash.com/@boliviainteligente?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
## Real-Time File Updates with `tail -f`
|
||||
|
||||
As a programmer, especially when working with backend systems, you’ll often need to monitor log files for errors, system behavior, or debugging purposes. In such cases, manually checking a log file over and over can be inefficient. Fortunately, the `tail` command has an option to automatically follow updates in real-time, allowing you to monitor changes as they happen.
|
||||
|
||||
## The Problem
|
||||
|
||||
Let’s say you’re working on an application and you need to monitor the log file `error_file.log` to track any new errors being logged. Normally, you might use the `tail` command to read the last few lines of the file like this:
|
||||
|
||||
```
|
||||
tail error_file.log
|
||||
```
|
||||
|
||||
While this gives you the current state of the file, it doesn’t update in real-time. If the file changes, you’ll have to rerun the command to see the new lines. This is far from ideal, especially when troubleshooting live systems or monitoring logs for real-time events.
|
||||
|
||||
## The Solution: `tail -f` for Real-Time Updates
|
||||
|
||||
Using the `tail -f` command, you can follow the changes in the log file as they happen. This allows you to see new lines appended to the file without needing to re-run the command.
|
||||
|
||||
```
|
||||
tail -f error_file.log
|
||||
```
|
||||
|
||||
## What’s Happening Here
|
||||
|
||||
- The `tail` command by itself shows the last 10 lines of a file.
|
||||
- The `-f` option stands for “follow,” which keeps the terminal open and continuously displays new lines as they are added to the file.
|
||||
|
||||
This is especially useful when monitoring log files during the execution of your application, as you can see error messages or output in real-time.
|
||||
|
||||
## Example
|
||||
|
||||
Let’s say you’re monitoring a web server’s log file to see incoming requests and errors:
|
||||
|
||||
```
|
||||
tail -f /var/log/nginx/access.log
|
||||
```
|
||||
|
||||
As new requests come in, you’ll see them displayed live in your terminal. There’s no need to refresh or re-run the command — it continuously follows the file for updates.
|
||||
|
||||
## Practical Use Case
|
||||
|
||||
One of the most practical uses of `tail -f` is during debugging. Imagine you’re trying to find the cause of an intermittent issue in your application. By following the application’s error log in real-time, you can see new error messages as they appear and immediately take action.
|
||||
|
||||
For instance, you might run:
|
||||
|
||||
```
|
||||
tail -f /var/log/app/error.log
|
||||
```
|
||||
|
||||
If your application crashes, you’ll see the error message pop up in real-time, allowing you to troubleshoot without delay.
|
||||
|
||||
## Bonus Tip: Combine with `grep`
|
||||
|
||||
If you want to follow a log file in real-time but only care about specific entries, you can combine `tail -f` with `grep`. For example:
|
||||
|
||||
```
|
||||
tail -f error_file.log | grep "ERROR"
|
||||
```
|
||||
|
||||
This command will show only the lines that contain the word “ERROR,” helping you filter the log output for relevant information.
|
||||
|
||||
## Review Recent Commands with `history 5`
|
||||
|
||||
As developers, we often find ourselves repeating certain commands during a work session — whether it’s compiling code, managing files, or restarting services. Remembering the exact syntax of a command you used earlier or retracing your steps can be tricky, especially if you’ve been working in the terminal for hours.
|
||||
|
||||
Thankfully, Linux keeps track of every command you run in a session. The `history` command allows you to see a list of your previously executed commands, and using it efficiently can save you a lot of time and effort.
|
||||
|
||||
## The Problem
|
||||
|
||||
Let’s say you’ve been working for a while and you ran a complex `grep` or `find` command that you now need to reuse. You can’t quite remember the exact syntax and scrolling through the terminal manually to find it is tedious.
|
||||
|
||||
## The Solution: `history 5` to Recall Recent Commands
|
||||
|
||||
The `history` command displays a list of commands you’ve previously run in your current shell session. By default, it shows your entire command history, but you can limit the number of commands it displays by specifying a number.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
history 5
|
||||
```
|
||||
|
||||
This will display the last five commands you executed, making it easy to quickly recall and rerun them.
|
||||
|
||||
## What’s Happening Here
|
||||
|
||||
- `history` alone will print out the entire history of commands from the session.
|
||||
- By adding a number (e.g., `history 5`), you limit the output to the most recent five commands, helping you focus on just the last few tasks you’ve performed.
|
||||
|
||||
For example, if your last five commands were:
|
||||
|
||||
```
|
||||
123 ls 124 cd src/ 125 mkdir newdir 126 touch newfile.txt 127 history 5
|
||||
```
|
||||
|
||||
Running `history 5` would show:
|
||||
|
||||
```
|
||||
123 ls 124 cd src/ 125 mkdir newdir 126 touch newfile.txt 127 history 5
|
||||
```
|
||||
|
||||
## Why This Trick is Useful
|
||||
|
||||
If you’ve forgotten how you executed a command, `history` saves you from having to figure it out all over again. It’s also great for recalling complex commands, such as those with long flags or options that you don’t want to retype from memory.
|
||||
|
||||
## Practical Use Case
|
||||
|
||||
Let’s say you’re debugging a program and running several different commands to compile, check logs, and restart the service. Instead of remembering each command or scrolling back in the terminal, you can simply run:
|
||||
|
||||
```
|
||||
history 5
|
||||
```
|
||||
|
||||
You’ll get a list of your last five commands, making it easy to recall and rerun any of them with minimal effort.
|
||||
|
||||
## Bonus Tip: Re-Executing Commands
|
||||
|
||||
You can quickly re-execute any command from the history by using the exclamation mark (`!`) followed by the command number. For instance, if you wanted to rerun the `mkdir newdir` command from above (command number 125), you would simply type:
|
||||
|
||||
```
|
||||
!125
|
||||
```
|
||||
|
||||
This saves you from having to retype the entire command and can be a real time-saver, especially when working with long commands.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Mastering the Linux command-line interface is essential for developers, and the tricks we’ve covered here are powerful tools to have in your toolkit. From efficiently managing files and folders to navigating directories and recalling commands, these five tricks can significantly streamline your workflow and boost productivity:
|
||||
|
||||
- `**mkdir**` **with braces** to create multiple folders in one go.
|
||||
- `**cd -**` to quickly jump back to your previous directory.
|
||||
- `**touch**` **with a range** to create multiple files at once.
|
||||
- `**tail -f**` to follow log files in real-time.
|
||||
- `**history 5**` to recall and re-execute recent commands.
|
||||
|
||||
These are just a few examples of the power that Linux commands can offer. By incorporating these tricks into your daily workflow, you can focus more on coding and less on repetitive tasks, making you a more efficient and productive programmer.
|
||||
|
||||
**Always remember to conduct your own research and verify the information you encounter. Relying solely on others can result in outdated or incorrect practices. Take the initiative to implement and refine the code you find, ensuring it meets your specific needs and standards.**
|
||||
|
||||

|
||||
|
||||
Photo by [Rowen Smith](https://unsplash.com/@hellosmith?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
## Final Words:
|
||||
|
||||
Thank you for taking the time to read my article.
|
||||
|
||||
This article was first published on Medium by [CyCoderX](https://cycoderx.medium.com/list/python-tips-by-cycoderx-43b77ab29941).
|
||||
|
||||
Hey There! I’m [CyCoderX](https://cycoderx.medium.com/list/python-sagas-by-cycoderx-5cda9957a9a2), a data engineer who loves crafting end-to-end solutions. I write articles about [Python](https://cycoderx.medium.com/list/python-chronicles-cycoderx-675f4f315154), [SQL](https://cycoderx.medium.com/list/sql-articles-by-cycoderx-233abfdfdf15), [AI](https://cycoderx.medium.com/openais-gpt-4o-model-unveiling-revolutionary-use-cases-a36b94b21d36), [Data Engineering](https://cycoderx.medium.com/elevating-your-software-development-skills-in-2024-75e4845cbee7), [lifestyle](https://cycoderx.medium.com/refactoring-your-routine-finding-joy-in-the-developers-daily-grind-257018236108) and [more](https://cycoderx.medium.com/unleashing-the-power-of-distributed-computing-the-future-of-efficient-and-scalable-systems-5fb438f27d6e)!
|
||||
|
||||
If you want to explore similar articles and updates, feel free to explore my Medium profile:
|
||||
|
||||

|
||||
|
||||
## Python Tips By CyCoderX
|
||||
|
||||
Join me as we explore the exciting world of [tech](https://cycoderx.medium.com/data-workflows-an-introduction-to-apache-airflow-9dc89d353c6e), [data](https://cycoderx.medium.com/list/python-tips-by-cycoderx-43b77ab29941) and [beyond](https://cycoderx.medium.com/list/data-analysis-data-science-by-cycoderx-f5df65572198)!
|
||||
|
||||
**What did you think about this article? Let me know in the comments below … or above, depending on your device!** [**🙃**](https://emojipedia.org/upside-down-face)
|
||||
|
||||
## Please consider supporting me by:
|
||||
|
||||
1. *Clapping 50 times for this story*
|
||||
2. *Leaving a comment telling me your thoughts*
|
||||
3. *Highlighting your favorite part of the story*
|
||||
@@ -0,0 +1,154 @@
|
||||
---
|
||||
title: "7 Productivity Hacks I Stole From a Principal Software Engineer"
|
||||
source: "https://code.likeagirl.io/7-productivity-hacks-i-stole-from-a-principal-software-engineer-6a8825157198"
|
||||
author:
|
||||
- "[[Nidhi Jain 👩💻]]"
|
||||
published: 2024-10-15
|
||||
created: 2024-10-29
|
||||
description: "Have you ever crossed paths with a senior or principal software engineer whose work style seems almost magical? Imagine someone who effortlessly transforms complex challenges into elegant solutions…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Golden tips and tricks that can make you unstoppable
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@nidhijain23?source=post_page---byline--6a8825157198--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://code.likeagirl.io/?source=post_page---byline--6a8825157198--------------------------------)
|
||||
|
||||
Have you ever crossed paths with a senior or principal software engineer whose work style seems almost magical?
|
||||
|
||||
==Imagine someone who effortlessly transforms complex challenges into elegant solutions with just a click, brainstorms ideas at lightning speed, or writes code as if their mind is seamlessly integrated with an intelligent assistant.==
|
||||
|
||||
Witnessing such mastery in action can be inspiring and enlightening, revealing the secrets behind their exceptional performance. Discover what makes these top-tier engineers stand out and how you can harness their techniques to elevate your career.
|
||||
|
||||
I was lucky to work alongside a few such great people, and I did not miss the golden opportunity to observe and figure out their secret sauce. Believe me, it was like a masterclass in productivity.
|
||||
|
||||
Here are the seven hacks I learnt from the ones who operate on a whole different level:
|
||||
|
||||
## 1\. The Art of Saying No
|
||||
|
||||

|
||||
|
||||
Image by [Andrew Martin](https://pixabay.com/users/aitoff-388338/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=6754668) from [Pixabay](https://pixabay.com//?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=6754668)
|
||||
|
||||
One of their biggest strengths? **Context switching with purpose.**
|
||||
|
||||
They don’t get sucked into every little task. **They know when to focus, when to shift gears, and, most importantly, when to say “no**.”
|
||||
|
||||
With 13 Slack channels buzzing for their attention, they don’t let the noise dictate their day. Instead, they prioritize like pros.
|
||||
|
||||
When something doesn’t need immediate attention, it goes on their to-do list. But if it’s quick and important, they knock it out right then and there.
|
||||
|
||||
It’s all about choosing **when to engage** and when to move on.
|
||||
|
||||
## 2\. The Perfect Setup
|
||||
|
||||
Ever notice how they never seem to struggle with development setup issues?
|
||||
|
||||

|
||||
|
||||
Photo by [Nubelson Fernandes](https://unsplash.com/@nublson?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/a-desk-with-a-computer-and-a-chair-in-a-room-2nHdjIqGDck?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash)
|
||||
|
||||
That’s because they’ve invested time into creating the perfect environment. Their IDE, terminal, note-taking tools—everything is **custom-tailored** to their workflow. It's like sharpening their saw and keeping it ready to cut the wood in a shot.
|
||||
|
||||
They don’t run into setup errors or linting problems. Why? Because they spent an extra few minutes configuring everything perfectly from the start.
|
||||
|
||||
It’s that upfront effort that saves them hours down the line. Not only that, but even their setup, like the mouse, the keyboard, the number of secondary monitors, the orientation of each monitor, and all the other extra peripherals, everything would have been carefully tailored by them to make their mind and body work the best. It’s not about using the most expensive or the best. It’s about using and keeping what works best for them.
|
||||
|
||||
## 3\. Shortcuts Are King
|
||||
|
||||

|
||||
|
||||
Auto-generated by Bing
|
||||
|
||||
We all love shortcuts, but these engineers take it to the next level, optimizing everything — from keyboard shortcuts to custom command-line aliases. Even small tasks like:
|
||||
|
||||
1. Having 100+ aliases for simple commands like :
|
||||
|
||||
```
|
||||
git status to --> gsor kubectl get pods to -> kgp
|
||||
```
|
||||
|
||||
2\. Or assign a meaningful name to each new bookmark you add.
|
||||
|
||||
3\. Or instead of bookmarking every new page that comes to you, understand the pattern and bookmark the main one. Instead of 50 bookmarks, they rely on five core ones and have a system to find the rest when needed
|
||||
|
||||
4\. Or having the shortcuts of your favourite IDE on tips.
|
||||
|
||||
5\. Even using a Keyboard instead of a mouse/trackpad.
|
||||
|
||||
6\. Regarding recurring queries or tasks, they don’t rely on memory — they rely on **patterns**.
|
||||
|
||||
All these habits seem pretty trivial, but this is where the difference lies. Most engineers stay stuck in this daily mundane chaos and lose time and energy, which slows them down. However, shaving off a few **seconds** and a few **joules** of mental energy from every action you take compounds very well over time.
|
||||
|
||||
## 4\. Building a second brain
|
||||
|
||||

|
||||
|
||||
Photo by [GoodNotes 5](https://unsplash.com/@goodnotes?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/a-couple-of-laptops-on-a-table-MJZ4q4v1kdw?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash)
|
||||
|
||||
Every senior engineer I’ve worked with has a solid note-taking system, and while their choice of app varies, the app itself isn’t the key—it’s the framework they’ve built. I have seen people using Apple Notes, OneNote, Obsidian, Google Keep, and even a Git repo. They all have one thing in common: a structured system that makes searching and adding notes effortless.
|
||||
|
||||
It’s not about the tool but the method. Their notes aren’t random scribbles — they’re organized, categorized, and easily searchable. Need to find something from a meeting last month? It’s right there, ready to be retrieved in seconds.
|
||||
|
||||
This structured note-taking becomes their second brain. Whether it’s brainstorming or problem-solving, their notes are the backbone of their productivity. The secret isn’t just writing things down; it’s building a framework that makes finding and using those notes quick and efficient.
|
||||
|
||||
## 5\. Automate Everything
|
||||
|
||||

|
||||
|
||||
Auto-Generated by the author using Dall-E
|
||||
|
||||
If there’s a task that can be automated, trust me, they’ve probably already done it. They hate manual work.
|
||||
|
||||
Whether it’s deployments, testing, or even sending routine emails — automation is their default mode of thinking. Their brains constantly keep asking, “How can I make this take less effort?”
|
||||
|
||||
I once met someone who took this to an unexpected level — he automated receiving the daily snack and lunch menu emails at the office. Why? Just to avoid a few extra clicks to get the same information. Yes, they’re that committed to cutting down effort.
|
||||
|
||||
You might even sit down for coffee with them, and they’ll suggest ways you could automate **your coffee-making workflow**. That’s the level of thinking they operate at.
|
||||
|
||||
And it’s not just for fun — precisely this mindset makes them so effective at work. They see automation opportunities everywhere, from the most minor tasks to the most extensive systems. Once they get an idea, their lightning-fast operational speed ensures they can execute it, often before you’ve even figured out how to do it the “normal” way.
|
||||
|
||||
## 6\. Seamless Multi-tasking
|
||||
|
||||

|
||||
|
||||
Auto-generated by the author using Dall-E
|
||||
|
||||
Time is precious for everyone, but it's like gold dust for a principal software engineer. As you climb the career ladder, so does the count of meetings on your calendar. And let’s not forget about the 13 buzzing Slack conversations, quarterly planning meetings, and the occasional fire to put out. That’s the daily battlefield of a principal engineer.
|
||||
|
||||
I had a glimpse at the calendar of one such legend, and — it looked like an a ==buffet of back-to-back meetings==. Finding a full day where all those meetings could actually be attended? Impossible. In this scenario, squeezing multiple tasks into a rare one-hour free window can only be a superpower. But wait, isn’t multitasking overrated? How do they manage to stay so productive?
|
||||
|
||||
Here’s where the secret sauce lies: **multi-screen setups**.
|
||||
|
||||
I once scheduled a quick call with a senior staff engineer to discuss an issue. As I awkwardly toggled between my terminal, IDE, and browser window, one by one, he casually ==dropped a bomb of wisdom:==
|
||||
|
||||
> “How do you even work like that? It’s so inefficient!”
|
||||
|
||||
Confused, I watched him seamlessly pull up multiple windows side-by-side, working in parallel on the same screen. No more flipping back and forth, wasting time and mental energy. It was like unlocking a new level of efficiency — saving me seconds, cognitive bandwidth, and probably the rest of my life from unnecessary frustration.
|
||||
|
||||
## 7\. Decluttered Digital Space
|
||||
|
||||

|
||||
|
||||
Photo by [James McKinven](https://unsplash.com/@jmckinven?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/macbook-pro-tpuAo8gVs58?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash)
|
||||
|
||||
One thing I’ve learned about people and their habits is that how they handle minute-to-minute tasks reflects their mental state. One key attribute that sets senior engineers apart is their exceptional mental clarity.
|
||||
|
||||
But here’s the thing: that mental clarity doesn’t magically appear overnight; it’s honed over years of practice.
|
||||
|
||||
How do they achieve it? By keeping a close watch on everything that could cause mental clutter.
|
||||
|
||||
- Got 100+ Chrome tabs open? Not on their watch! It’s like having a hundred open mental threads that constantly force the subconscious mind to switch context. They start a task, open only the necessary tabs, and quickly close them once they’re done. This way, they maintain control over context switching with their conscious mind.
|
||||
- Whenever they download a new document or file, it meets its fate within minutes. It either gets neatly classified and stored or swiftly sent to the digital bin.
|
||||
- And then there’s their inbox — clean and organized. I’ve seen multiple staff and senior engineers who prioritize keeping their emails in check. Unread emails? Rare. Important ones? Starred and tackled immediately. Everything else? Archived or deleted without a second thought.
|
||||
|
||||
In their digital world, less truly is more.
|
||||
@@ -0,0 +1,206 @@
|
||||
---
|
||||
title: "About a Sea Stray — Learning to Sail the Hard (and Free) Way"
|
||||
source: "https://medium.com/engage/about-a-sea-stray-learning-to-sail-the-hard-and-free-way-a7af089148d0"
|
||||
author:
|
||||
- "[[tara tari]]"
|
||||
published: 2024-10-18
|
||||
created: 2024-10-29
|
||||
description: "Travelogue sailing essay about an unconventional community experiment in the Caribbean sea, upwind voyage of 12 inexperienced sailors from Guatemala to Cuba"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@taratari?source=post_page---byline--a7af089148d0--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/engage?source=post_page---byline--a7af089148d0--------------------------------)
|
||||
|
||||
“No one is doing this,” Daeli told us on one of those early days. His voice could be heard over the sounds of a small port city in the evening. The motors of boats competed with overhead eighteen-wheelers to the symphony of Latin music, broadcast from open bars and populated private docks along the banks. And, as is characteristic of a night in Guatemala, the air echoed with the barking of distant dogs engaged in endless debate. But from where we were, sailing still in freshwater then on that floating hunk of fiberglass, the churning of the river rose above it all, black water sucked away below us.
|
||||
|
||||
## What it means to sail upwind
|
||||
|
||||
==We were attempting to cross beneath a bridge in a narrow stretch of river that connects the lake from which we had come to the sea for which we were headed. The problem was that the wind blew precisely from the direction where we wanted to go, and between the grand cement pillars that descended from the tall bridge, our course allowed a minimal margin of error.==
|
||||
|
||||

|
||||
|
||||
Sem paddles the kayak into town while Max and Paul work on Utopie | All photos from the author’s portfolio and used with permission
|
||||
|
||||
When sailing, you can angle anywhere except into the wind. If you steer too close to the wind, also known as entering the dreaded dead zone, somebody on your boat will scream “Accident!” as your sails luff and your speed plummets and you lose control of steering. In this circumstance you either save yourself in time, turning the wheel out of the wind while you maintain enough speed for the boat to obey, or you are forced to tack. Tack is the sailor’s term for turn, specifically such that the bow of the boat crosses through the wind, steering from one side of the dead zone to the other by passing right through. This requires various adjustments on board, notably changing which side the sails are on by pulling with frantic will on ropes wrapped around winches, hoping to gather the extent of the slack in time to precede the pressure of the wind’s upwind impact on loose fabric, to tighten the sails fully before the necessary strength becomes that which requires strained muscles and which wears down the soft skin of damp fingers and palms.
|
||||
|
||||
So, approaching the bridge, we maneuvered relentlessly. We tacked left and right to try to fit ourselves through, coming up short and letting the wind push us back again, starting over. Challenge was not limited to the direction of the wind and the width of the passage; we were fighting the current, too, which emerged from the shallows on either side and dragged us backwards with the flow tide of distant sea water rising. The failures persisted for hours. The sun set and the dark swallowed the day, and still we angled upwind, caught some speed, twisted the wheel as far as it could go, watched the bow swing, paddled at the back, switched the sails, over and over.
|
||||
|
||||
When we passed at last beneath the bridge, we arched our necks to watch the line of suspended highway move horizontal through the starry sky. We sailed then below red tuk tuk taxis speeding on asphalt and trucks carrying things like cows and the dismembered trunks of mortal trees, and we savored for a moment the precision of our labor, the success of our energy expended.
|
||||
|
||||
“Some people sail their whole lives and never do what you all just did,” Daeli addressed us, nine crew members whose only common characteristic was a total lack of sailing experience, as we sat deflated and folding in on ourselves in the cockpit. Exhaustion preyed on limbs unaccustomed to this level of exertion and spirits yet lacking a sailor’s stamina. “They just turn on their motors and cruise right through.”
|
||||
|
||||

|
||||
|
||||
Yelena, Max, Paul, and Josephine on the deck of Friend Ship in Lake Izabal
|
||||
|
||||
Friend Ship–our twelve meter catamaran built in 1986 and navigating to this day with the same sails, now more patch than original nylon–has no motor. That is, in the most literal sense, what Daeli meant when he told us, *no one is doing this*. A motor means the ability to progress in dead wind, to control your speed steering up to a dock, to fight a strong current, to definitively avoid obstacles. Today the great majority of sailors opt for this added security. Daeli is an exception.
|
||||
|
||||
I was first in contact with Daeli during the fall of the previous year when I was working as a housekeeper at a bed and breakfast in the west of Ireland and loathed my boss and got in my head the idea to sail far away. I found him on a website that connects budget travelers with volunteer opportunities all over the world. Daeli’s listing for a sailing community in the Caribbean, although admittedly a bit unconventional, intrigued me, and though I ended up a happy waitress in Ireland, I saved his details for a later date. He is a forty-some-year-old Frenchman and something of a sailing purist, a dissident of the new age, a loyalist to an obsolete art. I did not know this before I arrived, on something of a whim, on his catamaran in a murky residential mangrove in Guatemala because, at that time, I did not know anything about sailing at all.
|
||||
|
||||

|
||||
|
||||
Sem journals and drinks cacao in the cockpit on Friend Ship at anchor
|
||||
|
||||
I also did not know, that night anchored on the seaside of the Río Dulce bridge, whether that sentiment–*no one is doing this*, a sentiment that evoked little at the time but would, over the coming months, continue to fill with meaning as to eventually overflow–was intended to instill pride or doubt, excitement or fear. I felt none of these things.
|
||||
|
||||
## The anchorage from hell and other dangerous decisions
|
||||
|
||||
I felt real fear only three times in those four months. The first time I felt fear, the moon was full, and the feeling lasted no more than a minute. We were anchored in a deep-reaching inlet, surrounded by jungle vibrating with the constant call of howler monkeys, in a remote corner of Guatemala’s Lake Izabal when a *lancha* (motorboat) full of eight armed figures silhouetted in the moonlight approached out of dense darkness. We knew of the area only that it offered great opportunity to birdwatch by kayak in the cool marshes that branch off around the perimeter and also that Narcos operated in the ancient Mayan temple back beyond the biosphere reserve and the palm plantation that billowed gray fumes up into the towering mountain range across the inlet.
|
||||
|
||||

|
||||
|
||||
Anchored in an inlet in Lake Izabal
|
||||
|
||||
February was nearing its end, and Daeli had been teaching us to sail in the lake for just a week, but nearly a full moon cycle had run its course since I arrived on the catamaran for the first time. The events that led us to that fearful night in the lake began when, barely an hour before dark, I first found Friend Ship lodged in the shallow of a small cove near the city where a Guatemalan family cast a net from their canoe and three small boys bathed nude in the pooling tide out front of their stilted home. I shared this moment with two women whom I would come to consider dear friends; I had met Josephine in the room cramped with sixteen bunks in the hostel in the colonial city of Antigua a week prior and Yelena in the Río Dulce market where I found her ripping the leaves from the crowns of pineapples to test their ripeness only just before we boarded the *lancha* with our big backpacks.
|
||||
|
||||
## The mold, the mess, the hydraulic cylinder piece
|
||||
|
||||
Immediately upon removing the torn sheet of tarp that served in vain to shield the cabin of the abandoned boat from the rogue outdoors, we were accosted with the stench of mold erupting from the moist enclosure, burning our noses, salivating in our mouths, and making our heads feel faint and achy. We sifted through torn mattresses and wads of rope and assorted knickknacks with our shirts pulled up over our noses until, just after the sun set with headlamps illuminating our way, we assembled on deck the tent we found under planks of wood in a dusty corner of the cabin. It was missing pieces and slightly torn, and the pole was split in the middle, so in the end, it stood half on its own and half leaning clamped against the railings that border the deck. We draped the corner of a sail across the top of our leaky tent, and a floating fort emerged, much like the sort of shelter children might piece together on a living room floor, except not, because we were three women–strangers as of yet–constructing not for amusement so much as necessity, to provide defense against swampy surroundings and the temperamental clouds sulking in blackness above.
|
||||
|
||||

|
||||
|
||||
Yelena and Josephine on Friend Ship at anchor in the mangroves of Río Dulce
|
||||
|
||||
The coming days combined into a collage of sickening chores and shameful adjustments to a lifestyle stripped of luxury. That meant kayaking out to the middle of the lake to bathe in water less exposed to the city’s toxic run-off and to fill buckets for dirty dishes waiting on the boat to be rinsed. It also meant relieving ourselves in the buggy mangroves or otherwise off the back of the boat after dark so as not to offend the neighbors. We spent the majority of our waking hours scrubbing dirt from the deck and mold from the cabin, both putrid and layered after half a year of neglect, left defenseless against encroaching tropics. We noticed, too, in the evening time that we were in the company of a mild cockroach infestation.
|
||||
|
||||
When we completed the initial decontamination, tasks evolved to incorporate things organizational, resourceful, and mechanical. Josephine fronted the crisis in the kitchen, sorting and tossing various goodies like rusty cans of expired tomato puree and dry rice plagued by mites. Aside from making massive headway in killing the invading fungus by wiping white vinegar on the black corroded ceiling, walls, and floor, Yelena led town missions assigned to us by our absent captain–at that point known only as a faceless voice echoing vague instructions and impractical ideas from the speaker of a smartphone. Daeli directed us from afar as though each errand were a mysterious quest, giving us the names of people to ask for in the *tiendas* in town who might be interested in buying our broken battery and explaining how to find the *taller* where we could purchase a solar inverter based on the location of the man who sews shoes on the curb. While Yelena worked out where to buy anti-oxidation fluid and machine oil for half the market price, I pondered what to do with the large piece of mechanical equipment I had stuffed in my duffle bag between old clothes, camera gear, and cash hidden in various inconspicuous containers.
|
||||
|
||||
Daeli shipped the hydraulic cylinder piece to my home address before I left because apparently the acquisition of miscellaneous marine products is streamlined in the United States. A man, the only crew besides Daeli with any sailing experience, came and left in the span of that first week. During his brief stay, he helped me install the cylinder to the tiller arm–which we found in a state of precarious decay–and the hydraulic hoses that pump pressurized liquid from the motion of the steering wheel, trading with me tools and interpretations of the manual, as I sat curled in the compartment flooded with oil at the back of the boat.
|
||||
|
||||

|
||||
|
||||
Josephine on deck in the early morning at anchor in the mangroves on Friend Ship
|
||||
|
||||
All this might sound unappealing, but at the same time, the morning fog fell such that the sun shone in thick beams of milky air, and everything outside our boat lent itself a shade of green in the light–the water a muddy green, the lily pads fluorescent, the foliage a sweet array of saturations. The only exceptions were the pink petals of the lilies and the stark white feathers of the heron that stood each day for an hour after dawn on the small wooden dock across the way, watching fish gather in the water around the wreckage of an aluminum vessel that now sprouted weeds and invited ivy to populate its surface of peeling paint. And anyways, several *lanchas* came a couple days later to transfer us to a marina where we waited for the rest of the crew and a local man worked to fill the leaks in all the windows and below some of the deck fittings with fiberglass, the residue of which made us itch on board and infiltrated the hammock that I hung from the mast to the boom to sleep at night. The work was never completed because, when Daeli arrived midday on the following Friday, he wasted less than an hour before he had us swapping Genoas (the large jibsail at the front of the boat) and pushing Friend Ship off the dock, the carpenter’s tools left out on his workbench by the boathouse with a message to let him know we would be back in town in a week or two to pick up his special mix of anti-slip paint and to pay the rest of the money we owed him.
|
||||
|
||||

|
||||
|
||||
Canyon wall in Río Dulce
|
||||
|
||||
That is how we ended up cornered in the lake that night by the men with the guns in the motorboat. We only knew about the cartel base because Daeli told us how, with a previous crew, he had been briefly captured and interrogated on Narcos soil after embarking on an overnight expedition through the untouched jungle, slicing with a machete his path through dense vegetation, to find a spring that he saw on a map on the other side of the ridge. Fear framed by Daeli’s anecdote dissipated when the boat neared enough for us to make out the matching camouflage uniforms and velcro badges signifying status of official national defense. The long sail to the base of the inlet where we sat anchored–protected from the elements but vulnerable to unwanted visitors–had proved our most challenging thus far with fierce and volatile winds, rapid consecutive tacks, and the first taste of the intensity that comes with real speed in an environment unforgiving of error. So we were very tired and extra relieved when the men turned out to be military. They asked Daeli some questions in Spanish and then advised us to avoid the other side of the inlet. When they finished inspecting each of our passports and sent warm wishes on their way, we wondered aloud whether their responsibilities involved protecting us from the illegal drug trafficking hub or the other way around.
|
||||
|
||||
The second time I felt fear, I was eating ice cream in Belize on Easter Sunday. I had only just sat down on a washed-up log by the coast to enjoy the sounds of a city in celebration when I looked up to see Utopie in the shallows.
|
||||
|
||||
## Friend ship to Utopie
|
||||
|
||||
We picked up a nine-meter monohull when we returned to Río Dulce sometime in early March. The boat is named Utopie. It belongs to a friend of Daeli’s, a fellow Frenchman who had apparently made his way across the Atlantic to a tourist island in the Bahamas to fill his pockets working for a few months on the construction of luxury time-share condos. He traveled with another friend, the one who owned the three hundred kilograms of undeclared ceremonial cacao stored under the bed frame and foam mattresses where anywhere between three and five people slept at a given time in the back cabin on Friend Ship. The owner bought the boat half a decade ago with three other friends for five hundred euros each, and we were planning to drop Utopie off to him along our way, enjoying and repairing her ourselves in the meantime, though these plans did not materialize exactly.
|
||||
|
||||
Daeli sent three of us to break onto the small black boat. We found Utopie in front of an overcrowded marina, her anchor stuck beneath sediment accumulated on the eroding riverbed, her chain tangled under polluted water from steel links twisting themselves into rusty knots, left for seven months to slow dance in place, spinning about a single axis as the wind and world kept moving around her. We rolled up the canvas covering the entryway and found the sails folded over some pillows and ratty cushions. Together we worked to raise the Genoa with dirty ropes and stiff rigging, and then we sailed slowly upwind against the current and out of the cove.
|
||||
|
||||
“Utopie to Friendship,” and vice versa is what we would have said into the VHF if the radio system worked. The six second-hand batteries hooked up to the solar panels sometimes generated enough energy to charge a power bank or a speaker, but this system could not be reasonably relied upon either. So Utopie depended on Friend Ship; throughout our journey, the two generally traveled close enough that a waving flag, a blinking headlamp, or a thrashing of the arms up high could be seen as a signal, and when we came back close together, we could scream messages across raging waters or otherwise pass from one boat to another with a precise maneuver things like fresh cooked fried rice or portable chargers or even a crew member or two.
|
||||
|
||||

|
||||
|
||||
Josephine watches as Max on Friend Ship passes food to Seba on Utopie
|
||||
|
||||
At the time of the incident, we had managed to move both boats from the *río* to the sea and up the Caribbean coast of Central America to Dangriga, a city that tourist pamphlets call the cultural hub of Belize. This transfer involved more upwind sailing through thin channels, and we drifted the second half of the journey to Livingston–the last stop in Guatemala before the gulf–down the cold river that flows at the base of a great green canyon with our sails fully furled, riding out to sea on the current, progressing with the changing tide at the patient pace of nature.
|
||||
|
||||

|
||||
|
||||
Yelena kayaks in the river between Lake Izabal and Livingston
|
||||
|
||||

|
||||
|
||||
Sem watches from Friend Ship as an old woman and young boy fish from their *lancha* in Río Dulce
|
||||
|
||||
We sailed inland from the cayes because we were due for a routine town trip. Town trips looked like a dozen *garrafónes* (twenty liter plastic jugs) shuttled to land on continuous kayak and dinghy trips and heavy loads of rice, oats, *frijoles* (refried beans in a bag), and fresh produce dangling in bright bags from the shoulders of us sweaty *gringos* as we shuffled manically through crowded markets. Dangriga was the anchorage from hell because of the shifting sandbanks, vast shallows, and treacherous exposure to winds and waves from the east. An indeterminate combination of these factors caused Utopie to drag two hundred meters at anchor toward shore until her keel lodged into a stubborn sandbar.
|
||||
|
||||
We all felt very afraid, increasingly so as hours passed and the daytime died while we spit up saltwater and pruned from head to toe, standing in the sea where invisible jellyfish stung, pushing the boat back against the weight of all elements against us: the wind, the waves, the sweeping current. Two local fishermen helped us manually keel (tilt) the boat in the dark by tugging on a line we tied to the top of the mast. Consequent to the fishermen’s selfless endurance and some unearned stroke of celestial luck, Utopie was returned after an awful long time to anchor back in safe depths at Friend Ship’s side, having survived her brush with the seafloor.
|
||||
|
||||
The third and final time I felt fear was in early April off the coast of Belize headed northeast toward Cuba. I was co-captaining Utopie because the official captain had taken a holiday on Friend Ship, basking in the relative indulgence of dry bed sheets, a stove that does not throw hot pans to the floor, a wind arrow that works, and a boat with two hulls that floats out at sea in a way that minimizes one’s urge to vomit. I had been sleeping as deep as the dead despite the aggressive lift and crash of Utopie sailing upwind over sea swells up to two meters when I heard my name called from the cockpit. I awoke cradled in the small triangular compartment at the nose of the cabin that we called the coffin. We called it this because even I could not fit my whole body laying flat and because the foam mattress was forever wet from the window that leaks with fervor sea from the ceiling.
|
||||
|
||||

|
||||
|
||||
Below deck on Utopie
|
||||
|
||||
“Tara,” he spoke, voice hoarse and drowned out. “Wake up.”
|
||||
|
||||
I was up, stumbling with the motion of the waves, disoriented by the lingering trace of harsh sleep. An unusual sound–the sound of fabric flapping furiously in the wind–raised instant alarm. The Genoa tore, a huge gash that stretched a meter on either side of the clew (the lower corner of the sail where ropes are attached). The wind was strong; we were still moving fast, and the material ripped more with every hesitating moment. We knew we needed to lower the sail. We slowed, trying to steer into the wind with limited control, and pulled the Genoa down. Then we watched the meek white light that marked Friend Ship from the top of the mast move further and further into blackness, ignorant to our lights flashing on our mainsail, signifying an emergency. Utopie was ill-equipped for independence, and our friends on Friend Ship stranded us without any means of communication. That fact combined with the urgency of big winds approaching–for all we knew as soon as that following night–and the current dragging us against our will in the direction of a glowing cargo ship in the distance created an understanding of real danger, that feeling of fear.
|
||||
|
||||
The knot in the red rope attached to the original Genoa refused to come undone even after having been soaked in seawater and jabbed with an old screwdriver. The only spare rope on the boat was frayed in bits and barely long enough to reach the cockpit on either end, such that when tacking, one must first pull with their hands before gaining enough slack to wrap around the winch. The wind continued to whip as Utopie crashed without control into steep waves in open sea, and we were finding it impossible to raise the spare Genoa. At first, it lifted with ease up the forestay, but then, with a third of the length left to go, it caught. The tallest of us tried at the bow to gather the loose sail together, hugging it as high as he could to reduce the pressure, as the partially raised sail spazzed with violence in the wind, begging to be set free. Despite all our strength and the will of our adrenaline, the rope refused to budge for almost an hour. The mainsail tore too, just as the sun arrived to dismiss the dark and I had finally managed, steering with the boom and the tiller rod together, to turn Utopie downwind, reducing the force of the wind acting against us. All three men pulled on the rope in unison, and in small increments, the Genoa climbed toward the top of the mast. From the cockpit I tightened it, attaching the rope portside, and all of a sudden our boat was back together. I could feel her moving the way I was used to. I kept on downwind, by now long abandoning any sense of our direction, while the men began to reef the main, folding the tare over to avoid any further damage.
|
||||
|
||||

|
||||
|
||||
Sem sews a broken rope on Friend Ship
|
||||
|
||||
We had a vague idea of where Friend Ship was headed–an island off Mexico called Cozumel where we could shelter from the coming storm and barter and beg at fancy marinas for desperately needed boat parts–and just enough phone charge to make it there with our nautical map. On the sail, we were silent as we shared a bowl burdened by depleting rations–leftover rice noodles garnished with soggy sardines from a can–until somebody said something about intensity. “I think real intensity is good for humans,” I remember my voice crafting the words. “Otherwise it becomes contrived, shoved into corners of life it does not belong.” In the early afternoon, we found Friend Ship surveying the harbor on the west of the island.
|
||||
|
||||
## Wind reincarnated
|
||||
|
||||
So with these few exceptions, the sailing did not scare me, but sometimes the sailing made me cry. On an otherwise unexceptional Tuesday in late February, for example, crossing from one side of Lake Izabal to the other, the light cooled with the air, and the golden hue of a day winding down evaporated into something softer. Everything in sight tinted with a powerful purple–the rippling water, the dwindling sky, the skin that held the body that marked my membership in it all–omitting only the glitter remnants trailing a swallowed sun and the shimmer that fell from the moon into a silver pool of water waving from the direction of the wind. With my arms and hands and fingers extended, I played with the wind at the bow of the boat like a child meeting her for the first time. I closed my eyes and felt the mighty force of her as she propelled us over the length of the lake. With my fingertips and face, the sensation and sound in my ears, the movement of loose hairs on my head, I found her; I knew where she was coming from. I looked at the horizon then and all the lines and shapes that emerge and morph in the fabric of the water, so quickly as to never have really existed at all, and I knew that there would always be this. I cried until the sea desaturated, and I made my peace with the chill of a night in black and white.
|
||||
|
||||

|
||||
|
||||
Yelena and Josephine beneath the shades on Friend Ship in Lake Izabal
|
||||
|
||||
When I cried, it was less often because of those things beautiful. It was more often because of rancid feelings that festered in my chest and made me fantasize about endings and escape. There were many moments when I cried and thought about leaving, like when we were out at sea and the wind died. Dead wind feels like forever, like stifling stillness is permanent, like the world is stuck on pause with the sun suspended indefinitely above–hotter and higher than ever before–like you will never live to taste another twilight, to delight in another dawn because there never will be one, because you and the rest of the living will succumb to circumstance and suffocate on this sick languor, because in the inescapable emptiness of sea, all is as good as dead as the wind.
|
||||
|
||||

|
||||
|
||||
The lighthouse on Cayo Guaro del Este in Cuba
|
||||
|
||||
The wind died on the last day of my last sail as we neared the channel to Cienfuegos. We departed an international dive site called *Las Tetas de Maria la Gorda* (the tits of Maria the fatty) on the southwest tip of the island a full two weeks earlier. For lack of leadership and insufficient forethought, we had sailed upwind across a distance of almost three hundred nautical miles, zigzagging the southern coast of Cuba. Besides one mission to refill water and kiss the precious earth of Cayo Largo and one night drinking rum with the lighthouse keeper on the last caye before the span of uninterrupted sea to the mainland, we had pressed straight on through the gulf. This final stretch saw my favorite sail–a solo night shift on Utopie with *la luna* half herself in the sky, lined up as my sole point of directional reference between the mast and the forestay–but overall the easterlies had humbled us. Worse, though, than the wind blowing from where you want to go is the wind not blowing at all.
|
||||
|
||||
On that last day, the wind did not exist, and the boat would not heave to (when you position the sails and steering to halt the headway of your boat), so having collectively forfeit the helm, we spun in cruel circles. This made sustainable shade impossible as the sun surrounded us, running laps around our Utopie. The Genoa flapped in voluminous, swaying motions, and the boom echoed the harsh sound of metal moving against itself with the endless lift, tilt, fall of the boat. The blue waves continued rushing beneath, while body odor polluted breathing on the boat that day, and the sun showed her strength like she wanted to hurt me. I cried and could not speak. Utopie, so small, forbid my solitude. I sat at the bow and squinted into the bright abyss and felt the bumps and blemishes that littered my wilted skin, open wounds from exposed metal and the spines of a vengeful sea urchin that refused to heal for months on end in the salty dampness of life at sea. We were only a few nautical miles out from destination, two weeks of effort behind us, the end taunting in proximity. I felt vile, I felt hate, and I felt hints of lunacy. Had the wind shown any mercy, we would have been but an hour’s sail away. Instead we watched helpless as the coast moved about in circles, dizzy and with spirits shriveled up in the heat, a sad band of strays at sea.
|
||||
|
||||

|
||||
|
||||
Crew gathered on the deck of Friend Ship
|
||||
|
||||
When the wind returned we had great fun and forgot all about that. That last sail could have been a cumulative exam. We navigated Utopie through the curving channel at every point of sail possible, avoiding many obstacles like the green and red buoys that warn of where the river shoals and some fishermen in rowboats passing low by large commercial vessels. Friend Ship followed close behind, and we blew kisses at our crewmates, our team severed only by the small distance between two sailboats, as they gathered out on the deck amid colorful clothes dangling stiff from the railings and lines draped off the mast. We tacked, tightened, loosened, furled, unfurled our Genoa as the wind surged sporadic through the waterway. We had the main at once secured in the middle, in another instant open wide, restrained to the railing with a rope and a bowline. We attached the spinnaker pole, hoisting the Genoa opposite the main in a broad butterfly. From the helm, I thanked Utopie for giving me one last run downwind as we flew between tall jungle mountains and big buildings of incompatible architectural influences and private docks that revealed passing peeks into family restaurants and homes and some small city streets where vintage cars met horses and fuming motorcycles met men and women moving on foot. Approaching the marina, we battled a sudden current that sucked us dangerously close to a big steel buoy. Having avoided collision, at last I steered Utopie into the wind, furled the rest of the Genoa, and called to drop anchor. I realized then that my hands were shaking and that the space between my shoulder blades was sore, and I stood stunned for a moment in the sobering conclusion of my final sail. Soon the four of us on Utopie paddled the dinghy to Friend Ship where we reconvened and decided how to spend our day. It was by then once again only early afternoon.
|
||||
|
||||

|
||||
|
||||
Utopie sailing upwind off the coast of Belize
|
||||
|
||||
## The sea, sensitivity, and sacred surrender
|
||||
|
||||
Sailing is an exercise in surrender. We see that when we are stuck sulking in the gulf, deserted by the wind. We see that also when we stick our faces in the Caribbean Sea, when sunbeams dance white from bottomless sapphire blue like the infinite out-reaching tentacles of a motherly creature somewhere in the depth of the earth. Toward the end of the trip, on intermission from filling *garrafónes* from a street tap in the tourist playground of downtown Cayo Largo, we took Utopie–nine of us crowded together on just nine meters of her–to moor at the big buoy out by the reef where the water crashes white and the coral grows like a wicked forest from the seafloor and the ocean flora rolls synchronized with the sea’s respiration. Just below the boat to the southeast, we found a wreck. It halted me to see, through plastic lenses floating up above, human infrastructure reclaimed, aluminum under siege, compelled to surrender to the sea grass weaving in and out of broken windows and walls dematerializing, metal stripped slowly of its man made form and given back to the world from which it was extracted, swarmed with schools of translucent fish and loose sand traveling on sea currents, the earth enclosing the sunken thing in her gradual and patient grasp.
|
||||
|
||||
*Surreal is this life*, I remember thinking, when I shared that moment with a sea turtle. I had been investigating the surface of a pale purple coral head patterned with geometric grooves that resembled a sacred maze, a map of mysterious objective. I was floating there, held by the lure of nature’s hypnotic design, when the turtle swam up from the shadows. He paused for a moment, in experience of our animal encounter, before gliding away into the sea reef, and I thought for a long while about the manner of his mind. I thought about the forces which compel his decision, the impulses outside articulation that impose on him the will of movement and of life. The turtle’s divine presence seemed to, in a flash of fleeting clarity, project an impression of flow, to remind me of intuitions that guide the world of which us humans are estranged, to beckon me briefly into the indulgence of innate surrender.
|
||||
|
||||
## Girls in havana
|
||||
|
||||
I arrived at the airport in Havana two weeks later with exactly zero dollars and my flight information written on a sheet of dotted paper in my notebook. My mother booked it for me after I sent her a satellite message explaining how saltwater had corroded my phone, my debit card froze, and the so-called communist country of Cuba blocks most commercial websites even if I could borrow a device and find access to scarce government-operated internet.
|
||||
|
||||

|
||||
|
||||
Ula and Yelena in the streets of Trinidad, Cuba
|
||||
|
||||
The previous day, I took the taxi man on the street at his word that he would meet me in front of the grand theater at eight in the morning. It was just us girls in the city, and I spent the whole morning and afternoon with Yelena, wandering art galleries and dancing salsa in a bar *socialista*. Come night, I crawled into bed beside Josephine, sitting in my underwear on the clean hotel sheets of the Havana hotel room, the harsh Cuban cigarette in between my fingers put off by conversation unfolding of its own accord. I was trying to recognize the symptoms of failure and Josephine to diagnose the cause of it. “There was something fundamentally missing in this experience.” We were of the group not going back to the boats, flying away instead of forging on to Jamaica and then Colombia.
|
||||
|
||||
“Community,” I responded, “is not easy.”
|
||||
|
||||
The crew was full of extravagant personalities, seasoned travelers with stories from all corners of our fair planet, and so we made friends wherever we went. “*Llegamos en bote,*” we told immigration authorities and market vendors that we arrived by motorless sailboat, “*pura vela, sin motor*,” when we shared about our trip and asked for *discuentitas* on things like mooring fees and immense quantities of ground peanuts. More often than not, they found us more *loco* than sane, but it often helped fill with warm banter the distance between local and *extranjero*. We traveled rustic, spending each only five dollars a day on communal food, besides some legal charges and the occasional personal purchase of rum infused with ancient aphrodisiac herbs, honey harvested straight from the earth, cigars rolled in the kitchen of an *abuela cubana* at a tobacco *finca*, a domino game engraved by hand, or various other mementos that tempted budgets and depleted our dwindling cash supply. We enjoyed many moments and felt at times like family, but we also lacked congruence, the ten to twelve of us–some joined late, others left early–voyaging the Caribbean together on our two weathered sailboats. An experiment in equality resulted in an absence of authority, a disorganized crowdsourcing of decision, a friction that arose out of uphill communication. Plans were vague and often died like the wind and the swallow that landed on deck and lost its will to fly mid-migration out at sea. Josephine believes it was meant to be this way. She told me so in her solemnly wise way that commands my faith in her words.
|
||||
|
||||

|
||||
|
||||
Yelena, Mana, and Sem spend time together in the cockpit on Friend Ship
|
||||
|
||||
“It needed to be this way because, yes, it feels unsatisfying and in some ways like failure, but we can go on as individuals and try to fill that void for ourselves. It will look different for all of us.”
|
||||
|
||||
## when we ask ourselves why
|
||||
|
||||
For me, the physical voyage parallels a personal one. Sailing feels like a first step into a search for a way of life more sensitive, a challenge to the doctrines of a culture that makes me feel more lost than landless sea, the blunt antithesis of those things I have been bred to value: comfort, convenience, consumption. *Why* is a word that comes up a lot. I ask myself this question once in a while, flailing and alone in a foreign country, getting sick off the side of a boat full of strangers anchored by an indigenous village in a remote corner of an empty lake in Guatemala or sailing all night through big winds on a boat with three out of four broken winches, the boom tied up to a random cleat at the back, and a stay sail that requires manual furling. Daeli asked me *why* during one of my first evenings on Friend Ship. Friends and family and entitled acquaintances ask the same, with tones ranging from genuine interest to actual offense. I struggle to this day to put forth with feeble words that which is so much more sublime. To your question, I confess that I have no good answer other than the fact that I am young and want to learn about the world before deciding what to do with it.
|
||||
|
||||
That and something about the way grayscale night lingers into the early hours of morning, the range of stars layered millions upon millions going out and out, the way we waited patiently for the colors of day to take their place. It has got something to do with my body, returned to me in uncivilized sea, invulnerable to your scrutiny, unimposed by implication, appreciated for the first time in a long time not as an object of aesthetic servitude but as something deeply personal and wholly mine, the home to all my wonderful senses, the form from which I breath. It is about how I learned to close my eyes and tune in to the direction of the wind, the angle of the boat, the speed with which we move across boundless waters. *Why* relates to all the herons that populated the trees in the canyon that branched out over the blue green river that day we headed for the first time toward sea, the way the birds refrained from flight as we passed by not with disproportionate power nor artificial force but slowly with the flow of the current. It is felt in the fullness of something so taken for granted as still earth after days of drifting in vacant waters, when the sea lets out full, gasping exhales in rhythm as she rushes to kiss the sloping surface of sand soft and light like silk. It showed up the last time we lifted anchor on Utopie, when I reeled in the chain myself, black soot smearing on my legs and smudging under my fingernails, and I realized that I was strong. *Why* finds itself hushed in the suspension of subtle moments, the way once in a while the rising sun and full moon make love in the same sky through which you sail, has to do with how impermanence plays with everything on the horizon until the whole idea of it dissolves into a holy embrace, until these things like now and then and when erupt into irrelevance and for one second or a few, you experience something simpler.
|
||||
|
||||

|
||||
|
||||
Riki on the bow of Utopie in Río Dulce
|
||||
|
||||
Some mornings before the sun rose, I imagined it never would. I felt cold at night, sailing in solitude with constellations and watching for dark clouds that foreshadow strong gusts ahead, and I often missed the day. But in the day I sometimes cursed the sun because the heat made me long for night. I learned from the shiver of a moonlit sail, wet from salty waves crashing against the hull and drenching me in the dark, and from the sweat of a scorching one, defenseless to light reflecting off eternal sea, about balance. I learned also, when the sun did rise on those long mornings when I thought it would not and on those uneasy days when the wind stayed stubbornly away, that time fills herself up with all kinds of things, but that all of what is out there has one truth in common, and that is the end.
|
||||
|
||||
*Thanks for reading! This piece was originally published under the title “About a Sea Stray” in* [*Volume II of Duvu Magazine*](https://duvumagazine.company.site/products/Duvu-Magazine-Vol-II-p679000557)*, a women’s arts and culture publication based in Philadelphia, PA. Find them on I*[*nstagram*](https://www.instagram.com/duvumagazine/) *and purchase a copy to see this essay in its physical spread. Below is a sample from the magazine story.*
|
||||
|
||||

|
||||
@@ -0,0 +1,144 @@
|
||||
---
|
||||
title: "All the “anti-gay” Bible verses Christians cite are 100% fake"
|
||||
source: "https://medium.com/belover/how-to-talk-to-homophobic-christians-95c083a9ca94"
|
||||
author:
|
||||
- "[[Jonathan Poletti]]"
|
||||
published: 2024-06-07
|
||||
created: 2024-10-29
|
||||
description: "I grew up in church and heard it all—a lot. But how believable was it that ancient sacred teachings from Heaven boiled down to hating a sexual minority? That didn’t sound like God. They ended up…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## A religion badly misrepresents its supposedly sacred text
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@belover?source=post_page---byline--95c083a9ca94--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/belover?source=post_page---byline--95c083a9ca94--------------------------------)
|
||||
|
||||
## In the Christian world, arguing about God and gays is pretty much a way of life. Most every day, the Bible verses will be flying at high velocity.
|
||||
|
||||
I grew up in church and heard it all—a lot. But how believable was it that ancient sacred teachings from Heaven boiled down to hating a sexual minority? That didn’t sound like God.
|
||||
|
||||
That sounded like Christians.
|
||||
|
||||

|
||||
|
||||
Shutterstock
|
||||
|
||||
## I went in for a look at the Bible verses the religion uses for its anti-gay crusade.
|
||||
|
||||
They ended up being a whole lot of fake. Here’s the bigger picture. Christianity essentially runs on mistranslations. The Bible was written in dead languages, and what it “means” is often just a mystery.
|
||||
|
||||
But the religion explained its own “rules” in references to passages that, on scrutiny, become quite different texts. To examine Christian references for most every sexual issues — masturbation, divorce, etc. — one finds a haze of weirdly translated passages and heavy doses of “interpretation.”
|
||||
|
||||
## Consider Leviticus 18:22.
|
||||
|
||||
The Old Testament verse much beloved by Christians seems to declare that heterosexuality is a divine state, and homosexuality an evil one. But I’m going over a pile of papers by Bible scholars who say that Leviticus 18:22, in the Hebrew text, is very different from Christian translations.
|
||||
|
||||
> “And-with a male not you-will-lie ‘lyings-of’ a woman.”
|
||||
|
||||
I don’t remember that Leviticus 18:22. I remember this one:
|
||||
|
||||
> “You shall not lie with a male as with a woman”
|
||||
|
||||
## As scholars note, Christianity really worked over the verse to get the Leviticus 18:22 it wanted.
|
||||
|
||||
The result is really another text entirely. An *“as with”* was added, and the odd plural “lyings” were whisked away.
|
||||
|
||||
What does the original text mean? Susan Pigott is an Evangelical professor of Hebrew at Logsdon Seminary. She [answers](https://medium.com/belover/leviticus-18-22-was-a-christian-hoax-61a8220e7a67): “Well, first it means that translators have taken great liberties in smoothing out these verses.”
|
||||
|
||||
Like many scholars she thinks ‘lyings’ means ‘beds’, and she translates Leviticus 18:22 this way:
|
||||
|
||||
> “And with a male you will not lay (on) the couches/beds of a woman.”
|
||||
|
||||
Looking at that, and Leviticus 20:13, she [writes](https://scribalishess.wordpress.com/2014/02/28/leviticus-defiled-the-perversion-of-two-verses/):
|
||||
|
||||
> ==*“Neither verse actually says ‘Do not lie with a male as with a woman.’ Instead, both say you should not lay with a male on the couches or beds of a woman.”*==
|
||||
|
||||
## But all Bible verses that supposedly lay down anti-gay “rules” fall apart on scrutiny.
|
||||
|
||||
In the ancient world there wasn’t even a concept of ‘sexual identity’ or ‘sexual preference’. Ancient people seemed often to be basically bisexual.
|
||||
|
||||
Later on, Christianity insisted that a Greek word, *arsenokoitai*, defined as a problem in Corinthians 6:9 and 1 Timothy 1:10 meant ‘homosexual’.
|
||||
|
||||
Not even scholars have any idea what this word means. There are no period uses, and later usages [don’t seem to suggest a sexual context](https://medium.com/belover/arsenkawhat-8129c409f330). It was all a Christian scam.
|
||||
|
||||
## Surely Romans 1 proves God hates gays.
|
||||
|
||||
That might seem obvious now, but it wasn’t for some three centuries. The Christian reading of Romans 1 as about homosexuality only happened after some delay—and [after they thought](https://www.jstor.org/stable/41480505) the chapter was a ban on female masturbation.
|
||||
|
||||
The actual text is some kind of story that involves a lot of weird weirds and references to unknown events. After Romans 1 was “interpreted” to refer to homosexuality, however, it all seemed obvious? The words have been screamed from many a pulpit:
|
||||
|
||||
> “Even their women exchanged natural sexual relations for unnatural ones. In the same way the men also abandoned natural relations with women and were inflamed with lust for one another.”
|
||||
|
||||
## Except Romans 1 seems to be a story about evil beings who apparently go back to Creation.
|
||||
|
||||
The passage says the unnamed evil subjects were *present* at Creation. Is this story about “homosexuals”? Even scholars find it’s [just unclear](https://books.google.com/books?id=gwCEWmb__UkC&pg=PA38&lpg=PA38&dq=%22remains+open-ended%2C+which+likely+precludes+a+modern+consensus+about+their+cultural+identity.%22&ots=E__pOqQSkv&sig=Fubtcnta37yIgG0J-nrun9s8h70&hl=en&sa=X&ved=2ahUKEwiEzdfAxaTfAhWHdd8KHcsLB2AQ6AEwAHoECAIQAQ#v=onepage&q=%22remains%20open-ended%2C%20which%20likely%20precludes%20a%20modern%20consensus%20about%20their%20cultural%20identity.%22&f=false) who the passage concerned.
|
||||
|
||||
Or that was so until a striking resemblance was noted to phrases used in the Dead Sea Scrolls. The story of Romans 1 came into focus. It was about [fallen angels](https://www.academia.edu/41771658/Romans_1_26_27_in_Its_Rhetorical_Tradition) and a story told, back in Genesis 6, about an effort to sire children with human women.
|
||||
|
||||
In the Bible, angels are sexual, but copulation with humans as evidently forbidden. To “abandon natural relations” was evil angels reproducing with females who had another nature, i.e. deities with humans.
|
||||
|
||||
## Christians re-wrote many Bible stories — like Sodom and Gomorrah.
|
||||
|
||||
Churches still teach that a story in Genesis is about the men of some town being gang-raping gays, so God punishes them with fireballs from the sky. And that means: gays will be *punished*.
|
||||
|
||||
Well, that’s what the religion says. To read the Sodom story about God hating gays is, however, ludicruous on its face. Women are raped in the Bible and that doesn’t mean heterosexual sex is being banned.
|
||||
|
||||
Then there’s problematic facts that Chrisitans prefer to ignore. The Sodom event is referred to many times elsewhere in the Bible without any reference to sex crime. In Ezekiel 16, God explained what the problem had been. The city was “arrogant, overfed and unconcerned…” The Sodom story is typically read in Judaism as a story about inhospitality.
|
||||
|
||||
## The Sodom story is really an exercise in Christian fraudulent “interpretation.”
|
||||
|
||||
Christian readings ignore many details to create their contrived conclusions. The story in Genesis has some kind of “[grave sin](https://books.google.com/books?id=ta9AAQAAQBAJ&pg=PA136&lpg=PA136&dq=The+reader+is+not+yet+told+the+exact+content+of+Sodoms&ots=eBL0lCqgLq&sig=xUUr4mi-n_6BrxpIgJjzAFu5Yh0&hl=en&sa=X&ved=2ahUKEwjTq4m7zqbfAhUoU98KHZ0lDPYQ6AEwAHoECAkQAQ#v=onepage&q=The%20reader%20is%20not%20yet%20told%20the%20exact%20content%20of%20Sodoms&f=false)” being committed in Sodom that drew God from Heaven down to earth to investigate (Gen 18:21–23). The punishment on Sodom and Gomorrah is decided on *before* the angels even arrive.
|
||||
|
||||
The sin the city has committed isn’t specified, but an “outcry” was heard as a result, and this is usually a cue in the Bible to murder (cf. Gen 4:-9–11; Exo 2:23–3:7; Isa 5:7). The ‘outcry’ is done by souls in Heaven.
|
||||
|
||||
## Detail by detail, a startling portrait fills in that you’d never hear about in church.
|
||||
|
||||
Sodom was a city at war. The angels who arrive are suspected of being spies. The men of the city come wanting to ‘know’ them, which doesn’t mean rape. It means they want to interrogate them.
|
||||
|
||||
I go over detail after detail. Lot attempts a [hostage exchange](https://www.academia.edu/8657029/Hospitality_Hostiles_and_Hostages_On_the_Legal_Background_to_Genesis_19.1-9). He wants to put up two daughters for collateral until his two guests leave.
|
||||
|
||||
And Christianity read it all as about gay rape.
|
||||
|
||||
## The dirty secret of Christianity is that its ideas don’t come from the Bible.
|
||||
|
||||
To read the Bible as being about anti-homosexuality is just absurd. The gospels are stories of unmarried, childless outsiders who go around talking about concepts like the ‘Kingdom of Heaven’. There is no prompt to marriage, having children, or raising them in a nuclear family.
|
||||
|
||||
Jesus speaks of himself as gender-neutral and has typically been read in Christian tradition as very androgynous. He often calls himself the ‘son of Man’. As the scholar Walter Wink [notes](https://www.google.com/books/edition/The_Human_Being/8yKleFG676MC?hl=en&gbpv=1&dq=%22In+Hebrew+the+phrase+simply+means+%27a+human+being%27%22&printsec=frontcover): “In Hebrew the phrase simply means ‘a human being’.”
|
||||
|
||||
Jesus has a special love for a younger disciple, known only as ‘the one that Jesus loved’. This was a set-up for a religion of “family values”? Not really.
|
||||
|
||||
## Jesus was a remarkable teacher who describes a very extreme form of loving.
|
||||
|
||||
He wants followers to love each other — and even to love *enemies* (Mt 5:55). This isn’t a love focused on a spouse, family, clan, culture or country. It’s love for everybody. The idea is impractical, absurd, and maybe divine.
|
||||
|
||||
To “love” is also the teaching of the apostle Paul, as in Galatians 5:6: “The only thing that counts is faith expressing itself through love.”
|
||||
|
||||
It’s Peter’s teaching in 1 Peter 4:8: “Above all, love each other deeply.”
|
||||
|
||||
John cites “love one another” fully *five* times in the 1 John letter alone (3:11, 3:23, 4:7, 4:11, 4:12). You might start to think it was really the Christian teaching all along—that Christians ignored.
|
||||
|
||||
## The Bible has queer stories the religion conceals.
|
||||
|
||||
From David and Jonathan to [Ruth and Naomi](https://medium.com/p/df915def6a49), the Old Testament is clearly marked by curiously intense same-sex ‘friendships’. It continues on into the New Testament. There’s the [Centurion and his slave](https://medium.com/p/93fd1e0b448f), who in Luke 7:2 was “dear” or “precious” to him.
|
||||
|
||||
There’s Philemon, a man who [fell in love](https://medium.com/p/bfa4608f1b72) with his sex slave.
|
||||
|
||||
There’s also the [apparent rape of Jesus](https://medium.com/belover/the-case-that-jesus-was-raped-1eb16deb91eb) by Roman soldiers during the crucifixion story. That is a “gay rape” actually indicated in the Bible, and which Christianity very carefully ignores.
|
||||
|
||||
## The religion in its current form clearly doesn’t like the Bible, or Jesus.
|
||||
|
||||
Christians wanted a sex-punishing religion, and he was that strange unmarried man who wandered around talking to people.
|
||||
|
||||
The religion clearly has no interest in what Jesus said about sex.
|
||||
|
||||
He said to love each other. 🔶
|
||||
@@ -0,0 +1,116 @@
|
||||
---
|
||||
title: "Amazon’s Return To Office Mandate Is A Huge Mistake"
|
||||
source: "https://ehandbook.com/amazons-return-to-office-mandate-is-a-huge-mistake-a14fe69cea46"
|
||||
author:
|
||||
- "[[Joe Procopio]]"
|
||||
published: 2024-10-03
|
||||
created: 2024-10-29
|
||||
description: "Amazon announced a return to office mandate that could wind up causing collateral damage to their own bottom line. Here's are four major reasons why."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Amazon dropped a bomb that could wind up causing collateral damage to their own bottom line. Here’s why.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://jproco.medium.com/?source=post_page---byline--a14fe69cea46--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://ehandbook.com/?source=post_page---byline--a14fe69cea46--------------------------------)
|
||||
|
||||

|
||||
|
||||
==A couple weeks before Amazon announced their empire-wide return-to-office mandate, one that requires all Amazon employees to come back to work on-site 5 days a week, I happened to be having drinks with a close friend who is head of HR at a high-growth-stage tech startup with a universal remote work policy.==
|
||||
|
||||
She told me she had inside information that one of her “competitors for talent” was about to mandate a return-to-office for all of their employees, and she was already eagerly poaching, with great success.
|
||||
|
||||
She didn’t tell me it was Amazon. Until now. So I didn’t include that information in the column I wrote about our conversation, which was focused on the [top reasons why tech folks weren’t getting the love they deserved in the recruiting process](https://www.inc.com/joe-procopio/an-honest-recruiter-told-me-why-most-job-seekers-dont-get-hired.html).
|
||||
|
||||
But we did talk about that mandate. At length.
|
||||
|
||||
So I took what she told me and went down my own rabbit hole. And I discovered that Amazon is probably making a huge mistake.
|
||||
|
||||
Here are a number of self-inflicted wounds they just caused, maybe without realizing it.
|
||||
|
||||
## You just shrunk your talent pool by up to 90%
|
||||
|
||||
Look, I’m trying very hard to be balanced on the entire RTO issue.
|
||||
|
||||
I can definitely see the benefits of having the entire workforce in the same building(s), and I can empathize with the shock to the system that the pandemic put on companies as it forced work-from-home in 2020.
|
||||
|
||||
But there’s empathy and then there’s math. This is math.
|
||||
|
||||
Long before WFH was a perk (now), and long before it was a requirement (2020), it was a *strategy* — one typically employed by companies that wanted to hire top talent across various roles but were physically located in regions that either suffered from a dearth in talent or an inflation of the cost of that talent.
|
||||
|
||||
Good luck hiring talent in Peoria. Good luck hiring any talent in San Francisco that can afford to live in or near San Francisco. Add those two demographic characteristics together and you have pretty much all of the US and most of the world.
|
||||
|
||||
So any company requiring on-site work is limiting their talent pool to their specific physical location(s). Amazon probably “no-big-deals” this because they are literally everywhere. But still, for every location where they have a physical presence, there will be at least one other company like my HR friend’s company, cut-throat competing for that same talent.
|
||||
|
||||
There’s no win here.
|
||||
|
||||
## You just took a major morale hit
|
||||
|
||||
One of the problems with a return-to-office mandate is the word “mandate.” You’d think smart people who run tech companies would notice that. You’d think they’d approach the issue with more nuance.
|
||||
|
||||
You’d think.
|
||||
|
||||
I have many friends who work for Amazon, two of whom I talked about in a previous column outlining [the hoops companies like Amazon make applicants jump through](https://www.inc.com/joe-procopio/tech-companies-cant-find-good-employees-its-their-own-fault.html) during the interview process.
|
||||
|
||||
At a certain skill level, pretty much anything above entry level, these kinds of one-size-fits-all methods of treating employees become less and less efficient.
|
||||
|
||||
“It’s demoralizing for sure, borderline degrading,” one of my friends said. “There is zero need for me to be on campus. I could live with making an appearance a couple days a week, but… I’m going to get all corporate here. What does that say about their belief in me as a contributor?”
|
||||
|
||||
He’s not wrong. Oh, also, he’s looking.
|
||||
|
||||
The truth is that in a lot of cases, RTO mandates are smokescreens for a broader talent contribution problem. Again, no win here.
|
||||
|
||||
## You just took a major productivity hit
|
||||
|
||||
In the [original column that started me down this topic trail](https://www.inc.com/joe-procopio/return-to-office-mandates-are-finally-unquestionably-dead.html), I made it very clear that I was not arguing for one side against another, but that it had become very clear to me that the argument itself was no longer about convenience versus productivity, but a seismic shift in how people view their work, their jobs, and ultimately their careers.
|
||||
|
||||
It’s evolution, not revolution. And to mistake the former for the latter reveals a huge blind spot in most corporate executive suites.
|
||||
|
||||
Also, in that column, I talked about my own experience finding that *even in the office*, most of my work was being done digitally — collaborating on software in the cloud, internal and external meetings using video tech, even random discussions over Slack and text.
|
||||
|
||||
People are used to this now. It’s the way they work. In 2024, the only thing the RTO mandates do is add [a commute and a bunch of other productivity hits](https://www.inc.com/joe-procopio/the-return-to-office-productivity-argument-is-over.html) to now-universally-accepted processes.
|
||||
|
||||
That’s not a win.
|
||||
|
||||
## You just became the champion of a real estate crisis you created
|
||||
|
||||
I get the corporate real estate thing. I really do.
|
||||
|
||||
But the buildup in major metro areas that happened before and during the pandemic — fueled by a generation of millennials that saw a higher quality of life finally wander within their reach — was always a mirage. When inflation followed, it revealed not an oasis, but a very expensive desert.
|
||||
|
||||
Remember 2018? Remember all the “HQ2s” being announced by companies like Amazon and Apple and Google? Remember all the local government tax incentives being offered and all the groundbreaking ceremonies?
|
||||
|
||||
Of course you do.
|
||||
|
||||
Remember all the pushback on those HQ2s that started happening around 2019 and early 2020?
|
||||
|
||||
Nope! Because pandemic.
|
||||
|
||||
Again, *I side with the effort* to build huge corporate temples at or near places where a lot of people live. But my favorite offices have always been dumps that are easy to get to and are filled with a lot of people I like seeing every day.
|
||||
|
||||
If you’re going to build a temple, you’re going to need a lot of congregants.
|
||||
|
||||
I think I have that right.
|
||||
|
||||
## I know what Amazon is trying to do
|
||||
|
||||
It just doesn’t work like that anymore.
|
||||
|
||||
And to be honest, there are no dummies there. I believe they’ve done the math and the calculations and probably forecasted the collateral damage and wrote a future press release about it.
|
||||
|
||||
This will probably work for them. In the long run.
|
||||
|
||||
But I can tell you this. Neither return-to-office or remote-work are hills to die on. The best way to optimize talent is to foster that talent, and the best way to foster talent is to foster the individual. This is true in management, in leadership, and in corporate culture.
|
||||
|
||||
Until we realize that, we’re just going to keep screaming at each other about commutes and productivity.
|
||||
|
||||
I’ll keep tracking that argument and other pitfalls in the tech industry, [so please join my email list at joeprocopio.com](https://www.joeprocopio.com/).
|
||||
@@ -0,0 +1,74 @@
|
||||
---
|
||||
title: "An Outstanding Math Trick That Will Blow Your Mind"
|
||||
source: "https://medium.com/@kennywallet/an-outstanding-math-trick-that-will-blow-your-mind-d5404e15f846"
|
||||
author:
|
||||
- "[[Angel Wills]]"
|
||||
published: 2024-09-11
|
||||
created: 2024-10-29
|
||||
description: "Alright, buckle up, because I just stumbled upon this simple math trick that’s guaranteed to surprise (and probably confuse) your friends! Think about it: This simple sequence of numbers follows a…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## And How It Connects to Life and Psychology
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@kennywallet?source=post_page---byline--d5404e15f846--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by Antoine Dautry on Unsplash
|
||||
|
||||
Alright, buckle up, because I just stumbled upon this simple math trick that’s guaranteed to surprise (and probably confuse) your friends!
|
||||
|
||||
It’s one of those tricks that’s so simple but feels like you’ve just unlocked a secret superpower.
|
||||
|
||||
## **Here’s how it goes:**
|
||||
|
||||
Grab someone, friend, family, or coworker, and give them a calculator.
|
||||
|
||||
Then, **tell them to type any three-digit number,** like 526.
|
||||
|
||||
*Got it?*
|
||||
|
||||
Now here comes the fun part.
|
||||
|
||||
Tell them to repeat those three digits to get a six-digit number.
|
||||
|
||||
So, 526 becomes 526526.
|
||||
|
||||
Then, with a smirk, you casually say, “That number will divide perfectly by 13.”
|
||||
|
||||
Watch as they punch it in and stare at the screen in disbelief.
|
||||
|
||||
**But you’re not done yet.**
|
||||
|
||||
Next, say, “Now divide that number by 11.” Again, they’ll check, and the result will be spot on.
|
||||
|
||||
**Finally**, hit them with, “Your answer will now divide exactly by 7.”
|
||||
|
||||
*The ultimate reveal?* The final result will be the **exact** three-digit number they started with — 526!
|
||||
|
||||
Every. Single. Time.
|
||||
|
||||
## Now, here’s why this isn’t just a fun party trick.
|
||||
|
||||
Think about it: This simple sequence of numbers follows a hidden structure and pattern that works, no matter what three-digit number you start with.
|
||||
|
||||
And that, my friends, **is exactly how life and psychology work**, too.
|
||||
|
||||
In psychology, patterns guide so much of what we do, our thoughts, behaviors, even relationships.
|
||||
|
||||
Just like this math trick, we often operate on auto-pilot, not realizing the “rules” we’re following until someone points them out.
|
||||
|
||||
Whether it’s habits we form or how we approach challenges, our minds love patterns.
|
||||
|
||||
And sometimes, we need a little trick (or wake-up call) to see the bigger picture.
|
||||
|
||||
**Life, like this math trick**, has its own rhythms and hidden structures.
|
||||
|
||||
When we figure them out, we start to feel more in control, whether it’s navigating relationships, managing emotions, or achieving goals.
|
||||
|
||||
Just like dividing that big number and being amazed by the result, once we understand the patterns in our lives, everything seems to fall into place.
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: "Are You Actually Building a Business or Just “Playing Entrepreneur”?"
|
||||
source: "https://ehandbook.com/are-you-actually-building-a-business-or-just-playing-entrepreneur-3d419784efbb"
|
||||
author:
|
||||
- "[[Aaron Dinin]]"
|
||||
- "[[PhD]]"
|
||||
published: 2024-10-21
|
||||
created: 2024-10-29
|
||||
description: "I was invited to speak at a local entrepreneurship event. It was the usual setup — a room full of ambitious young founders, lots of networking, and lots of buzzwords. After my talk, a young…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## If you’ve been working on the same company for a long time and haven’t made much progress, there’s probably a good reason.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://aarondinin.medium.com/?source=post_page---byline--3d419784efbb--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://ehandbook.com/?source=post_page---byline--3d419784efbb--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image courtesy [Pexels.com](https://www.pexels.com/photo/boy-in-white-shirt-wearing-white-eye-mask-6202806/)
|
||||
|
||||
I was invited to speak at a local entrepreneurship event. It was the usual setup — a room full of ambitious young founders, lots of networking, and lots of buzzwords. After my talk, a young entrepreneur approached me, eager to share what he was working on.
|
||||
|
||||
He was enthusiastic as he shared the vision for his company, and I could tell he’d been working on his pitch. He had a slick logo, a branded hoodie, and a stack of freshly printed business cards with his name followed by “CEO/Founder.”
|
||||
|
||||
Curious, I asked him a bit more about what his company actually did and how things were going. He started rattling off his plans for social media growth, his upcoming pitch competition, and how he’d connected with several “important” people on LinkedIn who could potentially help his business down the line. However, as he spoke, I realized something: he wasn’t actually talking about his business. He was talking about *himself*. More specifically, he was talking about *the image* of himself as an entrepreneur.
|
||||
|
||||
Clearly he’d invested lots of time and energy into looking like a founder. But had he actually done any of the work of a founder? Had he made any sales? Built a product? Secured a customer? He didn’t mention any of that, and I didn’t get the sense it was because he was trying to keep things private. I got the sense it was because he hadn’t moved past the part of his journey where he was actually building a business.
|
||||
|
||||
This isn’t an uncommon problem. Looking like an entrepreneur is very different from actually being one. ==If you’re not careful, you can get so caught up in playing the part that you never figure out the real work that needs to be done.==
|
||||
|
||||
## The Difference Between Playing Entrepreneur and Building a Business
|
||||
|
||||
Strange as it might seem to people who remember when “entrepreneur” was synonymous with “unemployed,” being an entrepreneur has become a sort of glamorous career path. The lifestyle has a mystique surrounding it — the freedom, the potential for financial success, the thrill of creating something from nothing. Unfortunately, this idealized version of entrepreneurship is often just that: an ideal. The reality is much messier and far less glamorous.
|
||||
|
||||
But people who are simply playing entrepreneur never figure this out. Instead, they focus on the easy, surface-level stuff that doesn’t require much commitment. Anyone can build a website, order some business cards, create a snazzy pitch deck, and update a LinkedIn profile. These things make you look like you’re building a business, but they’re just props in an entrepreneurial play. None of them are the core elements that will actually grow a business.
|
||||
|
||||
In contrast, real entrepreneurship is about creating value. It’s about building something that solves a real problem. If you’re doing that, having a logo and cool job title doesn’t matter. Your business will speak for itself through the value it creates and the customers it attracts.
|
||||
|
||||
## What Playing Entrepreneur Looks Like
|
||||
|
||||
Of course, writing about the importance of creating value is easier than appreciating what that means, particularly if you’ve yet to build a company that creates meaningful value. To help those of you reading this who might be trying to figure out whether you’re being an entrepreneur or playing an entrepreneur, here are a few signs you might be more focused on appearances than actual progress:
|
||||
|
||||
1. **You Spend More Time Networking than Selling:** Networking is valuable, but if you spend all your time “connecting” with people who might someday help you, you’re missing the point. Entrepreneurs should be focused on selling — selling their products, selling their visions, selling their values. You should be thinking about customers, not hypothetical future connections.
|
||||
2. **You Talk About Your Vision More than Your Product:** Having a big vision is great, but if all you do is talk about your grand ideas without actually working to make them a reality, you’re not moving forward. Real entrepreneurs don’t just dream; they execute. If your big ideas don’t come with concrete steps to make them happen, then you’re just talking in circles.
|
||||
3. **You’re Obsessed with Branding but Not the Customer’s Pain Point:** Entrepreneurs often get caught up in creating a polished image. You spend hours choosing fonts, designing logos, and refining your color palette. But if you haven’t even talked to potential customers or spent time truly trying to understand their pain points, you’re not really building a business. You’re just playing dress-up.
|
||||
4. **You’re in a Pitch Competition Every Other Week:** Pitch competitions can be valuable for raising money and gaining exposure, but they can also become a crutch. If you’re constantly pitching but never building or selling, you might be addicted to the adrenaline of pitching rather than the actual process of growing your business.
|
||||
5. **You’ve Been “Getting Ready to Launch” for Months (or Years):** Waiting for the perfect moment to launch usually means you’re afraid of what will happen when you do. If you’ve been working on your product forever but never actually launch, you’re avoiding the realities of the market. A real business can’t exist in your head forever.
|
||||
|
||||
## The Hard Work of Real Entrepreneurship
|
||||
|
||||
Playing entrepreneur is easy because it allows you to avoid risk. As long as you’re focused on surface-level tasks, you don’t have to face the possibility of failure. Sure, you can tell yourself you’re “just getting started” or you’re “waiting for the right moment.” In reality, you’re just avoiding the hard work of building something that might not succeed.
|
||||
|
||||
Real entrepreneurship is hard because it requires vulnerability. It requires putting yourself out there and risking failure. It requires accepting that your ideas might not work, that customers might not care, and that investors might say no. But this willingness to face uncertainty and overcome obstacles is the core of what defines “real” entrepreneurs.
|
||||
|
||||
Ultimately, the difference between playing entrepreneur and building a business comes down to whether you’re seeking validation or value. If you’re more interested in looking like an entrepreneur than in doing the work, you’re going to struggle. But if you’re focused on creating meaningful value — for customers, for employees, and for yourself — you’re on the right path.
|
||||
|
||||
Remember, entrepreneurship isn’t about the title, the business cards, or the networking events. It’s about solving real problems and building something that matters. So, before you order another set of business cards or perfect that LinkedIn post, ask yourself: Am I building a business? Or am I just playing entrepreneur?
|
||||
|
||||
## [Want more lessons about startups and entrepreneurship? Take a (FREE) mini-course with me right now!](https://aarondinin.com/free-course?utm_source=medium)
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: "Christians Regularly Gaslight People"
|
||||
source: "https://medium.com/deconstructing-christianity/christians-regularly-gaslight-people-43086c0bab47"
|
||||
author:
|
||||
- "[[Lilith Helstrom]]"
|
||||
published: 2024-06-06
|
||||
created: 2024-10-29
|
||||
description: "A few years ago, before I was writing articles on Medium, I was writing romance novels full time. I liked to combine my appreciation for romance with my love of other genres like scifi and fantasy…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## I’m sick of the mind games
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@lilith.helstrom?source=post_page---byline--43086c0bab47--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/deconstructing-christianity?source=post_page---byline--43086c0bab47--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by Gyorgy Szemok on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
A few years ago, before I was writing articles on Medium, I was writing romance novels full time. I liked to combine my appreciation for romance with my love of other genres like scifi and fantasy.
|
||||
|
||||
The Christians I knew acted really weird about it. My books had violence, sex, and magic in them. While all those things are allowed in the Bible, they’re suddenly bad when I write about them.
|
||||
|
||||
One of my cousins, on my Dad’s side of the family, is a youth pastor. He used to be in a band full time, but decided to take his guitar and live for Jesus instead.
|
||||
|
||||
His wife, him, and I saw each other at a funeral for his mother’s late husband. We got to talking and everyone knows I’m a writer, so he asked if I wrote anything interesting lately.
|
||||
|
||||
I told him, “I just released a scifi romance novel. It’s set in a zombie apocalypse.”
|
||||
|
||||
“That’s cool,” he said. “And just so you know, I’m not judging you or anything.”
|
||||
|
||||
I hadn’t thought he was judging me until he said that and never implied that I was assuming any such thing.
|
||||
|
||||
“Okay, that’s good,” I said, but now I felt awkward.
|
||||
|
||||
Why had he brought up judgment? I thought we were just having a conversation about my career. He was definitely judging me.
|
||||
|
||||
My Dad acts similarly. He knows I’m bisexual. I came out to him a few years ago and I bring it up occasionally, but not too often. I feel nervous to do so because he’s homophobic.
|
||||
|
||||
But I’m not allowed to say I’m nervous about that because he will deny he’s homophobic if I ever bring it up.
|
||||
|
||||
“How could I be homophobic if I had a gay secretary for years?” He says to me, although I don’t know what his ex-secretary has to do with anything. “I was nice to my secretary. I gave him presents and even met his husband. How could I do that if I were homophobic?”
|
||||
|
||||
“Okay,” I say. “But do you think same sex marriage should be legal?”
|
||||
|
||||
“I never said I believed in that,” he says.
|
||||
|
||||
“Okay,” I say. “Then you weren’t very nice to your secretary because you didn’t believe he should be allowed to get married.”
|
||||
|
||||
“That’s different,” he’d say.
|
||||
|
||||
Multiple times a week, I’ll write articles and many of them will include mean things I’ve heard Christians say, like this one. Some were Christians that went to church with me. Some are ones I saw on TV, heard in the news, or saw on Tiktok. Christians get furious with me.
|
||||
|
||||
“No Christians do that,” they’ll say. “I’ve never met a Christian who judges people like that before.”
|
||||
|
||||
They act like it’s only five Christians who’ve ever said, “Love the sinner and hate the sin” and that somehow I’ve met all five of them. Apparently these five Christians really get around because somehow all people with religious trauma must have met those five because they’re all that exist.
|
||||
|
||||
“Most Christians aren’t judgmental like that,” they say. “And the ones who are, aren’t actually Christians.”
|
||||
|
||||
“Okay,” I always say. “But are you going to confront those people? Because if that’s true, then they’re making your religion look bad.”
|
||||
|
||||
And most of them let me know that \*I’m\* the problem because \*I’m\* the one full of hate.
|
||||
|
||||
And it makes me think that all the Christians who say those things are gaslighters who are like my father. Don’t ever accuse them of being homophobic, but they’re also against same sex marriage. ==They don’t want to be labeled as hateful, they just want to act hateful.==
|
||||
|
||||
They love everyone and they show this love by ripping apart everything about other people. And don’t I dare confront their criticisms because that’s too critical of me.
|
||||
|
||||
They’ve never met a Christian that’s hateful and that’s why they hate when I confront judgmental Christians. Because they don’t exist and I’m making it up.
|
||||
|
||||
And even though I have PTSD from it, it’s all imaginary and doesn’t exist.
|
||||
|
||||
The evidence that these Christians exist are the plethora of victims that I meet everywhere I turn.
|
||||
|
||||
But these Christian gaslighters are about keeping the religion mean, but forcing everyone to say it’s nice.
|
||||
@@ -0,0 +1,270 @@
|
||||
---
|
||||
title: "Containers: has the pendulum swung too far?"
|
||||
source: "https://itnext.io/containers-has-the-pendulum-swung-too-far-208ad02a6b42"
|
||||
author:
|
||||
- "[[Niels Cautaerts]]"
|
||||
published: 2024-08-15
|
||||
created: 2024-10-29
|
||||
description: "Once upon a time, not so long ago, the techno-sphere was divided into two hemispheres: development (Dev) and operations (Ops). The job of the people in Dev was to hack together an application. When…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Containerization has revolutionized the software industry, but using them blindly for everything without considering their drawbacks or alternatives leads to poor outcomes.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@cautaerts?source=post_page---byline--208ad02a6b42--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://itnext.io/?source=post_page---byline--208ad02a6b42--------------------------------)
|
||||
|
||||

|
||||
|
||||
## Why we use containers
|
||||
|
||||
Once upon a time, not so long ago, the techno-sphere was divided into two hemispheres: development (Dev) and operations (Ops). The job of the people in Dev was to hack together an application. When they were done, they threw it over the wall to Ops who had to figure out how to deploy it and keep it running in production. This way of working was a nightmare on many levels, which is well described in the fiction book [The Phoenix Project](https://itrevolution.com/product/the-phoenix-project/) by Kim, Behr and Spafford. The technical reasons boil down to:
|
||||
|
||||
- **Inconsistent environments**: Dev runs and tests their application in some environment which does not match the production environment where Ops deploys it. Breakage happens. No one knows how to fix it. Dev deflects with the iconic “[it works on my machine](https://donthitsave.com/comic/2016/07/15/it-works-on-my-computer)”.
|
||||
- **Deployment complexity**: Deploying a complex application may require a lot of steps. These are unique for each applications and difficult to automate.
|
||||
|
||||
The result is that a deployment is fragile and complex, making a new release to production risky. Combine this with all sorts of process and organizational issues, and you get an unacceptably long release cycle.
|
||||
|
||||
Containerization is arguably the key technological breakthrough that bridged the Dev and Ops divide, thereby laying the foundations for the DevOps field. Containers solve the problems above and more by promising the following:
|
||||
|
||||
- **Build once, run anywhere:** a container image bundles an application and all of its dependencies. The only dependency required on a host system is a container runtime. The container image is static, and the container process is isolated from the host OS. This means that whether Dev spins up the container on their laptop or Ops runs it in production, the behavior should be identical. With containers, “it works on my machine” should mean “it works on any machine”.
|
||||
- **Standardization of deployment process**: the container build process is encoded in a definition file (e.g. Dockerfile), which is custom for each application. All deployments involve building a container image, pushing it to a registry, pulling it in the production environment, and spinning up a container from it.
|
||||
|
||||
Containers substantially de-risk, simplify and standardize the deployment process of most applications. The hard Ops work in deploying an application is reduced to writing a correct definition file, which is where Ops meets Dev. All this enables much faster iteration and shorter release cycles.
|
||||
|
||||
The attractive features of containers has lead to their widespread adoption for all types of use cases, so much so that the container has become the de-facto standard for any “runable unit”. But like any technology, containers also come with drawbacks, which makes them less fit for some purposes where people still stubbornly use them. In the rest of this article, I will highlight some of these issues in no particular order, and discuss some alternatives.
|
||||
|
||||
## Challenge 1: Bloat
|
||||
|
||||
With popular mantras like “storage is cheap” and “we can always scale vertically in the cloud”, it seems that very few in the software industry care about efficient utilization of resources. With this attitude, naive container use can quickly lead to a spiral in disk and bandwidth consumption.
|
||||
|
||||
The core concept behind a container is that it packages ALL dependencies with the application into a single artifact. The only thing that is shared between the host and the container is the (Linux) kernel, which is a key distinction that separates it from a virtual machine. That means container images tend to take up a disproportionate amount of disk space, as well as bandwidth to push/pull them from A to B. This is further exacerbated by the philosophy that each application should live in its own container, and thus have its own image.
|
||||
|
||||
For a sizeable and complex application, shipping an artifact that is larger than strictly necessary may be a worthwhile trade for ease of deployment and consistency guarantees.
|
||||
|
||||
However, is building, storing and shipping a 1–2 GB container image, containing a mini-OS, a Python interpreter, and a bunch of packages, really the best way to run a simple Python script in production? I do ponder this question when I need to push this type of image from my asymmetric home internet connection that is capped at 10 Mbps upload. This situation is common, and feels a lot like sending a cargo container with a single banana to China.
|
||||
|
||||
There are a few strategies to deal with the pains induced by container bloat: bloating infrastructure to match, image optimization, and effectively using cached layers.
|
||||
|
||||
Infrastructure bloating is basically ignoring the problem and instead scaling up the supporting infrastructure to whatever containers demand. A start is getting the most specced-out Macbook. Even better is building your containers in the cloud where you have a more suitable network connection to push and pull images, preferably as part of a CI/CD flow. The optimal configuration seems to be using the specced-out Macbook to run a browser in order to monitor CI/CD runs.
|
||||
|
||||
Image optimization, i.e. stripping down a container image to the bare minimum, is an art that is mastered by few developers. Usually this is done by those who provide popular base images. The effort tends to go to waste once the dev dumps in their app and its dependencies.
|
||||
|
||||
Cached layers are a feature of some containerization technology like Docker. Instructions in a Dockerfile are run from top to bottom, and each instruction produces a “layer” that is cached. Layers can be pushed and pulled independently. When an instruction in the Dockerfile is changed, the build can start from the cached layer from the instruction before. Layers are cumulative, so a change early in the definition file requires a rebuild of all subsequent layers. By smartly organizing the instructions in the Dockerfile, devs can minimize container build and push times. You can do even better with [multi-stage builds](https://docs.docker.com/build/building/multi-stage/).
|
||||
|
||||
Still, these strategies are no panacea. A key problem is that containers are popular for deploying applications written in languages that severely exacerbate container bloat: Python and JavaScript/TypeScript. The container build definitions usually adhere to the following recipe:
|
||||
|
||||
1. Start from an optimized base image containing the interpreter
|
||||
2. Install system packages
|
||||
3. Install app dependencies
|
||||
4. Copy in app source code and install the app
|
||||
5. Define a default entry point
|
||||
|
||||
The problem is situated mostly in step 3. Modern Python and JS apps have a lot of fat dependencies that all need to be stored in the container. Even if the app only needs a tiny subset of the functionality provided by some library, you need to ship the entire library with your app. Thus, layer 3 tends to be beefy.
|
||||
|
||||
This is a problem, because adding new dependencies happens quite frequently. If you build an environment containing your dependencies on your dev machine, incrementally updating your environment is no big deal. However, in container land there is no built-in intra-layer caching mechanism. This means you have to rebuild the container from layer 3 onward each time you add a new dependency. That means downloading all other dependencies again, recreating your entire environment, and pushing all this data again on deploy. If we revisit our cargo container analogy, it’s like scrapping our entire container and manufacturing a new one when we want to put a sticker on the banana that we’re sending to China.
|
||||
|
||||
So far, the industry has mostly responded to container bloat with system bloat and tolerating slightly annoyed devs. However, in the current age of “AI”, the industry will be forced to deal with smarter ways to manage basic applications built on top of CUDA, PyTorch and transformer models, where container images easily exceed 10 GB.
|
||||
|
||||
## Challenge 2: Reproducible at run time, not at build time
|
||||
|
||||
Once a container image exists, it is an immutable artifact that will always produce identical behavior when run as a container. However, it is not necessarily true that rebuilding an image from a definition file produces an identical image.
|
||||
|
||||
Non reproducible builds can be problematic for many reasons. For example, suppose you work on an application that needs to be deployed as a container. Your build works just fine. A new colleague joins the project and their build breaks production. You can spend many hours debugging their code before realizing the problem was actually a non-reproducible build step, which you couldn’t reproduce because you had a working cached layer.
|
||||
|
||||
We encountered this situation in the past, where a build step in the Dockerfile installed setuptools with an unpinned version. A new collaborator built and deployed the app and everything broke. It took quite some time to figure out the build had installed a borked version of setuptools.
|
||||
|
||||
Container images are also not stored forever (for reasons described in the bloat section). Often it is assumed there is a one-to-one relationship between a container image and the definition file in a git commit. But that is only true if the built process is reproducible, which is rarely the case.
|
||||
|
||||
While pinning of app dependencies with lock files is common and mitigates the worst issues, many definition files still contain `apt-get update && apt-get install ...` as part of their build steps; this is not reproducible. Base image versions are also not always precisely pinned. It is often assumed system packages and base images are stable enough to avoid breakage. But why take the chance?
|
||||
|
||||
## Challenge 3: Awkward Dev experience
|
||||
|
||||
Devs like to minimize friction in their development process. But if the deployment target is a container, developing for it always introduces what I can best describe as “awkwardness”.
|
||||
|
||||
The ideal scenario is developing and testing the code directly in the container that will be deployed. However, a container image is immutable, and any change you make to files in a running container is not persisted. For de-bloating purposes, it may also not be wise to install all your favorite dev tools into every container.
|
||||
|
||||
A common pattern is creating a container where you employ a volume mount to mount your project directory (and potentially your virtual environment) on your host system into your container. With this approach, you can simultaneously develop your app on your host system using your favorite dev tools, whilst being able to see the changes reflected in a running container without rebuilding.
|
||||
|
||||
Unfortunately this approach also requires you to maintain multiple definition files: at least one for the container you use for development, and one for the real container that will be deployed. There’s a good chance these will drift over time. Non-reproducible builds can become an aggravating factor. Sometimes a rebuild of both containers will be necessary, for example when you need a new system level package. This can be annoying.
|
||||
|
||||
As a consequence, many devs simply develop in a local environment created on their machine, and then package up what is needed in a container. This way of working sustains a gap between production and the environment in which the code is developed, which can result in issues down the line. For example, the container may be missing a necessary system package that was installed on the development host. This issue will likely not be detected until deployment in a test environment, because unit tests are typically run outside the container on the dev machine.
|
||||
|
||||
## On dev containers
|
||||
|
||||
A relatively recent development is the concept of a “dev container”, whereby a complete development environment, including IDE and dev tools, is created inside a container. They may also be referred to as “cloud IDEs”.
|
||||
|
||||
The proposed benefits are that all devs work in identical environments, that this environment is not polluted by the host configuration, and that development can be performed through the browser on a remote machine. Potentially the biggest advantage of dev containers is that they can be run directly in the test or even production environment, which allows devs to test their code against external dependencies that are not accessible from their machine e.g. a database.
|
||||
|
||||
At the same time this paradigm introduces significant systemic bloat: effectively we create a separate development host for each project!
|
||||
|
||||
Additionally, when employing dev containers, you face a dilemma: should the dev container persist data or not? If, for example, you persist the virtual environment and project directory in a volume, the environments inside the dev containers of different developers will drift over time. However, if you do not persist any data the developer experience is negatively impacted: the dev container will have to be rebuilt on every change to the environment, and code changes can only be persisted by committing and pushing.
|
||||
|
||||
Finally, dev containers do not entirely bridge the gap between the development environment and production, since the prod container will have to be built from inside the dev container. Depending on who you ask, Docker-in-Docker represents the greatest thing since sliced bread or the worst thing since Scaled Agile For Enterprise.
|
||||
|
||||
## Challenge 4: Limits to portability & consistency
|
||||
|
||||
Containers are often compared to cargo containers, but the comparison is not entirely accurate.
|
||||
|
||||
The cargo container is at the core of international logistics because they are standardized: they have identical dimensions, ways to open them, ways to stack them, and ways to connect them to means of transportation. All of logistics, from freight trains, to harbor infrastructure, to ships, is tailored to this standard. And so, you can ship anything across the globe as long as you can fit it into a shipping container.
|
||||
|
||||
Analogously, the software container allows you to deploy any software to anywhere a container runtime is installed, and global cloud infrastructure has somehow converged on [OCI](https://opencontainers.org/) standards and adjusted accordingly.
|
||||
|
||||
However, the claim that containers run everywhere is not entirely true. Yes, you can run the same container on Linux and Mac OS, but that is only because the container runtime on Mac OS has a built-in Linux VM. Most containers are built to run on the Linux kernel, and in the past most machines had a X86/amd64 CPU architecture, so containers could pretend to be portable to any machine. With the increased popularity of the ARM64 architecture, containers have become a lot less portable. This problem is “solved” using additional levels of virtualization and/or [cross-platform image building](https://docs.docker.com/build/building/multi-platform/). However, these solutions can become very tricky, since all compiled artifacts inside the container also need to be compatible with the target CPU architecture.
|
||||
|
||||
Additionally, a critical difference between a cargo container and a software container is that the former is a closed system, whereas the latter is not.
|
||||
|
||||
While a container runtime is the only dependency required to start the container, it is far from the only thing necessary to run the application successfully. To name a few, an application may depend on:
|
||||
|
||||
- other applications, e.g. a database
|
||||
- external state, e.g. files on the file system or in remote storage
|
||||
- network access
|
||||
|
||||
Containers are ideal for stateless applications. Unfortunately, most practical applications rely on some form of external state or means of storing state. That means you need separate systems to manage state, and this implies practical limitations to the portability and consistency of a container. For example, an application may need access to a database, which is not accessible from a developer’s machine. There are tricks to mock external services, like using a local PostgreSQL container populated with dummy data, but again this is not the same as running the container in production.
|
||||
|
||||
Many applications get complex enough that they consist of several communicating containers. In fact, with the hype around micro-services, this often happens by design. Thus, very quickly you need additional tooling to organize deployments. On the complexity spectrum, these range from docker-compose to Kubernetes. Thus containers invite a new kind of systemic complexity to sustain them; this is discussed in the next section.
|
||||
|
||||
Of course, limited portability and consistency are usually a lot worse without containers. The point is that containers can only deal with a subset of the issues that differentiate environments; you can not put the entire world in your container.
|
||||
|
||||
## Challenge 5: Complexity shifts from application deployments to systems and platforms
|
||||
|
||||
This one may be less relevant to developers, but it is certainly relevant to operations people and organizations as a whole.
|
||||
|
||||
The Ops work of yore, involving juggling complex app deployments, scheduling releases, and tracking server configurations, is mostly a thing of the past thanks to containers and infrastructure as code (IAC). However, it has been replaced with immense system and platform complexity to support containerized workloads. Someone has to manage this complexity.
|
||||
|
||||
The industry standard for container orchestration and deployment is Kubernetes, a massive open source project initially developed at Google. At this point, the complexity of Kubernetes [is a meme](https://faun.pub/top-20-kubernetes-memes-b5cb4c5af395). The [Kubernetes iceberg](https://asankov.dev/blog/2022/05/15/demystifying-the-kubernetes-iceberg-part-1/) goes deep, and once you have a decent grasp on the basic concepts there is still the [insurmountably large ecosystem of tooling](https://landscape.cncf.io/) built around and on top of this technology. To deploy relatively simple containerized applications, the supporting infrastructure has become a Frankenstein monster.
|
||||
|
||||
This opens up lucrative business opportunities. Few organizations have the personnel and resources to manage a sprawling “cloud native” platform. Thus vendors step in to convince you that you need this type of platform, but that they will take over the heavy lifting of integrating and maintaining components. Thus, paying for their “managed” services is a necessity, and certainly a bargain compared to the DIY approach.
|
||||
|
||||
Cloud providers are the biggest winners, offering their own flavors of Kubernetes and proprietary “serverless” services. Additionally, countless startups have sprung up to offer services of integrated open source components that hide complexity behind a simpler interface. In theory most of the technology is open source, and you can migrate to a competing vendor or embark on the DIY approach. In practice, there’s always just enough proprietary magic woven through the products to make a lift and shift impractical. The service might be cheap at first, but since the vendor is controlling the ship’s wheel of the Kubernetes vessel, they will eventually drive up the price to the highest point you will tolerate.
|
||||
|
||||
It [almost](https://world.hey.com/dhh/we-have-left-the-cloud-251760fb) undeniable that in most cases Cloud and vendor managed products offer better value for money than building and maintaining your own cloud native platform. The question is: does every organization really need this type of platform? Or is this demand induced by technology choices we don’t dare to question anymore, like containers?
|
||||
|
||||
## … and seeps back into deployments
|
||||
|
||||
In parallel to platform sprawl, container deployments themselves have become mindbogglingly complex. While the container is presented as a standard runnable unit, whatever application is inside can not be abstracted away. Most applications still need to be configured, which is done by injecting environment variables (or by using ConfigMaps in Kubernetes). This configuration is application specific.
|
||||
|
||||
These days, complex multi-container app deployments are defined in Helm charts, which combines YAML config with Jinja templating, because writing out all the raw Kubernetes YAML manifests would be too cumbersome. The format of the configuration YAML is specific to each Helm chart and can easily span thousands of lines. Hence, customizing a deployment requires quite a bit of study; a process that must be repeated for each application you deploy.
|
||||
|
||||
At some point one might wonder whether containers are still achieving the aims of simple, standardized and reproducible deployments, and whether the platforms that host them simplify operations. It is ironic when technologies that aim to solve old woes come full circle.
|
||||
|
||||
## Alternative 1: Statically linked binaries
|
||||
|
||||
Those who are high on the cloud-native Kool-Aid will find this argument absurd, but please allow me to cook and save your judgement for the end.
|
||||
|
||||
With containers we aim to produce a portable self-contained runnable unit that does not rely on external dependencies, save for the container runtime.
|
||||
|
||||
Operating systems have had a feature like this for decades without the need for a container runtime: statically linked executables. Golang and Rust applications tend to compile down to a single binary that contains all of its runtime dependencies. Get this file onto any system and just run it; nothing but the OS kernel required.
|
||||
|
||||
Statically linked binaries are more bloated than dynamically linked binaries, but this added bloat dwarfs in comparison to the bloat of a container with a simple Python app. Additionally, since we prefer to avoid dependency hell, dynamically linked binaries would these days anyways be deployed as a container with all runtime dependencies included. So why not skip the container wrapper all together and aim for statically linked binaries?
|
||||
|
||||
Not only do statically linked binaries drastically reduce bloat compared to containers, they make reproducible builds more straightforward, simplify the dev experience, have the same limits to portability as containers, and don’t require complex supporting infrastructure.
|
||||
|
||||
As long as application dependency versions are well managed (i.e. with requirement and lock files in version control), the compiler version is pinned, and compiler flags are fixed, a build should be reproducible and should map directly onto a git commit. No subtle trickiness in container definition files.
|
||||
|
||||
With statically linked binaries, there is no gap between development and production. As part of the development process, a dev must compile and run the app on their machine. Going to production simply means getting that same binary onto the production system. While repeated compilation can be annoying, Golang compilation times are short, and it sure as hell beats repeated building of containers.
|
||||
|
||||
A binary has the same limitations on portability as a container: they work on a specific CPU architecture + OS combination, and may depend on external state. Cross compilation of a binary is typically simpler than multi-platform container builds, since cross compilation is fully managed by the compiler. In modern languages like Golang, this feature is well supported.
|
||||
|
||||
Containers invite complex systems. Since they aim to be completely isolated from the host on which they run, a lot of additional tooling and abstractions are required to undo some of this isolation when it is required. For example, when a container needs to interact with other processes, interact with data on the host or external systems, coordinate communication among containers, inject application configuration, etc. we need to make “holes” in our container using abstractions like volumes.
|
||||
|
||||
Thus, behemoths like Kubernetes are born to serve as a pseudo OS for containers. Complexity invites misconfiguration and security problems; just Google Docker/Kubernetes privilege escalation.
|
||||
|
||||
By contrast, a process spawned from a binary has a decent default level of isolation provided to it by the OS, and yet does not require complex machinery to interact with other processes or data on the host. Depending on the application, this reduced level of isolation can be a good or a bad thing, but often it seems we jump through hoops to do things with containers that a regular process on the host could have easily done.
|
||||
|
||||
Of course the comparison between a container and a binary is not entirely fair. Containers have isolation features that are difficult or impossible to replicate with a regular process. Containers have an isolated filesystem, isolated process namespace, isolated networking, decoupled user and group IDs, and more. Regular processes all see the same filesystem, other processes running on the host, the same network, and the same users and groups. Some scenarios may call for the isolation level of containers. But is this always the case? And does this absolute isolation really simplify deployments? Since we often want to connect and exchange data between the isolated systems inside containers, I would argue no. Especially in the age of cloud, where everything is running on a VM anyway, do we gain much by inserting this additional virtualization layer?
|
||||
|
||||
Instead, it seems that containers are primarily used today as a bloated pseudo-binary for applications written in languages that don’t have real binaries. While this democratizes production to a wider range of applications, which can be great for legacy applications, it does not incentivize writing new applications in more performant, leaner languages. Is it a good thing that we can dump a 10 GB box of Python spaghetti into production without a second thought about resource utilization? The “deliver business value fast” crowd will say yes, the devs who have to deal with the fallout later down the line and [the planet](https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf) may disagree.
|
||||
|
||||
## Alternative 2: Nix and NixOS
|
||||
|
||||
[Nix](https://nixos.org/) is a unique package manager for Unix systems, with very attractive features that show promise in closing the Dev and Ops gap. It behaves in a very different way compared to typical package managers like apt or homebrew. NixOS is a Linux distribution built on top of the Nix package manager.
|
||||
|
||||
For those unfamiliar with Nix and NixOS: a not so quick debrief.
|
||||
|
||||
## What is Nix(OS)?
|
||||
|
||||
Nix aims to guarantee fully reproducible builds, environments and configuration. These are all expressed declaratively in a domain specific functional [Nix language](https://nix.dev/tutorials/nix-language.html), which looks a bit like JSON but functionally behaves more like Haskell.
|
||||
|
||||
Nix expressions can be used to produce “derivations”, which correspond to software packages in most cases, but can also correspond to user environments, system configuration, or even an arbitrary collection of files. Nix ensures that outputs are always fully reproducible and do not depend on any system level software, by building derivations in isolated environments and enforcing that all inputs (files, dependencies, other derivations) are explicitly declared.
|
||||
|
||||
Nix makes dependency management a breeze. All outputs get stored in the “Nix store”, with a file path that contains a hash calculated from all inputs and the declared build process. This ensures that any change in inputs or configuration results in a new “version” of the package that is stored on a different path. Therefore, multiple versions of packages can perfectly coexist with Nix. No package depends on system level software, all dependencies down to different glibc versions exist in the store.
|
||||
|
||||
An environment or shell configuration consists of a collection of packages that exist in the Nix store plus potentially some configuration and hooks. This offers a much more comprehensive alternative to things like Python virtual environments. A Python `venv` only stores Python packages and modifies the `PYTHONPATH`, but it can not manage the Python interpreter or any other system package. Nix can create a complete and reproducible environment that is fully isolated from any system level packages.
|
||||
|
||||
Most package managers permanently and irreversibly mutate the state of a system. For example, when you run `apt upgrade`, old versions of software are typically removed and replaced with new ones. This is not the case with Nix, as the Nix store is immutable—old versions of packages are never overwritten. Instead, they coexist in the store until they are explicitly cleaned up to save disk space. In Nix, changes in system behavior are managed by intelligently updating symlinks that point to the active versions of packages. This approach ensures that all changes are non-destructive and can be easily rolled back to any previous state, a feature that Nix supports natively.
|
||||
|
||||
Finally, NixOS is a Linux distribution built on top of the Nix package manager. All system configuration is expressed declaratively in a configuration.nix file. This means that the state of your entire OS can be managed in version control. All packages, services, and all system settings, become fully reproducible.
|
||||
|
||||
## How do Nix and NixOS offer an alternative to containers?
|
||||
|
||||
The unique nature of Nix allows us to run different packages in isolated environments on the same machine, just like containers allow us to do. Each application can have its own set of dependencies (some of which may be shared and exist once in the Nix store), as well as configuration and environment variables. We can run them simply as native processes on the host. If the host runs NixOS, we can declare all these services and their configuration in the system’s configuration.nix file. Therefore the OS acts a bit like a very lightweight, single machine Kubernetes cluster.
|
||||
|
||||
Nix(OS) can address some of the challenges created by containers:
|
||||
|
||||
- **Less bloat**
|
||||
|
||||
Nix is more bloated than the average system package manager, but it is only as bloated as it needs to be to guarantee reproducibility.
|
||||
|
||||
On a developer’s machine, one can draw an analogy between Nix derivations output and container image layers, as both act as a form of cache. However, there is a key difference: Nix organizes its cache at the package level, connecting derivations via a dependency graph, which allows for fine-grained sharing and reuse of individual components. In contrast, container image layers correspond to a series of imperative build instructions and are organized in a linear chain. This means that in Nix, changes to a single package result in only that package being rebuilt, whereas in containers, a change typically requires rebuilding all subsequent layers in the chain.
|
||||
|
||||
Instead of shipping around massive monolithic artifacts like containers, we only need to ship Nix code and our application code. The production environment can recreate an identical environment by pulling the Nix code, and then Nix can do the hard work of syncing the environment with the definitions. To avoid that the production servers need to rebuild outputs (which could involve downloading sources and compiling), a recommended architectural pattern is using builder servers and a centralized cache, see [this book](https://leanpub.com/nixos-in-production).
|
||||
|
||||
- **Reproducible by design**
|
||||
|
||||
This one is self explanatory. Nix was built from the ground up to guarantee reproducible builds. It is an afterthought for Docker containers.
|
||||
|
||||
- **Superior dev experience**
|
||||
|
||||
Thanks to Nix, devs can develop in an isolated and reproducible environment directly on their machine; no need for container hackery or dev containers. Each project has an environment definition file (e.g. [shell.nix](https://nixos.wiki/wiki/Development_environment_with_nix-shell)) which is tracked with version control. It ensures that each dev working on the project works in exactly the same evolving environment and that the environment can be rolled back to any commit. It is a much less painful process than being forced to rebuild containers throughout the development process.
|
||||
|
||||
Additionally, we can re-use the same Nix code for deploying the application in production.
|
||||
|
||||
- **Similar portability characteristics**
|
||||
|
||||
Containers need a container runtime to function, Nix expressions require the Nix interpreter to be installed on each system. The best results are achieved when the host OS is NixOS, especially in the production system. This is not required for dev machines, though Linux is probably preferred.
|
||||
|
||||
- **Simpler systems and platforms**
|
||||
|
||||
With Nix(OS), we can achieve many of the same characteristics that make containers desirable, like isolation and consistency, using simpler primitives. Running applications directly on the host means we can cut out an entire layer of abstraction that adds complexity which is not always necessary. Simpler systems means cheaper and more secure systems.
|
||||
|
||||
## Nix ♥ containers
|
||||
|
||||
We have so far been discussing Nix(OS) as an alternative to containers, but this need not be. If deployment infrastructure for containers is already in place, it can be hard to justify not deploying a container. In this case we can benefit from Nix’s [dockerTools](https://ryantm.github.io/nixpkgs/builders/images/dockertools/), which allows us to build Docker containers in a declarative and reproducible way, as opposed to using the imperative and non-reproducible Dockerfile. [Here’s an interesting talk/blogpost about i](https://xeiaso.net/talks/2024/nix-docker-build/)t.
|
||||
|
||||
## The drawbacks of Nix
|
||||
|
||||
Nix and NixOS are about 10 years older than Docker containers (2003 vs. 2013), but the level of maturity is much lower. There has been a [recent rise in popularity](https://trends.google.com/trends/explore?date=today+5-y&q=nixos&hl=en), but still pales in comparison to containers. The project was started as part of a PhD thesis and evolved into a community lead effort; it has nowhere near the level of corporate backing compared to Docker or Kubernetes. The community is unfortunately well recognized for its high levels of drama, [especially recently](https://github.com/KFearsoff/nix-drama-explained), a trait it shares with the Rust community. Still, there are [serious companies funding the project](https://opencollective.com/nixos), and some opting to use [Nix(OS) in production](https://leanpub.com/nixos-in-production).
|
||||
|
||||
The Nix language is somewhat arcane with odd syntax, which hinders adoption. In order for devs to collaborate on a project, all of them must know the basics of the Nix language and adopt Nix tooling to manage their local environment. It can be tricky to assemble such a team, since the Nix documentation is scattered, patchy and often outdated. Often, the best way to figure out how things work is by sifting through the [Nixpkgs code](https://github.com/NixOS/nixpkgs/tree/nixos-unstable).
|
||||
|
||||
A major downside of Nix is that in order to benefit from it, everything in the project must be done “the Nix way”. Nix should be the only package manager that connects all packages, otherwise reproducibility is lost. “The Nix way” is often very distinct from the default way projects and their dependencies are managed in most programming languages, and thus requires a culture shift. Additionally, all outputs, like binaries, should have been produced through Nix derivations, which can be tricky when all you have is a precompiled binary from a proprietary application. The Nix philosophy necessitates a break with the Unix [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard), which means that dynamically linked binaries that expect an FHS compliant system don’t work out of the box. There are some workarounds like [nix-ld](https://github.com/Mic92/nix-ld), [patchELF](https://github.com/NixOS/patchelf) and [buildFHSUserEnv](https://ryantm.github.io/nixpkgs/builders/special/fhs-environments/), but it can be fiddly to get these types of applications to run. Statically linked binaries are of course always simple to work with.
|
||||
|
||||
## Summary
|
||||
|
||||
Containers have become ubiquitous in the modern IT landscape. Alongside it, a maze of infrastructure and tooling has sprung up to support it. Containers have a lot of benefits, but also a number of drawbacks which I discussed in this article, namely:
|
||||
|
||||
- they tend to be very bloated for the small amount of functionality that is often shipped
|
||||
- making image builds reproducible was an afterthought
|
||||
- they make for an awkward dev experience
|
||||
- they are not always as portable as is claimed
|
||||
- they have given rise to extremely complex systems to run and manage them
|
||||
|
||||
These drawbacks can eventually have real consequences on the security, cost, and sustainability of our systems.
|
||||
|
||||
I explored two completely different approaches to develop and deliver software, and compared them to containers: deploying statically linked binaries and developing with Nix(OS). These can mitigate some of the aforementioned drawbacks of containers, but are of course no substitute for all situations. These approaches are not mutually exclusive with containers either: statically linked binaries can make containers much leaner, and Nix can help make container builds reproducible whilst improving the dev experience.
|
||||
|
||||
Containers and Kubernetes may be the answer for some situations; the main question I raise in this piece is whether they should be the only answer for everything.
|
||||
|
||||
Thank you for coming to my TED talk, feel free to share your opinion in the comments!
|
||||
|
||||
*Opinions expressed in these pieces are my own. Check out my* [*personal blog*](https://nielscautaerts.xyz/) *where I occasionally write about random things that interest me, and feel free to* [*connect with me*](https://nielscautaerts.xyz/contact.html)*.*
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
---
|
||||
title: "Decommissioned! An Unformatted Hate Email Was Enough For A Popular Node.js Project"
|
||||
source: "https://tomaszs2.medium.com/decommissioned-an-unformatted-hate-email-was-enought-for-a-popular-node-js-project-c24fd287f582"
|
||||
author:
|
||||
- "[[Tom Smykowski]]"
|
||||
published: 2024-05-17
|
||||
created: 2024-10-29
|
||||
description: "James Sumners is one of the most respected figures in the Node.js wide community due to maintaining multiple essential projects. Among this projects you know for sure Fastify, a light Node.js web…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://tomaszs2.medium.com/?source=post_page---byline--c24fd287f582--------------------------------)
|
||||
|
||||

|
||||
|
||||
## A lack of time, usage and an outrageous email led LDAPjs core maintainer to decommission it. When people will learn to format their code?
|
||||
|
||||
James Sumners is one of the most respected figures in the Node.js wide community due to maintaining multiple essential projects.
|
||||
|
||||
Among this projects you know for sure [Fastify](https://github.com/fastify/fastify), a light Node.js web server or [Pino](https://github.com/pinojs/pino), fast json logger, he was involved also as a core [maintainer](https://james.sumners.info/) of PL/JSON.
|
||||
|
||||
He’s B.Sc., Mathematics accomplished at Clayton State University / US.
|
||||
|
||||
Since August 2019 he also maintains another Node.js gem: LDAPjs:
|
||||
|
||||
> LDAPjs provides a framework for building LDAP servers, and a client to interact with standard LDAP servers, for applications built with JavaScript on Node.js.
|
||||
|
||||
LDAP is a communication [protocol](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol):
|
||||
|
||||
> The Lightweight Directory Access Protocol (LDAP /ˈɛldæp/) is an open, vendor-neutral, industry standard application protocol for accessing and maintaining distributed directory information services over an Internet Protocol (IP) network.\[1\]
|
||||
|
||||
It’s a standard used broadly by many organisations to discover and connect devices like servers or printers.
|
||||
|
||||
LDAPjs specifically is an implementation of the protocol for Node.js. That way Javascript developers can build services utilizing this LDAP easily.
|
||||
|
||||
Among companies and projects that use LDAPjs we can find Seagate, Tracktr, Infiscal, Homarr, OpenSign, and Amazon.
|
||||
|
||||
That list only some of the companies and there are many many more.
|
||||
|
||||
We’re talking about successful, open source project with wide usage, 1.6k stars, 402 forks and 68 contributors.
|
||||
|
||||
Unfortunately today James Sumners decided to archive the project. It means that in that state, project does not accept any new contributions but is still available online.
|
||||
|
||||
I was thinking maybe it got deprecated or wasn’t used at all. But it’s used and is actively developed. Last version is from December 2023 what is natural for long standing, mature projects.
|
||||
|
||||
So what happened?
|
||||
|
||||
On the official page of the project we can read the reasons for the project’s [decommission](https://github.com/ldapjs/node-ldapjs).
|
||||
|
||||
These boil down to three major issues:
|
||||
|
||||
1. The core maintainer doesn’t have time
|
||||
2. He isn’t in a position where he’d use it anymore
|
||||
3. He got a hate email
|
||||
|
||||
The first two points are quite important to discuss first. James developed this project when he needed it in his company. But he moved to other company where he doesn’t need it. So he doesn’t have the purpose to develop it further.
|
||||
|
||||
It’s perfectly understandable. He writes that some features would need a full workweek to be finished, an amount of time he can’t afford.
|
||||
|
||||
That’s also perfectly reasonable. Why would he spend his time, as a trained specialist on a project, if he gains nothing in return.
|
||||
|
||||
There are many other activities person can take in his free time that are far more fun than maintaining pro-bono an open source project for corporations.
|
||||
|
||||
What I am quite surprised of is that all of these companies didn’t make sure LDAPjs developers can allocate time to work on a project that they use. I mean money of course.
|
||||
|
||||
It’s unfortunately a sad moment for the project, but as every other it’s also a good moment to appreciate the hard work James and other contributors have put into the project over the years. We have to remember James, and tens of hundreds of developers arouns the world do a lot of open source pro-bono work.
|
||||
|
||||
Usually such prominent developers don’t reach the headlines working on open source projects for free just because they find it a meaningful to do.
|
||||
|
||||
Unfortunately, not everyone knows that, wants to acknowledge it or even maintain the basics of politeness.
|
||||
|
||||
James unfortunately was targeted by one individual that decided to vent in an email to him over his trouble with using the LDAPjs project. The email is way below any [standards](https://github.com/ldapjs/node-ldapjs) so I won’t even quote it.
|
||||
|
||||
For James that email was enought. In his announcement he mentions that email as one of the causes why he decommissions the project.
|
||||
|
||||
It’s perfectly understandable for me. He works very hard over the years to support the wide community and companies with great tools. He doesn’t get paid, and recognized. At the end he just gets a hate email.
|
||||
|
||||
What’s technically the most outrageous part for me is that the dude even didn’t care to format his code:
|
||||
|
||||

|
||||
|
||||
Source: https://github.com/ldapjs/node-ldapjs
|
||||
|
||||
It tells about this dude even more than the rest of the outrageous email.
|
||||
|
||||
And that’s all we really need to know. While LDAPjs is decommissioned, James wrote he is open to handing the project into good hands if he will be able to properly validate if the new person or organization in charge will be a good and safe fit for the project.
|
||||
|
||||
Also, since the projects is online it can be still used, and also forks can be developed.
|
||||
|
||||
While that means users of LDAPjs are safe, I really wished important open source projects didn’t lose such prominent contributors.
|
||||
|
||||
I think I’ll send some recognition emails to the maintainers of the projects I use. Hopefully it will make a day for them.
|
||||
|
||||
Cheers!
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: "Der richtige Umgang mit Gefühlen: 3 Fehler, die selbst emotional stabilen Menschen passieren"
|
||||
source: "https://www.brigitte.de/liebe/persoenlichkeit/psychologie--3-fehler--die-selbst-emotional-stabilen-menschen-passieren-13895480.html"
|
||||
author:
|
||||
- "[[Merle Blankenfeld]]"
|
||||
published: 2024-10-27
|
||||
created: 2024-10-29
|
||||
description: "Unseren Gefühlen den Raum zu geben, den sie benötigen, ist nicht immer leicht. Selbst psychisch stabilen Menschen passieren manchmal Fehler im Umgang mit ihren Emotionen. Etwa diese hier."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Psychologie 3 Gefühlsfehler, die selbst emotional stabile Menschen manchmal machen
|
||||
|
||||

|
||||
|
||||
© Bostan Natalia / Adobe Stock
|
||||
|
||||
Unseren Gefühlen den Raum zu geben, den sie benötigen, ist nicht immer leicht. Selbst psychisch stabilen Menschen passieren manchmal Fehler im Umgang mit ihren Emotionen. Etwa diese hier.
|
||||
|
||||
Nur weil sich etwas kurzfristig gut anfühlt, heißt das leider nicht, dass es uns auch wirklich guttut. Diese Wahrheit trifft auf verschiedene Lebensbereiche zu, auf das, was wir essen, auf unsere Beziehungen und auch auf unsere Gefühle. Und gerade ein gesunder, reflektierter Umgang mit Emotionen ist oft nicht einfach. Wirklich zu fühlen, was in uns vorgeht, kann schmerzhaft sein – viele Menschen haben deshalb – oft ganz unbewusst – Bewältigungsstrategien entwickelt, um mit unliebsamen Gefühlen wie Wut, Schmerz oder Trauer umzugehen.
|
||||
|
||||
Emotional stabile Menschen haben in der Regel gelernt, ihre Gefühle auf eine gesunde Art und Weise zu verarbeiten. Aber auch ihnen passieren manchmal emotionale Fehler – das ist schließlich nur menschlich.
|
||||
|
||||
## Diese 3 Fehler passieren selbst emotional stabilen Menschen hin und wieder
|
||||
|
||||
### 1\. Versuchen, ihre Gefühle zu kontrollieren
|
||||
|
||||
Wenn negative Emotionen sie in schwierigen Situationen zu überwältigen drohen, versuchen viele Menschen, diese Gefühle unter Kontrolle zu bringen. So wollen sie sich beruhigen, wenn sie aufgebracht sind, oder sich selbst aufheitern, wenn sie traurig sind. Aber so einfach ist es leider nicht. Nur weil wir jetzt gerade glücklich sein wollen, können wir diese Emotion nicht einfach hervorrufen und eine andere, vielleicht Schmerz oder Trauer, ausschalten. Selbst wenn es uns gelingt, uns in diesem Moment besser zu fühlen, weil wir uns möglicherweise ablenken, wird das unverarbeitete Gefühl uns sehr wahrscheinlich zu einem späteren Zeitpunkt einholen.
|
||||
|
||||
Das wissen auch emotional stabile Menschen, und dennoch kann auch ihnen der Versuch passieren, ihre Gefühle zu kontrollieren, anstatt sie anzunehmen und zuzulassen.
|
||||
|
||||
### 2\. Ihren Gedanken glauben
|
||||
|
||||
Wie wir uns fühlen, ist meist viel weniger von Menschen und Situationen im Außen abhängig, als wir glauben. Vielmehr spielen unsere Gedanken dabei eine große Rolle. Wenn wir uns selbst ständig einreden, dass wir die Präsentation morgen sicher verhauen, werden wir uns unsicher und nervös fühlen. Denken wir permanent, dass wir ein Loser sind und uns sowieso nichts gelingt, werden wir uns schlecht fühlen und unser Selbstwertgefühl minimieren. Dieser innere Kritiker ist zu großen Teilen dafür verantwortlich, wie wir uns fühlen.
|
||||
|
||||
Das ist auch emotional stabilen Menschen klar, weshalb sie es sich zur Gewohnheit machen, liebevoll mit sich selbst umzugehen – auch in Gedanken. Aber auch ihnen kann es passieren, dass sie ihren eigenen negativen Gedanken Glauben schenken, anstatt sie kritisch zu hinterfragen und positiv auf sich selbst zu blicken.
|
||||
|
||||
### 3\. Andere für ihre Gefühle verantwortlich machen
|
||||
|
||||
In den meisten Fällen sind wir gar nicht von etwas verletzt oder über etwas wütend, das uns widerfährt, sondern von unserer Interpretation dieser Ereignisse. Wenn deine Freundin beispielsweise einen abfälligen Kommentar über etwas macht, das du ihr erzählst, denkst du vielleicht, ihre Aussage tut dir weh. Tatsächlich ist aber schmerzhaft, wie du diese Aussage auffasst und was sie in dir konkret auslöst. Das heißt natürlich nicht, dass es egal ist, was deine Freundin sagt – aber unsere Emotionen in Bezug darauf haben wir viel mehr selbst in der Hand, als wir häufig glauben.
|
||||
|
||||
Dieser Fehler, Menschen oder Situationen für ihre Gefühle verantwortlich zu machen, unterläuft aber selbst emotional stabilen Personen hin und wieder. Obwohl sie eigentlich gelernt haben, wie Emotionen funktionieren und welchen Anteil sie selbst an ihrem Fühlen haben, lassen sie sich auch manchmal von ihren Reaktionen auf Dinge, die ihnen widerfahren, überwältigen.
|
||||
|
||||
**Das Gute an allen diesen Fehlern ist, dass wir daraus lernen können.** Egal, wie emotional stabil wir sind, wir alle lassen uns manchmal von unseren Gefühlen leiten oder lenken uns von ihnen ab. Aber jedes Mal, wenn uns das passiert, haben wir die Chance, zu lernen und zu reflektieren und so nach und nach gesündere emotionale Muster aufzubauen.
|
||||
|
||||
*Verwendete Quellen: yourtango.com, psychologytoday.com*
|
||||
|
||||
mbl Brigitte
|
||||
|
||||
#Themen
|
||||
|
||||
- [Psychologie](https://www.brigitte.de/liebe/persoenlichkeit/themen/psychologie-10698956.html)
|
||||
- [Emotionalität](https://www.brigitte.de/liebe/hochzeit/themen/emotionalitaet-10732910.html)
|
||||
- [Gefühlschaos](https://www.brigitte.de/liebe/beziehung/partnerschaft--diese-7-gruende-sollten-nicht-reichen--um-an-einer-beziehung-festzuhalten-10139096.html)
|
||||
@@ -0,0 +1,125 @@
|
||||
---
|
||||
title: "Does Donald Trump Show Signs of Neurodegenerative Disease?"
|
||||
source: "https://drvincentgreenwood-89455.medium.com/does-donald-trump-show-signs-of-neurodegenerative-disease-871ec668a5f9"
|
||||
author:
|
||||
- "[[Vince Greenwood]]"
|
||||
- "[[Ph.D.]]"
|
||||
published: 2024-10-16
|
||||
created: 2024-10-29
|
||||
description: "What would it mean if Donald Trump (or any candidate seeking higher office, for that matter) were suffering from a deteriorating neurological syndrome rather than just the typical vicissitudes of…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://drvincentgreenwood-89455.medium.com/?source=post_page---byline--871ec668a5f9--------------------------------)
|
||||
|
||||

|
||||
|
||||
## The data suggests he does and the implications are serious.
|
||||
|
||||
by Vincent Greenwood, Ph.D., founder of [DutyToInform.org](https://dutytoinform.org/)
|
||||
|
||||
What would it mean if Donald Trump (or any candidate seeking higher office, for that matter) were suffering from a deteriorating neurological syndrome rather than just the typical vicissitudes of aging? The mild decline in memory, attention, and verbal fluency associated with normal aging often emerges as one reaches their late 70s or early 80s. Such decline would not necessarily be disqualifying, even regarding the demanding responsibilities of the presidency. However, a diagnosis of a deteriorating neurological disorder would have profound implications for their fitness for office. If the ex-president crossed that fateful diagnostic threshold, the public would have a right to be informed and a reason to be alarmed.
|
||||
|
||||
Although many observers, including healthcare professionals, have commented on Donald Trump’s verbal and cognitive struggles over the past couple of years, conventional wisdom has concluded that it is simply not possible to make a valid diagnosis of neurological decline with Trump. Many good faith investigative reporters and health care professionals cite two reasons why we are not able to diagnose the possibility of a neurological disorder: the lack of medical information released by Trump and his doctors; and the inherent limitations of ‘diagnosing at a distance,’ which is the only resort available since Trump has refused to undergo a comprehensive neuropsychological examination.
|
||||
|
||||
These are reasonable objections that need to be addressed. The frustration over Trump’s refusal to release detailed health information is captured in a recent article by investigative journalists at the New York Times titled [What Are We Told About the Health of Biden and Trump? They Decide.](https://www.nytimes.com/2024/04/04/us/politics/biden-trump-health.html) Trump and his medical team have gone out of their way in not providing detailed information. His most recent [report](https://truthsocial.com/@realDonaldTrump/posts/111444920245122377) (November 2023) is a three-paragraph statement where his physician described his health as “excellent.” Earlier health reports have been criticized as “[fawning and vague](https://www.nytimes.com/2023/11/20/us/politics/trump-medical-report.html),” marked by the use of superlatives ([“the healthiest individual ever elected to the presidency”](https://www.nytimes.com/2018/01/12/us/politics/trump-physical-exam.html)), and lack of details.
|
||||
|
||||
And full of disinformation. Here, we need to mention Trump’s assertions about a “cognitive test” he took in 2018, the Montreal Cognitive Assessment Test (MoCA). The MoCa, a one-page, 30-point test that can be administered in 10 minutes, is an *initial* screening device that can detect signs of full-scale dementia. It is not particularly helpful in identifying signs of early dementia, which requires much more rigorous and lengthy testing. Trump reported a perfect score of 30, [claiming](https://abcnews.go.com/Politics/trump-bragging-acing-simple-test-detect-mental-impairment/story?id=71945342) doctors told him that “rarely can anybody do what you just did” and that the test contains “very hard” questions. The average score on the test is 27 (and even that average is taken from a sample of people suspected of cognitive impairment). A score of 30 is considered normal, not exceptional. Examples of questions from the supposedly tricky part of the test include repeating a sentence out loud, naming as many words as you can starting with the letter F, trying to identify the similarity between different objects such as trains and bicycles (modes of transportation), and saying what the current date is. [Dr. Jonathan Reiner](https://news.yahoo.com/cnn-doctor-trolls-trump-over-045944368.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAAMqgW5827ByZDpQZt6GCRrQAcgdI1mVs4a6Mnrr1Co4UHTDOwS4sQ989j0GjArdVF9QR6Zcdy0JqFlknkAFoFmg-DKC-dRieKJQ6UdPaDQ5-AV31fNqkwskO7O0dyODslq1mUTrGeKHH0sWl5JLTE-Xt6YQRjhUU2qb9yxsiTEDR), professor of Medicine and Surgery at George Washington Hospital, wryly observed, “If you think a dementia screening test is very difficult, you may have early dementia.”
|
||||
|
||||
We are not able to make a serious appraisal of whether Trump does or does not display brain illness based on his released medical records since they lack any specificity and have been politicized.
|
||||
|
||||
Since Trump has refused to collaborate in a comprehensive neuropsychological exam, which would yield a wealth of relevant data, we must rely on ‘diagnosing at a distance’ to try to determine the possibility of meaningful cognitive decline. The limitations of such an approach are outlined in a recent Washington Post article, [What Science Tells Us about Biden, Trump and Evaluating an Aging Brain](https://www.washingtonpost.com/science/2024/05/18/biden-trump-age-cognitive-decline/). Experts interviewed for that story assert that an informed opinion on the ex-president’s cognitive health is only possible with the robust data generated from an in-depth exam. They note, correctly, that video mashups of verbal gaffes lack scientific rigor and can be misleading. These video mashups on social media can be guilty of cherry-picking bad moments and equating signs of normal aging with severe cognitive decline.
|
||||
|
||||
Are we forced to throw up our hands with the possibility of providing a more scientific and objective opinion about whether Trump suffers from a neurocognitive disorder?
|
||||
|
||||
The answer is no. **There is a legitimate path to arrive at an informed, scientifically-based opinion on Trump’s brain health. That path involves subjecting all the relevant information to the guidelines enumerated in the chapter on Neurocognitive Disorders in the latest version of the Diagnostic and Statistical Manual of Mental Disorders. When we carry out those diagnostic steps, we find that Trump very likely has a Neurocognitive Disorder that is already beginning to have its way with his cognitive functioning and is destined to deteriorate, perhaps significantly, over the next few years.**
|
||||
|
||||
With all its implications, such a serious assertion demands a serious explanation. Let’s start with the scientific standing of the diagnostic bible of the mental health profession. The Diagnostic and Statistical Manual of Mental Disorders — Version 5 (DSM-5), the authoritative and up-to-date (latest revision in 2022) resource that provides a unified classification of mental health and brain-related conditions. DSM-5 offers a common framework and language to define primary psychopathological syndromes and then provides specific criteria to diagnose them.
|
||||
|
||||
The manual organizes those conditions into chapters that focus on distinct groups of disorders. Neurological disorders, including dementia, are discussed in the Neurocognitive Disorders chapter. Neurocognitive Disorder is a general term that describes decreased cognitive functioning due to a medical disease other than a psychiatric illness. The authors of the Neurocognitive Disorders chapter in DSM-5 included some of the globe’s leading experts in geriatric psychiatry, neurology, neuropsychology, and psychiatric research. This group of experts (The Neurocognitive Disorders Work Group) spent five years evaluating the latest advances in scientific knowledge and honing the definitions of neurological conditions. From that effort, they distilled the broad array of neurological difficulties and the various brain illnesses that can produce those difficulties, such as Alzheimer’s or cerebrovascular disease, into three primary syndromes, three basic Neurocognitive Disorders (NCDs).
|
||||
|
||||
The three basic syndromes or primary diagnoses are Delirium, Mild Neurocognitive Disorder, and Major Neurocognitive Disorder.
|
||||
|
||||
Delirium is an altered state of consciousness in which the patient is confused, disoriented, and unable to think or remember clearly. It comes rapidly, usually within hours or days, and is treatable, especially if the diagnostician can identify the underlying cause. There is no particular concern that Trump suffers from delirium.
|
||||
|
||||
Nor is there concern that Trump meets the diagnostic criteria for Major Neurocognitive Disorder at the present moment. Major NCD is the syndrome we associate with full-scale dementia where there is a dramatic loss of capacities that undermines one’s ability to live independently.
|
||||
|
||||
This leaves the syndrome of Mild Neurocognitive Disorder — what we think of as likely early dementia — as the condition that might explain Trump’s recent struggles. In Mild NCD, independent living continues, but the person displays moderate decline and signs of struggle in one or more essential areas of functioning.
|
||||
|
||||
To determine if Donald Trump displays Mild NCD, we need to look at the DSM-5 criteria for this diagnosis. The diagnosis of a Neurocognitive Disorder is all about *the decline* in a critical area of human functioning, referred to as cognitive domains in DSM-5. The diagnostician is looking for decline across six such domains, which are:
|
||||
|
||||
Attention
|
||||
|
||||
Memory
|
||||
|
||||
Language
|
||||
|
||||
Executive Functioning
|
||||
|
||||
Perceptual-Motor
|
||||
|
||||
Social Cognition
|
||||
|
||||
The authors of the Neurocognitive Disorder Chapter determined that if you can demonstrate a decline in *even just one of these domains*, you must consider a diagnosis of one of the neurocognitive syndromes. If the decline is “substantial” and the struggle with independent living is significant, the diagnosis of Major NCD (full-blown) dementia is warranted. If the decline is “moderate” and the struggle with independent living is just beginning to emerge, a diagnosis of Mild NCD is justified.
|
||||
|
||||
If there is concern one might be in the throes of a Neurocognitive Disorder, you would undertake a comprehensive assessment of these domains. The gold standard of such an evaluation would involve administering fine-grained neuropsychological tests in each domain. This is where frustration over Trump’s refusal to release details of his medical exams or collaborate in such testing is felt.
|
||||
|
||||
However, even without this cooperation, there are two other sources of potentially relevant information: (1) reports from biographers or close observers of Trump and (2) direct observation of his behavior in these domains.
|
||||
|
||||
What can we glean from these sources vis-a-vis the six key cognitive domains?
|
||||
|
||||
Information from close observers — colleagues, employees, family, friends, journalists, such as Tony Schwartz, co-author of *The Art of the Deal —* and well-sourced biographies is beneficial in assessing *executive functioning*, *attention,* and *social cognition*. These domains consist of a broad swath of behavior, much of it occurring off-camera. To get a decent appraisal, one must assess these behaviors over many situations and months, if not years.
|
||||
|
||||
From these many insider accounts and biographies, we have copious evidence that Trump’s functioning in these areas is markedly below average. He has a notoriously short attention span; disdains the planning, focus on details, and self-control that comprise executive functioning; and has a lifelong history of disagreeableness and lack of empathy that are at the heart of competent social cognition.
|
||||
|
||||
However, it seems hard to argue that Trump’s struggles in these areas are a result of a neurodegenerative disease process. Remember, diagnosing a Neurocognitive Disorder requires the demonstration of decline in one or more of the six cognitive domains. A comprehensive review of Trump’s biographies reveals persistent deficiencies in attention, executive functioning, and social cognition dating back to childhood and quite prominent in his middle age.
|
||||
|
||||
Still, thanks to reams of videotape on Trump, we have access to many behavioral observations to evaluate for possible cognitive decline. Direct behavioral observation is particularly relevant for the domains of *memory*, *perceptual-motor skills* (how one can navigate the world physically), and *language.*
|
||||
|
||||
Trump occasionally mixes up people — Nikki Haley for Nancy Pelosi, mayor Willie Brown for a councilman are recent examples — rather than just names. This confusion can be a sign of cognitive decline in the memory domain. Trump’s bent, forward-listing posture, jerking right arm and leg, and arm weakness are also [worrisome signs](https://www.psychologytoday.com/us/blog/the-fallible-mind/202010/we-are-entitled-ask-president-trump-his-brain-scan) of neurological dysfunction and not just normal aging. However, while there are several red flags of neurological issues for Trump in the areas of memory and perceptual-motor skills, there is not sufficient evidence to give a definitive diagnosis of Neurocognitive Disorder.
|
||||
|
||||
This leaves us with one domain to evaluate such a possibility: language. Fortunately, this domain does not require collaboration with Trump. That’s because you can execute a detailed, clinically meaningful appraisal directly from speech samples, which are readily available on YouTube. Furthermore, you can zero in on possible decline in the language domain by comparing speech samples from the past to the present.
|
||||
|
||||
To measure decline more rigorously, we developed the following checklist of seven specific verbal expressive behaviors that have been linked to neurodegenerative brain illness.
|
||||
|
||||
## Table 1: Verbal Markers Linked To Neurocognitive Disorder
|
||||
|
||||

|
||||
|
||||
Because of their specificity, these markers allow for a more objective determination of cognitive decline in the language domain. Because of their empirical support, they allow for a more valid determination of clinically meaningful decline.
|
||||
|
||||
We then applied the checklist to randomly selected speech samples of Trump from his middle age and recent past. Trump displayed shifts in all seven markers. He received ratings of “never” or “rarely” for all markers from the years 1975–2000 versus “moderately” or “frequently” for all markers from the years 2020 — present. I also developed a list of seven specific verbal expressive behaviors associated with normal aging, such as speech volume and rate. I applied that checklist to the same Trump speech samples. For a man of his age, Trump actually displays minimal signs of aging in his verbal expressive behavior.
|
||||
|
||||
==*Thus, Trump shows clinically significant signs of cognitive decline in the language domain beyond normal aging.*==
|
||||
|
||||
The findings outlined above are reinforced by other studies that have examined Trump’s language behavior. In [*Trump Wasn’t Always So Linguistically Challenged-What Could Explain The Change?*](https://www.statnews.com/2017/05/23/donald-trump-speaking-style-interviews/) Begley noted “striking and unmistakable” shifts In his vocabulary level and ability to string sentences together. In *Pop*[*ular Press Claims Regarding Linguistic Change in President Donald J. Trump*](https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2018.02311/full)*,* a study that zeroed in on word-finding difficulties, investigators found Trump displayed a “systematic increase in the use of filler words.” The author of a [*recent study*](https://newrepublic.com/post/184690/cognitive-decline-experts-find-evidence-trumps-mind-slowing) that applied a metric of analytic thinking to Trump’s contemporary speeches concluded, “I can’t tell you how staggering this is. He does not think in a complex way at all.” STAT, a media organization focused on health research, asked experts in memory, psychology, and linguistics to compare clips of Trump’s speech from 2017 to clips from 2024. They [concluded](https://www.independent.co.uk/news/world/americas/us-politics/donald-trump-cognitive-decline-election-2024-b2593296.html) that “Trump’s speech included more short sentences, a confused order of words, repetition and extended digressions.”
|
||||
|
||||
*We now have accumulating evidence that Donald Trump displays a meaningful decline in language functioning. Language functioning is one of the six key cognitive domains cited in DSM-5, where a moderate decline in functioning is sufficient to trigger a formal diagnosis of Mild Neurocognitive Disorder, a condition associated with underlying brain disease.*
|
||||
|
||||
The implications of this diagnosis are sobering when one considers the responsibilities of the presidency. First, if Trump is showing meaningful decline in one cognitive domain, it is likely that troubles are beginning to emerge in the other areas of functioning. What might this look like in practical terms? Here are some examples:
|
||||
|
||||
· Attention — tasks take longer to complete than previously, and work must be double-checked for errors.
|
||||
|
||||
· Executive functioning — requires more effort to finish multistep projects, has trouble resuming an interrupted task, and has difficulty organizing, planning, or making decisions.
|
||||
|
||||
· Learning and memory — difficulty recalling recent events, relies on reminders and list-making.
|
||||
|
||||
· Perceptual-motor skills — may rely more heavily on maps or notes for directions.
|
||||
|
||||
· Social cognition — less ability to read social cues, such as facial expressions, decreased empathy, or decreased inhibition.
|
||||
|
||||
Second, and most critically, this condition almost always progresses to full-scale dementia. How fast? Studies indicate that just within one year, [15 percent](https://www.ohsu.edu/sites/default/files/2023-04/IMR23-Thurs-08-Mansoor.pdf) or even [20 percent](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8970424/) of those with Mild NCD will develop full-scale dementia (Major NCD). That percentage, called the annual conversion rate, applies to successive years, thus increasing the risk of full-scale dementia over time, rising to over 50% within four years.
|
||||
|
||||
Another risk factor for Trump is the fact his father, Fred, was diagnosed with Alzheimer’s. Individuals with a first-degree relative, such as a parent, who had Alzheimer’s, a[re more likely to develop the condition](https://www.health.harvard.edu/mind-and-mood/alzheimers-in-the-family) — their risk increases by about 30 percent. Scientists have identified a gene variant, called apolipoprotein4 (APOE4), that [increases your risk three times beyond that.](https://www.nytimes.com/2024/05/06/health/alzheimers-cause-gene-apoe4.html) Testing for the gene is safe, straightforward, and inexpensive. I could not find anywhere in his reported health records that Trump had submitted to that genetic test.
|
||||
|
||||
Given the evidence of likely neurodegenerative illness, I would like to make a plea to the ex-President:
|
||||
|
||||
*It might be frightening to undergo a comprehensive neuropsychological workup or genetic testing. Taking such a step is typically considered a personal choice and a protected right for any individual. However, a core value in a democracy is an informed citizenry. Citizens have a right to information that is relevant and meaningful for those seeking office for positions that affect the general welfare. This duty to inform would include, but not be limited to, considerations of dangerousness.*
|
||||
|
||||
*As difficult as it might be, you have a moral duty to inform the public about the distinct possibility that you might be in the beginning stage of a deteriorating neurological disorder. Sir, please do the right thing and collaborate on a comprehensive neuropsychological exam.*
|
||||
|
||||
Please note: This article is not financed by or related to any political campaign and may not be considered political advertising or action on behalf of any political candidate. All statements and opinions are those of the author alone, including any political endorsements made. The information published in this article is for information only and is not intended to provide psychological therapy or diagnostic advice and/or recommendations to any persons aside from its subject, Donald J. Trump, public figure. The content of this article is intended to provide informational, scientific, and educational material based on psychological science. The content of this article solely reflects the views and perspectives of its author and does not necessarily reflect the views or positions of the American Psychological Association, medium.com, or any other person and/or entity not otherwise listed as an author.
|
||||
@@ -0,0 +1,162 @@
|
||||
---
|
||||
title: "Dungeons and Dragons and Sexual Harassment"
|
||||
source: "https://aninjusticemag.com/dungeons-and-dragons-and-sexual-harassment-a5ee012f227f"
|
||||
author:
|
||||
- "[[Dr. Casey Lawrence]]"
|
||||
published: 2024-08-20
|
||||
created: 2024-10-29
|
||||
description: "The “magic” of Dungeons and Dragons (D&D) is created through choices made by both the Dungeon Master (DM) and the players. Players go on an adventure together, usually in a Tolkienesque fantasy…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## [Nonfiction](https://clawrenc.medium.com/list/nonfiction-personal-d6e3541d22f9)
|
||||
|
||||
## Isn’t it obvious why there aren’t more women playing TTRPGs?
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://clawrenc.medium.com/?source=post_page---byline--a5ee012f227f--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://aninjusticemag.com/?source=post_page---byline--a5ee012f227f--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Cassiano K. Wehr](https://unsplash.com/@cassianokw?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
The “magic” of Dungeons and Dragons (D&D) is created through choices made by both the Dungeon Master (DM) and the players. Players go on an adventure together, usually in a Tolkienesque fantasy setting, using dice to determine outcomes.
|
||||
|
||||
For example, a character might say, “I attack that orc with my sword,” and roll a D20 (20-sided dice). If they roll high enough, they get to decrease the enemy’s hit points. If they roll too low, they miss, and the DM narrates what happens next.
|
||||
|
||||
Your choices actively determine the story, with the help of the DM and the dice. The world is what you make it, basically.
|
||||
|
||||
> So why are these worlds so often toxic to female players?
|
||||
|
||||
## A one-time thing
|
||||
|
||||
In my very first game of D&D, we played a “one-shot” — a story told all in one sitting — with pre-made characters to get used to the mechanics. I was the only woman in a group of guys, including my husband.
|
||||
|
||||
The DM set up a scenario with the hopes that our characters would essentially break into two “teams.” A party was happening at a nearby manor and some bad guys wanted to steal a [MacGuffin](https://en.wikipedia.org/wiki/MacGuffin); half the players would be working with the thieves, and the other half to protect the item.
|
||||
|
||||
My character was supposed to be on the protect-the-item “team,” and so I made the choice to eavesdrop on a conversation Brian’s character, Pervy Wizard, was having with the bartender of a tavern about the item.
|
||||
|
||||
> Note: Pervy Wizard did not have to be pervy. He *became* pervy based entirely on choices made by Brian, the person playing him.
|
||||
|
||||
Pervy Wizard rolled high enough to notice me on a perception check. Rather than confront my character, or ask me to join his quest to protect the item, or any of the infinite number of options he had —
|
||||
|
||||
PW made a comment to the bartender about my *fictional character’s* *body*. I believe it was something like, “Check out that hot piece of ass!” and a wolf whistle. He then asked to roll an *attack* to pinch my fictional butt.
|
||||
|
||||
The DM shut that shit down, but as a direct result of this interaction, we never formed a team. For the entire one-shot, I was on my own — which is not the best way to play D&D.
|
||||
|
||||
I explored the manor on my own. I looked for the item on my own. I battled a guard on my own. I tried to climb a wall, fell off, and almost died because I was down so many hit points from battling a guard on my own.
|
||||
|
||||
The story was *really* unsatisfying. The DM had to run three encounters simultaneously instead of two, and when the two main groups finally met up in a confrontation over the item, I wasn’t even there.
|
||||
|
||||
In the end, Brian made some really stupid choices, including trying to switch teams in the middle of the big showdown. Pervy Wizard was promptly chopped in half by an enemy, which at least offered closure for my character— or would have, if she’d been there to see it…
|
||||
|
||||

|
||||
|
||||
Photo by [Gian-Luca Riner](https://unsplash.com/@lucrin?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
This first experience playing D&D was a off-putting, but I liked the game itself, my husband had a great time, and our DM was sympathetic, so I bit my tongue. *After all*, I thought, *the dynamic was just a one-time mishap, part of a one-shot, and wouldn’t be an issue if I kept playing.*
|
||||
|
||||
## The campaign
|
||||
|
||||
I worked with the DM to build my character for our main campaign, a game that would hopefully continue for several months. Some players use the same character for years, if a group manages to continue scheduling sessions to play together.
|
||||
|
||||
Worried that the dynamic established in our one-shot would taint the atmosphere for future games, I altered *my* behaviour to change the vibe at the table. I didn’t want to make it a “thing.” I wanted to be Cool Girl. Or really, I wanted to play D&D, and the way to do that was to be Cool Girl.
|
||||
|
||||

|
||||
|
||||
[GIF](https://gifer.com/en/9SKG) from “Gone Girl,” © 20th Century Studios
|
||||
|
||||
My new character, Dipsy Flickerbean, was a deliberately *uncomfortable* one: a gnome bard with gigantic boobs and a disturbingly childlike face and voice, like an anime character. I leaned into the thing that made me anxious — the idea of getting sexualized — and made her whole premise pervy in a way *I* controlled through *my* choices.
|
||||
|
||||
I loved Dipsy. She could keep up with the boys and was *explicitly gay*, so there was no possibility of any men trying to romance her. Better yet, my bard’s “talent” was [performing dirty limericks](https://medium.com/amusing-responses/15-dirty-d-d-limericks-1fefd819f419), so I could out-perv any potential perving at the table.
|
||||
|
||||
I thought I had fixed the problem.
|
||||
|
||||
But then things got weird again.
|
||||
|
||||
One of the *first* interactions between Dipsy and Brian’s new character was him loudly accusing my character of being a “prostitute sent to seduce him” at Pervy Wizard’s funeral (RIP). The crowd turned on him instantly. We all laughed.
|
||||
|
||||
At first, I thought this was a bit of a self-deprecating improv — Brian was playing a “vegetarian vampire” described as a “fruit bat,” a squeamish, effeminate elf from a wealthy background. I *thought* the joke was that his character was a gay man pretending to be a hetero guy, which wasn’t the best “joke character,” but at least was better than Pervy Wizard.
|
||||
|
||||
It was *not* better than Pervy Wizard. From the first session, Fruit Bat’s behaviour ranged from subtle microaggressions to overt harassment. He made excuses to touch my character, to comment on her body, and to unironically sexualize her at every turn. He also acted this way toward female NPCs (non-player characters).
|
||||
|
||||
It finally came to a head when, during a fight, Fruit Bat went down (to zero hit points) and I cast the spell Cure Wounds, which required me to touch him. I narrated this as performing CPR. Fruit Bat gasped comically into consciousness then immediately narrated how “seeing my breasts in his face” during CPR caused him to “pass out again” and nosedive into my character’s cleavage. He made motorboat sounds.
|
||||
|
||||
After that session, I asked the DM to intervene. Brian cut back on the dirty jokes and things were okay for a session or two. But then Brian made a point of claiming that his character had had a sexual awakening and was now gnome-sexual.
|
||||
|
||||
*Great*.
|
||||
|
||||
The other players weren’t as bad, but occasionally piled on when Brian started his antics. “Adult” jokes are a pretty common feature of D&D. I didn’t want to be the buzzkill, especially since *most* of the time, I was having fun.
|
||||
|
||||
I was fine with a character “rolling for penis size” to intimidate an enemy, or dumb jokes about a sword wound accidentally circumcising someone. Some of it was funny.
|
||||
|
||||
But I felt like I was being treated differently — especially by Brian — whenever I did or said *anything*. I became reluctant to draw attention to myself, knowing that an inappropriate comment would be the result.
|
||||
|
||||
The vibe at the table was strained.
|
||||
|
||||
Eventually, we stopped playing together. The timing wasn’t working out for scheduling sessions, then someone moved and the group disbanded. We ended our months-long campaign on a cliffhanger, with our party trapped in an enemy camp.
|
||||
|
||||
And I was *relieved*.
|
||||
|
||||

|
||||
|
||||
Photo by [Carlos Felipe Ramírez Mesa](https://unsplash.com/@cafera13?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
I wish my story was a unique one, but apparently harassment in TTRPGs is a common problem. *Vice* [ran a story](https://www.vice.com/en/article/qbeev7/notallroleplayers-a-history-of-rapey-dungeon-masters) a few years ago with the title “#NotAllRolePlayers” about a DM attempting to role-play sexual fantasies with a player who had rejected his real-world advances.
|
||||
|
||||
You can never Cool Girl enough in these situations. Either you go along with a scenario that makes you deeply uncomfortable (or even unsafe), or you’re the Frigid Bitch Who Can’t Take a Joke.
|
||||
|
||||
## Fantasy means different things to different people
|
||||
|
||||
According to Dr. Justin Dyszelski’s [PhD thesis](http://rave.ohiolink.edu/etdc/view?acc_num=miami1146539391) on gender dynamics in TTRPGs, more than 55% of female players have been “*made to feel uncomfortable, judged, or harassed because of their gender*.” It’s been almost two decades since this was written, and I fear that little has changed.
|
||||
|
||||
Sexual violence and misogyny are often part of fictional worlds to make them “dark” and “gritty” — when female characters exist at all.
|
||||
|
||||
Frequently, even extremely triggering topics like rape and incest are included as part of fantasy settings for “historical realism” — as if elves and orcs are historically accurate. Worst of all is when sexual violence is played for some sort of “comedy”:
|
||||
|
||||
> A guy who normally didn’t play with us was acting as a sort of “DM’s helper” by playing an NPC \[Non-player Character\]. He used the NPC’s superhuman strength and power to rape and murder my character, which he thought was really funny (Dyszelski, 2006: 121–2).
|
||||
|
||||
In both the *Vice* article and Dyszelski’s study, many players reveal that they’ve witnessed fictional sexual violence at their D&D tables. *Vice* reports that sexual violence in TTRPGs, and particularly fictional rape (whether of player’s characters or NPCs), is “*controversial*” because that violence is “*always at the hands of either another party member or a character controlled by the Dungeon Master*.”
|
||||
|
||||
==It is== ==*always*== ==a deliberate choice to include sexual or gender-based violence in a TTRPG. The same holds true for misogyny, homophobia, and racism; the fantasy setting can be anything the DM and players want it to be, and the world doesn’t== ==*have*== ==to include those things.==
|
||||
|
||||
> So why is it so common?
|
||||
|
||||
The origins of Dungeons & Dragons is steeped in misogyny — and not just from toxic players and DMs. The game itself was created by a self-described “*biological determinist*” who believed “*male and female brains are different*” and thus created D&D as a deliberately *male* fantasy:
|
||||
|
||||
According to *Vice*, creator Gary Gygax said that while the game wasn’t “*designed to exclude women*,” there was no question for him that “*females do not derive the same inner satisfaction from playing games*” as men, and therefore didn’t consider women/their needs when creating D&D. The *Vice* article argues that
|
||||
|
||||
> \[Gygax’s\] opinions, while fairly in line with the overwhelmingly male niche culture of war games that laid the groundwork for D&D in the early 1970s, have helped enshrine a legacy that the game has had difficulty leaving behind.
|
||||
|
||||
But people *are* trying to leave it behind — and so is the company that now owns D&D, Wizards of the Coast (which itself is now owned by Hasbro).
|
||||
|
||||

|
||||
|
||||
GIF of Brennan Lee Mulligan on Dimension20 © Dropout.tv / CH Media
|
||||
|
||||
## Getting out from under Gygax
|
||||
|
||||
As of the 5th edition (5e), the tone of D&D has shifted. The 5e rulebook notes that players need not “*be confined to binary notions of sexuality and gender,*” which is a far cry from the game’s origins as a male violence fantasy. Overall, the source material is more inclusive and welcoming, with an emphasis on consent and collaboration.
|
||||
|
||||
In the 1980s, the estimated number of female D&D players was [about 2.3%](http://www.believermag.com/issues/200609/?read=article_lafarge). A [survey in 2000](http://www.theescapist.com/WotCsummary1.htm) saw that number rise to 20%, and I suspect it has probably doubled by the 2020s, with the popularity of “Actual Play” shows like *Dimension20* and *Critical Role*.
|
||||
|
||||
I fell in love with D&D from watching Brennan Lee Mulligan DM for a diverse cast of comedians on *Dimension20*. His games are inclusive, thoughtful, and welcoming. The quality D&D content available now set my expectations pretty high, and I was let down that my home game didn’t feel the way I expected.
|
||||
|
||||

|
||||
|
||||
GIF from “The Seven” on Dimension 20 © Dropout.tv / CH Media, starring Aabria Iyengar, Rekha Shankar, Becca Scott, Erika Ishii, Isabella Roland, and Persephone Valentine as the Seven Maidens.
|
||||
|
||||
The roots of the game are misogynistic, and that’s hard to avoid, even using the rebranded, post-Gygax material. Because I was both a new player and “just someone’s wife,” I didn’t protest as vocally as I wish I would have when I was uncomfortable.
|
||||
|
||||
The vibe of the table is what players and the DM collaboratively make it. Choosing to role-play with people who want the same kind of experience as you is essential to getting the most out of a hobby that requires a huge investment of time, energy, creativity, and even money.
|
||||
|
||||
Unfortunately, it’s not always easy to find a group of people to play D&D with *at all*, let alone one that feels safe and welcoming. I hope to one day find my ideal group and explore that world again, but for now, I have to settle for watching other people play.
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: "Freedom on the Net 2024: So frei ist das Internet im internationalen Vergleich"
|
||||
source: "https://netzpolitik.org/2024/freedom-on-the-net-2024-so-frei-ist-das-internet-im-internationalen-vergleich/#netzpolitik-pw"
|
||||
author:
|
||||
- "[[netzpolitik.org]]"
|
||||
published: 2024-10-25
|
||||
created: 2024-10-29
|
||||
description: "Die Freiheit im Internet geht global weiter bergab. Das zeigt der neue Freedom on the Net Report der NGO Freedom House. China und Myanmar führen die Negativliste an, während Island wieder ganz oben steht. Deutschland hält seinen guten Score, doch ob das so weiter geht, ist fraglich."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||

|
||||
|
||||
Die NGO Freedom House evaluiert jährlich die Internet-Freiheit auf der Welt – dieses Jahr in 72 Ländern. Grün steht für frei, Gelb teilweise frei und Lila unfrei. – Alle Rechte vorbehalten [Freedom House](https://socialpresskit.com/fotn24)
|
||||
|
||||
Seit 15 Jahren veröffentlicht die US-amerikanische NGO Freedom House den [Freedom on the Net Report](https://freedomhouse.org/report/freedom-net/2024/struggle-trust-online). Jährlich fasst der Bericht zusammen, wie es um die Internetfreiheit auf der Welt steht. Die diesjährige Bilanz: Von 72 untersuchten Ländern verbesserte sich die Internetfreiheit in 18, während sie sich in 27 Ländern verschlechterte. Es ist das 14. Jahr in Folge, in dem sich die Internetfreiheit global verschlechterte. Wichtige Faktoren dafür waren laut Freedom House die Zunahme von Gewalt und Zensur im Internet, Wahlmanipulationen und fehlende Informationstransparenz.
|
||||
|
||||
### Die Schlusslichter
|
||||
|
||||
[China](https://netzpolitik.org/?s=china) bildet seit Jahren das traurige Schlusslicht im Freedom on the Net Report. Dort besteht eine massive staatliche Kontrolle über den Zugang zum Internet, einschließlich strenger Zensurmaßnahmen und weitreichender Überwachung. Jüngstes Beispiel ist eine aktuelle Kampagne der chinesischen Regierung, die den [Einsatz bestimmter Wortspiele und Memes verbietet](https://netzpolitik.org/2024/zensurumgehung-china-will-wortspiele-noch-mehr-wegzensieren/), um gegen „unregelmäßige und unzivilisierte“ Sprache im Internet vorzugehen.
|
||||
|
||||
Den letzten Platz teilt sich China dieses Jahr mit ihrem Nachbarland Myanmar. Seit dem Militärputsch 2021 hat die Militärjunta ein rigides Überwachungs- und Zensurregime etabliert. Besonders gravierend war die Einführung neuer Technologien zur [Blockierung von VPNs](https://www.heise.de/news/Myanmars-Militaer-Bei-VPN-App-am-Handys-droht-Geiselnahme-9767027.html), die den Bewohnern bis dahin als sicheres Mittel dienten, die Zensur zu umgehen.
|
||||
|
||||
Am tiefsten gestürzt im diesjährigen Ranking ist Kirgisistan. Unter dem Vorwand des Schutzes von Traditionen erließ Präsident Sadyr Dschabarow in diesem Jahr ein [Gesetz, das die freie Meinungsäußerung massiv einschränkt.](https://www.zois-berlin.de/publikationen/zois-spotlight/unter-dem-vorwand-der-tradition-die-unterdrueckung-der-medien-in-kirgistan)
|
||||
|
||||
Doch der Bericht lässt auch positive Entwicklungen nicht außer Acht. Island wird seit Jahren mit durchweg starken Bewertungen erwähnt und sichert sich auch in diesem Jahr den ersten Platz. Neu in die Untersuchung aufgenommen wurden dieses Jahr Chile und die Niederlande, jeweils mit guten Werten. Den größten Fortschritt zum Vorjahr hat Sambia im südlichen Afrika gemacht, im internationalen Vergleich gilt es dennoch nur als „teilweise frei“.
|
||||
|
||||
### Wie schneidet Deutschland ab?
|
||||
|
||||
Den Zustand der Internetfreiheit in Deutschland stuft Freedom House als „stark“ ein. Ein [individueller Bericht wird zwar erst noch folgen](https://freedomhouse.org/country/germany/freedom-net/2024), doch der Score von 77/100 ist seit 2022 derselbe geblieben. Ob dieser Wert im nächsten Jahr gehalten oder gar verbessert werden kann, ist fraglich. Das aktuell umstrittene [„Sicherheitspaket“ der Ampel](https://netzpolitik.org/2024/biometrische-ueberwachung-ampel-beschliesst-umstrittenes-sicherheitspaket/) bietet großes Potenzial für Überwachung und Diskriminierung im Internet.
|
||||
|
||||
Doch bereits früher im Jahr gab es Enthüllungen, die zeigten, dass es in Deutschland nicht immer glatt läuft mit der Internetfreiheit: Die von [netzpolitik.org aufgedeckten Databroker-Files](https://netzpolitik.org/2024/databroker-files-firma-verschleudert-36-milliarden-standorte-von-menschen-in-deutschland/) demonstrierten im Juli, wie einfach es ist, sensible Daten von Millionen von Menschen über Datenhändler zu erhalten. Ob solche massiven Verstöße des Datenschutzes in die Bewertung von Deutschlands Internetfreiheit eingeflossen sind, geht nicht restlos aus dem Bericht hervor.
|
||||
|
||||
[Um die jeweiligen Wertungen zu berechnen](https://freedomhouse.org/reports/freedom-net/freedom-net-research-methodology), klären die über 95 Analyst:innen für jedes Land Fragen zu drei Hauptbereichen: Mögliche Zugangshürden, Beschränkungen von Inhalten und Verletzungen der Nutzerrechte. Jede Frage wird auf einer Skala bewertet und die Summe aller Werte ergibt dann die Punktzahl zwischen 1 und 100. Ein Land mit einem Score von unter 40 Punkten gilt als unfrei, bis 69 Punkte als teilweise frei und ab 70 Punkten als frei.
|
||||
|
||||
Herausgeberin des jährlichen Reports ist die US-amerikanische Nichtregierungsorganisation Freedom House. Neben Freedom on the Net gibt sie auch den populären [Freedom in the World](https://freedomhouse.org/report/freedom-world) Bericht heraus. Die Organisation selbst wurde in der Vergangenheit [für ihre Nähe zur US-Regierung kritisiert](https://www.spiegel.de/politik/die-firma-freiheit-a-8de0fa7e-0002-0001-0000-000057457840), bis heute stammt ein [Teil ihres Budgets aus US-Töpfen](https://freedomhouse.org/about-us/financials). Diese Kritik ist zuletzt aber abgeebbt.
|
||||
|
||||

|
||||
|
||||
Wie steht es um die Freiheit des Internets? Dieser Frage geht der jährlich erscheinende „Freedom of the Net“-Bericht der NGO Freedom House nach. In diesem Jahr liegt der Fokus auf Künstlicher Intelligenz. Die Technologie ist noch nicht ausgereift und doch berge sie großes Potenzial für Diktatoren.
|
||||
|
||||
[Lesen Sie diesen Artikel: KI als Bedrohung für das freie Internet](https://netzpolitik.org/2023/freedom-of-the-net-2023-ki-als-bedrohung-fuer-das-freie-internet/)
|
||||
|
||||

|
||||
|
||||

|
||||
@@ -0,0 +1,227 @@
|
||||
---
|
||||
title: Getting Started with Obsidian Bases
|
||||
source: https://obsidian.rocks/getting-started-with-obsidian-bases/
|
||||
author:
|
||||
- "[[Tim Miller]]"
|
||||
published: 2025-06-19
|
||||
created: 2025-08-29
|
||||
description: Bases is a brilliant new tool from the Obsidian team. It allows you to create interactive filtered lists of notes. It is user-friendly and extremely powerful, and I think one of the most important additions to Obsidian that we’ve ever seen. Bases are designed to be easy-to-use and, unlike Dataview, they don’t require any programming […]
|
||||
tags:
|
||||
- clippings
|
||||
imported:
|
||||
---
|
||||
Bases is a brilliant new tool from the Obsidian team. It allows you to create interactive filtered lists of notes. It is user-friendly and *extremely* powerful, and I think one of the most important additions to Obsidian that we’ve ever seen.
|
||||
|
||||
Bases are designed to be easy-to-use and, unlike Dataview, they don’t require *any* programming knowledge. Getting started with Obsidian Bases takes only five minutes, and allows you to turn your notes from *meh* to *amazing*.
|
||||
|
||||
What are we waiting for? Let’s jump in and learn how to use Bases!
|
||||
|
||||
On This Page \[[hide](https://obsidian.rocks/getting-started-with-obsidian-bases/#)\]
|
||||
|
||||
- [1 Your First Base](https://obsidian.rocks/getting-started-with-obsidian-bases/#Your-First-Base)
|
||||
- [2 Searching for Tags with Bases](https://obsidian.rocks/getting-started-with-obsidian-bases/#Searching-for-Tags-with-Bases)
|
||||
- [3 Choosing What Your Base Displays](https://obsidian.rocks/getting-started-with-obsidian-bases/#Choosing-What-Your-Base-Displays)
|
||||
- [4 Adding Views to a Base](https://obsidian.rocks/getting-started-with-obsidian-bases/#Adding-Views-to-a-Base)
|
||||
- [5 Reusing Bases](https://obsidian.rocks/getting-started-with-obsidian-bases/#Reusing-Bases)
|
||||
- [6 Solutions](https://obsidian.rocks/getting-started-with-obsidian-bases/#Solutions)
|
||||
- [6.1 Better Backlinks](https://obsidian.rocks/getting-started-with-obsidian-bases/#Better-Backlinks)
|
||||
- [6.2 Tracking My Writing](https://obsidian.rocks/getting-started-with-obsidian-bases/#Tracking-My-Writing)
|
||||
- [6.3 Create a Bookshelf](https://obsidian.rocks/getting-started-with-obsidian-bases/#Create-a-Bookshelf)
|
||||
- [6.4 Create a Read it Later App](https://obsidian.rocks/getting-started-with-obsidian-bases/#Create-a-Read-it-Later-App)
|
||||
- [6.5 Project Tracker](https://obsidian.rocks/getting-started-with-obsidian-bases/#Project-Tracker)
|
||||
- [6.6 Workouts](https://obsidian.rocks/getting-started-with-obsidian-bases/#Workouts)
|
||||
- [7 Conclusion](https://obsidian.rocks/getting-started-with-obsidian-bases/#Conclusion)
|
||||
|
||||
## Your First Base
|
||||
|
||||
I want to start by showing you how easy it is to create a Base, using your own notes.
|
||||
|
||||
The only prerequisite is that you have to enable the plugin. Go to Settings > Core Plugins, and enable the “Bases” plugin:
|
||||
|
||||

|
||||
|
||||
A screenshot of the core plugins in Obsidian, with Obsidian Bases enabled.
|
||||
|
||||
You might want to enable “Properties” too, if you haven’t already. Both Bases and Properties make it easier to manage metadata in your vault.
|
||||
|
||||
There are a few ways to create a new Base. You can use [the command palette](https://obsidian.rocks/for-beginners-and-pros-alike-the-command-palette-in-obsidian/) and search for “Create new base”. You can click the “New Base” button in the ribbon menu. Or you can right-click on a folder in your vault and click “New base”.
|
||||
|
||||
Use the method that works best for you, and Obsidian will create and drop you into your first Base. It will look something like this:
|
||||
|
||||

|
||||
|
||||
A screenshot of an untitled new Base in Obsidian.
|
||||
|
||||
Congratulations! You now have a base. Now what can we do with it?
|
||||
|
||||
## Searching for Tags with Bases
|
||||
|
||||
One of my favorite uses for Bases is simply to aggregate notes that contain a certain tag. If you use tags very much, this alone can unlock all kinds of new features for your vault.
|
||||
|
||||
For example, I have a Base that displays the articles I am working on. For rough ideas, I use this tag: `writing/idea`.
|
||||
|
||||
I can now create a Base that displays all of the articles ideas I have in my vault. How do I do that?
|
||||
|
||||
Through the power of *filters*.
|
||||
|
||||
In the top right of every Base, there are two links: Filters and Properties. In your own base, click on Filters first. You should see something like this:
|
||||
|
||||

|
||||
|
||||
The default filters view in an Obsidian Base.
|
||||
|
||||
Now to filter by a tag, we need to add a `file` filter. Click where it says “Property” and select “file” (it’s usually at the top of the list, but you can also search for it).
|
||||
|
||||
Then click the dropdown menu and select “has tag”:
|
||||
|
||||

|
||||
|
||||
An example of a simple filter in an Obsidian Base.
|
||||
|
||||
Now click on the input to the right of that dropdown menu (where it says “Empty”), and Obsidian will show you a list of your tags. Again you can type to search, or just select a tag from the list.
|
||||
|
||||
In my case I will select `writing/idea`, and the Base will instantly update to show me all of my notes with that tag:
|
||||
|
||||

|
||||
|
||||
An Obsidian base with a single tag filter applied.
|
||||
|
||||
Fantastic!
|
||||
|
||||
## Choosing What Your Base Displays
|
||||
|
||||
So that’s the basics on how to *filter* your Base. But how do we choose what information we want the table to display?
|
||||
|
||||
If you’re following along above, you should have an “Untitled” base that is filtered to show notes with a single tag. That’s a good start!
|
||||
|
||||
But that alone is not all that useful. Your Base shows you the name of each file and gives you a link, but we often need more *context* to make a database useful.
|
||||
|
||||
We can add *context* with the help of the Properties menu.
|
||||
|
||||
Next to Filters, there’s a link to the “Properties” menu. Click that, and you should see something that looks like this:
|
||||
|
||||

|
||||
|
||||
The Properties selector screen in an Obsidian Base.
|
||||
|
||||
This shows you all the properties available in your vault. It’s a “smart” menu, so it tries to guess which property you are looking for, and puts those at the top. If you don’t see one of your properties, then you may have to search for it.
|
||||
|
||||
You can check the box next to any property, and it will automatically show up in your Base. For my use-case, I’m going to add my *modified* date property and the *folder* for each file. That ends up looking like this:
|
||||
|
||||

|
||||
|
||||
An Obsidian Base with a few more properties than default.
|
||||
|
||||
So far so good!
|
||||
|
||||
It’s interesting to note that *some* properties can be edited inline in a Base, and others cannot. For example you can’t change the *file path* in a Base, but you *can* update tags. Something to keep in mind.
|
||||
|
||||
## Adding Views to a Base
|
||||
|
||||
Last but not least, we need to discuss *views* in Bases.
|
||||
|
||||
Views are super helpful, because they allow you to create a Base that gives you multiple perspectives.
|
||||
|
||||
Again going to my writing example, `writing/idea` isn’t my only writing tag. I also have `writing/draft`, `writing/published`, and I use all three of these for different purposes.
|
||||
|
||||
I *could* create three separate Bases, one for each of these. But that seems a little redundant: I want to use the same settings for each of these views, and just swap out the tag.
|
||||
|
||||
To do that, we can use *views*. In the top *left* of your Base, you can see the word “Table” with arrows next to it. Click that, and you will see this:
|
||||
|
||||

|
||||
|
||||
The view selector screen in an Obsidian Base.
|
||||
|
||||
Welcome to the Views menu! The first view in any Base is always called “Table”, but we can rename it by clicking on the arrow next to the word “Table”.
|
||||
|
||||

|
||||
|
||||
Changing the settings in an Obsidian Base view.
|
||||
|
||||
Then click “Configure view”, and Obsidian will allow you to rename this view. Handy! I call mine “Writing / Ideas”.
|
||||
|
||||
Then we can go back a step and create a *new* View by clicking the “New View” button:
|
||||
|
||||

|
||||
|
||||
A view in an Obsidian Base with the name "Writing / Ideas" and the "add view" button highlighted.
|
||||
|
||||
It will ask you to name your new view. I’m calling mine “Writing / Drafts”.
|
||||
|
||||
Then it will drop you into a new view! From here you can configure it how you like, using the Filters and Properties menus as we discussed before.
|
||||
|
||||
Once you have them configured as you like it, you can then switch between views effortlessly by using that menu in the top left corner. My final Base I call “Content Creation”, and it has SEVEN views currently:
|
||||
|
||||

|
||||
|
||||
A screenshot of an Obsidian Base with seven separate views in it!
|
||||
|
||||
> Pro tip: In the Filters menu you can also set up “all views” filters that affect every view. Handy if you have a bunch of views in one Base that you want to update all at once.
|
||||
>
|
||||
> Note: The Obsidian team is talking about adding views *other* than Table views, so eventually we should have a few other options for Bases than just seeing tabular data. No telling what those views will be though, until they release them.
|
||||
|
||||
## Reusing Bases
|
||||
|
||||
Those are the basics of how we *create* Bases, but did you know that we can also *reuse* them in many ways?
|
||||
|
||||
Unlike most files in Obsidian, Bases are *not* Markdown files. But they *are* still plain-text, which means you can transfer them from vault to vault, and they will still work. You can copy or download someone else’s Base, and it will work (as long as you have the appropriate metadata).
|
||||
|
||||
You can also embed Bases, both in notes and also in your sidebars. The easiest way to do that is to drag-and-drop a Base from your sidebar to where you want it, but inside notes you can also use the default embed syntax:
|
||||
|
||||
```
|
||||
![[Content Creation.base]]
|
||||
```
|
||||
|
||||
You can embed a specific view by adding an octothorpe and the name of the view:
|
||||
|
||||
```
|
||||
![[Content Creation.base#Newsletter]]
|
||||
```
|
||||
|
||||
Note though that you *do* need to have the `.base` file extension, otherwise Obsidian will look for a Markdown file.
|
||||
|
||||
## Solutions
|
||||
|
||||
You now know the basics of creating and editing views. Now the question is, what can we do with them practically?
|
||||
|
||||
Let me show you some of the things I have done, and maybe it will spark some ideas for you.
|
||||
|
||||
### Better Backlinks
|
||||
|
||||
I love the backlinks pane in Obsidian, I use it all the time. But sometimes it does feel a bit *limited*, and I wish I could see more information.
|
||||
|
||||
Well now you can! If you use `file.hasLink(this)` as an *advanced* filter, and then drag that Base to your sidebar, it becomes a bit like an upgraded backlinks pane. You can then select the properties you want to see and even edit properties from your new Backlinks pane. Handy!
|
||||
|
||||
### Tracking My Writing
|
||||
|
||||
We’ve already talked about my tag system for writing articles, but it is one of my main Bases, I use it every day. I simply use filters that show me my `writing/idea` tags, my `writing/draft` tags, and my `writing/published` tags. Simple, but effective.
|
||||
|
||||
### Create a Bookshelf
|
||||
|
||||
I have a [Simple System Bookshelf](https://obsidian.rocks/simple-systems-for-obsidian/#simple-bookshelf) available for purchase that sorts, categorizes, and gives you stats for the books you have read in any given year. You can do *many* of the same things with Bases.
|
||||
|
||||
I have a Base that pulls in *all* of the books that are in my vault, and another that scopes it for certain years. Both are useful (although not as pretty as my Simple System).
|
||||
|
||||
I love [reading books with Obsidian](https://obsidian.rocks/how-to-take-book-notes-in-obsidian/) and I’ve been doing it long enough that it’s very satisfying to see the results reflected in an Obsidian Base.
|
||||
|
||||
### Create a Read it Later App
|
||||
|
||||
I love using Obsidian as a read-it-later app. And Bases makes it even better for that.
|
||||
|
||||
How? First I use the [Obsidian Web Clipper](https://obsidian.rocks/the-obsidian-web-clipper-fixes-everything/) to clip articles. Then I use Bases to show articles that I have *clipped*, but not *read*.
|
||||
|
||||
`read` is a [checkbox property](https://obsidian.rocks/an-introduction-to-obsidian-properties/#Checkbox), so I can easily create a filter that filters *out* notes that have already been read.
|
||||
|
||||
### Project Tracker
|
||||
|
||||
I like [managing projects in Obsidian](https://obsidian.rocks/how-to-manage-projects-in-obsidian/), and I do that primarily with tags. Like my writing view, my project tracker follows the progress of projects using tags.
|
||||
|
||||
I use `project/active`, `project/ongoing`, `project/soon`, and `project/archive`. I also sort by priority and deadline, which is another handy part of Bases.
|
||||
|
||||
### Workouts
|
||||
|
||||
I like to track my workouts in my [daily notes](https://obsidian.rocks/supercharge-your-daily-notes-in-obsidian/ "daily notes"), and with a little bit of cleverness I can create a Base that shows my workout progress over time.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Getting started with Obsidian Bases is easy, and I hope you’ve learned the basics of how to make them useful for you. I think Bases are one of the most important tools Obsidian has come out with in a long time, and I look forward to using them for many years to come!
|
||||
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: "Having Kids Is Not A Choice"
|
||||
source: "https://aninjusticemag.com/having-kids-is-not-a-choice-5ca838315178"
|
||||
author:
|
||||
- "[[Christyl Rivers]]"
|
||||
- "[[Phd.]]"
|
||||
published: 2024-07-05
|
||||
created: 2024-10-29
|
||||
description: "— Feminists do not tell women to get out and “work” or “Do not be mothers.” (Autonomy is the entire point of free choice.) — Global warming results in more complications and more deaths during…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Forget about Overpopulation, there are so many reasons why there is no “right to choose”
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://christylrivers.medium.com/?source=post_page---byline--5ca838315178--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://aninjusticemag.com/?source=post_page---byline--5ca838315178--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [National Cancer Institute](https://unsplash.com/@nci?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
## Roaring Rivers
|
||||
|
||||
Torrents, currents, and ripples by **Christyl Rivers,** PhD.
|
||||
|
||||
## Babies are what happens while God is making other plans
|
||||
|
||||
For the love of GOD, (or if you’re atheist) please stop saying women having kids is a choice.
|
||||
|
||||
*Yes, it SHOULD be a choice in a civilization. But, it’s not yet.*
|
||||
|
||||
…Here are some facts and feelings to think about.
|
||||
|
||||
— Feminists do not tell women to get out and “work” or “Do not be mothers.” (Autonomy **is** the entire point of free choice.)
|
||||
|
||||
— The world has made childbearing unaffordable and unsustainable.
|
||||
|
||||
— Often, even billionaires do not take care of their own kids.
|
||||
|
||||
— Global warming results in more complications and more deaths during pregnancy, and for women with [children](https://www.unicef.org/reports/uprooted-growing-crisis-refugee-and-migrant-children).
|
||||
|
||||
— There are human relationships that cannot sustain childbirth.
|
||||
|
||||
— Millions of women get pregnant every day by accident.
|
||||
|
||||
— Trans women (who do exist) may not be able to have kids.
|
||||
|
||||
— There are places in the world where women have forced birth.
|
||||
|
||||
— There is date rape, and spouse rape, and even child rape.
|
||||
|
||||
— About 1,000 women per day die in pregnancy related deaths.
|
||||
|
||||
— Not every woman’s body can handle a pregnancy.
|
||||
|
||||
— Many women are infertile. (Christyl raises her protesting fist)
|
||||
|
||||
— Not all women are socialized and biologically programed to reproduce.
|
||||
|
||||
— Women have, at best, one third of their lives to be fertile.
|
||||
|
||||
— Fertility treatments, are rarely covered by insurance.
|
||||
|
||||
— The “choice” for IVF is more than $10,000 per cycle.
|
||||
|
||||
— Even conception is under the gun, (or, Pope robe?) in many faiths.
|
||||
|
||||
— Not all women love children.
|
||||
|
||||
— Many families already have kids from prior relationships.
|
||||
|
||||
— Few people can afford to adopt kids; often a for profit system with no guarantees, and very costly.
|
||||
|
||||
— Even if adoption were not racist, sexist, or costly, it can take years and years.
|
||||
|
||||
— Finally, did you know there are *men* who don’t want to support kids? Or even have them?
|
||||
|
||||
You may be able to think of other reasons. If so, speak up.
|
||||
|
||||
Every day we see stories and diatribes telling women to ***have*** kids, or to ***not*** have kids (usually by implying they should not be slutty, or careless, or both.) We hear of pro-natal nations who reward large families, or of infertile people who can’t have kids. Every precious life has different circumstances. We hear that women (or sometimes men) should find a fabulous breadwinner. We hear lots of financial advice telling men and women to budget, plan, manage, and optimize their time to accommodate their preferred number of kids. We hear that whole nations will collapse because there are not enough of young people working to support the elderly. This is the pro-natal stance which rewards fertility.
|
||||
|
||||
==Shouldn’t we also reward small families who do== ==*not*== ==contribute as much to the climate disasters we now have?==
|
||||
|
||||
We hear that men and women’s roles are in peril. We hear the world is not fit for children. (Or, conversely, that it really, really *needs* them now). We hear that if not enough of “our kind” reproduce, we will lose “our way of life.” We hear that no one even loves motherhood anymore. We hear that traditions are being lost.
|
||||
|
||||
But [WHO](https://www.who.int/westernpacific/health-topics/reproductive-health) numbers and the [UN](https://press.un.org/en/2024/sgsm22295.doc.htm), in addition to thousands of other global organizations, know that women seldom have affordable, healthy, strong, and educated kids in many, many nations.
|
||||
|
||||
Even as I write, many women are losing babies, and/or birthing babies in war zones and refugee camps. Yet every child born deserves to be wanted.
|
||||
|
||||
Most every position on the topic of “having children” centers on the idea that having children is a personal choice.
|
||||
|
||||
Oh, what freedom we would have were that the case!
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
title: "How the UK is becoming a ‘third-world’ economy"
|
||||
source: "https://medium.com/the-geopolitical-economist/how-the-uk-is-becoming-a-third-world-economy-8fbdfdb412ea"
|
||||
author:
|
||||
- "[[Vikas]]"
|
||||
published: 2024-10-13
|
||||
created: 2024-10-29
|
||||
description: "The United Kingdom, which at its peak was an empire where the sun never set, ruled around 25% of the world and colonised the wealthiest countries of that time, is now slowly moving towards economic…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Wealth and Decline — The UK’s Struggle Behind the Glitter
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@vikas162202?source=post_page---byline--8fbdfdb412ea--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/the-geopolitical-economist?source=post_page---byline--8fbdfdb412ea--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image from [HM Land Registry](https://www.money.co.uk/cost-of-living/cost-of-living-statistics)
|
||||
|
||||
The United Kingdom, **which at its peak was an empire where the sun never set**, ruled around 25% of the world and colonised the wealthiest countries of that time, is now slowly **moving towards economic decline.**
|
||||
|
||||
London, which is considered as the **“City of Dreams,**” is one of the wealthiest urban areas globally.
|
||||
|
||||
> **Its economy, worth around £508 billion ($652 billion), would rank as the 22nd largest economy worldwide.**
|
||||
>
|
||||
> **If London was an independent state, placing it above nations like Argentina and Sweden.**
|
||||
|
||||
Despite this, London’s prosperity is atypical for the rest of the United Kingdom. This small area of Southeast England, home to about one-third of the country’s population, generates nearly half of its GDP.
|
||||
|
||||
> **Without London’s output, British living standards would fall by 14%, barely staying ahead of Mississippi, the poorest state in the U.S.**
|
||||
|
||||
However, the U.K. has seen better days. The last decade has been particularly tough, with real disposable income (income after taxes and benefits) still needing to grow.
|
||||
|
||||
> **As the cost of goods and services increases, the average Briton can buy less today than they could ten years ago.**
|
||||
|
||||
Meanwhile, productivity remains low, among the weakest of any major economy, and housing has become unaffordable, contributing to the U.K. holding the record for the highest number of homeless people in the developed world.
|
||||
|
||||

|
||||
|
||||
Image source: [Statista](https://proxy.parisjc.edu:8293/chart/28262/breakdown-of-the-rising-cost-of-living-in-the-uk/)
|
||||
|
||||
## **A History of Economic Setbacks**
|
||||
|
||||
The roots of these issues lie in past political decisions. Over the years, Britain has stumbled through a series of crises and has yet to have a quick fix in sight. Ironically, the U.K., once the world’s first industrialised nation, now faces the risk of becoming the first to deindustrialise. Britain’s economy is on a downward trajectory, with rising inflation and housing prices.
|
||||
|
||||
> Housing prices reportedly jumped by more **than 20 to 25%** in just one month, although this shocking statistic received minimal media attention.
|
||||
|
||||
Ground News offers invaluable insights, allowing users to view the full spectrum of media coverage.
|
||||
|
||||
**For example, only ten sources covered the housing price spike, and less than 10% of these outlets were government sources, highlighting how governments often avoid discussing domestic complications.**
|
||||
|
||||
## **The Cost of Austerity**
|
||||
|
||||
Britain’s economic struggles date back to 2008 when the global financial crisis left long-lasting effects. Like many countries, **the U.K. suffered, but its response set it apart. After borrowing roughly £141 billion to bail out its banks, the government opted for austerity rather than investing in fiscal and social policies.** There were no significant tax cuts, minimum wage increases, inflation controls, housing assistance, or job creation programs.
|
||||
|
||||
For ordinary citizens, the consequences were devastating. Real household income fell and remained stagnant for the next 15 years, a period often referred to as Britain’s **“lost decade.”**
|
||||
|
||||
> **In 2007, the average British household was only 8% less prosperous than those in Norway and 6% behind the United States.**
|
||||
|
||||
Here is the difference
|
||||
|
||||
> **Today, British households lag 20% behind Norway and 16% behind the U.S. in terms of real income.**
|
||||
|
||||

|
||||
|
||||
This decline in living standards is keenly felt by the middle class, whose real household income is a key driver of economic growth.
|
||||
|
||||
While the government prioritised corporate interests, even the corporate world saw only short-term gains. Productivity, one of the most efficient ways to grow an economy, should have been addressed. Productivity is not about working harder but about increasing economic output without increasing labour.
|
||||
|
||||
**However, after the 2008 crisis, the U.K.’s productivity stagnated, bucking a trend that had been in motion since the 1980s.**
|
||||
|
||||
## **Brexit, COVID-19, and the Ukraine War**
|
||||
|
||||
The simultaneous effects of low household income and poor productivity explain much about the U.K.’s economic decline. Yet, this slow deterioration went largely unacknowledged by political parties, with no discourse to address it. Instead, the crisis manifested itself in the form of Brexit, which only worsened the economic situation.
|
||||
|
||||
> **Between 2016 and 2021, Brexit caused a 25% drop in direct foreign investment, according to the Bank of England.**
|
||||
|
||||
Then came the COVID-19 pandemic, exacerbating the brewing crisis. **The government borrowed an additional £280 billion to manage the pandemic, with interest rates at historic lows of around 0.1%.** This seemed manageable at the time, but the Ukraine war in 2022 added a new layer of complexity. Sanctions on Russian oil and gas caused an energy crisis, tripling household heating costs. **The government stepped in again, this time with £60 billion to £100 billion in financial support, pushing the national debt even higher.**
|
||||
|
||||
Today, debt servicing has surged to £100 billion annually, a £60 billion increase from previous years. **This expense has become the second-largest item in the national budget, surpassed only by health spending.** Other public services have suffered, with such a large portion of funds going towards debt repayment.
|
||||
|
||||
As the pandemic subsided, most advanced economies saw a recovery in their workforces.
|
||||
|
||||
> **But not the U.K. Its workforce never bounced back**, with a missing 11 million people classified as **“economically inactive.”**
|
||||
|
||||
This includes students, early retirees, and those with caring responsibilities. To fill the gaps, the government has turned to immigration, leading to an influx of workers from South Asia and Sub-Saharan Africa.
|
||||
|
||||
While this helps sustain the economy, **it has also increased social tensions. In August 2024,** anti-immigration protests rocked over 20 towns across the U.K., reflecting the simmering discontent within the nation.
|
||||
|
||||
## **A Bleak but Not Hopeless Future**
|
||||
|
||||
Britain’s economic woes have triggered a chain reaction of crises, from debt to workforce issues, from housing to social tensions.
|
||||
|
||||
Yet, every nation goes through ups and downs, and the U.K. is no exception. London remains one of the wealthiest and most innovative cities globally, a glimmer of hope amid the challenges.
|
||||
|
||||
==**Things may eventually improve, but for now, Britain must navigate the consequences of its past decisions.**==
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
---
|
||||
title: "I Installed These 4 Unorthodox Command Line Tools To Revamp My Terminal Experience"
|
||||
source: "https://levelup.gitconnected.com/i-installed-these-4-unorthodox-command-line-tools-to-revamp-my-terminal-experience-68dcd07ed161"
|
||||
author:
|
||||
- "[[Rishabh Agarwal]]"
|
||||
published: 2024-10-06
|
||||
created: 2024-10-29
|
||||
description: "Terminals have been around for more than 75 years now and in this period a number of tools have been developed to simplify the day-to-day job of a person working with them. Many tools like ls, cat…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Discover How These Unique Tools Breathe New Life into a Classic Interface
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@the_infinity?source=post_page---byline--68dcd07ed161--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://levelup.gitconnected.com/?source=post_page---byline--68dcd07ed161--------------------------------)
|
||||
|
||||

|
||||
|
||||
> Terminals are almost as old as the computers!
|
||||
|
||||
Terminals have been around for more than 75 years now and in this period a number of tools have been developed to simplify the day-to-day job of a person working with them. Many tools like `ls`, `cat`, `pwd`, and `grep` have become so common that working without them is unimaginable.
|
||||
|
||||
Most of these commonly used tools were developed decades ago when computers were totally different from what we know them today. But such was the versatility of these tools that they are still useful after years of their development.
|
||||
|
||||
While most existing tools work well, the software community has developed a plethora of new options in recent years to elevate our terminal experience.
|
||||
|
||||
I recently installed 4 such tools and since then found them greatly useful when working on terminal. Let us talk about them.
|
||||
|
||||
## bat — A cat clone with wings
|
||||
|
||||
The [bat](https://github.com/sharkdp/bat) tool is a clone of famous cat program with support for syntax highlighting and git integration.
|
||||
|
||||
Conveniently, using `bat` is similar to using the `cat` program.
|
||||
|
||||
```
|
||||
~ sudo apt install bat ~ brew install bat
|
||||
```
|
||||
|
||||
A detailed guide for installing it on various distribution is provided [here](https://github.com/sharkdp/bat?tab=readme-ov-file#installation).
|
||||
|
||||
## Ultimate Plumber — Tool for crafting Linux Pipes
|
||||
|
||||
`up`, or the **Ultimate Plumber**, is a tool for writing Linux pipes in a terminal-based UI interactively, with instant live preview of command results.
|
||||
|
||||
The primary goal of **Ultimate Plumber** is to facilitate interactive and incremental exploration of textual data in Linux. It simplifies the process of building complex pipelines with a fast feedback loop. This is accomplished by enhancing traditional Linux text-processing utilities — such as *grep*, *sort*, *cut*, *paste*, *awk*, *wc*, and *perl* — by offering a quick, interactive, and scrollable preview of their results.
|
||||
|
||||

|
||||
|
||||
To install the Ultimate Plumber on MacOS, we can use brew as follows.
|
||||
|
||||
```
|
||||
~ brew install up
|
||||
```
|
||||
|
||||
Other methods to download and use this tool can be found [here](https://github.com/akavel/up?tab=readme-ov-file#usage).
|
||||
|
||||
## asciinema — Terminal Session Recorder
|
||||
|
||||
The **asciinema** (aka asciinema CLI or asciinema recorder) is a command-line tool for recording terminal sessions.
|
||||
|
||||
Unlike typical *screen* recording software, which records visual output of a screen into a heavyweight video files (`.mp4`, `.mov`), asciinema recorder runs *inside a terminal*, capturing terminal session output into a lightweight recording files in the [asciicast](https://docs.asciinema.org/manual/asciicast/v2/) format (`.cast`).
|
||||
|
||||

|
||||
|
||||
To record a session run this command in your shell:
|
||||
|
||||
```
|
||||
asciinema rec demo.cast
|
||||
```
|
||||
|
||||
The installation guidelines for asciinema can be found [here](https://docs.asciinema.org/manual/cli/installation/).
|
||||
|
||||
## navi — Cheatsheet for Command Line
|
||||
|
||||
[navi](https://github.com/denisidoro/navi) allows you to browse through cheatsheets (that you may write yourself or download from maintainers) and execute commands.
|
||||
|
||||
The great thing is that there are a number of repo for common commands like `git`, `kubectl`, and `docker`. Here are some of the benefits of using this tool ~
|
||||
|
||||
- it will spare you from knowing CLIs by heart
|
||||
- it will spare you from copy-pasting output from intermediate commands
|
||||
- it will make you type less
|
||||
- it will teach you new one-liners
|
||||
|
||||
The recommended way to install navi is using brew.
|
||||
|
||||
```
|
||||
~ brew install navi
|
||||
```
|
||||

|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
title: "I Visited America After 15 Years, Here’s What I Saw"
|
||||
source: "https://medium.com/publishous/i-visited-america-after-15-years-heres-what-i-saw-724548047e57"
|
||||
author:
|
||||
- "[[Niharikaa Kaur Sodhi]]"
|
||||
published: 2024-09-30
|
||||
created: 2024-10-29
|
||||
description: "I visited America after 15 years this summer to spend a few weeks with my family. I enjoyed so much that I extended my stay from 3 to 6 weeks, out of which I didn’t work for four weeks. Perks of…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Six Observations During My Six Weeks in the USA
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@niharikasodhi?source=post_page---byline--724548047e57--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/publishous?source=post_page---byline--724548047e57--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image of the author
|
||||
|
||||
I visited America after 15 years this summer to spend a few weeks with my family. I enjoyed so much that I extended my stay from 3 to 6 weeks, out of which I didn’t work for four weeks. Perks of being a solopreneur, I know.
|
||||
|
||||
My daily routine was walking in the morning, followed by strength training thrice a week or sometimes just a stretch. I’d then cut strawberries, blueberries, and blackberries on my plate and relish them as I sat on the deck outside, viewing trees. These are fruits I don’t get back home, and when I do, they nearly aren’t as good (or affordable). That’s why I relished berries and cherries twice a day.
|
||||
|
||||
I spent my afternoons reading, gossiping with my grandma post lunch and then family time after 5 PM.
|
||||
|
||||
This was my routine when we weren’t travelling or sightseeing. For reference, I was living in Maryland, an hour from Washington, D.C.
|
||||
|
||||
Here are some things that surprised me.
|
||||
|
||||
## Greenery
|
||||
|
||||
There’s *so* much greenery everywhere, even in residential areas. I walked 5–6km every morning and saw wild rabbits and deer peacefully nested in their areas and even crossing the road.
|
||||
|
||||
That’s why I walked for an hour or two every morning, even during a holiday because something about it was so healing. As though nature was rejuvenating me and making me feel alive, happier, content, and grounded. It’s a new experience for me because I don’t walk back home in Delhi, India. Bad weather, pollution, no infrastructure, constant honking, overpopulation and stray animals fill the roads. Going out to walk here is anything but peaceful.
|
||||
|
||||
But my morning walks felt like an entirely different world I wasn’t exposed to. Now I know why people often recommend taking a walk to solve problems, because it works, and because they can.
|
||||
|
||||
## Vastness of… everything
|
||||
|
||||
Sometimes, it’s easy to overlook how I come from a big land that is also filled with a billion more people than America. Here, there was so much area left free. The parking spaces were so vast that I wondered if they were ever full, and how people have the motivation to be here when it’s snowing and they need it’s quite a walk to the store.
|
||||
|
||||
Everything was… big. The stores were so large, and as someone who has mainly traveled across Europe for the past seven years, this was shocking. My eyes couldn’t even see till the end of the store. There were way too many varieties available for everything in the world. I don’t know how people decide here with so much out there.
|
||||
|
||||
Between my mum, grandma, and me, we always shared two mains. There was way too much food. I can’t imagine eating all that. They say that your stomach can [shrink or expand](https://www.healthline.com/health/how-long-does-it-take-for-your-stomach-to-shrink) depending on the portions you eat. I don’t know why anyone would choose to expand it.
|
||||
|
||||
## Infrastructure
|
||||
|
||||
The area I was living in had plenty of playing areas, parks, sports facilities, pools, a library, and more—for barely any cost. My cousin threw his 13th birthday party in the pool in their community, which looked so fun and easy to do. My friends spend at least $1000 for their kids’ parties because showing off and trying to look the best is so prevalent in our society. Such a waste of money, I tell you!
|
||||
|
||||
The last time I ‘borrowed a book’ was in college. So when my cousin took me to the Frederick Public Library, I was in awe! It would be my dream to have such a library close to me! To be able to borrow such a vast amount of books with everything available under one roof. How much I’d want to spend my days there, relaxing and cosying up with a book.
|
||||
|
||||
Of course, I’m jealous of good roads and access to nearly everything one wants.
|
||||
|
||||
## Gaining weight
|
||||
|
||||
After walking 5–6 km a day and strength training for 40 min 3–5 times a week, I still gained weight!!!! I even ate healthy (okay, maybe a bit too much ice cream). I’m now working hard, even two months later, to shed it off.
|
||||
|
||||
I don’t know how this happened, but I’m not happy about it.
|
||||
|
||||
## True marketing
|
||||
|
||||
Whole wheat means whole wheat, healthy means healthy. What you see on the label is in the ingredients. As someone who shops after seeing ingredients for a decade as that’s when I started my fitness journey, this was stress-free for me.
|
||||
|
||||
In my country, ‘whole wheat’ bread has 60% flour. Almond biscuits have 2% almonds and most items marketed to be healthy are filled with sugar. The laws are rather loose and you cannot trust what's written outside.
|
||||
|
||||
In the U.S., I was shocked that right in front of ice cream packets, it was mentioned that artificial flavoring was used. This is terrible for sales, but it’s honest. If something says no preservatives, it doesn’t have them. This makes buying groceries a little less stressful when you aren’t reading labels for everything.
|
||||
|
||||
## Even more \[personal\] space
|
||||
|
||||
Our neighbour had an ambulance and police for half a day. In India, you’d know what happened. But here it’s impolite to ask because you need to give people ‘their space’.
|
||||
|
||||
In India, you would know *everything* about what happened in that house.
|
||||
|
||||
## Lastly
|
||||
|
||||
Since I’m pretty active on the Internet, it’s not uncommon to see Americans cribbing often. I know there’s a lot that's not going well and things that upset them. But they’re… really first-world problems.
|
||||
|
||||
From what I observed, they live a rather safe and secure life. I cannot even go out for a walk here because of the fear of being attacked by a stray dog or harassment (87 rapes/ day were [recorded](https://www.tbsnews.net/world/countries-highest-rape-incidents-144499) in India in 2019), I’m always on guard. In the US going out for a walk or wearing whatever I wanted was so easy. Just wearing what you want feels like a freedom I hadn’t experienced before for such a long period.
|
||||
|
||||
==They have running water, air conditioning, and electricity. I’m from a fairly privileged part of this country, and I can’t ever imagine these luxuries. It’s that far-fetched. What I can only dream of is basic for them.==
|
||||
|
||||
Anyhoo, I’m so glad I went. I’m excited to visit NYC for the first time in November this year because it’s been my dream ever since I started watching English movies!
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
title: "I Will Debate Anyone on the Existence of the Afterlife, And Win"
|
||||
source: "https://medium.com/the-neville-goddard-manifestation-club/i-will-debate-anyone-on-the-existence-of-the-afterlife-and-win-0bbb8207d958"
|
||||
author:
|
||||
- "[[El Creativo]]"
|
||||
published: 2024-10-03
|
||||
created: 2024-10-29
|
||||
description: "I am sick and tired of giving the right of way to people who say “science” shows that there is no afterlife. Which scientific department? Regurgitating stuff you heard from your high school teacher…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Simple facts because I know my stuff
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@emiliencreativo?source=post_page---byline--0bbb8207d958--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/the-neville-goddard-manifestation-club?source=post_page---byline--0bbb8207d958--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image from [www.freepik.com](https://www.freepik.com/free-photo/expressive-bearded-man-pink-tshirt_10961619.htm#fromView=search&page=1&position=6&uuid=af850c28-8849-4282-b735-2f7a14e266ef)
|
||||
|
||||
I am sick and tired of giving the right of way to people who say “science” shows that there is no afterlife.
|
||||
|
||||
Which scientific department? Regurgitating stuff you heard from your high school teacher is not talking science. It’s recalling what your brain thinks was spoken.
|
||||
|
||||
Now, let’s speak facts.
|
||||
|
||||
## Are You Sure You Are Alive?
|
||||
|
||||
How do you know you are alive?
|
||||
|
||||
Is it because an EKG monitor traced your QRS complex? A QRS complex is a cardiologist's indicator of the state of your heart’s rhythm.
|
||||
|
||||
You know because you are aware of being alive as opposed to being dead.
|
||||
|
||||
So, somewhere in your database, you know how to differentiate your state of life from death without the scientific method.
|
||||
|
||||
==When you are dead, you will be aware that you have transitioned from a state called life to a state called death.==
|
||||
|
||||
Simple, is it not?
|
||||
|
||||
## There Won’t Be a Heaven, It Will Be Nothing
|
||||
|
||||
Saying the afterlife state of being is only heaven or hell is like saying the sun rises up and goes down.
|
||||
|
||||
If you haven’t been out in space, your eyes would tell you that the sun is moving around us. But Earth is spinning around itself. The sun doesn’t even do anything; Earth creates its own days and nights.
|
||||
|
||||
The same goes for the afterlife; the realm itself doesn’t change. But the state of the awareness that looks at it changes.
|
||||
|
||||
If your awareness projects the afterlife to be two states, it will remain two states until you change your own perspective on it.
|
||||
|
||||
On the hour of your death, what will end is your tunnel vision on your brain signals. The rest will be the same.
|
||||
|
||||
Instead of beholding reality by excluding everything except what the brain tells you, you will look at everything with no exclusion. Hence, what’s described in near-death experiences as feeling expansion or perceiving everything with all the details.
|
||||
|
||||
## The Brain is Not The Processing Unit
|
||||
|
||||
The brain is a receptive unit, not a processing unit. Your awareness is the one processing it (your brain).
|
||||
|
||||
If you get knocked unconscious and, say, you perceive oblivion. Who saw seeing this oblivion? Since you were “OUT.”
|
||||
|
||||
When your brain stops feeding you data, you process reality data unaltered by your body's senses. It appears to be nothing because you are not identified with anything.
|
||||
|
||||
If you don’t have an identity to help you categorize, everything looks the same. And if everything looks the same, it appears as if you are looking at nothing.
|
||||
|
||||
Put the filter back on, and you see the differentiated states. Then you say,
|
||||
|
||||
“Ohh, now I can see stuff. This means I am alive and real because I have a brain and a body.”
|
||||
|
||||
“Ohh, look at my leg. I can move it. This is the only proof that I exist.”
|
||||
|
||||
“OH my god, thoughts, I can think. Woow, more proof that I am a living being.”
|
||||
|
||||
Meanwhile, forms of life that don’t rely on thoughts and a brain are amazed about how you can easily negate things because they don’t work like you.
|
||||
|
||||
## I AM 100% SURE OF THE AFTERLIFE
|
||||
|
||||
I, El Creativo, am 100% sure of the afterlife because I know the difference between being alive and dying.
|
||||
|
||||
Being aware that my body is off means I will be experiencing the moment after my death. I will be like, “This is my post-death format.”
|
||||
|
||||
I am currently too busy with life; therefore, I will know what to do when that moment comes.
|
||||
|
||||
After-death is an adventure for another now.
|
||||
|
||||
I will debate this with anyone and win. And I will find every possible backdoor in any of the arguments presented to me on this topic.
|
||||
|
||||
Also, writing “bullshit” and hiding behind the general term “science” doesn’t count. Bring me the written word in detail, and let’s f\*\*\*\*\* go.
|
||||
|
||||
## One Last Thing
|
||||
|
||||
Those who say accounts of near-death experiences can’t be valid proof because they are word of mouth.
|
||||
|
||||
Here’s a list of **“**TRUE**”** things that are only word of mouth.
|
||||
|
||||
1. Court testimony
|
||||
2. Most historical accounts on anything past the year 1000 AD
|
||||
3. Tales of battles (ancient kingdoms)
|
||||
4. Your name
|
||||
|
||||
Thank you for reading.
|
||||
|
||||
If you are inspired to, you may buy me a coffee here @ — ▶ My [Ko-fi page](https://ko-fi.com/pause)
|
||||
|
||||
❤️
|
||||
|
||||
You can [subscribe to my list to receive stories](https://emiliencreativo.medium.com/subscribe) in your email when I publish. [***If you are new here, I write about Near-death experiences, metaphysics, and spirituality.***](https://emiliencreativo.medium.com/)
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
---
|
||||
title: "I have Asked This SSH Question in Every AWS Interview — And Here’s the Catch"
|
||||
source: "https://aws.plainenglish.io/i-have-asked-this-ssh-question-in-every-aws-interview-and-heres-the-catch-ee2013a83e99"
|
||||
author:
|
||||
- "[[Rahul Sharma]]"
|
||||
published: 2024-09-16
|
||||
created: 2024-10-29
|
||||
description: "Learn how to troubleshoot SSH issues on AWS EC2 instances. Discover common mistakes and interview insights to ace your next AWS technical interview."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## I have Asked This SSH Question in Every AWS Interview — And Here’s the Catch
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://devopstory.com/?source=post_page---byline--ee2013a83e99--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://aws.plainenglish.io/?source=post_page---byline--ee2013a83e99--------------------------------)
|
||||
|
||||

|
||||
|
||||
Feature Image Created in Canva.
|
||||
|
||||
When I interview people, I always ask questions about problems that people face in the real world.
|
||||
|
||||
“**You are trying to SSH into an EC2 instance but it is failing.**”
|
||||
|
||||
This is one of the questions I ask most often. How would you try to figure out what’s wrong?” It looks like a simple question, but it can tell you a lot about how much someone knows about cloud infrastructure, how they solve problems, and how much experience they have with AWS.
|
||||
|
||||
Over the years, I have had the pleasure of interviewing many AWS engineers and system administrators, and the way they handle this question gives me insight into their level of expertise. In this blog, I will share the best practices for troubleshooting SSH connection issues on AWS EC2 instances, practices I look for in candidate’s answers.
|
||||
|
||||
## Security Groups: A Common Pitfall I Have Seen in Interviews
|
||||
|
||||
In almost every interview where I ask this question, the first thing I expect a candidate to mention is **Security Groups**. Unfortunately, not everyone does. Many candidates immediately dive into complex network configurations or system-level settings, ==forgetting that AWS security groups act as firewalls that control== ==**inbound**== ==and== ==**outbound**== ==traffic.==
|
||||
|
||||
## What I Look For in a Candidate’s Answer:
|
||||
|
||||
The best candidates know that the first thing to check is whether port 22 (SSH) is allowed in the security group associated with the instance. I can usually tell right away if someone is familiar with AWS EC2 by whether they ask, “**Is the security group allowing inbound SSH traffic?**”
|
||||
|
||||
## How to Check Security Group Settings:
|
||||
|
||||
1. **AWS Console** → EC2 → **Instances** → Select your instance.
|
||||
2. **Description Tab** → **Security Groups** → Click to view.
|
||||
3. Ensure inbound rules allow SSH (port 22) from your IP or IP range.
|
||||
|
||||

|
||||
|
||||
Image Showing Security Group Inbound Rule Configuration
|
||||
|
||||
## Key Pair Permissions
|
||||
|
||||
When I ask candidates this question, the ones who have worked with EC2 know that SSH keys are another frequent stumbling block. They will mention that one of the next steps is to verify that the SSH private key file has the correct permissions, a detail that many candidates overlook.
|
||||
|
||||
## What I Look For in a Candidate’s Answer:
|
||||
|
||||
Experienced candidates will bring up the importance of the private key file’s permissions. They will know that if the key file is too permissive, the SSH connection will fail for security reasons. I always listen for them to mention the ***chmod*** command, which shows they have dealt with this issue in the real world.
|
||||
|
||||
## Step-by-Step:
|
||||
|
||||
1. **Command**: *chmod 400 your-key.pem*
|
||||
|
||||
- This ensures the file is readable only by you, which SSH requires.
|
||||
|
||||
2\. **Connect** using the private key
|
||||
|
||||
```
|
||||
ssh -i /path/to/your-key.pem ec2-user@your-ec2-public-ip
|
||||
```
|
||||
|
||||
**Short story:** I remember one candidate who told me a story about how they would spend an hour troubleshooting a connection issue only to realise the permissions on their key file were too broad. It’s these small, easily overlooked steps that separate AWS beginners from those with hands-on experience.
|
||||
|
||||
## Confirm the Instance is Running
|
||||
|
||||
It’s surprising to me that some candidates don’t even think to check to see if the EC2 instance is running. I have asked follow-up questions like, **“What state is the instance in?”** in a few interviews, and the candidate understood that checking the instance status is an important step that is often missed.
|
||||
|
||||
## What I Look For in a Candidate’s Answer:
|
||||
|
||||
Good candidates will mention this fairly early in the process. If the instance is stopped or terminated, no amount of troubleshooting is going to make SSH work.
|
||||
|
||||
## How to Check Instance Status:
|
||||
|
||||
1. In the **AWS Console** → **EC2 Dashboard**, verify that your instance state is “running.”
|
||||
|
||||
- If it’s in a **stopped** state, simply select the instance and click **Start Instance** from the **instance state** options.
|
||||
|
||||
## Network ACLs and Route Tables: Where True Experts Shine
|
||||
|
||||
When a candidate starts talking about **Network ACLs** or **Route Tables**, I know I am dealing with someone who understands AWS networking. This step is where I can separate candidates with surface-level knowledge from those with deeper expertise. Network ACLs and route tables control traffic at the subnet and VPC levels, and misconfigurations here can prevent SSH traffic from reaching your instance.
|
||||
|
||||
## What I Look For in a Candidate’s Answer:
|
||||
|
||||
I pay close attention to whether candidates ask questions about VPC-level settings. Specifically, they should mention that Network ACLs might block SSH traffic or that the route table could be incorrectly routing traffic away from the internet gateway.
|
||||
|
||||
## How to Troubleshoot:
|
||||
|
||||
1. **Network ACLs**: Ensure that both inbound and outbound rules allow traffic on port 22.
|
||||
|
||||
**2\. Route Tables**: Verify that your instance’s subnet is correctly routed to an Internet Gateway for public instances or a NAT Gateway for private instances.
|
||||
|
||||
## Using EC2 Instance Connect: A Lifesaver When All Else Fails
|
||||
|
||||
The candidates who stand out are those who know multiple ways to solve a problem. Some of the best engineers I have interviewed will mention AWS’s **EC2 Instance Connect** as an alternative when SSH troubleshooting fails. This service allows you to connect to your instance directly through the AWS Console, bypassing issues with keys or network settings.
|
||||
|
||||
## What I Look For in a Candidate’s Answer:
|
||||
|
||||
Candidates who mention this as a last resort are typically those who have been in real troubleshooting situations. They know that EC2 Instance Connect can help them access the instance even when everything else seems to go wrong.
|
||||
|
||||
## How to Use EC2 Instance Connect:
|
||||
|
||||
1. Go to **EC2 Console** → **Instances** → Select the instance.
|
||||
2. Click **Connect** and use the **EC2 Instance Connect** option.
|
||||
|
||||

|
||||
|
||||
Image Showing EC2 Connect
|
||||
|
||||
During one interview, a candidate told me how they once used EC2 Instance Connect to recover access to a critical server after accidentally locking themselves out by messing up the security group rules. It’s always a relief to hear when candidates know about this AWS feature and have used it in a crunch.
|
||||
|
||||
## Conclusion
|
||||
|
||||
As an interviewer, I have found that the way candidates approach SSH troubleshooting on AWS EC2 can reveal a lot about their experience and problem-solving abilities. The steps I have outlined here are not just best practices, they are the kind of methods I look for when evaluating candidates. Whether they are checking security groups or diving deep into network settings, the ability to think methodically and work through problems is a key indicator of AWS expertise.
|
||||
|
||||
If you are preparing for an interview or simply brushing up on your AWS skills, keep these steps in mind. And next time someone asks, “What would you do if SSH fails on an [EC2 instance](https://aws.amazon.com/ec2/?p=pm&c=mt&pd=ec2&z=4)?”, you will have the answer ready.
|
||||
@@ -0,0 +1,168 @@
|
||||
---
|
||||
title: "Impressive Open-Source Projects That Only A Few Programmers Know"
|
||||
source: "https://levelup.gitconnected.com/impressive-open-source-projects-that-only-a-few-programmers-know-c0f6b81d15fe"
|
||||
author:
|
||||
- "[[Shalitha Suranga]]"
|
||||
published: 2024-10-22
|
||||
created: 2024-10-29
|
||||
description: "Free and open-source software projects, also known as FOSS projects turn million-dollar-worth innovative ideas into practical software products that anyone can use for free. Unlike budgeted, massive…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Priceless open-source innovations that impress any programmer
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://shalithasuranga.medium.com/?source=post_page---byline--c0f6b81d15fe--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://levelup.gitconnected.com/?source=post_page---byline--c0f6b81d15fe--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Kari Shea](https://unsplash.com/@karishea?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/macbook-pro-on-top-of-brown-table-1SAnrIxw5OY?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash), edited with Canva
|
||||
|
||||
Free and open-source software projects, also known as FOSS projects turn million-dollar-worth innovative ideas into practical software products that anyone can use for free. Unlike budgeted, massive proprietary software owned by commercial organizations, open-source software usually gets started by one enthusiastic programmer or a small developer group with non-profit goals. Once the specific open-source product becomes popular, experienced technical users contribute to the project to further improve it.
|
||||
|
||||
Experienced programmers typically build and maintain open-source desktop, mobile, CLI apps, and various software libraries or developer tools that other programmers can use for free even to develop commercial software projects. In some scenarios, programmers release their existing closed-source software projects or a usable part of a specific proprietary project to the open-source community.
|
||||
|
||||
We all know popular open-source projects like Linux, React, Apache HTTP server, Git, Node, etc., but there are more remarkable open-source projects that only a few programmers know. This article will explore several innovative open-source projects built upon impressive, priceless technical ideas.
|
||||
|
||||
## Pyodide — Running Python on the Browser via WebAssembly
|
||||
|
||||
What if you are given a task to develop a web-based Python REPL or Python editor that can execute Python code? Most developers will plan to run the official Python interpreter on a server and implement a communication line with the web app frontend using HTTP or WebSockets.
|
||||
|
||||
The innovative [Pyodide](https://github.com/pyodide/pyodide) open-source project ports the official Python implementation (also known as CPython) into WebAssembly using the Emscripten compiler to let developers execute Python directly on the web browser:
|
||||
|
||||

|
||||
|
||||
Using the [online Pyodide REPL](https://pyodide.org/en/stable/console.html) on Google Chrome, a screen recording by the author
|
||||
|
||||
Pyodide lets developers download Python modules to the browser using the Python-based micropip package manager.
|
||||
|
||||
Installing Pyodide is so simple as it comes as a simple JavaScript library. Here is how you can use Pyodide in a plain HTML project:
|
||||
|
||||
```
|
||||
<script src="https://cdn.jsdelivr.net/pyodide/v0.26.2/full/pyodide.js"></script><script> async function main() { let pyodide = await loadPyodide(); console.log(pyodide.runPython(\` import math math.sqrt(20.1) \`)); // 4.483... }; main();</script>
|
||||
```
|
||||
|
||||
You can also install Pyodide into your favorite frontend library-based projects by installing the `[pyodide](https://www.npmjs.com/package/pyodide)` NPM package.
|
||||
|
||||
## Lite-XL — A Native, High-Performance, and Minimal Alternative to VSCode
|
||||
|
||||
Most developers nowadays use the popular Visual Studio Code (VSCode) editor to work with various software codebases. Because of productivity-focused features and the massive extension ecosystem, VSCode has become the most recommended code editor in the modern software industry.
|
||||
|
||||
However, VSCode has [hidden performance issues](https://levelup.gitconnected.com/native-apps-are-dead-189a4b9459e9) since it’s a hybrid desktop app that runs on the popular Electron framework. VSCode doesn’t render native UI elements and it uses typical DOM elements even to render thousands of source code segments, as shown in the following preview:
|
||||
|
||||

|
||||
|
||||
VSCode implements the syntax-highlighting feature with traditional DOM elements, a screen recording by the author
|
||||
|
||||
The [Lite-XL](https://github.com/lite-xl/lite-xl) editor is a minimal, cross-platform code editor program that offers most VSCode features. Lite-XL is written using Lua and C. It renders graphical elements natively using the SDL2 low-level multimedia library and embeds the minimal Lua language to implement code editor features:
|
||||
|
||||

|
||||
|
||||
Lua-based initialization script in the Lite-XL project, a screenshot by the author
|
||||
|
||||
Lite-XL follows an impressive architectural pattern by separating code editor features into several Lua-based plugins with a self-explanatory internal API. Lite-XL is built as an extensible code editor that programmers can use to build their own code editor version by writing or modifying plugins or updating the editor core.
|
||||
|
||||
Lite-XL is a fork of the Lite open-source code editor. The following story explains further about the Lite code editor project:
|
||||
|
||||
## Serenity OS — A Fully-Featured Operating System Developed from Scratch
|
||||
|
||||
Ask your co-worker to build a POSIX-compatible, GUI operating system from scratch without using any code dependency and copying code from other open-source projects. The typical response is that developing an operating system from scratch alone is hard. We’ll have to write kernel modules, device drivers, file systems, network layers, libraries, process runners, and inbuilt applications ourselves. But, nothing is impossible — any motivated programmer can build a fully-featured, complete operating system.
|
||||
|
||||
[Serenity OS](https://github.com/SerenityOS/serenity) is a complete GUI operating system written in C++ maintaining good POSIX compliance. The importance of this operating system is that every component in the codebase is written from scratch and initiated by only one programmer (now there are more project contributors on GitHub).
|
||||
|
||||
This operating system implements a Windows 95-like GUI and offers several pre-included general-purpose software like a web browser, terminal, text editor, and calculator:
|
||||
|
||||

|
||||
|
||||
A screenshot of Serenity OS, image taken from the GitHub repository licensed under the BSD 2-clause license
|
||||
|
||||
Serenity OS also implements a pre-included IDE called Hack Studio and includes ports for popular software and developer tools like GNU C compiler, Bash, etc.
|
||||
|
||||
## Ladybird — a Truly Independent Modern Web Browser
|
||||
|
||||
Google and Mozilla dominate the current web browser market since they maintain the Chromium and Firefox web browsers respectively. Due to the popularity within the open-source ecosystem and easy embedding capabilities, companies started building their own custom web browsers using Google Chromium open-source browser. For example, Microsoft Edge and Opera started using Chromium browser engine components.
|
||||
|
||||
Chromium is not a project that started from scratch, it uses a fork (called Blink) of the WebKit web browser engine which was originally a part of the KDE project:
|
||||
|
||||

|
||||
|
||||
KDE and Apple (WebKit) copyright details in the Blink engine license headers, a screenshot by the author
|
||||
|
||||
What if there is a fully-featured, modern web browser that is built from scratch by a non-profit organization? Users won’t be motivated to use company-specific services and won’t be a part of a massive monetization process — the user will be able to surf the web with freedom!
|
||||
|
||||
[Ladybird](https://github.com/LadybirdBrowser/ladybird) is a fully-featured, modern web browser backed by a non-profit organization. Ladybird uses C++ as the implementation language and doesn’t borrow a single code line from other web browser projects.
|
||||
|
||||
This project was originally initiated from the Serenity OS’s web browser. The Ladybird project is still under development and is planned to be released in 2026 for the general public as a competitive Chrome-Firefox alternative.
|
||||
|
||||
## Temple OS — A Minimal Operating System Developed by One Programmer
|
||||
|
||||
Software development is typically a collaborative process where more than one programmer contributes to a codebase for building a software system. However, some enthusiastic programmers love to work alone even if they are building something complex.
|
||||
|
||||
[Temple OS](https://github.com/cia-foundation/TempleOS) is a 64-bit minimal GUI operating system that renders graphics via a 16-color low-resolution viewport. According to [Wikipedia](https://en.wikipedia.org/wiki/TempleOS), The sole author of the Temple OS project wrote more than 100000 LOC (Lines of Code) alone to finalize the project. This project is written in HolyC, a C/C++-like programming language that generates x64 Assembly:
|
||||
|
||||

|
||||
|
||||
Temple OS logo, a screenshot of the official project website
|
||||
|
||||
Temple OS offers several general-purpose apps and many games. It’s not a highly usable, general-purpose, fully-featured operating system, but it’s undoubtedly a good motivation for all solo open-source programmers to never give up their dreams!:
|
||||
|
||||

|
||||
|
||||
A part of the bootstrapped HolyC compiler source, a screenshot by the author
|
||||
|
||||
The Temple OS project is not maintained now and is considered finished since the original author isn’t alive. However, the [ZealOS](https://github.com/Zeal-Operating-System/ZealOS) project is an active codebase fork that offers a modernized version of Temple OS.
|
||||
|
||||
## QuickJs — A Lightweight, Embeddable JavaScript Engine Written in C
|
||||
|
||||
I found the [QuickJs](https://github.com/bellard/quickjs) project while searching the longest C source file. I thought the GNU C compiler parser module was the longest C source file ever created (27430 LOC), but the QuickJS engine's primary source file has 55980 LOC:
|
||||
|
||||

|
||||
|
||||
The [quickjs.c](https://github.com/bellard/quickjs/blob/master/quickjs.c) source file has 55980 LOC, a screenshot by the author
|
||||
|
||||
QuickJs project implements a modern ECMAScript-compatible, embeddable, lightweight JavaScript engine for embedded system programmers. QuickJs supports modern JavaScript, but has no external dependencies and increases your embedded system bundle by only 210 KiB.
|
||||
|
||||
The popular Google V8 JavaScript engine isn’t suitable for embedded programming since it weighs megabytes because of JIT-like performance enhancements. QuickJs doesn’t implement JIT but runs JavaScript with only kilobyte-sized compiled code size.
|
||||
|
||||
## Lua — the Easiest General-Purpose Programming Language Ever Created
|
||||
|
||||
Most programmers think that Python is the easiest general-purpose programming language. Lua is not as popular as Python in the modern developer community, but it’s undoubtedly easier to learn and use than Python for any general-purpose programming requirement. Lua implements a minimal, productive general-purpose programming language with 22 keywords, 8 data types, and only one data structure.
|
||||
|
||||
[Lua](https://github.com/lua/lua) is a minimal language, but it offers a fully-featured standard library, a module system, and multi-paradigm programming. Look at the following simple [Git](https://levelup.gitconnected.com/git-commands-and-features-that-every-developer-should-know-a0abeec28cd2) Hook implemented in Lua:
|
||||
|
||||
```
|
||||
#!/usr/bin/env lualocal commit_msg_file = arg[1]local msg = io.open(commit_msg_file):read()if msg:find("^#%d+: .") == nil then print("commit-msg: Incorrect commit message format.") os.exit(1)end
|
||||
```
|
||||
|
||||
Lua is written in C without extra dependencies and weighs about ~200 KB when compiled, so embedding Lua for embedded system projects is easy.
|
||||
|
||||
Lua is designed as an extensible, minimal language and released under the MIT open-source license, so anyone can create custom programming languages by modifying the Lua language grammar and features.
|
||||
|
||||
For, example, the Roblox game development team created the [Luau](https://github.com/luau-lang/luau) language by improving performance factors and language syntax.
|
||||
|
||||
The following story explores the impressive Lua language features that you should know:
|
||||
|
||||
## FabricJs — A Library to Turn the HTML Canvas into an Interactive Graphics Editor
|
||||
|
||||
The modern web API specification often strives to offer standard, inbuilt APIs to let web developers write fast websites without using third-party dependencies. The standard HTML canvas API lets developers draw high-performance, dynamic, interactive 2D graphic elements on the web surface without using traditional DOM elements.
|
||||
|
||||
However, the standard canvas API is a low-level API, so web developers should write extra code for interactive graphic objects to build graphic editors, photo editors, painting programs, and other interactive graphics processing software.
|
||||
|
||||
The [FabricJs](https://github.com/fabricjs/fabric.js) open-source project implements a high-level library for HTML canvas API with pre-developed features like freehand drawing, painting brushes, shape objects, and image filters. FabricJs adds interactive features for each graphical object on the HTML canvas so, we can use it to build any web-based graphics editing software with less code.
|
||||
|
||||
Look at the following web-based simple photo editing app created with FabricJs and React:
|
||||
|
||||

|
||||
|
||||
A simple photo editing app developed using FabricJs and React, a screen recording by the author
|
||||
|
||||
You can even use FabricJs to build an Adobe Photoshop or CorelDraw alternative!
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "Introduction to Bases"
|
||||
source: "https://help.obsidian.md/bases"
|
||||
author:
|
||||
- "[[Obsidian Help]]"
|
||||
published:
|
||||
created: 2025-08-29
|
||||
description: "Introduction to Bases - Obsidian Help"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[Obsidian Help](https://help.obsidian.md/Home)
|
||||
|
||||
Bases is a [core plugin](https://help.obsidian.md/plugins) that lets you create database-like views of your notes. Using a base you can view, edit, sort, and filter files and their [properties](https://help.obsidian.md/properties). Bases can help you organize everything from projects to travel plans, reading lists, and more.
|
||||
|
||||
Each base can have several [views](https://help.obsidian.md/bases/views) with different layouts such as tables and cards. Below is an example of table view where each row is a file, and each column is a property of that file.
|
||||
|
||||

|
||||
|
||||
Example of a base showing a table view with a list of books
|
||||
|
||||
All the data in Obsidian Bases is stored in your local [Markdown](https://help.obsidian.md/syntax) files and their [properties](https://help.obsidian.md/properties). The views are described by the [Bases syntax](https://help.obsidian.md/bases/syntax), which can be saved as a `.base` file or [embedded](https://help.obsidian.md/bases/create-base#Embed%20a%20base) in code blocks within your Markdown files.
|
||||
|
||||
## How to use bases
|
||||
|
||||
- [Create a base](https://help.obsidian.md/bases/create-base)
|
||||
- Learn how to create and embed a base.
|
||||
- [Views](https://help.obsidian.md/bases/views)
|
||||
- Explore filters, properties, and layouts.
|
||||
- [Functions](https://help.obsidian.md/bases/functions)
|
||||
- Functions you can use in formulas and filters.
|
||||
- [Bases syntax](https://help.obsidian.md/bases/syntax)
|
||||
- How base files are formatted.
|
||||
|
||||
Introduction to Bases
|
||||
|
||||
Interactive graph
|
||||
|
||||
How to use bases
|
||||
@@ -0,0 +1,132 @@
|
||||
---
|
||||
title: "Java : Must Know Functional Programming Features"
|
||||
source: "https://skilledcoder.medium.com/java-must-know-functional-programming-features-088980534cb4"
|
||||
author:
|
||||
- "[[Skilled Coder]]"
|
||||
published: 2024-09-13
|
||||
created: 2024-10-29
|
||||
description: "Functional programming brings clarity and efficiency to Java applications. In this guide, we’ll explore ten strong functional programming features available in Java, explained in simple language with…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Ways to Make Java Functionally Fun
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://skilledcoder.medium.com/?source=post_page---byline--088980534cb4--------------------------------)
|
||||
|
||||

|
||||
|
||||
Functional programming brings clarity and efficiency to Java applications. In this guide, we’ll explore ten strong functional programming features available in Java, explained in simple language with practical code examples to help you improve your coding skills.
|
||||
|
||||
## **Lambda Expressions**
|
||||
|
||||
Lambda expressions enable you to treat functionality as method arguments or code as data. They provide a clear and concise way to implement single-method interfaces (functional interfaces) using an expression.
|
||||
|
||||
```
|
||||
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");names.forEach(name -> System.out.println(name));
|
||||
```
|
||||
|
||||
The lambda expression `name -> System.out.println(name)` passes each element of the list `names` to the `println`method.
|
||||
|
||||
## **Functional Interfaces**
|
||||
|
||||
A functional interface is an interface that contains exactly one abstract method. They can be implemented using lambda expressions, method references, or anonymous classes.
|
||||
|
||||
```
|
||||
@FunctionalInterfaceinterface Greeting { void sayHello(String name);}public class FunctionalInterfaceExample { public static void main(String[] args) { Greeting greeting = (name) -> System.out.println("Hello, " + name); greeting.sayHello("World"); }}
|
||||
```
|
||||
|
||||
The `Greeting` interface is a functional interface. We implement it using a lambda expression.
|
||||
|
||||
## **Stream API**
|
||||
|
||||
The Stream API provides a functional approach to processing sequences of elements. It supports operations like `map`, `filter`, `reduce`, `collect`, and allows for parallel execution.
|
||||
|
||||
```
|
||||
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList());System.out.println(squares);
|
||||
```
|
||||
|
||||
We use `map` to apply a function to each element and `collect` to gather the results into a list.
|
||||
|
||||
## **Method References**
|
||||
|
||||
Method references provide a way to refer to methods without invoking them. They can be used in place of lambda expressions.
|
||||
|
||||
```
|
||||
List<String> messages = Arrays.asList("Hello", "Functional", "Programming");messages.forEach(System.out::println);
|
||||
```
|
||||
|
||||
`System.out::println` is a method reference to the `println` method, used here as a consumer in `forEach`.
|
||||
|
||||
## **Optional Class**
|
||||
|
||||
`Optional` is a container object used to contain not-null objects. It helps in avoiding `NullPointerException` and provides methods for functional-style operations.
|
||||
|
||||
```
|
||||
Optional<String> optionalName = Optional.ofNullable(getName());optionalName.ifPresent(name -> System.out.println("Name is: " + name));
|
||||
```
|
||||
|
||||
`ifPresent` takes a consumer that is executed if the value is present.
|
||||
|
||||
## **Higher-Order Functions**
|
||||
|
||||
Functions that take other functions as arguments or return functions are called higher-order functions.
|
||||
|
||||
```
|
||||
public static void main(String[] args) { Function<Integer, Integer> multiplyByTwo = createMultiplier(2); System.out.println(multiplyByTwo.apply(5)); }public static Function<Integer, Integer> createMultiplier(int factor) { return x -> x * factor;}
|
||||
```
|
||||
|
||||
`createMultiplier` returns a function that multiplies its input by a given factor.
|
||||
|
||||
## **Functional Composition**
|
||||
|
||||
Functional composition involves combining functions to build more complex functions.
|
||||
|
||||
```
|
||||
Function<Integer, Integer> multiplyByTwo = x -> x * 2;Function<Integer, Integer> addThree = x -> x + 3;Function<Integer, Integer> composedFunction = multiplyByTwo.andThen(addThree);System.out.println(composedFunction.apply(5)); // Output: 13
|
||||
```
|
||||
|
||||
`andThen` composes two functions; it first applies `multiplyByTwo` and then `addThree`.
|
||||
|
||||
## **Currying and Partial Application**
|
||||
|
||||
Currying transforms a function with multiple arguments into a sequence of functions each with a single argument. While Java doesn’t natively support currying, it can be simulated.
|
||||
|
||||
```
|
||||
public static void main(String[] args) { Function<Integer, Function<Integer, Integer>> add = x -> y -> x + y; Function<Integer, Integer> addFive = add.apply(5); System.out.println(addFive.apply(10)); }
|
||||
```
|
||||
|
||||
`add` is a curried function that returns a function when applied with an argument.
|
||||
|
||||
## **Lazy Evaluation with Suppliers**
|
||||
|
||||
Lazy evaluation delays the computation until the value is needed. In Java, this can be achieved using `Supplier`.
|
||||
|
||||
```
|
||||
public static void main(String[] args) { Supplier<Double> lazyValue = () -> computeValue(); System.out.println(lazyValue.get()); }public static double computeValue() { System.out.println("Computing..."); return Math.random();}
|
||||
```
|
||||
|
||||
The `computeValue` method is not called until `lazyValue.get()` is invoked.
|
||||
|
||||
## **Immutable Data Structures**
|
||||
|
||||
Java provides unmodifiable collections that help in writing functional programs by ensuring data immutability.
|
||||
|
||||
```
|
||||
List<String> list = List.of("A", "B", "C"); list.add("D");
|
||||
```
|
||||
|
||||
`List.of` creates an immutable list; attempting to modify it results in an exception.
|
||||
|
||||
These features illustrate how Java incorporates functional programming concepts. You can write Java programs that benefit from the advantages of functional programming, such as improved modularity, easier concurrency, and reduced side effects.
|
||||
|
||||
On my [**Twitter**](https://twitter.com/theskilledcoder) and [**Instagram**](https://www.instagram.com/theskilledcoder) accounts, I frequently share my programming journey and development experiences.
|
||||
|
||||
Follow and subscribe to emails for unique coding articles.
|
||||
|
||||
Keep exploring, keep learning, and keep coding!
|
||||
|
||||
Thanks for reading :)
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: "Java: Because I eliminated all the “if (object == null)” in the project, my boss rewarded me with…"
|
||||
source: "https://levelup.gitconnected.com/java-because-i-eliminated-all-the-if-object-null-in-the-project-my-boss-rewarded-me-with-29b316c32329"
|
||||
author:
|
||||
- "[[Dylan Smith]]"
|
||||
published: 2024-08-23
|
||||
created: 2024-10-29
|
||||
description: "In this article, I will introduce how to combine lambda expressions with Optional to make Java judge whether an object is null more elegantly."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
Recently, a friend of mine joined a new company. Since there was a lot of code in the project that directly judged whether an object is null. So my friend optimized it by using Optional and was praised by the boss.
|
||||
|
||||
Now let’s introduce it in detail.
|
||||
|
||||
In the previous article we have introduced [Lambda expression in java](https://medium.com/@junfeng0828/lambda-expression-in-java-439268b0ab97). In this article, I will introduce how to combine Lambda expression and Optional make Java handle null more gracefully.
|
||||
|
||||
Suppose we have a student object,and an Optional wrapper for the student object:
|
||||
|
||||
```
|
||||
public class OptionalTest { public static void main(String[] args) { Student student = new Student("Bob", 18); Optional<Student> studentOpt = Optional.ofNullable(student); } @Getter @AllArgsConstructor public static class Student { private String name; private Integer age; }}
|
||||
```
|
||||
|
||||
Optional cannot make the original cumbersome null check simpler if it is not used in conjunction with Lambda,such as
|
||||
|
||||
```
|
||||
if (student == null) { return UNKNOWN_STUDENT;} else { return student;}if (!studentOpt.isPresent()) { return UNKNOWN_STUDENT;} else { return studentOpt.get();}
|
||||
```
|
||||
|
||||
Only when Optional is used in combination with Lambda can its true power be exerted!
|
||||
|
||||
Let’s now compare the following four common null handling differences between Java8’s Lambda + Optional and traditional Java.
|
||||
|
||||
**Situation 1 — Start if it exists**
|
||||
|
||||
```
|
||||
if (student != null) { System.out.println(student);}studentOpt.ifPresent(System.out::println);
|
||||
```
|
||||
|
||||
**Case 2 — Return if it exists, if not return fart or throw exception**
|
||||
|
||||
```
|
||||
if (student == null) { return UNKNOWN_STUDENT; } else { return student;}return studentOpt.orElse(UNKNOWN_STUDENT);return studentOpt.orElseThrow(RuntimeException::new);
|
||||
```
|
||||
|
||||
**Case 3 — If it exists, it is returned. If not, it is generated by the function**
|
||||
|
||||
```
|
||||
if (student == null) { return UNKNOWN_STUDENT;} else { return generateWithFunction();}return studentOpt.orElseGet(() -> generateWithFunction());
|
||||
```
|
||||
|
||||
**Case 4 — Continuous null checks**
|
||||
|
||||
```
|
||||
public class OptionalCase { public static void main(String[] args) { Student student = new Student("Bob", 18, new Street("Main Street", new City("Los Angeles", new State("CA")))); System.out.println(getStateFromJava7(student)); System.out.println(getStateFromJava8(student)); } private static String getStateFromJava7(Student student) { if (student != null) { Street street = student.getAddress(); if (street != null) { City city = street.getCity(); if (city != null) { State state = city.getState(); if (state != null) { String stateName = state.getName(); if (stateName != null) { return stateName; } return "unknown"; } return "unknown"; } return "unknown"; } return "unknown"; } return "unknown"; } private static String getStateFromJava8(Student student) { Optional<Student> studentOpt = Optional.ofNullable(student); return studentOpt .map(Student::getAddress) .map(Street::getCity) .map(City::getState) .map(State::getName) .orElse("unknown"); } @Getter @AllArgsConstructor static class Student { private String name; private Integer age; private Street address; } @Getter @AllArgsConstructor static class Street { private String name; private City city; } @Getter @AllArgsConstructor static class City { private String name; private State state; } @Getter @AllArgsConstructor static class State { private String name; }}
|
||||
```
|
||||
|
||||
It can be clearly seen from the above four situations that Optional + Lambda allows us to write a lot less ifElse blocks. Especially for situation 4, the traditional Java writing method seems lengthy and difficult to understand, while **Optional+Lambda** is refreshing, clear and concise.
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
title: "Java: Because of a Question About try-catch, I Failed My Interview…"
|
||||
source: "https://medium.com/javarevisited/java-because-i-didnt-know-whether-the-try-catch-block-should-be-placed-outside-or-inside-the-for-50de407dcf63"
|
||||
author:
|
||||
- "[[Dylan Smith]]"
|
||||
published: 2024-09-09
|
||||
created: 2024-10-29
|
||||
description: "Today, let’s talk about a relatively light topic. A friend was reprimanded by an interviewer some time ago. Because when my friend was preparing for the interview, he was preparing some relatively…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
Today, let’s talk about a relatively light topic. A friend was reprimanded by an interviewer some time ago. Because when my friend was preparing for the interview, he was preparing some relatively complex system interview questions and principle questions. As a result, the interviewer suddenly came up with a simple question:
|
||||
|
||||
> ***Should try-catch be written inside or outside the for loop? And state your reasons.***
|
||||
|
||||
For a moment, my friend didn’t know what this question was asking, so he casually answered that he habitually placed it outside the for loop because it looked more beautiful.
|
||||
|
||||
But this left a bad impression on the interviewer and also laid the groundwork for the subsequent interview failure…😔
|
||||
|
||||

|
||||
|
||||
Photo by [Walls.io](https://unsplash.com/@walls_io?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
In fact, the answer to this question is not that it is always better to put it inside or outside, or that it is bad. This needs to be answered in combination with specific usage scenarios.
|
||||
|
||||
## 1\. Usage Scenarios
|
||||
|
||||
Since putting try-catch outside or inside the for loop has different effects if an exception occurs.
|
||||
|
||||
So it needs to be considered in combination with specific business scenarios.
|
||||
|
||||
## ① Putting try-catch outside the for loop
|
||||
|
||||
Code example:
|
||||
|
||||
```
|
||||
public static void outside() { try { for (int count = 1; count <= 4; count++) { if (count == 3) { int num = count / 0; } else { System.out.println("success, count:" + count); } } } catch (Exception e) { System.out.println("An exception occurs."); } }
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```
|
||||
success, count:1success, count:2An exception occurs.
|
||||
```
|
||||
|
||||
Obviously, when try-catch is placed outside the for loop, if an exception occurs during the for loop, then the for loop will be terminated.
|
||||
|
||||
## ② Putting try-catch inside the for loop
|
||||
|
||||
Code example:
|
||||
|
||||
```
|
||||
public static void tryInside() { for (int count = 1; count <= 4; count++) { try { if (count == 3) { int num = count / 0; } else { System.out.println("success, count:" + count); } } catch (Exception e) { System.out.println("An exception occurs."); } } }
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```
|
||||
success, count:1success, count:2An exception occurs.success, count:4
|
||||
```
|
||||
|
||||
When try-catch is inside the for loop, if an exception occurs during the for loop, the exception is caught by catch and does not affect the continuation of the for loop.
|
||||
|
||||
If…during an interview, if you really didn’t even get the usage effects of being outside or inside as mentioned above correct, then, really, you can wait for notification.
|
||||
|
||||
Next, let’s discuss the differences in performance.
|
||||
|
||||
## 2\. Performance
|
||||
|
||||
In terms of time, there is actually no difference.
|
||||
|
||||
In terms of memory usage, if there is no exception, there is also no difference.
|
||||
|
||||
But if an exception occurs, then pay attention.
|
||||
|
||||
What needs to be paid attention to? Look at the following code:
|
||||
|
||||
```
|
||||
public class TryCatchDemo { public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); long startMemory = runtime.totalMemory() - runtime.freeMemory(); for (int i = 0; i < 100000; i++) { try { if (i > 2) { int num = i / 0; } else { System.out.println("success, i:" + i); } } catch (Exception e) { System.out.println("An exception occurs."); } } long endMemory = runtime.totalMemory() - runtime.freeMemory(); long memoryUsed = endMemory - startMemory; System.out.println("memoryUsed: " + memoryUsed + " byte"); }}
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||

|
||||
|
||||
As can be seen, when try-catch is placed inside the for loop, since an exception does not terminate the for loop. So if there is really a scenario where a large number of business processes will all have exceptions, it will consume a lot of memory in a short time.
|
||||
|
||||
If there are not many code errors, there is almost no difference between putting try-catch inside and outside the for loop.
|
||||
|
||||
**Finally, I want to say that interview preparation must not ignore basic knowledge. Only by laying a solid foundation can one handle more complex and profound problems with ease.**
|
||||
|
||||
The above is all the content shared this time! **If the article was helpful, please clap 👏and follow, thank you! ╰(\*°▽°\*)╯\***\*
|
||||
|
||||
**I’m Dylan, looking forward to progressing with you. ❤️**
|
||||
|
||||
Recommend reading.
|
||||
|
||||

|
||||
|
||||
## Java Interview and Usage Skills.
|
||||
|
||||

|
||||
|
||||
## Mastering Redis And Cache
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
title: "Java Thread Performance Boost in Java 21: Virtual Threads"
|
||||
source: "https://medium.com/@lbq999/java-thread-performance-boost-in-java-21-virtual-threads-aa3bf8304539"
|
||||
author:
|
||||
- "[[Boqiang & Henry]]"
|
||||
published: 2024-10-02
|
||||
created: 2024-10-29
|
||||
description: "With the release of Java 21, the virtual threads introduced under Project Loom represent a breakthrough in Java thread performance. These lightweight threads offer a huge boost in scalability, making…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@lbq999?source=post_page---byline--aa3bf8304539--------------------------------)
|
||||
|
||||
## Introduction
|
||||
|
||||
With the release of **Java 21**, the **virtual threads** introduced under **Project Loom** represent a breakthrough in **Java thread performance**. These lightweight threads offer a huge boost in scalability, making it possible to manage vast numbers of concurrent tasks efficiently. But what’s the magic behind this performance leap? The key lies in **continuations** — a powerful mechanism that allows threads to pause execution and resume later, enabling efficient thread management without blocking system resources.
|
||||
|
||||
This article explores how virtual threads, powered by continuations, deliver a dramatic performance improvement in Java 21. We’ll also dive into how virtual threads are implemented using Java’s **Continuation API** and show how this API helps achieve such high levels of concurrency and scalability.
|
||||
|
||||

|
||||
|
||||
## Overview of Virtual Threads
|
||||
|
||||
## What Are Virtual Threads?
|
||||
|
||||
Virtual threads are a new type of thread introduced in **Java 21**, designed to be lightweight and efficient. Unlike traditional **platform threads**, which are mapped one-to-one to operating system threads, virtual threads are **user-mode threads** managed by the **Java Virtual Machine (JVM)**. This design allows for the creation of millions of threads with minimal resource overhead.
|
||||
|
||||
The **virtual thread scheduler** dynamically **mounts** virtual threads onto platform threads only when CPU resources are needed. When a virtual thread is waiting (e.g., during I/O operations), it is **unmounted** from the platform thread, freeing up resources to run other tasks. This mechanism ensures that CPU resources are utilized more efficiently and threads are not blocked unnecessarily.
|
||||
|
||||
## Key Characteristics of Virtual Threads
|
||||
|
||||
1. **Lightweight Threads:** Virtual threads consume significantly less memory and can be created in large numbers.
|
||||
2. **No Thread Pooling:** Since virtual threads are inexpensive to create and discard, there’s no need for pooling.
|
||||
3. **High Scalability:** Millions of virtual threads can exist simultaneously without overwhelming system resources.
|
||||
4. **Efficient CPU Usage:** By pausing execution during blocking operations, virtual threads free up CPU resources for other tasks.
|
||||
|
||||
## Continuations: The Key to Virtual Thread Performance
|
||||
|
||||
## What Are Continuations?
|
||||
|
||||
**Continuations** are the core mechanism that makes virtual threads so efficient. They enable a program’s execution to **pause** and **resume**, essentially storing the current state of the program. In the context of virtual threads, continuations allow a thread to pause its execution (for example, when it’s waiting for I/O) and later resume where it left off without blocking the underlying platform thread.
|
||||
|
||||
## How Continuations Work
|
||||
|
||||
A continuation captures a snapshot of a program’s current execution state. When the thread needs to wait (e.g., for an I/O operation), the continuation **pauses** the thread and stores its state. Once the blocking operation completes, the continuation **resumes** the thread’s execution, effectively allowing the JVM to manage many threads without blocking critical system resources.
|
||||
|
||||
In Java, the **Continuation API** is used to create and manage continuations. While this API is primarily for internal use within the JVM, understanding how it works is key to grasping how virtual threads deliver such high concurrency.
|
||||
|
||||
## Full Code Implementation
|
||||
|
||||
## Virtual Thread Class
|
||||
|
||||
The virtual thread is implemented using a **Continuation**, which allows the thread to pause and resume its execution. This class also assigns an ID to each virtual thread for identification.
|
||||
|
||||
```
|
||||
import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;public class VirtualThread { private final Continuation continuation; private static final ContinuationScope SCOPE = new ContinuationScope("VirtualThreadScope"); private final int id; private static final AtomicInteger counter = new AtomicInteger(1); public VirtualThread(Runnable task) { this.id = counter.getAndIncrement(); this.continuation = new Continuation(SCOPE, task); } public void run() { System.out.printf("Virtual thread %d is running on platform thread %s%n", id, Thread.currentThread().getName()); continuation.run(); } public boolean isDone() { return continuation.isDone(); }}
|
||||
```
|
||||
|
||||
## Virtual Thread Scheduler
|
||||
|
||||
The virtual thread scheduler manages a queue of virtual threads and assigns them to available platform threads for execution.
|
||||
|
||||
```
|
||||
public class VirtualThreadScheduler { private final Queue<VirtualThread> queue = new ConcurrentLinkedQueue<>(); private final ExecutorService executor = Executors.newFixedThreadPool(3); public void start() { new Thread(() -> { while (true) { VirtualThread vt = queue.poll(); if (vt != null) { executor.submit(vt::run); } } }).start(); } public void schedule(VirtualThread vt) { queue.offer(vt); }}
|
||||
```
|
||||
|
||||
## Simulating Blocking Operations
|
||||
|
||||
In the `WaitingOperation` class, a simulated blocking operation is performed. During the operation, the virtual thread pauses using `Continuation.yield()` and resumes after the operation completes.
|
||||
|
||||
```
|
||||
import java.util.Timer;import java.util.TimerTask;public class WaitingOperation { public static void perform(String operation, int seconds) { System.out.printf("Waiting for %s for %d seconds%n", operation, seconds); Continuation.yield(VirtualThread.SCOPE); new Timer().schedule(new TimerTask() { @Override public void run() { Demo.scheduler.schedule(VirtualThread.current()); } }, seconds * 1000L); }}
|
||||
```
|
||||
|
||||
## Main Program (Demo)
|
||||
|
||||
The `Demo` class demonstrates how to create and schedule multiple virtual threads. Each virtual thread simulates waiting for a resource (e.g., network or database) and resumes execution afterward.
|
||||
|
||||
```
|
||||
public class Demo { public static final VirtualThreadScheduler scheduler = new VirtualThreadScheduler(); public static void main(String[] args) { scheduler.start(); VirtualThread vt1 = new VirtualThread(() -> { System.out.println("1.1"); WaitingOperation.perform("Network", 2); System.out.println("1.2"); System.out.println("1.3"); System.out.println("1.4"); }); VirtualThread vt2 = new VirtualThread(() -> { System.out.println("2.1"); WaitingOperation.perform("Database", 5); System.out.println("2.2"); System.out.println("2.3"); System.out.println("2.4"); }); scheduler.schedule(vt1); scheduler.schedule(vt2); }}
|
||||
```
|
||||
|
||||
## Output Example
|
||||
|
||||
When executed, the virtual threads are scheduled on platform threads, perform their tasks, and simulate blocking operations:
|
||||
|
||||
```
|
||||
Virtual thread 1 is running on platform thread Thread-01.1Waiting for Network for 2 secondsVirtual thread 2 is running on platform thread Thread-12.1Waiting for Database for 5 secondsVirtual thread 1 is running on platform thread Thread-01.21.31.4Virtual thread 2 is running on platform thread Thread-02.22.32.4
|
||||
```
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
title: "Keeping a suspense file gives you superpowers"
|
||||
source: "https://doctorow.medium.com/https-pluralistic-net-2024-10-26-one-weird-trick-todo-txt-3a58188ba241"
|
||||
author:
|
||||
- "[[Cory Doctorow]]"
|
||||
published: 2024-10-26
|
||||
created: 2024-10-29
|
||||
description: "I’ll be in Tucson, AZ from November 8–10: I’m the Guest of Honor at the TusCon science fiction convention. Two decades ago, I was part of a group of nerds who got really interested in how each other…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
Two decades ago, I was part of a group of nerds who got really interested in how each other managed to do what we did. The effort was kicked off by Danny O’Brien, who called it “Lifehacking” and I played a small role in getting that term popularized:
|
||||
|
||||
[https://craphound.com/lifehacksetcon04.txt](https://craphound.com/lifehacksetcon04.txt)
|
||||
|
||||
While we were all devoted to sharing tips and tricks from our own lives, many of us converged on an outside expert, David Allen, and his bestselling book “Getting Things Done” (GTD, to those in the know):
|
||||
|
||||
[https://gettingthingsdone.com/](https://gettingthingsdone.com/)
|
||||
|
||||
GTD is a collection of relatively simple tactics for coping with, prioritizing, and organizing the things you want to do. Many of the methods relate to organizing your own projects, using a handful of context-based to-do lists (e.g. a list of things to do at the office, at home, while waiting in line, etc). These lists consist of simple tasks. Those tasks are, in turn, derived from *another* list, of “projects” — things that require more than one task, which can be anything from planning dinner to writing a novel to helping your kid apply to university.
|
||||
|
||||
The point of all this list-making isn’t to do everything on the lists. While these lists *do* help you remember what to do next, what they’re *really* good for is deciding what *not* to do — at all. The promise of GTD is that it will help you *consciously choose* not to do some of the things you set out to accomplish. This is in contrast to how most of us operate: we have a bunch of things we want to do, and we end up doing the things that are easiest, or at top of mind, even if they’re not the most important things.
|
||||
|
||||
GTD recognizes that you can be very “productive” (in the sense of getting many things done) and *still* not do the things that you *really* wanted to do. You know what this is like: you finish a Sunday with an organized sock-drawer, all your pennies neatly rolled, the trash-can in your car emptied…and no work at all on that novel you’re hoping to write.
|
||||
|
||||
You can’t do everything, but you *can* control what you don’t do, rather than just defaulting into completing a string of trivial, meaningless tasks and leaving the big stuff on the sidelines. Organizing your own tasks and projects is a hugely powerful habit, and one that’s made a world of difference to my personal and professional life.
|
||||
|
||||
But while good to-do lists can take you very far in life, they have a hard limit: *other people*. Almost every ambitious thing you want to do involves someone else’s contribution. Even the most solitary of projects can be derailed if your tax accountant misses a key email and you end up getting audited or paying a huge penalty.
|
||||
|
||||
That’s where the *other* kind of GTD list comes in: the list of things you’re waiting for from *other people*. I used to be assiduous in maintaining this list, but then the pandemic struck and no one was meeting any of their commitments, and I just gave up on it, and never went back…until about a month ago. Returning to these lists (they’re sometimes called “suspense files”) made me realize how many of the problems — some hugely consequential — in my life could have been avoided if I’d just gone back to this habit earlier.
|
||||
|
||||
My suspense file is literally just some lines partway down a text file that lives on my desktop called todo.txt that has all my to-dos as well. Here’s some sample entries from my suspense file:
|
||||
|
||||
> *WAITING EMAIL Sean about ENSHITTIIFCATION manuscript deadline 10/24/24
|
||||
> WAITING EMAIL Russ about missing royalty statement 10/12/24
|
||||
> WAITING EMAIL Alice about Christmas vacation hotel 10/8/24 10/20/24
|
||||
> WAITING EMAIL Ted about Sacramento event 8/12/24 9/5/24 10/5/24 10/20/24*
|
||||
>
|
||||
> *WAITING CALL LA County about mosquito abatement 10/25/24
|
||||
> WAITING CALL School attendance officer about London trip 10/18/24*
|
||||
>
|
||||
> *WAITING MONEY EFF reimbusement for taxi to staff retreat $34.98 10/7/24*
|
||||
>
|
||||
> *WAITING SHIPMENT New Neal Stephenson novel from Bookshop.org 10/23/24*
|
||||
|
||||
This is as simple as things could possibly be! I literally just type “WAITING,” then a space, then the category of thing I’m waiting for, then a few specifics, then the date. When I follow up on an item, I add the date of the followup to the end of the line. If I get some details that I might need to reference later (say, a tracking code for a shipment, or a date for an event I’m trying to organize), I’ll add that, too, as it comes up. Creating a new entry on this list takes 10–25 seconds. When someone gets back to me, I just delete that line.
|
||||
|
||||
That is literally *it*.
|
||||
|
||||
Every day, or sometimes a couple of times a day, I will just run my eyes up and down this list and see if there’s anything that’s unreasonably overdue, and then I’ll send a reminder or make a followup call. In the example above, you can see that I’ve been chasing Ted about Sacramento for *months* now (this is a fake entry — no plans to go to Sacto at the moment, sorry):
|
||||
|
||||
> *WAITING EMAIL Ted about Sacramento event 8/12/24 9/5/24 10/5/24 10/20/24*
|
||||
|
||||
So now I’ve emailed Ted four times. Maybe my email’s going to his spam, and so I could try emailing a friend of Ted and ask them to check whether he’s getting my messages. But maybe Ted’s trying to send me a message here — he’s just not interested in doing the event after all. Or maybe Ted *is* available, but he’s so snowed under that he’s in danger of fumbling it, and I need to bring in some help if I want it to happen.
|
||||
|
||||
All of these are possibilities, and the fact that I’m tracking this means that I now get to make an *active decision*: cancel the gig or double down on making sure it happens. Without this list, the gig would just die by default, forgotten by both of us. Maybe that’s OK, but I can’t tell you how many times I’ve run into someone who said, “Dammit, I just remembered I was supposed to email you about getting that thing done and I dropped the ball. Shit! I *really* was looking forward to that. Is it too late now?” Often it *is* too late. Even if it’s not, the work of picking up the pieces and starting over is *much* more than just following through on the original plan.
|
||||
|
||||
Restarting my suspense file made me realize how many of the (often expensive or painful) fumbles I’ve had since the pandemic were the result of me not noticing that someone else hadn’t gotten back to me. In essence, a suspense file is *a way for me to manage other people’s to-do lists*.
|
||||
|
||||
Let me unpack that. By “managing other people’s to-do lists,” I don’t mean that I’m deciding for other people what they will and won’t do (that would be both weird and gross). I mean that I’m making sure that if someone else fails to do something we were planning together, it’s *because they decided not to do it*, not because they forgot. As GTD teaches us, the *real* point of a to-do list isn’t just helping us remember what to do — it’s helping us choose what we’re *not* going to do.
|
||||
|
||||
This is not an imposition, it’s a kindness. The point of a suspense file isn’t to nag others into living up to their commitments, it’s to form a network of support among collaborators where we all help one another make those conscious choices about what we’re *not* going to do, rather than having the stuff we really value slip away because we forgot about it.
|
||||
|
||||
I have frequent collaborators whom I know to be incapable of juggling too many things at once, and my suspense file has helped me hone my sense of when it would be appropriate to ask them if they want to do something together and when to leave them be. The suspense file helps me dial in how much I rely on each person in my life (relying on someone isn’t the same as valuing them — and indeed, one way to value someone is to only rely on them for things they’re able to do, rather than putting them in a position of feeling bad for failing you).
|
||||
|
||||
Lifehacking gets a bad rap, and justifiably so. Many of the tips that traffick as “lifehacks” are trivial or stupid or both. What’s more, too much lifehacking can paint you into a corner where you’ve hacked any flexibility out of your life:
|
||||
|
||||
[https://locusmag.com/2017/11/cory-doctorow-how-to-do-everything-lifehacking-considered-harmful/](https://locusmag.com/2017/11/cory-doctorow-how-to-do-everything-lifehacking-considered-harmful/)
|
||||
|
||||
But ever since Danny coined the term “lifehack,” back in 2004, I’ve been cultivating daily habits that have let me live the life I wanted to live, accomplishing the things I wanted to accomplish. I figured out how to turn daily writing into a habit and now I’ve written more than 30 books:
|
||||
|
||||
[https://www.locusmag.com/Features/2009/01/cory-doctorow-writing-in-age-of.html](https://www.locusmag.com/Features/2009/01/cory-doctorow-writing-in-age-of.html)
|
||||
|
||||
A daily habit of opening a huge, ever-tweaked collection of tabs has made me smarter about the news, helped me keep tabs on my friends, helped me find fraudsters who were trying to steal my identity, and ensured that all those Kickstarter rewards and other long-delayed, erratic shipments didn’t slip through the cracks:
|
||||
|
||||
[https://pluralistic.net/2024/01/25/today-in-tabs/#unfucked-rota](https://pluralistic.net/2024/01/25/today-in-tabs/#unfucked-rota)
|
||||
|
||||
==Daily habits are superpowers. Once something is a habit, you get it for free.== GTD turns on decomposing big, daunting projects into bite-sized, trackable tasks. I have a bunch of spaces around the house — my office, my closet, the junk sheds down the side of the house, our tiki bar — that I used to clean out once or twice a year. Each one was all-day, sweaty, dirty job, and for most of the year, all of those spaces were a dusty, disorganized mess.
|
||||
|
||||
A month ago, I added a new daily task: spend five minutes cleaning one space. I did the bar first, and after two weeks, I’d taken down every tchotchke and bottle and polished it, reorganizing the undercounter spaces where things pile up:
|
||||
|
||||
[https://www.flickr.com/search/?user\_id=37996580417%40N01&sort=date-taken-desc&text=tiki+bar&view\_all=1](https://www.flickr.com/search/?user_id=37996580417%40N01&%3Bsort=date-taken-desc&%3Btext=tiki+bar&%3Bview_all=1)
|
||||
|
||||
Now I’m working through my office. Ever day, I’m dusting a bookshelf and combing through it for discards to stick in our Little Free Library. Takes less than five minutes most day, and I’ll be done in about three weeks, when I’ll move on to my closet, then the side of the house, and then back to the bar. A daily short break where I get away from my computer and make my living and working environments nicer is a wonderful habit to cultivate.
|
||||
|
||||
I’m 53 years old now. I was 33 when I started following Getting Things Done. In that time, I’ve gotten a lot done, but what’s even more relevant is that I *didn’t* get a ton of things done — things that I *consciously* chose not to abandon. Figuring out what you want to do, and then keeping it on track — in manageable, healthy, daily rhythms that bring along the other people you rely on — may not be the *whole* secret to a fulfilled life, but it’s certainly a part of it.
|
||||
|
||||
**Tor Books just published two new, free “Little Brother” stories: “**[**Vigilant**](https://reactormag.com/vigilant-cory-doctorow/)**,” a about creepy surveillance in distance education; and “**[**Spill**](https://reactormag.com/spill-cory-doctorow/)**,” about oil pipelines and indigenous landback.**
|
||||
|
||||

|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: "Ketchup Sandwiches and Other Things Stupid Poor People Eat"
|
||||
source: "https://humanparts.medium.com/ketchup-sandwiches-and-other-things-stupid-poor-people-eat-41617483b497"
|
||||
author:
|
||||
- "[[Anastasia Basil]]"
|
||||
published: 2016-09-08
|
||||
created: 2024-10-29
|
||||
description: "I met this woman named Mae. She’s a van driver for a production company. She works 14-hour days but says she doesn’t mind, says she keeps one eye on the road and the other on the prize — a paycheck…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## “Folks of privilege don’t understand how $17 can ruin you”
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@anastasiabasilcunningham?source=post_page---byline--41617483b497--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://humanparts.medium.com/?source=post_page---byline--41617483b497--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image: ANASTASIA BASIL
|
||||
|
||||
I met this woman named Mae. She’s a van driver for a production company. She works 14-hour days but says she doesn’t mind, says she keeps one eye on the road and the other on the prize — a paycheck that has to last through the dead months.
|
||||
|
||||
We’re driving through a poor stretch of Atlanta. Dirty streets. Old houses. Plastic toys upturned in front yards, no kids though. The neighborhood is quiet. I live in L.A., land of nannies and gardeners where the hills are alive with the sound of toddlers and leaf blowers. I prefer Atlanta. You can find parking at the grocery store in the middle of the day. In L.A. it doesn’t matter what time it is, the Trader Joe’s is packed with SAHs and WAHs (stay-at-homes and work-at-homes).
|
||||
|
||||
We pass a decades-old Buick Skylark. I point it out.
|
||||
|
||||
“You into cars?” Mae asks.
|
||||
|
||||
I’m not into cars, but my dad and I once abandoned one of those Buicks on the side of a Florida highway when I was a teenager. That’s how my family did cars — we bought them on their last leg and left them where they died. I tell her how I’d come home from high school and there’d be nothing in the fridge but a bottle of red wine vinegar and a head of lettuce. On the counter, there’d be a bag of potatoes and a bottle of olive oil from the Dollar Store. That was dinner, potatoes and lettuce.
|
||||
|
||||
“I hear you,” she says. “We had ketchup sandwiches all the time growing up. We didn’t complain. We ate them.”
|
||||
|
||||
Mae’s voice is rich, melodic, it’s Maya Angelou meets Gladys Knight. I tell her about the time I borrowed red stirrup pants. (Remember stirrup pants from the ‘80s?) I borrowed them from my friend Marla. Her two older brothers drove Corvettes, one each. Marla drove a more sensible car for a 16-year-old, an Oldsmobile Cutlass Supreme. But it was new. And it was hers. She let me borrow the pants for a party in her neighborhood. (God knows I couldn’t go in my own shit clothes.) Long and short of it, the pants ripped in the calf. My mother wept like death had come, struggling with red thread, looking at me like I’d done the worst thing ever. Marla wanted $17 to replace them.
|
||||
|
||||
Mae invites me to sit up front with her. The traffic to my hotel is bad, we’re in for a haul. I switch out at the next red light.
|
||||
|
||||
“So her brothers drove corvettes?” Yup.
|
||||
|
||||
“One each?” Yup.
|
||||
|
||||
“*Lord Almighty,*” she says, “folks of privilege don’t understand how $17 can ruin you.”
|
||||
|
||||
Mae tells me how she’d come home from school and her mother would hustle her and her sisters upstairs to pick out clothes for the next day before the utilities cut off. Too many red notices.
|
||||
|
||||
I was poor in Florida. Mae’s from Detroit. I ask what she did to keep warm. “Poor kids just do what they gotta do. Privileged kids panic if they can’t have new this and new that, or if they can’t be on a sport team. Sports and heat, those are luxuries.”
|
||||
|
||||
I ask if she’s heard of John Prine, the folk singer. I sing his line: *It’s a half an inch of water and you think you’re gonna drown.* She howls, “Rich folks standing in a puddle screaming!”
|
||||
|
||||
I tell her about my parents shaking me awake in the middle of the night whispering, *we have to go now*. There’s a difference between going and getting out. What we were doing was getting out before morning, before the neighbors would see us evicted.
|
||||
|
||||
“I hear you*,”* she says*. “Lord Almighty,* I hear you.*”*
|
||||
|
||||
==America loves helping the shoeless, iPhoneless, voteless, bug-infested Street Jesuses. These are the lost-cause poor; all they want is your pocket change. (====*Bless their hearts.)*== ==But the working poor? Those who claim to not have enough money for food because they also need clothes for work, water for bathing and laundry, rent for housing, heat in the winter, money for daycare, a smartphone for their job, car insurance and gas — those are some shifty motherfuckers====.==
|
||||
|
||||
If you’re on food stamps America has every right to hate you, as evidenced by this angry conservative [yelling](https://www.youtube.com/watch?v=9veBO80GdBM) at a father and child for using food stamps. I assume she thinks of herself as a nice person, a good person, a church-goer. We all think everyone else is the asshole, right? There isn’t a lot of self-directed road rage out there. How often do we key our own cars? It’s always okay to hate the other guy when the hate is justified — like child predators, rapists, and food stamp users.
|
||||
|
||||
Huddled ‘round the Fox News campfire are those who love tall tales of poor people using tax dollars to buy drugs and alcohol and Gucci shoes. That’s not how it works. I’ve been on food stamps. The government doesn’t hand out wads of cash. When you qualify for food stamps you receive a plastic grocery card that only works for food transactions. Key word: qualify. You don’t just sign up. It’s not a tennis lesson at the club. What’s scary about the woman in the video is that she sees what’s in the dad’s cart (food for his kid) and she *hates* him for it.
|
||||
|
||||
Stupid fucking poor people. If only we’d been engineer majors in college. If only we’d gone to college. If only our parents hadn’t been poor. If only they spoke English. If only we worked harder. If only we were more like conservatives, who believe everything they have today is a direct result of the sweat from their own brow.
|
||||
|
||||
When looking at a spider’s web can you point to the 8th spun web, or the 108th? There are those who claim this astounding ability — those who take full credit for crafting, spin by spin, a better life than ours, a life without aid. If you had help paying for college, if someone bought you your first car, if you had health insurance growing up, if your mom never cried over $17, you were lucky. The Hail Mary toss of birth landed you in a family that could put you on a soccer team and buy new cleats as your feet grew. And someone was home to help you with your math and give you a gummy vitamin each morning. That’s called *aid*, by the way. And not all kids get it, but all kids should.
|
||||
|
||||
Don’t confuse aid with charity. Charity is old coats. Donating a coat doesn’t make you a good person but I bet it makes you *feel* like one. You didn’t even want that coat anymore, what you wanted was the closet space. Sure, you could have sold it at a garage sale and made, like, twenty bucks. It was an expensive coat, damn it. But you, with your heart of gold, *gave* it away. There’s a twinkle in God’s eye just for you.
|
||||
|
||||
What makes you a good person *to others* (and not just to yourself) is the same thing that makes me, or anyone who can afford the occasional $12 cocktail, a good person: Your vote. Not your coat.
|
||||
|
||||
Vote for a living wage *for others*. Vote for health insurance *for others.* Don’t get in the way of food stamps *for others*. Understand how important $17 might be *to others*. That poor stretch of Atlanta is quiet because people are working and paying for daycare. They’re clocking the same hours you’re clocking, but they make a shit wage.
|
||||
|
||||
Take a good long look at your feet. If you were born at the starting line wearing a nice pair of running shoes, that was luck. Sheer luck. The most important thing you can do now is help those who had to start the race a mile behind you, barefoot.
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: "Let’s Talk About The Rise In Passive Suicide"
|
||||
source: "https://medium.com/@ossiana.tepfenhart/lets-talk-about-the-rise-in-passive-suicide-0f196561f394"
|
||||
author:
|
||||
- "[[Ossiana Tepfenhart]]"
|
||||
published: 2024-10-12
|
||||
created: 2024-10-29
|
||||
description: "Being the child of a pair of professors gives you a very unique look into what people are thinking about. Lately, I overheard two professors bemoaning how passive and “dead-eyed” their students are…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## “It’s not that I’m actively planning, but if I die, I’m okay with it.”
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@ossiana.tepfenhart?source=post_page---byline--0f196561f394--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Anthony Tran](https://unsplash.com/@anthonytran?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
Being the child of a pair of professors gives you a very unique look into what people are thinking about. Lately, I overheard two professors bemoaning how passive and “dead-eyed” their students are.
|
||||
|
||||
This is not a new complaint. It’s just been getting more pronounced as years go by. The days of the bright-eyed, bushy-tailed student are long gone, replaced by days of passive students who seem to just exist rather than think.
|
||||
|
||||
If you take a look around, you might notice that a lot of the wildness and liveliness associated with you kind of…vanished. It’s been a slow vanish, but now it’s visible.
|
||||
|
||||
## The lack of passion you see in people is often a major symptom of “passive suicidality.”
|
||||
|
||||
Passive suicidality is on the rise, and it’s an attitude that we see in many people. Unlike active suicidal ideation, passive suicidality doesn’t mean you’re an immediate threat to yourself. You’re not actively planning to off yourself.
|
||||
|
||||
Rather, you just don’t really care about yourself. You’re more or less just giving up on life. You don’t have that spark, that feeling of being motivated to change your life’s direction.
|
||||
|
||||
Passive suicidality is that attitude that comes with giving up on life, but not not actively doing anything in life. It’s the “lay down and rot” of living. You might notice it if any of the following are true in someone you know:
|
||||
|
||||
- **They do not try to better their situation.** This is not a matter of laziness. It’s a sign that they tried what they *think s*hould have worked, only to have it not work out. For example, a person who applied to 2,000 jobs in their field might stop applying if they were constantly rejected. It’s not that they don’t want a job. It’s that they don’t feel they have a chance anymore.
|
||||
- **“I don’t want to hurt myself, but I don’t particularly care what happens to me.”** If you hear something along those lines, that person is passively suicidal.
|
||||
- **“There’s no point in me trying again.”** Suicidal ideation often happens because people have tried to fix problems, but to no avail. Passive suicidality is no different. The person lost hope. So, rather than try to better their situation, they do nothing. It’s a form of learned helplessness.
|
||||
- **They are addicted to the online world.** Being online is a fast and easy way to escape reality. If your current situation is so grim that you can’t even try changing things, being terminally online starts looking good. This often results in gaming addiction, porn addiction, or becoming a mod on Reddit.
|
||||
- **“I wish I was never born.”** If you hear stuff like this or hear someone say they want to die in their sleep, they’re passively suicidal.
|
||||
- **Getting them to go out and meet people is harder than ever before.** People who become shut-ins are generally not happy people. Self-isolating is a warning sign that something isn’t going right in their lives.
|
||||
- **They’ve gotten prone to incel, conspirational, or otherwise irrational thinking.** People who are passively suicidal tend to be more prone to unrealistic expectations of life. They also might escape through bizarre conspiracies.
|
||||
- **They seem to be just trying to pass the time from one day to another rather than actually *live*.** They don’t tend to have things to look forward to. Instead, they are more interested in just being there. There’s no spark in their eyes.
|
||||
|
||||
## If this sounds like a lot of people you know, you’re not alone.
|
||||
|
||||
Active suicidal ideation and deaths of despair have been increasing for the better part of two decades. Most recently, a study from [PewTrusts](https://www.pewtrusts.org/en/research-and-analysis/articles/2023/03/03/youth-suicide-risk-increased-over-past-decade) noted that suicides have been increasing in high schoolers for the past ten years.
|
||||
|
||||
It’s clear deaths of despair are on the rise — and so is the desire to die. However, no one is entirely sure how many people are passively suicidal. A lot of people with this particular disorder are never diagnosed, nor do they bother to seek help.
|
||||
|
||||
With that said, here’s what [Life Skills South Florida](https://lifeskillssouthflorida.com/mental-health-blog/passive-suicidal-ideation-signs-risks-help/#:~:text=Additionally%2C%20nearly%2050%25%20of%20these,at%20some%20point%20in%20life.) had to say about this:
|
||||
|
||||
> “Approximately 33% of individuals in psychiatric populations currently experience passive suicidal thoughts. Additionally, nearly 50% of these individuals have had passive suicidal thoughts in the past. Rates amongst the general population are also alarming, with 5% of people experiencing passive SI in a given year and 10% experiencing passive SI at some point in life.”
|
||||
|
||||
[NIH](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7024002/) had similar estimates, with 5 to 10 percent of all people experiencing passive suicidal ideations within their lifetimes. That’s one out of every ten people. That’s a shockingly huge number. Statistically, that means that you probably know someone who is passively suicidal.
|
||||
|
||||
## Why is this happening?
|
||||
|
||||
So, there are a lot of reasons why people are just giving up on life — even when they’re young. A lot of them are pretty obvious to anyone who hasn’t lived under a rock:
|
||||
|
||||
- **Fewer social connections.** It’s no secret. Gen Z is now the loneliest generation in history. Our society makes it hard for people to meet up as friends. Humans are social animals. We cannot be healthy without our own social network.
|
||||
- **A brutal, mostly rigged economy.** Upward mobility is not as likely as it once was. Even getting a job is a discouraging, if not downright heartbreaking procedure. It’s not unusual for people to send in hundreds or even thousands of applications without a single hire.
|
||||
- **The gamification of dating.** I’m not going to mince words. Tinder hurts our society more than it helps. We shouldn’t view people as just a swipe away. There is a human behind that screen — at least in most situations.
|
||||
- **Rage-inducing propaganda on social media**. If social media has been making you feel hopeless, you’re not alone. Social media use has been tied to worsening mental health and anxiety. When you look at all the incel content online, it’s not surprising.
|
||||
- **Regular loss and rejection.** Whether we want to admit it or not, having near-constant rejections hurts us — both in the business world and the personal world. Yet, it’s normalized in our society. The truth is that our brains don't seem to be wired for hundreds of rejections. After a while, that fight feels futile.
|
||||
- **Little to no sense of agency.** Do you feel like you don’t have much control over your life? You’re not alone. A lot of people feel like they’re at the mercy of corporations these days — as if their votes, businesses, and needs don't matter.
|
||||
|
||||
To put it bluntly, things look grim for most of us. Many of us are realizing that we can’t pursue our dreams or even find friends to commiserate with. That’s a rough realization.
|
||||
|
||||
It’s hard to look forward to a future when you’re convinced that the future will be worse than what you’re dealing with today. If you’ve tried, tried, and tried without any form of success, chances are high that you might become passively suicidal.
|
||||
|
||||
## How can we curb the spike in passive suicidality?
|
||||
|
||||
Honestly? We need a societal overhaul.
|
||||
|
||||
==We need to be able to give people hope for the future. We need to stop worker exploitation and corporate price-gouging. We need to make it possible for people working a state minimum wage to afford a 1-bedroom apartment.==
|
||||
|
||||
Oh, and we need to make it possible for people to have hope again. That’s kind of hard to do in today's society. At best, the
|
||||
|
||||
There’s only so much any of us can do to change our fates on an individual level and it’s time we recognize we need one another.
|
||||
|
||||
If you *are* feeling that way, the best thing you can do is call 988 and reach out for help. Things can get better, but only if you let them get better.
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: "Mathematik: Zwei Schülerinnen finden »unmöglichen« Beweis zum Satz des Pythagoras"
|
||||
source: "https://www.spektrum.de/news/zwei-schuelerinnen-finden-unmoeglichen-beweis-zum-satz-des-pythagoras/2240087"
|
||||
author:
|
||||
- "[[Leila Sloman]]"
|
||||
published: 2024-10-29
|
||||
created: 2024-10-29
|
||||
description: "Es gibt hunderte Beweise des Satzes von Pythagoras. Zwei Schülerinnen haben nun einen weiteren präsentiert, der vor 100 Jahren als unmöglich galt."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
Zwei Schülerinnen einer US-amerikanischen High-School haben den Satz des Pythagoras auf eine Weise bewiesen, die ein Mathematiker des frühen 20. Jahrhunderts für unmöglich hielt. Calcea Johnson und Ne'Kiya Jackson von der St. Mary's Academy in New Orleans haben ihr Ergebnis auf einer Tagung der American Mathematical Society im März 2023 vorgestellt. »Es ist ein unbeschreibliches Gefühl: Wir haben etwas getan, was man jungen Menschen wie uns eigentlich gar nicht zutraut«, [sagte Johnson gegenüber WWL-TV](https://www.wwltv.com/article/news/education/no-east-teens-make-pmathematical-discovery-2000-years-making/289-e89f40cb-85f8-4a55-ae3f-3ec37412d7b8), einer CBS-Tochtergesellschaft aus New Orleans. [Nun haben die zwei Schülerinnen das Ergebnis in der Fachzeitschrift »American Mathematical Monthly« veröffentlicht](https://www.tandfonline.com/doi/full/10.1080/00029890.2024.2370240).
|
||||
|
||||
Dabei widerspricht der Beweis von Johnson und Jackson dem, was der Mathematiker Elisha Loomis [in seinem 1927 erschienenen Buch »The Pythagorean Proposition« erklärte](https://files.eric.ed.gov/fulltext/ED037335.pdf): Ein trigonometrischer Beweis des Satzes des Pythagoras könne nicht korrekt sein. Die Arbeit der Schülerinnen zählt zu einer Reihe von trigonometrischen Beweisen, die im Lauf der Jahre geführt wurden und Loomis widersprechen. Jeder dieser Beweise umgeht die von Loomis vermutete unumgängliche »zirkuläre Logik«.
|
||||
|
||||
Der Satz des Pythagoras ist eine Gleichung, welche die Seitenlängen eines rechtwinkligen Dreiecks zueinander in Beziehung setzt. Die lange Dreiecksseite nennt man Hypotenuse, die beiden kürzen Seiten Katheten. Nach dem Satz des Pythagoras entspricht die quadrierte Länge der Hypotenuse der Summe beider Kathetenquadrate. Der Satz wird oft durch *a*<sup>2</sup> + *b*<sup>2</sup> = *c*<sup>2</sup> ausgedrückt, wobei *a* und *b* für die Längen der Katheten und *c* für die Länge der Hypotenuse stehen. Die Gleichung ist zwar nach dem griechischen Philosophen Pythagoras benannt, doch einige Historiker sind überzeugt, [dass er schon 1000 Jahre früher in Babylon bekannt war](https://blogs.scientificamerican.com/roots-of-unity/dont-fall-for-babylonian-trigonometry-hype/).
|
||||
|
||||
»Der Satz verbindet Algebra und Geometrie«, sagt Stuart Anderson, emeritierter Professor für Mathematik an der Texas A&M University-Commerce. »Die Aussage *a*<sup>2</sup> + *b*<sup>2</sup> = *c*<sup>2</sup> ist eine algebraische Aussage. Aber das Objekt, von dem sie ausgeht, ist ein geometrisches.«
|
||||
|
||||
### Mit Trigonometrie ohne Zirkelschluss zu Pythagoras
|
||||
|
||||
In der Trigonometrie geht es um Funktionen, die von Winkeln abhängen, etwa Sinus und Kosinus. Definiert werden sie durch rechtwinklige Dreiecke. Dazu kann man sich ein solches Dreieck vorstellen, das mit einer Kathete flach auf einem Tisch liegt und mit der anderen Kathete nach oben ragt, so dass beide einen rechten Winkel bilden. Die Hypotenuse erstreckt sich diagonal zwischen den Enden dieser beiden Seiten. Nun kann man den Winkel *x* zwischen Hypotenuse und dem Tisch messen. Der Sinus dieses Winkels ist als die Höhe der senkrechten Seite geteilt durch die Länge der Hypotenuse definiert. Der Kosinus ist entsprechend die Länge der horizontalen Seite geteilt durch die Länge der Hypotenuse. Der Satz des Pythagoras ist deshalb gleichbedeutend mit der Gleichung sin<sup>2</sup>*x* + cos<sup>2</sup>*x* = 1. »Viele der grundlegenden trigonometrischen ›Identitäten‹ sind nichts anderes als der Satz des Pythagoras«, erklärt Anderson und bezieht sich dabei auf Gleichungen, die Beziehungen zwischen verschiedenen trigonometrischen Funktionen beschreiben.
|
||||
|
||||
Würde man diese Funktionen für einen Beweis des Satzes von Pythagoras verwenden, so war Loomis überzeugt, würde man implizit den Satz von vornherein voraussetzen. Damit wäre ein solcher Beweis ein Zirkelschluss – und aus mathematischer Sicht falsch.
|
||||
|
||||
Doch das muss nicht immer so sein. In ihrem Vortrag auf der Tagung der American Mathematical Society erklärten Jackson und Johnson, dass eine trigonometrische Identität, der so genannte Sinussatz, nicht vom Satz des Pythagoras abhängt. Deshalb kann man diesen für den Beweis des Satzes verwenden.
|
||||
|
||||
Anderson hofft, dass Jacksons und Johnsons Beweis das Interesse weiterer Schülerinnen und Schüler an Mathematik wecken wird. »Ich wünschte, ich hätte noch eine Klasse, in der ich darüber sprechen könnte«, sagt er.
|
||||
|
||||
Einige der anderen trigonometrischen Beweise des Satzes werden [auf der Website des Mathematikers Alexander Bogomolny](https://www.cut-the-knot.org/) beschrieben. [Einen davon hat Jason Zimba](https://amesa.org.za/amesa_n34_a5.pdf), damals Physiker und Mathematiker am Bennington College, geführt und 2009 in der Fachzeitschrift »Forum Geometricorum« veröffentlicht. Für den Beweis nutzte er eine trigonometrische Identität, mit der sich der Kosinus und Sinus einer Winkeldifferenz *x−y* ohne den Satz des Pythagoras berechnen lassen. Man benötigt dafür lediglich die Kosinus- und Sinuswerte der einzelnen Winkel *x* und *y*.
|
||||
|
||||
> »Elisha Loomis, ich selbst und zweifellos viele andere glaubten, dass kein trigonometrischer Beweis des Satzes des Pythagoras möglich ist. Ich gebe gerne zu, dass ich mich geirrt habe«Alexander Bogomolny, Mathematiker
|
||||
|
||||
Am 26. Oktober 2009 veröffentlichte Bogomolny den Beweis von Zimba auf seiner Website und schrieb: »Elisha Loomis, ich selbst und zweifellos viele andere glaubten – und glauben immer noch –, dass sich der Satz des Pythagoras trigonometrisch nicht beweisen lässt … Ich gebe gerne zu, dass ich mich geirrt habe.« Im Lauf der Zeit ergänzte Bogomolny seine Website um weitere trigonometrische Beweise. Einer davon lässt sich sogar in nur vier Zeilen führen.
|
||||
|
||||
Das zeigt, wie selbst einfache Mathematik noch immer überraschen kann. »Ich denke, wir Mathematiker haben gelernt: Wir behaupten nicht mehr, dass etwas unmöglich ist, denn im Laufe der Jahre haben wir uns damit einfach zu oft blamiert «, sagt Anderson.
|
||||
|
||||

|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: "Media Illiteracy and the Far Right"
|
||||
source: "https://medium.com/@cole.haddon/media-illiteracy-and-the-far-right-946780f82cfb"
|
||||
author:
|
||||
- "[[Cole Haddon]]"
|
||||
published: 2024-08-16
|
||||
created: 2024-10-29
|
||||
description: "These two posts from Celine Dion and Elon Musk reveal the extent of the Far Right’s media illiteracy. It’s the same problem that has also allowed Far Right viewers to miss the fact that Homelander —…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Two posts this week from Celine Dion and Elon Musk can teach us a lot about what’s happening in the world right now
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@cole.haddon?source=post_page---byline--946780f82cfb--------------------------------)
|
||||
|
||||

|
||||
|
||||
These two posts from Celine Dion and Elon Musk reveal the extent of the Far Right’s media illiteracy. It’s the same problem that has also allowed Far Right viewers to miss the fact that Homelander — and *they* — are the villains on *“The Boys”*.
|
||||
|
||||
On the left, Dion makes clear Donald Trump used “My Heart Will Go On” at one of his rallies, for reasons that confused her (and me). When even Celine Dion starts calling you *weird*, something is wrong.
|
||||
|
||||
On the right, the world’s richest person and currently largest promoter of fascist ideology via his hate platform, X, imagines he’s “the little guy” in a whole bunch of films about fascism.
|
||||
|
||||
It’s easy to imagine what Trump and Musk have done here as an intentional stripping of meaning from art to reinforce personal ideology/identity, which I’ve written about quite a bit including this piece here at Medium:
|
||||
|
||||
But I would argue there is no conscious effort to do as much, and instead ignorance and fancy drive the comical and often comically ironic bumbling through pop culture. With time, such ignorant misinterpretations of art can become an accepted belief and only then, I think, truly replace the meaning of the original work for the masses (i.e., Marvel’s Punisher).
|
||||
|
||||
==It’s a great example of how imbeciles with the intellectual curiosity of potted plants can actually warp reality.==
|
||||
|
||||
*Subscribe to me here at Medium or, better yet, subscribe to my arts Substack* **5AM StoryTalk***.*
|
||||
|
||||
And if you’d like to support my writing, to make sure I can keep pumping out all this art talk, you can always **“buy me a coffee”**.
|
||||
@@ -0,0 +1,118 @@
|
||||
---
|
||||
title: "Mistakes That Make You Look Like a Noob Developer!"
|
||||
source: "https://medium.com/write-a-catalyst/mistakes-that-make-you-look-like-a-noob-developer-e1784b48a1b5"
|
||||
author:
|
||||
- "[[Sukhpinder Singh | C# .Net]]"
|
||||
published: 2024-09-18
|
||||
created: 2024-10-29
|
||||
description: "Any programming language will have an abundance of features to make a developer's life easier and more productive. Still, with any programming language, even senior developers fail to implement best…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## **And Learn how to Fix Them**
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@singhsukhpinder?source=post_page---byline--e1784b48a1b5--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/write-a-catalyst?source=post_page---byline--e1784b48a1b5--------------------------------)
|
||||
|
||||

|
||||
|
||||
## Hello, fellow devs out there!
|
||||
|
||||
==Any programming language will have an abundance of features to make a developer's life easier and more productive. Still, with any programming language, even senior developers fail to implement best practices and make these common mistakes.==
|
||||
|
||||
The following common mistakes in C# will make you look like a **noob**, understand how to fix them to become a **pro developer**.
|
||||
|
||||

|
||||
|
||||
Glimpse of what ChatGPT has to say about noob developer
|
||||
|
||||

|
||||
|
||||
## 1\. Using Var Everywhere Without Understanding Its Implications
|
||||
|
||||
**Mistake:** The C# `var `keyword is a convenience that enables the compiler to infer the type of a variable. Used too frequently, or without knowing what type is being used, can result in code less readable and thus less maintainable.
|
||||
|
||||
```
|
||||
var list = new List<string>(); var item = list[0];
|
||||
```
|
||||
|
||||
In this second line, we can’t tell what type of item is, so we have to do some extra work to determine what this code is doing.
|
||||
|
||||
## **How to Fix It:**
|
||||
|
||||
Use `var `Only when the type is obvious from the right-hand side of the assignment. Otherwise, code readability improves with explicit types. That is, prefer explicit typing for clarity when the type is not immediately obvious.
|
||||
|
||||
```
|
||||
List<string> list = new List<string>(); string item = list[0];
|
||||
```
|
||||
|
||||
> That’s a good practice because it improves readability.
|
||||
|
||||
## 2\. Improper Use of using Statements
|
||||
|
||||
**Mistake:** You will cause resource leaks, and most probably performance issues if you don’t dispose of resources like file streams and database connections.
|
||||
|
||||
```
|
||||
public void ReadFile(string path){ FileStream stream = new FileStream(path, FileMode.Open); StreamReader reader = new StreamReader(stream); }
|
||||
```
|
||||
|
||||
Resource Leak failing to close/Dispose of `FileStream `and `StreamReader`,
|
||||
|
||||
## **How to Fix It:**
|
||||
|
||||
Dispose of resources through `using `Statements. Resources are disposed of after use in using statements. Using statements is much better for memory I/O along with other disposable resources.
|
||||
|
||||
```
|
||||
public void ReadFile(string path){ using (FileStream stream = new FileStream(path, FileMode.Open)) using (StreamReader reader = new StreamReader(stream)) { } }
|
||||
```
|
||||
|
||||
> The `using `statement will ensure proper cleanup of resources in the case of exceptions.
|
||||
|
||||
## 3\. Overusing `public` Fields Instead of Properties
|
||||
|
||||
**Mistake:** One of them is exposing fields directly in the `classes `using `public `fields instead of `properties`. It will make your code less encapsulated and hard to maintain.
|
||||
|
||||
```
|
||||
public class Person{ public string Name; }
|
||||
```
|
||||
|
||||
This direct access to the field results in uncontrolled changes, and you cannot add any kind of validation or logic while accessing the field.
|
||||
|
||||
## **How to Fix It:**
|
||||
|
||||
Encapsulate fields using properties. You can control access to the data via properties and add your validation logic when you set the values.
|
||||
|
||||
```
|
||||
public class Person{ private string _name; public string Name { get { return _name; } set { if (string.IsNullOrEmpty(value)) throw new ArgumentException("Name cannot be null or empty"); _name = value; } }}
|
||||
```
|
||||
|
||||
> Encapsulation could be better using properties with more fine-grained levels of control about how the data is accessed and modified.
|
||||
|
||||
## 4\. Not Handling Exceptions Properly
|
||||
|
||||
**Mistake:** Catching all general exceptions and not handling or swallowing them appropriately makes debugging hard to conduct because the real cause of the problem is obscured.
|
||||
|
||||
```
|
||||
public void ProcessData(){ try { } catch (Exception ex) { }}
|
||||
```
|
||||
|
||||
Swallowing an exception or catching a general exception without specific handling causes silent failures and makes diagnosing issues much harder.
|
||||
|
||||
## **How to Fix It:**
|
||||
|
||||
Catch specific exceptions and practice meaningful error handling/logging. That would be very instrumental in diagnosing/debugging the problems. That might look something like this:
|
||||
|
||||
```
|
||||
public void ProcessData(){ try { } catch (FileNotFoundException ex) { Console.WriteLine($"File not found: {ex.Message}"); } catch (IOException ex) { Console.WriteLine($"IO error: {ex.Message}"); } catch (Exception ex) { Console.WriteLine($"An unexpected error occurred: {ex.Message}"); }}
|
||||
```
|
||||
|
||||
> It tends to make your application more robust, and easier to troubleshoot, with specific exceptions caught and appropriate handling or logging done.
|
||||
@@ -0,0 +1,188 @@
|
||||
---
|
||||
title: "Nine Church Traditions That Need To Die Immediately"
|
||||
source: "https://medium.com/backyard-theology/nine-church-traditions-that-need-to-die-immediately-6a224cf1d312"
|
||||
author:
|
||||
- "[[Dan Foster]]"
|
||||
published: 2024-06-15
|
||||
created: 2024-10-29
|
||||
description: "Growing up as a Pastor’s kid in the eighties gave me a front-row pew to the kind of vitriol and anger that can emerge from an otherwise lovely and mild-mannered Christian when you say or do something…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Killing the Sacred Cows of Church
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@danfosterwriter?source=post_page---byline--6a224cf1d312--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/backyard-theology?source=post_page---byline--6a224cf1d312--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image by [DedMityay](https://www.istockphoto.com/portfolio/DedMityay?mediatype=photography) on [iStock](https://www.istockphoto.com/photo/silhouette-of-man-praying-in-church-in-sunset-light-gm904697660-249486873])
|
||||
|
||||
Growing up as a Pastor’s kid in the eighties gave me a front-row pew to the kind of vitriol and anger that can emerge from an otherwise lovely and mild-mannered Christian when you say or do something to offend them.
|
||||
|
||||
I remember the first time my Father preached a sermon on the topic of sex — something quite ground-breaking at the time. After the service, he stood at the door and greeted everyone as he always did. I remember one little old lady getting right up in my Dad’s face and, waving one pointed finger perilously close to his nose, screeching at him, *“If you ever mention ‘that word’ in church again, I’m never coming back.”* She couldn’t even bring herself to say the word “sex,” because I suppose she was far too upright and pious for the likes of anything slightly pleasurable or necessary for the survival of the human race.
|
||||
|
||||
My father was a great pastor, but he was ahead of his time. He like to challenge the status quo, make people shift uncomfortably in their pews and, occasionally, he like to slaughter a sacred cow.
|
||||
|
||||
The term “sacred cow” has its origins in Hinduism, but it is commonly used in Christian circles to describe those elements of church life that have been elevated to such a high level of importance that they cannot be touched, criticized, changed, or removed. Above all, sacred cows are not essential to the fundamentals of Christianity, but people treat them as if they are. In fact — truth be told — if you got rid of them, the church would function just as effectively — probably even more so.
|
||||
|
||||
Over three decades in the Evangelical church, I have done a fair bit of cow spotting. Here are a few common sacred cows that need to be put out to pasture — maybe even slaughtered completely:
|
||||
|
||||
## The Offering
|
||||
|
||||
One of the most awkward parts of many a church service is the moment that an open offering plate is thrust under your nose by an eager and expectant church usher (usually an older man), with the expectation that you will put a wad of hundred dollar bills in it. Okay… so maybe not that much, but the pressure to give is real.
|
||||
|
||||
This uncomfortable tradition of ‘sending around the plate’ is usually prefaced by an ‘offering talk’ (that is sometimes almost as long as the sermon itself), where parishioners are exhorted to let the moths out of their purses and fill the coffers of the church for the good of the Kingdom. In the worst of cases, some churches insinuate or even promise that your financial gifts will somehow unlock the blessing of God over your life — as if God could somehow be bought off in such a way. This amounts to nothing more than manipulation.
|
||||
|
||||
Should we give? Yes! Christ calls us to be generous and to give to those in need. However, we are also told to give discreetly and without fanfare. In fact, the [Bible](https://www.biblegateway.com/passage/?search=2+Corinthians+9%3A7&version=ERV) says, *“Each one of us should give what we have decided in our heart to give. We should not give if it makes us unhappy or if we feel forced to give. God loves those who are happy to give.”*
|
||||
|
||||

|
||||
|
||||
Photo by [Suzanne Tucker](https://www.shutterstock.com/g/soupstock) on [Shutterstock](https://www.shutterstock.com/image-photo/offering-basket-2665367)
|
||||
|
||||
## The Communion Table
|
||||
|
||||
I know of a worship leader who made the mistake of resting his guitar against the communion table at the end of his worship set. The backlash was swift and brutal. The pastor’s inbox was full of complaints about the worship leader’s irreverence. How dare he use the table of the Lord to rest a common musical instrument against it!
|
||||
|
||||
True to its form, the church publicly humiliated the worship leader by making him get up on stage and apologize to everyone for his gross sacrilege. He left the church soon after. Good for him!
|
||||
|
||||
I heard of another pastor who moved the communion table from the center of the stage to a position off to one side simply to create a little more space. The pastor was accused of attacking the centrality of the Lord’s Supper, leading people astray and presenting a ‘watered-down’ version of Christianity. The following week, the communion table was back in the middle of the stage. From then on, the pastor would move the table just a few inches each week and, over a period of several months, successfully moved it back to one side without anyone noticing.
|
||||
|
||||
In some churches, the communion table is a sacred cow. In reality, it’s just a piece of ordinary furniture. Covering it in a nice white tablecloth doesn’t make it sacred. Even the fact that the elements of the Lord’s supper sit on top of it doesn’t make it sacred. In fact, to place such high importance on an inanimate object would be akin to making an idol out of it, wouldn’t it?
|
||||
|
||||

|
||||
|
||||
Photo by [Joshua Eckstein](https://unsplash.com/@dcemr_e?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/children-church?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
|
||||
|
||||
## Church Music
|
||||
|
||||
One of the sacred cows that my father was unable to kill when he was a pastor was the pipe organ. The church had an ancient pipe organ that was so seldom used that it was almost purely ornamental. I’m pretty sure that the last human being who actually knew how to play it had passed away a few centuries earlier. Even so, when the church outgrew its ancient building and attempted to shift the congregation into a bigger and more modern facility, they were unable to part ways with the pipe organ. Consequently, at great expense, the entire organ was painstakingly removed from the old sanctuary and transplanted into the new. There, it sits as an ancient monument to a bygone era, gathering dust. It sticks out like a sore thumb.
|
||||
|
||||
This highlighted to me how we can get attached to certain instruments, styles of worship — even certain songs — to the point of elevating them to god-like status. Music is one of the aspects of the church that is most complained about. Every week, someone would say the music was too loud, too soft, too fast, or too slow. They would complain that the number of old hymns was disproportionate to the amount of modern worship songs. They would say that certain songs lacked lyrical content, theological accuracy, or a catchy riff. When it comes to the sacred cow of music, Christians can fire up very quickly.
|
||||
|
||||
However, we weren’t even commanded to gather around an organ and sing, were we? Singing is really just one way to worship. It’s not the be-all-and-end-all. These days, my favorite way to worship is actually to sit in silent contemplation. Try that sometime!
|
||||
|
||||

|
||||
|
||||
Photo by [Tim Gouw](https://unsplash.com/@punttim?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/organ?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
|
||||
|
||||
## Male-dominated church leadership
|
||||
|
||||
Once upon a time, the idea that power and leadership were ascribed to men by virtue of their gender alone was widely accepted. In some cultures, it still is. However, as the modern Western world continues its relentless and necessary march toward equality, patriarchal structures, and systems are quite rightly viewed as unacceptable and outdated. Still, those who stand to lose the most by the deconstruction of patriarchal systems — namely conservative men — won’t go down without a fight. Nowhere is this more evident than in the church, where some men will fight tooth and nail to protect their turf.
|
||||
|
||||
A woman can be the leader of my country, but she can’t be a leader in many local churches. That’s because many Christian churches ascribe to a form of “benevolent patriarchy” commonly known as [Complementarianism](https://en.wikipedia.org/wiki/Complementarianism). This belief places men in positions of authority over their wives and children and limits church leadership to men. Women are expected to fully submit to the men in their lives, such as fathers, husbands, and pastors.
|
||||
|
||||
I remember the very last time I attended a board meeting at my conservative, evangelical church. The group — all men, of course — had gathered, and a decision needed to be made that required some legal advice.
|
||||
|
||||
*“What a pity we don’t have any lawyers who come to our church that we can refer to for this matter,”* Said one of the board members.
|
||||
|
||||
*“My wife is a lawyer,”* I spoke up.
|
||||
|
||||
*“True,”* replied the board member, *“What a shame she is the wrong gender.”*
|
||||
|
||||
And the rest of the men chuckled knowingly.
|
||||
|
||||
We ought to be disturbed when it is suggested that those absent of male genitals must unilaterally submit and defer to those with.
|
||||
|
||||

|
||||
|
||||
Photo by [Lisa F. Young](https://www.shutterstock.com/g/lisafx) on [Shutterstock](https://www.shutterstock.com/image-photo/minister-delivering-serious-sermon-church-room-64955239)
|
||||
|
||||
## Church and politics
|
||||
|
||||
Many Christians are uncomfortable with the marriage that seems to exist between the church and the conservative side of politics. It is a well-established [fact](https://www.pewresearch.org/fact-tank/2019/03/18/evangelical-approval-of-trump-remains-high-but-other-religious-groups-are-less-supportive/) that white, evangelical protestant Christians overwhelmingly support Donald Trump and his first presidency to the point where “Evangelical Christian” has become a kind of synonym for “Trump Supporter.” And if Trump is returning to power in 2024, it will be on the back of the conservative Christian vote.
|
||||
|
||||
==The idea that Jesus is somehow on the side of the Republican Party is laughable. If Jesus is on anyone’s side, it’s the side of the orphan, the widow, the refugee, the poor, the lost, the hurting, and the weak.==
|
||||
|
||||
In my home country, Australia, I believe that the more progressive political parties often have ideas more aligned with the compassion and grace that Christianity is supposed to espouse, particularly in matters pertaining to welfare, foreign aid, equality, asylum seekers and the environment. Yet, it is kind of an unwritten rule that Christians should vote for the conservatives.
|
||||
|
||||
Yes, I have had friends walk away from the church because they can’t reconcile why the church supports political parties that turn away the refugee and oppress the minority.
|
||||
|
||||

|
||||
|
||||
Photo by [ehrlif](https://www.istockphoto.com/portfolio/ehrlif?mediatype=photography) on [iStockphoto](https://www.istockphoto.com/photo/american-flag-and-bible-gm497116057-41648088)
|
||||
|
||||
## The Building
|
||||
|
||||
Let’s be clear. The Bible never mentions a building called ‘Church.’ Never. In fact, the Bible never speaks of church in those terms. The buildings came later when the state got a hold of the church, under Roman Emperor Constantine in 312 AD.
|
||||
|
||||
On the other hand, Jesus taught that He is present wherever two or three people gather in His name. He didn’t specify a group of 50, 200, or 5,000, nor did He mention an auditorium with a speaker, a band, and rows of pews. When Jesus spoke about the church, he was talking about people. People are the building blocks of church, not bricks and mortar. That is why church began in the humble homes of believers and that is why church can still continue in the humble homes of believers even as we are forced apart on occasions such as global pandemics.
|
||||
|
||||
Jesus never instructed believers to buy land, build buildings, establish a weekly worship service, create a liturgy or institute a sacrament. He simply instructed believers to remember Him, to live in community, to share meals, and to keep His memory alive. A building is not needed. It might be helpful, sure. But real Christianity is a fully portable experience.
|
||||
|
||||

|
||||
|
||||
Photo by [Skull Kat](https://unsplash.com/@mrmrs?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/church?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
|
||||
|
||||
## Children’s Sunday School
|
||||
|
||||
At various times in the Gospels, Jesus’s disciples are seen trying to keep children away from Jesus because Jesus was — in their opinion — far too busy and important for kids. Yet, in [Matthew 18:10](https://www.biblegateway.com/passage/?search=Matthew+18%3A10&version=VOICE), Jesus commands us not to look down on children but to welcome them.
|
||||
|
||||
Therefore, it strikes me as odd that many churches segregate children to some far-removed corner of the church property so that the adults can worship God in peace and quiet. Here, during an hour of glorified babysitting, we teach children to be good little boys and girls. We teach them to be nice, obedient, and compliant.
|
||||
|
||||
Now, don’t get me wrong. I’m not saying there isn’t a place for children’s Sunday School lessons, but I think the whole system needs an overhaul. Better yet, here’s an idea. How about we design worship services that are inter-generationally friendly so that we can all participate together? We ought to stop patronizing children and start to treat them as people who have things that they can teach us and meaningful contributions they can make.
|
||||
|
||||
No wonder my kids found church so boring because — let’s be honest — young people are drawn to risk, challenge, and adventure, but these things are often discouraged in the local church. Instead, many congregations offer a safe, nurturing community — an oasis of stability and predictability. Studies show that women and seniors gravitate toward these things. So, not surprisingly, such congregations are over-represented with women and seniors.
|
||||
|
||||
Richard Rohr, in his book, “[From Wild Man to Wise Man](https://www.amazon.com.au/Wild-Man-Wise-Reflections-Spirituality/dp/0867167408),” says it like this:
|
||||
|
||||
> “Real spirituality should emphasize movement over stillness, action over theory, service to the world over religious discussions, speaking the truth over social niceties, and doing justice instead of self-serving. Without this, spirituality becomes characterized by too much inwardness, a morass of unclarified feelings, and religion itself as a security blanket. This prevents a journey to anyplace new, and fosters a constant protecting of the old. It is a no-risk religion, just the opposite of Abraham, Moses, Paul and Jesus…”
|
||||
|
||||
As long as we present the Christian faith inaccurately as something less than the great, challenging, risky, dangerous, treacherous adventure that it was meant to be, we sell out. And children will find their adventure elsewhere.
|
||||
|
||||

|
||||
|
||||
Photo by [Samantha Sophia](https://unsplash.com/@samanthasophia?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/children-church?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
|
||||
|
||||
## Pews
|
||||
|
||||
Several years ago, in the small village of Okeford Ftizpaine in South West England, locals were outraged when their parish church [decided](https://premierchristian.news/en/news/article/outrage-over-church-plans-to-sell-off-victorian-era-pews-to-widen-the-aisle-for-obese-people?fbclid=IwAR1JSZwKv0hrkEEXZdPj1dGLsHgMnVgh6NlvL0gpUDSVhUrrMi-c_SOjLe4) to sell off its 150-year-old, antique Victorian-era wooden pews.
|
||||
|
||||
As comfortable as old wooden pews are, I would not personally object to being able to sit on something more modern and easy on the backside, especially during the weekly sermon by the local vicar.
|
||||
|
||||
Not the people of Okeford Fitzpaine, though. They would rather have kept their old pews. However, it turns out the removal of these ancient bench seats is rather a matter of necessity as the sanctuary requires more flexible furnishings to allow space for people who are… how do you say it nicely? More rotund than the average human.
|
||||
|
||||
A recent report by the church committee concluded: *“We have had occasions at weddings where the couple have been too large to be able to walk side by side down the aisle. With different chairs, we would be able to widen the aisle.”* They also added that the the pews were not suited to the *“human form of today”* — presumably, that means the larger human form.
|
||||
|
||||
Even so, it beats me how a church community could somehow think that uncomfortable, 150-year-old wooden pews were so essential to church life that they are worth fighting for — as if single chairs might somehow be the instruments of Satan.
|
||||
|
||||
Burn the pews, I say!
|
||||
|
||||
And while we are at it, let’s get rid of rows altogether. I say that because rows divide and differentiate. Rows promote the consumerist mindset. Rows promote the brainless acceptance of information without critique. Rows perpetuate the hierarchical model that places an expert up the front to mediate between us and God. How about we meet in circles instead — around tables even? Tables invite connection. Tables invite conversation. Tables invite friendship.
|
||||
|
||||

|
||||
|
||||
Photo by [Kyler Nixon](https://unsplash.com/@knixon?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/pew?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
|
||||
|
||||
## Marriage
|
||||
|
||||
In 2017, the satirical Christian website [Babylon Bee](https://babylonbee.com/news/woman-singles-ministry-gets-married-promoted-real-christian) published an article entitled, *“Woman In Singles’ Ministry Gets Married, Promoted To Real Christian.”* The article gently pokes fun at the idea that getting married is basically a ‘level up’ in Christian circles.
|
||||
|
||||
The reality is that the popular view of our day is that singleness is a bad position and marriage will cure it — that being single is not sufficient, not adequate. It’s something you need to change because it’s wrong. And, if this is the popular view in our society, you can bet your bottom dollar that it’s the popular view in the church. At first, we make fun of single people (mainly while they are young), but only for a while. As they get older, we begin to wonder what’s wrong with them. Are their standards too high? Eventually, we end up pitying them, as if they were destined for a miserable life.
|
||||
|
||||
Somehow, we arrived at the idea — the myth — that singleness is bad. It’s the reason my Mum started suggesting suitable partners for me as soon as I turned 18. It’s the reason why I signed up to a dating website when I was in my early 20s. It’s the reason why people in the church ask, *“So, when are you gonna find yourself a nice girl?”* It’s the reason why half of you are trying to match-make for your single friends. Christian are often guilty of treating singleness like it’s a problem that needs to be solved — despite the fact that Jesus and the Apostle Paul were single men.
|
||||
|
||||
In fact, the Apostle Paul comes along in [1 Corinthians 7](https://www.biblegateway.com/passage/?search=1+Corinthians+7%3A8&version=ERV) and lifts up singleness as a legitimate way to live, in a way that would have shocked the world in which they lived at the time. Suddenly Paul is calling singleness a gift. A gift! Imagine that! In so doing, Christianity was the first religion that held up singleness as good. So, the church ought to quit making it out like married Christians are on a higher level, somehow.
|
||||
|
||||

|
||||
|
||||
Photo by [Richard Jaimes](https://unsplash.com/@richardconr?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/wedding-church?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)
|
||||
|
||||
## It’s time to kill the sacred cows
|
||||
|
||||
Call me a heretic if you like, but I don’t think that Jesus is impressed by our attempts to clutch at power, to elevate some and to put others ‘in their place,’ to resist change, preserve the status quo, and uphold ancient practices and models that are superfluous to the fundamentals of Christianity.
|
||||
|
||||
And I really don’t think that Jesus cares too much about the form of our worship — our buildings, our furniture, our music, and our religious traditions.
|
||||
|
||||
So, why do we elevate these things to such a high position that we would be willing to fight over them? I’ve seen churches split, people hurt, and relationships destroyed over these trivial matters.
|
||||
|
||||
They are sacred cows! Now, let’s slaughter them!
|
||||
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: "Nobody Wants To Use These Array Methods😭"
|
||||
source: "https://medium.com/coding-beauty/nobody-wants-to-use-these-array-methods-957180e597ac"
|
||||
author:
|
||||
- "[[Tari Ibaba]]"
|
||||
published: 2024-10-13
|
||||
created: 2024-10-29
|
||||
description: "Array copyWithin() copies a part of an array to another position in the same array and returns it without increasing its length. The cool thing about these new methods is how they let you get and…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@tariibaba?source=post_page---byline--957180e597ac--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/coding-beauty?source=post_page---byline--957180e597ac--------------------------------)
|
||||
|
||||

|
||||
|
||||
There’s so much more to arrays than `map()`, `filter()`, `find()`, and `push()` .
|
||||
|
||||
But most devs are completely clueless about this — several powerful methods they’re missing out on.
|
||||
|
||||
Check these out:
|
||||
|
||||
## 1\. `copyWithin()`
|
||||
|
||||
`Array` `copyWithin()` copies a part of an array to another position in the same array and returns it without increasing its length.
|
||||
|
||||

|
||||
|
||||
`end` parameter is optional:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 2\. at() and `with()`
|
||||
|
||||
`at()` came first and `with()` came a year after that in 2023.
|
||||
|
||||
They are the functional and immutable versions of single-element array modification and access.
|
||||
|
||||

|
||||
|
||||
The cool thing about these new methods is how they let you get and change element values with negative indexing.
|
||||
|
||||
## 3\. `Array` `reduceRight()` method
|
||||
|
||||
Works like `reduce()` but the callback goes from right to left instead of left to right:
|
||||
|
||||

|
||||
|
||||
Here’s another great scenario for `reduceRight()`:
|
||||
|
||||

|
||||
|
||||
## 4\. Array `findLast()` method
|
||||
|
||||
New in [ES13](https://wp.codingbeautydev.com/es13-javascript-features/): find array item starting from last element.
|
||||
|
||||
Great for cases where where searching from end position produces better performance than with `find()`
|
||||
|
||||
Example:
|
||||
|
||||

|
||||
|
||||
This works but as our target object is closer to the tail of the array, `findLast()` should run faster:
|
||||
|
||||

|
||||
|
||||
Another use case for `findLast()` is when we have to specifically search the array from the end to get the correct element.
|
||||
|
||||
For example, if we want to find the last even number in a list of numbers, `find()` would produce a totally wrong result:
|
||||
|
||||

|
||||
|
||||
But `findLast()` will start the search from the end and give us the correct item:
|
||||
|
||||

|
||||
|
||||
## 5\. `toSorted()`, `toReversed()`, `toSpliced()`
|
||||
|
||||
ES2023 came fully packed with immutable versions of `sort()`, `reverse()`, and `splice()`.
|
||||
|
||||
Okay maybe `splice()` isn't used as much as the others, but they all mutate the array in place.
|
||||
|
||||

|
||||
|
||||
Immutability gives us predictable and safer code; debugging is much easier as we’re certain variables never change their value.
|
||||
|
||||
Arguments are exactly the same, with `splice()` and `toSpliced()` having to differ in their return value.
|
||||
|
||||

|
||||
|
||||
## 6\. Array `lastIndexOf()` method
|
||||
|
||||
The `lastIndexOf()` method returns the last index where a particular element can be found in an array.
|
||||
|
||||

|
||||
|
||||
We can pass a second argument to `lastIndexOf()` to specify an index in the array where it should stop searching for the string after that index:
|
||||
|
||||

|
||||
|
||||
## 7\. Array `flatMap()` method
|
||||
|
||||
The `flatMap()` method transforms an array using a given callback function and then flattens the transformed result by one level:
|
||||
|
||||

|
||||
|
||||
Calling `flatMap()` on the array does the same thing as calling `map()` followed by a `flat()` of depth 1, but it\`s a bit more efficient than calling these two methods separately.
|
||||
|
||||

|
||||
|
||||
## Final thoughts
|
||||
|
||||
They are not that well-known (yet) but they have their unique uses and quite powerful.
|
||||
@@ -0,0 +1,162 @@
|
||||
---
|
||||
title: "Obsidian’s New Bases Feature is The Biggest Update Since Properties"
|
||||
source: "https://medium.com/obsidian-observer/obsidians-new-bases-feature-is-the-biggest-update-since-properties-2aad08a102eb"
|
||||
author:
|
||||
- "[[Theo Stowell]]"
|
||||
published: 2025-07-28
|
||||
created: 2025-08-29
|
||||
description: "The video was a very off-the-cuff piece of work that I recorded in one take when I read on Twitter that the new feature had come out. I jumped straight on recording, with no preparation, because I…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[Sitemap](https://medium.com/sitemap/sitemap.xml)## [Obsidian Observer](https://medium.com/obsidian-observer?source=post_page---publication_nav-dc0a52745260-2aad08a102eb---------------------------------------)
|
||||
|
||||
[](https://medium.com/obsidian-observer?source=post_page---post_publication_sidebar-dc0a52745260-2aad08a102eb---------------------------------------)
|
||||
|
||||
Welcome to The Obsidian Observer, a hub for all Obsidian enthusiasts. Whether you’re a beginner or a seasoned pro, our publication delivers in-depth how-to guides, innovative workflows, and captivating opinions to help unlock your note-taking potential.
|
||||
|
||||

|
||||
|
||||
> **If you’re not a Medium member you can still read this piece for free by clicking my friend link here —** [**Obsidian’s New Bases Feature is The Biggest Update Since Properties**](https://medium.com/@theostowell/2aad08a102eb?sk=ed16a4c23a1eaa337bbb496f76be52fd)
|
||||
|
||||
Now, this *isn’t* the first piece of work on the internet published about Obsidian Bases.
|
||||
|
||||
But I made a YouTube video that I shared when Bases first came out…
|
||||
|
||||
…and so I thought I could take my time with putting together this article.
|
||||
|
||||
The video was a very off-the-cuff piece of work that I recorded in one take when I read on Twitter that the new feature had come out.
|
||||
|
||||
I jumped straight on recording, with no preparation, because I knew how important and powerful Bases were going to be inside the PARAZETTEL system in my vault ([which you can try for free at this link](https://go.parazettel.com/?utm_source=medium&utm_campaign=bases_biggest_change)).
|
||||
|
||||
Since then, I’ve been very busy with university work (I’ve now graduated completely!) and I’ve neglected to write a longer, more detailed round-up.
|
||||
|
||||
But, finally, I thought I’d tackle Obsidian bases and tell you a little about how I’ve been using them for the last couple of months…
|
||||
|
||||
### What are Obsidian Bases?
|
||||
|
||||
Do you remember a couple of years back when Obsidian released the Properties update? Where we could now look at our notes’ properties formatted nicely at the top of our note as opposed to somewhat ugly YAML metadata?
|
||||
|
||||
For a long time, Dataview (one of the most popular Obsidian plugins) was the only plugin that we could use to query those properties of our notes and display them in a nice, readable output format, like a table or a list.
|
||||
|
||||
But recently, along came the Bases feature, and they blew Dataview out of the water by introducing a more powerful, capable, and native (as opposed to third-party) property aggregation and display feature.
|
||||
|
||||
Bases are actual separate individual files inside your Obsidian vault, with the extension.base, and you can configure them to query and display your notes in any way you’d like, given you’ve added note properties.
|
||||
|
||||
As well, in the resulting views that are displayed, you can actually edit the properties of the notes that are displayed. This was one of the ways in which Dataview fell short, as a data-view-only (duh) rather than a complete property querying and managing solution.
|
||||
|
||||
But even though both Dataview and Bases are extremely powerful and useful tools, there is only one way that I use (or used in the case of the former) them in my vault…
|
||||
|
||||
### My primary use of Obsidian Bases
|
||||
|
||||
Some of my most popular work has been where I talk about using Folder notes and Dataview to create indexes of different areas of my note-taking system.
|
||||
|
||||
It’s my most popular video on YouTube as of right now, and one of my oldest, most popular articles that I published back in 2023. Today the plugins Dataview and Folder notes remain two of the only third-party additions to [the PARAZETTEL vault and system that I share](https://go.parazettel.com/?utm_source=medium&utm_campaign=bases_biggest_change).
|
||||
|
||||
Folder notes are simply notes that appear as you click the folder name in the sidebar in Obsidian. As opposed to expanding the folder in the Explorer, you can open up a note that is a folder note. So, an index and a place to write any general notes related to that folder and its contents.
|
||||
|
||||
And now that Bases have come along, they’ve taken the place of Data View in the displaying of notes in certain folders on the indexes of folder notes.
|
||||
|
||||

|
||||
|
||||
Here is the embedded Base in a folder note of a project that I’m just about to start working on
|
||||
|
||||
What’s also useful is that I’ve created a simple base template that I call MoC (Map of Content is the widely known name, even though I more often refer to these notes as Indexes).
|
||||
|
||||
Every time I create a new Folder note index, all I’ve got to do is embed that one base, and it’s configured to just display that folder’s notes with no additional configuration on my end.
|
||||
|
||||
This means I have one main base that I’ve already embedded into a template. This saves me so much time in getting the bulk of my work set up. However, I’ve got one or two more different Bases in my vault…
|
||||
|
||||
### The other places I use special bases
|
||||
|
||||
I mentioned that aside from this MoC.base, I had a few other specific use cases for different Bases, where I created custom solutions for each purpose.
|
||||
|
||||
One of these is in my Content folder, where I can now very simply separate out all the different types of work that I’m going to be writing in the drafts, and very quickly browse through when I feel like writing something specific that day (think an article for here or a YouTube video to share)…
|
||||
|
||||

|
||||
|
||||
This is one.base, with three different views built in for different types of content
|
||||
|
||||
And that’s the good thing about Bases as well — you can have a single base as such with options to create multiple different views that you can configure differently.
|
||||
|
||||
Also, inside my Readwise folder, where I import all of my highlights from content I’ve read or otherwise consumed, I have a custom base that works in a very similar way…
|
||||
|
||||

|
||||
|
||||
Filtering by content type can be very useful
|
||||
|
||||
It’s very useful to see all of the most important details about a source without actually having to go through the process of opening up the page and reading it there.
|
||||
|
||||
And that’s it for my own use cases. But that’s not to say that I might not have other ambitions to use the feature in the future.
|
||||
|
||||
### Other places I might look to use Bases
|
||||
|
||||
I was inspired when I saw Steph Ango, Obsidian CEO, use a combination of bases and the Leaflet plugin that allows you to view maps to create a list of locations.
|
||||
|
||||
Whilst I still use Google Maps for this, it seems nice to move more and more of your life offline and into your Obsidian vault, where privacy is higher and the scope to link different bits and pieces together is much greater.
|
||||
|
||||
Bases also work very well with using the Obsidian Web Clipper to save content from the internet into Obsidian.
|
||||
|
||||
And now, while I use Readwise to clip highlights mostly, rather than full pieces of content, I’ve also been looking at creating a folder where my website clippings are saved as well, necessitating a Base to display this.
|
||||
|
||||
But as of right now, Bases are pretty much only used for me to display the notes inside a certain folder, and that’s what I’ll continue to use them for until I find something else worthwhile doing.
|
||||
|
||||
Because I am such a big proponent of [Minimal Note-Taking](https://medium.com/@fundamentalised/minimal-note-taking-a-complete-guide-d951329e374e), I don’t want to try and include them where I don’t need to include them, seeing as that will create additional distraction for not much extra benefit in my workflow.
|
||||
|
||||
That brings us to the end of this more deliberate, but still rather simple, round-up of what I use Bases for.
|
||||
|
||||
I didn’t want to give you the actual ins and outs of how the feature works, because you can watch the video, or even better, give it a try yourself. You learn more quickly and concretely by trying to figure out how things work in the first person.
|
||||
|
||||
Instead, I just wanted to point out the things I use the feature for. I want to teach you functional note-taking, and so it would feel slightly disingenuous if I started sharing loads of junk sentences about use cases I don’t actually have, hence the insight on Folder notes, indexes, and only a little else.
|
||||
|
||||
Let me know if there are other Bases uses you’ve seen that you think are interesting and want me to take a look at, though!
|
||||
|
||||
Anyway, I graduated from university, very soon before the writing of this piece. I’m going to be sharing something soon, talking about this and my ambitions for the future with these articles and wider PKM content.
|
||||
|
||||
And so, thank you for reading for today — I’ll publish this new piece soon!
|
||||
|
||||
> [Try my free Obsidian vault PARAZETTEL](https://go.parazettel.com/?utm_source=medium&utm_campaign=bases_biggest_change)
|
||||
> [Theory + proven system to master PKM](https://parazettel.com/?utm_campaign=bases_biggest_change)
|
||||
> [All my paid resources in a single place](https://skool.com/parazettel)
|
||||
|
||||
[](https://medium.com/obsidian-observer?source=post_page---post_publication_info--2aad08a102eb---------------------------------------)
|
||||
|
||||
[](https://medium.com/obsidian-observer?source=post_page---post_publication_info--2aad08a102eb---------------------------------------)
|
||||
|
||||
[Last published Aug 22, 2025](https://medium.com/obsidian-observer/here-are-two-ethical-and-non-invasive-ways-to-use-ai-in-your-pkm-and-writing-75bdd7b00f66?source=post_page---post_publication_info--2aad08a102eb---------------------------------------)
|
||||
|
||||
Welcome to The Obsidian Observer, a hub for all Obsidian enthusiasts. Whether you’re a beginner or a seasoned pro, our publication delivers in-depth how-to guides, innovative workflows, and captivating opinions to help unlock your note-taking potential.
|
||||
|
||||
## Responses (2)
|
||||
|
||||
Thomas Peetz
|
||||
|
||||
What are your thoughts? [Aaat](https://medium.com/@aaat93610?source=post_page---post_responses--2aad08a102eb----0-----------------------------------)
|
||||
|
||||
[
|
||||
|
||||
Aug 3
|
||||
|
||||
](https://medium.com/@aaat93610/good-article-keep-good-working-02e23f9a8cca?source=post_page---post_responses--2aad08a102eb----0-----------------------------------)
|
||||
|
||||
```c
|
||||
good article. keep good working.
|
||||
```
|
||||
|
||||
5
|
||||
|
||||
```c
|
||||
Congrats on graduation! Thanks for this article on Bases and your use cases. I’d love to see the code for your Folder Note base and especially your Readwise one.
|
||||
```
|
||||
|
||||
5
|
||||
|
||||
## More from Theo Stowell and Obsidian Observer
|
||||
|
||||
## Recommended from Medium
|
||||
|
||||
[
|
||||
|
||||
See more recommendations
|
||||
|
||||
](https://medium.com/?source=post_page---read_next_recirc--2aad08a102eb---------------------------------------)
|
||||
@@ -0,0 +1,178 @@
|
||||
---
|
||||
title: "Oklahoma Christians And Their Plot To Kill Children"
|
||||
source: "https://medium.com/deconstructing-christianity/oklahoma-christians-and-their-plot-to-kill-children-ca2ae615be39"
|
||||
author:
|
||||
- "[[Lilith Helstrom]]"
|
||||
published: 2024-05-31
|
||||
created: 2024-10-29
|
||||
description: "In order to properly explain what is happening in Oklahoma, I have to give you a brief history of part of my own life first. I almost committed suicide at school once. I was in ninth grade and I…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## If this becomes an enforced law, there will be blood on their hands
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@lilith.helstrom?source=post_page---byline--ca2ae615be39--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/deconstructing-christianity?source=post_page---byline--ca2ae615be39--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by Ben White on Unsplash
|
||||
|
||||
In order to properly explain what is happening in Oklahoma, I have to give you a brief history of part of my own life first.
|
||||
|
||||
I almost committed suicide at school once. I was in ninth grade and I couldn’t take the bullying anymore.
|
||||
|
||||
I didn’t have any weapons or pills, so there were only two ways left that I could think of to kill myself. I decided I’d either use some of my clothes to hang myself in the bathroom or climb onto the roof and jump off.
|
||||
|
||||
I was pretty sure I was going to do the first one because I didn’t want to make a scene. My classmates mocked everything I did and I could imagine them gathering around as I prepared to jump off the roof. I knew they’d egg me on and laugh at me as I killed myself. I imagined them kicking my corpse afterwards. I didn’t want to die that way when bullying was one of the major reasons I was suicidal.
|
||||
|
||||
I wound up calling my Mom first in my one last ditch effort to possibly keep trying to stay alive.
|
||||
|
||||
It was the nineties, so I had to use a pay phone to contact her. I said, “I’m going to stand in front of the school for the next fifteen minutes. Either pick me up or I’m committing suicide in the bathroom.”
|
||||
|
||||
My Mom insulted me a bunch because she was abusing me emotionally and physically. She said she might show up to get me, but she wasn’t sure. She thought I was being manipulative, even though she knew I had severe mental health problems, which she told me regularly were burdens to her.
|
||||
|
||||
So I waited the fifteen minutes outside and when I didn’t see her, I turned around to walk back into the school, ready to kill myself and believing at that point it was destiny.
|
||||
|
||||
I heard my mom’s voice shout behind me. “No, don’t go in. I decided to come. We can go home.”
|
||||
|
||||
I went home and hid in my room, barely clinging to my sanity. I just wanted to hide from everyone and everything for a while.
|
||||
|
||||
What I actually needed was social workers to take me out of that environment and a therapist to help me deal with my trauma. What I got instead was church and Jesus.
|
||||
|
||||
It made my suicidal ideation worse.
|
||||
|
||||
In church, we would regularly hear Proverbs 13:24:
|
||||
|
||||
> Whoever spares the rod hates their children, but the one who loves their children is careful to discipline them.
|
||||
|
||||
The pastor would talk about the virtues of spanking your children, according to this verse, while insisting that parents should never hold back on assaulting their children or we would become spoiled.
|
||||
|
||||
It made me think that all the times my Mom spanked me so hard with wooden spoons that they snapped in half on my ass or when my Dad chased me around bottomless, whipping me on the bare legs and butt with a belt, that all those things were perfectly normal, even though I screamed while they did them.
|
||||
|
||||
I thought it was normal for my mom to smack me upside the back of the head every day, slap me in the face, kick me, punch me, and yank my hair violently while she screamed at me. I thought that’s just what she had to do because I was an evil kid going to hell, as she told me.
|
||||
|
||||
Since none of that counted as abuse in my mind, I didn’t know how to ask adults for help, even though I desperately wanted it.
|
||||
|
||||
I told my youth group leader one time, “My mother hates me.”
|
||||
|
||||
She didn’t question why I said that, what was causing it, or if anything bad was happening to me at home. She said, “Of course your Mom loves you. You have a house you live in and food to eat every day, don’t you?”
|
||||
|
||||
I knew something was wrong with her asking me that question, but I didn’t know how to explain how it was wrong. So I just said, “Yes.”
|
||||
|
||||
“Then your Mom loves you,” she insisted and I nodded my head, even though a year before, my Mom had beaten me for at least an hour, while telling me she was barely resisting the urge to murder me as I screamed for help from my Dad. He never came to help.
|
||||
|
||||
I developed agoraphobia, OCD, panic attacks, and PTSD. I stopped being able to act normal in public and I ran to the church for help.
|
||||
|
||||
They quoted 2 Timothy 1:7 to me.
|
||||
|
||||
> For God gave us a spirit not of fear but of power and love and self-control
|
||||
|
||||
They said I just needed to have enough faith and love for God and then I wouldn’t be scared anymore. It was a lack of spiritual strength that was making me this way. Not trauma or abuse by humans, I was being attacked by Satan and demons.
|
||||
|
||||
I accepted this since my Mom insisted that I was demon possessed all the time.
|
||||
|
||||
I read Psalm 91 constantly. I sang it to myself because it was supposed to be the protection psalm, desperate to feel it.
|
||||
|
||||
> …5 You will not fear the terror of night,
|
||||
>
|
||||
> nor the arrow that flies by day,
|
||||
>
|
||||
> 6 nor the pestilence that stalks in the darkness,
|
||||
>
|
||||
> nor the plague that destroys at midday.
|
||||
>
|
||||
> 7 A thousand may fall at your side,
|
||||
>
|
||||
> ten thousand at your right hand,
|
||||
>
|
||||
> but it will not come near you.
|
||||
>
|
||||
> 8 You will only observe with your eyes
|
||||
>
|
||||
> and see the punishment of the wicked.
|
||||
>
|
||||
> 9 If you say, “The Lord is my refuge,”
|
||||
>
|
||||
> and you make the Most High your dwelling,
|
||||
>
|
||||
> 10 no harm will overtake you,
|
||||
>
|
||||
> no disaster will come near your tent.
|
||||
|
||||
I screamed prayers at God, cried hysterically in fear and begged Jesus to save me from my fear, but because I was still being beaten and bullied, that didn’t help.
|
||||
|
||||
The panic attacks still came.
|
||||
|
||||
“The demons keep attacking me,” I told my parents. “I can feel them trying to enter me.”
|
||||
|
||||
I was mixing up feeling fear with demon possession at that point because I’d been brainwashed at my most vulnerable moments to believe this was the truth. I’d been forced to stay in a situation that was dangerous to me and because of it, my mental deterioration continued.
|
||||
|
||||
I saw pastors for counseling. They prayed for me and read Bible verses because they had no psychological training. They couldn’t help me work through my trauma or even recognize the signs that someone was being abused. So they just lectured me on forgiveness and having faith or gave me platitudes about Jesus protecting me.
|
||||
|
||||
I just had to stop being so immature and start being a better Christian and then I wouldn’t have anxiety anymore, according to them.
|
||||
|
||||
It wasn’t until my mid twenties that I could even deal with my psychological issues at all. I had just started dating my husband and we had our first fight.
|
||||
|
||||
I had been taught to be super submissive in my relationships by my misogynistic parents and by my church that told me to always submit to a man. My ex was extremely psychologically abusive, often referring to me as his dog, his bitch, and even called me “pathetic” as a pet name. He has been my only long term relationship before my husband.
|
||||
|
||||
So I did what I was taught to do in arguments with a man I was romantic with. I got down on my hands and knees and bowed to him and begged for forgiveness as I insulted myself at his feet.
|
||||
|
||||
“What the fuck are you doing?” My husband, who was not raised to be religious or misogynistic, asked me in shock.
|
||||
|
||||
I didn’t know what to say. I didn’t know why he was still mad. I didn’t know what more he could want from me or how to explain myself.
|
||||
|
||||
He just stared at me in pity, then made me stand up and said. “This is not how you apologize to people. You were very badly abused, weren’t you?”
|
||||
|
||||
No one has ever used that word, abuse, to describe my situation, so I thought it was ridiculous. My mind was shouting, *NO!*
|
||||
|
||||
But then I thought about it. Maybe I had been abused? And it was only then that I started distancing myself from my mom and was actually able to talk for the first time to a therapist about what happened to me.
|
||||
|
||||
Abuse. That’s what had happened to me.
|
||||
|
||||
And I know this was a long story and I’m sure you’re thinking, “What the fuck does it have to do with the title of the article?” But I couldn’t explain my thought process until I explained my background first.
|
||||
|
||||
The reason I got trapped in that situation was because I was raised in an extremely religious family and an extremely religious small town that had taken over everything.
|
||||
|
||||
They didn’t know how to deal with people like me. They blamed everything on spiritual stuff, but I actually needed secular help from psychologists.
|
||||
|
||||
They said that taking pills for mental health problems and talking to a therapist was wrong. They said everything was a spiritual war and that if people had issues with these problems, they were just fighting the devil.
|
||||
|
||||
I mean, what else could they say, when they rejected science and inserted religion into many parts of life where it didn’t belong?
|
||||
|
||||
And it almost killed me. My mom could have murdered me and I was extremely suicidal, even back in elementary school.
|
||||
|
||||
I don’t know how I worked through all the brainwashing and couldn’t have done it without my husband’s help.
|
||||
|
||||
So it deeply disturbs me that Oklahoma just [passed a bill](https://ktul.com/amp/news/local/satanic-temple-to-place-ministers-in-oklahoma-schools-if-sb-36-becomes-law) at the end of April saying that ministers can be used as counselers at public schools instead of people with secular and scientific training. Pastors can use religion on children who aren’t religious to supposedly fix all their problems.
|
||||
|
||||
Just so you know, the bill did indeed pass, as the article I linked to above explains.
|
||||
|
||||
School counselors are supposed to be trained so that they can identify kids like me and get them help. It’s the kids’ only chance, often, of receiving help at all.
|
||||
|
||||
Pastors are trained in the Bible and no amount of Bible verses will fix a situation like mine was. I know because I tried them all.
|
||||
|
||||
Pastors should be dealing with only Bible stuff and church. They should be coaching people in prayer and giving sermons. Not being psychologists, not ever because these kinds of situations are tricky.
|
||||
|
||||
And yes, I survived my situation, but many children in similar situations do not survive.
|
||||
|
||||
A bill like this will put those kids in more danger. It will eliminate their only chances to be saved.
|
||||
|
||||
==Oklahoma politicians have blood on their hands as they ignore children’s screams.==
|
||||
|
||||
All these politicians care about is their religious agendas and how they can get more votes if they can indoctrinate children young. They don’t care how damaging any of this is. Sacrificing abused children is worth it to them.
|
||||
|
||||
[Click here to support my writing](https://ko-fi.com/lilithhelstrom)
|
||||
|
||||

|
||||
|
||||
## Lilith's Thoughts On Religion And Atheism
|
||||
@@ -0,0 +1,184 @@
|
||||
---
|
||||
title: "Only One Script You Need for Monitor Linux !"
|
||||
source: "https://medium.com/devsecops-community/only-one-script-you-need-for-monitor-linux-aa106e883d51"
|
||||
author:
|
||||
- "[[Karthick Dkk]]"
|
||||
published: 2024-10-20
|
||||
created: 2024-10-29
|
||||
description: "With this script in place, you’ll have one comprehensive solution for monitoring everything on your Linux system. Linux system administrators often face the challenge of monitoring numerous…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@karthidkk123?source=post_page---byline--aa106e883d51--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/devsecops-community?source=post_page---byline--aa106e883d51--------------------------------)
|
||||
|
||||
With this script in place, you’ll have one comprehensive solution for monitoring everything on your Linux system.
|
||||
|
||||

|
||||
|
||||
Linux system administrators often face the challenge of monitoring numerous performance metrics, logs, and system health parameters.
|
||||
|
||||
Traditionally, you’d rely on a variety of tools and scripts to gather data on disk usage, CPU performance, memory status, network traffic, and system logs. But what if you could have **one script** to monitor everything on your Linux system?
|
||||
|
||||
In this blog post, we’ll show you how to set up a **single monitoring script** that gives you insights into every crucial aspect of your Linux system.
|
||||
|
||||
From CPU usage to disk space, memory consumption to network activity,
|
||||
In this script will provide a one-stop solution for your system monitoring needs.
|
||||
|
||||
Let’s dive into it!
|
||||
|
||||
## Why Monitoring Is Critical
|
||||
|
||||
Monitoring your Linux system is crucial for several reasons:
|
||||
|
||||
1. **System Health**: Proactively identifying issues before they become critical can help avoid system downtime.
|
||||
2. **Performance Optimization**: Monitoring resource usage allows you to adjust your system to ensure peak performance.
|
||||
3. **Security**: Regular monitoring helps detect abnormal patterns that could indicate security breaches or attacks.
|
||||
4. **Log Management**: Effective monitoring includes tracking logs to troubleshoot any errors or warnings promptly.
|
||||
|
||||
While there are numerous tools like **top**, **htop**, **iftop**, and **df**, managing multiple monitoring solutions can become cumbersome. With a single script, you simplify your workflow and have a centralized point of reference for your system’s health.
|
||||
|
||||
## Setting Up a One-Script Solution
|
||||
|
||||
Before creating the script, let’s outline what it needs to monitor:
|
||||
|
||||
1. **CPU Usage**: Keep an eye on your system’s processor performance.
|
||||
2. **Memory Usage**: Monitor RAM and swap usage.
|
||||
3. **Disk Usage**: Ensure that your file systems aren’t getting too full.
|
||||
4. **Network Activity**: Track incoming and outgoing traffic.
|
||||
5. **Running Processes**: Watch for any rogue or resource-hogging processes.
|
||||
6. **System Logs**: Continuously monitor critical log files for errors or warnings.
|
||||
|
||||
## Install Necessary Packages:
|
||||
|
||||
```
|
||||
sudo apt-get install sysstat ifstat -ysudo dnf install sysstat ifstat -ysudo yum install sysstat ifstat -y
|
||||
```
|
||||

|
||||
|
||||
## The Complete Monitoring Script
|
||||
|
||||
Here’s a comprehensive script that combines all the above metrics into one output. You can schedule this to run at intervals or execute it manually when needed.
|
||||
|
||||
## Installation Instrcutions
|
||||
|
||||
```
|
||||
sudo mkdir -p /opt/script/
|
||||
sudo vim /opt/script/monitoring.sh
|
||||
sudo chmod +x /opt/script/monitoring.sh
|
||||
/opt/script/monitoring.sh (or) cd /opt/script && ./monitoring.sh
|
||||
```
|
||||
```
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
echo -e "${GREEN}===== System Monitoring Script =====${NC}"
|
||||
echo -e "${YELLOW}\n>> CPU Usage: ${NC}"
|
||||
mpstat | awk '/all/ {print "CPU Load: " $3 "% idle"}'
|
||||
echo -e "${YELLOW}\n>> Memory Usage: ${NC}"
|
||||
free -h | awk '/Mem/ {print "Total Memory: " $2 "\nUsed: " $3 "\nFree: " $4}'
|
||||
echo -e "Swap:\n"$(free -h | awk '/Swap/ {print "Total: " $2 ", Used: " $3 ", Free: " $4}')
|
||||
echo -e "${YELLOW}\n>> Disk Usage: ${NC}"
|
||||
df -h | grep '^/dev' | awk '{print $1 ": " $5 " used, " $4 " available"}'
|
||||
echo -e "${YELLOW}\n>> Network Traffic: ${NC}"
|
||||
ifstat -i eth0 1 1 | awk 'NR==3 {print "RX: " $1 " KB/s, TX: " $2 " KB/s"}'
|
||||
echo -e "${YELLOW}\n>> Top 5 Memory Consuming Processes: ${NC}"
|
||||
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 6
|
||||
echo -e "${YELLOW}\n>> Top 5 CPU Consuming Processes: ${NC}"
|
||||
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 6
|
||||
echo -e "${YELLOW}\n>> Recent Errors in System Logs: ${NC}"
|
||||
journalctl -p 3 -xb | tail -n 10
|
||||
echo -e "${GREEN}===== Monitoring Completed =====${NC}"
|
||||
```
|
||||
|
||||
## Breakdown of the Script
|
||||
|
||||
1. **CPU Usage**: We use `mpstat` to get CPU load, particularly focusing on how much idle time the CPU has. If this value is low, your system is under heavy load.
|
||||
2. **Memory Usage**: The `free -h` command gives a human-readable summary of memory and swap usage. High memory usage can indicate an application using excessive resources.
|
||||
3. **Disk Usage**: `df -h` shows disk space usage for each partition. Disk space running low can cause performance degradation and system crashes, so this is crucial.
|
||||
4. **Network Traffic**: Using `ifstat`, the script monitors the incoming and outgoing network traffic on a specific interface (in this case, `eth0`).
|
||||
5. **Top 5 Memory and CPU Consuming Processes**: With `ps`, the script lists the top 5 processes that are using the most memory and CPU, helping you pinpoint resource-heavy tasks.
|
||||
6. **System Logs Monitoring**: The `journalctl` the command displays recent errors from system logs, helping you identify issues that might not yet be affecting system performance but are critical to investigate.
|
||||
|
||||
## Automating the Monitoring Script
|
||||
|
||||
While manually running this script is useful, it becomes even more powerful when set to run automatically at intervals. You can do this using **cron**, the task scheduler built into Linux. For more about [crontab check out here.](https://medium.com/devsecops-community/day-10-scheduling-tasks-with-cron-jobs-in-linux-e298d17fc0e9)
|
||||
|
||||
## Method 1: Setting Up a Cron Job
|
||||
|
||||
To schedule the script to run, say every hour, follow these steps:
|
||||
|
||||
Open your crontab file:
|
||||
|
||||
```
|
||||
crontab -e
|
||||
```
|
||||
|
||||
Add the following line to schedule the script to run hourly:
|
||||
|
||||
```
|
||||
0 * * * * /path/to/your_script.sh >> /var/log/system_monitor.log
|
||||
```
|
||||
|
||||
This will execute the script every hour on the hour and log the output to a file.
|
||||
|
||||
*Note: You can the crontab time as per your requirement.*
|
||||
|
||||
## Send logs to Email via the Command line
|
||||
|
||||
Now, the server has the logs, but we need to log in and check the files every time, which is not a feasible solution.
|
||||
|
||||
Let’s automate via Email.
|
||||
|
||||
## Requirements:
|
||||
|
||||
1. Postfix — ( [Email configure for linux system check here](https://medium.com/devsecops-community/configure-office-365-email-on-centos-using-postfix-d682ffff6efc))
|
||||
2. mailutils
|
||||
|
||||
```
|
||||
# For ubuntusudo apt-get install mailutils -y# For Redhat/Centossudo yum install mailx -y
|
||||
```
|
||||
|
||||
## Method 1:
|
||||
|
||||
The command below will send our monitoring logs to email. You can change the interval to meet your requirements.
|
||||
|
||||
```
|
||||
0 * * * tail -n 25 /var/log/system_monitor.log | mail -s "Daily Report" -a /var/log/system_monitor.log recipient@example.com
|
||||
```
|
||||
|
||||
## Method 2: Re-write the script directly Send to Email
|
||||
|
||||
Here’s is alternative script, to send logs directly to Email. Same as the previous one.
|
||||
|
||||
```
|
||||
#!/bin/bashOUTPUT_FILE="/opt/script/monitoring_report.html"echo "<html><head> <title>System Monitoring Report</title> <style> body { font-family: Arial, sans-serif; } h2 { color: #2E8B57; } .section { margin-top: 20px; padding: 10px; } .cpu { color: #FFA500; } .memory, .disk, .network, .processes, .logs { color: #4682B4; } .error { color: #B22222; font-weight: bold; } pre { background-color: #f8f9fa; padding: 10px; border-radius: 5px; } </style></head><body> <h1 style='color: #2E8B57;'>System Monitoring Report</h1> <h2>Date: $(date)</h2>" > "$OUTPUT_FILE"echo "<div class='section cpu'><h2>CPU Usage:</h2><pre>" >> "$OUTPUT_FILE"mpstat | awk '/all/ {print "CPU Load: " $3 "% idle"}' >> "$OUTPUT_FILE"echo "</pre></div>" >> "$OUTPUT_FILE"echo "<div class='section memory'><h2>Memory Usage:</h2><pre>" >> "$OUTPUT_FILE"free -h | awk '/Mem/ {print "Total Memory: " $2 "\nUsed: " $3 "\nFree: " $4}' >> "$OUTPUT_FILE"echo -e "\nSwap:\n$(free -h | awk '/Swap/ {print "Total: " $2 ", Used: " $3 ", Free: " $4}')" >> "$OUTPUT_FILE"echo "</pre></div>" >> "$OUTPUT_FILE"echo "<div class='section disk'><h2>Disk Usage:</h2><pre>" >> "$OUTPUT_FILE"df -h | grep '^/dev' | awk '{print $1 ": " $5 " used, " $4 " available"}' >> "$OUTPUT_FILE"echo "</pre></div>" >> "$OUTPUT_FILE"echo "<div class='section network'><h2>Network Traffic:</h2><pre>" >> "$OUTPUT_FILE"ifstat -i eth0 1 1 | awk 'NR==3 {print "RX: " $1 " KB/s, TX: " $2 " KB/s"}' >> "$OUTPUT_FILE"echo "</pre></div>" >> "$OUTPUT_FILE"echo "<div class='section processes'><h2>Top 5 Memory Consuming Processes:</h2><pre>" >> "$OUTPUT_FILE"ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 6 >> "$OUTPUT_FILE"echo "</pre></div>" >> "$OUTPUT_FILE"echo "<div class='section processes'><h2>Top 5 CPU Consuming Processes:</h2><pre>" >> "$OUTPUT_FILE"ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 6 >> "$OUTPUT_FILE"echo "</pre></div>" >> "$OUTPUT_FILE"echo "<div class='section logs'><h2>Recent Errors in System Logs:</h2><pre class='error'>" >> "$OUTPUT_FILE"journalctl -p 3 -xb | tail -n 10 >> "$OUTPUT_FILE"echo "</pre></div>" >> "$OUTPUT_FILE"echo "</body></html>" >> "$OUTPUT_FILE"mail -s "System Monitoring Report" -a "Content-Type: text/html" recipient@example.com < "$OUTPUT_FILE"
|
||||
```
|
||||
|
||||
## Visualizing Your Data
|
||||
|
||||
While the script outputs information to your terminal or logs, you may want to visualize the data, especially if you’re managing a production server. For this, you can integrate the script with tools like **Grafana** and **Prometheus**. These tools collect and graph data, giving you an interactive, visual representation of your system’s performance over time.
|
||||
|
||||
## Enhancing Security with Monitoring
|
||||
|
||||
System monitoring isn’t just about performance; it also plays a vital role in **security**. For example:
|
||||
|
||||
- **Log Monitoring**: Keeping an eye on system logs helps you detect suspicious activities like repeated login attempts or unauthorized access.
|
||||
- **Process Monitoring**: Watching the processes on your system can reveal malware or unnecessary background tasks.
|
||||
- **Network Traffic**: Monitoring incoming and outgoing traffic may reveal abnormal patterns or potential security breaches.
|
||||
|
||||
Having a single script to monitor everything on your Linux system saves you time and makes the monitoring process more efficient. This approach combines multiple critical system checks into one easy-to-manage script, giving you a quick overview of your system’s health at any given moment.
|
||||
|
||||
By automating this process with cron jobs and visualizing the data with tools like Grafana, you can ensure that your system is running smoothly and identify issues before they escalate into critical problems.
|
||||
|
||||
**Helpful Tip**: Customize this script based on your system’s unique needs. You can add other checks, such as temperature monitoring for hardware or I/O statistics for high-performance environments.
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
title: "Poor Kids Like Us Remember These Things"
|
||||
source: "https://medium.com/bouncin-and-behavin-blogs/poor-kids-like-us-remember-these-things-9b4a9d636306"
|
||||
author:
|
||||
- "[[Jason Provencio]]"
|
||||
published: 2024-10-04
|
||||
created: 2024-10-29
|
||||
description: "If you grew up poor, there are many things you probably remember about the experience. I realized as a child that things were somewhat different in our home than in my friends’ homes. It’s funny to…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Nostalgic Poverty
|
||||
|
||||
## Only Children From Low-Income Families Know Them
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@Jason-P?source=post_page---byline--9b4a9d636306--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/bouncin-and-behavin-blogs?source=post_page---byline--9b4a9d636306--------------------------------)
|
||||
|
||||
If you grew up poor, there are many things you probably remember about the experience. I realized as a child that things were somewhat different in our home than in my friends’ homes. It’s funny to think back on it now, as an adult who’s much better off financially than during childhood.
|
||||
|
||||
*Much funnier than actually being poor back in the day. Trust me, I’ll never forget some of these things no matter how old I get.*
|
||||
|
||||
Granted, we didn’t have it nearly as bad as some kids. We weren’t destitute. We weren’t “A house full of skinny kids” poor. We always had a roof over our heads, even if it was an apartment. There was food for each meal, breakfast, lunch, and dinner. We had clean, albeit non-name-brand clothes to wear. Things certainly could have been worse.
|
||||
|
||||
My father was a pastor by trade. Though he was a bible college graduate, that didn’t translate into a comfortable yearly salary at most small churches he pastored. As the mother of two young boys, my mom stayed home with us, clipped coupons and our hair, and didn’t hold a job outside the home until we were teenagers.
|
||||
|
||||
She did the best she could with what she had to work with. But some of the things she did were somewhat suspect. Let me tell you about several things I remember that only people who were raised poor could relate to. Tell me if any of this sounds familiar to y’all.
|
||||
|
||||

|
||||
|
||||
**Powdered milk was a one-and-done experiment. Never again. Photo: Flickr.com**
|
||||
|
||||
We once caught her sneaking [**powdered milk**](https://pdf.sciencedirectassets.com/279785/1-s2.0-S0022030256X76356/1-s2.0-S0022030256912115/main.pdf?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEQaCXVzLWVhc3QtMSJHMEUCIQCmz7dBXlkl0B1UJWFcNCs7eFOxlMTjBixoduTOqcRILAIgKHBbPLqCO12Q%2BHe%2FDkz9zeWmRAKviTukLbXrErCjyPwqvAUInf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAFGgwwNTkwMDM1NDY4NjUiDGWuyeIdWyVHbztRdiqQBSInaeNytg0N2Bgo5T3WQ%2FuOaxVsVX5HRUinAwR1V9bp4dZtIS2Y%2BHLUN6Rqnf4E5sQCrdI9m9m%2BdUMr%2BJHpaxDW%2FohMzpdvEcLLSE2Cn1Kbb3IF4RvKGyqLUaI3vZgkDeH2gUC5nouDcYYvjs8k5RxUxMZNsW2Z6FFDgAyfebXEr2s%2FI3txD5nzJ23lYRrq3smu88rezrwWmgJiyJrrGTDdi%2B1FBSE5%2BC%2BVM7JHFvsThhvO0FurfY9jcs%2FPfkzrFQ%2FmooWJzK0q2BDZo1%2BZonr9SZz0gdFe%2BmafUvOA6fUoE842qS4F9G074sq4BX21OqkeIgL9ozf3WzkMURWRsSZcYjo7OHjZDjKyWtpUbSqOSJj4lm8KFcC8A5mVX%2Fzaunr4641U18xOtGms%2BC5MzNWlEyfCAwWuoxV4A22ZZFIQ5DdtGDNLkGbhLUFLEOpuMigkiGhbaiGmEep2watt7%2BW5v9OLqshxlL1%2FoboX87qkk0jRQkk6TsOoLIZZA3bStHTcn77qvuMJg2yBQLOXbimgD9MzRQIezu47wm6l7Aow3VjQTquU771gDMMShNQmM9wCZtNkeQ5KwOWO%2FBj%2FLRTH7Juy6FMfXg%2FB5u%2Bx8UB5w64QdBA5a8tgGRCKSzakAwEuRUVzzsVAX7Si7Qd9FesOpBeRV6iuPrVaQiRdT6pvf3GLg88xWH6CNuFj2fL3dKKb0KDl4iJ7zxMxxImNbxKvxlAgymn4GJbj4jUE8ekaGGtQxTlTsAX4fAmetyGWwlbpY9c0EDjHuwefNKyFPPvnANyuAwV%2BVTobP8LgLcl7PJ0%2B%2FLka4l85qylcBvytokgVEJbvE%2BHdCSU7zqY8RDW0DpQLPZhLEu2VKx1hY30tMJGjkKsGOrEBJ4ONGcFBNRiOvxY5f001B1%2BHE7%2FI7WsKsfJI2T2T0TayTcr1v4mcmFOH%2BAT76XVDyOZvUR03ENuR9pX6z29VP2crtbiNxZWXaVCUuzDXPpTPoFpb9pnLBENt7GzURdYf8hFERbNXzHx0JZEW9n5LNESj81HGw1H9IrDSPgtges5cAoemRFCQbY3f%2F14C2L%2B1cv2EMagYXby%2F3BvRxubDz0scQR4hbJOdOHFKilFGlNjs&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20231127T042435Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIAQ3PHCVTYYAA4MLOO%2F20231127%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=e4466b039b9ef7fc485326c385d9bcdd4cce424ddf669829c602869e2733ac2d&hash=79d3e340a02e5b83b8c1a359a2622edd7f383be443f11305090da93a56d5c62b&host=68042c943591013ac2b2430a89b270f6af2c76d8dfd086a07176afe7c76c2c61&pii=S0022030256912115&tid=spdf-3d3e19b9-7e38-429f-b702-2a5a7d5a13d1&sid=6c7321bc4dbf944e2d485212293f449b4fbegxrqa&type=client&tsoh=d3d3LnNjaWVuY2VkaXJlY3QuY29t&ua=13145a51045158065d55&rr=82c79a31fdddeb77&cc=us) into our generic brand Frosted Flakes. It was so gross. Little pockets of powdered milk would burst out from the surface of our sugary cereal bowl. I started wearing goggles at the breakfast table to protect my baby blues. My father vetoed Project Powdered Milk and increased my mother’s grocery budget by a couple of bucks a week.
|
||||
|
||||
We didn’t always make it easier on her. I’m certain we asked for more than a few things during our grocery shopping trips that she just couldn’t afford to get. ==My little brother also famously outed her one trip, yelling,== ==*“YOU CAN’T BUY VITAMINS WITH FOOD STAMPS, MOM!”*== ==After that, she started grocery shopping alone.==
|
||||
|
||||
On school days, we’d get dressed, putting on the finest fashions that one could purchase from K-Mart. I still have a romanticized view of K-Mart to this day because it was our primary shopping destination. I wrote a blog a couple of months ago about when the blue light special ruled the world:
|
||||
|
||||
Though there were no name-brand articles of clothing purchased there, and our Traxx shoes cost less than $10, K-Mart kept us looking decent. At least we had clothes that fit and were clean until we messed them up. That was good enough.
|
||||
|
||||
Until junior high, that is. That’s when we started caring about how other kids perceived us. Peer pressure started rearing its ugly head and we became aware that our K-Mart fashions were lame. As Tom Cruise told Dustin Hoffman in the movie ***Rain Man***, *“Let me clue you in on a little secret, Ray. K-Mart SUCKS.”*
|
||||
|
||||
K-Mart was a lousy place to shop for shoes and jeans, the two things that most defined you as cool or not as a junior high kid. But we didn’t mind it for socks and underwear. I never was more appreciative of this than when my mother tried to sneak used underwear into my dresser drawer.
|
||||
|
||||
That still creeps me out. Sure, it was washed and folded neatly, but I was no dummy. I knew my usual Fruit of the Loom brand, and when these new tighty-whitey foreign invaders surfaced, looking frazzled by a long journey from the Salvation Army, certain questions had to be asked.
|
||||
|
||||
Those got thrown away. Pops dusted off his wallet and increased the panties budget. Yes, my mother called them “panties” for all of our childhood years at home. I thought I wore panties until I was 21.
|
||||
|
||||

|
||||
|
||||
**Yep, we wore panties. Man-panties. Manties! Photo: Twitter**
|
||||
|
||||
Certain symbols of poverty also screwed us over around this age. My mother used to get [**blocks of free government cheese**](https://www.atlasobscura.com/articles/government-cheese) for our family. The boxes they came in were the perfect rectangular size for storing our baseball cards. This was cool until we’d bring them to school to trade with our friends.
|
||||
|
||||
*“HEY! Nice government cheese box! At least there’s one benefit of being poor!”*, some jackass kid yelled in our direction. My other friend Russell had the same matching cheese box for his cards. At least we had each other for comfort. Poor kids gotta stick together.
|
||||
|
||||
We had an end-of-the-school-year banquet before I graduated from 8th grade. I didn’t own a second pair of shoes. Luckily, my dad and I were the same shoe size for a couple of years. I wore his pricey black Clarks. Damn, those felt good compared to what I was used to.
|
||||
|
||||
Growing up poor wasn’t always bad. Because we didn’t get to go out to dinner frequently, it was more of a treat when we actually went. Trips to McDonald’s meant more because they were rare. [**The Hostess Bakery thrift store**](https://www.chicagotribune.com/news/ct-xpm-1996-08-07-9608070243-story.html) allowed my mother to bring home treats that we loved, even if the fruit pies were a bit hard on the ends.
|
||||
|
||||
I know they did the best they could and I appreciate the struggle more now than when I was a kid. I remember tears in my mother’s eyes when our station wagon broke down right before we were due to visit my grandparents in Wyoming. A CV joint repair wiped out their entire vacation budget, so we didn’t go.
|
||||
|
||||
*I know they knew we were disappointed. They wanted better for us, certainly.*
|
||||
|
||||

|
||||
|
||||
**There would be no family vacation the summer that our station wagon needed an expensive repair. Photo by** [**Zlatko Đurić**](https://unsplash.com/@zladuric?utm_source=medium&utm_medium=referral) **on** [**Unsplash**](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
One of the saddest memories I have around that time was going to my friend Steve’s birthday party. My dad dropped me off at Steve’s large home, and he ran out, dressed to the nines with a collared shirt and a vest. When he picked me up after the party, he made an observation:
|
||||
|
||||
*“Your friend Steve sure dresses nice. And so do his friends.”*
|
||||
|
||||
I nodded my head, not paying that much attention. *“Yeah.”*
|
||||
|
||||
He continued, *“Do you like the way he dresses? Would you enjoy wearing stuff like that?”*
|
||||
|
||||
This caught my attention. I knew what he was getting at. I was a smart, insightful kid, even in grade school. I didn’t want to hurt his feelings or make him feel bad. So I answered, *“I guess. But it’s not a big deal.”*
|
||||
|
||||
He stared ahead as we drove down the road for a minute or two. I hoped he wasn’t going to tear up or something. I hated that I knew what he was probably feeling, in the moment. He finally spoke.
|
||||
|
||||
*“Cool. Well, let’s take care of that when we can.”*
|
||||
|
||||

|
||||
|
||||
**Steve and his friends were snazzy dressers. My dad wanted that for me, too. Photo: Pixabay**
|
||||
|
||||
I appreciated him saying that. Even though I had my doubts that we’d ever be in a different tax bracket, it was nice of him to want that for his son. I didn’t want to be a burden or the cause of my parents’ financial struggles.
|
||||
|
||||
Things did improve eventually. While I never got a pair of Air Jordans until I bought them as an adult, we did get Nikes that were on sale. I started being able to get Ocean Pacific board shorts instead of my mother sewing a pair for me. Having stonewashed Levi’s 501s was another big moment for a semi-poor kid.
|
||||
|
||||
Looking back, none of that stuff really mattered. Because we were raised well and always had enough food, attention, and love, we did just fine. And being raised poor gave me a good outlook on life as an adult. It taught me not to be so materialistic like many people in our country.
|
||||
|
||||
I appreciate what my parents did for us with the little they had. And it’s funny to think about these memories again, some 35 years later. It’s always good to remember where we came from and what led to us building a strong work ethic as adults, for our own children to be comfortable. &:^)
|
||||
|
||||
© 2024 Jason Provencio. All rights reserved.
|
||||
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: "Republicans’ Cynical Ploy to Keep Abortion Off the Ballot"
|
||||
source: "https://aninjusticemag.com/republicans-cynical-ploy-to-keep-abortion-off-the-ballot-07a6fc61ac55"
|
||||
author:
|
||||
- "[[Dustin Arand]]"
|
||||
published: 2024-09-13
|
||||
created: 2024-10-29
|
||||
description: "After the Supreme Court overturned Roe v. Wade, Republicans in my home state of Missouri moved swiftly to ban abortion. Under current state law, all abortions are prohibited — even in cases of rape…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Afraid of their own voters, conservatives have gone to court to thwart them
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://dustinarand.medium.com/?source=post_page---byline--07a6fc61ac55--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://aninjusticemag.com/?source=post_page---byline--07a6fc61ac55--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Harrison Mitchell](https://unsplash.com/@harrisonmitchell?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
After the Supreme Court overturned *Roe v. Wade*, Republicans in my home state of Missouri moved swiftly to ban abortion. Under current state law, all abortions are prohibited — even in cases of rape or incest — unless necessary to protect the life or health of the mother.
|
||||
|
||||
Even in this deep red state, a state that hasn’t supported a Democrat for president since Bill Clinton in 1996, the total abortion ban didn’t sit well with voters. Almost immediately, abortion rights activists began organizing petition drives to enshrine the right to reproductive freedom in the state constitution.
|
||||
|
||||
Here in Missouri, to put a constitutional amendment on the ballot, proponents have to secure the signature of eight percent of eligible voters. That’s a heavy lift. But in this case, a coalition of activist groups called Missourians for Constitutional Freedom managed to get nearly [18 percent](https://missouriindependent.com/2024/05/03/missourians-signatures-abortion-amendment-viability/) of voters to sign on. And according to the [most recent poll](https://www.kcur.org/politics-elections-and-government/2024-08-30/missouri-abortin-rights-amendment-3-support-poll), 52 percent of Missouri voters planned to support it, including 32 percent of registered Republicans.
|
||||
|
||||
It looked like Missouri was about to become yet another conservative state — like Ohio, Kentucky, and Kansas — whose citizens would either recognize the right to abortion or reject efforts to curtail it, in defiance of state Republican lawmakers. But all that was thrown into confusion Friday night, when Judge Chris Limbaugh (cousin of Rush Limbaugh) ruled that the language of the proposed amendment — now called Amendment 3 — failed to include “all sections of existing law or of the constitution which would be repealed by the measure.”
|
||||
|
||||
Since Tuesday was the deadline for getting language on the November ballot, an emergency petition bypassed the State Court of Appeals and went straight to the Missouri Supreme Court, which heard arguments first thing Tuesday morning.
|
||||
|
||||
## Show Me Democracy
|
||||
|
||||
While the ballot proposal’s opponents may not have much of an argument — I’ll explain why shortly — it was entirely predictable that they would try to get it de-certified. It was also easy to foresee that conservative judges and Missouri’s Republican Attorney General would do whatever they could to take this choice away from the voters.
|
||||
|
||||
That’s because Missourians have a long history of going around Republican lawmakers. They increased the minimum wage, embraced Obamacare’s Medicaid expansion, legalized recreational marijuana, and rejected anti-union “Right to Work” legislation. The state’s GOP leaders have never forgiven them.
|
||||
|
||||
You see, up until fairly recently, Missouri was more of a swing state. With the exception of 1956, when Missourians supported Democrat Adlai Stevenson over Republican Dwight Eisenhower, the Show Me State has voted for the winner of the Presidential election every year from 1904 through 2004.
|
||||
|
||||
In 2008, McCain just barely edged out Obama. Back then Missouri had one Democratic and one Republican Senator. Our Secretary of State was a Democrat, and Democrat Jay Nixon won his race for governor. Since then, though, it’s been harder and harder for Democrats to win statewide office. At the same time, ==Republicans in control of the state legislature have gerrymandered themselves an essentially veto-proof majority.==
|
||||
|
||||
That’s why the ballot initiative process has been so crucial for my state. Without it, we’d have no way to escape one-party rule. The culture wars and right-wing disinformation have made the Democratic brand toxic to many voters in red states, but those same voters often lean left on concrete matters of policy. By framing a single question and putting it directly to the voters, we can put aside partisan politics and just focus on the facts of this one issue.
|
||||
|
||||
For that very reason, ballot initiatives pose a far greater political threat to the Republican agenda than any Democratic candidate. And that’s why the GOP has been so keen to quash them. Earlier this year, Republicans in Jefferson City tried to pass a bill that would have asked voters to change the amendment process. Instead of a simple majority, the Republicans’ proposal would have required that any new amendment be approved by a majority of voters from a majority of the state’s legislative districts (called a “concurrent majority”).
|
||||
|
||||
Essentially, the GOP was trying to Electoral College-ify the amendment process. And since the state legislature was so heavily gerrymandered, a [study](https://missouriindependent.com/2024/02/05/as-few-as-1-in-5-voters-could-defeat-initiative-petitions-under-missouri-senate-proposal/) found that if their proposal became law, an amendment could fail to pass *even if it got 75 percent of the vote*.
|
||||
|
||||
And Missouri isn’t the only state where Republicans have taken aim at the ballot initiative process. This [report](https://www.brennancenter.org/our-work/research-reports/politicians-take-aim-ballot-initiatives) from the Brennan Center describes similar efforts in Arizona, Arkansas, Idaho, Michigan, North Dakota, and Ohio. Whether by requiring a “concurrent majority” for passage, or increasing the number of signatures needed to put an amendment on the ballot, or both, Republicans in these and other states are engaged in a direct attack on popular sovereignty, and on the last credible challenge to their power.
|
||||
|
||||
## The fate of Amendment 3
|
||||
|
||||
Back in Missouri, our Supreme Court had to decide what to do with the challenge to Amendment 3. In theory, it makes sense that ballot initiatives should list any laws or constitutional provisions they will repeal. Voters deserve to know what they’re voting for, and many may not be inclined to sign a petition for an initiative that would repeal laws they support.
|
||||
|
||||
But in practice, it’s not so easy to apply. For example, a decade ago a group of teachers sued to block a ballot proposal affecting teacher contracts because they said that, in addition to amending Article IX of the state constitution, it would also amend the general right to collective bargaining in Article I. Since this wasn’t disclosed in the proposal’s language, it had to be de-certified.
|
||||
|
||||
But the Missouri Court of Appeals disagreed. In [*Kuehner et al v. Kander*](https://www.courtlistener.com/opinion/2734290/anita-marie-kuehner-v-jason-kander/?type=o&q=%22full+and+correct+text%22+AND+initiative&order_by=score+desc&stat_Precedential=on&court=mo+moctapp+moag), 442 S.W.3d 224, the court held that the law
|
||||
|
||||
> does not require initiative proponents to include all of those provisions affected, impacted, or modified by a proposed measure. Moreover, requiring proponents to ferret out all such potential conflicts would tend to stifle the initiative process.
|
||||
|
||||
That’s sensible. After all, whether a specific law runs afoul of a general constitutional guarantee is a question of interpretation. Under our system of checks and balances, that makes it an issue for courts to decide, not activists and not the Attorney General (a member of the executive branch).
|
||||
|
||||
Think about it: when Congress passes a law, or the people of a given state pass a constitutional amendment that impacts Federal rights, they all tend to think their actions are constitutional. But that doesn’t make them so, and we don’t just take their word for it. If someone challenges the law or amendment it will always be up to a court to say who’s right.
|
||||
|
||||
An initiative’s supporters may underestimate its impact on current or future laws, or they may overestimate it. Cases that present such questions have to be decided when they arise, by judges whose job it is to clarify the contours of the law.
|
||||
|
||||
We saw this play out in [Florida](https://www.brennancenter.org/our-work/research-reports/voting-rights-restoration-efforts-florida) after that state’s voters elected to reinstate former felons’ voting rights upon completing their sentences. Republican lawmakers immediately passed a law prohibiting ex-felons from exercising their rights if they hadn’t paid back all residual financial obligations stemming from their incarceration. Governor Ron DeSantis claimed this was consistent with the amendment approved by voters because paying off those debts was part of what it meant to “complete one’s sentence.” Most voters may have been surprised to hear it, but the courts agreed.
|
||||
|
||||
Similarly, if Missourians vote to support the right to reproductive freedom, don’t expect that to be the end of the story. Access to abortion may technically be protected up to the point of fetal viability, but that won’t stop Republicans from trying to throw up all kinds of roadblocks to the operation of abortion clinics in the state.
|
||||
|
||||
That includes things like requiring that providers have admitting privileges at local hospitals, or that clinics meet the requirements for ambulatory surgical centers, even when no surgical abortions are performed on site. It’s the same playbook we’ve seen for decades, and future courts will have to determine whether these or other measures significantly impede Missourians’ ability to exercise their reproductive rights.
|
||||
|
||||
At 3 o’clock on Tuesday afternoon the Missouri Supreme Court rendered its decision. The amendment language was proper, they said, and they ordered the Attorney General to immediately place it back on the ballot. This November, Missourians will get to have their say on abortion, as will voters in Arizona, Colorado, Florida, Maryland, Montana, Nevada and South Dakota.
|
||||
|
||||
But we almost didn’t, and we can’t forget that fact. If you live in a red state, know that your local Republican Party is almost certainly trying to take away your voice, to destroy direct democracy. Don’t let them do it. It’s up to all of us to stay informed of our rights, of developments in the law, and of the questions we will be expected to weigh in on. That is the price and the privilege of citizenship.
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
title: "Saying “Put Some Clothes On” to a Woman at Work"
|
||||
source: "https://medium.com/the-human-side-of-work/put-some-clothes-on-1672347d11a6"
|
||||
author:
|
||||
- "[[Victoria Corindi 🌻]]"
|
||||
published: 2024-04-29
|
||||
created: 2024-10-29
|
||||
description: "It seemed like every time we sat down to our weekly status meeting in the glass-walled conference room, she said something about how freezing she was. At least once a week her wardrobe consisted of a…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Is what my co-worker said harassment or hilarious?
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@victoriacorindi?source=post_page---byline--1672347d11a6--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/the-human-side-of-work?source=post_page---byline--1672347d11a6--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Dane Deaner](https://unsplash.com/@danedeaner?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
Rosalee had been complaining about the temperature in the office for months.
|
||||
|
||||
It seemed like every time we sat down to our weekly status meeting in the glass-walled conference room, she said something about how freezing she was.
|
||||
|
||||
There’s no question that our office was chilly.
|
||||
|
||||
Even in the heat of summer, I wore long sleeves to keep myself warm.
|
||||
|
||||
I also have a sweater that I keep in my office and I frequently put it on.
|
||||
|
||||
Rosalee wore sleeveless tops and skirts.
|
||||
|
||||
I’ve never seen her wear long sleeves, pants, or a jacket, even in the winter.
|
||||
|
||||
At least once a week her wardrobe consisted of a summer dress made of silk or rayon with barely any fabric at all.
|
||||
|
||||
What she wore wasn’t revealing, there just wasn’t much of it.
|
||||
|
||||
Her laundry loads must be light, I thought.
|
||||
|
||||
As one who never makes comments on women’s clothes in the workplace or otherwise, I bit my tongue when she voiced her desire to increase the temperature on the office’s thermostat.
|
||||
|
||||
It seemed silly to keep complaining when the fix was as simple as putting on a sweater and everyone else was fine.
|
||||
|
||||
Richard had joined our team as a project manager about a month prior.
|
||||
|
||||
I’d noticed his face when Rosalee complained.
|
||||
|
||||
He wasn’t annoyed or dismissive, he was amused.
|
||||
|
||||
As he started the meeting that Monday, Rosalee took her seat in a wisp of a dress.
|
||||
|
||||
She wrapped her arms around her body and visibly shivered.
|
||||
|
||||
Locking eyes with Richard when he welcomed the team, Rosalee said, “I’m freezing. When is someone going to do something about this?”
|
||||
|
||||
==“It would help if you put some clothes on,” he replied.==
|
||||
|
||||
Silence.
|
||||
|
||||
You could hear a pin drop in the room.
|
||||
|
||||
We all shifted in our seats. I was sure I heard someone chuckle under their breath. The colleague next to me coughed.
|
||||
|
||||
Waiting to see how Rosalee would respond, we were on pins and needles.
|
||||
|
||||
When she didn’t reply, but instead kept her eyes on the table, Richard continued the meeting.
|
||||
|
||||
After that day, Rosalee made no change to her wardrobe, but she did stop complaining.
|
||||
|
||||
She never brought up being cold or the temperature in the office again.
|
||||
|
||||
What I wonder is if Richard should have said what he did.
|
||||
|
||||
Were his comments rude, inappropriate, and shaming?
|
||||
|
||||
Or hilarious.
|
||||
|
||||
Read about my responsibility in my Gen Z daughter’s entitlement:
|
||||
|
||||
Or what’s stopping me from suing my employer:
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: "School Fires Critical Thinking Teacher Who Went Viral With Harry Potter Discussion"
|
||||
source: "https://briantubbs.medium.com/school-fires-critical-thinking-teacher-who-went-viral-with-harry-potter-discussion-4017f1b66d63"
|
||||
author:
|
||||
- "[[Brian Tubbs]]"
|
||||
published: 2024-05-14
|
||||
created: 2024-10-29
|
||||
description: "Warren Smith, the Massachusetts-based teacher who became a poster boy for critical thinking and a favorite of conservatives, has been fired from his full-time teaching job. He announced the news in a…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## In a win for Social Reconstructionists, Warren Smith loses his job
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://briantubbs.medium.com/?source=post_page---byline--4017f1b66d63--------------------------------)
|
||||
|
||||

|
||||
|
||||
Designed in Canva Pro
|
||||
|
||||
Warren Smith, the Massachusetts-based teacher who became a poster boy for critical thinking and a favorite of conservatives, has been fired from his full-time teaching job. He announced the news in a [video](https://youtu.be/iTvz9oatUiw?si=TeEpLX39boT_By4X) on his YouTube channel.
|
||||
|
||||
Prior to this latest development, Smith was a full-time teacher at a secondary school in Massachusetts and a part-time instructor at Emerson College. As of today (May 14, 2024), it appears he is still employed PT by Emerson.
|
||||
|
||||
Smith became famous when an on-camera discussion with a student (the student was not pictured) about *Harry Potter* author J.K. Rowling went viral. If you haven’t seen it, you can watch the video below…
|
||||
|
||||
The above version has 835k views, but several versions have been floating around the Internet — some with millions of views! This discussion led to Smith being interviewed by conservative influencers Piers Morgan, Dave Rubin, and others.
|
||||
|
||||
He has been hailed as a champion of critical thinking, even though his teaching job was in multimedia rather than philosophy. Still, the “thought experiment” he leads the student through in the above video shows a quasi- Socratic method of asking questions to get students to re-think their preconceived notions and biases.
|
||||
|
||||
It’s an approach that’s very much the bread-and-butter of Educational Essentialism, a philosophy that emphasizes knowledge, wisdom, and the practical “essentials” of life. Asking questions to provoke thought and additional consideration or reflection is at the core of essentialism.
|
||||
|
||||
In the opinion of this author, it should be at the core of education still.
|
||||
|
||||
So, whether Smith teaches philosophy, physical education, or photography is irrelevant to me. What matters is that Smith’s approach is a refreshing return to traditional teaching strategies that many wish were still the norm in secondary and higher education today.
|
||||
|
||||
Though I am deeply disappointed in Smith being fired, I will stop short of condemning the school that fired him. The reason is that there are several unknowns:
|
||||
|
||||
- We don’t know the name of the school Smith worked at. The name has been withheld in his interviews and is not disclosed on his website.
|
||||
- We don’t know the official reason(s) given by the school for firing Smith. We can only speculate based on what Smith has told us.
|
||||
|
||||
There is also something we know, but perhaps need to reflect on, and that is…
|
||||
|
||||
> Schools don’t like to be in the limelight when it comes to controversial personalities or issues.
|
||||
|
||||
A school is in the “business” of educating the kids in that respective district. Everything operates within a delicate “eco-system” of kids, parents, teachers, staff, and administrators all working together in a local community setting to accomplish their objectives. A sudden uptick in media attention centered around controversial developments or personalities (especially teachers) can upset that ecosystem, bringing a lot of unwanted attention and distraction.
|
||||
|
||||

|
||||
|
||||
Photo by [Sam Balye](https://unsplash.com/@sambalye?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
It’s not unreasonable for a school to frown at teachers becoming celebrity influencers, especially if it jeopardizes the privacy of the students, their families, or the teacher’s colleagues.
|
||||
|
||||
That being said…
|
||||
|
||||
*If* what Smith says in his video is correct…
|
||||
|
||||
**The school handled Warren Smith’s dismissal very poorly.**
|
||||
|
||||
The school year is almost over. They could have allowed him to finish out the year and not renewed his contract. They could have given him a choice: You can be a celebrity influencer with a YouTube channel and TV interviews OR you can continue as a teacher here. Let him decide. Or they could have given him the opportunity to resign.
|
||||
|
||||
They certainly didn’t need to take back his computer the way they did. Yes, I’m aware that employers often pay for laptops for their staff for work-related duties. This was apparently the case here, and thus the school had every right to take back the computer. However…
|
||||
|
||||
Employers often let employees use their work laptops for personal affairs when “off the clock.” It happens all the time. Assuming this was the case here (and Smith wasn’t violating explicit laptop policies), there was a much nicer and more professional way for the school to ask for their laptop back.
|
||||
|
||||
Given the sudden nature of his firing and the way they took back the laptop (apparently without any warning), it’s clear they played hardball.
|
||||
|
||||
The fact that they played hardball tells me there were either a) legal considerations or additional details we don’t know about or b) they were being spiteful and mean-spirited.
|
||||
|
||||
It’s the latter possibility that has many people, including me, deeply concerned.
|
||||
|
||||

|
||||
|
||||
Photo by [Tim Mossholder](https://unsplash.com/@timmossholder?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
Whether you agree or disagree with Warren Smith (or, for that matter, J.K. Rowling) should not be relevant to this discussion. Smith’s approach to education is well within the mainstream of traditional education.
|
||||
|
||||
Unfortunately (for Smith and, I believe, the country overall), Educational Essentialism (while traditionally mainstream) is no longer “in.” It’s no longer cool. And teachers like Smith who operate by it are seen as being as relevant today as dinosaurs.
|
||||
|
||||
Social Reconstructionism is on the ascent. If you’re not familiar with that term, you’ve probably heard of Critical Theory. It’s an integral part of Social Reconstructionism within the context of educational philosophy.
|
||||
|
||||
**Social Reconstructionism and Critical Theory often veer into indoctrination.**
|
||||
|
||||
Let’s take the *Harry Potter* discussion which made Smith famous. To an Essentialist (like Smith), a question about J.K. Rowling’s views on transgenderism is an opportunity for an experiment in critical thinking. To a Social Reconstructionist, such a question is an opportunity to condemn transphobia and examine its effects on those who have been marginalized.
|
||||
|
||||
To a Social Reconstructionist, a critical analysis of the views of a privileged celebrity (in this case, billionaire J.K. Rowling) perpetuates the problem of inequity by giving that person even more attention. To a Social Reconstructionist, all energy should go to elevating the marginalized, not trying to be “fair” to the privileged.
|
||||
|
||||
Accordingly, essentialists like Smith will always find themselves at odds with progressive reconstructionists who see schools as a means to an end — the end being *their* view of a more just, more equitable society.
|
||||
|
||||
**Social Reconstructionists and Essentialists have completely different worldviews and they don’t play well together in the classroom — or in the public square.**
|
||||
|
||||
This is why education in America today is so divisive, polarized, and often dysfunctional. We have diametrically opposed worldviews vying for supremacy and for the minds of our kids.
|
||||
|
||||
My hope is that Smith will retain an attorney and that he will get to the bottom of all this. And, if he was wronged (it appears he was), I hope he gets a payout that makes up for that wrongdoing, plus an apology from the school administration.
|
||||
|
||||
Regardless of the outcome of this particular situation, there are larger matters at stake.
|
||||
|
||||
We know about the Smith case because of Smith’s recent rise in popularity. Yet this dynamic is playing out (in less visible ways) in school districts across the country.
|
||||
|
||||
> What is the purpose of education?
|
||||
|
||||
That is the question. Is it to teach kids *what* to think and how to *behave* (and live, vote, etc.) **or** is it to teach them *how* to think (and, in so doing, how to think for themselves as individuals)?
|
||||
|
||||
Count me in the camp of the Essentialists. We need to teach students how to think. And that includes thought experiments like the one which made Warren Smith famous.
|
||||
|
||||
If we can’t agree on that, civilization itself is imperiled.
|
||||
@@ -0,0 +1,139 @@
|
||||
---
|
||||
title: "Some Obsolete Commands in GNU/Linux and the Tools You Should Use Instead"
|
||||
source: "https://medium.com/nerd-for-tech/some-obsolete-commands-in-gnu-linux-and-the-tools-you-should-use-instead-df64c42ee9ad"
|
||||
author:
|
||||
- "[[Talha Khaild]]"
|
||||
published: 2024-08-23
|
||||
created: 2024-10-29
|
||||
description: "In software development, things change at an incredible speed due to improvements in hardware and environments. For the same reason, tools change. Sometimes old ones don’t adapt well to changes, so…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@talhakhalid101?source=post_page---byline--df64c42ee9ad--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/nerd-for-tech?source=post_page---byline--df64c42ee9ad--------------------------------)
|
||||
|
||||
In software development, things change at an incredible speed due to improvements in hardware and environments. For the same reason, tools change. Sometimes old ones don’t adapt well to changes, so they end up fading away and being replaced by other utilities (with the arguable point being that new tools are better than old ones and if the old one works, don’t touch it).
|
||||
|
||||

|
||||
|
||||
Below are a handful of older tools you may still be using, some you should use instead, and why you should switch to these improved alternatives that provide the same or updated functionality, thus being well maintained.
|
||||
|
||||
> Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams because that is a universal interface.
|
||||
|
||||
Part of the Unix philosophy, and one that identifies many programs. Among them the venerable grep command. I can sum it up as: “write a program that does one thing, but does it well and is universal.”
|
||||
|
||||
Also Check:
|
||||
|
||||
## egrep and fgrep
|
||||
|
||||
The egrep (extended grep) tool uses regular expressions to match a line. However, egrep has been deprecated in favor of using regular grep with the grep -E flag. For example:
|
||||
|
||||
```
|
||||
$ egrep '^[fj]' /etc/passwdftp:x:14:50:User FTP:/var/ftp:/sbin/nologinuser:x:1000:1000:user:/home/user:/bin/bash
|
||||
```
|
||||
```
|
||||
$ grep -E '^[fj]' /etc/passwd ftp:x:14:50:User FTP:/var/ftp:/sbin/nologin user:x:1000:3000:user:/home/user:/ bin/bash
|
||||
```
|
||||
|
||||
Both examples match lines starting with the letter jof in the /etc/passwd file.
|
||||
|
||||
Another example of adding a new flag is fgrep. The grep command, uses a fixed string to match (no optimizations, so it is faster than a regular expression) instead of -E. It has been replaced by grep -F. Here is a comparison:
|
||||
|
||||
```
|
||||
$ fgrep 'user' /etc/passwduser:x:1000:3000:user:/home/user:/usr/bin/zsh
|
||||
```
|
||||
```
|
||||
$ grep -F 'user' /etc/passwduser:x:1000:3000:user:/home/user:/usr/bin/zsh
|
||||
```
|
||||
|
||||
As you can see, it makes more sense to use flags to make a tool provide similar behavior. You just need to know that grep with a flag can use regular expressions or perform an exact search.
|
||||
|
||||
## nslookup: He lives, but….
|
||||
|
||||
Surely you have ever tried to get the IP address of a server like this:
|
||||
|
||||
```
|
||||
$ nslookup domain_urlServer: 192.168.0.1Address: 192.168.0.1
|
||||
```
|
||||
```
|
||||
Non-authoritative answer:Name: domain_urlAddress: 50.63.7.206
|
||||
```
|
||||
|
||||
An alternative to nslookup is dig. Here is an example similar to the above:
|
||||
|
||||
```
|
||||
$ dig @192.168.1.1 domain_url A +noall +answer +nocmd domain_url. 600 IN A 50.63.7.206
|
||||
```
|
||||
|
||||
Interactive mode shows how to get the pointer record (PTR) of the same server (this is a reverse lookup to get the server name by providing the IP address):
|
||||
|
||||
```
|
||||
> set type=ptr> 50.63.7.206Server: 192.168.1.1Address: 192.168.1.1#53
|
||||
```
|
||||
```
|
||||
Non-authoritative answer:206.7.63.50.in-addr.arpa name = ip-50-63-7-206.ip.secureserver.net.
|
||||
```
|
||||
```
|
||||
Authoritative answers can be found from:
|
||||
```
|
||||
|
||||
The equivalent command in dig looks like this:
|
||||
|
||||
```
|
||||
$ dig -x @192.168.1.1 domain_url +noall +response +nocmd......
|
||||
```
|
||||
|
||||
The dig command can do things that nslookup cannot. Such as requesting a DNS transfer of a domain zone (including all record types) to backup your domain DNS:
|
||||
|
||||
```
|
||||
$ dig +short ns domain_url..........$ dig axfr domain_url @dns_server..........
|
||||
```
|
||||
|
||||
However, nslookup can do things that dig cannot, such as friendly interactive mode, which is very useful when scanning DNS domains. It can also be run in non-interactive mode. There is one fundamental difference between the two utilities, dig uses the operating system’s resolver libraries (the libraries that perform address lookups in DNS) and nslookup does not. Therefore, the two may behave differently when resolving addresses.
|
||||
|
||||
Also check:
|
||||
|
||||
## ifconfig, netstat, route: Ip has arrived.
|
||||
|
||||
You can use ifconfig to get information about network interfaces and change their settings. However, it was replaced by **ip** . Here’s how to list your network interfaces using ip:
|
||||
|
||||
```
|
||||
$ ip address
|
||||
```
|
||||
|
||||
Another useful tool is route. You can use,route -nto check the routing table (the information about how your machine connects to other machines):
|
||||
|
||||
```
|
||||
$ route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 wls1172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wls1
|
||||
```
|
||||
|
||||
But the ip command can also display the routing table. For example:
|
||||
|
||||
```
|
||||
$ ip route listdefault via 192.168.1.1 dev wls1 proto static metric 600172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown192.168.1.0/24 dev wls1 proto kernel scope link src 192.168.1.16 metric 600
|
||||
```
|
||||
|
||||
Another utility that was replaced is netstat. With netstat, you can see the list of active connections, among other things. Its replacement is the commandH.H. For example:
|
||||
|
||||
```
|
||||
$ ss --numeric --tcp --listenState Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 32 192.168.122.1:53 0.0.0.0:*LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*LISTEN 0 128 0.0.0.0:22 0.0.0.0:*LISTEN 0 128 127.0.0.1:631 0.0.0.0:*LISTEN 0 4096 0.0.0.0:5355 0.0.0.0:*LISTEN 0 128 [::]:22 [::]:*LISTEN 0 128 [::1]:631 [::]:*LISTEN 0 4096 *:9323 *:*LISTEN 0 4096 [::]:5355 [::]:*LISTEN 0 4096 *:9100 *:*
|
||||
```
|
||||
|
||||
For all three of these cases, lack of maintenance was the downfall of these tools. Newer tools took their place, many distros have deprecated the use of ifconfig and route in favor of the software package.iproute2, such as ArchLinux or RHEL since version 7. This tool includes support for all common ifconfig, route, arp, and netstat functions. It also includes support for multicast configuration, virtual link and tunnel management, traffic control, and low-level IPsec configuration, among other features.
|
||||
|
||||

|
||||
|
||||
Also Check:
|
||||
|
||||
## Conclusion
|
||||
|
||||
It’s a good idea to keep up with the latest tools, as developers fix bugs and add useful features that may not have been present in older versions. It’s all about being more productive. Old software tends not to get bug fixes. If left unattended, some of them could compromise the system. Anyway, keep up to date with the information you have about your favorite applications, and if you like one in particular, support it, pamper it, love it, and don’t forget to donate, you help the developer survive. Until another post, reader. Good vibes.
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
title: "Spring doesn’t recommend @Autowired anymore???"
|
||||
source: "https://medium.com/@ByteCodeBlogger/spring-doesnt-recommend-autowired-anymore-895987b2e2f3"
|
||||
author:
|
||||
- "[[Full Stack Developer]]"
|
||||
published: 2024-07-19
|
||||
created: 2024-10-29
|
||||
description: "In Spring, dependency injection is a fundamental concept used to manage the lifecycle and dependencies of beans. @Autowired is a common way to inject dependencies into Spring-managed components…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@ByteCodeBlogger?source=post_page---byline--895987b2e2f3--------------------------------)
|
||||
|
||||
There are 3 ways we can inject dependencies and Field Injection is not recommended anymore.
|
||||
|
||||

|
||||
|
||||
Photo by [Luigi Pozzoli](https://unsplash.com/@lu_pl_ph?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
In Spring, dependency injection is a fundamental concept used to manage the lifecycle and dependencies of beans. `@Autowired` is a common way to inject dependencies into Spring-managed components.
|
||||
|
||||
> When we run the code analysis tool in the IDE, it may issue the “Field injection is not recommended” warning for fields with the @Autowired annotation
|
||||
|
||||
However, there are other ways to achieve the same goal, and Spring has evolved its best practices over time. Here are the different methods and the reasons why Spring might not recommend `@Autowired` as strongly anymore:
|
||||
|
||||
## 3 Methods to Autowire in Spring
|
||||
|
||||
## **Constructor Injection**:
|
||||
|
||||
```
|
||||
@Servicepublic class MyService { private final MyRepository myRepository; public MyService(MyRepository myRepository) { this.myRepository = myRepository; }}
|
||||
```
|
||||
|
||||
**Pros**:
|
||||
|
||||
- Encourages immutability and makes dependencies explicit.
|
||||
- Ensures that the bean is fully initialized with its required dependencies.
|
||||
- Easier to write unit tests for.
|
||||
|
||||
## **2\. Setter Injection**:
|
||||
|
||||
```
|
||||
@Servicepublic class MyService { private MyRepository myRepository; @Autowired public void setMyRepository(MyRepository myRepository) { this.myRepository = myRepository; }}
|
||||
```
|
||||
|
||||
**Pros**:
|
||||
|
||||
- Allows for optional dependencies.
|
||||
- Can be useful when you need to change dependencies after bean creation.
|
||||
|
||||
## **3 . Field Injection**:
|
||||
|
||||
```
|
||||
@Servicepublic class MyService { @Autowired private MyRepository myRepository;}
|
||||
```
|
||||
|
||||
**Pros**:
|
||||
|
||||
- Simplifies the code by reducing boilerplate.
|
||||
|
||||
**Cons**:
|
||||
|
||||
- Difficult to test.
|
||||
- Harder to see the required dependencies.
|
||||
- Violates the principle of immutability.
|
||||
|
||||
## Why Spring Might Not Recommend `@Autowired` Anymore
|
||||
|
||||
1. **Constructor Injection Preferred**:
|
||||
|
||||
- **Explicit Dependencies**: Constructor injection makes it clear what the dependencies are, improving readability and maintainability.
|
||||
- **Immutability**: Encourages immutability by ensuring that dependencies are final and cannot be changed after bean creation.
|
||||
- **Ease of Testing**: Makes unit testing easier since dependencies are passed in through the constructor, allowing for easier mocking.
|
||||
|
||||
**2\. Field Injection Downsides**:
|
||||
|
||||
- **Hidden Dependencies**: Dependencies are not explicit in the class’s constructor, making it harder to understand the required dependencies at a glance.
|
||||
- **Testing Difficulty**: It is more difficult to inject mock dependencies into private fields for unit tests.
|
||||
- **Reflection Use**: Requires the use of reflection to set private fields, which can have performance implications and complicate debugging.
|
||||
|
||||
**3\. Setter Injection Use Cases**:
|
||||
|
||||
- **Optional Dependencies**: Setter injection is useful when some dependencies are optional and not required for the bean’s initial creation.
|
||||
- **Configuration Changes**: Allows changing dependencies after the bean has been created, which can be useful in certain scenarios.
|
||||
|
||||
## Conclusion
|
||||
|
||||
While `@Autowired` is still commonly used and perfectly valid, Spring's evolving best practices lean towards constructor injection for the reasons mentioned above. Constructor injection leads to better designed, more maintainable, and testable code by making dependencies explicit and encouraging immutability.
|
||||
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: "Still using the ‘You are an expert… ’ AI prompt"
|
||||
source: "https://generativeai.pub/still-using-the-you-are-an-expert-ai-prompt-3a22215ae188"
|
||||
author:
|
||||
- "[[Pranav Mehta]]"
|
||||
published: 2024-10-12
|
||||
created: 2024-10-29
|
||||
description: "I’ve been using AI for a while now. And I see people around me not utilizing the power of generative AI to the fullest. Every other day, I find new use cases of generative AI that help me to increase…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## 11 creative ways I use AI that are honestly useful
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@pranav0123.pm?source=post_page---byline--3a22215ae188--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://generativeai.pub/?source=post_page---byline--3a22215ae188--------------------------------)
|
||||
|
||||

|
||||
|
||||
Created using [Meta.ai](https://www.meta.ai/)
|
||||
|
||||
I’ve been using AI for a while now. And I see people around me not utilizing the power of generative AI to the fullest. Every other day, I find new use cases of generative AI that help me to increase my productivity and knowledge while saving time and effort. Here are a few uncommon but useful ways to use AI.
|
||||
|
||||
**1\.** ==**Find the right medicine:**== When you are sick, take a photo of all your medicine blister packs and ask ChatGPT to recommend the right one for your symptoms.
|
||||
|
||||
**2\. Reduce hallucinations:** At the end of your question, add, “*Do a web search and then reply.*” This forces generative AI to give accurate answers.
|
||||
|
||||

|
||||
|
||||
Screenshot by the author using ChatGPT
|
||||
|
||||
**3\. Apply the Feynman technique:** After AI explains a concept, summarize the same concept simply in your own words and ask “*Correct*?” AI will correct you if necessary. This method makes learning so much more engaging and also increases retention.
|
||||
|
||||
**4\. Convert photos to text:** This helps save a lot of time, even though there are so many tools available on the web. Using ChatGPT for this task on my phone is very convenient.
|
||||
|
||||
**5\. Embrace the TL;DR:** This is a no-brainer. You can use this prompt for a lot of things. Summarize code, texts, emails, book pages, news, articles, and many other things throughout the day.
|
||||
|
||||
==**6\. Apply the Pareto Principle:**== ==The 80/20 rule is a great way to learn new concepts. Example usage. “====*I want to learn \[topic\]. Use the Pareto*== ==Principle== ==*(80/20 rule) to create a course for me.*====”.==
|
||||
|
||||

|
||||
|
||||
Screenshot by the author using ChatGPT
|
||||
|
||||
**7\. Ask for movie recommendations:** Ask AI to give spoiler-free movie recommendations with reviews based on your preferred genres, actors, languages, etc.
|
||||
|
||||
**8\. Use for web searches:** Instead of going to Google, Ask ChatGPT to find something on the web to bypass SEO-optimized articles and get relevant information quickly.
|
||||
|
||||
**9\. Rate my work:** Ask ChatGPT to rate anything. This is the prompt you can use for it. “*Rate the above \[article\] in different aspects and suggest how I can improve it in those areas.”* I use it to rate my code, articles, understanding, etc.
|
||||
|
||||

|
||||
|
||||
Screenshot by the author using ChatGPT
|
||||
|
||||
**10\. Keep it short:** Add, **“***Give brief, clear answers that include all key details. Be concise but informative.***”** at the end, to get better answers.
|
||||
|
||||
**11\. Enable Incognito mode:** ChatGPT has an option for temporary chat. When enabled, your data will not be saved in history and won’t be used to train the models.
|
||||
|
||||

|
||||
|
||||
Screenshot by the author using ChatGPT
|
||||
|
||||
## Conclusion:
|
||||
|
||||
It’s impossible to write an exhaustive list of unique use cases of ChatGPT. So feel free to comment and let me know what unique and creative ways you can use generative AI that other people might not be using. I am eager to learn more, and I am sure others are too.
|
||||
|
||||
***Tap the clap*** 👏 ***button 50 times if you enjoyed my story!***
|
||||
|
||||

|
||||
|
||||
This story is published on [Generative AI](https://generativeai.pub/). Connect with us on [LinkedIn](https://www.linkedin.com/company/generative-ai-publication) and follow [Zeniteq](https://www.zeniteq.com/) to stay in the loop with the latest AI stories.
|
||||
|
||||
Subscribe to our [newsletter](https://www.generativeaipub.com/) and [YouTube](https://www.youtube.com/@generativeaipub) channel to stay updated with the latest news and updates on generative AI. Let’s shape the future of AI together!
|
||||
|
||||

|
||||
@@ -0,0 +1,146 @@
|
||||
---
|
||||
title: "Stop Doing This Or Nobody Will Understand Your Code"
|
||||
source: "https://medium.com/coding-beauty/methods-vs-properties-077cf44e972b"
|
||||
author:
|
||||
- "[[Tari Ibaba]]"
|
||||
published: 2024-10-16
|
||||
created: 2024-10-29
|
||||
description: "This rule doesn’t just apply to async tasks, it applies to any long-running action, synchronous or not: It doesn’t just modify the backing _fullness field -- it changes multiple other fields. This…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@tariibaba?source=post_page---byline--077cf44e972b--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/coding-beauty?source=post_page---byline--077cf44e972b--------------------------------)
|
||||
|
||||

|
||||
|
||||
I was coding and stumbled upon something really disappointing the other day.
|
||||
|
||||
Do you see it? 👇
|
||||
|
||||

|
||||
|
||||
Let’s zoom in a bit more:
|
||||
|
||||
This line:
|
||||
|
||||

|
||||
|
||||
Please don’t do this in any language.
|
||||
|
||||
Don’t `await` properties.
|
||||
|
||||
You’re destroying your code readability and ruining the whole concept of OOP.
|
||||
|
||||
Properties are features not actions.
|
||||
|
||||
They don’t **do** like methods. They are.
|
||||
|
||||
They are data holders representing states of an object.
|
||||
|
||||
Simple states:
|
||||
|
||||

|
||||
|
||||
Derived states — what getters are meant for:
|
||||
|
||||

|
||||
|
||||
But the `status` property was returning a Dart `Future` -- JavaScript's `Promise` equivalent:
|
||||
|
||||
❌Before:
|
||||
|
||||

|
||||
|
||||
It would have been so much better to use a method:
|
||||
|
||||
✅ After:
|
||||
|
||||

|
||||
|
||||
And now `async/await` can make things even more intuitive:
|
||||
|
||||

|
||||
|
||||
But guess what happens when you try `async/await` with properties?
|
||||
|
||||

|
||||
|
||||
Exactly. It’s a **property**.
|
||||
|
||||
This rule doesn’t just apply to `async` tasks, it applies to any long-running action, synchronous or not:
|
||||
|
||||
❌ Before:
|
||||
|
||||

|
||||
|
||||
✅ After:
|
||||
|
||||
Let them know that the action is expensive enough to deserve caching or variable assignment:
|
||||
|
||||

|
||||
|
||||
But sometimes it still doesn’t deserve to be a property with this.
|
||||
|
||||
Check this out — do you see the issue with the `level` setter property?
|
||||
|
||||

|
||||
|
||||
It doesn’t just modify the backing `_fullness` field -- it changes multiple other fields. This doesn't make sense as a property, as data.
|
||||
|
||||
It’s affecting so much aside from itself.
|
||||
|
||||
**It has side-effects.**
|
||||
|
||||
Setting this property multiple times modifies the object differently each time.
|
||||
|
||||

|
||||
|
||||
So even though it doesn’t do much, it still needs to be a method.
|
||||
|
||||
## Name them right
|
||||
|
||||
Natural code. Coding like natural language.
|
||||
|
||||
So always name the properties with nouns like we’ve been doing here.
|
||||
|
||||
But you see what we did when it was time to make it a property?
|
||||
|
||||
We made it a verb. Cause now it’s an action that does something.
|
||||
|
||||

|
||||
|
||||
Nouns for entities: variables, properties, classes, objects, and more.
|
||||
|
||||
Not this:
|
||||
|
||||

|
||||
|
||||
But this:
|
||||
|
||||

|
||||
|
||||
Verbs for actions: functions and object methods.
|
||||
|
||||
## Key points: when to use a method vs a property?
|
||||
|
||||
Use a property when:
|
||||
|
||||
- The action modifies or returns only the backing field.
|
||||
- The action is simple and inexpensive.
|
||||
|
||||
Use a method when:
|
||||
|
||||
- The action modifies multiple fields.
|
||||
- The action is async or expensive.
|
||||
|
||||
All for clean, readable, intuitive code.
|
||||
+204
@@ -0,0 +1,204 @@
|
||||
---
|
||||
title: "The 1980s hoax that ‘Dungeons & Dragons’ was Satanic was launched by a lying mother"
|
||||
source: "https://medium.com/belover/in-the-1980s-a-woman-spread-a-hoax-that-dungeons-dragons-is-satanic-cb8da5614132"
|
||||
author:
|
||||
- "[[Jonathan Poletti]]"
|
||||
published: 2024-07-08
|
||||
created: 2024-10-29
|
||||
description: "Over and over, she told her heart-rending story. Her son Bink had killed himself while under the influence of a board game called Dungeons & Dragons. She learned it wasn’t a ‘game’ at all, but a…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## The sad story of Patricia Pulling
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@belover?source=post_page---byline--cb8da5614132--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/belover?source=post_page---byline--cb8da5614132--------------------------------)
|
||||
|
||||
## Throughout the 1980s, she was a well-known public figure: the heroic mother fighting a board game. She was on talk shows, in newspaper profiles, and her memoir was at a bookstore near you.
|
||||
|
||||
Over and over, she told her heart-rending story. Her son Bink had killed himself while under the influence of a board game called *Dungeons & Dragons*. She learned it wasn’t a ‘game’ at all, but a portal to Hell itself.
|
||||
|
||||
There was more to learn about Patricia Pulling.
|
||||
|
||||
## She returned so often to that dark, terrible night.
|
||||
|
||||
It was June 9, 1982, in Montpelier, Virginia. She and her husband had eaten out, and come home to see the house was dark. The front door was open.
|
||||
|
||||
What was going on? They parked, as she got out, and saw Bink stretched out on the grass. His eyes were just staring at her.
|
||||
|
||||
She realized: her teenage son was dead.
|
||||
|
||||
## Had Bink been murdered?
|
||||
|
||||
She rushed to the neighbor’s house to call the police, and came back to find a crowd gathered around her son’s body. They tried to keep her away, but she broke through.
|
||||
|
||||
> “I fell down inches from his face and reached out to touch his hair. I lay there on the ground and would not move. I did not want to leave my son.”
|
||||
|
||||
She wasn’t even that religious, but heard herself screaming: “God, why did You do this to me, to my son, to us? We don’t deserve this! Why?”
|
||||
|
||||
I’m reading here from Pulling’s 1989 [memoir](https://openlibrary.org/works/OL16477139W/The_Devil%27s_web?edition=ia%3Adevilswebwhoisst00pull), *The Devil’s Web: Who’s Stalking Your Children for Satan.* She narrates being told that her son had shot himself in the heart — using her own gun.
|
||||
|
||||
## The detective went through Bink’s school books and papers, then asked a strange question.
|
||||
|
||||
How surprised she was to hear it! “Mrs. Pulling, are you or your husband devil worshippers?”
|
||||
|
||||
She replied that, no — she was Jewish.
|
||||
|
||||
Bink had left a suicide note. “Dear Mom and Dad,” it began, as he went on to confess how evil he had become — Hitler, Antichrist-type evil. He was hearing voices, he said, and was being ‘told’ to commit murder, but was choosing to end his own life instead.
|
||||
|
||||
## She went through Bink’s effects, shocked.
|
||||
|
||||
She writes: “We found violent, sadistic poems among the papers, poems that appeared to have been written by a demented person.”
|
||||
|
||||
Some were school assignments! — graded with an ‘A’, and with a teacher’s critiques. He’d played this ‘game’ in class! Then there were books with demons on the covers, and titles like *The Dungeon Master’s Guide.*
|
||||
|
||||
She learned Bink played the game on his last day of life. And she learned that Bink had received in the game some kind of ‘death curse’. She’d found the text in his papers. It read:
|
||||
|
||||
> “Your soul is mine. I choose the time. At my command, you will reave the land. A follower of evil, a Killer of man.”
|
||||
|
||||
## She set out to learn more about this evil game.
|
||||
|
||||
Before long she became aware there was groups of players of *Dungeons & Dragons*. There were ‘Dungeon Masters’ to serve as the ‘deity’ to a fantasy world full of magic and a lot of violence. It was scary.
|
||||
|
||||
The idea was floating around that Dungeons & Dragons was a portal to the demonic realm. That seems to have owe to a news event in 1979, when a college student at Michigan State University named James Egbert disappeared from campus for a month. His parents launched a search that became a media event. His playing *Dungeons & Dragons* was noted.
|
||||
|
||||
It turned out that Egbert was gay and hiding from his parents, but the idea took hold that the board game was a portal to Hell. A 1981 novel, *Mazes and Monsters*, was quickly published to capitalize on the idea. In 1982, a T.V. movie resulted. It was the actor Tom Hanks’ first starring role.
|
||||
|
||||
## But there was no personal face on the idea.
|
||||
|
||||
Or not until Patricia Pulling came along. After Bink’s death, she said, she became immersed in ‘D&D’ culture. She joined a group of young men who played the game. She writes: “We played for several hours a day every day for a month.”
|
||||
|
||||
She saw they were full of “devotion” and “loyalty,” even “love” for *Dungeons & Dragons*. It felt like a “cult,” she reports.
|
||||
|
||||
She’d learned what she needed to know. She sued the high school principal for $1 million, and sued Tactical Studies Rules, or ‘TSR’, the company that made *Dungeons & Dragons*, for ten million.
|
||||
|
||||
Her lawsuits went nowhere, as she launched a group that became a famous 1980s-era reference, ‘B.A.D.D.’, or ‘Bothered About *Dungeons & Dragon*s’. A case developed in the media that many young people who played the ‘game’ had died, of suicide or under suspicious circumstances.
|
||||
|
||||
## She did the whole talk show circuit
|
||||
|
||||
Patricia Pulling was on *Geraldo, Sally Jesse Raphael, Donahue.* She was on CBS’s *60 Minutes.* She told the story of her beautiful son ensnared by the powers of evil.
|
||||
|
||||
“Your son was well-adjusted?” the *60 Minutes* reporter asks.
|
||||
|
||||
She replies: “Always. He had never had psychological problems.”
|
||||
|
||||
She displayed her photo of Bink, smiling in a white suit. It had been taken the night of the junior-senior prom, and seemed a vision of a happy teenager before *Dungeons & Dragons* got a hold of his soul.
|
||||
|
||||
## She often said that teenagers got in the occult and were killing themselves and others constantly.
|
||||
|
||||
Exactly how many were falling victim to otherworldly forces was unclear. Pulling called for a federal investigation, so they could find out.
|
||||
|
||||
She continued to blame Bink’s high school and his teachers for allowing this horror into his life. She [says](https://www.newspapers.com/image/244554009/?terms=%22patricia+pulling%22&match=1) in 1985: “To me, if he’d been in positive channels, this wouldn’t have happened.”
|
||||
|
||||
Her son, she kept saying, was “perfectly normal” until the game deranged his mind. “A child his age has no business delving in this,” as she said. “I have lost a 16-year-old child.”
|
||||
|
||||
## She had allies—like Tipper Gore, the wife of politician Al Gore.
|
||||
|
||||
Then there was Dr. Thomas Radecki. He was a psychiatrist and chairman of his own media awareness group, the ‘National Coalition on Television Violence’. They did many radio and T.V. appearances together.
|
||||
|
||||
“*Dungeons & Dragons* is essentially a worship of violence,” Radecki [says](https://www.newspapers.com/image/624568533) in a 1985 news story, adding: “The game is full of human sacrifice, eating babies, drinking blood, rape, murder of every variety, curses of insanity.”
|
||||
|
||||
In another [interview](https://www.newspapers.com/image/244554009/?terms=%22patricia+pulling%22&match=1), he adds: “kids are getting murdered because of this game.”
|
||||
|
||||
## They were famous—and effective.
|
||||
|
||||
*Dungeons & Dragons* became a rather touchy subject. The CBS channel had a Saturday morning cartoon based on the game. It was cancelled.
|
||||
|
||||
But the biggest impact was probably on Evangelical America, which instantly believed that Satan was trying to come through the board game to possess American teenagers. Patricia Pulling was on the *700 Club* many times. Evangelical organizations helped fund her lawsuits and projects.
|
||||
|
||||
## Evangelicals wrote more books to explain how evil ‘Dungeons & Dragons’ really was.
|
||||
|
||||
An “occult researcher” named John Weldon had a religious bestseller in 1984 with *Playing With Fire.* Weldon was often [introduced as a Ph.D.](https://www.moodypublishers.com/authors/w/john-weldon/)—having gotten a kook degree at an unaccredited Evangelical seminary.
|
||||
|
||||
Ernest Cline, the novelist who later became famous with *Ready Player One,* would recall being an Evangelical teenager who played ‘D&D’. His mother gave him a copy of *Playing With Fire*, as he [recalls](https://www.lightspeedmagazine.com/nonfiction/interview-ernest-cline/):
|
||||
|
||||
> *“She thought that I was really going to try and collect spell components and cast spells and that it was meddling with witchcraft. I was meddling with powers I didn’t understand.”*
|
||||
|
||||
He jokes: “That was a part of the appeal.”
|
||||
|
||||
## ‘Dungeons & Dragons’ was actually very Christian.
|
||||
|
||||
Its primary inventor, Gary Gygax, [identified](http://playingattheworld.blogspot.com/2012/12/gary-gygax-on-christmas-and-christianity.html) himself as ‘Christian’, though more specifically, he was a Jehovah’s Witness. An early collaborator, Dave Arneson, was a ‘devout Christian’.
|
||||
|
||||
Then the game was mostly an effort to bring to life J.R.R. Tolkien’s *Lord of the Rings* novels. They are often considered very Christian. *Dungeons & Dragons* could’ve easily been read as Christian, but it became the image of Satanism for a decade in America’s largest religion.
|
||||
|
||||
## TSR seemed dazed and ineffective against the Patricia Pulling media onslaught.
|
||||
|
||||
Then in 1985, they hired Dr. Joyce Brothers, the well-known media psychologist, to advocate for them. She [called](https://www.newspapers.com/image/336723498) *Dungeons & Dragons* “wonderful” since it was “cooperative” and not “competitive.”
|
||||
|
||||
Brothers presented ‘D&D’ as a positive experience. She’d [explain](https://www.retroreport.org/transcript/tabletop-to-tablet-using-dungeons-dragons-to-combat-screen-addiction/): “There is good and evil in life and the way *Dungeons & Dragons* is set up is that good triumphs over evil.”
|
||||
|
||||
It became, then, a war between two Jewish women—observed raptly by Evangelical America.
|
||||
|
||||
## Patricia Pulling became an occult crimefighter.
|
||||
|
||||
She got a license as a private investigator and started giving speeches and “trainings” in locating occult involvement, telling police what clues to watch out for when investigating teenage deaths.
|
||||
|
||||
There was a lot of talk of ‘Satanic cults’ and ‘ritual sexual abuse’ in the air. She seemed like the warrior against it — the mother plunging into the dark abyss of Hell to save children from Satan.
|
||||
|
||||
## There were curious details along the way?
|
||||
|
||||
For her seminars she’d reprinted a 1983 *Washington Post* profile of her story, but her reproduction had omitted several paragraphs. The newspaper had reported a few odd facts about Bink, like he:
|
||||
|
||||
> *“…had trouble ‘fitting in’ and became dejected when he was unable to find a campaign manager when he ran for school office. Shortly before his death, he wrotes ‘Life is a Joke’ on the blackboard of one of his classes, a classmate said.”*
|
||||
|
||||
A classmate was quoted remembering him: “He had a lot of problems anyway that weren’t associated with the game.”
|
||||
|
||||
## Patricia Pulling would admit her son had quirks.
|
||||
|
||||
Newspaper profiles did catch her with [oddly shifting details](https://www.newspapers.com/image/99069987):
|
||||
|
||||
> “Patricia Pulling said her son was considered a loner and that he liked to be alone in his room to read, usually history. But she said he also had many friends and dated girls often.”
|
||||
|
||||
On his last day at school, she added, she was told that Bink had [written](https://www.newspapers.com/image/340388596/?terms=%22patricia+pulling%22&match=1) on a test sheet: “This is the last paper I will ever write, GOODBYE.”
|
||||
|
||||
Just before dying, she said, he’d been on the phone with a friend. “I have to go,” Bink said. “You’ve been a good friend. Goodbye.”
|
||||
|
||||
## ‘D&D’ enthusiasts began to investigate her.
|
||||
|
||||
And some further curious details were noticed. At her events for law enforcement, Patricia Pulling would say more about her son’s life.
|
||||
|
||||
She’d sometimes display Bink’s papers from his *Dungeons & Dragons* play. He’d called himself ‘Narthöl’, and his personal insignia included a swastika*.*
|
||||
|
||||
A [transcript](https://limsk.tripod.com/pulling.htm) emerged of a speech she’d given to law enforcement officers in 1986. She said that in the weeks leading up to Bink’s death, he’d been doing some kind of werewolf thing, like he’d:
|
||||
|
||||
> “…growled, screamed, walked on all fours, and clawed the ground. Nineteen rabbits raised by the Pullings were found torn to pieces in the last three weeks of his life, although stray dogs were never seen. A cat was found disemboweled with a knife.”
|
||||
|
||||
## There was more to learn about Bink Pulling.
|
||||
|
||||
In 2015, the scholar Joseph P. Laycock publisheed a study, [*Dangerous Games*](https://www.amazon.com/dp/B00RX4UVWI/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)*: What the Moral Panic Over Role-Playing Games Says about Play, Religion, and Imagined Worlds.* A chapter on Patricia Pulling’s crusade was startling.
|
||||
|
||||
He interviewed one of Bink’s friends from school—a fellow D&D player. Laycock writes:
|
||||
|
||||
> *“According to this source, Bink only played D&D at school for a total of nine hours. In this person’s opinion, Bink’s suicide had been an act of aggression toward his mother. Both of his parents had been having affairs before the suicide. Bink shot himself in the chest with a .38 caliber pistol that belonged to his mother, and his choice to commit suicide on the front porch appeared to be a deliberate attempt to shock and horrify his parents when they returned home.”*
|
||||
|
||||
## I write to Leycock asking if the impression I’m getting is right.
|
||||
|
||||
He replies: “Yes, Pulling absolutely lied, misled, and prevaricated in the cause of B.A.D.D.”
|
||||
|
||||
He points to her story that she had played *Dungeons & Dragons* for ‘many hours a day for a month’ to learn about it. As he notes, she later “lacked even a rudimentary understanding of what D&D is or how it is played.”
|
||||
|
||||
Scene after scene of Patricia Pulling’s supposed journey into the bowels of ‘D&D’ Hell—she had just invented.
|
||||
|
||||
## She died of lung cancer in 1997.
|
||||
|
||||
An [obituary](http://www.kismetrose.com/antirpg/PullingObituary091997.html) reports on the many honors and awards she’d received for her anti-occult work, without noting any of the critiques.
|
||||
|
||||
Her associate Thomas Radecki is still living. In 1992, his medical license was revoked for coercing female patients into having sex. He went on to run a ‘rehab center’ that was found, in 2016, to be [trading opioids for sex](https://www.pennlive.com/news/2018/02/psychiatrist_convicted_in_drug.html).
|
||||
|
||||
The man who protested ‘violence’ in a fantasy board game was, it turns out, a sexual predator. He’ll be in prison until his death.
|
||||
|
||||
## It ends up being a story about a grieving mother who launched into a career in media hoaxing.
|
||||
|
||||
If Patricia Pulling had ever been trying to deal with grief, she quickly found other uses for her fictions.
|
||||
|
||||
Dr. Thomas Radecki saw a gig, and went along for the ride. They were both gamers, playing the world. 🔶
|
||||
@@ -0,0 +1,184 @@
|
||||
---
|
||||
title: "The Grim History of Slut-Shaming"
|
||||
source: "https://medium.com/grimhistorian/the-grim-history-of-slut-shaming-d053c5986801"
|
||||
author:
|
||||
- "[[Carlyn Beccia]]"
|
||||
published: 2023-03-07
|
||||
created: 2024-10-29
|
||||
description: "On June 28th, 1887, on a warm summer evening, twenty-three-year-old Elizabeth Cass was strolling down Regent Street in London. New to the city, Elizabeth was heading towards a shop to buy a new pair…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## From Cleopatra to Charity Girls, sluts have always been dangerous creatures.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@carlynbeccia?source=post_page---byline--d053c5986801--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/grimhistorian?source=post_page---byline--d053c5986801--------------------------------)
|
||||
|
||||

|
||||
|
||||
Gustav Klimt, Hygieia, Portion of Klimt’s painting Medicine, 1901–1907 | [Public Domain](https://en.wikipedia.org/wiki/Klimt_University_of_Vienna_Ceiling_Paintings#/media/File:Klimt_hygeia.jpg)
|
||||
|
||||
On June 28th, 1887, on a warm summer evening, twenty-three-year-old Elizabeth Cass was strolling down Regent Street in London. New to the city, Elizabeth was heading towards a shop to buy a new pair of gloves. As she walked, she couldn't help but feel like someone was watching her.
|
||||
|
||||
As Elizabeth made her way through the bustling crowds, she suddenly felt a vice grip on her arm. She spun around and faced a tall menacing police officer.
|
||||
|
||||
"I want you," said PC Bowden Endacott.
|
||||
|
||||
At first, Elizabeth was indignant. What right did this police officer have to manhandle her?
|
||||
|
||||
But Endacott was not just any police officer. He was a zealous enforcer of The Contagious Diseases Act, which allowed officers to arrest women suspected of prostitution. Endacott reputedly arrested three or four (alleged) prostitutes a week.
|
||||
|
||||
The Contagious Diseases Act was first passed in 1864 by UK Parliament to prevent venereal diseases within the armed forces. [According to hospital records](https://www.gutenberg.org/files/63415/63415-h/63415-h.htm#Prostitution_in_London), one in five army men was infected with syphilis alone. With such high numbers, Parliament became desperate to contain its spread.
|
||||
|
||||
Consequently, the legislation allowed police officers to arrest women suspected of prostitution. Once arrested, the women endured invasive medical examinations, and if they were found to be infected, would be confined in a lock hospital until they recovered — sometimes for as long as a year.
|
||||
|
||||
Men, on the other hand, were never arrested or detained for soliciting prostitutes or for having venereal diseases.
|
||||
|
||||
Endacott claimed to have been watching Elizabeth from afar before he accused her of soliciting. Of course, Elizabeth couldn't understand how a young woman shopping alone on Regent Street could be mistaken for a prostitute. As she was dragged away by the officer, she had no idea what fate awaited her.
|
||||
|
||||
Elizabeth was taken to the police station, where she was to be detained overnight. Fortunately, her employer, Madame Bowman, spoke up for Elizabeth, vouching for her respectability. The charges were dismissed.
|
||||
|
||||

|
||||
|
||||
The *Swell's Night Guides,* [*Public Domain*](https://www.bl.uk/collection-items/the-new-swells-night-guide)
|
||||
|
||||
Elizabeth was lucky. But thousands of other women yanked off the streets were not.
|
||||
|
||||
The case left a lasting impact on public opinion and shined a harsh black light on the mistreatment of working-class women by the Metropolitan Police. It also threw gasoline on a debate that is as common today as it was in Victorian London — was an unchaperoned woman navigating a dangerous public space asking for trouble? And if a woman wanted to walk alone, did she first need to conform to the ideals of respectability?
|
||||
|
||||
Of course, the notion that a woman must "conform to the ideals of respectability" has a different name today — slut shaming.
|
||||
|
||||
> “Death is the fairest cover for her shame.” — Much Ado About Nothing, Act 4 Scene 1
|
||||
|
||||
## The First Sluts Were Not Sexualized
|
||||
|
||||
Centuries ago, the word "slut” had a very different meaning. It referred to a woman who was dirty, untidy, or lazy. Chaucer even used "sluttish” to describe men, but it was primarily used to shame lower-class women who didn't keep up with their domestic responsibilities. For example, the phrase "slut's pennies" described the hard knots in bread from a housewife's poor kneading, and "slut's wool" was the dust left on the floor. So, essentially, if you didn’t keep your bread kneaded and your house clean, you were a slut.
|
||||
|
||||
This association with untidiness continued for centuries, even up to the eighteenth century when Samuel Johnson's dictionary defined a slut as a lazy housekeeper. In the nineteenth century, it also described dirty animals like dogs or pigs.
|
||||
|
||||
It wasn't until the 1960s that "slut” took on its current meaning of a sexually amoral woman.
|
||||
|
||||
Today, when someone calls a woman a slut, it's not because she is dirty or undomesticated. It's because she's dared to take pleasure from her sexuality.
|
||||
|
||||
Throughout history, sluts have been dangerous creatures. A slut dressed provocatively, spoke candidly, and sated her sexual appetite. But that brazenness often came at a price — public condemnation, loss of social status, and sometimes even death.
|
||||
|
||||

|
||||
|
||||
Leighton-The Fisherman and the Syren-c. 1856–1858 | [Public Domain](https://en.wikipedia.org/wiki/The_Fisherman_and_the_Syren#/media/File:Leighton-The_Fisherman_and_the_Syren-c._1856-1858.jpg)
|
||||
|
||||
## Those Siren Temptresses of Antiquity
|
||||
|
||||
In Ancient Rome, there were some serious double standards surrounding sex. In 18 BC, Emperor Augustus became Rome's morality police and passed Lex Julia or “Julian Laws,” making adultery a crime. Cheating wives could be publicly shamed, exiled, or even put to death.
|
||||
|
||||
And who was responsible for doling out the punishment? Well, if you were a daughter, your dear old dad had that honor. Husbands were instructed to divorce their adulterous wives instead of going straight for the kill, but the courts tended to be pretty lenient if a husband lost his temper.
|
||||
|
||||
Now, if a husband strayed, his wife couldn't defame his character or bring him to court. Later laws allowed wives to quietly divorce cheating husbands, but men faced far less severe financial consequences than women did.
|
||||
|
||||
Julian Laws also affected men's attitudes toward women. Since women were seen as the gatekeepers of sexual morality, men began to view them with suspicion and even contempt. This attitude was reflected in Roman literature, where women were often portrayed as jezebels who led men astray or, worse, as ruthless Deliahs, cutting away men's virility.
|
||||
|
||||
But sluts were not only feared because they led men out of Eden. ==Sluts were feared because they conquered Eden.== Cleopatra cemented her power through brilliant statecraft, but she is remembered as a manipulative she-devil who used her feminine wiles to control Julius Caesar and Mark Antony, ultimately leading to their downfall. In fact, Cleopatra's seductive powers were so potent that she was often blamed for the destruction of the Roman Republic. Now, that's one femme fatale.
|
||||
|
||||
## Shame. Shame. Shame…Those Medieval Mavens
|
||||
|
||||
In times of yore, the Church had a whole list of sins considered major no-nos. These sins were divided into two categories: venial sins and mortal sins. Venial sins were the lesser of the two evils and included things like lying, gossiping and being a bit of a glutton. Mortal sins, on the other hand, were the biggies — the ones that could send you straight to hell in a handbasket if you didn't confess and repent.
|
||||
|
||||
And guess what sin was at the top of that list? You guessed it — sex or what the Church called "carnal sin."
|
||||
|
||||
Now, couples could get frisky, but they had to do it within the bounds of holy matrimony with the sole purpose of procreating. Pre-marital sex, adultery, and even a little bit of self-love were not condoned.
|
||||
|
||||
The Church had some especially whacked beliefs about the world's oldest profession. On the one hand, it begrudgingly accepted that prostitution was a necessary "boys will be boys" evil. But, it also wanted to keep a tight leash on people's sex lives to maintain its moral high ground.
|
||||
|
||||
The solution? Public shaming. Well, public shaming of women, that is. Women of ill repute were made to traipse through the streets wearing striped hoods and holding white rods as symbols of their licentiousness.
|
||||
|
||||
But for repeat offenders, punishments were more severe. Those brassy strumpets were stripped naked and forced to ride a horse backward, facing its hindquarters — the ultimate symbol of shame back then. Apparently, looking at an ass made you an ass.
|
||||
|
||||

|
||||
|
||||
Wright, Thomas, 1810–1877 | [Public Domain](https://wellcomecollection.org/works/pez53rd9/images?id=murd2tpn)
|
||||
|
||||
The punishments were also creative for societal ladies who flouted morals. Those women were forced to confess their carnal sins to a congregation while wearing a white garment symbolizing their shame and a white paper mitre with their sins written on it.
|
||||
|
||||
Other times promiscuous women were locked up in a convent to atone for their sins. And if a woman had a child out of wedlock, society shunned her for the rest of her life.
|
||||
|
||||
Now, let's talk about the guys. Horny men were still punished but weren't treated as harshly as women. How could they be? It was the harlot's fault for tempting the man. Or so the logic went.
|
||||
|
||||
One common punishment for randy men was to go on a pilgrimage to a holy site. They might also be excommunicated from the Church, but this was less common than it was for women.
|
||||
|
||||
So to recap. Promiscuous men were sent on vacation. Promiscuous women were sent to a nunnery.
|
||||
|
||||
## Much To Do About Dancing
|
||||
|
||||
By the sixteenth century, slut-shaming was as commonplace as head lice and questionable medical practices. Even Shakespeare got in on the action with plays that highlighted the fallen woman trope.
|
||||
|
||||
Outside of literature, women suspected of being unchaste were forced to undergo a physical examination to determine their virginity. This examination could involve a male physician inserting his fingers into the woman's vagina to check for the presence of a hymen — a test that does not indicate if a woman has had penetrative sex.
|
||||
|
||||
Furthermore, women who engaged in pre-marital sex could be publicly whipped, branded, or even sentenced to death. Often these women's sexual powers were so feared that they were accused of sorcery (aka witchcraft). Even today, seductive women are still described as "beguiling, bewitching, or enchanting" — words that imply a woman's sexuality is wicked.
|
||||
|
||||
Young adults fought back against the stigmatization. In Puritanical America, young people skirted sexual mores with "junketing." With junketing, a group of girls and boys gathered to laugh, dance, tell bawdy jokes, and sometimes engage in sexual hi-jinx.
|
||||
|
||||
But it was the dancing part that really got authorities thumping their bibles. Salem’s Puritan preacher, Increase Mather, warned his followers that dancing was basically the gateway drug to sin. He claimed that the body's very motion while dancing was inherently evil. He even went so far as to claim that dancing was "a recreation fitter for pagans and whores and drunkards than for Christians." Yikes. That makes *Footloose* look tame.
|
||||
|
||||

|
||||
|
||||
The Crush, Charles Dana Gibson, 1901 | [Public Domain](https://en.wikipedia.org/wiki/Gibson_Girl#/media/File:The_Crush,_Gibson.jpg)
|
||||
|
||||
## The Advertising Campaign that Made Society Fear Sluts
|
||||
|
||||
At the turn of the twentieth century, society continued to have rigid ideas about sex.
|
||||
|
||||
But as morals loosened, there came a new tool to control sexual behavior — the Social Hygiene Campaign. Now, that might sound like a fancy way to scrub your kitchen counters, but this was a different kind of hygiene. The idea was that if folks kept their pants on, they would avoid all sorts of trouble and prevent venereal diseases from spreading like wildfire.
|
||||
|
||||
At the time, soldiers returning from World War I brought back with them not only scars and memories but also syphilis and gonorrhea. These diseases were highly contagious and, before the discovery of antibiotics, could cause serious health problems and death.
|
||||
|
||||
Unfortunately, the campaign quickly turned into your typical witch-hunt. Just like the Contagious Diseases Act of the previous century, authorities didn't need any evidence to drag a woman in for testing. Even something as innocuous as flirting with a soldier could get you in hot water. In one Louisiana town, a woman was forced to undergo a gynecological exam for dining alone in a restaurant. If a lady was foolish enough to eat alone, she must have a syphilitic brain.
|
||||
|
||||
Women of color were especially targeted. At the time, the medical community taught that non-white women were less moral and more likely to carry venereal diseases — a belief that persisted for decades.
|
||||
|
||||

|
||||
|
||||
*Life Magazine* cover "The Flapper" by Frank Xavier Leyendecker, February 2nd, 1922| [Public Domain](https://en.wikipedia.org/wiki/Flapper#/media/File:The_Flapper_by_Frank_Xavier_Leyendecker.jpg)
|
||||
|
||||
## Charity Girls: The First Hookup Culture
|
||||
|
||||
The 1920s were a time of social upheaval in America. Women finally gained the right to vote, and with that newfound power came shorter hemlines and longer nights out. Prohibition only added to the madness, creating secret speakeasies and underground drinking establishments that fueled rebellion and excitement. Where there's drunkenness, there's debauchery.
|
||||
|
||||
The term "dating" entered the lexicon around this time, and young women who dated boys were called Charity Girls. These ladies basically exchanged their company for a meal or a movie ticket. They were often from working-class backgrounds and were unapologetic in their pursuit of pleasure, drawing the ire of many who viewed them as immoral and responsible for spreading venereal diseases. Because, of course, if you're having fun, you must be spreading disease.
|
||||
|
||||
To crack down on those frisky teens, President Wilson launched "purity campaigns" to warn young men about the dangers of venereal diseases. They went so far as to close down red-light districts and create "moral zones" around military training camps where women of ill repute were not allowed.
|
||||
|
||||

|
||||
|
||||
World War II public health posters, between 1942–1945 | [Public Domain](https://catalog.archives.gov/id/516062)
|
||||
|
||||
Altogether, about 30,000 women were detained. Some were let go immediately. More than 18,000, however, were interned in federally financed facilities and subjected to forced medical treatment. Most historians believe the number of those detained was far more significant than federal records suggest because uncounted numbers of women were interned in local facilities.
|
||||
|
||||
And since penicillin was not discovered yet, substances like mercury, arsenic compounds, iodine, and silver nitrate were used. These treatments caused horrible side effects — tremors, insomnia, memory loss, neuromuscular effects, headaches, and cognitive and motor dysfunction.
|
||||
|
||||
I recently watched a disturbing video montage of all the celebrities who slut-shamed Britney Spears throughout her career. Most unsettling was a 2004 interview in which singer Avril Lavigne said Britney Spears dances "like a ho."
|
||||
|
||||
I found it ironic that a woman who branded herself as a tough, stick-it-to-the-patriarchy feminist would publically disparage a fellow artist for her sexuality.
|
||||
|
||||
But here we are. And while our knee-jerk reaction is to blame slut shaming on a history of male oppression, women's hands are not clean.
|
||||
|
||||
Today, when women are slut-shamed, they are not burnt as witches or imprisoned in hospitals, but they do experience feelings of self-doubt, as well as social alienation and bullying. More gravely, they may face sexual harassment and assault. By shaming women for their sexuality, we reinforce the idea that women are mere objects to be controlled and subjugated.
|
||||
|
||||
Recently, feminists have tried to reclaim the word slut with "slutwalks” and the anti-GOP Rock the Slut Vote political movement. Their efforts feel like a punchline to a joke no one gets. Women still must remain vigilant of how we take up space in public spheres, and society still promotes a hypersexualized ideal of beauty while warning women not to give men "the wrong idea."
|
||||
|
||||
You can’t change the meaning of a word when a word is this loaded with meaning.
|
||||
|
||||
Of course, language is a chimeric beast. Meanings expand, contract, and take on new forms. But let's not pretend that calling your friend a "slut” or “ho” as a term of endearment tames this dragon.
|
||||
|
||||
Or better yet, next time you castigate a woman for how she dresses, dances, or speaks, remember all the persecuted women throughout history who fought for the freedom to express their sexuality. They were the real powerful sluts.
|
||||
|
||||
## More from Carlyn Beccia:
|
||||
|
||||
## To read more, please visit my affiliate link. A portion of your Medium subscription supports my work:
|
||||
@@ -0,0 +1,173 @@
|
||||
---
|
||||
title: "The Nordic Model is Not A Socialist Model, It is Capitalist."
|
||||
source: "https://medium.com/the-simulacrum/the-nordic-model-is-not-a-socialist-model-it-is-capitalist-bbe828d17a8a"
|
||||
author:
|
||||
- "[[Freedom Preetham]]"
|
||||
published: 2024-01-06
|
||||
created: 2024-10-29
|
||||
description: "The Nordic countries — Sweden, Norway, Denmark, and Finland — are frequently cited in discussions on socialism, but this representation is a significant misinterpretation of their actual economic and…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@freedom2?source=post_page---byline--bbe828d17a8a--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/the-simulacrum?source=post_page---byline--bbe828d17a8a--------------------------------)
|
||||
|
||||
The Nordic countries — Sweden, Norway, Denmark, and Finland — are frequently cited in discussions on socialism, but this representation is a significant misinterpretation of their actual economic and social systems. This extensive exploration aims to dissect the Nordic model in-depth, revealing its capitalist core, sophisticated use of tax revenues, and the nuanced reasons behind its common mislabeling as socialism.
|
||||
|
||||
Repeatedly, the leaders of Nordic nations have declared their commitment to capitalism and a free-market economy, distancing themselves from socialism. Despite these clear statements, there continues to be a recurring trend where individuals incorrectly label these countries as examples of socialist models. This persistent mislabeling overlooks the explicit economic stances these countries have taken, leading to a distorted understanding of their actual economic systems.
|
||||
|
||||
The best you can do is call it a Social Democracy based on Capitalism.
|
||||
|
||||
**Capitalism Blog Series:**
|
||||
|
||||
[Part 1 — Capitalism and Human Welfare: History, Profit, Ethics](https://medium.com/the-simulacrum/part-1-capitalism-and-human-welfare-history-profit-ethics-82a56d3ff97e)
|
||||
|
||||
[Part 2 — Capitalism in the Contemporary World: Types and Nuances](https://medium.com/the-simulacrum/part-2-capitalism-in-the-contemporary-world-types-and-nuances-b2a9f67d113c)
|
||||
|
||||
[Part 3 — Capitalism in the Age of Artificial General Intelligence (AGI)](https://medium.com/the-simulacrum/part-3-capitalism-in-the-age-of-artificial-general-intelligence-agi-eea05c60e42c)
|
||||
|
||||
## Social Welfare is NOT Socialism!
|
||||
|
||||
In contemporary discourse, the terms ‘social welfare’ and ‘socialism’ are often intermingled, leading to a pervasive misunderstanding of their distinct natures. I want to delineate these concepts with precision, underpinning the argument with factual and theoretical evidence.
|
||||
|
||||
==Social welfare refers to a system where the government undertakes the responsibility to provide certain basic services and support to its citizens. This includes initiatives like healthcare, education, unemployment benefits, and public housing. The primary objective of social welfare is to enhance the living standards of individuals, particularly those in need, thereby ensuring a baseline of equality in access to essential services.==
|
||||
|
||||
On the other hand, socialism is an economic and political ideology that advocates for the ownership and regulation of the means of production by the community as a whole. In its purest form, socialism seeks to redistribute wealth more equally among the population, often through more radical means than social welfare policies. The focus of socialism extends beyond providing basic services to a complete restructuring of the economic system to eliminate private ownership of capital.
|
||||
|
||||

|
||||
|
||||
The crucial distinction lies in the approach and scope. Social welfare does not necessitate a fundamental change in economic structures or the abolition of private property. Instead, it operates within the existing capitalist framework, using mechanisms like taxation to fund services and benefits. Socialism, conversely, involves a comprehensive overhaul of the economic system towards collective ownership.
|
||||
|
||||
Understanding this distinction is vital for informed discourse on public policy. While social welfare seeks to mitigate the inequalities inherent in a capitalist system, socialism proposes a different economic system altogether. Misconstruing these concepts not only leads to semantic confusion but also hinders constructive policy discussions.
|
||||
|
||||
## Socialism vs Communism
|
||||
|
||||
Communism represents the most extreme form of socialism, characterized by a complete elimination of class distinctions and the absence of private ownership. In this system, the society collectively owns all property and resources, aiming for a classless societal structure.
|
||||
|
||||
Socialism, while also emphasizing collective ownership, permits some small degree of private ownership. In a socialist system, the state predominantly controls industries, services, and properties, yet class structures still exist.
|
||||
|
||||
The fundamental distinction between these two ideologies and Capitalism is that Socialism (hence by extension Communism) do not support a free-market economy where the majority of property, services, and industries are privately owned.
|
||||
|
||||
## A Brief History
|
||||
|
||||
The Nordic model, as we understand it today, evolved over several decades, primarily in the post-World War II era. Its development can be traced back to the late 1930s and early 1940s, with significant advancements occurring during the 1950s and 1960s. The model is characterized by its unique combination of a comprehensive welfare state and a capitalist market economy, and its development was influenced by various social, political, and economic factors unique to the Nordic countries (Sweden, Norway, Denmark, Finland, and Iceland).
|
||||
|
||||
Key Historical Milestones:
|
||||
|
||||
**1930s-1940s: Foundations of the Welfare State**
|
||||
|
||||
- In the 1930s, the Nordic countries began developing social policies that laid the groundwork for their future welfare states. This period saw the introduction of various social insurance schemes and labor market policies.
|
||||
- During and after World War II, there was a strong push towards social solidarity and economic stability, which accelerated the development of welfare policies.
|
||||
|
||||
**1950s-1960s: Expansion of Welfare Programs**
|
||||
|
||||
- The post-war economic boom in Europe provided the necessary resources for the expansion of social welfare programs.
|
||||
- In the 1950s and 1960s, Nordic governments, many led by social-democratic parties, implemented policies such as universal healthcare, free education, and extensive social security systems.
|
||||
|
||||
**1970s: Maturation of the Welfare State**
|
||||
|
||||
- By the 1970s, the Nordic model had matured, with a comprehensive set of welfare programs firmly in place. This period also saw increased government intervention in the economy and high levels of taxation to fund the welfare state.
|
||||
|
||||
**1980s-1990s: Economic Challenges and Reforms**
|
||||
|
||||
- In the 1980s and 1990s, the Nordic countries faced economic challenges, including inflation, rising unemployment, and fiscal deficits. These challenges prompted a series of reforms to make the welfare state more sustainable, including deregulation, privatization, and welfare reform.
|
||||
|
||||
**21st Century: Continued Evolution**
|
||||
|
||||
- In the 21st century, the Nordic model has continued to evolve, balancing welfare policies with economic competitiveness. The countries have focused on maintaining high levels of labor force participation, innovation, and adapting to globalization.
|
||||
|
||||
## Understanding the Nordic Capitalist Foundation
|
||||
|
||||
Now coming to the Nordic Model, beneath the veneer of extensive social programs lies a dynamic capitalist economy, characterized by private ownership, open markets, and a competitive global stance.
|
||||
|
||||
- Private Sector Dominance: The Nordic countries are powerhouses of private enterprise. Volvo and Ericsson from Sweden, Nokia from Finland, and Maersk from Denmark exemplify their global corporate success, underscoring the capitalist nature of these economies.
|
||||
- Innovation and Global Market Integration: These nations are not isolated socialist paradises but are deeply integrated into the global economy. They actively participate in international trade and foster environments conducive to technological innovation and entrepreneurship. The rise of globally competitive startups in these regions, such as Spotify and Rovio Entertainment, underscores this point.
|
||||
|
||||
## The Welfare State and Taxation
|
||||
|
||||
The extensive social welfare programs in Nordic countries are often seen as hallmarks of socialism. However, they function within a fundamentally capitalist framework.
|
||||
|
||||
- Tax Revenue Allocation: High tax rates support a range of public services. These include not just healthcare and education but also substantial investments in public infrastructure, research and development, and social security systems. The effective use of these funds reflects a sophisticated approach to public finance that prioritizes societal well-being alongside economic growth.
|
||||
- A Productive Welfare State: Unlike the redistributive goal of socialism, the Nordic welfare state is designed to enhance productivity. For example, Finland’s focus on high-quality education creates a skilled workforce, driving innovation and economic competitiveness.
|
||||
- Link: [Insights into the Tax Systems of Scandinavian Countries](https://taxfoundation.org/blog/scandinavian-social-programs-taxes-2023/)
|
||||
|
||||
## The Role of Government in a Capitalist Economy
|
||||
|
||||
The Nordic governments demonstrate how strategic state intervention can coexist with and even enhance a capitalist economy.
|
||||
|
||||
- Balancing the Market with Social Needs: While the market drives economic activity, the government intervenes to correct market failures and ensure social welfare. This includes regulations to promote fair competition and prevent monopolies, unlike socialist economies where the state often controls key industries.
|
||||
- Sustainable Development: Environmental policies in these countries are a blend of regulatory frameworks and market-based solutions. For instance, Norway’s investment in electric vehicle infrastructure and Sweden’s carbon taxing system showcase how environmental concerns are addressed within a capitalist framework.
|
||||
|
||||
## Demystifying the Socialist Misconception
|
||||
|
||||
The misinterpretation of the Nordic model as socialist stems from a superficial analysis of its welfare policies.
|
||||
|
||||
- Economic Freedom: Despite their extensive welfare systems, these countries rank high in economic freedom indices, a feature inconsistent with socialist economies. This includes factors like business freedom, investment freedom, and property rights.
|
||||
- Democratic Values and Individual Rights: In contrast to many socialist regimes, Nordic countries are characterized by their strong commitment to democracy, individual rights, and freedom of expression.
|
||||
|
||||
## Aging and Fertility Challenges
|
||||
|
||||
The aging population and drop in fertility in Nordic countries is presenting significant challenges to their welfare model. As the population grows older, there’s an increased demand for healthcare and elderly care services, leading to rising costs and placing additional strain on healthcare systems.
|
||||
|
||||

|
||||
|
||||
source: [https://www.nordicstatistics.org/areas/demography/](https://www.nordicstatistics.org/areas/demography/)
|
||||
|
||||
Pension systems are also under pressure, with concerns about their sustainability due to the longer support required for an expanding elderly demographic. This demographic shift is leading to potential labor market shortages, as the working-age population decreases. In turn, this could result in slower economic growth, impacting the ability to generate sufficient tax revenues to fund welfare programs.
|
||||
|
||||

|
||||
|
||||
Population in 2022 (by 1000s). Notice the rightmost blue line for 70+ age group. source: [https://www.nordicstatistics.org/areas/demography/](https://www.statista.com/statistics/1296262/nordics-total-population-age/)
|
||||
|
||||
To address labor shortages, immigration is seen as a potential solution, although it comes with integration challenges. Additionally, technological advancements and policy adaptations are being considered to manage these issues, such as encouraging older workers to remain in the workforce longer and utilizing digital healthcare solutions. The Nordic model, famed for its balance of welfare and economic efficiency, is thus facing a crucial test in adapting to these demographic changes.
|
||||
|
||||
## Why the Nordic Model May Face Challenges in Other Geographies?
|
||||
|
||||
In addition to cultural, economic, and political factors, the GINI Index, income gap, and natural resources also play significant roles in determining the feasibility of the Nordic model in other geographies.
|
||||
|
||||
GINI Index and Income Inequality
|
||||
|
||||

|
||||
|
||||
- Low Income Inequality in Nordic Countries: The Nordic countries have some of the lowest GINI index scores in the world, indicating low income inequality. This is a result of their extensive production enhancement policies and welfare programs. (they started way back).
|
||||
- Challenges in High Inequality Regions: In countries with high income inequality, implementing the Nordic model would require massive redistribution, which could be politically and socially challenging. High GINI index scores often reflect deeper systemic economic issues that can’t be addressed simply by adopting another region’s policies.
|
||||
|
||||
Natural Resources and Wealth Distribution
|
||||
|
||||
- Resource Wealth in Nordic Countries: Some Nordic countries, like Norway, have significant natural resources, such as oil, which have been effectively managed and used to fund their welfare programs. The state’s control over these resources and the wealth generated from them is a unique aspect of their economic model.
|
||||
- Varied Resource Distribution Globally: Other countries may not have the same level of natural resources or may have already allocated resource revenues differently. Additionally, managing resource wealth effectively and equitably, avoiding the ‘resource curse’, requires strong, transparent institutions, which may not be present in all countries.
|
||||
|
||||
Economic Scale and Scope
|
||||
|
||||
- Small, Advanced Economies: The Nordic economies are relatively small and highly advanced, allowing for efficient administration of welfare programs and economic policies.
|
||||
- Scaling and Complexity in Larger Economies: Larger economies may face complexities in scaling such policies, and countries at different stages of economic development might struggle to generate sufficient wealth to redistribute.
|
||||
|
||||
Taxation and Public Spending
|
||||
|
||||
- Efficient Tax Systems: The success of the Nordic model is partly due to efficient tax systems and a high level of public trust in government spending. Citizens see tangible benefits from their tax contributions, reinforcing the social contract.
|
||||
- Taxation Issues in Other Contexts: In countries where tax evasion is widespread or where public spending is inefficient or corrupt, increasing taxation to Nordic levels could be both impractical and unpopular.
|
||||
|
||||
Historical and Institutional Context
|
||||
|
||||
- Unique Institutional Development: The development of Nordic institutions over decades, underpinned by social trust and democratic norms, has been crucial for their model’s success.
|
||||
- Diverse Historical Trajectories: Other countries with different historical and institutional backgrounds may not have the requisite foundation for a similar model.
|
||||
|
||||
The Nordic model represents a unique blend of free-market capitalism and an extensive welfare state. This model defies the traditional dichotomies of socialism and capitalism, offering a third way that combines economic efficiency with social equity. It’s a testament to the potential of a well-regulated capitalist economy to generate wealth while ensuring broad-based societal well-being.
|
||||
|
||||
## Invitation for Extended Discourse
|
||||
|
||||
This in-depth exploration opens the floor for further discussion.
|
||||
|
||||
- How can elements of the Nordic model be adapted to other cultural and economic contexts?
|
||||
- What lessons can emerging economies draw from this model?
|
||||
|
||||
I encourage readers to share their perspectives and engage in a dialogue about applying the principles of the Nordic model to address global economic challenges.
|
||||
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: "The Return-To-Office Productivity Argument Is Over"
|
||||
source: "https://ehandbook.com/the-return-to-office-productivity-argument-is-over-c23e62ef1cd1"
|
||||
author:
|
||||
- "[[Joe Procopio]]"
|
||||
published: 2024-07-29
|
||||
created: 2024-10-29
|
||||
description: "I'm going to end the return to office and remote work productivity arguments forever, with a proposal that all management folks wear formal business attire."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Hammering the last nail into the return-to-office mandate coffin in a way that everyone can understand
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://jproco.medium.com/?source=post_page---byline--c23e62ef1cd1--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://ehandbook.com/?source=post_page---byline--c23e62ef1cd1--------------------------------)
|
||||
|
||||

|
||||
|
||||
OK, *fine*. Let’s argue about remote work, you miscreants.
|
||||
|
||||
A couple weeks ago, I wrote an article declaring [the end of return-to-office mandates](https://medium.com/entrepreneur-s-handbook/return-to-office-mandates-are-finally-unquestionably-dead-1634d7d33da9). In it, I referenced a story about a return-to-office mandate from Dell which allegedly resulted in *almost half* the company’s remote workers choosing to stay remote, even if it meant they could no longer be promoted or hired into new roles within the company.
|
||||
|
||||
That was shocking. If you didn’t find that shocking, then nothing shocks you. You are unshockable.
|
||||
|
||||
With that as the basis of my return-to-office mandate obituary, I also declared that *all the arguments* about remote work being more or less productive than in-office work were moot. Done. Over.
|
||||
|
||||
It’s not that one side or the other *finally won the argument*, but that the argument itself no longer holds any weight. The folks at Dell heard all the evidence, collectively shrugged, and chose remote work at the expense of their career.
|
||||
|
||||
==That’s a bona-fide nuclear option, one that takes the productivity argument completely off the table. Yet more than half of the comments on my article, both public and private, were… arguments as to whether or not remote work was more or less productive.==
|
||||
|
||||
Now, as I said in my original article, I personally and professionally understand *both sides* of the remote work productivity argument. I do have an opinion, but you’ll have to read this entire article to get to it — and suffer the following nonsense.
|
||||
|
||||
Because it’s nonsense we all need to hear.
|
||||
|
||||
I’m going to end the remote work productivity argument forever — with a modest proposal.
|
||||
|
||||
## The Return-To-Formal-Business-Attire Mandate
|
||||
|
||||
Let’s talk about suits.
|
||||
|
||||
Quick story. My first job out of college was with a prestigious consulting firm, and it required me to wear a suit — all day, every day. I was in a nondescript cubicle on the third floor of a nondescript office building. I never saw customers. I rarely saw my boss’s boss.
|
||||
|
||||
Now, while I stated in the previous article that I’ve always hated working in an office, I at least understand both sides. I can’t say the same about those \*\*\*\*\*\*\* suits.
|
||||
|
||||
So here’s my proposal.
|
||||
|
||||
How about all employees agree to come back to the office if management — *all* management, including *middle* management, including *anyone* who has people directly reporting to them — agree to wear formal business attire all day, every day.
|
||||
|
||||
I’m not kidding.
|
||||
|
||||
Oh, this would also include formal business shoes and not, like Skechers or Hey Dudes or Allbirds or some other sneaky shit that looks like a shoe but is a sneaker.
|
||||
|
||||
Now, let’s argue the productivity pros and cons.
|
||||
|
||||
## Formal Business Attire Is Good/Bad For Company Productivity
|
||||
|
||||
There are arguments to be made that wearing formal business attire makes a person more productive.
|
||||
|
||||
It’s the same reason weekend warrior road cyclists wear racing uniforms with all the labels and advertisements on them. If you feel more like Lance Armstrong (or whoever, I don’t follow the sport), then you’ll pedal more harder like Lance Armstrong.
|
||||
|
||||
So let’s all be Warren Buffet.
|
||||
|
||||
It’s part of the dance. It sets a more professional tone throughout the organization, leading to better business outcomes across the company.
|
||||
|
||||
At the same time, if any physical exertion is required during the day, or any outdoors time in the spring or summer, formal business attire is instantly and completely impractical. You could also argue that it saps creativity, energy, and comfort, leading to poorer business outcomes across the company.
|
||||
|
||||
## Formal Business Attire Is Good/Bad For Employee Productivity
|
||||
|
||||
One could argue that a professional appearance makes the wearer more confident, and psychology will agree with you. Formal business attire gives employees a more positive outlook about themselves and prepares them for the job they want.
|
||||
|
||||
All this makes for a happier, more ambitious, and thus more productive employee.
|
||||
|
||||
That said, it’s an unreimbursed required expense, with the purchase and maintenance expected to be burdened by the employee regardless of where they fall on the pay scale. It also cuts into their time, not just the time it takes to get dressed every morning, but the time it takes to run back and forth to the dry cleaners.
|
||||
|
||||
These small-but-additive time expenses are also entirely shouldered by the employee, not the company, as “work time” doesn’t start until the now dapper employee sits down at his or her desk.
|
||||
|
||||
## Formal Business Attire Is Good/Bad For Workplace Productivity
|
||||
|
||||
You could say that wearing formal business attire brings a standard to the workplace that eliminates the need to have complex guidelines about who gets offended by what kind of casual appearance.
|
||||
|
||||
It’s also cross-generation. Boomer business attire is no different than Gen Z business attire, while still allowing for unique, personal touches of self-expression, like Funny Tie Friday.
|
||||
|
||||
And let’s face it, if we don’t do this, someone is going to come into work wearing pajamas. We’re already halfway there with “athleisure.”
|
||||
|
||||
In fact… *in fact*, we could also go one step further and bring back required hats and suspenders for the men and required skirts and stockings for the ladies.
|
||||
|
||||
Are we done? Do we all get it? Or do I need to get even more obtuse?
|
||||
|
||||
## The Argument Itself Doesn’t Matter
|
||||
|
||||
All of those things are true, all the arguments on both sides, except for the second-to-last sentence of the last one, which was satire. We could argue those points all day, every day, for years.
|
||||
|
||||
My point is those arguments no longer matter.
|
||||
|
||||
- Yes, having everyone in a centralized location allows for some types of collaboration that you will never get remotely.
|
||||
- Yes, you have to trust your employees more when they’re remote.
|
||||
- Yes, employees have a greater chance to goof off more when they’re remote.
|
||||
- Yes, your contributions won’t get noticed as quickly or wholly if you’re remote.
|
||||
- Yes, commutes are a waste of time.
|
||||
|
||||
Those are all true too. None of that matters. When you start to argue one way or the other, ask yourself why we’re not all wearing formal business attire anymore. It hasn’t been that long since it was mostly a requirement.
|
||||
|
||||
That’s what happened with the Dell mandate. That’s where all this is headed. That’s why employers need to speed up their timelines on integrating robust plans to accommodate remote work, get out of those corporate leases, and develop a remote or hybrid model that works for each role within the org.
|
||||
|
||||
You’ve got my opinion, you know where I stand. If you think I’m in the right place on these kinds of issues, now would be a good time to join my email list at [joeprocopio.com](https://www.joeprocopio.com/).
|
||||
@@ -0,0 +1,136 @@
|
||||
---
|
||||
title: "The Women of Right-Wing Media"
|
||||
source: "https://medium.com/fourth-wave/the-women-of-right-wing-media-5fdf237402ad"
|
||||
author:
|
||||
- "[[Streamofsocialconscience]]"
|
||||
published: 2024-07-28
|
||||
created: 2024-10-29
|
||||
description: "When you think of the right-wing — not just the media, but politics as well — you probably imagine a straight, white man. For the most part, you would be right. The Daily Wire, Prager U, and The…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Supporting traditional values unconditionally — for other women
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@MiaBelllaaa?source=post_page---byline--5fdf237402ad--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/fourth-wave?source=post_page---byline--5fdf237402ad--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image from Poison of the right-wing female pundit, Salon
|
||||
|
||||
When you think of the right-wing — not just the media, but politics as well — you probably imagine a straight, white man.
|
||||
|
||||
For the most part, you would be right. *The Daily Wire*, *Prager U*, and *The Blaze* are some of the largest right-wing media outlets, that primarily use social media, and are all headed by men. When it comes to traditional media, *Fox News* is best known for Tucker Carlson (even if they got rid of him). Gamergate, too, was a major online right-wing movement that was inspired by young men, who felt feminists were infiltrating their video game sphere. The modern red pill movement is also primarily male, [but there are female influencers.](https://medium.com/fourth-wave/meet-the-female-andrew-tate-b8482333a8de) In general, [young women tend to trend left, while young men trend right.](https://www.axios.com/2024/02/16/gen-z-gender-gap-political-left-women)
|
||||
|
||||
However, with Amber Rose speaking at the Republican National Convention (RNC) in support of Trump, it is worth noting that many women are speaking in favor of the right-wing. Libs of TikTok — which posts ‘cringe’ liberals to mock and direct hate towards them, has caused a frenzy across our country at school board meetings and even legislation, was cited by Florida Governor Ron Desantis, and has led to death threats and firings for countless individuals — is run by a woman named Chaya Raichik. The rising star of *The Daily Wire*, the same network that brought you Ben Shapiro, is his female doppelganger Brett Cooper. There’s also Lauren Chen, Candace Owens, and Allie B Stuckey, to name a few. All women with large social media followings, who support right-wing talking points, including on gender.
|
||||
|
||||
While they share the same beliefs as their male counterparts, their presentation is different; most of these women are young and conventionally attractive, and they often present themselves in a much more pleasant and friendly way.
|
||||
|
||||
While Ben Shapiro and Brett Cooper may look alike and have the same political beliefs, Cooper comes across as much more charismatic and trendy. Part of this is because Cooper doesn’t speak at the speed of a car auctioneer. You can also compare their reactions to the *Barbie* movie; [Cooper was able to admit that she liked the movie, despite the liberal politics and opinion of her peers,](https://www.youtube.com/watch?v=eWuPRfBYhFE) while Ben Shapiro took angry photos lamenting that he had to watch the movie. His photo would later on be mocked by Gen-Z. He looks like a nerd.
|
||||
|
||||

|
||||
|
||||
From Ben Shapiro’s Twitter account.
|
||||
|
||||
[Amala Ekpunobi](https://www.youtube.com/@TheAmalaEkpunobi) is another one of these women, who started on *Prager U.* She is a biracial woman, her father being a Nigerian immigrant, and she also claims to be a former leftist activist, before eventually becoming a right-winger. She’s 24, and much like Brett, makes videos in a similar aesthetic and fashion as liberal influencers. It’s intelligent marketing, that invites young (and even left-leaning) viewers. Dennis Prager, the co-founder of *Prager U*, is a 75-year-old white man, falling in the same category as the out-of-touch boomer politicians Gen-Z complains about.
|
||||
|
||||
Not only are women promoting right-wing ideology, but they are important for it.
|
||||
|
||||
## A (brief) history of right-wing women
|
||||
|
||||
Anita Bryant, a former singer and pageant winner, was a prominent anti-gay activist in the late 70s. She ran the campaign “Save Our Children” to argue against discrimination protections for the LGBTQ community, promoting the conspiracy that the gay community molests children to “recruit” them. Anita was successful in her campaign, but it permanently destroyed her reputation and career; she became a much-hated figure in the gay community, even being hit in the face with a pie by a gay activist during a press conference.
|
||||
|
||||
Many parallels exist today, specifically with Chaya Raichik, who began the trend of right-wingers referring to queer people as “groomers” looking to convert children. Elementary school teachers, performers, and even children’s hospitals are not safe from the accusation. Alongside Chaya, there are also groups such as Moms for Liberty, who are behind the push to ban not only LGBTQ content in schools but also content about the Holocaust and slavery. All under the feminine guise of “protecting the children.”
|
||||
|
||||
But what children? Black and Jewish children are not protected by their history being banned to appease privileged children. Children from nontraditional families aren’t protected either.
|
||||
|
||||
While men are typically the ones who commit violent crimes, the weaponization of motherhood and femininity is used as a justification. A lot of violence against black men during the Jim Crow era, for example, was done under the banner of false rape accusations. Nazi Germany accused Jewish men of being perverts. Anti-immigrant and anti-refugee propaganda uses the same rhetoric today.
|
||||
|
||||
> Black and Jewish children are not protected by their history being banned to appease privileged children. Children from nontraditional families aren’t protected either.
|
||||
|
||||
Even further back, there was The National Association Opposed to Women Suffrage (NAOWS); an organization that was founded by women in 1911, who were opposed to their own right to vote.
|
||||
|
||||
They distributed a pamphlet, *Some Reasons Why We Oppose Votes for Women,* which outlined their beliefs; they stated that women did not need the vote to advance in society; that most women did not want to vote; and that women could be represented by their men. Even with the right to vote, you can still not vote if you choose, but these women wanted to enforce that on everybody.
|
||||
|
||||
They also claimed, in their pamphlet, *“We believe that political equality will deprive us of special privileges hitherto accorded to us by law.”* This is a common theme — conservative women are anti-feminist because they believe feminism will take away their female privileges, such as not working or serving in the army. However, do all women have these privileges?
|
||||
|
||||
Are working-class and poor women free from labor? The majority of women in “traditional” periods weren’t sitting at home, but instead doing hard labor on the farms, or in sweatshops. [The Triangle Shirtwaist Factory Fire,](https://www.history.com/topics/early-20th-century-us/triangle-shirtwaist-fire) in which predominately young, immigrant, female workers burned to death after being abused and underpaid, and widely ignored by the labor movement due to being female, happened in the year 1911 — a pre-feminist time, before women were even allowed to vote. Chivalry didn’t protect them. Do women in Syria or Gaza get to use their “female privilege” to escape war?
|
||||
|
||||
> Chivalry didn’t protect them \[the women killed in the Triangle Shirtwaist Factory fire\]. Do women in Syria or Gaza get to use their “female privilege” to escape war?
|
||||
|
||||
The women in NOAW were predominately wealthy women, and many of them were the wives of politicians — of course they felt they could exercise power through their husbands; wives of coal miners may not feel the same way. The founder, Josephine Jewell Dodge, was married to Congressman William E. Dodge, and lived a privileged life. She would be replaced by Alice Hay Wadsworth, who was the wife of a Senator. ==This is another theme among conservative female activists; most of them come from economic privilege, and as a result, are shielded from the worst parts of female oppression.==
|
||||
|
||||
A woman from a stable and wealthy family, for example, would have a much easier time getting away if the trad lifestyle didn’t work out. A woman who lives in economic privilege may not care as much about workplace discrimination as a woman who needs to work to live.
|
||||
|
||||
> This is another theme among conservative female activists; most of them come from economic privilege, and as a result, are shielded from the worst parts of female oppression.
|
||||
|
||||
As for female privilege, this argument would also be used by Phyllis Schlafly, a woman who stopped the Equal Rights Amendment (ERA); the ERA would have invalidated laws that discriminate against women. Schlafly opposed it for, among other reasons, the possibility it could cause women to be drafted. A lot of men critical of feminism argue that women want rights but not responsibilities — ironically, it’s anti-feminist women who don’t want the responsibility.
|
||||
|
||||
I don’t think anyone should be drafted; no one should be compelled to fight in a war that they have no interest in. The draft targets working-class men; while wealthy men can pay their way out, and the politicians who declared the war aren’t sent to fight in the first place.
|
||||
|
||||
When Trump ordered the assassination of Iranian General Soleimani in 2020, World War III began to trend on Twitter. With everything happening in Ukraine and the Middle East, fears of a wider conflict is reasonable. And whenever this discussion happens, memes like this start to spread.
|
||||
|
||||

|
||||
|
||||
from 9gag
|
||||
|
||||
This makes me wonder if some women embrace conservatism because traditional gender roles promise an escape from hardship, being taken care of by men. With all of the international and economic hardship, from foreign wars to the rising cost of living, the kitchen may feel safer. Unfortunately, propaganda is different from reality.
|
||||
|
||||
## Right-wing women, meet misogyny
|
||||
|
||||
In the early Trump era, Tomi Lahren was all the rage; she had her show on *TheBlaze*, where she hosted short video segments called “final thoughts” in which she criticized liberal politics. She was a cheerleader for conservatism and Trump, which got her fame among the right and hate among the left. This stardom came to an abrupt end in 2017 when her show was suspended after revealing in an interview with *The View* that she believed women should have the right to an abortion. She would eventually be fired. While she is still a conservative talking head today, she has nowhere near the amount of relevance and cultural sway she did before this interview.
|
||||
|
||||
The hypocrisy is glaring; the right claims to be against cancel culture and for freedom of speech, but they canceled Tomi for having an opinion they didn’t like. However, I’m not going to herald Tomi as a progressive, nor did I defend her when she was penalized by her network. [Tomi was highly critical of the Standing Rock protesters](https://www.facebook.com/watch/?v=140722921291269), who opposed building an oil pipeline on sovereign tribal land. [She also compared Black Lives Matter to the KKK.](https://www.dallasnews.com/news/2016/07/12/tweet-calling-black-lives-matter-the-new-kkk-gets-deleted-by-dallas-based-commentator/) I question why Tomi only has a progressive stance on an issue that could impact her directly.
|
||||
|
||||
> This stardom came to an abrupt end in 2017 when her show was suspended after revealing in an interview with *The View* that she believed women should have the right to an abortion.
|
||||
|
||||
And while Tomi may personally support the legal right to an abortion, she also supported Donald Trump, who in turn nominated SCOTUS justices that voted to repeal Roe v Wade.
|
||||
|
||||
The far right is notoriously ungrateful to those who put it into power.
|
||||
|
||||
[*Salon* Magazine wrote a piece about women in the alt-right complaining about white nationalists being misogynistic to them.](https://www.salon.com/2017/12/04/alt-right-women-are-upset-that-alt-right-men-are-treating-them-terribly/) A self-described [ethno-nationalist](https://www.dictionary.com/browse/ethnonationalism) Tara McCarthy, for example, tweeted, *“Women in the Alt Right are constantly harassed by low-status anonymous trolls trying to put us in our place. Women of all ages, who do or don’t have children, are harassed for various ‘reasons’. The ultimate goal seems to be to bully us off the internet. Men in the Alt Right are going to have to decide whether they will continue to passively/actively endorse this behavior, or speak out against it. If you want more women speaking publicly about ethno-nationalism, I suggest you choose the latter.”*
|
||||
|
||||
Once again, I do not have sympathy for Miss McCarthy. You wanted ethno-nationalism for the racism, but aren’t down with the misogyny? *Did your brothers not make themselves clear when they said women are supposed to submit to men and forgo their careers and education? What made you think those men wanted to hear your opinions?*
|
||||
|
||||
A core tenet of ethno-nationalism is having many children to continue the race/‘nation.’ In this case, [white nationalists (including Tara McCarthy) believe that white people are being replaced by minority groups;](https://www.isdglobal.org/explainers/white-genocide-conspiracy/) remember the Charlottesville men chanting that they wouldn’t be replaced? They blame feminism, abortion, and gay marriage, among other things, for the decline in white birth rates. The natural conclusion is that white women need to get back in the kitchen and start giving birth to white children.
|
||||
|
||||
Six years ago, Lauren Southern felt the need to defend herself to her audience with her [*Why I’m Not Married*](https://www.youtube.com/watch?v=P-UKPpmQlys) video. Before she was a victim of domestic violence, Southern was the star of the alt-right. Her claim to fame was a video on *The Rebel*, entitled *Why I Am Not a Feminist.* Being a woman against feminism gave her notoriety.
|
||||
|
||||
She, and many of the other far-right women, use this novelty to gain a name for themselves. In turn, they receive money and fame, which gives them economic privileges that other women who live in traditional dynamics don’t have. And yet, Southern was surprised enough to see the misogyny she supported also applies to her, that she felt she had to make a YouTube video defending herself.
|
||||
|
||||
When modern women want to delay getting married and having kids, they are fat feminists who will die alone and destroy society, but when Lauren Southern wants to delay marriage and having children, she has a perfectly valid reason to. Other women are stupid and should shut up and get back in the kitchen, but these right-wing talking-head women are special and get to have platforms where they act confrontational and argue with other people (including men).
|
||||
|
||||
Once again, these women reveal themselves to be self-serving; they support traditional values unconditionally on other women, but only on themselves as they see fit and for what benefits them personally. They happily cheer along the racism in their space but don’t want the misogyny that comes with it.
|
||||
|
||||
## The prospects for right-wing women
|
||||
|
||||
The women I mentioned in this article are all rather famous and make a lot of money. Some women, such as Amy Coney Barrett, have been able to rise to extremely powerful positions, despite their values opposing that for women. Many of them, because of their economic and social privilege, are shielded from the worst of what they preach — but that doesn’t mean they are immune from their vitriol.
|
||||
|
||||
Lauren Southern is a great example of this. She eventually did get married and have a child, like a good trad woman. Unfortunately, she suffered domestic violence at the hands of her husband while living thousands of miles away from her family. [According to an interview, during this time she participated in a Whatsapp group with other tradwives going through the same problem.](https://unherd.com/2024/05/lauren-southern-the-tradlife-influencer-filled-with-regret/)
|
||||
|
||||
Speaking about her relationship with her now ex-husband, *“If I ever disagreed with him in any capacity he’d just disappear, for days at a time. I remember there were nights where he’d call me worthless and pathetic, then get in this car and leave . . . I had this delusional view of relationships: that only women could be the ones that make or break them, and men can do no wrong.”*
|
||||
|
||||
So she didn’t spot the red flags, even as they grew more extreme. *“He’d lock me out of the house. I remember having to knock on the neighbour’s door on rainy nights, because he’d get upset and drive off without unlocking the house. It was very strange, to go from being this public figure on stage with people clapping, to the girl crying, knocking on someone’s door with no home to get into, being abandoned with a baby.”*
|
||||
|
||||
While, in many ways, Lauren Southern was privileged to be online famous — as it gives a chance for income and even support — being on the far-right comes with unique challenges. Southern mentioned it being difficult to find a “normal” job because of how many controversial opinions she had online. When your name is synonymous with white supremacy and misogyny, most companies just don’t want the PR risk. Her only option to make money was to continue being a right-wing pundit, but seeking a divorce, no matter how justified it was, would put her at odds with that audience.
|
||||
|
||||
It’s like a Greek tragedy in some ways, how the very ideology that made her so famous and successful ended up betraying her and leaving her with an impossible situation.
|
||||
|
||||
> It’s like a Greek tragedy in some ways, how the very ideology that made her so famous and successful ended up betraying her and leaving her with an impossible situation
|
||||
|
||||
However, she did end up getting out. She lived in a cabin in the woods, improved her mental health, and worked on repairing her relationships with friends and family. I would be unconditionally happy for her if it weren’t for the fact that many of the women who were persuaded to follow her beliefs won’t have the same luck.
|
||||
|
||||
Perhaps some women are in it for the grift. Other women genuinely believe in this ideology. They believe that if they appease men enough, if they submit hard enough, they will gain status over other women as “one of the good ones” and be protected from male violence. They will get to have a life of comfort and freedom from Capitalism, while their husband goes out and works.
|
||||
|
||||
Unfortunately for them, conservative women are still women, and they will be treated as such.
|
||||
|
||||
*For more stories about the promotion of sexism, racism, and homophobia on right-wing media, follow* [*Fourth Wave*](https://medium.com/fourth-wave)*. Have you got a story or poem that focuses on women or other disempowered groups?* [*Submit to the Wave!*](https://medium.com/fourth-wave/submit-to-the-wave-7c92f095e86f)
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: "To The Guy on TikTok Wondering Where the “Real Women” Went"
|
||||
source: "https://medium.com/the-virago/to-the-guy-on-tiktok-wondering-where-the-real-women-went-ceff3babda1e"
|
||||
author:
|
||||
- "[[Maria Cassano]]"
|
||||
published: 2024-07-11
|
||||
created: 2024-10-29
|
||||
description: "I’m a formerly dissociated woman from New York. It takes a lot to shock me — but I was utterly gobsmacked by a video that recently went viral on TikTok. In said video, a white, church-going dude…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## You mean the women who had no other choice?
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@mariacassano?source=post_page---byline--ceff3babda1e--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/the-virago?source=post_page---byline--ceff3babda1e--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Documerica](https://unsplash.com/@documerica?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/a-woman-washing-dishes-in-a-kitchen-sink-oAU0c0SsO8A?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash)
|
||||
|
||||
I’m a [formerly dissociated woman](https://medium.com/the-virago/good-girl-syndrome-gave-me-a-dissociative-disorder-a9bd5a9f0411) from New York. It takes a lot to shock me — but I was utterly gobsmacked by a video that recently went viral on TikTok. In [said video](https://www.tiktok.com/@wbergholz/video/7388646658789100831), a white, church-going dude named William Bergholz asked, “Where are all the real women?”
|
||||
|
||||
If you don’t have the time, access, or gag reflex to watch the whole thing, I’ll summarize his overarching beliefs with a quote:
|
||||
|
||||
> “Girls just aren’t the way they used to be. They’re not how girls were in the 1800s and 1900s, where it’s like, a real woman \[…\] Her favorite thing: She loves to cook, she loves to clean, she wants to get married and have kids so much, she dreams about it.”
|
||||
|
||||
(Note: For the sake of clarity, I cut out 12 unnecessary uses of the word “like.” This isn’t to alter the speaker’s argument, but to prevent the reader from having an aneurysm.)
|
||||
|
||||
Now, part of me genuinely wants to believe that this video is satire. Maybe it’s his audition tape for [Saturday Night Live](https://medium.com/p/680d0ffcd929). At the very least, I hope he’s saying intentionally controversial things to generate views.
|
||||
|
||||
But the other part of me knows that this level of ignorance is still alive and well — because [I’m on the receiving end of it](https://medium.com/the-virago/when-i-wear-red-lipstick-its-not-for-men-c5d6195b86fc) all the time.
|
||||
|
||||
## Either way, this guy needs a history lesson.
|
||||
|
||||
Bergholz’s dream woman apparently hails from 19th-century America, loves cooking and cleaning, and looks a little something like this:
|
||||
|
||||

|
||||
|
||||
Public domain photo from Wikipedia: [Miss Ellen Henrietta Swallow](https://en.wikipedia.org/wiki/Ellen_Swallow_Richards), photograph ca. 1864.
|
||||
|
||||
That’s [Ellen Henrietta Swallow Richards](https://en.wikipedia.org/wiki/Ellen_Swallow_Richards), founder of the home economics movement. She believed that “women’s work within the home was a vital aspect of the economy.” Sounds like a perfect fit for Bergholz!
|
||||
|
||||
But wait — even Ellen Swallow Richards, who was born in 1842, was an industrial engineer and an environmental chemist, not to mention the first woman admitted to the [Massachusetts Institute of Technology](https://www.blackhistory.mit.edu/archive/ellen-swallow-richards-and-female-students-1888#:~:text=Ellen%20H.,until%20her%20death%20in%201911.). She was also a feminist who argued for women’s education and [participation in science](https://urresearch.rochester.edu/institutionalPublicationPublicView.action?institutionalItemId=32575).
|
||||
|
||||
Richards used science and innovation to make cooking, cleaning, and homemaking as easy and efficient for women as possible. Y’know, because we *had no other choice.*
|
||||
|
||||
See, back in the 1800s, women couldn’t vote. We also couldn’t [own land without a husband](https://www.annenbergclassroom.org/resource/womens-rights/#:~:text=1900Women%20Gain%20Property%20Rights,property%20in%20their%20own%20name.). When we were transferred from father to groom like a living, breathing commodity, one paid the other in [land, money, or chickens](https://en.wikipedia.org/wiki/Dowry).
|
||||
|
||||
As virtual property, we were forced to make ourselves as useful to men as possible — by bearing children, cooking meals, and serving as live-in maids.
|
||||
|
||||
## Historically, the women who refused these expectations didn’t fare well.
|
||||
|
||||
Remember? Remember the Witch Trials, where the accused were primarily women who spoke up, [pissed off the wrong men](https://guides.bpl.org/salemwitchtrials/accusersandaccused), or merely lived alone?
|
||||
|
||||
Remember Joan of Arc, who led French troops to victory before getting burned at the stake for [heresy, sorcery, and cross-dressing](https://www.history.com/news/joan-arc-burned-stake)?
|
||||
|
||||
Remember the Suffragettes, who faced [imprisonment and public ridicule](https://www.islington.gov.uk/~/media/sharepoint-lists/public-records/leisureandculture/information/factsheets/20192020/20190624hollowayprisonandthesuffragettes.pdf) because they wanted the right to vote?
|
||||
|
||||
Those women were all real women — so let me rephrase your question so it’s a little more accurate:
|
||||
|
||||
## “Where are all the desperate, suppressed women who are willing to sacrifice their happiness, aspirations, and dignity in order to benefit me?”
|
||||
|
||||
It kind of sounds like you want a mommy you can legally sleep with — but for argument’s sake, let’s entertain the question: Can you still find a woman who will cook your dinner, clean your home, and coddle you solely because you are a white man?
|
||||
|
||||
Sure. Her name is [Pearl Davis](https://en.wikipedia.org/wiki/Hannah_Pearl_Davis), and you’re in luck; she’s single.
|
||||
|
||||
As for the rest of us, here are a few statistics for you to chew on:
|
||||
|
||||
- Women now [outnumber men in the US workforce](https://www.wsj.com/articles/women-overtake-men-as-majority-of-u-s-workforce-11578670615), but we’re *still* doing the [vast majority of housework, cooking, and childcare](https://www.kff.org/womens-health-policy/issue-brief/data-note-balancing-on-shaky-ground-women-work-and-family-health/). (Spoiler: We’re pissed about it.)
|
||||
- Very few women actually [enjoy cleaning](https://www.tiktok.com/@zofemme__/video/7218362680468344066?_r=1&_t=8ckqEZN6rOd); we’re just held to a higher standard and [more likely to be shamed for a dirty space](https://sitn.hms.harvard.edu/flash/2019/dirtiness-perceived-cleanliness-sustained-women-study-reveals/).
|
||||
- Even if women *wanted* to quit their jobs and take care of their homes and kids, most couldn’t afford to. House prices have [risen 118% since 1965](https://www.cnbc.com/2021/11/10/home-prices-are-now-rising-much-faster-than-incomes-studies-show.html), and that’s accounting for inflation. The single-income household is dead.
|
||||
- 37% of women would [rather masturbate than have sex](https://www.theodysseyonline.com/women-prefer-masturbation) — probably because only [25% of women orgasm during sex](https://www.statista.com/statistics/1366812/us-orgasm-gender-gap/#:~:text=Orgasm%20gender%20gap%20in%20the%20United%20States%202022&text=In%202022%2C%2095%20percent%20of,to%2025%20percent%20of%20men.) (compared to 95% of men).
|
||||
- Men are [more likely than women to want kids](https://www.cbc.ca/news/canada/women-children-study-1.7119845) because they underestimate the amount of work it’ll be and [parenthood requires less responsibility](https://www.pewresearch.org/social-trends/2013/03/14/modern-parenthood-roles-of-moms-and-dads-converge-as-they-balance-work-and-family/) from them.
|
||||
- More women than ever before are [choosing to remain child-free](https://www.cnn.com/us/childfree-by-choice-women-birth-rate-decline-cec/index.html#:~:text=Demographers%20point%20to%20a%20number,choice%20to%20remain%20child%2Dfree.) because it’s finally socially acceptable to focus on their own well-being — but they’re [still judged for it](https://quod.lib.umich.edu/m/mfr/4919087.0018.102/--it-s-the-choices-you-make-that-get-you-there-decision-making?rgn=main%3Bview%3Dfulltext).
|
||||
- Ample women are [choosing to remain single](https://www.pewresearch.org/social-trends/2021/10/05/rising-share-of-u-s-adults-are-living-without-a-spouse-or-partner/) because many male partners [create more frustrations than they alleviate](https://www.independent.co.uk/life-style/husbands-create-extra-seven-hours-of-housework-a-week-a6885951.html).
|
||||
|
||||
## So where are all the real women?
|
||||
|
||||
==Exercising their rights, having standards, using vibrators, being financially independent, and waiting for real partners — the ones who actually== ==[contribute something to our lives](https://medium.com/p/0b278cf4d7f7)== ==in return.==
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: "Twenty one sentences that will make you mentally stronger than 98% of people"
|
||||
source: "https://iamalexmathers.medium.com/twenty-one-sentences-that-will-make-you-mentally-stronger-than-98-of-people-231fe6b4e8d8"
|
||||
author:
|
||||
- "[[Alex Mathers]]"
|
||||
published: 2024-08-27
|
||||
created: 2024-10-29
|
||||
description: "Let’s dive right in:. “Twenty one sentences that will make you mentally stronger than 98% of people” is published by Alex Mathers."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||

|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://iamalexmathers.medium.com/?source=post_page---byline--231fe6b4e8d8--------------------------------)
|
||||
|
||||
Let’s dive right in:
|
||||
|
||||
- Happy people know the past has no bearing whatsoever on their present behaviour.
|
||||
- Overwhelm can be diminished quickly with five slow, shallow, nasal breaths.
|
||||
- No one has the power to decrease your self-worth because self-worth is just an idea.
|
||||
- If you’re struggling but rarely exercise — that’s the bulk of your issue right there.
|
||||
- Stress is not caused by external circumstances but rather by internal ideas.
|
||||
- **If you want to feel good about yourself, help others feel good about themselves.**
|
||||
- The stiller your mind, the more connected to life force, and therefore creatively joyful you will be.
|
||||
- Walking for at least twenty minutes will solve over 85% of your problems.
|
||||
- **If you can find a way to be ok with being disliked, you will be unstoppable.**
|
||||
- ==Remaining calm when triggered is the number one life skill.==
|
||||
- Suffering is always tied to the illusion that we have a ‘self’ to protect, which is simply not true.
|
||||
- **Miserable people expect others to be a certain way.**
|
||||
- The happiest people expect nothing from no one.
|
||||
- Physically relaxing yourself in the moment will dramatically reduce your sense of mental stress.
|
||||
- The more natural and less processed your diet, the stronger will be your mind.
|
||||
- You will limit yourself to the degree you blame others for your problems.
|
||||
- **There are no problems in the present moment.**
|
||||
- We get depressed when we over-consume because humans were designed to create things.
|
||||
- If in doubt, get off your ass and move.
|
||||
- **You don’t need to try to ‘think positive’ because we’re already totally ok when we let go of negative thoughts.**
|
||||
|
||||
🔆
|
||||
|
||||
## Want to make money and impact from your writing?
|
||||
|
||||
Combine a clear mind, and an energised soul with powerful writing and brand growth.
|
||||
|
||||
Get your free booklet in your inbox instantly when you [join the *Mastery Den* newsletter here](https://www.masteryden.com/).
|
||||
|
||||
***’16 unconventional writing tips for joining the top 1% of online writers’***
|
||||
|
||||
🐉
|
||||
|
||||

|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
title: "Uncle Bob’s favorite programming language— but why 🤔"
|
||||
source: "https://blog.devgenius.io/uncle-bobs-favorite-programming-language-but-why-8fc3f85c77a8"
|
||||
author:
|
||||
- "[[Kirubakaran]]"
|
||||
published: 2024-09-19
|
||||
created: 2024-10-29
|
||||
description: "Robert C. Martin, also fondly known in the technology circle as “Uncle Bob,” is a highly influential figure in the software development world. He’s a renowned author, speaker, and consultant, best…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://kirubaspace.medium.com/?source=post_page---byline--8fc3f85c77a8--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://blog.devgenius.io/?source=post_page---byline--8fc3f85c77a8--------------------------------)
|
||||
|
||||
Robert C. Martin, also fondly known in the technology circle as “Uncle Bob,” is a highly influential figure in the software development world.
|
||||
|
||||

|
||||
|
||||
Image from wikipedia
|
||||
|
||||
He’s a renowned author, speaker, and consultant, best known for his teachings of clean code principles, agile methodologies, and software craftsmanship.
|
||||
|
||||
> He’s the author of numerous influential books like “Clean Code” and “The Clean Coder,” and he was one of the original signatories of the Agile Manifesto.
|
||||
|
||||
Do you want to know what his clean code advice ?
|
||||
|
||||
Uncle Bob’s work has significantly improved modern software development practices, emphasizing the importance of code quality, maintainability, and professionalism among developers.
|
||||
|
||||
Out of all the programming languages we have, Uncle Bob chooses “Clojure”. You want to find it why?
|
||||
|
||||
> Clojure’s minimalist syntax and importance of functional programming allow to write elegant code that makes easier to read and understand.
|
||||
|
||||
ex: Filtering and transforming data
|
||||
|
||||
```
|
||||
(->> (range 10) ; Create a sequence of numbers from 0 to 9 (filter even?) ; Keep only the even numbers (map inc) ; Increment each number by 1 (reduce +)) ; Sum the resulting numbers
|
||||
```
|
||||
|
||||
> Clojure gives importance to functional programming & immutability
|
||||
|
||||
ex: Updating a nested data structure
|
||||
|
||||
```
|
||||
(def data {:user {:name "Alice" :age 30}})(assoc-in data [:user :age] 31) ; Returns a new map with the updated age
|
||||
```
|
||||
|
||||
> Clojure leverages Java ecosystem which helps to use many tools/libraries
|
||||
|
||||
```
|
||||
(import java.time.LocalDate)(LocalDate/now) ; Get the current date using Java's LocalDate class
|
||||
```
|
||||
|
||||
Clojure’s built-in concurrency support help to leverage the modern computing systems
|
||||
|
||||
```
|
||||
(defn square [x] (* x x))(pmap square (range 10)) ; Compute squares in parallel
|
||||
```
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
title: "Uninvited and Unwelcome: When Evangelism Crosses the Line"
|
||||
source: "https://medium.com/backyard-theology/uninvited-and-unwelcome-when-evangelism-crosses-the-line-c1bac3de913e"
|
||||
author:
|
||||
- "[[Dan Foster]]"
|
||||
published: 2024-09-17
|
||||
created: 2024-10-29
|
||||
description: "Imagine for a moment that you’re a teenager again. You are basking in the glory of the fact that it’s the weekend. You decide to do what many teenagers do. You ring up your best friend, who also…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Christian Woman Confronts Two Kids She Presumes Are Gay in a Restaurant
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@danfosterwriter?source=post_page---byline--c1bac3de913e--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/backyard-theology?source=post_page---byline--c1bac3de913e--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image by [Petardj](https://www.istockphoto.com/portfolio/Petardj?mediatype=photography) on [iStock](https://www.istockphoto.com/photo/diner-restaurant-gm482307142-68688627?searchscope=image%2Cfilm)
|
||||
|
||||
Imagine for a moment that you’re a teenager again. You are basking in the glory of the fact that it’s the weekend. You decide to do what many teenagers do. You ring up your best friend, who also happens to be your cousin and arrange to catch up and hang out at your local fast-food restaurant.
|
||||
|
||||
You order fries and milkshakes.
|
||||
|
||||
You make yourself at home in a cozy booth.
|
||||
|
||||
You are happily chatting away — minding your own business.
|
||||
|
||||
Suddenly, out of the corner of your eye, you notice a middle-aged woman — let’s call her Karen — staring at you and your cousin. You brush it off, try to ignore it, but the staring doesn’t stop. In fact, it intensifies. There is no doubt about it: You are being watched.
|
||||
|
||||
And then it happens.
|
||||
|
||||
This woman, whom you’ve never seen before in your life, walks over to your table and starts a conversation with you.
|
||||
|
||||
Uninvited.
|
||||
|
||||
It turns out that this woman is a born-again Christian, and apparently, God has told her to come over to talk to you. She has come over to investigate whether you and your friend are on a date of the… you know… same-sex variety. Because, well… if you are, she has a message from God for you.
|
||||
|
||||
Oh, how I wish this were fiction. But sadly, it’s not.
|
||||
|
||||
When a TikTok user named Kaiden posted a cringe-worthy video of a Christian woman inviting herself to interrogate Kaiden and her cousin — two teenagers — who she presumes are gay and on a date together — the video quickly went viral, sparking widespread outrage and igniting conversations about personal boundaries, religious intrusion, and LGBTQ+ discrimination.
|
||||
|
||||
The video begins with Karen asking, “Um… you go to church anywhere?” as the bewildered pair of teenagers try to eat their meal in peace. “Do you guys know how to get to heaven?” she continues, prying further.
|
||||
|
||||
After a painful silence, one of the kids says what any decent human watching the video is thinking: *“I don’t, um, know you at all?”*
|
||||
|
||||
*“I know, I know,”* the woman chuckles measuredly, *“I just see you guys; you guys aren’t like girlfriends, are you?”*
|
||||
|
||||
After graciously informing her that they are cousins — news which Karen receives with audible relief — they add: *“But if it was, it’s genuinely none of your business.”*
|
||||
|
||||
*“You’re right, you’re right,”* The complete stranger retorts. *“But I just want to let you guys know, because they don’t teach you young kids about God anymore, that it’s not the right way to live.”*
|
||||
|
||||
Again, the children — who are behaving more like adults than the adult in this scenario — politely point out: *“If you force it on somebody, it’s not right either.”*
|
||||
|
||||
*“Yeah yeah, no, I’m not forcing it on anyone!”* She laughs. *“But the truth’s gotta be out there.”*
|
||||
|
||||
Unconvinced, the kids remind her that they have no idea who she is and that she just kind of came out of nowhere, but she corrects them — it wasn’t just a random encounter.
|
||||
|
||||
*“God told me to come over and talk to you guys.”*
|
||||
|
||||
Boom!
|
||||
|
||||
This cringeworthy encounter has been watched on TikTok more than 20 million times at the time of writing this article. Just so you don’t think I’m making it up, here is a video of the incident, aptly titled *“Bro Wht the Actual F\*ck,”* for your viewing pleasure:
|
||||
|
||||
Source: [TikTok](https://www.tiktok.com/@kalessh/video/6937836506895764742?referer_url=https%3A%2F%2Ftoofab.com%2F2021%2F03%2F11%2Fchristian-karen-assumes-two-kids-are-on-a-date-at-restaurant-tries-to-convert-them%2F&referer_video_id=6938071863448931590&refer=embed&is_copy_url=1&is_from_webapp=v1)
|
||||
|
||||
Since this video has gone viral on TikTok, it would be remiss of me not to comment on it given that the woman in the video purports to represent Jesus and well… I write about people like that.
|
||||
|
||||
It’s no surprise to me that this video has gone viral because “evangelism porn” is popular at the moment: Videos of bumbling Christians interfering, uninvited in the lives of others with a supposedly superior grasp on the truth only to be schooled by their apparently spiritual inferior students.
|
||||
|
||||
These videos get so many views for two reasons. Firstly, they show irreligious or unchristian people responding in more “Christian” ways than the Christians in the video. Secondly, people are enraged and amazed by the level of arrogance and spiritual elitism it must take for a person to think it’s okay to confront a stranger in public and tell them how sinful they are.
|
||||
|
||||
This video is particularly galling because, in just a few seconds of footage, this woman unwittingly manages to unveil some of the toxic thinking that you’ll typically find in evangelical Christianity.
|
||||
|
||||
Let me explain.
|
||||
|
||||
## I assume you are a sinner
|
||||
|
||||
Two young females sitting together at a table enjoying a meal? To the evangelical eye, that could only mean one thing. They must be gay. There is no other explanation… apparently.
|
||||
|
||||
The sight of two girls sitting at a table together triggers this woman’s ‘sin radar’, and she makes a wild assumption. She stares at the girls for a while, probably agonizing internally about how she should respond. Maybe her brain and heart are telling her it’s none of her business, but her Christian upbringing and indoctrination have taught her that it’s her responsibility to correct and save sinners from the bowels of hell.
|
||||
|
||||
With almost no tangible evidence, she decides that they are probably hopeless and immoral sinners who need some correction. With the weight of this guilt-induced responsibility for the mortal souls of these girls heavy on her shoulders, she believes that God is calling her to go and speak to them. So, she takes it upon himself to approach the girls, even though they are strangers, with the idea that she will educate them on their sinful behavior.
|
||||
|
||||
Except she is wrong. They are cousins. And as the cousins so graciously point out, *“It’s genuinely none of your business.”*
|
||||
|
||||
But, she insists, *“God told me to talk to you.”*
|
||||
|
||||

|
||||
|
||||
Image by [Wirestock Creators](https://www.shutterstock.com/g/WireStock+Inc) on [Shutterstock](https://www.shutterstock.com/image-photo/young-male-speaking-holding-bible-his-1753595888)
|
||||
|
||||
## I’m here representing God
|
||||
|
||||
Ah, the God ‘trump card.’
|
||||
|
||||
How do you argue with that?
|
||||
|
||||
Personally, I find it atrocious that this woman, who has made an incorrect assumption, is doubling down on her error by claiming that God told her to approach the girls. A normal person might have apologized and slinked away, but once you play the “God-told-me-to” card, you can really justify all kinds of errors in judgment.
|
||||
|
||||
Once you say, “I am here on behalf of God,” you are really saying to the other person, “*I am qualified to say whatever I like here. Your opinion doesn’t matter or count. I’m not here for dialogue. I’m here to tell you the truth I have, which also happens to be the truth you need. They don’t teach you young kids about God anymore, so let me teach you about God instead.”*
|
||||
|
||||
Give me a break.
|
||||
|
||||
Anyone brash enough to say to me, “*God told me to say this*” or “*God told me to do this,*” destroys their credibility with me because such certainty belies the reality that Christianity is a ***faith*** system. To believe in Christ is to hope for something of which you cannot be certain. The opposite of faith is not doubt; it is certainty.
|
||||
|
||||
Don’t get me wrong. I’m a man of faith, and I believe that it is possible for God to reveal himself in various ways to people, and I believe that God can speak to us through others. However, anyone who lacks the humility to say, *“I might be wrong about this,”* is intellectually and spiritually arrogant.
|
||||
|
||||
## Get ’em while they’re young
|
||||
|
||||
How would you feel if you were the parent of one of these children? I know how I would feel.
|
||||
|
||||
I would be angry.
|
||||
|
||||
How dare a complete stranger approach a couple of children and question them about their sexuality! That is beyond inappropriate.
|
||||
|
||||
*“They don’t teach you young kids about God anymore,”* Karen tells the children. But given the way these children respectfully replied to this woman’s unwelcome advance, it seems to me that their parents have done a pretty good job teaching them how to respond with grace.
|
||||
|
||||
I’d certainly be more worried about a parent who taught their kids that it is normal and acceptable to approach other people’s kids in the streets and try to tell them how to live.
|
||||
|
||||
## I’m not forcing my views
|
||||
|
||||
Perhaps the most comical part of this Tiktok video is Karen’s response to the children when they politely point out: *“If you force it on somebody, it’s not right either.”*
|
||||
|
||||
Karen laughs, *“Yeah,* *yeah, no, I’m not forcing it on anyone!”*
|
||||
|
||||
This woman is either lying to herself or is utterly bereft of self-awareness. Walking up to a stranger uninvited, confronting them with their apparent sin (at least in your eyes), and trying to convert them to your faith is actually the definition of *“forcing your beliefs on others.”*
|
||||
|
||||
If people want to learn about Christianity, you can safely assume that they know where they can find out about it in this day and age. Let them approach you with your questions instead of ramming your version of Christianity down their throats.
|
||||
|
||||
==If people are not asking questions about your faith, then it’s probably because your life has nothing to say.==
|
||||
|
||||
## The final word
|
||||
|
||||
Do you suppose that this encounter has drawn either of these cousins closer to Christ? Do you suppose any of the 20 million people who watched the encounter on Tiktok were compelled to explore the merits of Christian faith because of Karen’s message or approach?
|
||||
|
||||
I doubt it.
|
||||
|
||||
If anything, this kind of behavior only drives people further away, making a laughing stock out of evangelical Christians who, let’s be honest, are already suffering from an image problem of the highest order.
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: "We Need To Talk About What Happened In Louisiana"
|
||||
source: "https://medium.com/deconstructing-christianity/we-need-to-talk-about-what-happened-in-louisiana-feb747e255f4"
|
||||
author:
|
||||
- "[[Lilith Helstrom]]"
|
||||
published: 2024-06-22
|
||||
created: 2024-10-29
|
||||
description: "When I’m being generous, I can kind of see why some Christians might want the Ten Commandments displayed outside court rooms. Christians hear the Ten Commandments in church, their pastor reads “thou…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## And how dangerous it is
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@lilith.helstrom?source=post_page---byline--feb747e255f4--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/deconstructing-christianity?source=post_page---byline--feb747e255f4--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Taylor Flowe](https://unsplash.com/@taypaigey?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
When I’m being generous, I can kind of see why some Christians might want the Ten Commandments displayed outside court rooms. Christians hear the Ten Commandments in church, their pastor reads “thou shalt not kill” and “thou shalt not steal” and they know that America has laws against murder and theft, so they think American law must be based on the Bible.
|
||||
|
||||
“Might as well have the Ten Commandments displayed outside court rooms,” they say to themselves. “Since American laws are based off of them.”
|
||||
|
||||
Even though American laws *aren’t* based on them and shouldn’t be.
|
||||
|
||||
But that twisted logic doesn’t explain why [Louisiana just passed a law](https://amp.cnn.com/cnn/2024/06/19/politics/louisiana-classrooms-ten-commandments) saying that all public school classrooms are required to have the Ten Commandments displayed somewhere inside of them. Not that teachers are just allowed to display them, but they’re required to, whether they’re Christian or not.
|
||||
|
||||
Classrooms don’t have court rooms. Children aren’t lawyers and judges. Classrooms have nothing to do with laws.
|
||||
|
||||
Christians can’t claim ignorance in this ruling. They can’t claim that they just decided on this law because historically our laws are supposedly based on the Ten Commandments. They can’t claim that because these are *schools.*
|
||||
|
||||
They know that the only reason to pass a law like this is to force religion onto children. Anyone who supports it, supports forced indoctrination. Christians want to groom children, groom them into becoming devoted Christians whether they’re taught Christianity at home or not.
|
||||
|
||||
They won’t admit it out loud, but they don’t believe in religious freedom. They just assume their religion is right and want to force it on the rest of us for supposedly our own good.
|
||||
|
||||
They don’t believe that Jesus or God are loving entities that can change people or they wouldn’t be trying to force religion on everyone using the power of the government. They think might makes right.
|
||||
|
||||
This is especially frightening because the Ten Commandments might be fine when presented in a biblical context, but are tools of oppression when presented as secular laws. The first three commandments are about worshipping and revering God. The next one is basically about going to church and setting aside a day for church.
|
||||
|
||||
Of course a religion is going to demand that you only follow it and no other religions. That’s why religions exist, to teach you the way they think you should live. But when a government demands you only worship that one God, that’s when oppression starts.
|
||||
|
||||
And those make up half the commandments. They don’t belong anywhere near our government laws or school systems.
|
||||
|
||||
Other than the commandments about not stealing and not killing, the other commandments suck as well when forced into secular law.
|
||||
|
||||
“Honor your father and mother,” when it becomes a law takes all abused children’s rights away. You’re being hit, you’re being insulted, you’re being sexually assaulted by your parent? Doesn’t matter because now, by law, you need to honor your father and mother, so you can’t speak out when they hurt you and the government can’t save you.
|
||||
|
||||
The commandment about not bearing false witness is okay in court only. Purjury is a law that already exists.
|
||||
|
||||
But this commandment is about *all* rumors, not just legal testimonies. And who does the church say is the gossipers? Women. So pass laws about not gossiping and you’re now in an extremely sexist society that jails women for speaking.
|
||||
|
||||
Because you can claim anything is a rumor and send a woman to jail when you don’t like her.
|
||||
|
||||
This also applies to the commandment about not having affairs. Historically, and even in the Bible itself, honor killings have always targeted women. They get accused of cheating whether they are or not and murdered over it just because a man wants to.
|
||||
|
||||
And the last commandment about not wanting what others have is the worst one of all potentially when you add it to the government. It’s the thought police. People can’t help their feelings, sometimes you just get jealous of people. Feelings shouldn’t be illegal.
|
||||
|
||||
It would put our country on the level of North Korea dictatorship. Kim Jong-Un and his father told their citizens that they could read their minds as well. They are not to even think bad things about them. When alone in their mind, the one place that should be safe for everyone, they’ve been taught to fear. And we would be taught the same if the Ten Commandments became a legal document.
|
||||
|
||||
I hate the Ten Commandments. As rules among a religion, I think they are unhelpful and harmful. But as a law of land and not of just heaven, they’d be literal tyranny.
|
||||
|
||||
==Christians want to make this country into a violent theocracy and they’re not even being subtle about it anymore.==
|
||||
|
||||
Keep religion out of public schools.
|
||||
|
||||
[Click here to support my writing](https://ko-fi.com/lilithhelstrom)
|
||||
|
||||

|
||||
|
||||
## Lilith's Thoughts On Religion And Atheism
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: "When Christianity Meets Porn"
|
||||
source: "https://medium.com/@jackieschuld/when-christianity-meets-porn-96fa09cd1061"
|
||||
author:
|
||||
- "[[Jackie Schuld]]"
|
||||
published: 2024-10-15
|
||||
created: 2024-10-29
|
||||
description: "Please note: This essay contains descriptions of sexual acts. I wrote this essay with the intention of exploring the complex world of sexuality and Christian beliefs. But that didn’t stop him from…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
I knew a young Christian man who wanted to wait until marriage to have sex.
|
||||
|
||||
But that didn’t stop him from watching porn. The internet was brand new, and he burned his favorite porn videos onto a CDrom that he could watch whenever his family wasn’t home.
|
||||
|
||||
He knew this was sin, but he couldn’t help himself.
|
||||
|
||||
In evangelical Christianity, it is taught that all sins are equal. And yet, there it is a quiet ranking that occurs. Sometimes it is talked about in public, and sometimes it is simply rationalized in one’s mind.
|
||||
|
||||
For this young man, sex before marriage was far too big of a sin to break, but he could forgive himself for watching pornography. Shame accompanied his actions, but it didn’t stop him from continuing.
|
||||
|
||||
After listening to a particularly stringent sermon, he’d feel the Holy Spirit calling him to stop his sin. He’d try for a week, but then fall back into what he called “pornography addiction.” This cycle happened over and over again.
|
||||
|
||||
## Within the church, there is a vocal movement against pornography.
|
||||
|
||||
It is preached that pornography takes a sacred act that is intended to be between man and woman and turns it into a tool of the devil. It stirs up lust within those who watch. In the Bible, it says that it is better for a man to gouge out his eye than look lustfully at a woman. In Christian beliefs, you can sin in thought alone. Thus, in the views of the church, not only does pornography cause individuals to sin in their thoughts, it also causes them to sin by committing sexual acts. Most churches preach that masturbation is wrong.
|
||||
|
||||
As someone raised in an evangelical church, I never heard a frank discussion about pornography from the pulpit. That was because it was considered too “vulgar” for an entire family to hear. Typically, the young men and women were separated for Sunday School (an hour in which you learn more about the Bible in a classroom setting). It was in this setting that young men were taught about the evils of pornography. I only knew it happened because my male friends told me about it.
|
||||
|
||||
In contrast, all of the lessons I received about sexuality revolved around being “modest” and staying pure for our future husbands.
|
||||
|
||||
## The young man I knew wanted to be a man worthy to lead a Chrsitian home.
|
||||
|
||||
He wanted to break himself free from “the chains” of pornography. However, he simply couldn’t.
|
||||
|
||||
What he didn’t realize was that his pornography exploration was slowly shaping what his brain found sexually exciting.
|
||||
|
||||
In college he began dating a woman — a woman who wanted to venture farther than he had sexually. Since they were both Christians, they didn’t want to have sex — what they defined as penis-in-vagina penetration.
|
||||
|
||||
This explanation may seem unnecessarily graphic, but many Christians try to “maintain” virginity by performing other sex acts (mutual masturbation, oral sex, or anal sex). While all would admit that these sex acts are sin, they are “at least” maintaining virginity for their future spouse.
|
||||
|
||||
**It’s easy to see why sex is so convoluted for Christians.**
|
||||
|
||||

|
||||
|
||||
Photo by [Maru Lombardo](https://unsplash.com/@marustereo?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
For this young man, pornography added another layer of complication.
|
||||
|
||||
And here’s how I came to be the bearer of such information. The young woman he dated in college was my roommate. Like a good Christian man, he “confessed” his sins to her and they prayed together for his healing. He promised to abstain from pornography as their relationship developed.
|
||||
|
||||
With time, they progressed in their intimate and sexual acts. My roommate told me one night that there was something bothering her about their relationship. She was incredibly embarrassed to tell me, but with enough reassurance on my part, she finally did. Whenever her boyfriend came (whether through a hand job or oral sex), he always insisted on coming on her. She had asked him not to, but he continued to “accidentally” do it.
|
||||
|
||||
She wanted my advice.
|
||||
|
||||
I had none, other than to tell her she should ask again. I’d certainly have a lot more to say now, but I was ignorant to the world of sex, let alone the concepts of consent, sexual psychology, and more.
|
||||
|
||||
Two weeks later, my roommate burst into our room sobbing. Her boyfriend confessed that he wasn’t able to quit pornography and had been secretly watching it throughout their relationship. To make matters worse, the kind of porn he liked to watch always ended with the man coming on the woman.
|
||||
|
||||
Suddenly, everything made sense to my friend. She raged about pornography and its “satanic hold” on her boyfriend and all that it led him to do.
|
||||
|
||||
A Christian myself (at the time), I joined my friend in placing the blame on pornography.
|
||||
|
||||
## As I now reflect on what happened, I view the situation with far more complexity.
|
||||
|
||||
I see both my friend and her boyfriend as victims.
|
||||
|
||||
My friend made her sexual boundaries clear and her boyfriend violated them. She was a victim.
|
||||
|
||||
Her boyfriend was a victim of a different kind. ==Growing up in Christianity, he never had the psychological or spiritual permission to freely explore his own sexuality. His sexual choices were ridden with guilt, which only drew him in farther.==
|
||||
|
||||
I wonder how things may have turned out differently for him had he not been taught that any sexual act was a sin. He clearly was psychologically unwell — burdened with soul-crushing shame and falling into behaviors he deemed as sexual addiction. He was so unwell that he became a perpetrator. He violated my friend’s trust and sexual autonomy.
|
||||
|
||||
But he could only blame “Satan” and his tools (pornography), instead of getting the real psychological help he needed.
|
||||
|
||||
I wonder where this young man is today. He’s certainly no longer young. Is he still Christian? Is he still ridden with guilt about his past? Is he still struggling with pornograpy addiction? Is he still violating women’s requests and rights?
|
||||
|
||||
I also wonder about my roommate whom I’ve lost touch with. Was she able to emotionally and psychologically recover from what happened? Did she continue in relationships in which her requests were ignored?
|
||||
|
||||
I understand this essay is probably a difficult one to read, but I feel it is important to share because it displays some of the emotional and psychological impacts of Christian beliefs about sexuality, Satan, and sin.
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: "When I Became a Cougar"
|
||||
source: "https://medium.com/crows-feet/when-i-became-a-cougar-34720d1b7301"
|
||||
author:
|
||||
- "[[Deb Fiore]]"
|
||||
- "[[LICSW]]"
|
||||
published: 2024-10-13
|
||||
created: 2024-10-29
|
||||
description: "The night I became a cougar was quite the accident. I had no intention of seducing any of my son’s teenage friends. Things just sort of happened. My story was inspired by a wonderful writer, Pam…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
For those of you who do not know me, I must tell you that if you look in the dictionary under the word, *prude*, you will find me.
|
||||
|
||||
At least, that is how I thought of myself for most of my life. I grew up in a traditional Italian family. My first marriage was to an Italian man who was confused about his responsibility to his family. That’s part of the reason we are divorced.
|
||||
|
||||
Lee is my second spouse. He is my knight in shining armor. Lee awakened me in more ways than I can write about here because this is G-rated. He understood more about what I needed than I understood myself.
|
||||
|
||||
When I began dating Lee, I was a single mom raising two teenage boys, aged sixteen and eighteen. Lee had two boys who were older by a decade so he understood my boys were my priority. Always.
|
||||
|
||||
We kept life G-rated. Lee met my boys, and we all hung out together. After a few years, I knew Lee was a keeper. He began spending more time with my boys and me.
|
||||
|
||||
Eventually, Lee would spend the whole weekend. The boys were okay with that. Well, yes, I was somewhat uncomfortable because I was such a prude.
|
||||
|
||||
It took a long time before I began to accept the world of a divorcee. I never considered myself overly attractive but Lee thought differently. He insisted that I dress rather provocatively.
|
||||
|
||||
Picture mini-skirts, stockings, and garters. I mean, here I was fifty-something and afraid to show off my assets.
|
||||
|
||||
Lee told me that was another reason he loved me so much. He was so amazed by my innocence. Can you imagine?
|
||||
|
||||
Fast forward to the time when I became a cougar…
|
||||
|
||||
Lee and I were going dancing at a local club one night and he expected me to dress my best. I was hesitant because my boys were home when Lee picked me up. I did not want them to see me dressed suggestively.
|
||||
|
||||
Most of the time, my boys were out with their friends. Or I would wear my long trench coat. That night, my oldest son, Jay, was staying home. My youngest son, Mark, had friends visiting while they made plans for the night.
|
||||
|
||||
When Lee arrived, I greeted him in the living room dressed in my finery. I met several teenage boys waiting for my youngest son, Mark.
|
||||
|
||||
I smiled although I felt a bit flustered in my mini-skirt. Introductions were made all around. Then I headed back to my bedroom for the final touch.
|
||||
|
||||
Suddenly I was flanked by several young boys asking dating questions. And where we were going dancing. They never stopped talking.
|
||||
|
||||
It was a narrow hallway and they were a little too close for comfort.
|
||||
|
||||
I heard Jay yelling, “Get away from my mother. You are not allowed in her bedroom!”
|
||||
|
||||
I smiled to myself, thinking my son was a bit overprotective. Little did I know he had circumvented their expectations.
|
||||
|
||||
Once the boys were cleared away from my bedroom, Jay came inside and shut the door.
|
||||
|
||||
“Do you know what just happened, Mom?” I shook my head.
|
||||
|
||||
==“Those meatheads thought you were a cougar. Their brains just stopped working!”==
|
||||
|
||||
“Is that a good thing? Being a cougar?” I had no idea because I was so naive with all the slang.
|
||||
|
||||
After Jay explained the meaning of a cougar, I blushed very hard. Then I burst out laughing. It was amazing to think young teen boys would be interested in me. Imagine? At my age?
|
||||
|
||||
Soon Lee came knocking at my door. Jay let him in and explained the situation. Lee was laughing, too. For different reasons, of course.
|
||||
|
||||
Lee said, “No one will have you but me. You are way too sexy. I intend to keep you all to myself.”
|
||||
|
||||
As we headed out the door, we were still chuckling. Mark looked at us and wondered what had happened. He had no idea what we were laughing about. Mark had missed it all.
|
||||
|
||||
It was interesting being labeled a cougar. At first, I was embarrassed, and a bit flustered. Then it sunk in. Others thought I was a sexy mom, not just an old lady. That felt amazing!
|
||||
|
||||
Suddenly, I felt like a new woman, more attractive again. I would never act like a cougar with younger men but it felt like a nice compliment.
|
||||
|
||||
Lee and I had a wonderful night. We danced and sang. He was extra attentive. We enjoyed every moment of our time together.
|
||||
|
||||
We had no idea it would be the last time we would dance together for a very long time.
|
||||
|
||||
***I wrote*** [***another story***](https://medium.com/the-memoirist/i-had-the-time-of-my-life-d0b394f88cf3) ***about what happened the following day. Fair warning: It is less fun than the previous story you just read.***
|
||||
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: "Where have all the Software Development Jobs gone?"
|
||||
source: "https://medium.com/womenintechnology/where-have-all-the-software-development-jobs-gone-4925e637587c"
|
||||
author:
|
||||
- "[[Sarah Writtenhouse]]"
|
||||
published: 2024-09-12
|
||||
created: 2024-10-29
|
||||
description: "Until recently, software developers have taken their high salaries and endless job options for granted. But lately there’s been a growing uneasiness among experienced developers about job security…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Tech Job Watch
|
||||
|
||||
## Here’s what you need to know.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@sarahwrittenhouse?source=post_page---byline--4925e637587c--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/womenintechnology?source=post_page---byline--4925e637587c--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Gustavo Fring](https://www.pexels.com/photo/surprised-man-in-green-hoodie-jacket-using-a-computer-5621961/) on Pexels.com
|
||||
|
||||
> Not a Medium member? You can read for free by going [**here**](https://medium.com/womenintechnology/where-have-all-the-software-development-jobs-gone-4925e637587c?sk=88d399a2cb1311119e6f27e5e9901354).
|
||||
|
||||
==Until recently, software developers have taken their high salaries and endless job options for granted. But lately there’s been a growing uneasiness among experienced developers about job security and wage stability.==
|
||||
|
||||
These concerns are caused by sweeping tech layoffs that started in 2022. Since then, over half a million technical jobs have been lost and salaries have been dropping as unemployed talent floods the job market.
|
||||
|
||||
Not only that, ChatGPT was released at about the same time. Its ability to instantly generate elegant code set off alarms throughout the coding community compounding sinking career confidence.
|
||||
|
||||
## What caused the layoffs?
|
||||
|
||||
The pandemic shutdown triggered a huge surge in technical work as companies rushed to meet demand for remote work capabilities, telemedicine, e-commerce growth, and virtual services. But as lockdowns were lifted and projects wrapped up, technical demand fell sharply, spurring broad layoffs in April 2022.
|
||||
|
||||
Over the next year, more than 300,000 technical jobs were cut with far fewer new job openings. Some saw this as a sign of things to come, signaling a decline in corporate technology investment.
|
||||
|
||||
Fortunately, that’s not what’s happening at all. The job loss was actually an expected correction following the pandemic surge. Since then, job cuts have ramped down and leveled off to pre-pandemic rates.
|
||||
|
||||
You can breathe a sigh of relief because the tech industry is alive and well. But (and this is a big but), as new technology expands there are huge shifts in corporate investment. New tech jobs are pointing to major tech industry disruption and transformation.
|
||||
|
||||
## The Job Market is Telling Us What is Happening
|
||||
|
||||
There are two mega disruptors right now, Artificial Intelligence (AI) and Cloud Computing.
|
||||
|
||||
AI is forcing a shift away from routine technical activities that can be automated including software testing, technical support, data processing, basic web development, and database maintenance among others. These lower-level roles will be replaced, and more specialized roles will be created as AI is implemented.
|
||||
|
||||
Will software developers be replaced too? No, roles that require creativity, problem-solving and complex decision-making are not likely to be replaced by AI anytime soon. These include *Software Developers/Engineers, Data Architects, and Systems Architects,* but it won’t be business as usual for these roles.
|
||||
|
||||
These new AI development roles will allow seasoned developers to leverage existing programming language experience like Java, Python and C++. But they will also require an upskill to ML, Natural Language Processing (NLP) and Deep Learning Frameworks like TensorFlow (Google), PyTorch (Facebook), CNTK (Microsoft) and MXNet (Amazon).
|
||||
|
||||
In addition to software development, other technical jobs will be impacted by AI in similar ways. New AI specialized roles will also require augmented skills. For example, current AI job postings on LinkedIn include, *AI Product Managers, AI Research Scientists, AI Solutions Architects, AI Developers/Engineers.*
|
||||
|
||||
This AI transformation overlaps with the *Cloud Computing* transformation taking place in parallel. New positions are being created to build AI in Azure, AWS, IBM Watson and Google Cloud platforms using integrated AI, ML services and Deep Learning Frameworks.
|
||||
|
||||
Cloud computing job demand continues to trend and like AI roles, these jobs are highly specialized. They require both cloud computing and AI skillsets in addition to software development expertise. These roles include *Cloud Computing Engineers*, *Cloud Automation Engineers*, and *Cloud Solutions Architects*.
|
||||
|
||||
Looking at these AI and Cloud Computing job postings on [LinkedIn](https://www.linkedin.com/) over a 30-day period, **there are over 16,000 new job postings.** About 9,000 of these are mid-level *AI Developer* and *AI Engineering* positions**.**
|
||||
|
||||
Interestingly, half of these job postings were added within the last 7 days, suggesting that AI and Cloud Computing demand is ramping up.
|
||||
|
||||

|
||||
|
||||
Photo by [Airam Dato-on](https://www.pexels.com/photo/close-up-of-linkedin-page-on-smartphone-screen-16450744/) on Pexels.com
|
||||
|
||||
## If you’re still worried about your job, here’s the takeaway
|
||||
|
||||
There is plenty of work out there for you, but you’ll need to learn new tools and skills to stay competitive.
|
||||
|
||||
You wouldn’t be in this field if you didn’t love technology and the excitement that comes with it. So, buck up, train up and lean in to change if you want to be part of the transformation.
|
||||
|
||||
*Subscribe* to receive my ***Monthly Technology Jobs Report*** in your inbox and read the latest edition here [***Tech Job Watch — October***](https://medium.com/womenintechnology/cracking-the-code-of-the-tech-job-market-e638d4f0cb5c?sk=4cabde2df6dc645e728726dc92648315)***.***
|
||||
|
||||
*With over 20 years of technical industry experience,* ***Sarah Writtenhouse*** *shares her insights about job market trends, emerging technology and software development. For short articles about technology basics for Computer Science and IT students visit her blog,* [**writtenhouse tech**](https://writtenhousetechhouse.blogspot.com/)**.**
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
title: "Why Church Leaders Are So Worried About Deconstruction"
|
||||
source: "https://medium.com/backyard-theology/why-church-leaders-are-so-worried-about-faith-deconstruction-8f3a61982bb4"
|
||||
author:
|
||||
- "[[Dan Foster]]"
|
||||
published: 2024-08-26
|
||||
created: 2024-10-29
|
||||
description: "According to Barna Research, “52% of U.S. adults and teens have experienced religious doubts in the past three years.” This growing trend reflects a broader movement towards faith deconstruction…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## And Why They Shouldn’t Be
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@danfosterwriter?source=post_page---byline--8f3a61982bb4--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/backyard-theology?source=post_page---byline--8f3a61982bb4--------------------------------)
|
||||
|
||||

|
||||
|
||||
Image by [STEKLO](https://www.shutterstock.com/g/STEKLO) on [Shutterstock](https://www.shutterstock.com/image-photo/religion-woman-on-dark-background-looking-1955862436)
|
||||
|
||||
Have you ever had doubts about any aspect of the Christian faith?
|
||||
|
||||
You’re not alone.
|
||||
|
||||
According to [Barna Research](https://www.barna.com/research/doubt-faith/), “52% of U.S. adults and teens have experienced religious doubts in the past three years.” This growing trend reflects a broader movement towards faith deconstruction, where individuals critically examine and reassess their religious beliefs and practices.
|
||||
|
||||
Deconstruction isn’t necessarily about rejecting your faith outright. It’s about engaging deeply with one’s beliefs to determine what holds up under scrutiny. It’s a process that can lead to a more authentic and meaningful understanding of faith and that makes it a good thing!
|
||||
|
||||
And yet, faith deconstruction seems to terrify many traditional church leaders. John Cooper, the lead singer of Christian rock band Skillet, shared his views on this topic with his audience at a recent concert.
|
||||
|
||||
To put it simply, he’s not a fan.
|
||||
|
||||
*“It is time that we declare war against this deconstruction Christian movement,”* He said during an impassioned sermon in front of his adoring fans. *“I don’t even like calling it deconstruction Christian. There is nothing Christian about it. It is a false religion.”*
|
||||
|
||||
So, I guess people in the throes of faith deconstruction — people like me — need to prepare for a war, whatever that means. There are bits and pieces of Cooper’s rant on various social media platforms. Here is a snippet from YouTube:
|
||||
|
||||
Source: [YouTube](https://www.youtube.com/watch?v=UF3lRs2cUIE)
|
||||
|
||||
After declaring war on deconstruction, Cooper questions why a generation that prides itself on being its most “authentic self” is also *“the most medicated, anxious, and suicidal in our nation’s history.”*
|
||||
|
||||
I might have answered, *“Religious trauma at the hands of fundamentalist churches and institutions might have something to do with it,”* but this was a different crowd — and they cheered their approval.
|
||||
|
||||
Cooper went on:
|
||||
|
||||
> “And for all those formerly Christian people who have tried to tell all these young folks that they think they found a third way, their third way is this: It’s OK if you’re into Jesus, just don’t be into the Bible. I’m here to tell you, young folks, there is no such thing as loving Jesus but not loving his Word.”
|
||||
|
||||
Then he seamlessly segued into a promotion of his own book aptly titled, *“Awake and Alive to Truth,”* which he wrote because a *“generation of young people have not been taught the basic principles of the word of God,”* and his book provides both the truth and the Biblical principles young people need… apparently.
|
||||
|
||||
Cooper’s perspective on faith deconstruction mirrors the views of other Christian leaders, such as renowned evangelical preacher Matt Chandler, who said:
|
||||
|
||||
> “You and I are in an age where deconstruction and the turning away from and leaving the faith has become some sort of sexy thing to do. I contend that if you ever experience the grace and mercy of Jesus Christ actually, that that’s really impossible to deconstruct from.”
|
||||
|
||||
It’s no surprise that conservative Christians are practically quaking in their boots over deconstruction. They’re not quite sure what it is, where it came from, or why it’s happening, but they’re definitely certain it’s a threat to their dwindling empire. They can’t help but see deconstruction as a dastardly plot to undermine their once-ironclad grip on American Christianity. So, they attack it with both barrels.
|
||||
|
||||
There are all sorts of problems with Cooper’s rhetoric and Chandler’s false conclusion about faith deconstruction. It shows just how much they don’t get it. Let me explain:
|
||||
|
||||
## Deconstruction is not deconversion
|
||||
|
||||
There’s a fundamental misunderstanding of what “deconstruction” amongst many church leaders. Despite what Cooper and Chandler assert, Deconstruction is not the same as “walking away from the faith.”
|
||||
|
||||
In her book [*Searching for Sunday: Loving, Leaving, and Finding the Church*](https://www.christianbook.com/searching-sunday-loving-leaving-finding-church/rachel-evans/9780718022129/pd/022129?en=bing-pla&event=SHOP&kw=christian-living-0-20%7C022129&p=1179517&dv=c&msclkid=bb10ee61863d19391659b19d36cf79bb&utm_source=bing&utm_medium=cpc&utm_campaign=Shopping+Main&utm_term=4580221845592405&utm_content=s-christian+living), Rachel Held Evans defines faith deconstruction as taking a *“massive inventory of your faith, tearing every doctrine from the cupboard and turning each one over in your hand.”*
|
||||
|
||||
Faith deconstruction involves breaking down every aspect of a religious system — its ideas, practices, beliefs, and traditions — into smaller components and examining each one for its truth and relevance. The aim is to rebuild a more authentic and meaningful understanding, discarding what is peripheral, burdensome, or distorted.
|
||||
|
||||
Sure, doing this can result in deconversion for a certain percentage of people. For others, it means their faith remains largely unchanged. And others end up finding a much deeper and more robust understanding of the Christian faith.
|
||||
|
||||
It’s just that their new expression of Christian faith may or may not include the institution of the Church.
|
||||
|
||||
And that is a problem for pastors.
|
||||
|
||||
## Deconstruction is not a different religion
|
||||
|
||||
Let’s be clear: Deconstruction is not a religion but a critical examination of religion. Neither is deconstruction an alternative belief system to Christianity.
|
||||
|
||||
==Deconstruction is not the opposite of faith. But it== ==***is***== ==the opposite of blind faith.==
|
||||
|
||||
The way that Cooper calls deconstruction a false religion — as if it were something entirely different from Christianity — shows that he doesn’t understand this. In fact, Cooper pits Christianity and deconstruction as mortal enemies because that suits his purpose. He wants to make his followers frightened to even go there!
|
||||
|
||||
## Deconstructists are not the enemies of Christians
|
||||
|
||||
Try to appreciate the irony and the hypocrisy of a person who follows Jesus — the Prince of Peace — declaring war against anyone for any reason. It sets off a few alarms bells for me! It’s bad enough to declare war on anyone who believes differently, but to declare war on other Christians, well, that beggars belief.
|
||||
|
||||
You have to wonder what Cooper means by *“declaring war on the deconstruction movement?”* I mean, how do you attack a movement? Do you target ideas or individuals?
|
||||
|
||||
Surely not the latter!
|
||||
|
||||
But, make no mistake. His statements carry a subtle undertone of violence and are ambiguous enough that some in his audience might interpret them as a justification for aggressive actions against fellow Christians who dare to challenge the established norms of their faith.
|
||||
|
||||
After all, people in positions of influence can incite both violence and stupidity, whether they mean to or not. I’m thinking about the words of a certain former US President and the storming of the Capitol and how there may or may not be a causal link between the two. You be the judge.
|
||||
|
||||

|
||||
|
||||
Image by [pathdoc](https://www.shutterstock.com/g/pathdoc) on [Shutterstock](https://www.shutterstock.com/image-photo/man-many-questions-no-answer-750240475)
|
||||
|
||||
## Doubters are not welcome at the table
|
||||
|
||||
Unfortunately, the Evangelical Christian Church has consistently shown that questioning is not welcome within its framework. You either conform to their version of the truth or face exclusion. Cooper’s statement is another nail in the coffin of genuine dialogue and open inquiry within the church.
|
||||
|
||||
Ironically, his harsh and dismissive attitude towards those who question the established norms may actually fuel the Deconstruction movement he fears. If pastors and church leaders took the time to listen to doubters and provided a safe space for exploring their questions, it’s likely that the Deconstruction movement wouldn’t have gained such traction.
|
||||
|
||||
Imagine what it would look like if churches allowed individuals the time and space to work through their faith, offered unwavering support and love regardless of doctrinal disagreements, and stood by them as they challenged outdated or confusing answers.
|
||||
|
||||
## Deconstruction is actually spiritual growth
|
||||
|
||||
In 1981, [James Fowler](https://en.wikipedia.org/wiki/James_W._Fowler), a Professor of Theology and Human Development, published a work called [*Stages of Faith*](https://books.google.com.au/books/about/Stages_of_Faith.html?id=1otLR7y6e7UC&redir_esc=y), where he built on the work of renowned thinkers like Piaget, Erikson, and Kohlberg, to give a framework for understanding how faith, and our own quest for meaning, develop in us over the course of our lifetime.
|
||||
|
||||
Fowler asserts that the person experiencing a “faith crisis” may actually be further advanced in their faith development than the person who has never done so. According to Fowler, doubt, disillusionment, and deconstruction are, in fact, a sign of spiritual growth rather than spiritual decline. To me, this makes complete sense. How can faith be proven genuine unless it is genuinely tested?
|
||||
|
||||
People who never question their faith, placing their confidence and trust in the individuals or groups that represent their beliefs — pastors, for example — never grow into spiritually mature adults as they are constantly sucking on the teat of their spiritual overseers. Deconstruction forces one to arrive at conclusions for themselves rather than outsourcing their faith to others.
|
||||
|
||||
So, why are people like Cooper and Chandler so frightened of people questioning their religion and the religious systems set up to perpetuate it? Shouldn’t they welcome the faith crisis as a necessary step toward spiritual maturity?
|
||||
|
||||
Yes, they should.
|
||||
|
||||
But they won’t, and there is an excellent reason for it. As American author [Upton Sinclair](https://www.brainyquote.com/quotes/upton_sinclair_138285#:~:text=Upton%20Sinclair%20Quotes&text=It%20is%20difficult%20to%20get%20a%20man%20to%20understand%20something,upon%20his%20not%20understanding%20it.) once said, *“It is difficult to get a man to understand something when his salary depends upon his not understanding it.”*
|
||||
|
||||
## What now?
|
||||
|
||||
I’m left wondering what comes next.
|
||||
|
||||
With high-profile Evangelicals like Cooper and Chandler openly denouncing those who challenge their version of faith, it feels as though we’re on the brink of a new kind of conflict.
|
||||
|
||||
What’s next?
|
||||
|
||||
Witch hunts?
|
||||
|
||||
Sure, you might think I’m being dramatic, but a declaration of a Holy War is a pretty serious thing.
|
||||
|
||||
Of course, there is another way.
|
||||
|
||||
Instead of labeling those with questions and doubts as the enemy, instead of demonizing them, divorcing them from the church, declaring war on them, and alienating them further, maybe — just maybe — the church could shut up long enough to sit and listen to us: The doubters; The deconstructors.
|
||||
|
||||
Our doubts are not unreasonable.
|
||||
|
||||
Our questions are not preposterous.
|
||||
|
||||
Our thoughts are not irrational.
|
||||
|
||||
And our grievances are not unwarranted.
|
||||
@@ -0,0 +1,242 @@
|
||||
---
|
||||
title: "Why Developers Are Ditching PostgreSQL, MySQL and MongoDB"
|
||||
source: "https://aws.plainenglish.io/why-developers-are-ditching-postgresql-mysql-and-mongodb-b3b953ebe6b6"
|
||||
author:
|
||||
- "[[Dipanshu ]]"
|
||||
published: 2024-10-01
|
||||
created: 2024-10-29
|
||||
description: "Traditional databases falling short? Dive into 6 exciting database alternatives that are reshaping data management. From time series to vector search, stay ahead of the curve."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## The Database Revolution Your Project Is Missing Out On
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://dipanshu10.medium.com/?source=post_page---byline--b3b953ebe6b6--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://aws.plainenglish.io/?source=post_page---byline--b3b953ebe6b6--------------------------------)
|
||||
|
||||

|
||||
|
||||
image by author
|
||||
|
||||
> ==[Non-Medium Members Can Read the Full Article by Clicking Here.](https://aws.plainenglish.io/why-developers-are-ditching-postgresql-mysql-and-mongodb-b3b953ebe6b6?sk=df706ca38c768a4135c1f2cf3b180f92)==
|
||||
|
||||
Traditional relational databases like PostgreSQL and MySQL, as well as document stores like MongoDB, have long been the go-to solutions for many developers. However, as data requirements become increasingly diverse and complex, a new generation of specialized databases has emerged to address specific challenges. In this article i will uncovers the alternative databases that offer unique capabilities for various use cases, providing a technical exploration of their features and practical Python code examples.
|
||||
|
||||
## Milvus :Scalable Vector Database for AI and Machine Learning
|
||||
|
||||
Milvus is an open-source vector database designed to power AI applications and similarity search at massive scale. It’s particularly useful for applications involving machine learning, computer vision, natural language processing, and recommender systems.
|
||||
|
||||
## Key Features:
|
||||
|
||||
- **Efficient Similarity Search**: Implements various indexing algorithms for fast nearest neighbor search in high-dimensional spaces.
|
||||
- **Scalability**: Supports distributed deployments for handling large-scale vector data.
|
||||
- **Hybrid Search**: Combines vector similarity search with scalar filtering for complex queries.
|
||||
- **CRUD Operations**: Supports create, read, update, and delete operations on vector data.
|
||||
- **Data Consistency**: Ensures strong consistency of data in distributed environments.
|
||||
|
||||
## When to Use Milvus:
|
||||
|
||||
- Image and video search
|
||||
- Recommendation systems
|
||||
- Natural language processing applications
|
||||
- Fraud detection
|
||||
|
||||
## Python Example:
|
||||
|
||||
```
|
||||
from pymilvus import Collection, CollectionSchema, DataType, FieldSchema, connectionsdef main() -> None: connections.connect() fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=128), ] schema = CollectionSchema(fields, "Vector collection example") collection = Collection("example_collection", schema) import numpy as np vectors = np.random.random([1000, 128]).astype(np.float32) ids = list(range(1000)) collection.insert([ids, vectors]) collection.load() results = collection.search( vectors[:1], "vector", param={"metric_type": "L2", "params": {"nprobe": 10}}, limit=3, ) for hit in results[0]: print(f"Hit ID: {hit.id}, Distance: {hit.distance}")if __name__ == "__main__": main()
|
||||
```
|
||||
|
||||
This example demonstrates how to create a collection in Milvus, insert vector data, and perform a similarity search.
|
||||
|
||||
## InfluxDB: Mastering Time Series Data
|
||||
|
||||
InfluxDB is a purpose-built time series database designed for high-performance handling of timestamped data. It excels in scenarios such as monitoring Internet of Things (IoT) applications and real-time analytics.
|
||||
|
||||
## Key Features:
|
||||
|
||||
- **Time-Structured Merge Tree (TSM)**: InfluxDB uses a custom storage engine optimized for time series data, providing efficient compression and fast queries.
|
||||
- **Flux Query Language**: A powerful functional data scripting language designed for time series data analysis.
|
||||
- **Continuous Queries**: Automatically computed aggregate data to optimize frequently-used queries.
|
||||
- **Retention Policies**: Automated data management policies to down-sample or expire old data.
|
||||
|
||||
**When to Use InfluxDB:**
|
||||
|
||||
- Real-time analytics applications
|
||||
- IoT data monitoring
|
||||
- System monitoring and metrics collection
|
||||
|
||||
## Python Example:
|
||||
|
||||
```
|
||||
from datetime import datetimeimport numpy as npfrom influxdb_client import InfluxDBClient, Point, Task, WritePrecisionfrom influxdb_client.client.write_api import SYNCHRONOUStoken = "your_token"org = "your_org"bucket = "example_bucket"client = InfluxDBClient(url="http://localhost:8086", token=token)write_api = client.write_api(write_options=SYNCHRONOUS)for i in range(100): point = ( Point("cpu_load") .tag("host", "server01") .field("value", np.random.uniform(0.5, 1.5)) .time(datetime.now(), WritePrecision.NS) ) write_api.write(bucket=bucket, org=org, record=point)query_api = client.query_api()flux_query = f"""from(bucket: "{bucket}") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "cpu_load") |> filter(fn: (r) => r._field == "value") |> aggregateWindow(every: 5m, fn: mean, createEmpty: false) |> yield(name: "mean")"""tables = query_api.query(flux_query)for table in tables: for record in table.records: print( f"Time: {record.get_time()}, 5-Minute Moving Average: {record.get_value()}" )task = Task( name="cpu_load_moving_avg", flux=f""" option task = {{ name: "cpu_load_moving_avg", every: 1m }} from(bucket: "{bucket}") |> range(start: -1m) |> filter(fn: (r) => r._measurement == "cpu_load") |> aggregateWindow(every: 1m, fn: mean) |> to(bucket: "{bucket}", org: "{org}") """,)tasks_api = client.tasks_api()tasks_api.create_task(task=task)print("Task created to calculate and store rolling averages every minute.")
|
||||
```
|
||||
|
||||
This example demonstrates:
|
||||
|
||||
1. Connecting to InfluxDB and setting up a write API.
|
||||
2. Generating and writing simulated sensor data with multiple fields and tags.
|
||||
3. Querying data using Flux to calculate mean values over the last hour.
|
||||
4. Processing and displaying query results.
|
||||
|
||||
## Neo4j: Unraveling Complex Relationships
|
||||
|
||||
Neo4j is a graph database that uses nodes, edges, and properties to represent and store data. This structure is ideal for applications where relationships between entities are crucial, such as social networks or recommendation systems.
|
||||
|
||||
## Key Features:
|
||||
|
||||
- **Property Graph Model**: Represents data as nodes, relationships, and properties, allowing for rich data modeling.
|
||||
- **Cypher Query Language**: A declarative query language designed for working with graph data.
|
||||
- **ACID Transactions**: Ensures data integrity even in highly connected data scenarios.
|
||||
- **Native Graph Storage**: Optimized for traversing relationships, making complex queries faster compared to relational databases.
|
||||
|
||||
## When to Use Neo4j:
|
||||
|
||||
- Social network analysis
|
||||
- Recommendation engines
|
||||
- Fraud detection systems
|
||||
- Knowledge graphs
|
||||
|
||||
## Python Example:
|
||||
|
||||
```
|
||||
from neo4j import GraphDatabase, ManagedTransactionURI = "bolt://localhost:7687"DRIVER = GraphDatabase.driver(URI, auth=("neo4j", "password"))def add_friend(tx: ManagedTransaction, name: str, friend_name: str) -> None: tx.run( "CREATE (a:Person {name: $name})-[:FRIEND]->(b:Person {name: $friend_name})", name=name, friend_name=friend_name, )def main() -> None: with DRIVER.session() as session: session.write_transaction(add_friend, "Alice", "Bob") with DRIVER.session() as session: result = session.run( "MATCH (a:Person)-[:FRIEND]->(b:Person) RETURN a.name, b.name" ) for record in result: print(f"{record['a.name']} is friends with {record['b.name']}") DRIVER.close()if __name__ == "__main__": main()
|
||||
```
|
||||
|
||||
This example demonstrates:
|
||||
|
||||
1. Creating a reusable Neo4j connection class.
|
||||
2. Adding nodes (people) and relationships (friendships) to the graph.
|
||||
3. Performing a more complex query to find “friends of friends” — a task that would be more complicated in a relational database.
|
||||
|
||||
## DuckDB: Analytical Queries at Lightning Speed
|
||||
|
||||
DuckDB is a lightweight, in-process analytical database often described as “SQLite for analytics.” It’s designed for fast analytical queries, particularly in data science workflows, and can seamlessly integrate with pandas DataFrames.
|
||||
|
||||
## Key Features:
|
||||
|
||||
- **Vectorized Query Execution**: Processes data in batches rather than row-by-row, leading to significant performance improvements.
|
||||
- **Column-Oriented Storage**: Optimized for analytical queries that typically involve a subset of columns.
|
||||
- **Zero-Copy Data Ingestion**: Can query data directly from sources like Pandas DataFrames without copying.
|
||||
- **ACID Transactions**: Ensures data consistency and reliability.
|
||||
|
||||
## When to Use DuckDB:
|
||||
|
||||
- Data analysis and exploration
|
||||
- ETL processes
|
||||
- Embedded analytics in Python applications
|
||||
|
||||
## Python Example:
|
||||
|
||||
```
|
||||
import duckdbimport numpy as npimport pandas as pdduckdb.execute("""CREATE TABLE employees AS SELECT * FROM 'employees.csv';""")result = duckdb.execute("SELECT COUNT(*) FROM employees").fetchall()print(f"Total number of employees: {result[0][0]}")df = pd.DataFrame( { "employee_id": range(1, 101), "name": [f"Employee {i}" for i in range(1, 101)], "salary": np.random.randint(50000, 150000, size=100), })duckdb.execute("CREATE TABLE df_employees AS SELECT * FROM df")high_earners = duckdb.query_df(df, "df", "SELECT * FROM df WHERE salary > 100000").df()print("High earners:")print(high_earners)window_query = """SELECT employee_id, salary, AVG(salary) OVER () AS avg_salary, RANK() OVER (ORDER BY salary DESC) AS rankFROM df_employees"""ranked_salaries = duckdb.execute(window_query).df()print("Ranked salaries with average:")print(ranked_salaries)department_df = pd.DataFrame( { "employee_id": range(1, 101), "department": np.random.choice( ["Engineering", "HR", "Sales", "Marketing"], size=100 ), })duckdb.execute("CREATE TABLE departments AS SELECT * FROM department_df")aggregation_query = """SELECT d.department, COUNT(e.employee_id) AS num_employees, AVG(e.salary) AS avg_salaryFROM df_employees eJOIN departments dON e.employee_id = d.employee_idGROUP BY d.department"""department_stats = duckdb.execute(aggregation_query).df()print("Department statistics:")print(department_stats)
|
||||
```
|
||||
|
||||
This example demonstrates:
|
||||
|
||||
1. Creating an in-memory DuckDB database and registering a Pandas DataFrame as a table.
|
||||
2. Executing a complex analytical query that includes:
|
||||
|
||||
- Daily aggregations
|
||||
- Moving averages
|
||||
- Lag calculations for day-over-day comparisons
|
||||
|
||||
3\. Performing overall statistical calculations on the dataset.
|
||||
|
||||
## Redis: High-Performance Data Structures
|
||||
|
||||
Redis is a fast, in-memory data structure store that can be used as a database, cache, and message broker. Unlike traditional databases, Redis runs entirely in memory, making it extremely fast for read and write operations.
|
||||
|
||||
## Key Features:
|
||||
|
||||
- **In-Memory Data Storage**: Provides extremely fast read and write operations.
|
||||
- **Data Structures**: Supports strings, hashes, lists, sets, sorted sets, bitmaps, hyperloglog, and geospatial indexes.
|
||||
- **Pub/Sub Messaging**: Built-in publish/subscribe messaging paradigm for building real-time applications.
|
||||
- **Lua Scripting**: Allows for complex operations to be performed atomically on the server-side.
|
||||
|
||||
## When to Use Redis:
|
||||
|
||||
- Caching layer for performance improvement
|
||||
- Real-time analytics
|
||||
- Session management
|
||||
- Leaderboards and counting
|
||||
|
||||
## Python Example:
|
||||
|
||||
```
|
||||
import subprocessimport threadingimport timeimport redistype RedisProcess = subprocess.Popen[bytes]stop_listening = threading.Event()def start_redis_server() -> RedisProcess: process = subprocess.Popen( ["redis-server"], stdout=subprocess.PIPE, stderr=subprocess.PIPE ) time.sleep(0.5) return processdef stop_redis_server(process: RedisProcess) -> None: process.terminate() process.wait()def real_time_data(r: redis.Redis) -> None: r.set("page_views", 0) r.incr("page_views") r.incr("page_views") page_views = r.get("page_views").decode("utf-8") print(f"Page views: {page_views}")def task_queue(r: redis.Redis) -> None: r.rpush("task_queue", "task1") r.rpush("task_queue", "task2") r.rpush("task_queue", "task3") task = r.lpop("task_queue").decode("utf-8") print(f"Processing task: {task}")def redis_set(r: redis.Redis) -> None: r.sadd("unique_users", "user1") r.sadd("unique_users", "user2") r.sadd("unique_users", "user1") unique_users = r.smembers("unique_users") print(f"Unique users: {[user.decode('utf-8') for user in unique_users]}")def expiring_data(r: redis.Redis) -> None: r.set("session_token", "abc123", ex=3600) session_token = r.get("session_token").decode("utf-8") print(f"Session token: {session_token} (will expire in 1 hour)")def pub_sub_messaging(r: redis.Redis) -> None: def message_handler(message): print(f"Received message: {message['data'].decode('utf-8')}") def listen_for_messages(): p = r.pubsub() p.subscribe("my-channel") while not stop_listening.is_set(): message = p.get_message(timeout=1.0) if message and message["type"] == "message": message_handler(message) listener_thread = threading.Thread(target=listen_for_messages) listener_thread.start() time.sleep(0.5) r.publish("my-channel", "Hello, Redis!") time.sleep(0.5) stop_listening.set() listener_thread.join() def main() -> None: redis_process = start_redis_server() r = redis.Redis(host="localhost", port=6379, db=0) real_time_data(r) task_queue(r) redis_set(r) expiring_data(r) pub_sub_messaging(r) stop_redis_server(redis_process) print("Redis server stopped.")if __name__ == "__main__": main()
|
||||
```
|
||||
|
||||
This example demonstrates various Redis features, including counters, task queues, sets for unique items, expiring data, and pub/sub messaging.
|
||||
|
||||
## **Tile38 :**Geospatial Database and Geofencing Server
|
||||
|
||||
Tile38 is a specialized geospatial database that allows you to store, query, and analyze geospatial data in real-time. It’s ideal for applications such as fleet management, asset tracking, and location-based services.
|
||||
|
||||
## Key Features:
|
||||
|
||||
- **Geospatial Indexing**: Efficiently indexes and queries spatial data.
|
||||
- **Real-time Geofencing**: Supports instant notifications when objects enter or exit defined areas.
|
||||
- **Multiple Object Types**: Handles points, bounding boxes, XYZ tiles, GeoJSON, etc.
|
||||
- **Scripting**: Supports Lua scripting for complex geospatial operations.
|
||||
- **Pub/Sub Model**: Allows for real-time notifications of spatial events.
|
||||
|
||||
## When to Use Tile38:
|
||||
|
||||
- Fleet management systems
|
||||
- Location-based services
|
||||
- Asset tracking
|
||||
- Geofencing applications
|
||||
|
||||
## Python Example:
|
||||
|
||||
```
|
||||
import threadingimport timefrom pyle38 import Tile38tile38 = Tile38(url="redis://localhost:9851") async def add_locations(): await tile38.set("fleet").point("truck1", 33.5123, -112.2693).exec() await tile38.set("fleet").point("truck2", 33.5011, -112.1710).exec() await tile38.set("fleet").point("truck3", 40.7128, -74.0010).exec()async def create_geofence(): await ( tile38.within("fleet") .circle(33.5, -112.2, 5000) .detect("enter", "exit") .object("delivery_zone") )def monitor_geofence(): pubsub = tile38.pubsub() pubsub.subscribe("delivery_zone") for message in pubsub.listen(): print(f"Geofence Alert: {message}")monitor_thread = threading.Thread(target=monitor_geofence)monitor_thread.start()async def main(): await add_locations() await create_geofence() time.sleep(1) await tile38.set("fleet", "truck4").point(33.4018, -112.8965).exec() time.sleep(5) monitor_thread.join()if __name__ == "__main__": import asyncio asyncio.run(main())
|
||||
```
|
||||
|
||||
This example demonstrates how to add geospatial objects to Tile38, create a geofence, query for objects within the geofence, and set up real-time notifications for geofence activities.
|
||||
|
||||
## Conclusion
|
||||
|
||||
As we’ve explored, each of these alternative databases brings unique capabilities to the table:
|
||||
|
||||
1. **InfluxDB** excels at handling time-series data, making it ideal for IoT and monitoring applications.
|
||||
2. **Neo4j** shines when dealing with highly interconnected data, perfect for social networks and recommendation systems.
|
||||
3. **DuckDB** offers lightning-fast analytical queries, particularly useful for data scientists and analysts.
|
||||
4. **Redis** provides high-performance in-memory data structures, great for caching and real-time applications.
|
||||
5. **Milvus** specializes in vector similarity search, crucial for AI and machine learning applications.
|
||||
6. **Tile38** focuses on geospatial data and real-time geofencing, essential for location-based services.
|
||||
|
||||
While these specialized databases offer powerful features, it’s crucial to remember that they also introduce additional complexity to your architecture. Each new database adds overhead in terms of hosting, management, backups, and security.
|
||||
|
||||
Before adopting any of these alternatives, consider the following:
|
||||
|
||||
1. **Start Simple**: Don’t overcomplicate your architecture from the beginning. Traditional databases like PostgreSQL or MongoDB can handle many use cases effectively.
|
||||
2. **Evaluate Your Needs**: Carefully assess whether your project truly requires the specialized features offered by these databases.
|
||||
3. **Consider Scaling**: Think about how your data and query needs might evolve as your project grows.
|
||||
4. **Maintenance Overhead**: Factor in the time and resources required to maintain and secure an additional database system.
|
||||
5. **Cloud Solutions**: Explore managed database services offered by cloud providers, which can simplify deployment and maintenance.
|
||||
|
||||
Remember, the goal is to balance performance with maintainability. Sometimes, a simple solution using a well-known database is preferable to a complex system with multiple specialized databases.
|
||||
|
||||
> I’d love to hear your thoughts! If you have any suggestions, critiques, or questions, don’t hesitate to drop them in the comments — I’m always eager to improve. Also, if you enjoyed this article and want to stay updated on future content, be sure to **follow me here on** [**Dipanshu **](https://medium.com/u/a13c06f39296?source=post_page---user_mention--b3b953ebe6b6--------------------------------)and on [**X.com**](https://x.com/dipanshu089) for more insights and updates. Your feedback and support mean the world!
|
||||
|
||||
Stay tuned — there’s plenty more to come!
|
||||
|
||||
## In Plain English 🚀
|
||||
|
||||
*Thank you for being a part of the* [***In Plain English***](https://plainenglish.io/) *community! Before you go:*
|
||||
|
||||
- Be sure to **clap** and **follow** the writer ️👏**️️**
|
||||
- Follow us: [**X**](https://twitter.com/inPlainEngHQ) | [**LinkedIn**](https://www.linkedin.com/company/inplainenglish/) | [**YouTube**](https://www.youtube.com/channel/UCtipWUghju290NWcn8jhyAw) | [**Discord**](https://discord.gg/in-plain-english-709094664682340443) | [**Newsletter**](https://newsletter.plainenglish.io/)
|
||||
- Visit our other platforms: [**CoFeed**](https://cofeed.app/) | [**Differ**](https://differ.blog/)
|
||||
- More content at [**PlainEnglish.io**](https://plainenglish.io/)
|
||||
@@ -0,0 +1,146 @@
|
||||
---
|
||||
title: "Why I Prefer “import x” Over “from x import y”"
|
||||
source: "https://levelup.gitconnected.com/why-i-prefer-import-x-over-from-x-import-y-b1ae8be6cbdd"
|
||||
author:
|
||||
- "[[Liu Zuo Lin]]"
|
||||
published: 2024-05-18
|
||||
created: 2024-10-29
|
||||
description: "^ we can import the entire module b, and the use b.<function_name> to access the individual functions defined in b.py Here, when we use the functions defined in b.py, we need to put the module name b…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://zlliu.medium.com/?source=post_page---byline--b1ae8be6cbdd--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://levelup.gitconnected.com/?source=post_page---byline--b1ae8be6cbdd--------------------------------)
|
||||
|
||||

|
||||
|
||||
Both ways are correct, but one way is more correct than another. In my opinion, at least.
|
||||
|
||||
## Importing in Python
|
||||
|
||||
Let’s say we have 2 Python files:
|
||||
|
||||
- `a.py` which we run directly using the command `python a.py`
|
||||
- `b.py` which contains functions that are *imported* into `a.py`
|
||||
|
||||
```
|
||||
def test(): print('test')def hello(): print('hello')
|
||||
```
|
||||
|
||||
^ there are 2 main ways to import the functions from `b.py` into `a.py`
|
||||
|
||||
## 1) import b
|
||||
|
||||
```
|
||||
import bb.test() b.hello()
|
||||
```
|
||||
|
||||
^ we can import the entire module `b`, and the use `b.<function_name>` to access the individual functions defined in `b.py`
|
||||
|
||||
Here, when we use the functions defined in `b.py`, we need to put the module name `b` beforehand eg `b.test()` or `b.hello()`
|
||||
|
||||
## 2) from b import <function>
|
||||
|
||||
```
|
||||
from b import test, hellotest() hello()
|
||||
```
|
||||
|
||||
^ alternatively, we can also use `from b import test, hello` to import the functions directly.
|
||||
|
||||
Here, we don’t need to put `b` before our function name — we can use the function name directly.
|
||||
|
||||
> Why I prefer ‘import b’ over ‘from b import test, hello’
|
||||
|
||||
## 1) Namespace issues
|
||||
|
||||
When we use `import b` instead of `from b import test, hello`, we are less likely to have a clash in namespace.
|
||||
|
||||
```
|
||||
def test(): print('test')def hello(): print('hello')
|
||||
```
|
||||
```
|
||||
test = 'apple'from b import test, hello
|
||||
```
|
||||
|
||||
^ when we `from b import test, hello` inside `a.py`, we directly use the `test` and `hello` variables. If we are not careful, we might accidentally override any existing `test` and `hello` variables.
|
||||
|
||||
- `test` is already defined in `a.py`
|
||||
- when we `from b import test`, we import `test` from `b.py`
|
||||
- `test` from `b.py` overrides the original `test` from `a.py`
|
||||
|
||||
Note that this problem gets exponentially worse as our Python scripts become increasingly complicated, containing more and more variables that might clash with each other.
|
||||
|
||||
```
|
||||
def test(): print('test')def hello(): print('hello')
|
||||
```
|
||||
```
|
||||
test = 'apple'import bb.test()b.hello()
|
||||
```
|
||||
|
||||
^ however, if we use `import b`, we need to use `b.test()` in order to access the `test` function inside `b.py`
|
||||
|
||||
This does not in fact clash with our original `test` variable in `a.py` as they are using different namespaces. Which means that we are much less likely to accidentally override our variables.
|
||||
|
||||
## 2) Less clutter
|
||||
|
||||
I firsthandedly experienced this recently at work.
|
||||
|
||||
```
|
||||
def doSomethingHappily(): passdef doSomethingSadly(): passdef doSomethingAngrily(): passdef doSomethingQuickly(): passdef doSomethingSlowly(): passdef doSomethingElse(): pass
|
||||
```
|
||||
|
||||
^ I had a bunch of functions (with pretty lengthy names) in `b.py`, and I needed to import them into `a.py`
|
||||
|
||||
```
|
||||
from b import doSomethingHappily, doSomethingSadly, doSomethingAngrily \ doSomethingQuickly, doSomethingSlowly, doSomethingElsedoSomethingHappily()doSomethingSadly()doSomethingAngrily()doSomethingQuickly()doSomethingSlowly()doSomethingElse()
|
||||
```
|
||||
|
||||
^ this was what my import statement was like. Some problems:
|
||||
|
||||
- there was lots of clutter and this took up lots of random space
|
||||
- if I changed a function name, I needed to change it multiple times in `a.py` too
|
||||
- which got annoying pretty quickly
|
||||
|
||||
Instead, I refactored my import statement to `import b`
|
||||
|
||||
```
|
||||
import bb.doSomethingHappily()b.doSomethingSadly()b.doSomethingAngrily()b.doSomethingQuickly()b.doSomethingSlowly()b.doSomethingElse()
|
||||
```
|
||||
|
||||
- my import statement no longer spanned multiple lines
|
||||
- when I modified a function name, I no longer had to change this in multiple places
|
||||
|
||||
## Why not “from b import \*”?
|
||||
|
||||
This is bad practice, so while this is *legal* code, chances are the the senior devs might not want this around.
|
||||
|
||||
But why is this bad practice? `from b import *` means import *everything* from inside `b.py`. Which means we are even more likely to accidentally override some variables in our namespace now.
|
||||
|
||||
As good practice, we should ideally import only what we need rather than every single thing inside a module.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Hope this was clear and easy to understand
|
||||
|
||||
## If You Wish To Support Me As A Creator
|
||||
|
||||
1. *Clap 50 times for this story*
|
||||
2. *Leave a comment telling me your thoughts*
|
||||
3. *Highlight your favourite part of the story*
|
||||
|
||||
*Thank you! These tiny actions go a long way, and I really appreciate it!*
|
||||
|
||||
**YouTube:** [**https://www.youtube.com/@zlliu246**](https://www.youtube.com/@zlliu246)
|
||||
|
||||
**LinkedIn:** [**https://www.linkedin.com/in/zlliu/**](https://www.linkedin.com/in/zlliu/)
|
||||
|
||||
**My Ebooks:** [**https://zlliu.co/ebooks**](https://zlliu.co/ebooks)
|
||||
@@ -0,0 +1,150 @@
|
||||
---
|
||||
title: "Why do mirrors flip left-and-right but not up-and-down?"
|
||||
source: "https://medium.com/starts-with-a-bang/why-do-mirrors-flip-left-and-right-but-not-up-and-down-9c665ea87221"
|
||||
author:
|
||||
- "[[Ethan Siegel]]"
|
||||
published: 2023-04-27
|
||||
created: 2024-10-29
|
||||
description: "If you’ve ever looked in a mirror, you’ve likely noticed that everything you see is flipped. When you raise your left hand, your reflection raises their right hand. When you wink with your right eye…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||

|
||||
|
||||
*When you view your right hand in a mirror, it appears as a left hand. Writing is reversed, as is the direction of any spinning object: clockwise becomes counterclockwise and vice versa. In many ways, it appears as though things are flipped left-to-right, but not up-to-down. That’s not the true reason for what you see, however.* ([Credit](https://hk.science.museum/en/web/scm/exhibition/wom.html): Hong Kong Science Museum)
|
||||
|
||||
## If you look into a mirror, you’ll notice that left-and-right are reversed, but up-and-down is preserved. The reason isn’t what you think.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@startswithabang?source=post_page---byline--9c665ea87221--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/starts-with-a-bang?source=post_page---byline--9c665ea87221--------------------------------)
|
||||
|
||||
If you’ve ever looked in a mirror, you’ve likely noticed that everything you see is flipped. When you raise your left hand, your reflection raises their right hand. When you wink with your right eye, your reflection’s left eye winks back. And if you write a message and hold it up, you’ll see your reflection hold up the identical sign, but everything appear backwards, even the individual letters themselves. It appears that everything you see reflected in the mirror has their left-and-right reversed. But, for some reason, up-and-down don’t appear to be reversed. Your mirror reflection still has their feet on the ground, their ceiling up above, and all the letters on your mirror image’s writings aren’t flipped upside down, but remain right side up.
|
||||
|
||||
Why is this the case? It’s not just humans who experience this: whether you’re a sea star, an insect, a jellyfish, a parakeet or a cat — whether in space or on Earth or anywhere else in the Universe — you’ll still see the same thing. When you look into a mirror that’s mounted on any wall, they all appear to reverse left-and-right, but not up-and-down. This isn’t a deficiency in your mirror at all; it’s a consequence of how reflections work at a fundamental level.
|
||||
|
||||

|
||||
|
||||
*When you reflect text in a mirror, both each letter and the letter order appear reversed. If the text can be read both ways, in reality and in the mirror, it’s known as a mirror ambigram.* ([Credit](https://commons.wikimedia.org/wiki/File:Optical_Let_it_go_mirror_ambigram_by_Basile_Morin.jpg): Basile Morin/Wikimedia Commons)
|
||||
|
||||
The first thing you have to recognize is there’s nothing special about our environment here. There’s nothing remarkable, as far as mirrors and reflections go, about:
|
||||
|
||||
- our human eyes,
|
||||
- our planet Earth,
|
||||
- our gravitationally-based orientation of up-and-down,
|
||||
- or the nature of light,
|
||||
|
||||
that has any effect on the outcome.
|
||||
|
||||
We could turn gravity on or off; we could rotate ourselves by any angle, even 45°, 90°, or 180° about any axis; we could give ourselves additional eyes or senses; we could rearrange the objects surrounding us in any configuration we like. Still, despite any of these modifications, we’d still see that up remained up, down remained down, and that everything in the mirror would appear as though left and right were switched.
|
||||
|
||||
One of the best examples to illustrate this is to consider a spinning ball in the mirror, and to consider it from two perspectives: one of a ball spinning about its vertical axis, like a basketball on an adept athlete’s finger, and one of a ball spinning about its horizontal axis instead.
|
||||
|
||||

|
||||
|
||||
*From the perspective of Harlem Globetrotter TNT Lister, the balanced, spinning basketball appears to rotate from her left towards her right: the same as for the child on whose finger the ball is being transferred to, or counterclockwise. If this photograph instead were taken of TNT Lister’s mirror reflection, the ball would appear to be spinning in the opposite right-to-left (clockwise) direction instead.* ([Credit](https://nara.getarchive.net/amp/media/harlem-globetrotter-tnt-lister-helps-an-audience-member-e052ff): NARA/DVIDS Public Domain Archive)
|
||||
|
||||
When you spin a ball about its vertical axis, you can consider the fact that there are two ways to do it. Either, if you looked “down” at this ball from above, you’d see that it appeared to spin clockwise, from ahead to the right to behind to the left to ahead again, or counterclockwise, in the exact opposite direction.
|
||||
|
||||
If the ball is spinning clockwise, you can model that with your left hand. If you take your left hand and point your thumb up, you’ll notice that your fingers curl around in the clockwise direction. A clockwise-spinning ball follows this exact same orientation.
|
||||
|
||||
But now, take a look at the ball — and your left hand’s — reflection in the mirror. If you were to look “down” at that ball once again, from above, you’d see that it was rotating counterclockwise instead. If you followed the point on the ball that began closest to you, you’d see it move to your right and backwards, away from you, then farther away and back to the center, then closer and towards the left, then closer still and back to the center. That counterclockwise motion could be described by your own right hand, showing how, once again, the mirror appeared to exchange left-for-right, while leaving the up-and-down direction unchanged.
|
||||
|
||||

|
||||
|
||||
*A horizontally rotating basketball, left, and its mirror reflection. Not only does the text of the basketball appear flipped, from left to right, but the rotation of the basketball is now in the opposite direction about the same horizontal axis. Even though mirrors don’t exactly flip up-and-down, they don’t exactly flip left-and-right only, either.* (Credit: E. Siegel)
|
||||
|
||||
What about if we then switched to spinning a ball about its horizontal axis? How would a mirror handle that?
|
||||
|
||||
Imagine that you’re holding the ball in front of you so that it’s sandwiched between your two index fingers that are pointing towards one another. We again have two choices of how to rotate it, so let’s pick one: overhand and away from you. If we start at the point on the ball closest to your body’s core, you’ll see it move:
|
||||
|
||||
- up and away from you,
|
||||
- then back down towards the middle but still away from you,
|
||||
- then further down away from the middle and back towards you,
|
||||
- and then back up towards the middle and towards you,
|
||||
|
||||
whereupon it returns to its initial position. This “underhand” rotation was one choice you could have made; the reverse of it would lead to an “overhand” rotation instead. (If you’ve ever been part of an argument on which way is the “proper” way to hang a toilet paper roll, you’ll recognize these two visualizations.)
|
||||
|
||||
But this time, when you look in the mirror, what’s happening? Left and right are the same. Up and down are the same. But the ball? The mirrored version of the ball, instead of appearing to spin with an underhand rotation, appears to be spinning with an overhand orientation.
|
||||
|
||||

|
||||
|
||||
*If the woman in the picture moves towards the mirror, her ball will rotate counterclockwise from the camera’s perspective, while the mirror image of her ball will appear to rotate clockwise. If you traced any imaginary point on the ball as she moved, you’d be able to trace out exactly how the motion of the objects in the mirror differed from objects in the real world.* ([Credit](https://stock.adobe.com/images/young-asian-athlete-woman-doing-pilates-exercises-with-exercise-ball-in-fitness-gym-healthy-lifestyle-concepts/203026232): zephyr\_p/Adobe Stock)
|
||||
|
||||
This example surprises most people. Sure, it’s clearly symmetric about the vertical axis; if you were to draw an imaginary line down your center, with the ball rotating about its horizontal axis, it’s clear that the left half of yourself and the right half are completely symmetric. Same with your reflection in the mirror: left and right appear completely symmetric.
|
||||
|
||||
Sure, your mirror is still replacing your left with your right. Your reflection’s right hand corresponds to your left hand; your reflection’s left hand corresponds to your right. From the perspective of your reflection, their ball is doing the same thing that your ball is from your own perspective, moving up and away from their body, then down and away, then down and towards, and then up and towards, returning to its initial position.
|
||||
|
||||
But if they see their ball spinning “underhand” from their perspective, yours appears to spin “overhand” from their perspective. The mirror appears to be flipping the rotational direction of that ball as well.
|
||||
|
||||

|
||||
|
||||
*As a ball spins about a horizontal axis, its reflection spins as well. However, regardless of which perspective you choose, there will be something that’s flipped dependent on whether you examine the actual object or the mirrored reflection: what’s closer or farther, or moving towards or away from you.* (Credit: E. Siegel)
|
||||
|
||||
There’s a very powerful clue as to what’s going on with mirrors from this example, if we’re clever enough to identify it. Imagine — and we can imagine anything we like in this example — that the ball that’s spinning about its horizontal axis is now transparent. What we’re going to do is to create a single point on this ball, right along its equator, that we can track, as though we took a permanent marker and drew a point on a ball that was made of clear glass.
|
||||
|
||||
Now, from our perspective in the real Universe, we’re going to track the position of both our dot and the dot that appears in the mirror. Simultaneously, starting with the dot positioned closest to our own body, what we see is as follows:
|
||||
|
||||
- the real dot begins closest to us and farthest from the mirror, and so the mirrored dot begins farthest from us from our perspective,
|
||||
- then the real dot rises up and gets farther away from us but closer to the mirror, whereas the mirrored dot rises up and gets closer to us,
|
||||
- then, after reaching its maximum height, the real dot descends while reaching its most distant point from us but closest to the mirror, while the mirrored dot similarly descends while reaching its closest point to us,
|
||||
- then the real dot starts to return closer to us while it descends, moving farther from the mirror, while the mirrored dot continues its descent and moves back away from us,
|
||||
- and then the real dot, after reaching its minimum elevation, rises once again, getting closer to us (and farther from the mirror) until it returns to its original position, while the mirrored dot rises similarly, retreating farther from us and farther from the mirror until it returns to its initial position as well.
|
||||
|
||||

|
||||
|
||||
*A meson, a composite particle, spins about its axis before it decays. When mesons decay, they emit electrons along a particular axis and in a particular direction. Certain mesons are right handed: if you curl your fingers in the direction of the meson’s rotation, the electron will preferentially be emitted in the direction your right thumb points. The Universe in the mirror, however, possesses the opposite “handedness” to our own.* ([Credit](https://amzn.to/33K76Dg): E. Siegel/Beyond the Galaxy)
|
||||
|
||||
Left and right, as you can see, play absolutely no role in this example. We’re just looking at a single point that moves up-and-down while also moving forward-and-backwards. When the real dot appears to move up, the mirrored dot appears to move up. When the real dot appears to move down, the mirrored dot appears to move down. There is no flipping of up-and-down here.
|
||||
|
||||
But there isn’t a flipping of left-and-right, either!
|
||||
|
||||
If you were to perform the same experiment with a clear glass ball and a drawn-on dot, but rotated the ball around its vertical axis instead of its horizontal axis, you’d notice that:
|
||||
|
||||
- when your dot moved to the left, the mirrored dot moves to the left,
|
||||
- when your dot moved back to the center, the mirrored dot moves to the center,
|
||||
- when your dot moved to the right, the mirrored dot moves to the right,
|
||||
- and when your dot returns to the center, the mirrored dot also returns to the center.
|
||||
|
||||
Something is happening, clearly, but it isn’t that left-to-right is getting reflected, either.
|
||||
|
||||

|
||||
|
||||
*We typically see text reflected left-to-right in a mirror because those mirrors are mounted on vertical surfaces. If we instead mounted a mirror on a horizontal surface, such as above a “fire exit” sign, we’d see the text reflected up-to-down instead of left-to-right. However, mirrors don’t actually reflect either up-and-down or left-and-right; what you see depends on their orientation.* ([Credit](https://www.pexels.com/photo/fire-exit-signage-3230179/): Nothing Ahead/Pexels)
|
||||
|
||||
And yet, mirrors really are reflective surfaces. They don’t switch up-and-down but they also don’t switch left-and-right. Instead, what mirrors do is they reflect back-to-front: the third (depth) dimension!
|
||||
|
||||
Think about what happens when you look at yourself in the mirror. Light — even though it’s ambient light reflected off your body from elsewhere in the room — comes from every part of you. There’s no perspective from which you’re invisible, and hence that light must be radiating outwards in all directions.
|
||||
|
||||
The only way you can ever see anything is if light enters your eyes, just like the only way a camera, telescope, or other observer can see anything is if photons (or light rays) interact with it at a particular location: a specific time and place. So if we want to know what you’re going to see and where you’re going to see it, all you need to do is trace out the light rays: from whatever part of your body they’re emitted from, reflected off the mirror (obeying the physical laws that govern optics), and ending at your eyes. Based on the total distance the light travels and the angle it comes in at, that’s where your eyes and brain infer the “image” in the mirror to be.
|
||||
|
||||

|
||||
|
||||
*When you look at your reflection in a mirror, you see your sides reversed from one another. When you hold up your left hand, your reflection in the mirror holds up their right hand. When you wink your right eye, your reflection winks their left eye. And when you move something farther away from you, your reflection moves that object closer to you here on the other side of the mirror. Optics holds the reason why.* ([Credit](https://commons.wikimedia.org/wiki/File:Barack_Obama_ties_his_tie.jpg): Pete Souza/White House)
|
||||
|
||||
If your body were partially transparent, allowing you to see inside your reflection’s body, you’d find that everything was flipped front-to-back. Your left hand, when you hold it up, appears as though your fingernails are closer to you, your palm is farthest from you, your thumb is on the right, and your fingers are pointing up. That’s what a left hand looks like.
|
||||
|
||||
But in the mirror, that same hand has its fingernails farthest from you, its palm is closest to you, its thumb is on the right, and its fingers are pointing up. That’s exactly what you’d see if you held your (real) right hand up but with your palm facing your face instead. In the mirror:
|
||||
|
||||
- a left hand becomes a right hand,
|
||||
- writing gets flipped to be “mirrored” writing,
|
||||
- objects that spin clockwise appear to spin counterclockwise,
|
||||
- and vice versa on everything above.
|
||||
|
||||
But the reason is not because mirrors flip things left-to-right; they don’t. Instead, they flip things front to back, and that’s the explanation for what we see.
|
||||
|
||||

|
||||
|
||||
*The writing in this image appears the same way writing appears in a mirror. However, this isn’t a reflection of text that’s being shown here, but rather the opposite side of a transparent surface: you’re seeing the writing from the back instead of from the front. Mirrors don’t flip up-and-down or left-and-right, but rather front-and-back, and how it’s mounted determines the rest.* ([Credit](https://stock.adobe.com/images/young-asian-boy-writing-mathematical-and-physic-formula-onto-a-clear-glass-selected-focus/284677099): Mr. Note19/Adobe Stock)
|
||||
|
||||
In physics, there’s a special type of symmetry that exists if what happens in the mirror is indistinguishable from what happens in reality: parity symmetry. Most of the laws of physics respect this symmetry, but not all of them. In particular, whenever you have a radioactive decay, you’re at risk of violating this symmetry, since particles have a spin, a spin axis, and a decay direction, the same way your hands have a direction that your fingers curl and and a direction that your thumb points. Right hands and left hands are fundamentally different — just like chiral molecules are different from one another — and so are spinning particles that have a decay direction. For those that do, parity is violated, the same way a right-handed person’s reflection appears to be left-handed instead.
|
||||
|
||||
What’s remarkable about the way mirrors work is that they’re completely independent of the observer. If our eyes were separated in the vertical direction rather than the horizontal direction, mirrors would still reflect front-to-back. If we were in zero-gravity, if we had only one eye, if we were a rotationally symmetric starfish, etc., it wouldn’t change what we see in the mirror at all. The only difference is that things are reflected front-to-back, and that changes the “handedness” of everything that appears in the mirror, irrespective of how we view it.
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
title: "You Won’t Believe What I Discovered About IP Addresses!"
|
||||
source: "https://levelup.gitconnected.com/you-wont-believe-what-i-discovered-about-ip-addresses-570fe767499e"
|
||||
author:
|
||||
- "[[Rahul Sharma]]"
|
||||
published: 2024-10-03
|
||||
created: 2024-10-29
|
||||
description: "Learn the fundamentals of IPv4 and discover how IP addresses work. Explore how binary conversions simplify addressing in a format you can easily understand."
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## You Won’t Believe What I Discovered About IP Addresses!
|
||||
|
||||
## I am sure you will learn something new today!
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://devopstory.com/?source=post_page---byline--570fe767499e--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://levelup.gitconnected.com/?source=post_page---byline--570fe767499e--------------------------------)
|
||||
|
||||

|
||||
|
||||
Feature Image Created in Canva
|
||||
|
||||
When you first look at an ***IP address (IPV4)***, such as **192.168.0.1**, it’s easy to assume the dots are part of the IP address. We know that the definition of an ***IP address*** is:
|
||||
|
||||
> An IP address is a string of numbers separated by periods. IP addresses are expressed as a set of four numbers — an example address might be 192.158.1.38. Each number in the set can range from 0 to 255. So, the full IP addressing range goes from 0.0.0.0 to 255.255.255.255.
|
||||
> **Source**: [www.kaspersky.com](http://www.kaspersky.com/)
|
||||
|
||||
As an example, when you see
|
||||
**8.8.8.8**, you will comfortably say yes, it’s an IP that belongs to ***Google*** DNS.
|
||||
|
||||
==But you see this== ==**134744072**== ==You will probably say it’s a string of numbers and may not be an== ==***IP address.***==
|
||||
|
||||
## Understanding the Concept
|
||||
|
||||
Now, before we move forward and decide on whether this number is a large integer or an **IP address**, we need to understand that an **IPv4 address** is just a **32-bit** number,
|
||||
|
||||
e.g. ***00001010000010110000110000001101***
|
||||
|
||||
To make the **IP address** space easy for people to use, both a standard number system and the smallest numbers possible had to be used. In terms of the first of these criteria, people think in terms of the **Base10** number system, but computers are ***binary*** by nature (excluding quantum computing 😅 ).
|
||||
|
||||
It is impossible for most of us to reliably remember the **32-bit address** strings of binary numbers that computers and computer networks use to talk to each other.
|
||||
|
||||
It should be easier for people to understand any ***32-bit*** string of binary numbers if they were turned into decimal numbers. After all, people are so used to the ***Base10*** number system that it’s like second nature.
|
||||
|
||||
Unfortunately, a ***32-bit*** binary number could turn into a decimal number that is so big that people can’t really understand it. Think about trying to remember the address of Google **DNS**: **13,47,44,072.**
|
||||
|
||||
To fix this, the architects of the internet did something brilliant. They **chunked** that massive **32-bit** number into four smaller parts, or **octets**, each containing **8 bits**.
|
||||
|
||||
Here’s what that would look like:
|
||||
**1000 1000 1000 1000**
|
||||
|
||||
Each octet is still a binary number, but we don’t see it that way in everyday life. Instead, each **8-bit** chunk is converted into its decimal form (between **0** and **255**) and separated by dots: **8.8.8.8**
|
||||
|
||||
Now, suddenly, that massive **32-bit** address is much easier to handle. Instead of one overwhelming string of numbers, we have four smaller, bite-sized chunks.
|
||||
|
||||
The dots serve as **visual markers** that divide these **octets**. They also help distinguish between class-full networks and network boundaries in subnetting. Without them, we would be staring at a string of numbers that would take forever to decode. They make **IP addresses** easier for humans to read, write, and remember.
|
||||
|
||||
Think of it like trying to remember someone’s phone number. You don’t memorise it as **134744072**. Instead, you chunk it into sections:
|
||||
|
||||
**13-47-44-072**
|
||||
|
||||
**The dots do exactly that for IP addresses.**
|
||||
|
||||
## The Million-dollar Question
|
||||
|
||||
Now, **million-dollar questions**: is this number **134744072** an IP? The answer is yes; as I mentioned above, it’s a **32-bit** number that can represent an **IP address**, and that’s it. If you give this number to your browser (obviously with a proper context like HTTP), it can read it as an **IP address**. All devices and routers will also be able to understand it because they all work with **32-bit** binary numbers.
|
||||
|
||||
**How did I come to this number?**
|
||||
|
||||
To convert an IP address like **8.8.8.8** into a single integer, we treat each **octet** as a separate value and multiply it by powers of **256** based on its position in the sequence (starting from the left). Here's how it works:
|
||||
|
||||

|
||||
|
||||
Image used to show the calculation
|
||||
|
||||
So, the calculation looks like this:
|
||||
|
||||

|
||||
|
||||
Image used to show the calculation
|
||||
|
||||
The result of this expression is **13474407**
|
||||
|
||||
This process converts the familiar dotted-decimal format into a single, large integer.
|
||||
|
||||
You can try the same in your browser as well!
|
||||
|
||||

|
||||
|
||||
Image showing the integer as an IP address
|
||||
|
||||
## **Closing Thought**
|
||||
|
||||
Understanding this concept can help you in various cases. For example, one of the use cases can be **Database Storage:** Putting IP addresses in databases as integers (like **134744072**) instead of strings (like “**8.8.8.8**”) can help them take up less space. When it comes to storage and retrieval times, integer operations are often faster than string operations.
|
||||
|
||||
Another one could be **Sorting IP Addresses**: To easily sort a list of **IP addresses** by number, you can convert them to integers first. This is very helpful in situations like checking firewall rules or access control lists (**ACLs**).
|
||||
|
||||
On the other side, this information is what I perceived from various sources, and one of the book references is *IP Addressing Fundamentals* by *Mark A. Sportack*, from where I understood that this is also another way of approaching the ***IPV4***. I added my opinions in this, which you may or may not agree with. If you are a network expert, you may have your perfectly acceptable views.
|
||||
@@ -0,0 +1,86 @@
|
||||
---
|
||||
title: "‘As The Wind Blows’ Is The Most Horrifying Film I’ve Ever Watched"
|
||||
source: "https://medium.com/@ossiana.tepfenhart/as-the-wind-blows-is-the-most-horrifying-film-i-ve-ever-watched-7ff4145230b3"
|
||||
author:
|
||||
- "[[Ossiana Tepfenhart]]"
|
||||
published: 2024-07-01
|
||||
created: 2024-10-29
|
||||
description: "Tonight, my husband asked me to look for a horror movie that made you think. I’ve been reading history hoping to push out an idea or two, so I decided to think back to my commonplace book, where I…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## I had to bathe the first time I watched it and also lost my lunch. My husband tapped out halfway through.
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@ossiana.tepfenhart?source=post_page---byline--7ff4145230b3--------------------------------)
|
||||
|
||||

|
||||
|
||||
via IMDB
|
||||
|
||||
Tonight, my husband asked me to look for a horror movie that made you think. I’ve been reading history hoping to push out an idea or two, so I decided to think back to my commonplace book, where I kept a short list of movies that really had an impact on me.
|
||||
|
||||
There, I saw *When The Wind Blows* marked with a star next to it.
|
||||
|
||||
I couldn't place the name immediately, so I looked it up online. I quickly remembered which movie it was. To date, it’s the only movie I ever had a hard time stomaching — to the point that I actually vomited and had to bathe for half an hour.
|
||||
|
||||
## ‘When the Wind Blows’ is a cartoon done to illustrate the horrors of nuclear war.
|
||||
|
||||
Made in 1986, *When the Wind Blows* featured an incredible collection of hyper-talented people. It’s based off a children’s (??) graphic novel book by award-winning author Raymond Briggs, written in 1982.
|
||||
|
||||
The soundtrack was done by none other than Ziggy Stardust himself, David Bowie. And the animation? It combines live action, carefully-crafted dioramas, and uniquely European cartooning to create truly striking scenes.
|
||||
|
||||
Between all this talent, it’s not surprising that this team was able to make a movie that grabs you by the throat, punches you in the stomach, and drop kicks your face, leaving you in stunned silence by the end of the film.
|
||||
|
||||
I just…don’t think I was prepared for how hard it hit.
|
||||
|
||||
## The story follows Jim and Hilda Bloggs, an elderly British couple who get stuck in a nuclear holocaust.
|
||||
|
||||
Half of the movie is spent humanizing the Bloggs. We all have met people who are prim, proper, and deeply entrenched in the belief of government capabilities.
|
||||
|
||||
Jim Bloggs spends most of the first half of the film preparing for the nuke, joyfully optimistic that it will be a quick fluke or that it will “all blow over soon.”
|
||||
|
||||
He misguidedly paints the windows white, removes doors from his home, and tries to get supplies. Hilda, a more proper lady, gets annoyed at him as he preps while she tries to clean the house. (I can relate to her.)
|
||||
|
||||
You just start to like them as a couple. You see their flashbacks, the way they talk to their son on the phone, and how much they reminisce about World War II. In essence, they’re everyone’s old-school British gran and gramps.
|
||||
|
||||
If you didn’t read the summary, you’d almost feel like war would blow over and that you’d just see them have a good laugh about it. That, sadly, doesn’t happen.
|
||||
|
||||
## The horror truly starts when the bomb drops — and they both remain blissfully unaware they are already dead.
|
||||
|
||||
I don’t mean that they just died in the blast. They survive it. The movie follows their every step as they remain optimistic that people will come for them, drink radioactive tea, and get sicker every day.
|
||||
|
||||
The Bloggs truly believe, up until the last couple of minutes, that they’ll survive. They are just waiting to get better, thinking that their sickness is just a “terrible headache” and a bad stomach ache.
|
||||
|
||||
As the movie progresses, you get the sinking feeling that the lovely couple you grew to enjoy aren’t going to make it. You start feeling sick to your stomach as you watch them weaken, wishing that you could yell at them through the screen.
|
||||
|
||||
And yet, you know that it’s futile. The amount of radiation that hit them was bound to kill them. If the rads from the blast didn’t, the tea made with poisoned water sure as hell would.
|
||||
|
||||
The eerie quietness of some of the movie’s scenes makes you feel like you’re choking on air. Slowly, every bit of the movie makes you feel a little more tense and nervous. And yet, you can’t do anything but watch them struggle.
|
||||
|
||||
At one point, Jim Bloggs seems to realize they’re both going to die. He refuses to let Hilda, his beloved wife, wallow in sorrow. He does everything he can to keep up both their hopes — a desperate move of true love.
|
||||
|
||||
The film ends with them both crawling into sacks, taking their last breaths, uttering a prayer, making sure their bodies will be found by whatever recovery crews are sent to get them.
|
||||
|
||||
## There’s something so undeniably horrifying and heartbreaking about this movie.
|
||||
|
||||
I can’t figure out which element of *Where the Wind Blows* makes it such a skin-crawling, squicky, and utterly nightmarishly heartbreaking movie. It’s hard to put into words.
|
||||
|
||||
Maybe it’s Jim’s unshakeable optimism. Maybe it’s their obliviousness to the seriousness of the situation. Or, perhaps it’s the fact that the viewer is left to piece together what is going to happen because there’s no narrator.
|
||||
|
||||
If you get teary-eyed at movies, this movie might do that to you. It (surprisingly) didn’t do that to me. I just ended up throwing up and having to bathe because the movie somehow just made me want to crawl out of my skin that badly.
|
||||
|
||||
My husband was unable to finish the movie. It made him so uncomfortable and anxious that we had to stop watching halfway through. It also didn’t help that I was starting to get queasy, either.
|
||||
|
||||
==If I’m going to be honest, this is one work of high art that many of us can only experience once — if we can even stomach it at all.==
|
||||
|
||||
## During a time when the world seems to edge closer to nuclear war, ‘When the Wind Blows’ is terrifying.
|
||||
|
||||
What’s truly scary about this movie is that it’s not entirely fiction. It’s based on the effects and stories of people who survived Hiroshima and Nagasaki. The novel itself was focused on real medical side effects of radiation poisoning.
|
||||
|
||||
While the story itself was hypothetical and geared toward Brits of the 80s, *When the Wind Blow*s is still technically a documentary about nuclear war. And it’s one that I feel every single world leader should be watching right now.
|
||||
|
||||
So, if you’ll excuse me, I need to have a bath. I don’t feel so good.
|
||||
@@ -0,0 +1,94 @@
|
||||
---
|
||||
title: "“I Miss The Old Type Of Misogyny,” She Said"
|
||||
source: "https://medium.com/bitchy/i-miss-the-old-type-of-misogyny-she-said-abcc5889d722"
|
||||
author:
|
||||
- "[[Ossiana Tepfenhart]]"
|
||||
published: 2024-07-03
|
||||
created: 2024-10-29
|
||||
description: "One was slightly older than me, the other was around 20 years old. The younger one seemed distraught about dating in general. At one point, she said, “I don’t know what happened. Your generation had…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
## Misogyny has always been there, but lately, it’s been different
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@ossiana.tepfenhart?source=post_page---byline--abcc5889d722--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/bitchy?source=post_page---byline--abcc5889d722--------------------------------)
|
||||
|
||||

|
||||
|
||||
Photo by [Austrian National Library](https://unsplash.com/@austriannationallibrary?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)
|
||||
|
||||
Lately, I overheard two women talking while I was at the gym the other day.
|
||||
|
||||
One was slightly older than me, the other was around 20 years old. The younger one seemed distraught about dating in general.
|
||||
|
||||
At one point, she said, “I don’t know what happened. Your generation had men who didn’t see us as people but still tried to protect us. My generation has men who really, truly hate us.”
|
||||
|
||||
This sentiment stuck with me that entire day. Looking back to what life was like in my 20s, I realized that she was right. Misogyny was always there, but it changed.
|
||||
|
||||
## The science backs up that most human beings don’t see women as people.
|
||||
|
||||
I recently found out that there was a study done on how men perceive women — and it shook me to my core. A study from the [European Journal of Social Psychology](https://onlinelibrary.wiley.com/doi/10.1002/ejsp.1934) revealed that men see men as full human beings, but see women as a collection of body parts.
|
||||
|
||||
The study itself focused on what parts of the brain lit up when they saw women in bikinis versus men. Their brains registered women as body parts. Men, on the other hand, were seen as human beings.
|
||||
|
||||
In other words, their brains went to “local processing,” which is what happens when we see items like cars or books when they see women. For images of men, their brains use “global processing,” which is what happens when you see people or beloved pets.
|
||||
|
||||
Incidentally, women processed women the same way in many cases. So, if you feel like you’re always objectified as a woman, you’re correct. People’s brains literally don’t see you as a person.
|
||||
|
||||
## Misogyny and objectification were always there, but there used to be a different mainstream type.
|
||||
|
||||
You might have heard of the term “benevolent misogyny” or “[benevolent sexism](https://www.sciencedirect.com/topics/psychology/benevolent-sexism#:~:text=Benevolent%20sexism%20refers%20to%20attitudes,Glick%20%26%20Fiske%2C%201996\).).” This is a type of behavior that occurs when a man truly thinks that women are less than them and weaker than them.
|
||||
|
||||
Benevolent sexism involves things like men opening doors for women because they think women are weak or assuming that women need to be protected at all costs. This also can be seen in Sugar Daddy living as well as tradwife circles.
|
||||
|
||||
Men who are benevolent sexists don’t really *hate* women, per se. They just don’t see them as people and try to treat them like weak, possessable objects.
|
||||
|
||||
They don’t like women because they don’t see them as human beings, but they don’t *hate* them. ==Benevolent sexists are the men who put women on a pedestal, assume they’re “nurturing,” and assume all women want kids.==
|
||||
|
||||
Benevolent sexists just don’t really take their feelings into account and assume that they know women better than women know themselves. This is why men of the past would restrict women as a way to “protect them.”
|
||||
|
||||
Some genuinely believed they were doing the right thing because they genuinely, truly didn’t see women as anything but overgrown kids. That doesn’t mean it’s good. It still hurts and undermines women.
|
||||
|
||||
## Recently, more and more women have started to talk about the spike in misogyny online.
|
||||
|
||||
While benevolent sexism has a veneer of positivity, there’s another form of sexism that doesn't even try to hide the hate. That’s known as “malevolent sexism,” “hostile misogyny,” or “hostile sexism.”
|
||||
|
||||
Hostile sexism is exactly what it sounds like: aggressive hatred of women and actions taken to hurt them. Hostile sexism happens when men *hate women.* Men who are hostile sexists might want to sleep with women, but they don’t like them.
|
||||
|
||||
Men who partake in this type of sexism often spout incel rhetoric, may attack women who say no to them, will vote against women’s rights, and also assault them.
|
||||
|
||||
## It doesn’t take much to see how much hostile sexism overtook men in recent years.
|
||||
|
||||
Sexism of all kinds is bad, but there are different shades of sexism that women experience. In the past, a common trope among men was the benevolent sexist who put women on a pedestal and got dumped.
|
||||
|
||||
Most women met guys who were misguided but well-meaning in their sexism. However, the number of benevolent sexists started to wane sometime around the 2010s.
|
||||
|
||||
That’s the start of the era when malevolent sexists took center stage.
|
||||
|
||||
When I was 18, I was surrounded by benevolent sexists who truly believed vaginas get looser with more partners and that women all want babies. They never reconciled their lust or like for me with my checkered reputation.
|
||||
|
||||
With that said, most of the guys who were problematic for me back then honestly believed they were good men and that I was just a defect that needed to be “fixed” by the right guy.
|
||||
|
||||
Rare was the moment where I would run into a man who really, truly *loathed* women enough to lash out at them. I remember a time in my life where it was common to hear of women who never experienced a Nice Guy lashing out at them.
|
||||
|
||||
I don’t see that anymore. These days, hostile misogyny is *everywhere* I look. Every woman I speak to, whether cis or trans, seems to have a horror story of a man who literally can’t seem to hide the seething, burning hate they have for women.
|
||||
|
||||
## If women had to choose a form of sexism, it’s obvious most would choose benevolent sexism.
|
||||
|
||||
Thankfully, we don’t have to choose our poison. Women worldwide are saying they are fed up with having to choose the lesser of two evils. They’d rather stay single, riot, and protest to regain their rights.
|
||||
|
||||
It shouldn’t have to be this way.
|
||||
|
||||
A lot of us grew up with the idea that men loved women, but was it ever really love if they can’t handle women being on the same playing field as them? I honestly don’t think so.
|
||||
|
||||
It’s a shame that we had to watch misplaced care turn into such seething hate as women assert their right to be seen and treated as human beings. And yet, here we are — almost grieving the brand of sexism that, at the very least, had a caring mask on it.
|
||||
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: "“The professors are the enemy”: J.D. Vance on higher education"
|
||||
source: "https://bryanalexander.medium.com/the-professors-are-the-enemy-j-d-vance-on-higher-education-7db4b7a628b0"
|
||||
author:
|
||||
- "[[Bryan Alexander]]"
|
||||
published: 2024-07-18
|
||||
created: 2024-10-29
|
||||
description: "Greetings from a somewhat less infernal Virginia July day. A storm front broke through our heat last night, which is a relief to all of us, especially the cats. I’m writing in a hurry, as I’ve got a…"
|
||||
tags:
|
||||
- "clippings"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://bryanalexander.medium.com/?source=post_page---byline--7db4b7a628b0--------------------------------)
|
||||
|
||||
> \[W\]e have to honestly and aggressively attack the universities in this country.
|
||||
>
|
||||
> \-JD Vance
|
||||
|
||||
Greetings from a somewhat less infernal Virginia July day. A storm front broke through our heat last night, which is a relief to all of us, especially the cats.
|
||||
|
||||
I’m writing in a hurry, as I’ve got a stack of meetings today (including [a Future Trends Forum community session](https://shindig.com/login/event/fall2024)!) and am hitting the road tomorrow (speaking to [the NACUFS national conference](https://www.nacufs.org/Events/UpcomingEvents/ArtMID/17279/ArticleID/2527/NACUFS-2024-National-Conference-Louisville-Kentucky) in Louisville, then [the SCUP annual conference](https://www.scup.org/conferences-programs/scup-2024-annual-conference/) in Philadelphia; I’m happy to meet with readers in those cities), but I wanted to share notes on a current event which might be significant for higher education.
|
||||
|
||||
This week the Republican party named Ohio senator [J.D. Vance](https://en.wikipedia.org/wiki/J._D._Vance) as its vice presidential candidate for the fall election.
|
||||
|
||||
What might this mean for higher education?
|
||||
|
||||
On the one hand, we can dismiss vice presidents as traditionally useless appendages on the presidency, famously not worth a warm bucket of spit, etc. On the other, we’re in a very intense election season and vice presidential selection is always a strategic move. The veep candidate signals many things to the electorate, from geographical importance to demographic representation.
|
||||
|
||||
Today I want to single out Vance’s documented attitude towards higher education. Again, he’s only the VP candidate, and Trump is famously egocentric, so this might not turn out to have any impact over the next four months or years. ==But Republicans nationwide are== ==[increasingly hostile](https://bryanalexander.org/horizon-scanning/american-views-of-higher-education-continue-to-worsen/)== ==to academia, and so would likely be receptive to campus-bashing campaign messaging.==
|
||||
|
||||
Please note that the below summarizes and lightly reflects on Vance’s stated views. I do not endorse them myself. That should be obvious, but this is an intense election season and unless I say so, someone might accuse me of complicity or support.
|
||||
|
||||
Let’s start with [a 2021 speech](https://youtu.be/0FR65Cifnhw?si=_aDK67ZOnTJ8L21p) by Vance to [the National Conservatism Conference](https://nationalconservatism.org/natcon-2-2021/). I’ll summarize it and share some thoughts after the embed:
|
||||
|
||||
This is something like a declaration of war. Vance begins by assuming the decades-old culture war trope of conservatives battling progressives for control of institutions, then targets academia as a major battleground.
|
||||
|
||||
Note that he has a more sophisticated model of higher education than we see in most right-wing accounts, describing campuses as sites of knowledge production and dissemination in addition to their teaching mission. The latter includes something like a version of (unnamed) liberal education, where institutions prepare students for a difficult to anticipate future. It’s a model with a strong claim for academia’s impact on the nation: “We live in a world effectively made by university knowledge.” As an example the would-be vice president then slams Anthony Fauci, quickly gesturing to COVID lockdowns, unpopular with Republicans, in order to assign his public influence to his academic training. (Recall that this speech occurred in 2021)
|
||||
|
||||
Vance goes on to charge higher education with being hypocritical in the pursuit of truth. More, “our universities transmit not knowledge and not truth but deceit and lies,” citing transgender research and medical care. Several times he calls out academics for canceling students and faculty for politically unpalatable speech. He cites a story about a University of Texas professor attacked for publishing a paper about using AI to anticipate some scientific research, but I can’t find any accounts of this (can anyone?).
|
||||
|
||||
The now vice presidential candidate builds up an economic or materialist charge against academia, alleging that it exploits people or its teachings further economic damage. He attacks “college for everyone,” hinting that that social goal benefits campuses economically while speeding the destruction of American jobs. He mocks (presumably) campus-based climate justice as a kind of perverse globalization, sending materials to Asia and worsening the environment. He hits at student debt repeatedly, while damning academics for standing against people who work with their hands.
|
||||
|
||||
Vance criticizes DEI (or “critical race theory”) for working on elite representation “instead of invest\[ing\] in black communities all across our country — or frankly white communities all across our country.” In his vision university-driven diversity efforts are about “rob\[bing\] the American people blind and… to tell them to shut the hell up about it if they dare complain.” Those drivers of DEI are, or are working for, “our enemies.” He extends this to K-12 education, blaming academia for teaching the teachers. (“Telling a little girl that she’s evil because of her skin color is disgusting and vile and as a Christian I’d say Satanic”) Vance also blames antiracism for mischaracterizing opposition to migration through a story about an Ohio grandmother fearing imported fentanyl, although he doesn’t make the academic connection explicit there.
|
||||
|
||||
Vance’s last words are a quote by Richard Nixon: “the professors are the enemy.”
|
||||
|
||||
To sum up: Vance calls for a major, aggressive conservative drive against higher education. He charges academia with mendacity, hypocrisy, with causing and aiding economic misery, and with unfairly teaching division.
|
||||
|
||||

|
||||
|
||||
Is this speech a one-off? It was back in 2021, after all, which feels like a very different time. Given Vance’s changing attitudes, this call for war could recede into the past. But he has echoed and amplified its themes since.
|
||||
|
||||
[In an interview](https://europeanconservative.com/articles/dreher/i-would-like-to-see-european-elites-actually-listen-to-their-people-for-a-change-an-interview-with-j-d-vance/) Vance introduces education when discussing generational differences: “Millennials are really worried that their kids have a viable pathway to the middle class. Are they being educated at their schools, or indoctrinated into weird gender ideologies?” Questioned on the point, he goes further, starting by linking DEI to Harvard’s firing president Gay:
|
||||
|
||||
> What happened at Harvard was, in some ways, confirmation of the thesis, right? We saw identity elevated over ideas. There’s this weird way in which, obviously mediocre people are protected because they fit a particular political narrative. What happened at Harvard is a perfect manifestation of the idea that the universities are not so much after the pursuit of truth, as they are about enforcing dogma and doctrine.
|
||||
|
||||
He adds that the Gay story shows universities to be weak: “One takeaway from what happened at Harvard is that these academic institutions are just paper tigers. We should be really aggressively reforming them in a way to where they’re much more open to conservative ideas.”
|
||||
|
||||
Then he admires Hungary’s president Orban for taking action against that nation’s universities:
|
||||
|
||||
> the closest that conservatives have ever gotten to successfully dealing with left-wing domination of universities is Viktor Orbán’s approach in Hungary. I think his way has to be the model for us: not to eliminate universities, but to give the a choice between survival or taking a much less biased approach to teaching…
|
||||
>
|
||||
> \[W\]hether it’s the incentives that you put into place, funding decisions that are made, and the curricula that are developed, you really can use politics to influence culture. And we should be doing more of that on the American Right.
|
||||
|
||||
Note the threat enclosed in the word “survival.” That’s a world of… possibilities.
|
||||
|
||||
[A recent article](https://www.washingtonpost.com/world/2024/07/17/trump-vance-project-2025-orban-hungary/) quotes Vance thusly in another interview:
|
||||
|
||||
> “I’m not endorsing every single thing that Viktor Orban has ever done. I don’t know everything he’s ever done,” Vance said in a recent CBS interview. “What I do think is on the university — on the university principle, the idea that taxpayers should have some influence in how their money is spent at these universities. It’s a totally reasonable thing. And I do think that he’s made some smart decisions there that we could learn from in the United States.”
|
||||
|
||||
[Politico quotes](https://www.politico.eu/article/j-d-vance-donald-trump-mate-us-isolationism-brussels-europe-relations/) Vance in [a related discussion](https://www.youtube.com/live/PMq1ZEcyztY?si=cKhF0rElfyOgAyPJ), where he calls for deinstitutionalizing DEI ideology with inspirations from deNazifying Germany and the deBaathification of Iraq:
|
||||
|
||||
> Vance also called for the “de-woke-ification” of schools and cited Orbán as inspiration in an [appearance](https://www.youtube.com/watch?v=PMq1ZEcyztY&t=1564s) on a right-wing podcast last September.
|
||||
>
|
||||
> “What do you do at the Department of Education? Well, you do what Viktor Orbán has done in Hungary, which is basically say, ‘You’re not allowed to teach critical race theory anymore, you’re not allowed to teach critical gender theory anymore … You’re not allowed to do those things and get a dollar of federal money or a dollar of state money.’”
|
||||
|
||||
In Inside Higher Ed [Katherine Knott observes](https://www.insidehighered.com/news/government/politics-elections/2024/07/16/trump-taps-jd-vance-sharp-critic-higher-ed-vp) that Vance has tries to turn his views into law in the United States Senate:
|
||||
|
||||
> He’s [introduced](https://www.vance.senate.gov/wp-content/uploads/2023/09/Bill-Text_SAEFFCA.pdf) legislation to ratchet up enforcement of federal laws that require disclosure of foreign donations to colleges and universities. He also [sponsored a bill](https://www.vance.senate.gov/press-releases/senate-democrats-block-vance-legislation-to-tax-large-university-endowments/) that would increase the excise tax on endowments’ net investment income from 1.4 percent to 35 percent for secular, private colleges and universities. The tax was necessary, he said, to rein in a university system that “has gone so insane.”
|
||||
|
||||
Speaking to those bills, the senator explained:
|
||||
|
||||
> “Why is it that we allow these massive hedge funds pretending to be universities to enjoy lower tax rates than most of our citizens, people who are struggling to put food on the table and buy Christmas presents this season?” he said on the Senate floor in December. “It’s insane. It’s unfair. And I think we ought to fix it in this chamber now.”
|
||||
|
||||
[One recent article notes](https://www.politico.com/news/2024/07/15/jd-vance-agenda-policies-00168467) his support for taxing university endowments continues.
|
||||
|
||||
[Education Week adds](https://www.edweek.org/policy-politics/trumps-vp-pick-what-we-know-about-j-d-vances-record-on-education/2024/07) that Vance criticizes what he sees as China’s undue and malevolent influence on higher education:
|
||||
|
||||
> One bill [would establish stricter requirements for colleges and universities](https://www.congress.gov/bill/118th-congress/senate-bill/2856?s=6&r=3) contracting with or accepting donations from “foreign entities,” which he said would help keep the Chinese Communist Party from “exerting financial influence over American educational institutions.”
|
||||
|
||||
This connects with Project 2025’s clear focus on China as America’s prime enemy. Vance also floated a bill about universities hiring undocumented workers: “The second bill [would prohibit public colleges and universities](https://www.congress.gov/bill/118th-congress/senate-bill/3978?s=6&r=1) from employing undocumented immigrants by taking away federal funding.”
|
||||
|
||||
On the economic front, Vance has expressed [divided views](https://www.cnbc.com/2024/07/16/trump-vp-vance-on-student-loan-forgiveness.html) on student loan forgiveness. On the one hand he [opposes](https://twitter.com/JDVance1/status/1519292884314431490) it in class terms:
|
||||
|
||||
> Forgiving student debt is a massive windfall to the rich, to the college educated, and most of all to the corrupt university administrators of America. No bailouts for a corrupt system. Republicans must fight this with every ounce of our energy and power.
|
||||
|
||||
At the same time, “\[i\]n May, he [helped introduce legislation](https://www.coons.senate.gov/news/press-releases/senator-coons-colleagues-introduce-domenic-and-eds-law-to-address-student-loan-debt-for-parents-of-children-who-become-disabled) that would excuse parents from student loans they took on for a child who became permanently disabled.”
|
||||
|
||||
Summing up, as a senator JD Vance has been broadly and clearly critical of higher education, urging political and perhaps cultural action against elite and other universities. He has developed this critique in connection with his other concerns, many of which connect with today’s Republican party.
|
||||
|
||||
Now, let’s take a step back. All of this might not be meaningful, since Vance is running for vice president, after all. More importantly, he campaigns on a ticket with a man who is notoriously egocentric. Trump is clearly the senior partner in the relationship and it is to him we should turn to see what a new administration will try to do to academia. If Trump ignores higher ed in his second term, it’s hard to imagine what Vance would do. And Vance didn’t mention education in his admittedly very short acceptance [speech](https://youtu.be/1if1ufZY6nI?si=iTOeS0_UAQHXnIZp) at the Republican convention.
|
||||
|
||||
However, the Ohio senator may still impact colleges and universities. Trump might indeed seek to change postsecondary policy and/or to stir up cultural and local political actions against campuses. It seems likely that Vance could play an attack dog role there.
|
||||
|
||||
There are also six months between now and the potential start of a new administration. Vance should be an energetic campaigner in this period. We shouldn’t be surprised if he returns to his higher education arguments in the field. That may have downstream impacts on culture, local or state politics, and perhaps next year’s Congress.
|
||||
|
||||
Additionally, as public intellectual (no, I haven’t finished *Hillbilly Elegy* yet) and as politician, Vance could keep the heat on higher education through media appearances, lobbying, writing, and more.
|
||||
|
||||
We should keep a close eye on this senator, author, and vice presidential candidate.
|
||||
|
||||
*photo by Gage Skidmore from Surprise, AZ, United States of America — J. D. Vance, CC BY-SA 2.0,* [*https://commons.wikimedia.org/w/index.php?curid=149633340*](https://commons.wikimedia.org/w/index.php?curid=149633340)
|
||||
Reference in New Issue
Block a user