How to Set Up a Local Python Development Environment for Building on ICON

Recently, I started to notice an uptick in the number of community members interested in building on ICON. I’ve been developing my own ICON APIs and bots for a little over a year now, and I recall it was pretty difficult to get started. I was a total beginner when it came to programming, and there weren’t any project-based tutorials that walked through the entire development process from setting up a local environment to deploying the finished product.

Continue Reading →

How to Find Broken Links With Python 📝

I was fixing some broken links on our blog at work when I decided it would be fun to make my own broken link checker. It didn’t end up being very complicated at all, and I’m glad that I no longer need to open a web browser and navigate to an ad-infested website to check if a page has broken links.

Here’s the code below if you want to use it.

import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor

def get_broken_links(url):

	# Set root domain.
	root_domain =
	# Internal function for validating HTTP status code.
	def _validate_url(url):
		r = requests.head(url)
		if r.status_code == 404:
	# Make request to URL.		
	data = requests.get(url).text
	# Parse HTML from request.
	soup = BeautifulSoup(data, features="html.parser")
	# Create a list containing all links with the root domain.
	links = [link.get("href") for link in soup.find_all("a") if f"//{root_domain}" in link.get("href")]
	# Initialize list for broken links.
	broken_links = []
	# Loop through links checking for 404 responses, and append to list.
	with ThreadPoolExecutor(max_workers=8) as executor:, links)
	return broken_links

How to Rebalance Loans and Retire bnUSD on Balanced

Recently, there’s been a lot of buzz in the ICON community regarding rebalancing of loan positions on Balanced. A rebalance happens when ICX collateral is sold for bnUSD to pay off a portion of a loan – this process can also be referred to as “retirement of bnUSD”. It’s important to note that rebalancing has nothing to do with how close your loan is to the reward threshold. Instead, rebalancing is used to keep bnUSD pegged to 1 USD as close as possible, and it occurs when there is an economic incentive to do so (e.g. the difference between 1 bnUSD and 1 USD crosses a risk threshold).

Continue Reading →

The Dangers of Marginalization

To be honest, I had never heard the term “marginalization” in real life prior to 2020. Nowadays, it appears to be the woke left’s catch-all phrase to describe non-white males. Even worse, marginalization has evolved into the default excuse or explanation for when a non-white male experiences a non-ideal outcome. I understand the appeal, especially in the current political climate. In a society that prioritizes subjective wokeness over objective reality, it’s easy to blame a poor outcome on marginalization instead of digging deeper.

Continue Reading →

Jason Fried Apologizes on Behalf of Basecamp 🔗

Jason Fried:

Last week was terrible. We started with policy changes that felt simple, reasonable, and principled, and it blew things up internally in ways we never anticipated. David and I completely own the consequences, and we’re sorry. We have a lot to learn and reflect on, and we will. The new policies stand, but we have some refining and clarifying to do.

Honestly, I didn’t think we’d ever see an apology from Basecamp because there’s nothing worthwhile to apologize for, and apologizing to the woke left is something that should be avoided at all costs.

  1. Basecamp is a for-profit business that pays employees to perform work. If Basecamp feels that political discussions at work reduce productivity and increase hostility, asking employees to refrain from such discussions is reasonable. Asking employees to focus on work at work is not immoral, racist, privileged, (insert woke buzzword here), or something to apologize for.
  2. I’m not sure who the target audience for this apology is. The offended parties will certainly take this apology and put some woke spin on it to make Basecamp look even worse.

« Permalink »