Growing up, I was never much of a reader. I would do quite literally anything 
but read a book. It was boring, not for me, and not that important. 
 It wasn’t until half way through college when I began to treat reading
seriously. And over the years, I’ve gradually increased the number of
 books read. Just like training a muscle, reading more made it
easier to read…
I’ve been writing in Markdown for a while now. I use it to write this blog, take
notes, and all sorts of developer documentation. Over the course of eight years,
I’ve never used reference links. What a shame! 
 In Markdown you typically create a link by doing the following: 
 Here is a link to my [ blog ]( https://loganconnolly.com ).
 Now this is fine for small…
The fate of programming is written on the wall: 
 
 AI is going to take your job! 
Agents make me a 10x developer! 
If you don’t keep up, you’ll be left behind! 
 
 However, despite the threats to my planned obsolescence , I believe now is
the perfect time for me to slow down. 
 Because this sort of fear mongering will only distract me from my…
Python decorators are not the easiest to write type annotations for. So
normally, I’d just skip the annotations altogether. As an example, here’s a
decorator that prints out debug information: 
 def debug ( func ): 
 def wrapper ( * args , ** kwargs ): 
 print ( f 'Called { func . __name__ !r} args= { args } kwargs= { kwargs } ' ) 
 result = func ( * args , **…
Yes, another one bites the dust . After long
consideration, I’ve decided to delete my LinkedIn profile. I did this for a
number of reasons, but I’ll try to summarize the main ones below. 
 signal to noise 
 Maybe it was just my algorithm, but it was rare that I’d see a post that truly
interested me. Most of the time, I was simply doomscrolling through a bunch…
After hosting a website for several years, I’ve learned a lot along the way.
I’ve now settled on a “simple” way to host and wanted to share. I hope it’ll
encourage others to create their own website and demystify what it takes to get
started. 
 
 

 Components you’ll need to handle: 
 
 static site generator : generates static…

 If it walks like a duck and it quacks like a duck, then it must be a duck 
 
 This proverb is so ubiquitous in programming that a type system concept is named
after it: duck typing . It suggests that if an object behaves like a certain
type, it is that type. In this case, an object is considered a duck if it
supports the ability to walk and quack . 
 When I first…

 “new year, new me!” - everyone, everywhere, all at once 
 
 Although I learned a lot in 2024, my approach to learning was a tad
unstructured. Most of my learning happened on the job, a structured environment
where planning and consistency are required. Whereas in my personal development,
I lacked the discipline to plan a path forward. By not having a plan, it…
I’ve always enjoyed writing Python, but have absolutely dreaded the package
management ecosystem. It seems that there’s never been a right way for
handling dependencies. This is particularly frustrating when teaching Python
because there are different recommendations depending on the year of the
article. 
 At a bare minimum you need: 
 
 an installation of…
Have you ever seen this at the top of a Python module? 
 T = TypeVar ( 'T' ) 
 TN = TypeVar ( 'TN' , int , float ) 
 TS = TypeVar ( 'TS' , bound = Sized ) 
 TD = TypeVar ( 'TD' , Decimal , float ) 
 And then scratched your head, wondering what it means? 
 Well these are generic parameter types - or at least the old way of defining
them. In June 2022, Eric Traut proposed…
Have you ever proposed an important refactor only to be told: 
 
 “Yes, we should definitely do that, but not now” - the bizzness 
 
 So, you find yourself in the next cycle. Your focus shifts away from the
refactor to now shipping the next feature. Sooner rather than later, that
important refactor that you identified is gone. 
 This is not surprising as new…
Recently, I went through one of my old personal projects to see if I can finally
get it deployed. It’s a common theme: I develop a project, learn a lot, and then
abandon it before deploying. There are many reasons for this, but to name a few: 
 
 not wanting to pay for hosting until I am “ready”; 
 wanting to make sure that I can securely administrate the…
This week, I made the difficult decision to move my projects away from GitHub.
Over the past three years, I invested a lot of time on the platform, working on
personal projects and contributing to open source (OS). 
 
			 Contribution history at the time of decision. 
		 
 

 So what gives? Why am I leaving? And where am I going? 
 Why I am…
I drew inspiration for this project from a variety sources. First, from the
movie Moneyball based off the book by Michael Lewis . Then from
 Analytics Edge , a course offered by edX and MIT, where we went through how
the Oakland A’s used statistics to gain a competitive edge over opponents. 
 After the course, I thought why not do it for Lacrosse, a sport that I…
The data that I used for this analysis is hosted at Kaggle . The dataset
caught my attention because I enjoy plotting data on maps. I recently discovered
the sf package in R, so I used this as an opportunity to learn it. Find out
more about the package here at https://github.com/r-spatial/sf . 
 The dataset deals with the German 2017 Election Results and how votes…
The State of the Union address was originally intended to be an address given by
the President to Congress to report on the condition of the nation and what the
President believes the nation’s priorities should be going forward. 
 It has now shifted towards an address to not only Congress but the American
people as well. I thought these addresses would be a great way to practice…