2021.03.14

For the last 9 years, I’m working as a planner and controller of multinational Brazilian oil company. The team consolidate all the planning information of all the company, analyses it and reports to the company board of directors.

For all these years, I’ve struggled to deal with some basic business scenarios:

  • At the very end of the process, someone in the chain of information submits a last-minute update that cannot be ignored
  • The board decides to change the plan
  • Existence of multiple simultaneous plans, for optimistic and pessimistic scenarios
  • Changes in the organizational structure

The current information systems used or developed by the company are simply too restrictive to accommodate their business cases. The general solution is to create entire systems using dozens of spreadsheets. This a patchwork of data, susceptible of data loss and zero control.

To address this, I decided to develop myself a system that is both flexible and powerful. The overall core propositions are:

  • Versioning: instead overwriting data whenever there is a change request, the system should be able to preserve the existing data and generate another version. Both should be accessible, in other to allow comparison and auditing.
  • Branching: not only sequential versioning (v1, v2, v3), it should allow users to create multiple current versions. Creating scenarios of event temporary exercises should be effortless.
  • Multiple dimensions: for each unit (ie, a project in a list of projects), the user could insert the future CAPEX, OPEX, production, average cost, number of workers or any arbitrary dimension. It’s all about capturing future series of values, regardless the meaning.
  • Multiple Teams: in the same organization, users can create inner teams that deal with different aspects of the business. The system should allow to users set the list of units to control (projects, employees, buildings, or whatever), their dimensions of measurement and then control the user access of all this information. It’s a decentralized way to create plans.
  • Spreadsheet as first-class citizen: small companies might not use them much. But any mid-to-big companies use spreadsheets for everything. Importing and exporting system data as Excel/LibreOffice/Google Docs is a must.

With this feature set in mind, I started to create a spear time what is now temporally called Project Curva for the last 3 months. I will post more about it in the future: the used technology, the technical challenges and some lessons learned.

A beta is due to the end of April, 2021.

2020.12.03

Hello World. Testing the new site!

For the N’s time, I migrated the blog to a new blogging system. This time, I’m using Hugo.

Hugo is a class of CMS’s that generate static sites. Just like compiled and interpreted programming languages, the whole site generated beforehand and the result is uploaded to a server.

The main advantage using this method is a substantially faster site and zero attack surface form the CMS. The main disadvantages are the less user-friendly interface and big building times.

Let’s dig into theses issues:

Faster Experience

Since all the pages are now static and pre-made, the only variable it the server latency to delivery the files. The page does not need to be built on the fly for each user, which can be tremendously slow. And it also waste CPU from the server, rebuilding it time after time after time.

Most CMS’s have some caching system to mitigate this issue. They first check if the page have been already built. If so, serve it. If not, build it and save the result. The problem lies on implementing a CDN and/or a technique to invalidate the cache to force a rebuild (in case the content was altered by the author).

More Secure

Since it does not compile the page on the fly, it eliminate the security issues inherited form the language. It also does not access any type of database. There is no admin page. Event DOS attacks can be much more robust, since the CDN can migrate the traffic to another server easily.

User Interface (Lack of)

Well, Hugo uses the developer-driven approach that requires the user to use a IDE and compile the whole site. It does not offer any type of interface in which you can drag and drop widgets. It’s is definitively not WYSIWYG.

If you are seasoned to programming tools, you will have not much problem. It will be very familiar. For a non-tech savvy mom blogger, Hugo is a no go.

Build Times

Even to see a single post that you just wrote will take time. Like compiled programming languages, the site have to be built before you can check on it. Hugo have a automatic service that propagate the incremental changes and it really fast, so iterating the content will not slow you down.

It will take even more time if you have some extra processes implemented, like resizing images.

But the process to rebuild the entire site might take a while. Thankfully, for the production the whole building process can be delegated to CI/CD tools. Using GitHub or Gitlab, they will automatically build the site on each commit.

The process of writing this post, the very first on the new platform, was quite nice. But I’m in the perfect spot of product requirements and technical skills


Anyway, I’m going to try to post more content in the following months. :)

2017.10.25

I follow the GDC (Game Develeoper Conference) channel on Youtube and, just right now, I totally recommend you to do the same. Great amount of excellent talks (of course there are some exceptions, like the lame at-the-time-GDC-board-member Peter Molyneux making plain simple propaganda).

There is one that I just watched and is very eye opening: it the annual talk from the guys of EEDAR (a data consolidation company) presenting numbers of the whole industry. The talks about prices, sales, regions, mobile/pc/consoles. Everything!

It is a must-see.

2017.07.13

My notebook it not new. I bought the Yoga 2 Pro almost 4 years ago. Two years back, I got annoyed with Windows so I decided to install Linux in it. I was scared because on the contrary of most my PCs that I assembled myself, the Lenovo had a warranty and possibly custom hardware.

As I told, the attempt failed. It was giving me too much headaches. Also I generally use my notebook to also program and develop games. And because the Unity Editor was not available (not at least in a reasonable version), I was kinda forced to migrate back to Windows10.


About 3 months ago, I decided to give it a second shot. In case I was not clear, I use Linux in the desktop, in a dual boot, for about 15 years. I saw Ubuntu entering the market. But since I start to systematically be involved on making games, the necessity of Windows started too. Back to the experiment. It was a requirement for me that the general performance had to be great. Not good, great. I would prefer to keep on the Debian-like distro because I’m familiar to. Ubuntu family if possible. So I selected both Kubuntu and Lubuntu for a ride.

Kubuntu was the one that I tested before. I like KDE since version 2 but again failed in deliver a blazing fast experience. In the notebook, the boot time was several minutes. Even Windows 10 was couple of seconds. I decided then to format and install Lubuntu.

Lubuntu is a Ubuntu derivative using the LXDE desktop environment. Super light. Man! Boot was fast and when ready it consumed a fraction of RAM of both Windows and Kubuntu. However, during my 4 weeks test I was giving too much little problems. So I decided to make another switch.

Xubuntu, in a similx1800 ), which is fine in a 13 inches monitor. Then came to the software selection. Lubuntu was super short on preinstalled stuff, which i like because I generally don’t use them anyway, but Xubuntu came with some. The good news is that the selection does not consume much of the the drive space and are light enough in case I really want to use them.

I had to install Steam and it works nice. Unfortunately, GOG’s Galaxy does not have currently a Linux version, so the games have to be installed manually one by one. Also your play time will be not computed nor you will be alerted about updates. A second negative point is that most GOG’s games do not use the new cloud save feature, so playing a bit in the notebook and a bit in the desktop is only for games that progress do not matter. Fingers crossed for the future.

Finally I was looking for a game engine that works on Linux. Unreal, as I found, works, but you have to compile it yourself. GREAT 🙁 I did it. It took hours and the result was too many crashes and too big suite to work in a notebook. I was once again looking for a lightweight engine. I tested Godot and liked. But it is still lacking.

Then I found out that Unity is in fact releasing in a alternative channel (thru forums) the update engine for Linux. I installed it too. crashes a log but it works. I`ve being playing the game developer in the note book ever since. With the excellent Visual Studio Code editor, it makes my days fun.


After 2 months and half working most of the time on this notebook, I can be happier man but in general I am already one. It is fast, close environment that I face when I deal with cloud Internet stuff and free. I plan to migrate to a newer machine in the next year, mostly to get a better amount of RAM memory and battery life. Currently, it lasts 3 hours, which is by any means a shame for a mobile device.

This is currenly my desktop
2016.02.23

I just watched a GDC presentation by the same name by the developer Soren Johnson, from Mohawk Games. I’ve agreed almost entirely with him. The basic premise of his presentation is that video games should pay more attention to physical board games, learning that techniques they use in order to create engagement. The motif is: board games have transparent set of rules and transparent implementation of luck. Video games should have such transparency too to engage players.

At the end, when he opened for audience questions, he was nervous to answer and he somewhat backed a bit from this point of view. There was a couple of questions that I want to discuss:

What if the game system is soo complex that you deliberately want to hide it from the player? (watch the original answer)

In Civilization, as pointed in the presentation, the designers opted for displaying each variable or modifier as a series of bullet points in the UI. That is because the list of modifiers is long and complex. When engaging in a diplomatic mission, the player must understand what are affecting the relationship. But hey, it is only one way to solve the problem.

In Shadow of Mordor, the orc leaders challenge themselves for power and status. Each orc also have a list of strengths and weaknesses. All this information is presented to the player is a very elegant way. It exemplifies the Soren’s argument.

But if game is so complex that is really difficult/impossible to present the players all information? Well, it is probably a flaw in the game. If there is too much going on, most likely that the player action only impact slightly in the result. The player will fell that is pure luck. He is just a passenger. It is the game designer’s job to balance it back; otherwise, it will suffer from bad reputation and bad sales. Too shallow or too complex have to be considered equally problems to deal.

Notice that another possible consequence is when the game becomes a cult hit and the players that endured the gameplay formed a community to share information and demystify the obscure rules. A good example is Dwarven Fortress, a super weird and complex game that is loved by many for being weird and complex. My suggestion: do not try this path.

If you expose the whole set of rules and internal numbers, it will become a matter of optimization instead experimentation. (watch the original answer)

It can be a problem, yes. Tic Tac Toe suffers exactly from this problem: you can anticipate the whole match to a point that you CAN guarantee that you will never lose (you cannot guarantee that you will tough).

But as a designer, you can implement counter measures to fight it. Luck and complex decision tree for example.

Luck is the classic solution. By implementing a series of unknown events, it makes very difficult to predict the future. Random numbers, random events, scramble cards. Notice that luck is merely an element that the one cannot control or predict, like weather or a dice roll, or a hidden enemy in a fog of war.

Complex decision tree refers to both make several factors relevant for each decision and a game with several rounds. Think of Chess or Go. There are so many possible movements per round that, while theoretically possible, it is practically impossible to compute all moves in order to make a single best decision.


In general, I am with Soren. I might discourse about it in the future, because most people think that creating games is just a intuition and art. But there a lot of reasoning and logical decisions that should guide the construction of such products.

 

2016.01.22

There are several months now that I started to program using the Google’s Angular JS libraries. For those that do not know it, it is a way to write web applications that are very interactive, interconnecting the user interface with JavaScript. Not simple to explain.

I tried jQuery long ago when developing for Drupal and for my personal enterprises, but I was very laborious to make it automatically respond to user interaction, in a passive (and always alert) way. Angular was just about to solve it.

Primarily, it was a pain to fully understand its concepts and methods. I spent weeks to write some prototypes. One of the major complains is debugging. It always log cryptic messages, with full stack of weird functions and codes. I was never able to figure out what is the line of my code that is causing trouble or what is the function I wrote that is missing an important parameter, or whatever.

Angular parse and interpolates HMTL and JavaScript, in a dynamic way that it sometimes break before it can generate a nice error output. I have never played with its major competitors, React and Ember, but I honestly doubt that it is much different there.

Once I got better at it, I had a really good experience. I recommend you to use Angular JS and also Google’s Material Design Angular library in your own web app.

2014.11.29

Microsoft announced that they will make Visual Studio available for free for everyone, for every type of application. Paid versions would bring essentially better support, ideal for enterprises.

They are also tightening more and more to the open source world. They started to use GitHub (instead their own hosting service and version control systems), made public available general use programs, libraries and APIs. The JavaScript successor, TypeScript, is a internal creation. A open source C# compiler, Roslyn, is in the works.

Times are changing.

I believe they realized that Google and other vendor are gaining more and more traction by using a open approach. Giving people pieces that free and charge for premium services. The mass of new developers are now programming for web applications, with tools and environments that Microsoft products are not in a strong position. Everybody will win. They maintained the leadership in several software markets not by accident or luck. Their experience will benefit all the community.

Welcome aboard.

2014.08.11

Descobri semana passada que o Ministério das Comunicações está organizando um corcurso nacional de Aplicativos e Jogos Sérios para dispositivos móveis. Serão 25 escolhidos em cada categoria com prêmio de 100 mil reais cada! Nada mal se o ganhador for uma pessoa física.

Ministério

Achei particularmente curioso o concurso vir deste ministério e não do MinC (Ministério da Cultura). Há vários anos atrás (acho que em 2003), eu e meu amigo Gabriel participamos do JogosBR, um concurso similar mas que era para promover a indústria dos jogos eletrônicos no geral. Nosso jogo foi o Color Rangers, um jogo de estratégia com RPG no universo dos heróis japoneses. Ele passou na primeira etapa, mas não da segunda, que é a que valeria dinheiro mesmo. Hoje eu teria condições de executar este projeto com certeza. Ao menos a primeira fase nos rendeu uma foto ao lado do então Ministro da Cultura, Gilberto Gil. No começo do ano nós descobrimos que a Behold, uma desenvolvedora brasileira, estava fazendo um jogo chamado Color Squad, um jogo de estratégia com RPG no universo dos heróis japoneses… Coincidência? Acho que não, mas isso não importa. Fico até orgulhoso pois mostra que tivemos uma ideia bem legal.

Documentos como produto final

Assim como o antigo concurso do Ministério da Cultura, este concurso vai julgar um projeto de jogo e não o jogo já feito. Isso é uma postura bem diferente do que eu já fiz principalmente nos Ludum Dare (competição de criação de jogos em 48h) em que o que vai a juri é o jogo que você conseguiu criar. No INOVApps, o que vai ser julgado é a proposta. É uma série de documentos que descrevem o jogo e como ele será feito. Deve-se dizer qual é a mecânica do jogo, seu tema, fases, arte conceitual. Com base nestes documentos eles vão ver quem tem uma boa ideia e parece ter capacidade de executá-la. Eu tenho um pouco de receio deste tipo de abordagem já que ele dá margem para os participantes viajarem na maionese e escreverem projetos . E pior, dá margem para que eles sequer escrevam uma linha de código para o jogo final. Com relação a este último item, o regulamento do concurso lida bem pois, mesmo com os ganhadores já definidos, só vai liberar grande parte dos recursos só depois de dar entregáveis. Só depois do jogo concluído é que se teria direito a mais de 40% do dinheiro.

Jogos sérios

Investiguei na internet e li bastante sobre o assunto de jogos sérios. Fiquei um pouco temeroso pois a maioria dos jogos sérios… não é jogo, e sim conteúdo interativo. Segundo a teoria dos jogos, um jogo deve ter uma dinâmica entre os participantes, em que a ação de um afetaria o outro. Vi vários visualizadores 3D e 2D, com diversos graus de interação. Mas vi realmente poucos que eu chamaria de jogos. Sem qualquer tipo de pontuação ou limitarores (como vidas), é difícil considerar um infográfico interativo como um jogo. Espero que a banca tenha isso em mente.

Minha proposta

Estou totalmente tentado a participar do concurso. Estou já com alguns pequenos protótipos que poderia facilmente adaptar para um jogo mais educativo, com temática mais séria, mas ainda sim mantendo ele divertido e interessante. Sempre fui facisnado com o conceito de que, na pele de um governante, é tudo bem mais complicado que se apenas ver de fora. Gosto do conceito de que tudo tem 2 lados. Meus jogos sempre refletem isso, fazendo com que o jogador sempre tenha um certo dilema ao tentar ganhar dinheiro em detrimento da felicidade ou tentar vencer a guerra deixando alguns aliados morrerem. Para apresentar alguma proposta é preciso que ela seja enquadrada em uma das categorias listadas no edital. Estou querendo abordar a violência. No mundo dos jogos ela é sempre retratada de uma maneira muito simplista: bem contra o mal. Mesmo em jogos de estratégia, todos os que não são amigos são inimigos. Acho que dá para explorar este conceito de quem é amigo e quem é inimigo, além do que eu já tentei, ao colocar dilemas morais. Também estou bastante interessado tem temas de governabilidade. Acho que posso atacar temas como turismo e uma dinâmica de toma-lá-dá-cá. Algo como Trópico, mas com uma pegada um pouco mais didática e com base histórica. Qualquer que seja a proposta, vou tentar fazer uma obra de entreterimento. Isso por uma razão pragmática: se o jogo for bom e divertido, os jogadores jogarão mais e o conteúdo informativo será mais fixado. Não adianta ser uma obra intessante que a pessoa vê, usa e joga fora. Ele tem de ter uma vida útil longa. E vou tentar garantir isso por meio de um mecânicas de jogo.

2014.06.10

I’m not dead. Neither the blog. I’m going to —poorly- explain why.

I’m just very focused on other projects, like my own new company Gamenific. It is, for now, a informal company, but I am investing more and more time and money and energy into it. The Gamenific blog, that I write, is getting much more updated than this one.

My main day job is also requiring loads of time. Specially at the beginning of the year, when I was responsible for implementing a Online Booking tool in the company, was very demanding. I was working 16 hours a day. No social life was allowed. I cannot stress enough that it is very counter productive: working that much for long periods is very tiring. Tired minds do not think properly and make constantly wrong decisions. One after the other.

But now things are normal again.

World Cup is here. It will officially start this Thursday and Rio de Janeiro, one of the hosting cities, is up side down. The transport is the worst, not only it is operating with overcapacity, but also the worker unions are taking the advantage of the situation to start constant strikes to raise the salaries. The population is a hostage.

Back to Gamenific:

My plan is to make this company my life. If all goes right, it will become my main source of income in the next year, maybe two. And at this point I plan to make it a full day job.

Being a one-man company is not easy. By far. The amount of work that it takes is enormous. Secondary administrative tasks, like blogging, contacting new contractors, marketing, making strategic plans… is very demanding. I wish I have someone to share the burden. But I am not complaining. On the contrary, it is very fun. Is hard and I love it.

I will keep Gamenific news in the Gamenific blog as much as possible, keeping this bog more as a personal view, specially related to programming, video games, cinema. Eventually I address some political or economical matters.

In Brazil, national elections are coming. I think it will be the subject of some texts in the near future.

2014.04.29

Ludum Dare! The famous indie game competition has just ended and I once again locked me out of the world for 3 days to design, program,

In this edition, the theme was “Beneath the Surface”. In comparison with other editions, a very easy theme because it defines only the thematic aspect of the game. Most of games can be adapted to fit the theme, from shooters, strategy games, platformers. It is much harder when it restricts the mechanics of the game, like “10 Seconds” from Ludum Dare 27.

In my case, even with an easy theme, I face a lot of difficulty to design the game. I know that Ludum Dare audience is mainly indie designers with very little experience and they appreciate mostly popular action game genres, like platformer, top-down adventures and first person shooters. But it was definitively not what I wanted in this edition. With an easy theme, I wanted to innovate in the mechanics.

In Brazil, the competition started Friday by 10pm. It is generally a good thing, because we are tired from work and it is close to sleeping time. Because the openness we got from the theme, I faced a lot of difficulty on designing, because designing requires restricting yourself. I only closed the final mechanics by Saturday lunch, 12 hours after the competition start.

Vaults Inc

Vaults Inc is a turn based strategy game. It is like a city building, but underground: you build a bunker from a post-nuclear-war universe. Imagine Fallout’s vaults. I wanted to grab a little of its universe, specially the visuals and humor. Each turn the player have to build a new block in the bunker. Each block can increase or decrease or Income, Money, Fame or Population. The strategy comes from the interaction that each new block generates: Landfill decreases Fame is placed next to a residential block; slaughterhouse generates more income if placed next to a restaurant; fancy restaurant decreases fame is other fancy restaurants are built. Timing and Location are crucial. Bigger bunkers means bigger problems: the more you grow, your fame and income start to go down. The game has typically 50 turns and the player have to reach the biggest population possible.“The most complete Fallout-Bunker-Simulator. Learn it for a future not that improbable”

Play it online for free

The post was originally on blog.Gamenific.com