For the last 9 years, I work as a planner and controller of a multinational Brazilian oil company. The team consolidates all the planning information of the whole 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
The 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 too restrictive to accommodate their business cases. The general solution is to create entire systems using dozens of spreadsheets. It is a patchwork of data, susceptible to data loss and zero control.
To address this, I decided to develop, on my own, a new system that is both flexible and powerful. The overall core propositions are:
Versioning: instead of 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 of 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 to all this information. It’s a decentralized way to create plans.
Spreadsheet as a 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 at the end of April 2021.
Update 2021-10-18
The project is called NiwPlan and can be checked on NiwPlan.com.
Cyberpunk 2077https://www.brunomassa.com/en/blog/cyberpunk-2077/Bruno Massa
When you read this post, you probably already know: the Cyberpunk 2077 hype did not pay off. However, I would like to explore some personal insights.
Me-Character and My Character
As a Role Playing Game, you are someone else. A player might spend one full hour just tweaking the characters’ appearances, hair, weight, and eyelashes. Then calmly considering spending the scarce points on each attribute. One is not creating himself/herself, but a different being. Maybe a projection or simply experimenting with unique approaches.
Then the game starts.
You barely see yourself on the screen.
Shooters are much easier to do in first-person. CDPR said they opted for the first-person approach as part of the vision that the player should feel he is indeed there. They even removed some features of the game because it was not working well in the first-person.
But as I said before, since one spent so much love creating the character, it would be a wiser decision if one would see it more often. A third person would be a better decision. It was more valuable to see the custom V fighting than was seeing Geralt’s.
The result is that I have never really connected to the character that I created.
Also, there is a second take on character creation that is unique to Cyberpunk 2077 universe: augmentations and down-the-line customizations. A game advertised as being open regarding your physical appearance, it was noted by many the lack of visual modification during the game. Not even changing the hairstyle, present in a much less relevant The Witcher 3, was absent.
Clothing functions as both technical improvements and fashion. The game could embrace the idea each piece of clothing could have any game element or bonus. It would encourage players to find their style instead keep mixing weird styles just to get specific bonuses.
Bugs and Cars
The game was plagued by technical issues. There are hundreds of videos on YouTube with hilarious situations. CDPR had to reimburse many players, and it was removed by the PlayStation Store days after the release, due to the impossible state!
I had no crashes but a ton of buggy behaviors. Citizens’ reactions, random explosions, and enemies’ misbehavior. In some critical emotional moments, a bug can spoil the fun. I finished the game trying to do ALL the achievements. But one was impossible to achieve due to a bug in a side mission.
Then cars… The Witcher’s horse, Roach, was a delicious surprise and set the benchmark to address rideable in video games. Just before launch, Geoff Keighley (one of the few people that tasted it at the time) said driving was super satisfying. The cars felt so bad. Driving was a burden. Felt like balloons, weightless. Bikes are even worse.
I was hoping to drive like a vagabond, exploring each inch of the city. But instead, I was using teleportation all the time.
The pace that the fixes were coming was also much desirable. I finished the game in 3 months, but some patches were released back then. CDPR always had a top-in-industry attitude regarding enhancing their games after release, but this time I believe they are subpar.
Story
At the very beginning, you have to choose the background story. There are 3 possible starting conditions. And the first act considers this choice important, pointing to it frequently.
Then it becomes irrelevant. The mid-game is a generic Ubisoft open-world game or GTA. V is on a brink of death, but the game’s open-world nature let her have romantic relationships, racing, and help other people that, frankly, could wait until you solve your most significant issue.
While not very original “there is a dude inside your head”, their take is unique and grounded. However, CDPR opted to use other very boring tropes like “He was supposed to die, but he miraculously survived”. No need to put a bullet in V’s head to wake her up in the next scene.
The mid-game is an “ensemble a killer team” theme. It was nice but the team and the final mission are less like Ocean’s Eleven and more like The Avengers: group a team of 3 guys and storm into the castle. A good point is the insertion of several recurring characters in side missions. From love affairs to super AI or ex-cops, the player starts to care about them after some time.
The final orchestrated act was also lacking due to a single biggest factor, IMHO: there are no good villains. A good villain has to be seen, tasted, and feared often. If you show Adam Smasher only once, 50 hours late you could not care less about him. The other Arasaka family members are the same.
Think about the great movie and video game villains. They have a considerable amount of screen time, so the viewer has the chance to witness his evil intentions. Darth Vader, Joker, Glados, LeChuck, Ganon, Bowser.
A very good aspect of the story is the cultural references and jokes. More than once, I was caught laughing out loud with some of them.
Conclusion
As one of the first games I have ever pre-ordered, I must say that knew what was coming. If I waited for some reviews first…
Cyberpunk 2077 is an ambitious project and several parts of it show it. However, despite the strong beginning, it becomes a generic open-world game with amazing graphics.
I finished the game and most of the achievements. 100+ hours on it. Yet, I feel disappointed. I even may get back to it in a couple of months or years, with extra content and numerous enhancements.
After months of studying, I could finally accomplish an old dream: be a certified project manager. I work with projects since the dawn of time. I create personal and professional projects often. Big and small. For myself, with teams, and for the company.
Despite liking dealing with processes, my goal was never to be in a process-driven career. Personally, the part I like the most about processes is their implementation or optimization projects!
And I genuinely try to enhance my abilities, by studying, researching, and training. I’m an agile advocate at my job long before it was a thing. Now they are all project-flying and agile-ing all major parts of the business processes.
But one thing is to know you are good at something. Another thing completely different is to convince someone about it. Here comes the certification program. PMI is the de-facto institution regarding project management. I read their main material many, many years ago and followed their general guidelines ever since. But the certification itself, nope.
Better later than never. I decided to finally apply for the certification exam. Here’s a motivational tip: first apply for an exam then start to study for it. It’s much more effective, psychologically speaking, to have a fixed deadline to be engaged and motivated. Studying for a “to be defined” date is prone to procrastination.
I bought an online course. The instructor was very clear: each exam has its quirks and style. He will exploit PMI’s style to deliver a laser-focused course with the only goal being to facilitate passing the exam. No philosophical discussions. No discussions at all. Just the pure content. Delivered with the precise method.
It was both effective and efficient. It took me just a week of classes and an extra one to review and consolidate the knowledge. PMI requires that one should have not only a previous experience in the field but also a minimum amount of formal education, so the classes could not be shorter even if possible.
I did the online exam. Man, it was equally scary. Some dude had to check our computer screen, I had to turn on the camera all time. And any movement or sound, I was called upon.
The questions were super generic. It’s the downside of being a generic Project Management certification. It was not about construction or software development. So the online course was right. After a couple of hours, exhausted (I had to do it after the business hour, so I was extra tired), I finished.
Days after, the good news: I did it! One old dream checked! And it’s on my Linkedin, of course!
Media List 2020https://www.brunomassa.com/en/blog/media-list-2020/Bruno Massa
2020 might compete in the Most Pivotal Year in History Award, but it had its fair share of surprises. I had the time to attack start to finish several games. I reused the commute time to play. Below is the list that I compiled using the new GOG Galaxy app, that tracks games even from other stores.
The list of movies I’m going to skip this time, since it would not fit into a single post.
Games
Assassin’s Creed: Odyssey (9★★★★★★★★★): I loved this game, setting and its protagonist Cassandra
Dishonored (9★★★★★★★★★): unique story, gameplay and visuals (1)
Hellblade Senua s Sacrifice superb visuals and premise
Half-Life 2 (8★★★★★★★★): amazing game, even today (1)
Prey (8★★★★★★★★): these guys from Arkane Studios also know how to write and make all characters relevant
>Observer_ (8★★★★★★★★): super weird setting that caught my attention
Rise of the Tomb Raider (7★★★★★★★): messy story, despite the good gameplay loop
Dishonored: Death of the Outsider (7★★★★★★★): while it have the same not the same
Far Cry 3: Blood Dragon (7★★★★★★★): hahaha some over the top jokes
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 an 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 an 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. :)