Skip to content

Musings and Meanderings of Robert Kuropkat Posts

Obsess much…?

I have been told I am incapable of maintaining even a bad habit. The implication being the outlook for GOOD habits is more than just a bit bleak.

That being said, Project Euler (https://projecteuler.net/) has my attention!

I stumbled upon it while looking into various code challenge sites. Leet Code (https://leetcode.com/) being one of the most well known, I wanted to find others. I was particularly interested in finding sites that supported Perl. I’m interested in C# as well, but I am still learning C#. I also have a Love/Hate relationship with JavaScript. The last two are pretty universally supported at these code challenge sites but Perl, less so. So when I saw that Project Euler “supported” Perl, I had to look.

Project Euler, named after the pivotal Swiss mathematician Leonhard Euler, in its own words “exists to encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics.” It contains over 870 problems designed to be solved through some sort of computation.

Unlike other code challenge sites, Project Euler does not actually come with a coding platform. You code on your own computer. So you can, in fact, post solutions in any language. Including that most quirky of programming languages, “paper and pencil.” The language “support” comes in the form syntax highlighting for the code you post. So you really can post in any language whatsoever, and trust me, there some seriously obscure languages used!

One of the interesting cultural quirks of Project Euler is the emphasis on self-learning (aka, the hard way) as opposed to just looking it up. So the forums for each problem are locked until you solve the problem. Furthermore, the site requests you specifically not publish your solutions outside of the forums. In many cases (especially with me) that means solving the problem in some highly inefficient, brute force manner, then logging into the forum to read about the much more elegant solutions used by others. You will also find those who post massively optimized solutions that run in ridiculously short times (especially those special kind of crazy Assembler folks). You will also find the mathematical “short cuts.”

In short, if you have the time, the real learning comes after completing the challenge. In something of a Harry Potter sort of test, you don’t get to participate in the class, until you craft your own key to the door. Perhaps that’s what makes it so obsessive.

As it is, I have already created some personal milestones, some of which I’ve already achieved.

  • Do at least one problem (complete). Sounds lame I know, but being honest, these kind of problems are not the sort of thing I am usually good at. Until I completed one, I wasn’t sure this site would be for me.
  • First Digi-badge (complete). Like many sites, there is a gamification component. The site has levels and awards for different actions. “Baby Steps” is the digi-badge for completing any three problems. My second was “Decathlete” for completing any ten consecutive problems.
  • Level 1 (complete). There are currently over 870 problems with new ones being posted all the time. Every 25 problems solved advances you one level.
  • Level 4. Level 4 equates to having solved 100 problems. If done consecutively, starting at 1 this means completing what the site refers to as “the Easy” problems. Note ,that does not mean they actually all are easy. Many have a difficulty rating as high as 40%. Even some of the easy ones may take quite a bit of thought. Even with the 5% difficulty ones I have done so far, some I solved in mere minutes, others took a couple days to think through.
  • Attain Level 16. At this time, there are approximately 70,000 people who have attained Level 1. However, Level 16 is still less than 100. Besides being a really small group, that means if I make a post, it will remain permanently! How cool is that?
  • Re-Solve Some/All. As I said, the solution that gets you in the door, is not the only one. You can [usually] use brute force (my current, first stop). You can try to optimize your run time. You can solve it purely mathematically. Some even golf their code and use as few characters as possible. And of course, you can explore new, even intensely obscure languages.

As I mentioned, brute force has been my goto method so far. A couple times I recognized a pattern I could exploit to shorten the process. But it is very possible I am going to have to get my learn on to solve later problems. I even bought two books to help me out.

Elements of Algebra, Leonhard Euler
The Elements, Euclid

That’s right. I’m calling in the big guns. “Elements of Algebra” by the man himself, Leonhard Euler and “Elements” by the Greek Philosopher and “Father of Geometry”, Euclid. I’m going to solve these things, even if I have to think!

Birds flying high…

The other day I was driving around when a bald eagle flew over me. Not way up high in the sky, but right down in the trees where I could see him. Not only did he cross my path once, but twice; as if making sure I took note of his presence. He left the tree he was in, flew across my path, then turned back to his perch. So, you know what that means.

Babelfish…

What to do, what to do, oh what to do… sigh… I want to get back into programming, ideally professionally. But I’ve been out of hard core programming long enough I have taken on the appearance of an old dog learning new tricks. Even so, an If statement is still an if statement and a while loop is still a while loop. Thus, I’m not particularly worried about jumping back in. In fact, if I didn’t want to get paid for doing what I love, it would be easy. It’s that getting paid part that is tripping me up.

Robbing Peter to Pay Paul

By which I mean, it’s time to take another wack at budgeting…

Once, long ago, I set off for college. Before I went, my mother took me down to the bank and opened a checking account for me. Through this, I would learn to take care of my own finances as well as provide an easy conduit for my parents to funnel money to me as needed. One thing extra she did though was include what was then called “Overdraft Protection.” It was not a line of credit per se, nor was it a credit card. It was just a small amount ($500) intended to cover those moments when the bank decided to clear the checks I wrote, before the checks I deposited. For some reason, banks always prefer to do things in this order and I guess my mom knew full well who she was putting in charge of this account.

Mysterious Movements chapter 0

Prologue

Once upon a time there lived a young codeslinger. From the technological backwater of Tucson, he dreamed of coding challenges that would test his wits and determination. Coding challenges that make most coders cower in fear. Coding challenges that would make him a legend.

Tucson was not devoid of technology, but it was mostly technology that once was. The big gangs had pulled out long ago. The others were mostly lone codesligners; IDEs for hire. The important thing though, was none of them had time for a young upstart.

So, he packed his meager belongings and headed further West, the golden hills of California singing a siren song of wealth and challenges for anyone brave enough. He didn’t even bring his IDE (Integrated Development Environment), choosing instead to leave it behind for whomever should take up residence here next. Yes, he’d buy himself a set of shiny new IDEs when he arrived in San Francisco, the .COM capital of the world.

Truth be told…

How often do you have to hear something before you decide it must be true? As I recall from my High School English class, you need to back up any claim with at least three credible sources. Ideally, these three sources should have different pedigrees for their research. Their conclusions should derive from different sources. In other words, they should not all just be repeating the same rumor. In today’s world, that means three re-tweets do not make a truth. Neither does three Facebook shares or re-posts.

Paradise Lost

I am sure if we looked hard enough, we would find someone, somewhere who has not been “affected” by the COVID-19 pandemic. For the purpose of discussion however, let’s just go with “everyone.”

Unfortunately, we are not yet to the point we can talk about what effects the pandemic had on everyone because we are still having them. The whole thing has been going on long enough even the ripples are making news. Even the most pessimistic of doom-sayers are scratching their heads wondering just how much longer this will go on. When, everyone is wondering, will we return to normal? When will we finally get a break and be able to heave that much needed sigh of relief?

TeX-Talk

That’s “Tex” as in “blecch,” not “Tex” as in “Mex” or so the TeX User Group site says.

I have long been interested in Dr. Knuth’s TeX typesetting system. The idea of being able to do my Math homework electronically has intrigued me ever since I got a home work problem wrong because I added 2 and -2 and got 4. You see, I had erased that part of the problem several times and on the final work through, I did not see the negative sign.

Lifelong Learning

I mentioned in a previous post that a career in Software Development or any part of Information Technology is a career of lifelong learning. This would be true even if technology did not change so rapidly for the simple reason the more we solve with computers, the more problems we are able to solve. Computers allow us to do things not only faster, but smarter. This leaves us humans able to turn our attention to more and more opportunities.

After 35 years in software and IT I have become pretty confident in my ability to learn and take on new tasks. This is not because I know more than when I was younger, but because for 35 years I have refused to sit still. Instead, I continue to branch out and try new things. I have never been the “go to guy” for a specific technology. I am not the expert on all things SpiffySoft. Nor am I the local expert of the FrogSnot programming language. For 35 years I have worked in the cracks, seams and edges of the project life cycle. Where algorithms fail and best practices fall short; where others have abandoned all hope; any problems that makes others say “huh?”; these are the tasks I excel at.

As impressed as I am with myself, I was none the less reminded of the danger of over confidence. Fortunately, this was not for work. No client or schedule suffered due to this learning moment. All the same, there is nothing like a good intellectual ass-kicking to restore some humility to my life.