My name is Jean-Dominique Nguele and this is my blog. FLVCTVAT NEC MERGITVR
How did I come to write a class allowing dynamic interface implementation in the first place? Ever had to work on a huge company project over the weekend? Because it is the weekend you pick up fixes what should be easy configuration changes. Then you think it will take you only a couple of hours then you will be off to the gym. I thought that yesterday and boy I mislead myself, much mislead indeed. Basically I had to update a couple of big projects to remove fields that are null from the json response. All of that listening to stuff like the Ding Dong Song, Purple Lamborghini and Slipknot’s Psychosocial. On the first project I had to add a little line to have that working, so the second one should be the same right? I actually thought I would grab another task before leaving that improvised hackathon.
It was all fun and games until, surprise surprise, the second project used a custom formatter. That was to do some processing on the response objects and update some values to match our apps implementation. Fair enough. But the magical line of configuration to ignore null fields when rendering json did not work there. The obvious solution was to get rid of that custom formatter. The obvious thing to do was get rid of that formatter and figure a way to have that object value setting logic without touching the project classes. I say obvious because there were hundreds of classes there and I did not feel like changing all of them even to simply add an interface and its implementation. I had to set properties that may exist for hundred of objects. This is how I started googling, going through StackOverflow to try and figure how to achieve that.
During that thinking process I realized I could try to do something with dynamic objects instead of adding a value during the json formatting process. Interestingly enough, a few minutes later the StackOverflow ex-machina did its thing and I found that post “How to extend class with an extra property“. The answer from unsung hero Mario Stopfer brought me light on something I did not know was possible. You guessed it: Dynamic interface implementation at runtime. Not really in the form I needed but it opened a door of possibilities to me and a new perspective on the property setting issue. And I started coding, building, testing, debugging like crazy. After a few hours, I achieved what did not know was a possibility a few hours before. Dynamic interface implementation was there working and solving my issue.
I had a nice afternoon of coding at the office, lots of laughs and problem solving that provides me with an article I really enjoyed writing and a new class for my in progress .NET utility project that should appear when mature enough on Github. However since you have been reading all of this you will have the code in a preview gist along with sample code. The only issue is that it does not work with the new .NET Core (yet?) so I will update it at a later stage when I find the time and solution. That or add another version. Without any further ado, here is what I called the TypeMixer.
Last week at the same time I was at home playing League of Legends to break away from the frustration of losing at the Retail Week hackathon 2016. I was frustrated because I was, well I still am, convinced that our idea was good enough to win. Actually, I wanted to write a post immediately after to express the mixed feelings I felt that day. On one hand, I loved the experience and the excitement of suiting up as my schools days nerd self. On the other hand I hated losing in a way that did not feel fair. I discussed about the outcome of the hackathon around and people felt like we should have won.
I still cannot believe that a system to book an hour in-store discussing with an employee about an item you see online. An employee you whose job is to sell you the said item, especially in 2016. Nowadays we are only clicks away from users reviews from all around the world. You can even have video reviews at least on youtube. I guess it makes more sense to the judges otherwise the Retail Week hackathon 2016 winner trophy would be on Poq’s trophies shelf.
When we first got the idea of the self-checkout we thought that the hardest challenge was having a working prototype. We were so wrong. We had a working prototype 4 hours before the hackathon ended. From there, we spent the rest of the time testing and fixing bugs to ensure the presentation’s success. The presentation did not go perfectly but the idea and the product were there. To be fair, I think that pretty much all the teams had a much presentation for lesser ideas which could be what cost us the gold. When the judges are involved in retail during a fashion event I guess this is key.
We built a self checkout app that allows customers in a store to find items they want to purchase with indoor location using estimotes and geolocation to handle both indoor and outdoor app behaviour. The most interesting part is that you can scan your items so they add to your basket and when you leave the store you get charged automatically. We even built a mini-backend displaying the last paid basket.
We built a solid proof of concept even though there is some security flows that are fixable on the operational side. For the security tags, just add a device connected to the store system against which you scan your order generated QR code to allow you unlocking the number of items you need to remove the tags from. Even further we can use security tags that would emit the value from the item barcode to enforce that someone is not unlocking something they did not buy. It is a 24 hour hackathon and still we thought about some corner cases.
We did focus on bringing people back to store. I think that we did show creativity and innovation using the latest technology. Maybe we did not manage to pass the idea to the judges but I know that this is the future of retail. Walk in a store pick what you need and go. No more queuing hassle. Basically shoplifting without the criminal aspect.
I may go next year if we put up a team again and learn from our mistake. Technical advancement is not the focus, presentation is. Coding the whole night to get a working prototype is not the focus, sugar coat is. Still it will remain a special moment to me because I did have fun. The self-checkout will be in your hands in a few years, I will do my best for it. I went, I saw, I learned, that is probably what I do best, learning. I learned things my whole life, both at school and out of it. Even now that I worked for a few years I still try to learn as many things as possible. Learning is key to evolution, it is the key to become a better version of one self.
A great way of learning is to take part in open source development, looking at other people’s code, taking on challenges. Since a few days now I am helping other developers on community based websites such as StackOverflow and Github. I had an account on both for some time but did not do much with them. The good part is that on one hand I can learn and sharpen my skills by taking on issues and at the same time I help others. Well, there is not much downside. On Tuesday I submitted my first (non-professional) pull request and it got approved and merged pretty much instantly. It was not much but it still feels nice, you can check it here. And yesterday I got my first upvotes on a few posts on StackOverflow showing that giving time is enough sometimes.
That’s where I will end today’s post before I start spreading on random stuff, thank you for reading.
Yesterday I completed my first month at Poq and I am quite happy with my decision to join them. It changes from prin pretty much everything. I enjoy Poq for different reasons than those I enjoyed Lodgeo at first. However the most important part is that I can express myself in terms of development. At Poq there is more room for ideas and innovation than I was used to in my previous companies. It is crazy to see that I am 25 and including internships this is already my fifth company.
I learned so much over a short period of time and I brought some of my touch to the team. The only victim so far is my Yoda programming that my coworkers wiped away after a few code reviews. I yearned to come back to C# development in a company ever since my first internship at Itop. And now I really enjoy all the improvements of C# went through since 2010. And C# 7 brings a lot in terms of making a code more concise and easier to review. Working with colleagues with a strong experience in development will impact me and lead me making it to another level.
Talking about new step, I discovered a few days ago that in two weeks from now I will participate to the Retail Week Buzz hackathon where I will represent Poq with other coworkers. It is a big deal to me as it will also be Poq’s first participation to a hackathon as a company. Actually it will also be my first hackathon which is quite exciting.
Together we will try to figure how retailers can use technology to drive online shoppers into store locations and create a truly seamless customer experience in the process. This is a big challenge considering all the things we can do using mobile and web apps not much is left for the shops. The obvious reason to go to a shop is because good that is either not available online or not working. We will prepare ourselves to bring up an idea that can make a difference in the retail world and deliver on September 15.
Until then I will slow down on my League of Legends side project that I started a few days ago. There is some progress, I have some of the key logic elements in place. Hopefully in a few months I will have a first version available.
So much happened since my last post, me going in Menorca for holidays just after signing for a new company, France losing to Portugal the Euro’s final. I was watching the game with my girlfriend from a bar called Su Païssa. We were chilling and drinking, having a good time then Eder’s goal happened. I was a bit pissed by how I felt Les Bleus gave the title to Portugal but happy for Cristiano Ronaldo. This guy probably never even dreamt he would ever get a major gold with his national team, and I have the utmost respect for the hard work and dedication he puts in the game.
Hard work and dedication are values that I believe should always be rewarded or at least recognised. It does not matter that it is football or work, if values that allow moving forward are promoted a business can go forth and grow in a virtuous circle. The more recognition for one’s quality work, the more quality work will follow. It is not the only thing that matters though but it plays a big part. Those are thing that I deem essential whenever I sit behind a keyboard or stand in front of a whiteboard.
Dedication is what wakes you up every single morning and go get more and more information about the world around you so you can adapt to it and think about a way to make it better. Hard work is the application of that dedication in your work wether it is personal or commercial. Often after a lot of time offering that dedication and hard work to a party the time may come to move on to a different challenge. A challenge that may be more rewarding at multiple levels.
After a few weeks of search I was trying to find an environment that would allow me to express my skillset to the fullest. An environment where I would be able to take on challenges nobody else tackles. An environment where hardwork and dedication would be rewarded. An environment where I would be back on tracks with my planned learning curve. An environment where I would have a highly talented team to help me progress as an engineer, as a developer and as a person. I can happily announce that I found such an environment as I signed a contract with Poq last Thursday.
Now I am enjoying a well deserved holiday in Menorca with my girlfriend before going back to London for a last week at Lodgeo. Menorca, sweet little island near Majorca in Spain. Menorca where I have the best of views whenever I wake up and do not think about anything else, just clearing my head. Menorca where I am writing this article. You were free to stop reading after the Poq announcement. Bonus for the patient readers, a selfie with my girlfriend having drinks.
Long time, no post. Over the past month or so, there has been quite a few changes and a lot of events. So many things that I did not even get the time to get on a computer during my free time wether it was for a League of Legends game or to work on a personal project. I have been quite busy and there was a few reasons behind that.
The main one is that I decided a few weeks ago to leave Lodgeo to take on a new challenge that would be more fitting to my progression as an engineer. I had that need to make a big change as I was feeling like I was on the verge of becoming stale as an engineer, going to the gym, reading more and more about the latest technologies, mind training, meditation and so on. I even went to the color run whereas the last time I did a run back in middle school it was quite bad, now I did better so it’s ok. Even though I could feel the positive effects on me I felt like something was missing.
This weighted quite a lot when a few days after a discussion with my boss about the future projects our company has for the future seeing them not being fit for my progression, I decided to leave my job and handed my notice a couple of weeks later. Some might say it’s a stupid or arrogant move to leave without having found another position first. They may be right. Others told me it was quite bold.
It could be seen as a rather impulsive move when it was actually decision that slowly built up over the months and I did not realise until a few days before I sent that letter. Big changes are coming for me as I am also considering to move in with my girlfriend within the next months. Some might say that only time will tell if I was right in my choice, my opinion is that I am right and I will not look back, only up since this is the only way to progress.
Sometimes even if it looks foolish you need grab that parachute and jump off that comfy plane you are in so you can live some exciting adventures, my job search provided me with so many exciting possibilities, both humanly and professionally. As the Bronze LoL player I am, I can say: “Worth”.
When I was a kid, when I was asked what I wanted to do I would say Batman or fireman, I am not quite sure if it was the appeal of being some kind of hero or a will to help people. As years passed by I was taught that if I get my A levels I could do whatever it want even football player which I was dreaming about after a couple of nice seasons in my club. But a school rugby game crushed that dream after my ligaments broke during my last year of high school.
After that injury I had time to think about what I would do next, and the first thing that came to my mind was that I like computers, I like the possibilities it gives with the right tools. You can play games, message people on the other side of the world, see things you can only dream of. At first I thought I would learn software development because it would allow me to create video games that I used to play much more than I do now. That’s how I sent my candidacy to a few schools and universities, got accepted in almost of them then picked Orsay Institute of technology that I entered at 17 and left two years, a run in the Institute office as students representative and a diploma later.
After that I wanted more, I wanted to go more in depth in the IT world, digging into complex software and algorithms, and went for 3 years of engineering at the ESGI in Paris. Those were 3 cool years, I had a lot of fun both in scholar and extra-scholar activities and I learned a lot, especially thanks to the school/work alternate system that got me in the work world before I got on the work market.
On september 2013 I was told by my then CEO at Creova that there was a company that was interested in my skillset in London, he got us in contact and I moved to London for the Lodgeo challenge about a month later. It was certainly the best decision I could make. I met a lot of great people that had a possitive impact on me both professionally and personally which makes me pretty happy to be there.
The main thing I learned since I started development is that the designing of a meaningful software is as hard as it is complex, and the implementation can be nightmarish. Actually, the more you try to provide a clear and intuitive user experience the harder it gets. Over the past months I realised that I want to make software development easier for others, make it easier to build nice quality code than rubbish. If coding gets easier, it will enable anyone to focus on designing robust software to solve tomorrow’s problems. I don’t pretend to do it for at a global scale, but at least if it can help the dev next desk or next door I will be happy.
I don’t know if it’s the fact that after becoming TechHub fussball champion a couple weeks ago or me conquering the Breakfast club pancakes challenge yesterday but I feel like Slack is the best thing ever for all the startups out there.
I was having some code compiling when I decided to get a go at Slack that people told me about and I did not see anything great in there. TechHub members have access to a common slack to get all the latest updates about TechHub and what happens in its community, but I never saw it as more than another social network. Creating a Slack account for Lodgeo was the first of several steps that now get me to think it is a must have for a startup.
Why, you will ask ? First of all, for small teams it is completely free. Then from 10 users on the cost is not that big considering all you can do with it (illimited integrations). Yes, Slack allows integrating with tons of tools that are for most free of use or with low costs for smaller teams. At the moment I integrated some dev oriented components such as Github or Jira to have easy-to-access heads up for any projects you want to keep an eye on, along with marketing oriented components like Intercom. For those who do not know those names well, Google is your best ally. You can even create your own Slack integration, I will look into those possibilities that seem infinite later.
I cannot convince you to use Slack for your company with words as I wasn’t when I was told about it, but if you are that’s great. You should just go and have a look by yourself, even if you don’t have a startup you can just have a look and feel that fire inside you. Ok it may be the pancakes talking here.
Yes. Finally. Lodgeo V2 is coming. This is not advertisement but after months of developing that almost new product and literally tons of testing we will finally publish that major Lodgeo release that I have been mentioning in previous posts. For months and months and months we have been balancing between adding the freshness of a new user experience and maintaining the solidity that we had in the past to get an application that is both edgy and robust. Now it has been accomplished even though still perfectible, we will aim at bringing more sexy features very soon.
I cannot discuss those incoming features but good things are definitely coming and the Lodgegoers are already working on those. Here is a little video to get you waiting until the release.
A couple month ago I told myself I would write my next blog about some personal project I was working on, but then life kinda got sucked into work and since then that project got stuck into development hell. So it will be in another blog, if I write today it’s about the acquisition of an elliptical trainer I made yesterday. I thought it would be nice to just be fit again as back in the days I was playing football. I’m only 24 and don’t feel out of shape in everyday’s life, but I can feel it when I play football with friends and collegues, like I run everywhere for 10-15 minutes and I’m toasted. So I went to get that so I can enjoy playing the trickster on sundays mornings again. By the way this thing was heavy as hell to transport, I was convinced I could easily lift a wide 50+ kilos and carry it over a double kilometer back to my apartment (which ultimately I did but that was excruciating, considering). So today I decided to start the official return of JD to sports by watching a Game of Thrones episode that I started watching yesterday (5th from 5th season, just because), so just trained 40mn with 10 kilometer traveled which is nice for a first (for those that want to try that, don’t forget to constantly hydrate or the stop will be painful). So quite proud of myself and it feels fresh, just feels fresh. Bringing back that kind of activity is quite a good thing not just to enhance as a person but also as an engineer as it will help me broaden my reflexion or even clear my head when I’m stuck on an issue. Video games are good for that but online games can be frustrating sometimes and I will not mention a certain MOBA that I left the Hellish tier a couple of days ago thanks to a friend and some epic games but I’m digressing here. Also, my company Lodgeo released a new version of our app so check it out on both Google Play and the App Store. And I promise next post will be more development related and won’t be in too long. Cheers!
What makes us engineers, as I was witnessing a lot of changes in my life recently I was wondering who I am, my diplomas and work say I am an engineer, my paycheck says I am an engineer, what do I do to prove I am an engineer and not just a mere developer ? I needed to take a step back and look at what I was and what made me an engineer in the first place. Back when I was a kid I loved drawing, I was drawing at every time of the day, all kind of things, people, animals, fantasy creations, imaginary buildings and so on. Some people saw me as an artist but those were my first attempts at creation.
Around 10, I was writing comics to tell stories but I was never happy with the result and always wanted to do better before I show it to anyone, in the end I just burnt those and nobody ever knew. I was starting to become a perfectionist without even realising what it meant. Then I started creating games on paper, that involved more thinking, I was playing those alone to make sure those would make sense before showing them to my siblings and friends. Same thing happened than with my comics creation attempt, all thrown away.
Then we had a second home computer with Windows 2000 on it, with few games, and it opened a lot of possibilities to me; I wanted to play video games for living, at the time I didn’t know it was actually a thing but the closest thing I could do was video game creator (didn’t know it was called programer or developer back then). I believed that at some point in the process I would get to test some of those creations.
Years later during high school I had to make a choice, at the time my mom wanted me to follow my grandfather footsteps so I become a surgeon, as I wasn’t about what I would do I followed that path during high school that matches the one that would lead me to IT. After I got my A levels, I didn’t really know what to do and I thought that 5 years to become an engineer was a lot. At that time I decided to go to the university in order to get a Higher national diploma of IT which would and actually did take me two years to obtain so I could secure something to be directly employed, but after I achieved that I thought “Ok, I’m 19, what’s next ?”. I didn’t hesitate long I went to an engineering school where I had the possibility to be graduated in three years. That still seemed long to me but I was just taking a year after the other. Lots of bloodshed eyes, allnighters, drinking, partying, exams and three years later that was it, I was an engineer. A few days later I had that discussion that triggered my move to London in a tech oriented startup (Lodgeo) which was the next logical step of my evolution.
Now, it’s been a year and a half I have been here, I have progressed, much more than people can imagine, a lot changed. During my second engineer school year I created a windows phone app called G-Series, quite a decent app that I released as soon as I developed it because I was so proud of it. Once released to the Windows store I got crushed by most of the users that didn’t get the app to work. Not enough testing, I had unit tests but nothing at the UI level. When I saw those critics I was pissed, all those hours spent developing, running it and bragging about how much of a computing god I am were all a waste. After a few days I decided to get back at it, I got it fixed and enhanced it, I wanted it to be perfect so nobody can criticise it. In the end, I never released that enhanced version, last month (a couple of years since I last took a look at that code) I decided to open that project and I ran it on my phone, it seemed ready to be public. I did not do any change to it, but I had a different vision, it was good enough to do what it’s supposed to do without any issues even though there was a few obscure scenarios that may never occur to an actual user that stopped me a few years back.
The reason I do not release this app then is that the market is more than crowded now with additional stuff that did not exist two years ago. At that time I realised that the perfection I was running after is not a fixed state, it’s keep on moving, failing again and again until I have something that people can use, and then make it better, more resilient to wild users. It looks like I finally tempered my vision to deliver something that works, something that people can get into their lives. That’s what I learned over the past couple of years, that continuous learning is what makes me an engineer. I am not changing into something else, I am something that needs to keep changing, evolving in order to not become stale. I am an engineer.