work
life
projects
writing
Stephen Jurnack
work
life
projects
writing
My name is Stephen Jurnack. I am 31 years old, living in South Burlington, Vermont. I currently work at Dealer.com, an automotive technology company. Previously I worked at GDC IT, an IT service company based in southern Pennsylvania. I attended Shippensburg University, and graduated in 2010 with a BS in Computer Science. I graduated from Towanda High School in 2004. I was raised in Towanda, a small town in northern Pennsylvania.
I have been working at Dealer.com since 2015. There I started as a Java Developer, and was recently promoted to Senior Software Engineer. Dealer.com is a large company, employing over 2000 people across the USA. I work in the Engineering department, on an Agile Scrum team called Blinker Fluid. Dealer.com has been practicing Agile for some time now, but this my first professional experience with Agile.
Currently I work on an application called Digital Retailing 3.0, with the ultimate aim to sell a car online from start to finish. This system privides valuations for a trade-in vehicle, a calculator for figuring montly payments, a finance application for a credit check, and a variety of other similar tools for purchasing a vehicle. This newer version is written primarily using a React front-end with Node.js backing services. This application is a top proprity for the company, with teams across the nation working on it - not only Burlington, VT, but also in Atlanta, Portland (Oregon), and Dallas.
At Dealer.com I also work on a system called CMS, a web site service that provides automotive web sites, advertisment, analytics, and other various services to auto dealerships, groups and OEMs. The CMS system is a large system that serves content for over 15000 clients of various sizes across the country. I work primarily with the Java backend, but my responsibilities also stretch into the front-end, working with CSS, HTML, and JavaScript in the process.
The CMS system is a Java-based web application. An incredible number of technologies are used in CMS - RabbitQueue, Spring, Apache Velocity, Amazon Web Services, and many others. Through the course of a quarter - or week, or day - I touch one or more of those technologies, developing solutions that can scale across thousands of sites handling thousands of requests a second. I have also written and worked on independent applications that work alongside CMS. These apps are typically written in Spring Boot, using Amazon Cloud Services.
In early 2017 I shifted teams, and shifted my work. I now work in a smaller corner of the CMS system, on a team contracted by a large auto dealership group to deliver car sales online 100%. We are writing our app using a React/Redux front-end, several supporting services written in Java, and the latest new new - The Cloud! Our work is leveraging AWS cloud apps, like Lambda, S3, and API Gateway, to authenticate and throttle public image uploads. Working on this kind of stuff is incredibly exciting, and while I miss my old team, I am glad the switch was made.
I started working at GDC IT in 2010, after graduating from Shippensburg University. At GDC I managed a data synchronization and transformation application, handling messages from data sources all around the world ensuring they were kept consistent across all data sources. This application used many IBM applications and services, primarily Websphere MQ and the Websphere Application Server.
My parents own and run a health food store called Jurnack’s, Naturally!. As a personal project I wrote and now maintain the store’s website. Additionally I maintain an application for the store’s Co-op membership. With this application users can enter wishlists of products to be ordered from the co-op. This application is written in all PHP, with a backing MySQL database.
I engage in many personal projects, from experimenting with Amazon Web/Cloud Services to writing simple video games. This site, for example, is set up in an AWS S3 bucket, with a Route 53 hosted zone providing the DNS support. Someday soon I may move from my current web host and into the AWS cloud totally. If I am working on a personal project, it it typically written in Java. If I am writing a game or web app, I like writing in basic JavaScript and JQuery, with the occasional foray into Angular.
Livin' It
Simple Photo Gallery
Factory Incremental
Seafood Saturdays is a thing in the (Stephen) Jurnack household these days. Everyone has a struggle, a vice - mine is food - and to counter that, or at least redirect it into productive ends, I try to make the best out of cooking on the weekends. Normally I eat a lunch at work - from Feldman’s Bagels or Cafe 2.0 or some other local place - but dinners are a bland affair. Most days I make a pot of mac n cheese or ramen noodles. Nothing green, nothing healthy, nothing worth writing home about. So to break up the boredom I do Seafood Saturdays - get me something different, and get me cooking.
Today, as twice before, was swordfish. My last two tries were not necessarily unsuccessful, but the smoke would have told you otherwise. There’s a reason the smoke detector in my place gets a lot of use. But today, TODAY, was different. Today I cooked the FUCK out of a swordfish steak, plated it with some roasted fingerling potatoes (my staple), and made a brown butter/shitake mushroom/green bean topping for it all. Instead of the usual smoke show I put on with swordfish I tempered the head and cooked it for a little bit longer. The result was a flaky moist cut of swordfish that came apart at the touch of my fork. It was started in the pan to perfection - ending up golden brown looking real good - and finished in the roasting oven for a few minutes. It tasted good, with a pleasant texture. I feel like I have the dish ‘down’ - next time I’m going to use less oil and cook it a little longer. It could use some firming, and maybe all my dishes could use a little less oil all-around!
Speaking of oil, the accouterments both came out good too. The fingerling potatoes are easy as hell to cook - toss them in some olive oil, salt, pepper, roast ‘em @ 400 for 20 min or so, and you’re good. Today I added some savory herbs to the mix, which gave a good taste - but next time, Stephen please, remove them. Got more than my share of stick and leaves in my teeth during eating - maybe working for your meal isn’t enough, you have to work during! Topping the fish and the potatoes were blanched green beans - a new ‘Standard Dish’. Blanching the beans keeps them nice and crunchy, and cooking them in the same brown butter sauce, makes them delicious. Adding some shitake mushrooms gave some meat to the topping.
All in all the dish turned out very good. Not as good as last week’s Trout Alomdine, but nothing will touch that. Everything tasted good - but was that my skill or just the butter and salt I added? Questions!
Earlier this week I got a new camera! Finally went out and bought a DSLR camera, a starter model, a Canon Rebel T6. So I just had to take it out the first chance I got, and that first chance was a grey blustery day, very cold, with 6 or so inches of snow under my feet. I made it out to the Spear Street Overlook and took some okay pictures - lots of gray and falling snow, but if that’s not Vermont in January, then what is? There was barely any traffic my whole way there, and for good reason. My next car should have four wheel drive.
Basically I do Seafood Saturdays, and got this camera, to get me out of the house. If I had my way is the most base sense, I would be watching the football games on my ass all day. But it’s Seafood Saturday - I have to get out and make something! And I have this nice camera - I have to see what I can do with it? I hope to make these events routine - I want to add a day in the week, Wednesday or Thursday, to cook some carnivorous shit, some real meat, and see what I can do with that. Maybe borrow my brother’s sous vide.
As always, feedback is welcome at jurnacsr@gmail.com
2017-07-24 : Manly Man Works the Wood
A few weekends ago I finally did it - I refinished my desk top. Using a very dark poly/stain combo, sandpaper, and lots of elbow grease and time, I was able to finish my desk to a very nice very dark brown finish. It looks an amateur job because I am a rank amateur at woodworking, but I learned a bit and had a good time doing the job. I attached a twin monitor pole stand so now the desk is open. It looks amazing now, and I am very pleased with how it all went down. From a hungover Home Depot trip to near-sundown staining to bolting the desk down, it all came together well. Enjoy the pictures.
As always, feedback is welcome at jurnacsr@gmail.com
2017-07-11 : A Weekend of Food and Beer - In Vermont
For the best viewing experience, 9/10 doctors recommend you listen to this while you read.
I had one hell of an adventure is past weekend. Ever since moving up to Burlington I’ve found myself doing more and more with the time I have - down in Chamberburg it wasn’t so. I had a good time there, and in Shippensburg, but it was so easy to simply do nothing. I’m willing to be that has just as much to do with me as it does with the area. On to the adventures!
There is a brewery in Vermont (no, really!?) called Hill Farmstead, known world-wide for its incredible beer. I once had a pint of a beer rated 100 by Beer Advocate, the Hill Farmstead Double Galaxy, and I was hoping to score a growler or two of that. Ever since moving up and stumbling upon a Hill Farmstead ‘tap takeover’ nearby I’ve wanted to visit this place and get some beer for myself. My lazy ass just didn’t go and do it for the longest time - this weekend was the final straw. I always feel incredible motivation after visiting home, picking up good habits (all too temporary) and finding the will to do stuff like this. I’m so glad I did.
The brewery is a bit over 1.5 hours away in a town called Greensboro, Vermont. To get there from Burlington you drive through Stowe - more on that place further down. As you drive the roads get smaller and smaller, dirtier and dirtier, until your last approach to the brewery is a simple dirt road up the side of a hill. Getting there in the winter must be a tough ask for cars like mine - two wheel drive sedans with all-weather tires. The weather was a bit cloudy, but still warm as befits a Vermont July.
Hill Farmstead itself is incredibly low-key, chilling on top of the hill and enjoying an incredible view of the mountains around. My grandparents lived on a hill in Bath, NY, and it was so similar to that as to be nostalgic and comforting. The same breeze, the same look and feel around you, the same flora, the same pressing quiet of the forest around you. The brewery is housed in a newer building that doesn’t stand out too much but instead blends in with the surroundings and seems to belong quite well. The other buildings - a retail shop and some surrounding houses within a few hundred yards or so - looked right out of the hills of Bath, New York. The same level of time-worn semi-disrepair (tar paper siding, some boards here and there, building extensions placed where needed) that felt like the house right down the road from the Grandparent’s place. The only thing it needed were some chickens and a pond. And a tire withchives and spices growing in the middle.
I anticipated the wait and the crowds, but there wasn’t too much of either. Parking was kind of structured - you’d roll your vehicle into a field right off the road, and there you’d park. It felt, as mentioned, very low-key. No paved spots, nothing covered. Just a hilltop. I saw maybe two hundred people come and go as the day progressed, most of them making their way into the tap room for glasses and growlers of the world-famous suds. For growlers you’d grab a numbered ticket at the entrance and wait until it was called, like the butcher’s department at a grocery store. My number was 675 - I came in when the 630’s were being called, but the rate they called numbers meant I wouldn’t have to wait long, and I didn’t.
I put my growlers down with the other empties to make friends before filling, and I went outside to see what was up. This is where I discovered the views, the nice breeze, and the yak burger cart outside. It was so quiet - the dull murmur of people, but not overpowering, the hum and crunch of cars over gravel. I passed the next 40 minutes or so just watching and lounging.
And sampling. I sampled a wide varitey of beers - a double IPA, two stouts - normally a fan of stouts, but there were a tad too strong, and a few different German varieties. All of them delicious. My number was called shortly after my fourth sample (each was a sip or two, if that) and I filled my growlers: 2 Edward (the flagship brew), 1 Marie and 1 Mary, and paid a good amount for them. And just like that the real reason for all this driving was over. So I lounged around some more.
I sat in a pavilion outside at a large rough picnic table, near to the Yak burger stand, reading a book about the Camino de Santiago. The book was originally bought for my dad, but I’m taking a stab at it here. I enjoy the conversational tone and daily chapter layout. It’s an easy read, and I found each day melting away in the shoes of this priest making the walk. I read for an hour and a half before my ass starting hurting so, grabbing four growlers with two hands (ouch!), I got back into my car and drove into Stowe for the next phase of my adventure.
The drive down the hill from Hill Farmstead - named for the Hill family, and not the geographic feature! - was an exercise in transcendental solitude. I felt so at peace that I had to first turn off the podcast (sorry Jason and Mallory of Binge Mode - Game of Thrones is great, but this was greater) then turn off the car to enjoy the quiet. This is where I was really struck by the similarities between Bath and Greensboro. The quiet country road (but not totally deserted), the gentle rainfall, everything, just made me feel so alone and at peace. I spent 15 minutes just chilling there.
I reflected on the nature of my trip and how it seems to fit into my whole life. I was alone, peaceful and happy, but alone - as it always seems to be. I enjoy the solitude, but not the inevitability of it. There was no one to share it with, and I was sad - I often feel like I just don’t have many friends (for whatever reason), and I haven’t had a girlfriend in 6 years. These adventures were nearly always just me, myself, and I. Why was that? Probably had something to do not being in PA, where I knew many more people, and with me not being very brave. I hate intruding, hate being a pest, so much so that I often just stay in my shell - go to work, come back home, and never the twain shall meet. Everyone else seems the same way, from where I’m standing, though - no one’s calling me either. Whatever - in this moment I thought all these things: happy that I could take these trips and enjoy these things, and sad that there was no one to share it with. After 15 minutes of this, and the gentle (but increasing!) rainfall, Stowe and Edson Hill called to me.
My little brother, Kevin, works in a restaurant/resort called Edson Hill. He used to work at The Bench, a nice place also in Stowe. But this new place is on some next-level shit. It is located in a heavily-wooded area on a hill, and occupies god knows how many acres. They’ve got horses in a fenced-off area and I made a note to stop by on my way out. The surrounding view was breathtaking. Green all around, with mountain slopes rising into the clouds. It was damn-near perfect. Only thing it needed was a lake. Then I’d be sold.
I ate at Edson Hill, and got to see my little brother do his thing. I’m kicking my own ass for not getting a picture, because it is priceless. Kevin is an artist, and dresses and looks like one, but here he was very professional in his dress and manner. His hair, normally a curly massive afro (think Anderson Varejao, but with much more body), was tied back tightly and secured with a badass bandana. He wore a chef’s coat, a long white number, with the traditional black pants. He looked like a chef from a movie - it was so cool to see. I got to say goodbye while he was working the grill, and he was all business before seeing me.
Kevin works the grill, so I ordered accordingly. I had a toasted piece of bread covered in a duck rillette (a kind of pate) that was an experience to eat. The rillette was cold, the toast warm, and the contrast provided lots of interesting texture to the dish. The flavor was incredible and the accoutrement provided an earthy and tasty element. There were pickled chantarelles and cherries on the side - the mushrooms were earthy and delicious, the cherries tart. Topping it all was a red wine reduction, tart as the cherries. Taking all these elements - toast, duck, cherry, mushroom, sauce - made for a blast of flavors, with the sweet, the tart, the earthy, the toasty all proving themselves up to the challenge of my hunger. The toast was the best part of the meal, but don’t let that undersell the mussels and steak.
The mussels were delicious as well - I would wager money I could eat those by the thousands. They were prepared in a lemon and brown butter sauce, and each morsel was a delicious seafood treat. The steak, prepared with love by my own blood, was also delicious. Siding the steak were some fry-cut potatoes and broccoli rabe, and topping the steak was a creamy ramp butter (ramp butter? Don’t remember what that was...but it was good!). Taken in one bite - broccoli, potato, and meat - was the way to go. Individually all were good, but the whole dish was a treat together. I specifically enjoyed the toast most of all because of the uniqueness of the ingredients and preparation. I went all-out and took a glass of bourbon with my steak as well.
The drive home was a comfortable one. I couldn’t wait to uncork a growler and dive in. My belly was full of delicious food and my ears were assaulted by the Mother of Dragons and the Maester as we all reviewed the history of Game of Thrones. The drive melted away quickly.
For my next adventure, I’m going to finish my wooden desk surface and use some bolts to secure it to the desk bottom.
As always, feedback is welcome at jurnacsr@gmail.com
Growing up I spent a lot of time above my parent’s store, in the apartment where my grandparents used to live. In this apartment the washer and dryer were kept in a large closet, which was more of the master bedroom divided into two. The linens were stored here, and the washer and dryer hummed quietly behind a thin wall and nearly cardboard doors. Also stored here were the board games. There were so many that I had never heard of, one in particular called Las Vegas Junket that looked curious. I never did crack that open and check it out. There was Mille Bornes in a very nice wooden box. All the versions of that game today are in cheap tin boxes, but the wooden box felt sturdy and nice. Maybe that’s just the young me speaking.
One other game also caught my eye: Mastermind. Man times I opened that one up and was overwhelmed by the brown plastic board and ten million colored pegs. My young mind could not grasp the logic required by the game - I read the rules and had a very abstract understanding of the game, but how could you ever know which white results peg went to which colored peg? I was too young to understand how to figure your way to which peg was which, how to narrow down the results to certain colors. Today I understand much more. But not totally.
It was only a few years ago that I picked up the game thanks to a longtime friend. To be honest, I can’t totally remember how she reintroduced it to me - maybe we were just hanging out at her house and she brought it out. I bet she remembers better than I do. Those first few games were an exercise in patience and teaching, for me and her respectively. I was terrible, and she was a good teacher, and by the end of the evening I had a small grasp on the game. That was enough for me. Mastermind is a particularly ‘predictable’ game, if predictable is the right word to use (doubt it), and my mind is captured by things that can be algirothm’d through and turned into standard steps.
Mastermind is a very solvable problem, and follows very logical steps. And those are my favorite kind of problems. Mastermind also has a relatively simple rule and piece set - this makes a great learning exercise in game development for many languages. In fact, Mastermind was my first foray into game development back in 2010 or 2011. I learned the HTML5 canvas using Mastermind.
There are very distinct components, very precisely defined in their interactions. You have Color Pegs of a set of colors. Result pegs can be black or white and display a row’s result. These are housed on a Board with rows. There is an Answer floating around somewhere - maybe it’s part of the Board, or maybe it’s a part of the global Game. The Color Pieces are drag-and-drop elements that require user input. All of these elements are relatively simple to tackle on their own.
So for the next ${SPAN_OF_TIME} I will be working on Mastermind in various languages in a tutorial series. And there is no better place to start than what I know best - Java. And since I’d like to cover all my bases, I am going to use LibGDX as a framework for the game.
As always, feedback is welcome at jurnacsr@gmail.com
2016-10-17 : Factory Incremental Write-Up
Adventure Capitalist was the first major incremental game I can remember that used the 'Fill Up Progress Bars for $$$.' I'm sure there were others - there always were others - but none have had the impact of AC. The underlying mechanics are the same as ever - each production unit provides x income pre second, but the presentation set AC apart.
We've all sat by while some new software is installed or tapped our foot while that new game downloads from Steam. The progress bar sometimes fills steadily, sometimes erratically, but it fills up all the same. When complete, there's a feeling of satisfaction - and AC captures that same feeling, multiplied many times.
This introduced a new way of transmitting the standard money/second in incremental games. Seeing the progress bar fill up faster after that upgrade is much more pleasing than the alternatives of the day, like buying a new upgrade in Cookie Clicker.
Newer than Adventure Capitalist (and the clones it begat), another Incremental Game blazed a new mechanical style. Reactor Incremental was the first well-known incremental game that used the positioning of units to impact overall gains. No longer were your units simple numbers - placing them in certain formations produced more money. Placing too many resulted in a meltdown, sending you back to square one. It was, and still is, a magnificent game concept, providing near-endless replayability despite a limited set of units.
It is the Placement-Aware Incremental Games mechanic that interests me the most. It gives games such replayability, such a wide range of different actions to take, so many emergent play styles possible, that even a simple game can provide a deep experience. It was with that approach that I wanted to make Factory Incremental.
At its core Factory Incremental is about the placement of your factories. Even though you have no control over where your factory is on the grid, you do have control over the grid itself, and can resize the grid as you resize your browser window. This creates the Placement-Aware mechanic - while also making my job a lot easier by not needing to program the placement!
Factory Incremental was built to be simple to read and code. It uses the bare essentials, mostly. Everything on the page uses the DOM for displaying - no canvases. The application is a simple setInterval() game loop, using JQuery for real-time DOM manipulation. JSRender is used as a templating engine for the Factory DOM elements. Some decoration was needed, so Bootstrap was brought in to support icon glyphs and nicer button styles. This may be removed in the future to slim the app - very little of the Bootstrap library is used.
The game itself is (almost) feature-complete. However, many crucial features are missing. There is no saving - once you exit the browser, the game state is lost. The UI is crude at best. The purchasing UI is hidden on scroll. There is no UI for additional factory information. There are no directions on how to play. There is plenty of room for iteration, though!
I enjoyed programming this game over a weekend - I learned a lot about JQuery and DOM manipulation, calculating against the window size, and using CSS to style an app. I've also learned a lot about Incremental Games as a whole - the fine art of balance, of the relationship between production units, and the enjoyment of 'leveling up' - seeing your money fly higher and higher.
My plans are to implement the missing features - saving, UI improvement, tutorial system - to make a releasable product. Using this experience, I would then like to launch into a more complicated Placement-Aware Incremental Game, an idea I've had rattling around my skull for a while now. In the meantime, I'll also explore Incremental Games as a whole, their classifications and playstyles, the main games in each area, and the future of the 'genre' as a whole.
As always, feedback is welcome at jurnacsr@gmail.com