Wednesday, May 30, 2018

Random Thoughts on Rain

The rain comes in sheets now more often than it did before.  Sometimes warm.  Sometimes cold. 

Sometimes it washes away the heaviness that's fallen on the city, and sometimes the drops are just nails holding it in place. 

I've always wondered how much water the lake can hold until it begins to behave like the ocean.  I always smiled smugly to think that living a quarter mile away from the lake I was safe from any fury because it's not the ocean.  Now I'm not so sure.  Long familiar landmarks are gone now, swallowed by the great freshwater sea. 

The concept of water is so infuriating.  Too much water and we're under flood warnings.  Too little and it's a drought.  The line is so thin too.  If it rains for eight weeks and then doesn't for the next eight, that doesn't mean we've hit equilibrium.  It means we've suffered through a deluge and a drought. 

But, at least here, far inland, the lake will hold through such phenomena.  And that's what scares me.  Humans are great at taking everything for granted until they can't anymore. One quadrillion gallons of water (1 with 15 zeros) and it can probably vanish in an instant when we get too greedy.  Maybe two quadrillion if nature gets angry enough at us and shows us what it's capable of.

I'll probably sleep well tonight listening to the plink, plink on the roof.  But not too well.

Saturday, May 26, 2018

Crossroads

As I continue wading through my initial Rogers Park research, some of the landmarks I've come to take for granted in 2018 - or simply as part of modern America - have a much more enduring story than I would've initially taken for granted.

The main shocker for me is the origin of Ridge Boulevard and Rogers Avenue.  Chicago, when it was rebuilt after the Great Chicago Fire in 1871, was built on a very regimented grid.  Every city block - meaning every marker that increases the street number by 100, not every street as hapless tourists and clueless locals come to find out - is 1/8 of a mile. There's a minor exception on the very near south side of the city, but it quickly corrects after mile two south of downtown.

So, from the city center to the farthest major street on the north side of the city - Howard, the generally accepted northern boundary of the city and a major street in Rogers Park - the distance is exactly 9.5 miles.  The street number for Howard is 7600, which is, not coincidentally, 9.5 times the eight blocks required to form a mile in Chicago.  Devon, the generally accepted southern boundary of Rogers Park has a street address of 6400 and is - you guessed it - eight miles north of the city center.

Ridge and Rogers don't follow this logic.  Indeed, there are a few "diagonal" streets - mostly on the North side - that buck the city grid layout.  Discovering their quirks may be a good side blog post, but the reasons for Ridge and Rogers are known (at least according to Wikipedia) - they're old Pottawatami Indian trails.  This makes sense - Ridge heads in a predominantly north-south direction, while Rogers heads predominantly east-west, so these were likely the trails the Indians used to head in those respective directions. 

Still, it's amazing to me that modern infrastructure in America (the land that often prides itself on the "newness" of its traditions) is based off markers that have been around for hundreds, if not thousands, of years.  This reminds me of a story (I'm not sure if it's apocryphal) relating the space shuttle to a horse's ass.  If it's true, it's a telling reminder that for as much credit humans give ourselves about our ingenuity, we're still slaves to the familiar.

Wednesday, May 23, 2018

Let's Write a Paper!

I've chosen my first topic for unfreezing my writer's block.  Originally, I thought about writing something on the Old West but the topic seems a little expansive and Wyoming isn't my favorite state (just kidding, Wyoming - Stay Boring and Hyper-conservative), so I decided to table that for now.  I do wanna work the history angle for now, as it doesn't require much in the way of emotional stakes.

Instead, I've decided to write about my neighborhood, Rogers Park.  I'm aware of some of the history, but I can probably dig further and find some useful nuggets.  Rogers Park is certainly an eccentric place.  It fights fiercely for its culture of tolerance and diversity, even in situations where it doesn't necessarily meet those standards.  It's a got strong aversion to gentrification, even in cases where a reasonable compromise may benefit all parties involved.  Despite its flaws and its location in Chicago's far north orbit - residents of Naperville taking an express train can actually get downtown faster than I can when taking an 'L' (though there are many qualifications on both sides of that), I've called it home for 13 years.  So, I'm not being too frivolous in deciding to select it for a topic.

I'll do this "high school paper" style and with that in mind, here are a few guidelines:

  • I'm shooting for a post (or series of posts) between 3000 and 5000 words.  At an average reading speed of 250 wpm that will take you, dear reader, somewhere between 12 and 20 minutes to read it.
  • Because it's a high school type paper, I'm not expecting to uncover original material.
  • I'm going to inject my own writing style and asides into the paper, which was always discouraged in high school.  But I'm not actually in high school anymore and am not receiving a grade for this, so I have some latitude.
  • I'll source my material from at least three sources.
  • I'm probably not going to annotate references to my sources throughout the post(s), but I will provide a bibliography.
  • I'll give myself a due date of June 30th for the post(s), so I'm working toward an actual goal.
  • I'll post my working notes in blog posts in the interim, so I'm not just going to go dark.

Just How Dense is Rogers Park?

I've started researching Rogers Park for my magnum opus, and as I sort of expected, I'm not really sure where I'm going to go with this.  As is the case with every bad student, my initial research went straight to an encyclopedia.  One of the first facts I looked up was population and population density to compare to other places in my life.  The following really has no basis on any factual narrative I wanted to construct outside of my own life, but this is my blog, so why not?
  • Rogers Park has 54,000 people distributed over an area that's shy of two square miles in size. The population density is about 29,000 people per square mile.
  • By comparison, Chicago as a whole has a density of about 12,000 people/mi2. So Rogers Park is about 2.5 times as dense as the city on average.
  • Gainesville, FL, where I grew up, has a density of about 2,000/mi2.  Clearly, simply by enumerating the differences, it's likely obvious that Gainesville and Rogers Park have disparate cultures.
  • Manhattan has a density of about 73,000/mi2, so it's fair to say that the RP is dense, but isn't a substitute for Times Square.

Sunday, May 20, 2018

Give Me Five Minutes and I'll Give You A Novel

When I first started creating small, time-bound goals, I had a weekly item for "Journal - 15 minutes" to force myself to write an entry in this here blog once a week.  It's been hit or miss.  As is common among most people who start a blog, I have a hard time maintaining it with consistency.

What's unusual in my case, though, is I'm not usually someone who has an aversion to writing.  At work, I have no problems writing documentation or bantering back and forth on email about a particular topic until a requirement fits into place.  The act of writing feels much like puzzle solving in my brain - I like when I hit on a particular phrase that seems to clarify my point.

This seems to be tougher to do via blogging though, for some reason.  Perhaps, this is because when I have to write an email for work, I already have a topic in mind, so the words are simply the medium for expressing that topic.  In the case of a blog, even when themed - which this blog struggles to be, I'm responsible for producing a topic, and finding a topic I want to write about on a given day can be challenging.  I'll often have a topic in mind for days expecting to crank out two or three thousand words and realize, come the time of putting virtual pen to ethereal paper, that I can scarcely put two words together.  Other times, a topic I expect to take up a paragraph's worth of space will lead to several posts.

A blog by its very nature also navigates tricky emotional ground.  It's essentially a diary, but open to the public.  As such, I can be opinionated, but don't want to wind up being too opinionated, in case someone who has control of my livelihood crosses it and vehemently disagrees with what I say and subsequently affects my livelihood.  Because it's a public forum, I also have to determine exactly how emotionally open I want to be.  I'm typically a private person and am not likely to divulge my vulnerabilities to an anonymous (or pseudo-anonymous) audience regardless of how small that audience actually is.  This, by the way, is the same problem I have with writing fiction.  I want to write fiction, but in order to write good fiction, one must invest a lot of one's emotional infrastructure into a story that others will be able to criticize, and that prospect is scary.

I've since changed my weekly goal to "Creative Writing - 5 minutes" four times per week.  Creative writing is now a loose term - writing a blog post, writing down a recipe, writing a review, etc.  However, I'm striving to be more ambitious in order to keep my writing muscles engaged.  With that in mind, I have three possibilities for moving this blog forward with expediency:
  • Use my five minutes to free associate and/or write a short story in five minutes.
  • Use my time to begin constructing a story and place my work here.
  • Use my time to research a topic and write it in installments/drafts/notes here.  This is similar to the papers I had to write on a specific topic in school when I was younger.  It'd be interesting to see what pops loose when I actually want to do the research.
I may wind up doing all three or none, but I'll probably give all three a shot and see how it works.  Also, in case you're curious, I expected to blot down a few words about the above bullet points here and have this post cranked out in about five minutes.  It took me about 35.

Wednesday, May 9, 2018

Programming for Pennies

This post is geared toward the readers who are programmers or the readers who wish to become programmers.  I don't think there'll be anything particularly difficult to understand here, but if you're not interested in becoming a programmer then this advice is useless for you (it may be useless anyway).  You can always read on for my exciting prose, though.

Much of my (desired) life revolves around how I can simplify the world around me and spend as little money as possible without sacrificing the quality of life I want to have.  This is predominantly a security blanket for me.  The world is a chaotic place, and I tend to be a pessimist, so I always run through exercises that give me the illusion of control of my environment even if I don't achieve actual control.  One exercise I run consistently, if not to the point of obsession, is creating a Panic Budget.  In that scenario, I run through a (hopefully) hypothetical situation where I lose my current job and wind up taking another job at reduced pay.  I then determine the amount of money needed to live my life at the relative level of comfort I've come to take for granted and then determine if I can sacrifice some of those comforts without making myself miserable.

So, what's this got to do with programming? Well, obtaining resources for programming can run from extremely cheap to massively expensive.  As one example, Google has 74,000 employees and spends billions of dollars on infrastructure per year.  After running through my Panic Budget I've determined that I don't have a spare billion to spend yet, so I'll have to be more creative.

To start with, in order to be a programmer, I'll need a computer.  I don't really have a lot of heavy needs for my computer on a day to day basis.  I generally surf the net, watch some movies, occasionally write a blog post, and...write some code.  I also don't like lugging a bunch of hardware around for no particular reason.  So, this leads me to my first investment as a programmer on the cheap - a Chromebook.  I like Chromebooks - they boot fast, they have a lot of easy to plug in software because they're essentially glorified browsers, they're secure, and they're Linux based (though in almost all cases that's an implementation detail that only developers need to pay attention to).  However, because they are essentially nothing more than glorified browsers, they don't have a lot of the same tooling availability as more traditional systems like a Windows, Mac, or Linux laptop.  However, since we're living in the age of the internet, this isn't as big an obstacle as it first appears.

The rest of this post assumes that you have at least a tenuous grasp of programming tools.  If you're not a programmer but are a serious autodidact, fear not, the internet will come to your rescue here as well.  If you're willing to go all in and spend some serious time on a computer science education (but not some serious cash), this curriculum is free and comprehensive.  Get through it, and you'll be as prepped as any fresh-faced college grad.  Don't have the time to invest in a computer science education, but want to pick up on the tradecraft?  You can take your pick from several coding websites that will provide you with a good practical foundation.

Once you have your computer and your plan for learning programming in place, you'll need an IDE to code.  An IDE offers capabilities that make managing software projects much easier than they would be if simply left to the basic tools offered by an operating system.  However, due to the fact that IDEs require the installation of supporting software and compilers of the programs we're writing, a browser-based system like Chromebook isn't initially set up to handle an IDE.  Luckily, there are several options on the web that provide these capabilities.  They range in cost based on storage, compute capacity, and features available, but almost all of them have a basic tool for hobbyists or lone developers that are either free or extremely cheap.  I've chosen to use Codeanywhere because it's a remote virtual computer that allows me to install any necessary software for my projects, and I like the IDE capabilities they provide on top of that virtual computer.  I've upgraded from their free, basic plan - which is still pretty solid - to one that gives me a few more capabilities at $84/year.  As a side note, Amazon has its own version of an IDE which looks pretty slick named Cloud9.  It may wind up being even cheaper in operation than Codeanywhere (at least Codeanywhere's paid plan), but I've grown comfortable with Codeanywhere, so I won't likely switch unless I'm compelled.

Once we have a computer and an IDE, we now need a place to store our code.  Though GitHub is the defacto leader in this space, they don't allow for free private storage and their HR practices still seem to be a little bit suspect, so I avoid them when possible.  This leaves two alternatives - Bitbucket and Gitlab.  I use both because they both offer free private accounts.  Gitlab offers more features where Bitbucket offers more polish and a wider user base.  Depending on my project, one is likely to serve my needs better.

So, now we can write and store our code.  But, if we ever want to let the outside world view it, we need to deploy it somewhere.  I've narrowed myself down to a few providers here.  In cases where I want to deploy static sites (HTML, CSS, and javascript code only), Gitlab and Bitbucket provide options for easy and free hosting.

If I need to do something that requires a storage backend or something more programmatically complex, Google App Engine offers an amazing set of tools and generous free quotas for users as long they follow the framework's guidelines.

If I need more flexibility or need to experiment with something that the GAE framework restricts me from doing, then I use Digital Ocean.  It offers a lot of capabilities for minimal and straight-forward prices.

That'll get you up and running if you want to develop and don't want to spend a lot of money.  But that's just the start.  There are a lot of tools available to play around with for curious programmers (and their professional alter egos - software engineers).  As mentioned previously, the internet is definitely your friend in this case.  For example, if you want to experiment to continuous deployment, you can try several tools, including the one I use.  For image processing and storage, you can use a free one or one with free quotas and more capability.

If you're experimenting or are on a limited budget, don't be afraid to look around and try different software as a service solutions.  They give you broad exposure to the ecosystem on the internet and introduce to tools that pop up in most software engineering contexts, so they're valuable learning tools.  If you're trying to go-it-alone or almost alone, they also provide a lot of leverage for functionality that you would otherwise have to write yourself.