mark cerqueira well-rounded nerd

Meio Dia e Que?

Tina está aprendendo português e enquanto meu português não é perfeito eu aprendi uma coisa o outra dia na aula dela!

A minda vida inteira, ás 12:30 PM, quando alguem me perguntava “Que hora é?” eu sempre respondi, “Meio dia e meio.” Más isso não e correto! Até os meus pais dizem “Meio dia e meio!”

Porque estamos a falar sobre meia de uma hora (substantivo feminino) é correto para dizer, “Meio dia e meia.” Dia é masculino e isso é porque incorretamente dizemos meio. Com 12:30 AM porque noite é feminino e meia é feminino naturalmente não erramos quando dizemos “Meia noite e meia.”

@JvmOverloads in Kotlin

@JvmStatic and @JvmField are well-known annotations that can be used in Kotlin files to expose companion object methods and constants. But the other day I had an “oh wow” moment with @JvmOverloads so now it has joined the pantheon of great JVM annotations provied by Kotlin. Consider this method in a network utility written in Kotlin:

From a Kotlin file you can call this method in many ways:

But from Java you’re a little more restricted. Without the @JvmOverloads annotation from a Java file you would need to call the method with all three parameters: makeNetworkCall("", 4, true). Adding @JvmOverloads generates two overloaded methods for you using the default values specified in the function declaration.

New programming languages like Swift and Kotlin can (naïvely) be evaluted solely on the merits of the language itself but a more accurate evaluation will look at the ecosystem: Xcode, Objective-C, Swift and Android Studio, Java, Kotlin. Annotations like @JvmOverloads make Kotlin a team player in an already established ecosystem giving it much more potential for disrupting and improving that ecosystem.

Culling Notifications

Inundated by notifications on my phone, a month ago I started aggressively long-pressing notifications and disabling all but the ones I find truly important (e.g. text message from girlfriend, MCanning going live on Twitch). Why? Most things I was getting notified about weren’t super critical and could wait to be addressed, but notifications don’t wait. They grab your attention immediately and beg for some action that pulls you away from whatever you are doing. A former classmate has a much more well-thought out post on why we should be fighting against Death By Notification.

A month into this experiment I find myself checking my phone a lot less frequently and visiting social media mall a lot less. I don’t plan to re-enable any notifications.

Initial Impression - Ys 8: Lacrimosa of Dana

I’m (only) 16 hours into Ys 8: Lacrimosa of Dana after only having it for a few days! Initial impression? It’s great, addicting, and I’m having trouble putting it down! I played Ys: Memories of Celceta back in 2014 and really enjoyed that game, and Ys 8 is upping the awesome ante even more. I recall running my Vita’s battery into the ground when playing Memories of Celceta and that has become a daily experience with Ys 8.

Things to level everywhere!

If you love progression and powering things up, you’ll love this game because there are levels everywhere. Your characters have levels (increased by battling), their skills have levels (increased by using skills), your village technically has a level (increased by recruiting more castaways), your bonds with people in the village have levels (increased by completing quests for them), the defenses of your village have levels (increased by providing raw materials), your weapons have levels (increased by providing raw materials), and the forge that lets you upgrade equipment has a level (increased by providing Fuel Stones).

Complete the map!

If that’s not enough to keep you busy, one of the core missions of your team is to complete out a map of the mysterious island you are shipwrecked on. For each region of the island your goal is to fill in the map by exploring every nook-and-cranny, collecting all the treature, discovering all the harvesting points, and finding the special location points. If getting 100% across the board isn’t enough you’ll get rewards for every 10% of the island you explore. Most regions require revisiting as some areas are blocked by impasses that require more villagers to help you unblock (e.g. a big boulder might require 10 villagers to remove but you currently only have 8) and some areas require special adventure gear that gives you more exploring power (e.g. gloves to climb up walls, boots to let you walk over swamp water).

I’m not even halfway through, but Ys 8 is an incredibly fun game so far that feels like a real winner!

ChuckPad Gets Location Support

It’s been a few months (ages when talking about code bases) since I’ve done any work on the ChuckPad Sinatra server and iOS API wrapper but this week I added support:

  • Setting location (latitude and longitude) on patches
  • API to fetch a random set of patches from around the world

There’s nothing super exciting about this, but what is noteworthy was how easy the testing system I had set up made adding new functionality. I configured the Sinatra server, made changes to the iOS API wrapper, and wrote some tests to exercise the new functionality on the client and server. This allowed me to verify the system worked end-to-end. Bonus points to the tests I had previously written catching some things I broke when making the changes.

We can file this under #EngineeringExcellence.