HN user

mminer

236 karma

Software developer (games / film), ex-Unity. Studied computer science at the University of Waterloo, filmmaking at Vancouver Film School.

https://matthewminer.com

Posts19
Comments58
View on HN

I’m personally investing time to level up my proficiency with digital content creation tools — Houdini, Unreal Engine, Unity. They mostly only apply if you work in games or visual effects, but they’re a blast to play with even if your day job is in a completely different industry.

Game Loop 7 years ago

I similarly have difficulty learning a concept when it's presented using real-world metaphors that aren't often actually expressed via code. This is how object oriented programming was taught to me: imagine a door object, which contains methods open and close, and it contains a knob property, which is its own object with functions to turn left and right, and so forth. Once you're familiar with OOP this might seem like a good way to explain the concept, but without a specific application to apply it to, it's difficult to see the purpose.

It does a great job of explaining the underlying ideas behind different databases and data processing systems. Even if your needs are met by, say, a traditional RDBMS like PostgreSQL, it’s helpful to know about the alternatives and what problems they solve. It’s the sort of book I wish I had read years ago; I’m sure you’ll be happy you picked it up.

Build more long-lasting artifacts. As a software developer that has primarily worked in startups, most of which no longer exist, it can be frustrating to have nothing to show for the hours I’ve worked. I envy a friend of mine who works as a 3D animator on feature films who can point out the exact shots he’s responsible for and always has a permanent record of his efforts.

I recognize that software inherently lacks the shelf life that mediums like film enjoy, but I plan to at least partially achieve this goal by writing more often, contributing to open source more frequently, shipping and maintaining side projects, and striving to make the company I work for a success — steps that will give me something concrete that others find useful / enjoyable.

Almost without question I'd choose Unity for most projects. Its rich ecosystem, large community, and decent documentation make it a solid choice. Many of its warts like only supporting an ancient version of C# have been remedied in recent releases (as of Unity 2018.3 you can write C# 7.3, which is a nice language indeed). Unreal's Blueprints are slick for gameplay scripting, but I'd choose C# over C++ for game code any day.

In the end they're both excellent engines, and I suspect a AAA game would be better served by Unreal, but I find Unity far more flexible for arbitrary game designs whereas with Unreal you sometimes feel like you're fighting its roots as an FPS engine (though if you're making an FPS, UE4 might be just what you need).

Unreal Engine and C++. I've long worked with Unity, but as part of a new job I'm tasked with developing our Unreal plugin. Previously I only touched C++ on occasion, so I had a lot to learn — and have a lot to learn yet — of best practices, new features available in C++11, dealing with exceptions (Unreal disables them by default), and so forth. Likewise for Unreal. Like C++ itself, it's wonderfully powerful but sometimes painfully complex.

I also continued to deepen my understanding of databases and distributed systems. My favourite read this year was Designing Data-Intensive Applications which made me more familiar with the pros and cons of the various datastores and provided a better sense of the tradeoffs that each makes. It also gave me an appreciation for the guarantees that the battle-tested relational databases provide. One of my goals for 2019 is to improve my SQL knowledge — thus far any extra effort to understand it better has payed dividends.

Thanks for the links, those look promising. After some searching I often saw TypeRacer (https://play.typeracer.com) recommended also. I tried a few other typing tutors but found that few emphasize symbols like {}*&#$ that I use frequently and are responsible for most of my mistakes.

In a previous job, I built (what sounds like) a similar system. From a web UI, coworkers would see a list of recent commits, from which they could fire up an instance of the web app on demand. This created a new Docker container running the server that they could navigate to. A unique port distinguished each instance. Git tags indicated particularly important commits, e.g. new features that required more extensive testing.

Docker worked great for this task, allowing instances to be created and destroyed quickly. In a fresh instance of the web app you could create new accounts and import data then throw away the container when you were finished or wanted a fresh start. It worked especially well for non-technical people to see the latest changes as soon as they were pushed.

Swift 3.0 Released 10 years ago

To placate Carthage dependencies that complain about a missing SWIFT_VERSION configuration, try setting the TOOLCHAINS environment variable.

  TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrap

Splitwise works especially well for groups that share bills regularly, e.g. roommates. Recurring bills and email reminders are especially helpful to make the monthly shakedown unnecessary. My favourite feature is the option to simplify debts, minimizing the number of payments that need to be made between people to settle up (their example: if you owe Anna $10 and Anna owes Bob $10, Splitwise tells you to pay Bob $10 directly so that there's only one transaction instead of two).

It's a great example of a "small" piece of software that does one thing and does it well.

I've been using Monodraw for several months and really enjoy it. An indispensable feature I don't see mentioned on the landing page is the ability to embed an image in the canvas so that you can "trace" over it. It makes converting an image to ASCII by hand much easier.

You actually can export a selection to the clipboard using command-c. I never use the export button, opting instead to select all with command-a then copy with command-c. Be sure to check out the clipboard tab in preferences. I find the option to trim trailing whitespace helpful, and the comment styles are useful to embed diagrams in source code.

Agreed, with all the complexity that game development entails, it's liberating to use a technique that's so "lo-fi". Interesting seeing Notch put his levels together. The speed at which he moves from Paint to running level is something to aspire to. Our workflow was fast, but not that fast.

I definitely believe it. It's inspiring to read about the techniques and hacks used at the dawn of game development, so many of which are still useful today.

Re: ASCII painting, recently I was looking into using an ASCII drawing tool like Monodraw [1] for creating ASCII maps. A format as portable as plaintext is appealing.

[1] http://monodraw.helftone.com

I was afraid that the opposite would happen, that hosting on a custom domain gives up traffic that a network like Medium provides. But then, I'm not actually sure how much traffic this is, or if it's only helpful for authors that write about mainstream topics.

Thanks for the link, Prose looks like it might be the perfect bridge between ease of editing and the control and flexibility that GitHub Pages provides. I'll give it a try.

Regarding editing (and I think you make a good point that ease of editing is important), I often find myself frustrated with WYSIWYG editors that make such a mess of the markup that you end up modifying the raw code anyway. Ghost and GitHub Pages look like they take the right approach by making Markdown the default and not attempting to hide it behind a GUI.

[dead] 13 years ago

I imagine the day will come when version control is possible and trivial to take advantage of for all types of documents, not just source code. Systems like git have become so ingrained in my workflow that I forget that there's no comparable solution for music and other media. This looks like a step in the right direction. Best of luck!

Like other posters here, I spent many, many days playing Escape Velocity: Nova. It was the game that made me want to build my own games and inspired me to learn to program. At the time, multiplayer capability was one of the most oft-requested features, to the point where mentioning it elicited exasperation on the forums. It prompted myself and other fans to start work our own multiplayer space RPG which we named Dawn of Infinity. The project didn't progress very far, but helping plan it was a blast.

What always impressed me most though was the community that emerged from Ambrosia's games. The forums and IRC channel were vibrant places to discuss game ideas and politics alike and the developers of EVN had a podcast before podcasts were cool [1]. It was a great place for a teenager on the Internet to hang out. You will be missed Ambrosia.

[1] ATMOS Tonight: http://at.atmos.com.au/

Their Python container, which became available last August, has yet to be updated to support version 2.7 (released 2010) or 3.x. This may not be indicative of how often they'll update the node.js container, but their effort to keep up with the latest and greatest doesn't seem too aggressive.

Introducing Roku 3 13 years ago

Adding a headphone jack to the remote is a smart idea. When watching movies late at night I string a long audio extension cable between my headphones and the DVD player, but this solution is much more elegant. It's one of those "of course!" ideas that seems so obvious once you see it.