Starting to understand JavaScript

Craig Maloney - Wed, 05/24/2017 - 18:31

I think I'm starting to understand JavaScript more. Not necessarily like it, but I'm understanding it.

Been ploughing through Eloquent JavaScript and the more I read in thos book the more I'm understanding what's going on. I can understand why so many folks recommend (and dislike) this book. It really takes patience to make it through. JavaScript is deceptively easy to get started, and has many ways to throw you under the bus while working with it.

Pressing ever onward.

Categories: LugNut Blogs

Celebrating our anniversary

Craig Maloney - Fri, 05/19/2017 - 20:37

JoDee and I are celebrating 14 years of being married together. In some ways it feels like yesterday that we were exchanging our vows, eating delicious cake, and trying to shoo everyone out so we could go on our honeymoon. :)

I mention the cake because the cake we had was amazing. We had our reception at Fox and Hounds (during lunch time because it was way cheaper) and The Fox and Hounds had an amazing pastry shop called The Fox and Hounds Pastry Den. I remember us getting a sampler of all of their various cakes and sampling them with JoDee, her sister, and her dad. JoDee made cards and we all voted on which cake we would have. What eventually won was a chocolate cake with white chocolate mousse filling and a vanilla butter-cream frosting. Apparently the cake was such a hit that several folks asked for seconds. One of the wait-staff had the foresight to hide the cake top so we could have some later on.

We froze part of the top and had it for our one year anniversary. It was still amazing.

Unfortunately The Fox and Hounds closed up. One of the pastry chefs bought the rights to the name, the recipes, and the pans and opened up his own shop far away from where The Fox and Hounds was.

My parents have been trying for some time to get us this cake. For various reasons it never happened (too far, couldn't get a hold of the chef, etc.)

We thought we'd had the last of that amazing cake.

Today my parents surprised us with that same cake. The chocolate cake with the white butter-cream frosting and the white chocolate filling.

Apparently the pastry chef sold The Fox and Hounds Pastry Den to another one of the chefs. She recently re-opened her shop closer to us. She has all of the recipes, the pans, and even the cash register from the original den.

Today we got to taste a bit of our wedding night again. Even though we were full I couldn't help but try to eat another bite.

Thank you mom and dad for one of the best reminders of the happiest day of our lives.

Here's to many many more years of marriage. I love you sweetheart.

Categories: LugNut Blogs

Slides from my Introduction to Debugging with Python talk

Craig Maloney - Mon, 05/01/2017 - 18:17

I've published the slides to my Introduction to Debugging with Python talk that I presented at Penguicon 2017. I'm hoping to present this at some upcoming conferences but for now you can take a peek at what I have.

There is also a video of the presentation that I did for Michigan!/usr/group.

Hope you enjoy!

Categories: LugNut Blogs


Craig Maloney - Tue, 04/11/2017 - 12:18

I try not to dwell on certain decisions that later turn out to be bad moves, but one that keeps popping up is my insistence on putting a hard disk drive on my Atari 800XL computer.

Let me explain.

Putting a hard disk drive (HDD) on my Atari 800XL was not cheap. It was around $800 back in the 1990s (which is around $1,400 in 2017 money). Contrast that with the Amiga 500 which was released in 1987 at around $699 and it seems like putting a lot of money into old technology. And indeed it was. By the time I'd purchased the Black Box, the cables, and the SCSI drive / enclosure (40MB) it was around $800 for the whole kit. But I was bound and determined, as this was running my BBS and other assorted goodies (terminal program, etc.).

So why the regret? Seems like a pretty cool purchase, right?

Unfortunately I was also going into computer science at the time. And the 8 bit processors were rather long in the tooth by the time I was purchasing said HDD kit. The Atari 800XL also didn't have 80 column screens so I had to use a software-emulated terminal in order to connect to the school's VAX and Sun SPARC station computers. And the C compiler that I had purchased (Deep Blue C) was pretty weak in an era where better compilers existed for the IBM compatible machines (and the Amiga).

So my one regret is not taking that money and plopping it into a 16 bit computer. Who knows if it would have changed my course much? Perhaps I wouldn't have been so eager to get onto Linux when I graduated college. But it's something that pops into my mind from time to time.

Categories: LugNut Blogs

Why companies want a convoluted tax system

Craig Maloney - Wed, 04/05/2017 - 15:55

I can see why companies in the "tax preparation" service are reluctant to just let the government figure things out:

  • Fee for the software (because navigating the tax code is for chumps).
  • Fee for the state versions (because just filing federal is for chumps)
  • Fee for e-filing the state version (because the state thinks paper is for chumps).
  • Fee for using a credit card for paying large tax bill (because carrying around a large wad of cash for paying the govt. is for chumps).

No wonder they want lobbyists to ensure that the tax code isn't changed.

Categories: LugNut Blogs

Installing Cisco Packet Tracer on Linux

Ken Leyba's blog - Sun, 04/02/2017 - 03:16
Packet Tracer is a cross-platform visual simulation tool designed by Cisco Systems that allows users to create network topologies and imitate modern computer networks. (1)Packet Tracer was previously not available to everyone, but since version seven, has been available to anyone who creates a Network Academy account. (2)  The software allows you to create virtual networks without the need of physical hardware.  Some of the hardware included are routers, switches, and PC's.

After creating an Network Academy account, you are able to download the software for either 32-bit or 64-bit Linux platforms (Figure 1).  Though the site indicates support for Ubuntu 14.04 64-bit, I was able to install on Linux Mint 18.1 64-bit with no issues.

Figure 1: Linux downloads.

Click on the download for your system, in my case the 64-bit compressed tar archive.  After the download, open the Nemo file manager and right click on the archive, then select Extract Here to un-compress and un-archive to a folder, PacketTracer70.  Navigate into the folder and double click on the install bash script file (Figure 2).

Figure 2: Installation Folder ContentsDouble clicking on the installation file will bring up a dialog box with some options.  Click on Run in Terminal to begin the installation process (Figure 3).

Figure 3: Click on the Run in Terminal button. In the resulting terminal window, you will be asked to accept the EULA (End User License Agreement).  Press the ENTER key to display the EULA, and progress through until the end.  When prompted to accept the EULA, type Y and press the ENTER key (Figure 4).

Figure 4: Accepting the EULA.After accepting the EULA, the installer asks where to install Packet Tracer, press the ENTER key to accept the default /opt/pt directory (Figure 5).

Figure 5: Choosing the installation directory.Since the installation was performed by a regular user and not as root or superuser, the installer cannot install to the /opt directory.  The installer will prompt to install as root using sudo (Figure 6). Type Y then press the ENTER key and then type in your password and press the  ENTER key to continue with the installation.

Figure 6: Prompting for root access.To complete the installation the installer will ask to create a symbolic link to the Packet Tracer executable in the /usr/local/bin directory (Figure 7).  This will allow you to run Packet Tracer using just the executable command (packettacer), rather than the full pathname to the executable (/opt/pt/packettarcer) .  Type Y then press the ENTER key to complete the installation.

Figure 7: Creating a symbolic link to Packet Tracer.To run Packet Tracer as a detached process from the terminal, type packettracer & in a terminal window followed by the ENTER key (Figure 8).

Figure 8: Running Packet TracerUpon first run a dialog box will indicate the default directory where Packet Tracer files will be saved (Figure 9).  You can change this later in the preferences of the application. Click on the OK button.

Figure 9: Default save location.When Packet Tracer is started, you have the option to log in to your Network Academy account to use the full features of Packet Tracer.  If you do not have an account, the second option is to use the Guest Login (Figure 10).

Figure 10: Network Academy login.
Now you can design and test your own network with Packet Tracer (Figure 11).

Figure 11: A running Packet Tracer

Categories: LugNut Blogs

Try, try again

Craig Maloney - Sat, 04/01/2017 - 00:14

So the "re-reading K&R" book thing got side-tracked again. This time around life happened again and I got side-tracked with the other things that took precedence. But the one thing that I would like to be my constant companion is the willingness to keep trying and keep at things until they work. If nothing else I will be my endless source of amusement.

I haven't completely decided on what I'd like to work on for April. Front-end Development is calling me, but I also want to work more on REST development. Plus I also discovered the Phazer library which looks really cool for developing games. And there's the old stand-by of just letting myself try something small like meditation for 15 minutes a day.

Perhaps the one thing I can work on is just letting myself work on one thing at a time. It's hard to choose when you feel like you need to work on everything at the same time.

Categories: LugNut Blogs

Re-reading K&R

Craig Maloney - Wed, 03/01/2017 - 12:57

I think for the month of March I'm going to try an experiment. Something that I've long wanted to do, but something that has gone by the wayside more often than not.

I'm going to read through Kernighan and Ritchie's classic book "The C Programming Language".

I liken this to reading books when you're younger vs. when you're older. "The Lord of the Rings" is a great example of this. When I read it as a youngster it was a mystical and fanciful world. When I re-read it (around the time of the movies) it started off mystical and fanciful but with my older eyes I could see things I'd missed before. I'd missed what Tom Bombadil represented (though I still do not care for that character in the slightest). I'd missed that the over-arching theme is that the world of magic is still dying, and that the quest of the ring was whether it ended in fire or in quiet contemplation.

So what does this have to do with K&R?

First off it's a classic text of programming. You can't mention the C language without someone piping up "K&R". As I mentioned in the last post there's also a certain comfort in hanging around in the C language. Plus I've never read the book all the way through. Something always happened to keep me from reading the book and I feel that I've done it a disservice by not making my way through all of the pages. Plus I'm not the same programmer that I was back then. I've grown with wisdom and I understand more of how computers work. Granted the version of C they present is not modern C, but I have other books to help me make that transition. And GCC / GDB are much better tools than when I last played with them.

How far will I get? Who can say? But I feel like I have to try.

Categories: LugNut Blogs

Comfort Code

Craig Maloney - Sun, 02/19/2017 - 22:37

Last week I found myself doing something I haven't done in a while.

For some reason I got it in my head that I needed some comfort. And part of that comfort was re-learning the C language. Now, I have no immediate reason to learn C. None of my job prospects seem to want C (at least not at the dabbler level) but here I was pulling out my C books to give it a whirl again.

Part of the reason is because there was a sense of comfort to me in sitting with just a compiler and a debugger looking at code flying by. I wasn't doing anything strenuous (just some Fibonacci sequences, or variable passing) but watching gdb change values and looking at the stack frame gave me a sense that I was in control. That I was changing something.

Too often I think developers sit back and take code for granted. Not that our thoughts become code without effort (Lord knows there's a handful of developers who have ever had something work the first time without wondering what the hell went wrong). No, I mean that we just assume that the building blocks that we piece together will always work and we won't have to think too deeply about what goes on under the abstraction layers. I think pulling back the abstractions and peeking in to see what's happening can be a comforting experience. It's a gentle reminder that no matter how convoluted the outside world gets that we have the ability to pause and see that there are still some rules that apply. That there are places where we can derive joy from seeing an integer variable increment from a 1 to a 2.

Maybe I'm crazy for finding comfort in this, but I can't deny that it works.

Categories: LugNut Blogs

Writing a Snake Game in Pygame

Craig Maloney - Fri, 02/10/2017 - 11:32

I'm mulling over making a quick series on how to write a "snake" game in Pygame. Part of this is because I've been stalled on writing this down in the book about Pygame and game development / design and I'm thinking this may be an approach to uncork the bottle of inspiration. Because writing in the book? That's hard. But writing a blog post? That's simple, right? (Don't answer that; I don't want smarter me to wake up and say they're the same thing. :) ).

Categories: LugNut Blogs

Cleaning up the blog a bit

Craig Maloney - Fri, 02/10/2017 - 09:12

I realized the blog was getting a bit crusty around here, so I cleaned up a few pages. I've put as many of the MUG presentation videos as I could up in the projects page, and added the slides for the Penguicon Presentations from 2015 / 2016. I'm probably going to update a few more of the pages because they really don't make sense for the current layout. (Breaking links? That's why I'm here. :) )

Also added some scripts that I use in my daily GTD / todotxt routine into a github repo so if you want to play with them you're welcome to them.

As always, if something doesn't look right please let me know. I probably missed a few things along the way.

Categories: LugNut Blogs