Morgemil Part 5 – A step backwards and forwards

My brother and I once took a ballroom dancing class where we were taught the basics of the waltz, salsa, tango, and foxtrot. I wasn’t much interested in the salsa and I no longer remember the foxtrot or the tango. What I do remember is a few steps of the waltz, especially the box where the movement of your feet make the corners of the box.

The dance instructor kept me making the box for a while and it was a little boring, we didn’t actually go anywhere. And that is what I feel like I’ve been doing on this project: taking a step backwards for every step I take forward. After I learned how to make the box and practiced it for a while, the instructor then showed me more steps that can be taken with the waltz to allow free-reign of the ballroom. In the same way, I’ve been brushing up on F# and functional paradigms so that I may have all the power they offer.

Continue reading Morgemil Part 5 – A step backwards and forwards

Consistency

My original stated goal was to “write on a consistent basis“. I’ve already broken that goal by missing last weekend’s blog post.

I purposely did not state the time-frame when I made this commitment so that I could be sloppy and miss a few weeks without being held accountable. Even though I mentally promised myself once a week. By giving myself room to shirk from developing this habit, I did so. So here I state that I will do my best to be consistent and post a new topic every week.

Consistency builds habits. By writing about new topics each week, I am building a habit to learn new things. Learning new things often is one of my favorite things about my chosen career: software development. Sometimes when I’m tired or frustrated I’ll lose sight of that fact but by ingraining a learning habit, I can consistently be a better software developer by being more accustomed to, and happier, when I need to learn something new.

Consistency builds accountability. This is a no-brainer: do what you promise and your reputation will be worth its weight in gold, if non-corporeal concepts were to weigh a measurable physical amount. The point is that the respect of others is of incalculable benefit.

Consistency builds software. I’ll never finish my software projects if I don’t work on them. I can’t let much time go between spurts of work or my memory of what I was doing will start to deteriorate. Software is very complex and it is easy to forget details if you don’t see it often.

 

Morgemil Part 4 – Confidence

Being able to say that I have confidence in something I programmed is a great feeling. To build this confidence, I’m using unit testing. Unit testing is a method of verifying that individual pieces of code work as expected. I will not get into all the benefits of unit testing, I’ll just say why I am doing it: to check my work since no one else is doing so.

I began work on unit testing this afternoon. I installed NUnit and the Visual Studio extension to run unit tests directly:Nunit_extensionThen I added a new project to the solution called “Test”Nunit_projectI started with the easy file to test. Vector2i is all integer math, the expected results should be easy to reason about. To test Vector2i I made a new file with the same name and added a suffix “Test” in the new project. I read up on a quickstart with NUnit and F# and I wrote some code:

Continue reading Morgemil Part 4 – Confidence

Morgemil Part 3 – The Core

I’m going to be taking a bottom-up design approach to this project. Yes, I have an overarching general design, but I fully expect it to change. Change is acceptable and a constant. I’m going to be doing bottom-up design since I am unfamiliar with it, so another chance to learn. I’m not obsessed with keeping my original game design pure as some great mechanics could arise from unforeseen interactions.

Unforeseen interactions is sure to occur since as much of the game as possible will be procedurally generated (another hint, are you keeping track?). Therefore there will be a lot of math involved, not hard math, just a lot of it. So I’m going to start off with some clear functionality that I know will be required. Also, this is a chance to start becoming accustomed to the F# environment. Continue reading Morgemil Part 3 – The Core

Morgemil Part 2 – A Technicality

About five years ago I almost made a video game. I say “almost” because I got bogged down in constant rewriting while searching for perfection so that project lost momentum and was never finished. Not to mention that I hardly knew anything, as this was the summer before I started college. A bit of digging in the history banks turned up the old Google site created for it. https://sites.google.com/site/intimidationgameproject/

I remember learning a lot during that project: Python, Panda3D, a ton of search algorithms, and a little linear algebra. All of that knowledge served me well as a springboard to further concepts. Just as importantly, it helped reinforce some concepts of software development I was taught later: the language doesn’t matter, results matter, and to focus on working software as the perfect code will never be reached, no matter the iteration count. Continue reading Morgemil Part 2 – A Technicality

Morgemil Part 1 – Goals

I have a college-ruled notebook that I bought for a dime some years ago. I carried it to college with me and kept it in a box under my bed. Now, almost a year after graduation, I can still see that notebook sitting on the bookshelf to my right. Contained in that notebook is every project idea I have had in the intervening years and considered worthy, along with a bevy of notes and scribbles about the goals, design, and often implementation of that idea.

This long-term series is going to take the first idea entered into my notebook, in fact, older than my notebook: a minimalistic, old-school, single-player, open-world, 2D RPG.

This is hardly ground-breaking or original. The market is filled with such things and each has their own twist or gimmick. That is fine. I’m here to learn new things. I own this project and have the advantage of being able to do what I want.

So what do I want? I’m going to lay out a list of general goals here so that I can periodically remind myself. Many of these goals will be difficult to quantify and define, but I’m going to list them anyway because those are very commonly seen software requirements.


Goals

Continue reading Morgemil Part 1 – Goals

Questing for knowledge

I am Daniel Oliver, a professional software developer residing in Nashville, Tennessee, and this is my blog.

My purpose in initiating such a recurring demand of writing from myself is of the utmost importance, for without it my resolve will weaken and this blog perish. This purpose is to become a better software developer and to become a better professional.

To accomplish this purpose, I shall write on a consistent basis. By committing to write about something, I’ll have to learn new knowledge and concepts, refine old ones, or possibly even correct anything I know wrongly.

Do not be afraid that my writing shall be limited to technical subjects of computer science. I am also interested in the business aspect of software for it is of vital importance. After all, every business must perceive business value, or preferably direct economic value, to commission software.

Gaining technical excellence shall not be the only topic but it shall be very prominent as it is an excellent foundation for good software. Making appearances in this category will be programming languages: their structure, implementation, and utilization; my personal projects; best practices; software packages; computer science; and industry specific knowledge.

The philosophy of software development is another piece to add to the puzzle. Achieving technical excellence and creating business value must be done in an efficient and timely manner or else any opportunity would be lost to a competitor or merely to the passing of time.

These three things: technical excellence, business value, and software development are not the only concerns present; but they shall be the triad that makes up the vast majority of my topics.

So I suppose all I’m really trying to say is: I have a lot to learn. Will you learn with me?