Blog Feed

Engaging Usability

Petronas Towers, Kuala Lumpur, Malaysia

This month was… Interesting. Most of the world was recovering from a global pandemic, while some parts were embracing it. Much of the world was on fire (literally). And in the midst of all that, I found myself studying the biggest mystery of all, one that has always eluded my understanding: Humans.

Specifically, I studied “Usability Engineering”, or “how to make stuff so people can use it”. The principles are simple in application, but interfacing with other humans has always been one of my weakest points. I was unsure how this course would affect this aspect of my personality, or if it would at all, but I believe that I have learned some important methods. Most importantly, we studied user-based research.

In my mind, my capstone project is fairly straight-forward… I need a screen for visually programming drones, I need a screen for observing their combat, and I need menus to connect them and each other. While on the surface this might sound simple, upon pondering this, and the idea that not everyone will be testing the game on a ten-inch tablet, I realized that user involvement is definitely needed. The mechanics of the game might be all mine, but I will need to engage others regarding the interface design.

To that end, my plans for user research involve two types of information gathering: Desirability Studies and Participatory Design Workshop. First, I will gather elements of the interface and work with my player group regarding the best layout, control sizes, and other details. Once I have compiled a “paper” prototype for the interface, I will assemble an more dynamic prototype that can actually be observed by the player group.

This will allow me to get user input regarding interface design during the design process, and then again after the design is more settled. If all of this is satisfactory to the player group, I can move forward with actually creating the interface. If not, this will be an excellent time for them to raise their concerns.

Throughout this month’s course, I learned other details, like some information I needed regarding prototyping, and some of the formal “paperwork” that goes with software design in a corporate setting. Even if I find myself working independently, this information will be helpful. I feel as though this course has prepared me for an aspect of software design that has eluded me in the past – the aesthetics. I look forward to seeing how this helps my final product.

Agile Times

This has been a trying month. Not only has my class (Agile Software Engineering) had a lot of material to cover, but the nation where I live has been in the grip of a pandemic. Where just going to school and/or looking for work can be a full-time challenge, trying to navigate a society in an indeterminate state of possible shutdown can add extra challenges.

That said, for me, a lot of this month hasn’t changed.

I’ve acquired some Agile Framework education before, but that was always either underemphasized or rushed through so that we could move on to other topics. I do feel as though I learned from this class, and have a firmer grasp of Agile methodologies. But this class covered more than that.

I have also learned some information regarding monetization. Creating games and publishing them for free is fun and educational, but at some point, even developers need to pay their rent. As my job situation doesn’t seem to be getting any better, my best hope might be to try to earn money independently. Learning about different monetization options was definitely useful. I love programming, but I have many other things to learn, and left to my own devices, I might just focus on the programming and forget the rest.

I did some further work on my Capstone, also. I have submitted a Design Plan. I still need to finish a working prototype to submit to my technical advisor, and I think I’m supposed to find a design advisor. This is something to work on in this coming week.

I did create a Kanban chart on Trello for my project. This activity helped me break down the pieces I need to work on and sort them in a reasonable order. Charts like this are often better for a team, but I’ve found in the past that it can be useful in organizing solo projects, also.

I have also given a lot of thought to expanding my existing projects. Some of the games I’ve created for class are cute little games that are great for getting foundational knowledge, but some are also good beginnings to what could be fun and useful endeavors. Going forward, my main focus in this regard needs to be on my capstone, but when I’m not working on that, I can work on my other projects, expanding games, finishing up games that are nearly ready to go live, and coming up with future projects. This could become exciting.

End of an Error?

I won’t say that this past month has been easy. The difficulties are varied, but mostly understandable.

Workload

The workload for this month was intense. In theory, I had to write two video games. In practice, I had to test several frameworks to see which ones would work on my computer without spending too much time chasing down details. Then, I had to learn two frameworks. Then, I had to write two games, one on each framework. Then I had to write three more programs using sensors. As it happens, although the phone I had ten years ago was loaded with sensors, most of those sensors are no longer available in many modern devices, including my gaming tablet and my personal tablet. I therefore had to determine which sensors I could use for my software.

Issues

After creating most of my second game on one platform, I learned that the platform has problems detecting Android hardware sensors, which were part of the specification of that game. I had to learn a new platform and recreate the game on that one. I believe that my experience with the first helped with the second a little, but they are quite different (Unreal Engine and Unity). Also, both platforms had bugs, as did the one I used for my first project (Godot), but Unreal Engine seemed to have the most. All of this, on top of a Pandemic, added extra levels of challenge.

Time Management

Time management was difficult. Ideally, I should spend my time, at least a full “work day” per day, working on my projects. Realistically, I have been searching for jobs, juggling appointments and interviews, and attempting to survive. Also, due to the pandemic, my father was forced to move, for which he required my assistance, as he no longer has an automobile. For this same reason, I take him to his doctor appointments. Still, I think I managed to get a handle on time management. I also managed to prioritize and find a balance.

What I Learned

I learned quite a bit, I believe. I learned three platforms, one language (enough to suffice for now), and worked with making separate tools work together (such as Blender and Python). I also got more ideas about games (and related content) I want to create. I learned some methods of resource conservation, which is important for mobile applications, although I still need practice. Modern computers make for lazy programming. I also learned some testing techniques, although they were difficult to implement in the platforms I used.

What I Achieved

I created three games. I obtained assets that I want to use for my personal projects, when I have time to work on them. I created some basic and skeleton apps that I can use to build larger, more useful apps. I also spent some time on Discord, getting to know people related to my schooling.

Capstone

I believe at this point, based on my experiences this month, that Unity may be my best option. It has the best performance of the platforms I used this month, it supports 3D better than any except, possibly, Unreal Engine. It also has the scripting support I’ll need to implement some of the advanced features I want. I’ve given some thought to how I’ll accomplish parts of the Capstone, but I haven’t actually started writing any of them yet. I’ll need to start working on some of the pieces of the overall project, such as planning an internal scripting “language” and planning details of my options. I also need to start building some of the importable assets, such as meshes and textures.

Capstone Advisor

I have communicated with my Capstone Advisor this month. He happens to be my current professor. We discussed things via Discord, although most of it related to this month’s projects. I did get to know him a bit better, which I believe will smooth our relationship going forward.

Moving Forward

I think I have a better grounding for building some things I need for my advisor, such as some prototypes and details. Hopefully, I’ll have more time in the coming month to work on these details, as this month was a whirlwind.

The End of the Beginning

Today, I come to the end of a four-week course named “Computer Science for Engineers”. I found the name fascinating, because I have thought of myself as an engineer for years.

I’ve studied Computer Science before, but this time was different. The standards were higher, for one thing. As a graduate-level course, I had to pay more attention to details than I had in undergraduate courses. The time constraints were also more difficult to manage. I could easily spend all of my time working on this course and not be satisfied that I spent enough, but instead I had to balance it out with the task of finding a job and my annual and quarterly visits to the Veterans’ Hospital. I settled by using my waiting time at the VA to read course materials on my eBook reader, and decided to forgo leisure activities, for the time being. It helps that I enjoy programming.

Some of this course covered basic Computer Science topics, such as algorithms, algorithm complexity, and techniques like as recursion. All of this was covered in my undergraduate studies, but I believe it was covered more completely here. I also have had more time since graduating with my BS degree to gain familiarity with the subjects, so I feel I got more out of if this time.

Another topic in this course was mobile programming. I have programmed computers from the old TI-99 and Tandy 102 systems to more recent high-end PCs and low-end SGI boxen, but one area that I really wanted to explore is mobile programming. I had familiarity with Java, but mobile programming involves so much more. Any books I had tried to learn from were out of date by the time I found them, but the way the projects in this course were presented worked quite well. I also felt that the fact that so much of each project was left to me to research and create helped me learn more. I know I have a lot to learn, still, but I feel much more confident about mobile programming.

I’m also a lot more comfortable with Java. Although I used Java in getting my BS, and my capstone was an application written in Java, I felt that the courses in that degree program actually involved too little programming. This was a topic I brought up with my school, after I was elected to the Student Body Senate, but I doubt that the curriculum was changed based on my commentary. In this course, I worked on three projects, each involving different concepts, and with each I was able to build on what I learned on the previous project. I definitely feel that I’m getting enough programming experience here.

I’ve also noticed another change in my attitude. When I tried setting up a small tablet as my car’s GPS device, I noticed that the tablet wasn’t connecting to the car’s BlueTooth receiver automatically when I came into range with the tablet. I considered installing Tasker, which I’ve used in the past for automation, but then I considered that I’m supposed to be learning to develop my own Android software. I doubt my skills are quite up to replacing Tasker, but surely I could construct something as simple as a service that checks for my car’s BlueTooth receiver and connects to it. I noticed a similar change with other things. When I was pondering home screen widgets for my tablet or automated notifications for my phone, I realized that I could probably figure out how to create those myself rather than try to find something that would match my needs. This would not only allow me to use smaller, more specialized apps, widgets, and services, but would also provide me with more experience in those areas of programming.

The thought of creating services for my devices also made me consider my capstone. The game I want to produce would require programmable intelligent agents. According to a research paper I reviewed, the script language built into Unreal Engine, my current 3D engine of choice, is insufficient for the task. The paper proposed creating the agents within Unreal but controlling with with an external process, or “controller”. This is something I can do. I still need to learn some details, but I believe it will work better than trying to automate entirely from within the 3D engine. Also, if I write the controller in native C or C++, the performance will be greatly improved. Even if I use a separate Java process for the service, it should still be faster than writing it within the 3D framework.

This is what I have so far. It was a tough month, on multiple levels, but I survived. Some people say, “What doesn’t kill you makes you stronger.” These people are wrong. Still, some things that don’t kill you can make you stronger, and I dare say I’m stronger now than I was four weeks ago.

Getting Some Perspective

Look again at that dot. That’s here. That’s home. That’s us. On it everyone you love, everyone you know, everyone you ever heard of, every human being who ever was, lived out their lives. The aggregate of our joy and suffering, thousands of confident religions, ideologies, and economic doctrines, every hunter and forager, every hero and coward, every creator and destroyer of civilization, every king and peasant, every young couple in love, every mother and father, hopeful child, inventor and explorer, every teacher of morals, every corrupt politician, every “superstar,” every “supreme leader,” every saint and sinner in the history of our species lived there–on a mote of dust suspended in a sunbeam.

The Earth is a very small stage in a vast cosmic arena. Think of the rivers of blood spilled by all those generals and emperors so that, in glory and triumph, they could become the momentary masters of a fraction of a dot. Think of the endless cruelties visited by the inhabitants of one corner of this pixel on the scarcely distinguishable inhabitants of some other corner, how frequent their misunderstandings, how eager they are to kill one another, how fervent their hatreds.

Our posturings, our imagined self-importance, the delusion that we have some privileged position in the Universe, are challenged by this point of pale light. Our planet is a lonely speck in the great enveloping cosmic dark. In our obscurity, in all this vastness, there is no hint that help will come from elsewhere to save us from ourselves.

The Earth is the only world known so far to harbor life. There is nowhere else, at least in the near future, to which our species could migrate. Visit, yes. Settle, not yet. Like it or not, for the moment the Earth is where we make our stand.

It has been said that astronomy is a humbling and character-building experience. There is perhaps no better demonstration of the folly of human conceits than this distant image of our tiny world. To me, it underscores our responsibility to deal more kindly with one another, and to preserve and cherish the pale blue dot, the only home we’ve ever known.

Sagan, C. (1994). Pale blue dot: A vision of the human future in space.

My First Post – No Other Way

When I was a teenager, I was reading a book wherein an author quoted a few lines from Cecil Day Lewis’ poem, The Volunteer. In it, she was writing about some of her own personal struggles, and her efforts to convey to people why she was choosing the path in life that she was.

I, at that time, was facing struggles of my own, mostly different than hers, but relatable. The words of the poem spoke to me, just the same. These words stuck with me through the years, and I think about them sometimes.

Tell them in England, if they ask,
What brought us to these wars,
To this plateau beneath the night’s
Grave manifold of stars –
It was not fraud or foolishness,
Glory, revenge, or pay:
We came because our open eyes
Could see no other way.

(Lewis, 1945)

Because sometimes, when I open my eyes, I can see only one way.

References

Day-Lewis, C. (1945). The Lewis, C. D. (1945). Short is the time: poems 1936-1943. New York: Oxford University Press