Winner's Excogitations

A chronicle of the thoughts, learning experiences, ideas and actions of a tech junkie, .NET, JS and Mobile dev, aspiring entrepreneur, devout Christian and travel enthusiast.

My Open Source story (thus far)
7 years ago · 3 minutes read

open source

About 2 years ago, I took a hiatus from writing .NET code to focus on NodeJS as I needed it for work. I worked with Express, and MongoDB and over the course of working and learning I developed a fondness for some tools and libraries as they just made my life easy and saved me time. Fast forward a few months and I am back to writing dot net code again (though it is dot net core now) I realise that quite a number of those libraries have no dot net equivalent and that is what set me down this trip.

The first library from the JavaScript world that I missed was shortid. It is a simple package that generates unique strings from seven to fourteen characters long and those can be used for just about anything. I used them as my _id fields in my mongo collections instead of the mongoid format that MongoDB assigns by default. It helped make them human-readable at least for me. I got back to writing web apps with ASP.NET Core and was itching for a way to generate short ids that I could use to uniquely identify objects in my database and use in a URL as well. When I discussed this with other dot net devs their response was to use Guid's and while that would have met my requirement for uniqueness, I just didn't like seeing a Guid in my URI. My grand solution was to write a dot net analogue called (you won't believe the amount of creativity this took) shortid. Writing it and posting the source code online allowed for me to gain valuable feedback and insights about handling thread safety and memory management when dealing with a lot of strings.

The second library I realized I missed was dotenv which is a library that helps load environment variables from .env files. When I started working with ASP.NET Core, I tried handling configuration data using the baked in appsettings.json files but those had the glaring limitation of having you place potentially sensitive information in plain text. .env files allow for the files to just reside locally and not be checked into source control. I looked around and did not see any library that allowed for that to be done on ASP.NET Core and so ... (you guessed it) I wrote one. I called it dotenv.net. I made a few changes to the way the dot net port works to make sure it familiar to the target audience. Building this and having it open source helped me learn how to handle ideas from other developers in the form of issues or pull requests, know when a change recommended is in line with the goals and spirit of the project.

Recently, I really wanted to see a summary if the details of the calls my ASP.NET Core Web API was receiving and I realised the dot net ecosystem doesn't have something like morgan which exists for NodeJS. I set out to write a port called Logly which is out and on nuget. Writing a piece on that as well, that should be out in a few days.

The purpose for writing all of this and telling these stories is to encourage someone somewhere to do something. Do not feel like you cannot. If you identify an issue or a need in your environment, step up and take responsibility and this goes for more than just programming,

Cheers people,

Till the next one.

My Perfect Devices 2014
7 years ago · 3 minutes read

As promised in my previous post about my perfect devices 2016, here is what would have constituted the perfect devices for me in 2014. As I go through them again, they’ll still be pretty competitive in the year 2016. So much for the 2-year cycle of IT equipment.

The phone 📱


A 5-inch Super-AMOLED screen
1920 * 1080
A 2.5GHz Cortex A17 quad core processor
An ARM Mali T764 GPU @750MHz
An 8MP Ultra Pixel ISOCELL camera
Dual tone flash
A 2MP front camera
Stereo front facing speakers
3500mAh battery
LTE support
Wireless charging support
Dolby enhanced sound
Aircraft grade Aluminum body
Dragontrail glass with oleophobic coating
Dual-band 802.11a/b/g/n/ac wifi
Bluetooth 4.0 with a2dp, ant+, and edr
16GB internal memory
SD card supports up to 128GB.

The tablet 💊


An 8.9-inch Super-AMOLED screen
2560 *1536 resolution
A 3.0GHz Cortex A17 quad core processor
3GB ram
Power VR G6400 MP6
4MP ultra Pixel ISOCELL camera
Dual tone LED flash
2MP front camera
Stereo speakers with subwoofer
10000mAh battery
LTE support
Wireless charging support
Dolby enhanced sound
Aircraft grade Aluminum body
Dragontrail glass with oleophobic coating
Dual-band 802.11a/b/g/n/ac wifi
Bluetooth 4.0 with a2dp, ANT+, and EDR
64GB internal memory
SD card supports up to 128GB.

The laptop


Intel Core i7 4702MQ processor
8GB of ddr3 RAM
32GB mSATA SSD
1024GB 7200rpm HDD
Dual band 802.11a/b/g/n/ac wifi
bluetooth 4.0 with a2dp and edr
4 USB 3.1 ports
4 speakers with a sub woofer
5MP camera
Full sized back-lit keyboard
Nvidia 745m graphics card
2GB video ram
Aluminum body
17.3 inch screen
1920 x 1080 resolution
100Wh battery
Lightweight
<2cm thick

The desktop 💻 setup


An Intel I7 5960X 8 core processor @4GHz
32GB of DDR4 2133MHz quad channel ram
Amd Radeon R9 295×2 GPU (8GB DDR5 VRAM, 5362 shaders 1018MHz)
256GB PCIe SSD
512GB Sata III 6.0Gbps ssd
2x 2TB 7200rpm hdd
Dual band 802.11a/b/g/n/ac wifi
Bluetooth 4.0 with A2DP and EDR
2x 30″ 2560 x 1440 AMOLED displays

Is Microsoft serious about Windows Phone?
7 years ago · 1 minute read

Been a while since I really posted my musings about certain issues, so here is one.

bolorundurowb_com/production/article/sukggi6eoia8h3sphfeg

In the mobile operating space, there are two major players, with Googles Android operating system taking about 76.6% of the market share and Apple's iOS taking almost all the rest. Microsoft hopes to become a major player and to me, up till this present moment, aren’t doing anything to achieve that objective.

If I were in charge of Windows Phone proliferation at Microsoft, here is what I would do:

  1. Make windows phone OS free, not necessarily open, but it would be usable by any manufacturer without paying licensing fees. (Microsoft has already done this).

  2. In order to become a serious mobile space player, you have to draw people who are just switching to a smartphone for the first time, (this removes the issue of unavailability of some apps on their platform). They would achieve this by making their devices dirt cheap like entry-level android phones. (1) above sets them on the road to achieving (2).

  3. To get (2) you have to observe what happens in the developing countries market space, and what obtains there. For now, Mediatek is the company manufacturing the chipset for the masses, it would be in Microsofts’ best interests to align themselves with Mediatek.

  4. Microsoft has to play to strength, in that its operating system works smoothly on even the most meagre of hardware because of its minimalist design principles.

  5. As soon as Microsoft succeeds in capturing a sizable share of the lower end market, an app surge would follow, because developers would want users to have their apps.

  6. When the lower end is captured, then flagships using the latest silicon should be offered on every manufacturer and cellular carrier, this would endear them to the premium users and the higher profit end of the market.

This is just my two cents worth of advice to Microsoft. Have a nice weekend.