Cubs (13)Development (10)Goals (5)Guitar (1)Humor (1)Life (14)Life Hacks (3)Online Learning (1)Software (2)Welcome (1)

Articles by Josh Niederer...

Quantity, Then Quality

It seems with any skill I try to pick up, before I get good I need to use it a lot. I've never just started something and instantly been good at it. Even the way I do something as simple as watching TV shows has improved over time. Through watching countless episodes of TV over the years, my tastes have grown and my viewing experience has improved from the body of "work" that came before it. Watching TV shows may not be the most robust example, but from watching bad cartoons and awful live-action stuff as a kid, to watching a show like Better Call Saul now, is a huge jump in terms of viewing ability required. Now TV watching ability isn't a skill worth bragging about, but this kind of process can be applied to any skill. Growth comes from exposure to new ideas and new ways of looking at old ones, and from quantity comes quality.

It's unfair to expect greatness without effort. Continued focus and effort, are fertilizer for improvement. Sure, it'd be nice to read one page of a book and say, "That's it. I know all I need to know." That's just not reality. World class ability takes time and effort to attain. I'm fairly sure that even Michael Jordan, the greatest basketball player to ever live, couldn't drop 50 points in an NBA game when he was in grade school. His game hadn't fully matured yet, but with focused effort and lots of practice his talents grew.

There will be a lot of missteps and mistakes along the way from little to no skills, all the way to proficiency or mastery. Finding and correcting errors is progress and mistakes are actually a great thing. Mistakes mean that not only is effort being put in towards positive growth, but an opportunity to improve has opened up. Mistakes also can be used as motivation for improvement. The drive to want to correct mistakes is a valuable trait, one that can be relied upon to achieve whatever you set out to do.

Last week, I wrote a piece called, "Do Something Remarkable." In it I write about the iterative process of improvement. I used the example of if I write 100 articles, the 100th article should be better than the 10th because all of the articles in between were practice for the latest entry. This is such a powerful idea. Through the repetition and process of doing something many times, or in a single word, practicing, we get better. New ideas come and old ideas are improved upon. From the sheer quantity of work required to write 100 articles, or 100 programs, or anything else, the quality of the work would certainly improve. Sure, people get lucky sometimes and hit on quality early, but for everyone else: quantity, then quality.

Published on 4/14/2016 10:10:16 PM

Reds at Cubs 4/13/2016 Game Preview

After the Cubs won the opener 5 to 3 on a heroic swing of the bat by Addison Russel on Monday, the Cubs and Reds are back at it again tonight from Wrigley field. It's uncommon for two teams to have an off-day in the middle of a three game set but the start of the season is weird. Here are the lineups for tonight's contest.

Reds Lineup

  1. Billy Hamilton CF
  2. Eugenio Suarez 3B
  3. Joey Votto 1B
  4. Brandon Phillips 2B
  5. Jay Bruce RF
  6. Scott Schebler LF
  7. Ivan De Jesus SS
  8. Tucker Barnhart C
  9. Alfredo Simon P

Cubs Lineup

  1. Dexter Fowler CF
  2. Jason Heyward RF
  3. Ben Zobrist 2B
  4. Anthony Rizzo 1B
  5. Kris Bryant 3B
  6. Miguel Montero C
  7. Jorge Soler LF
  8. Addison Russell SS
  9. John Lackey P

Notably, the Reds are lining up without Zack Cozart, who left Monday night's game with an injury, and Devin Mesoraco. Cozart and Mesoraco are two of the Reds better bats so John Lackey's night got a little easier there. The Cubs are lining up with what is becoming the standard lineup against right-handed pitchers. Look for the Cubs to make Alfredo Simon throw them strikes as he averaged 3.26 per 9 innings pitched last year.

It should be another good game for the Cubs. If Lackey can get into a rhythm early, avoiding the big-bats of Joey Votto ,Brandon Phillips, and Jay Bruce he will have a good night. If he is leaving pitches up, as he was in Arizona, it could be a long night. Anthony Rizzo has pummeled Simon in the past, .333 with 2 home runs over 15 plate appearances. The rest of the offense has minimal experience against Simon outside of Jason Heyward (1/8) and Ben Zobrist (4/16). Enjoy the game!

Published on 4/13/2016 4:39:53 PM

Adware is the Worst: Part II

I think whatever adware or malware or phantom was ailing my PC is not gone. Since Sunday night there have been a number of trials and tribulations before arriving at the current juncture. I feel like issues like this take as much patience as skills. It seemed like I could trace every little detail about my PC and home network and there was nothing I could do. In the end though, I don't think even installing a clean OS would've helped.

Later Sunday night, I opened up my laptop to find that it was afflicted with the same problems that were plaguing my desktop. Ads were constantly overlaying things like linked YouTube videos, linked Tweets, and other forms of in page linked media. Once a page loaded ads the never stopped. The ads were being injected into the pages from a number of JavaScript files that looked like they were coming from a Google domain. The files were analytics.js, overlay.js, scr.js, and ga.js. These files had replaced the typical Google analytics scripts and were feeding me an endless supply of ads. So now there I was with two PCs to fix.

Here's a shot that shows the fake Google link that was spitting out the ads.


Here's a shot from my desktop where an ad is injected over my Twitter feed. That's the best feature of the site!


The next step I took was to installed the Microsoft ProcessMonitor tool. This tool can be used to show what all is running on your Windows PC. I was interested in what DLLs any of my browsers had open. I examined each DLL but none of them were responsible for producing the ads…


I attempted to use a couple more malware removal tools that didn't help. The tools I tried were HitmanPro and HijackThis. I think they both caught and removed some cached files but nothing changed following that. Once those both failed, I was almost ready to take a break when I realized, it's on both machines! What if it's something on my router? Sure enough, I looked in my router settings and the DNS Settings had been changed to enable manual DNS assignment. I don't recall what the IP address was set but I removed it and rebooted the router. Once that was complete no more overlay ads were being served on either machine. For good measure, I restored the router to factory settings late last night and reset it up. Everything has been running smoothly since.

After all this time spent trying to track down the cause of the issue all I can do is trace it to my router. I wish I would've just checked it first. Rather than assuming there was some form of software that was installed on my PC, I could've checked the router settings and been done. From now on I'm going to save a copy of my router's configuration and periodically verify it's in line with the expected settings. In addition to these configuration checks, I'm going to stay vigilant about not visiting sites that could be less than trustworthy. As for where I got the malware, my guess is that I picked it up from a YouTube to MP3 converter that I tried on a whim. It didn't even produce the sound from the video I wanted. It definitely wasn't worth it, I'm sure the lessons will be.

Published on 4/12/2016 8:22:38 PM

Functional Tuesdays and Thursdays

So far in 2016, every Tuesday and Thursday has been functional. By "functional," I mean the programming paradigm where in the output of a function is defined in only terms of its arguments. Every Tuesday and Thursday I've spent an hour plus learning and working on functional programming concepts. The functional ideas are a great counterbalance to the mostly object-oriented programming I do to make a living. Aside from the novelty of getting to think differently about problems, functional programming skills add another method of attack on difficult problems.

I'm currently going through the book, The Little Schemer (TLS). It's a great little conversational book that is a perfect introduction to the functional programming language Scheme. TLS is great because of the way it allows instant verification of whether or not you understand the concepts that are being presented. The left-hand column of the book poses question after question and the right-hand side offers the answers. I've been going through the book with DrRacket covering the right-hand column, programming the solution to the problem, then checking my solution against the book's. This method had proven to be effective.

Since TLS is so short, I'll be needing another functional resource soon. My first couple of months consisted of reading through and completing the exercises from the classic computer science text, Structure and Interpretation of Computer Programs (SICP). I stopped after the first chapter to find supplemental texts to improve my experience in getting through SICP. SICP is not a walk in the park. I will more than likely get back to SICP sometime soon. TLS has a followup book, The Seasoned Schemer. Perhaps I will attack it next. Regardless of the source, I will be improving my functional skills every Tuesday and Thursday.

Published on 4/11/2016 8:52:10 PM