Journal #300

It’s important to keep things fresh or at least try something new so you don’t get too comfortable. At journal 300, that’s what I will try to do by weaving quotes I found online into the personal story I want to tell. I don’t know how well it will turn out but I suppose we will find out.

Right now, I’m feeling pretty disenchanted because my idealistic psyche is being punch left, right, center and back. It’s been ongoing for the last few days and I haven’t gotten around to do much introspection and grow from there.

At the same time, the following quote speaks to me so much:

“To all the other dreamers out there, don’t ever stop or let the world’s negativity disenchant you or your spirit. If you surround yourself with love and the right people, anything is possible.” — Adam Green

It takes a lot of effort just to be yourself, and the journey is even more arduous for someone like me who is so sensitive and tend to stay up in the clouds, seeing the world through rose-tinted glasses.

I suppose part of maturation is about mastering the art of balancing between idealism and realism.

Last week, I came up with a set of database table names for the upcoming module. Today, one of my colleague told me that she has done up the database tables in the development environment and asked me to take a look. I took a look and didn’t quite like what I saw. So I presented the table names to my colleagues via email.

At 10 am, there was a meeting to discuss further on design of the new module. It was during that meeting where I saw the design I had being torn apart because it wasn’t simple enough. There were only two tables that remained unscathed and the overall design end up looking exactly like what my colleague had done.

In this case, this following quote speaks for the situation:

“The fewer moving parts, the better.” “Exactly. No truer words were ever spoken in the context of engineering.” — Christian Cantrell

I really need to keep this in mind. I always have this tendency to overcomplicate things because I try to balance meaning of the overall design and structure, current, and future use cases. Expressions and meanings are important to me. My colleagues on the other hand wanted to reduce the number of database joins needed so that they can focus on ease of development and performance. Nothing wrong with that because the dataset could potentially get very big.

But it doesn’t make one feel any better since you are watching your work dismantled and the meaning you want to express removed. Still, it is important to let the feeling go because it’s a done deal. The majority won and you couldn’t justify anymore even though in your gut you know something will go wrong somewhere.

We continued to discuss further on the API document. Problems were identified and noted. At around 12.30pm, we went for lunch. By now, I’m already starving. On the way out of my company, I suggested to eat at JEM’s food court because the weather was pretty hot.

After lunch, we went to get some fruits and went back to office.

Once I was done with the fruits, I went over to my colleague’s desk to discuss further on the database table. It wasn’t so much about trying to convince her of whatever design or approach but rather to finalize the details. I have since given up trying to convince anyone. It is nobody’s fault but my own because I couldn’t articulate properly. With the details trashed out, I went ahead to add in one more table.

Earlier during the meeting, we also discussed about needing to query for user data while performing other updates or certain operation.

The conclusion was that my colleagues continue to hate the fact that I separated the identity access module from the core into its own database context. And the solution was to publish a copy of user data to a duplicated table in the core database context whenever there is a change or a new user created.

That solution was the best amongst the other choices until we can devote the time to merge everything back into the same database context. That means I probably will need to create some kind of auto-mapper to map between domain model and database model or I will strip out the domain logic into their respective service class, creating anemic models.

Personally, I fell in love with domain model and domain-driven design because it’s expressive in the most intuitive way. At least that’s how I see it. I have no other justification. Martin Fowler does a way better job articulating why anemic domain model is bad in some situation.

Going back to publishing a copy of user data, previously I have already created a basic publisher-subscriber set of classes. So I went ahead to expand on it to support publishing of user changes in the form of domain events. I was done with the bulk of codes in mere minutes.

The next quote is so suitable:

“… with proper design, the features come cheaply. This approach is arduous, but continues to succeed.” — Dennis Ritchie

I have already designed my codes to support publishing of event with subscribers to do what is necessary that whatever I do next is cheap. I don’t need too spend too much time figuring out what to do next.

After I was done with my part of the code, I went onto job street and search for jobs because I was still feeling disenchanted. Thus far, I have always focus on looking for writing jobs but hadn’t found one that I will be interested in or willing to try.

Then the next part of my day, well, in hindsight, I was being stupid and wasting time. I kept complaining about the use of database-first approach. I really need to let it go and stop caring. It’s a done deal.

With that, I actually went about crafting out the new APIs for the next module in accordance to what my colleague wrote in the API document. I couldn’t be bother anymore to tweak the thing any more because it doesn’t achieve anything.

At around 6pm, I decided to call it a day and went home. By now, I was already starving. I made my way to Starbucks and claim a free drink that I got from filling up a survey. I got myself a tall-sized Java chip drink. At least with its milk and sugar content, it helped to stave off the hunger until about 8.30pm.

During the time between me reaching home, had a shower and having dinner, I watched Star Trek Discovery.

With that, I will end today with the following quote:

“If you don’t think your anxiety, depression, sadness and stress impact your physical health, think again. All of these emotions trigger chemical reactions in your body, which can lead to inflammation and a weakened immune system. Learn how to cope, sweet friend. There will always be dark days.” — Kris Carr