A little blog.

Posted by Astryl on Nov. 20, 2014, 3:39 p.m.

It's been over a month since I've written a blog. And I have some excuses for that. Ranging from laziness to business and everything in-between…

So yeah… I regret not being able to finish my game for S4D. I haven't even opened the project since three weeks ago, nor have I even given game design much thought for that time either.

The main reason for this is that my job is becoming busier. A lot busier. My range of responsibilities has increased, the number of customers we get on a daily basis has increased… and this is all great. It means I have a modicum of job security to look forward to; we're starting to get people from the next town over come to our shop for our prices and service! (And they have three franchise stores there).

And, with encouragement from my boss, I've been using the spare time I have at work to develop my programming skills further, specifically tackling areas I'm not comfortable with.

Things like GUI programming, design patterns, networking, inter-process communication, Unix/Linux specific stuff… and it's been great so far.

Within the space of three weeks I've become proficient enough with wxWidgets to create a simple GUI off the top of my head. It's dead simple once you get your head around the way it presents itself.

More C++/wxWidgets/Linux stuff

Linux. The more I use it, the more I love it. I've reached the "convince customers that Linux is a more-than-capable and free Windows upgrade" point. I've installed Lubuntu on three machines over the past couple of weeks; and the customers are satisfied.

But what I really love about Linux? Programming for it. It's so ridiculously easy to pull off what would otherwise be a hair-pulling exercise in Windows. Case in point being the existence of the Posix threads library.

Sockets are suddenly straightforward and easy to use. Child processes are relatively easy to manage… Yeah. It's been a fun time.

For the first time ever, I've been piecing together a "real world" application. A Point of Sales program, with an Inventory Tracker (Compacted to "POSIT").

After reading a few books on design patterns, I spent the time designing a decoupled system in which the core logic doesn't need to know about the data, and neither of those need to know interface internals, and so on.

wxWidgets allows for dynamic binding of event handlers during runtime, and I've been using that to my advantage. For data, I've been using a custom key-record system that defines the fields and types of the record as well as the content.

Each 'system' provides basic interfaces to the outside world, but I could just as easily use the Core and Data systems from a CLI implementation (And do, for testing), or create a socket based interface that can use a Node front-end. It's fascinating to piece together such a system.

The Inventory manager has been pretty fun to write; the fun began when I essentially noted that the "real" inventory classes more or less mirrored "game" inventories (In that the inventory contains a finite or zero number of items that have "effects" and cost/value associated with them).

The interface is designed in wxFormBuilder, and because of the way I detached event logic from the UI classes, updating the design is a breeze; even after deciding I had to redesign the entire interface using SplitWindows (For resizable panels), the existing logic worked just as it did before.

I'll try remember to snag a screenshot of the interface tomorrow. I'm rather pleased with how easy it is to piece these things together, and I'm already planning a new editor for my engine.

In other news, I've begun to use lambdas a lot more in C++. They're great; just enough functional programming without making the language a complete headache!

Also, I've begun to see proposals coming out involving the addition of modules to the language as a replacement for the old #include directive.

I think this could potentially alleviate a lot of headaches we tend to face when dealing with circular dependencies and such.

One feature I'm waiting for is for somebody to add the ability to replace :: with . when dealing with namespaces and static methods/members… because :: is ugly.

Shop stuff

Stupid stuff still happens on a daily basis at my workplace. It's usually quite frustrating while I'm dealing with it, but it's funny in hindsight.

Some new samples of the local flavor:

- Being told to "make" a PCI-E card fit an AGP slot because "it's your job".

- Having to deal with and attempt repairs on a laptop in which the HDD was taken out of the bay rather violently, and the SATA connectors were literally ripped off the board. The solution involved copious amounts of fuming, an SD card, external HDD bay, and RAM-loaded Linux.

- People buying a cheap second-hand machine from us. I tell them it won't play games. They still come back a few days later accusing me of selling them faulty hardware.

- One of my 'competitors' coming into the shop with his own PC. The problem? He didn't know where to plug the front-panel cables in on the motherboard (Even though it was clearly labeled). Took me all of 10 seconds…

- Being told that Minecraft, Borderlands 2, Far Cry 2 and several other games are "Free games, the ones at the shop are illegal".

- Being asked to send faxes. CRACKS ME UP EVERY FUCKING TIME SOMEBODY COMES INTO THE SHOP WITH A 100 PAGE FAX.

- Again, faxes. And when I ask for the fax number, they hand me an email address. Explanations and hilarity ensue.

- Also, emails. When I ask for the email address, I get a fax number. Involuntary spasms may occur.

- Having to explain that Windows 7 or 8 (Or Sevenorate as some of the locals are calling an imaginary combination between the two…) will not slow your piece of shit laptop up by any stretch of the imagination.

- Ditto for desktop PCs.

- Same, but this time with fans being the preferred 'upgrade'.

- Getting paid in R200 notes for a R2 printout. I tend to point-blank deny these, though, much to the annoyance of the "valued" customer. Spend more money and I'll assign more value to you.

- Having people stop outside the shop, read the sign that clearly says "Friendz Computers", and still asking us "is this a computer shop?". This behavior has convinced me that the people in this town can't read, as they tend to ignore our other signs too (Back in 15 minutes, Away on Callout, etc).

- "I took this box out of my computer, it was making a noise. Why isn't my computer working?" - confused customer pointing at HDD.

I'm starting to really enjoy the work a lot more though. It's really satisfying to repair a machine quickly and get thanked by customers for efficient service.

I actually received a tip from one of my customers a few days ago. An Irish couple on holiday visiting a relative. They wanted me to pull the photos off this relative's computer and put them on a USB drive; the old man didn't want the PC anymore.

Not only did they give me a large tip afterwards (Precisely the same as the service fee), they donated the PC to the shop!

Well, it's back to work tomorrow. This week has felt really hectic; I felt like yesterday should have been Friday with how dragged out everything felt… and I'm only facing Friday tomorrow.

Gaming

I still find an hour or so after work to play a few games. For the most part, that's been nothing but Risk of Rain for the last week; it's addictive as heck.

Just beat it for the first time last night.

I've also got my copy of the Witcher 2. Even better, it's the Enhanced Edition, which is very nice of GOG. I'm just waiting for it to download.

And on a final note… Dark Souls is extremely close to updating.

But here's a little twist… it seems that the update isn't merely a patch to remove GFWL…

SteamDB has a few interesting nuggets of information on what's going on behind the scenes.

One of the first things I noticed is that the new Depot size is 7.4GB, up from 4.06GB. This indicates strongly that there are some potential content additions and fixes.

Secondly, the depot branches. There are two major new branches of interest.

The first is "steambuild", with the description NOG4WL. Obvious what this one is.

But a new one popped up the other day. "hybrid", with the description "G4wl + Patch".

So yeah, it's pretty obvious that something is being patched, and it's probable that something has been added to the game. 3.0+GB of content is a bit much for a mere migration to Steamworks :P

Of course, I might well be horribly wrong… but I'm allowed to have one obnoxious fanboy moment per decade. >:P

I'll love From if they release the patch tomorrow, just in time for a weekend of invading. :3

Well, that's enough blog from me. I need to get to sleep.

Comments

eagly 9 years, 10 months ago

Hahaha, faxes. That really made me laugh. :D I kind of wish fax machines were still more widely in use. They were fun.

It's awesome that your boss pushes you to improve your programming when you have free time at work. And it's awesome what you've achieved so far! I have an old netbook that needs a bit of repairing. The screen keeps going white on it, so I think I need to replace the cable to the screen, and if I do that I might look at Lubuntu on it. Windows XP is OK but Lubuntu looks a little more lightweight and might be good for some very simple stuff. Thanks! :D

Astryl 9 years, 10 months ago

The only consolation I have when sending huge faxes is that the guys on the other end are about to receive death by a thousand paper cuts…

Lubuntu is the distro I use at work on my primary PC; I do all the book-keeping, development, marketing, etc with it. It's really light-weight, based on LXDE and is stable. :P

EDIT: Also, because it's an Ubuntu variant, there's a native Steam build for it; and I've found that Linux tends to handle games better than Windows from a performance standpoint.

Astryl 9 years, 10 months ago

Heh, I'm in a bit of a quandary about it. More job-related-work means more pay, but more time means I get to do the things I enjoy most.

Though realistically, it's a small PC shop in a smallish town. I'm not gonna have people in the shop all day.

Windows has a lot of crap on top of its low level APIs that make things hard to work with. There are socket, thread and piping implementations for Win32/64, but they're obviously not as efficient as native API support. Or at least native API support sans bloat.

The program I'm making is taking shape. I've started using Trello for organizational purposes, BitBucket for syncing work between my work PC and my home PC, and obviously GIT.

Got a screenshot of my UI so far. It's kinda blank, because I haven't actually added any data to the thing yet; I need to make a few representations of our shelf items just to test things out, I think.