Perl Weekly Challenge: Now with Elixir!

One of the things I want to challenge myself to do is learn some more useful things, and one of the languages they’re using at work is Elixir. It’s a functional language, not a procedural language like Perl, so this is not only learning a new language but it’s learning a new way to think about code.

Since I can’t really learn by just reading about a language or watching a bunch of excellent videos one of my coworkers produced, I decided that I needed to start doing the Perl Weekly Challenge tasks in Elixir. Today, I’m tackling PWC 267 Task 1.

Continue reading

I need help… at work!

I need help.  There’s a lot of work to do at my day job, and we need another developer.  We’ve got a job posting up on our jobs site, and we’re posting to the appropriate job sites, but I really want to fill this position.  Mostly because I’m lonely.

I used to be a beta geek in an office filled with alpha geeks.  I loved this, because there were always people who understood the ideas I had and had ideas about how to make my ideas better.  I hate being the sole alpha geek in an office because then nobody understands the ideas I have.  But I also hate only having one other alpha geek to bounce ideas off of, because then if we can’t agree, there’s nobody to break the tie.

I’m not going to go into great detail about the job.  It’s a coding job, and it uses either Perl or Java (or both, if you’re so inclined).  If you’re reading this, you know me, and you’ll know that I’m still working for the current incarnation of what I’ve called “the best job I’ve ever had.”  If you’ve got a decade of experience, know either Perl or Java, don’t mind working in jeans and a t-shirt, don’t mind working in New York City and don’t think working with me would be a sign of insanity, let me know and I’ll get you in for an interview.

February’s almost gone!

Once again, I’ve gone months between updates.  But I have been busy.  Folks who follow my social media feeds know that I was strongly considering a career change in January, but ultimately I decided not to jump ship from my current employer for a cool new startup; instead, I decided to stay on with my employer and take on some new responsibilities.  It will be challenging, because not everything they’ll have me doing will be things I consider to be part of my core competencies, but I’m looking at it as an opportunity to force myself to grow and learn new skills.  If it doesn’t work out, I can always find a new startup to go to.

On the puppet front, Kay and I have been busy.  Kay gave me a design for our website and told me she wanted it up by Valentines Day, so I put in some late nights learning how much CSS has changed since the last time I played with it and I was able to build a WordPress theme to generate the design just in time.

We’ve also been filming with the puppets a lot.  For Christmas, we whipped up a special introducing my monster, Rudy…

And just this past Friday, we posted a second video featuring Rudy and Kay’s cat, Ket, that pays homage to those old parenting films of the 1950s:

If you want to be kept up to date on everything we’re doing with the puppets, just join our mailing list!

Subscribe/Unsubscribe to PacKay Productions Announcement Emails
* Required



Eureka!

I think I’ve found the solution to a problem I’ve had at work for ages: Win32::Exe.

I would love to examine the PE version information of a Windows file that’s been uploaded to a Linux server. For a long time, I’ve punted on this problem, and waited until I had the file back on a Windows machine before examining this information, mostly because it’s much easier to get this info using Windows’ API calls to get the data than manually parsing the PE header info.  However, just tonight just stumbled across this perl module mentioned in a stackoverflow post, and it doesn’t depend on modules that we don’t already use.

Now this problem will stop bugging me, and I can go to sleep!

Update: Unfortunately, the files I need to examine are large (> 200MB), and Win32::Exe (via Parse::Binary) seems to load the entire file into memory.  This causes an out of memory error.  But maybe I can use this code as a launching point for a different solution.

Keeping track of when I need to leave work…

One of my big problems with working in NYC and living in NJ is there are “departure windows” where I can catch the right subway to get the right PATH train to catch the right bus in NJ to get me home. Otherwise, I get stuck cooling my heels somewhere in Jersey City waiting for the next bus. I coded myself up a tiny webapp using a jQuery countdown plugin to help me keep track of when my departure windows are.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>BMC Departure Countdown</title>
<style type="text/css">
@import "jquery.countdown.css";

#homeA, #homeB, #homeC, #homeD, #homeE { width: 240px; height: 65px; margin: 10px}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.countdown.js"></script>
<script type="text/javascript">
$(function () {
	var toDay   = new Date();
	$('#today').text(toDay.toLocaleDateString());

	var home804 = new Date(toDay.getFullYear(), toDay.getMonth(),
	                       toDay.getDate(), 18, 57, 00);
	$('#homeA').countdown({ until: home804,
                                description: 'Leave @ 6:57, Home @ 8:04 pm'});

	var home849 = new Date(toDay.getFullYear(), toDay.getMonth(),
	                       toDay.getDate(), 19, 51, 00);
	$('#homeB').countdown({ until: home849,
                                description: 'Leave @ 7:51, Home @ 8:49 pm'});

	var home934 = new Date(toDay.getFullYear(), toDay.getMonth(),
	                       toDay.getDate(), 20, 27, 00);
	$('#homeC').countdown({ until: home934,
                                description: 'Leave @ 8:27, Home @ 9:34 pm'});

	var home1019 = new Date(toDay.getFullYear(), toDay.getMonth(),
	                        toDay.getDate(), 21, 18, 00);
	$('#homeD').countdown({ until: home1019,
                                description: 'Leave @ 9:18, Home @ 10:19 pm'});

	var home1104 = new Date(toDay.getFullYear(), toDay.getMonth(),
	                        toDay.getDate(), 21, 59, 00);
	$('#homeE').countdown({ until: home1104,
                                description: 'Leave @ 9:59, Home @ 11:04 pm'});
});
</script>
</head>
<body style="text-align: center">
<h1>BMC Departure times for<br><span id="today">today</span></h1>
<center>
<div id="homeA"></div>
<div id="homeB"></div>
<div id="homeC"></div>
<div id="homeD"></div>
<div id="homeE"></div>
</center>
</body>
</html>