Today I decided to take a day off, no programming, no studying, no sport.. Just reading, perhaps a walk out to the city and finally a post on my blog. For many of my readers –yep, there are real people visiting my blog on a daily basis!!– this might not be the most interesting type of content, but you know, this blog is also about me not only about some technical weirdo stuff 🙂
Things at work.
If in the past months i had a great pace, doing a lot of stuff with what i consider a good level of efficiency, but in the last few weeks things stuck a little in some very annoying tasks. That is part of my job, fixing bugs, debugging and explaining to people why things are not working. But, having so little experience in my current project –I’m working at Oracle just few months– everything takes ages.. Setup the environment, attempt to reproduce the problem, debug… again debug… debug.. ask for help.. Oh boys, what terrible tasks.. But again, that’s also my job and i must perform as a professional even when things are not exactly funny.
This is not going to last forever, and hopefully I’ll be back on design and development soon. My overall experience at Oracle is very positive till now, working remotely was hard at first since i was used to be surrounded by people, i was accustomed to daily standup meetings and stuff like that; at home you have only yourself and you job. For some people this might be problematic, at the end we are social beings and not having someone to chat with during you coffee break might be weird.. But, after the first initial struggles i found this type of work much more efficient.
Efficiency is everything for me, wasting time is the ultimate loss i can suffer.. Working remotely allows me to optimize my time to a single minute granularity, i know precisely how much time i’ll need to be prepared to work every morning, how long will take my lunch, how much time i need to perform any activity which is not plain working. That is good and i like it, there’s also the great benefit of being free to allocate my working time at my will during the day, i can work in the evening or in the morning, 8 hours straight or split my workday in two parts, that is great.
Sometime i wonder if i would like to be back to an usual work format, with a real office &c, well, probably no, i always found irritating how corporate people continuously attempt to avoid real work and responsibilities, the inefficiency and useless procedures, which are designed for the sole purpose of maintaining the status quo of certain corporate elders. I will never forget the “fight for the email” at Intel, having the email address of someone able to provide some information is the key to the power!!! yeah, that incredibly funny, when you go to someone asking for some support about a technical problem and the guy tells you that there’s a mister X which is an expert on the matter and he can help, so you ask for his name and email to write an email and ask for a comment… and.. the elder tells you: “No, prepare the mail and send it to me, i’ll write to mister X and let you know what he tells.”.. Better to work from home 🙂
At Oracle in this specific working setup, people empowerment and trust are key assets, that is great because it allows people to do their best, there’s much less corporate bullshit and much more real work. Of course, there’s space for tuning some procedures and processes, and, i’m not totally happy with certain things, but, things are good anyway!
Things out of work.
Recently i was involved in an interesting project, which is taking a lot of my free time. Will know in the next weeks if this will turn in something serious or if is going to be just a short experience. Can’t say very much about it, is too early, but as you can imagine is related with programming and it’s not my graphics engine!
My engine is doing well, i spent most of my free time in a big refactoring of the code. You can have a look at the branch big_refactoring of my github, i made some really big changes which are the results of the experience i gained with the first version of my engine, have a look here:
As you can see there are tons of differences between the big_refactoring branch and the master. That was a necessary step if i want to develop further my engine and write some simple game, the old design was disgusting and mostly driven by the need of introducing stuff which i was learning on the way. The new design have a rational structure and it much easily extensible and maintainable.
The most notable differences between big_refactoring and the old code are:
- Single shader loaded once for all the lifetime of the engine. Before I had different shaders for different purposes, one for text rendering, one for small object rendering, one for models &c. Loading and unloading those shadres was a kick to the ball of the performance. Now things are working much more smoothly and i don’t need to maintain three or four different shaders.
- Different mouse picking algorithm! The old code used some ray tracing techniques, they where good but had some very bad limitations. First, each renderable object had it’s own ray tracing mechanism and function, second, it was slow when the amount of object increased and third, the implementation was very complex. Now i use a different approach, the Core_renderer render the scene on two framebuffers, one for the purpose of drawing on the screen and the second to implement mouse picking. Will talk about the details in some other post.
- Improved design. The old one was a mess, a real mess. Now there’s some logical separation between objects, responsibility is assigned to specific entities and there’s much less coupling and better cohesion, also the interfaces are improved better server their purpose.
- Many other small things, from better naming to better logging.. Have a look at the repo for details.
So my graphics engine is taking a lot of my time, there’s still a lot of stuff I’ve to implement before i can merge the changes to the master branch and start working on some new feature, hopefully this refactoring will be completed in few weeks.
In my remaining free time I’m working on my combinatorics book, the generating functions chapter i’m studying now is challenging and the exercises cannot be solved as fast as i was able to do with the other topics. Hopefully will write a short review soon, probably i had enough experience with the book to be able to make an unbiased evaluation of it, will see in the nearest future.
When I’m not programming or studying, or working.. I’m boxing! Well, kind off.. I had my first sparring this week, with my coach. I mean, the coach was “delicate” and didn’t hit me hard, the purpose of this first sparring was mostly to get accustomed with the protective helmet –very uncomfortable– and with the new type of training. Sparring is a completely different type of exercises, your goal is not to hit the pads with the proper combination but to hit the other fighter avoiding in the meanwhile his punches! Is cool, very energy consuming and requiring a huge amount of reflexes and the proper mindset..
Well, that’s all for this post, is already too long for most of you 🙂 Thanks for reading!