Development Notes #4 Refactoring & Hitting the milestone feels so good

This week I did get to a milestone, one that really makes me feel pretty proud of the work I’ve poured into this. Initially the idea was to do a simple website with simple community tools that I would give to users.

This idea grew into something else.

The idea remained the same. I would provide said tools to all the users, however the methodology of that idea drastically changed because I wasn’t thinking of just “my site” but something else that ocurred to me.

I think, once everything is done I hope to talk a lot more because right now a lot of things are being refactored and changing and yet the idea remains the same.

This week I hit a milestone which left me with the best feeling ever because it was one of the core components I was working on, it was also one of the most convoluted pieces that I had to standardize and normalize because if I didn’t it would bite me back.

So, overall I’m pretty darn happy. The refactoring actually took me 1-2 hours to do because it was a constant struggle of how to manage some things without altering the default capabilities.

Hopefully all this hard work pays off. If not, I can assure you that I’ve hit one item off my bucket list and that is to release a product out in the open.

Maybe that idea you have had for years isn’t a bad idea, so why not commit to it?

CREATIVITY IS ALLOWED. IMAGINATION RULES!

Photo by duncan c.

I like to think I have a very good imagination. It fuels me when I’m being creative, it creates a spark within me. I guess, my inner mind, or whatever you want to call it keeps popping them up from time to time.

I like to think that everyone goes through this. The voice just keeps bringing up old ideas I’ve had. Deep down I think they would be super fun to do. Whether the people like them or not I do not know. I think the last thing want to think about is if other people like it. As to why, it’s very simple. When you create things you are creating things you want to create. The moment you start creating things because people like them I feel everything becomes a chore to do.

Whether the idea is to throw it at the market and see what happens or not ultimately you are creating something because you want to create it. Obviously there’s always the business side of things and that’s a whole other type of thought process.

I guess after many years I’m actually baffled that old ideas I’ve had for applications or games keep resurfacing.

There’s a lot of way things can go wrong.

You implemented the first stage of your idea, then what?

This happened to me once but I have gotten stuck in the past with ideas that started really simple and then as I progressed I stumbled upon another issue: “what do I do next with this…?”

Or you can just start toying with the different outcomes

It’s what I usually do when I get stuck and I can’t progress with a problem or a creative issue. If I get stuck, I step back, grab something to it and may widen the scope that perhaps we need to twist it a little bit to give it a new shape.

The biggest reason I’m bringing this is because we are all getting old, honestly.

I didn’t have a lot of things in life. I think a person once in a while stops and wonders if they should continue without ever fulfilling that idea or product you have had in mind. Ultimately it all falls down to regret I believe.

In a sense this summer I did over-commit to a lot of things. Learning Japanese, setting some personal goals I’m currently working right now, learning photography, and learning to draw.

Now for the drawing part I still genuinely suck but I’m also confident that I will get better with practice. I haven’t really given up. I got to the part that I don’t want to watch TV or series and I just want to focus on what I really want to do rather.

Has it been done? So what? Do you know how many series subscribe to the same tropes? Do you know how many Zelda clones are out there and that hasn’t stopped people from buying them or any “clone game” or “clone comic” or “clone book”.

One of the things I learned before I end this post, because some of you are probably wondering “well, you know, this is really common knowledge”. It isn’t common knowledge, and I like to think people need to be reminded. A quick example would be opening nottheonion subreddit and check the titles and wonder if any of the content presented had any common sense? You could argue that the subreddit isn’t a valid option, then I guess you can easily browse the news and see all the news reported of people doing things that don’t have a modicum of common sense in them.

I guess I just wanted to write this off my mind. What is common to you is uncommon to someone else. What you have thought about may be new to someone. So, maybe that idea you have right now isn’t so bad?

My eGPU experiences so far with a Macbook Pro (Mid/2017)

The current GPU I use (2020)

I think when it comes to buying high-end laptops it doesn’t matter if it is MacBook, or a Dell XPS, or a Razer laptop. Most of the cost can easily range from $2,000 to almost $3,000 and that alone could be a crazy price if you don’t have a job good enough to tackle that type of price.

I really never thought I would do this type of setup. The thought of using an eGPU was intriguing at best. It’s a technology that is still in diapers and it makes you wonder what sort of future it holds for Thunderbolt/USB-C for these types of scenario. I do believe there’s a market out there that wants eGPUs to evolve to the native speeds a GPU would run attached to a motherboard.

On a personal taste, I’d rather use a laptop, because it’s portable and I can leave with it at any time and do my things both on a professional and personal level. Then I can just come back home, put my MacBook Pro on the desk and just simply plug in the eGPU. And that’s all you really have to do. I haven’t found myself to be frustrated with it, some operative system issues aside.

Truth be told using a really good GPU and putting it inside a eGPU enclosure can limit your GPU power of what it can really do. You will never see the true potential of a video card you purchase compared to plugging it to the motherboard. In fact some games, mostly old ones with really archaic structures won’t detect an external eGPU even if its life depends on it. And here are some examples:

Soul Worker

Soul Worker is an old MMORPG (if we can call it that) released a few years ago to the west. When you try to run this game it just literally fails initializing.

Select Compile Heart games

For whatever reason Compile Heart games struggles to even use eGPUs. The performance is worse compared to the built-in dGPU my MacBook Pro has to offer.

Final Fantasy 8 Remaster

It seems that once again the team has sort of failed to detect more than one GPU apparently? I don’t really remember well the issue I was having and all I know is that the launcher didn’t even want to start. And this is just to name a few of the notable issues with the eGPU setup. However, I should note that it seems that people with normal setup and a normal computer have ran into this issue so hopefully Square Enix will fix it someday… probably not.

And I’m sure there’s many more games that aren’t quite as compatible with eGPUs. Internally I don’t know what the code does under the hood, but because we are talking about games that were developed 5-6 years ago I can’t simply be hard on them for the fact that they are underperforming because developers didn’t know eGPUs were going to be a thing.

And let’s be real a lot of the operative system layers have changed and we can’t really expect developers, especially game developers to keep up giving support to already released products. That’s not viable in any way.

The experience so far

So the experience so far is that it’s been pretty good but there are a lot of really rough corners, especially in macOS (OSX). For example, sometimes I connect the eGPU while I’m booted into OSX, and the operative system won’t even pick up the eGPU and I know it tries to because the eGPU icon shows up but then mysteriously exits. Anyhow, let us begin!

The macOS Experience with eGPU

I would say that it started really good. Initially I didn’t have a lot of problems compared to what I’m confronting now. There’s a really weird bug that would make the kernel literally hog the CPU. I assume that it is a driver issue that doesn’t know how to handle certain scenarios but no matter what I do it just always shows up eventually.

Basically all you have to do is plug in your eGPU and maybe the first two hours it works well, but if you trigger the bug you’ll notice that your system slows down to a crawl, your macbook gets worryingly hot, and the Activity Monitor is just tell you the CPU is on fire.

As to why this happens, I have no idea. I have exactly no one to reach out to about this nor do I know any Apple developer. Even if there was a Apple developer that I knew about I doubt everyone would have access to GPU drivers or even have the knowledge.

All that said, when OSX isn’t giving me heartburns with the eGPU it works incredibly well to the point I just love using it because it how well it works with multiple displays.

The Windows 10 Experience with eGPU

I would say that my setup with Windows 10 is quite…. unique in many ways that would make any decent human being question my ways.

I have Windows 10 running on a NVMe storage enclosure. It works blazingly fast except when the storage overheats, which it does, then Windows 10 will throttle it down the best it can to prevent damage.

Storage issues aside, and honestly the storage issue isn’t even an issue unless you have a setup like mine.

The best eGPU you can get is with Windows 10. I say this after playing games to completion like Trials of Mana and I’m almost done with Tales of Berseria as well… I have ABSOLUTELY almost no complaints about Windows 10 handling eGPUs.

Microsoft did an amazing job, minus some…….. issues with how it handles PCIs that would fail the detection of the eGPU or even fail to load it. However, once you overcome the issue you can play a lot of games at a decent framerate speed.

Overall eGPUs just performs better with Windows 10, for me.

In conclusion, this was a rather short and to the point sort of post. I’ve revised the post many times to the point I just wonder “what else can I really talk about eGPUs?” while the concept may be hard to wrap around your head, especially to technical people who would just question “who would plug a GPU through a USB port?”, turns out that there’s quite a big community behind the idea and it doesn’t surprise me.

The idea of having a laptop that is capable of running an external GPU is baffling even today. But, when you consider that you don’t have to spend and additional $2,000 or $3,000 then the math would work out in your favor.

Now, if you are an streamer then this is a completely horrible idea. The 40Gbps connection is being blasted away transmitting data with the game you are currently running on 4k, why would you think it’d be a good idea to stream on a eGPU? It isn’t. I have tried it. Those frames will never make it to Twitch through OBS.

All that aside. I’m rather complacent with the setup. It’s the most absurd setup one could have, suiting me completely.

Sometimes I wonder if WordPress is unbeatable…

For years I’ve been looking at possible replacements for WordPress. I’ve thought about Drupal but it requires too much time to setup to bother. I did like Movable Type when it was open source ages ago but that somewhat died really quick as well… plus you needed to have extensive knowledge of Perl to get somewhere programmatically, something I didn’t have.

Checking other languages like C#/Java/NodeJS seemed to have good contenders… but in the end it was a mix of:

  • How much time do I really want to spend on this?
  • WordPress is extremely well documented with its StackExchange site as a backup if things go wrong.
  • Ghost blogging platform looked like a great contender but at the time there wasn’t much documentation on how to create plug-in. Plus it would defy my “how much time do I really want to spend?”
  • PHP is still one of the easiest language to get around. And like JavaScript it’s also one language you can mess up pretty quickly or misunderstand.
  • In an unrelated note I’ve noticed PHP community has gotten worse? There seems to be a lot of zealots than in the old days when everyone was just happy with what they had. Most of my fond memories with the PHP Community was how open it was to help.
  • In another unrelated note: Python community is still one of the most loving helpful folks beating almost any community. They are chill and ready to help.

Unrelated notes aside…. it seems that even in 2020 WordPress remains to be one of the strongest platforms ever created. It’s easy to get into, easy to work around changes, easy to do stuff.

If you have any open suggestions just let me know below if you ever stumble upon this article.

I don’t think Apple’s thinness obsession is far off…

Over the time I have spent with my Macbook Pro I’ve learned to accept a lot of its cons such as a extremely shallow keyboard. Of course, my acceptance has a limit thus I will never accept the infamous touchbar.

I’ve been in disgust with my Dell gaming laptop, a Dell Inspiron i7559-5012GRY. It’s not a bad laptop. It has given me the joy of playing games with it with a really good IPS display that’s sometimes too bright and a not so bad GTX 960M that can tackle a lot of many things and better than this MacBook when it comes to gaming.

There’s a problem… I hate its bulky design. It’s unnecessarily huge, its weight is unacceptable. The Macbook Pro and Macbook Air has the right amount of weight without inconveniencing the user. This is something that I give the kudos to Apple. I’m the type of person that moves from spot to spot in a house and carrying my Macbook Pro around hasn’t been a hassle at all.

I also think there’s a huge problem with my line of thought. I want a dedicated gaming laptop and a general purpose laptop whose battery can last at least 10 hours. When the market baseline price is starting at MSRP of $2,300… then I don’t think at all that asking for a more sophisticated system is far off.

I think the Surface Book 2 in terms of design has achieved a middle ground… and this is the same idea that if put in perspective we could compare it to the Switch. Except, it’s not a gaming console. The Surface Book 2 is a giant yet elegantly designed tablet with a premium keyboard and GPU slapped in. Now, lets think for a second here.

The normal design of a laptop is that you would have all the components of a computer in the keyboard layer below. The CPU and GPU would be at best 11″ inches away from each other and at worst case scenario they would be near each other… punishing themselves with the heat generated by both.

Whether that’s a design to save money or not when it comes to the manufacturing process… it doesn’t change the fact that laptops cooling systems are behind… leagues behind.

There is one company that managed to click with me in term of design and my demands. A company that I was almost willing to throw my money the second they released the product. Razer’s Razer Blade.

The Razer Blade literally had all the things I wanted in a gaming laptop. An elegant yet incredibly powerful design. A thin form factor, and just the right amount of goodness in it. There’s a huge problem though and that is that Razer quality control is god awful. From all the reviews and experiences I read Razer products seems to last at best a year. because they all happen to die fast. If Razer doesn’t fix this… and apparently it has been an ongoing thing over the years… then I guess simply said they won’t get my money at all.

But maybe, just maybe I’m asking too much.

Perhaps I’ve fancied myself too much over the years. I don’t think going through a lot of life situations I would ever buy an Apple product… at all but here we are.

Final Notes on Microsoft Azure

These are my final notes on Microsoft Azure. It’s not meant to be taken as a review, but just yet another experience.

I’ve spent a total of two months with Microsoft Azure(referred as Azure from here on). Most of the time I spent with Azure was using their B-series virtual machines which for small/medium sites it’s perfect. My complaints about Azure does not start with the service quality but the prices they offer. I left Azure with a satisfied experience, yet somewhat bitter I couldn’t keep using them.

Azure is yet another cloud services like Amazon Web Services, Google Cloud, etc. You can spin up as many virtual machines, put them in the same virtual networks, or put them behind a load balancer, or simply keep it private as the choice is ultimately yours. There’s also a vast amount of services Azure offers for a very steep price as well. Managed database servers, DNS hosting, storage services, cognitive services, container services (application server plans), and the list goes on.

There’s something I have to point out. Like Amazon Web Services and Google Cloud, Azure is not for beginners. Yes, there are beginner tutorials but put it in the context of “I have experience configuring linux servers, but I’ve never used Azure or AWS”. That’s the beginner context I’d like to highlight because there will be a lot of terms that will make people scratch their heads wondering what they mean. I think it’s a necessity to point out what defines a beginner when it comes to cloud services.

Now jumping back to the subject. I loved working with Azure network security group (firewalls, etc). It gave you most of the controls you needed to open/close inbound/outbound ports. Their storage services was a incredible delight to use, especially and specifically the file share storage. Being able to mount the file share on Windows and Linux was just pure bliss for me as I could backup visually anything from a server outside Azure, or even my personal computer back into the file share. File (storage) is something I’m really excited about and something that I’d like to see grow consumer wise because there’s nothing more satisfying than mounting a file share, do your tasks, unmount and be on your way to the next server.

I couldn’t find any services that aligned with what Azure did with its File storage. And this is outside cloud services. I’ve been looking at a service where I could do this without paying an exorbitant amount of money. If you know any, let me know in the comment section.

There are two glaring issues I have with Azure. Let me start by saying that I know Scott Hanselman wrote (two?) articles titled Penny pinching in the cloud where he goes on showing you how to save money with Azure. I think having an estimate of $33 monthly without accounting for bandwidth is not saving money. This isn’t me criticizing him in any way, I just feel like the intentions may be misinterpreted as just telling people Azure is cheap and you should totally get on our services. And to be fairly honest he mentioned multiple times that you should just stick with “that $5 dollar service”, which by the way if you haven’t visited Linode and used their service it’s to be honest up there in terms of quality. It’s probably the best $5 spent if you are just starting out there.

I have to disagree with Mr. Hanselman on his “penny pinching” articles. Azure isn’t cheap and I don’t believe you can save any money outside of reserved instances. However, I do think that you get what you pay for. Linode may have the best $5 expenditure and get an amazing service, but Azure wins in the sense that it does not limit your CPU usage in any way. Let me do the best to explain: Linode, being awesome as they are have a somewhat strict and disturbing terms of services. What makes it disturbing? If you use your CPU a lot Linode may be notifying you about it, or even stop the services if they find it’s impacting other users. And I have a lot to say about this because to me while Linode tries to sell it as a “way to maintain quality; and this is a shared environment” in my eyes is just “we want to maintain a low level effort on limiting everyone VPS resources while maximizing profits”. This is my interpretation on how Linode operates, and ultimately it’s the vibe their terms of services give off. I’m open to be proven wrong on Linode.

Meanwhile in Azure, if you have a  CPU skyrocketing at 80% because it’s doing something CPU intensive Microsoft won’t bat an eye at it. So in a sense Azure, AWS, Google Cloud probably has your back on doing CPU intensive tasks. I personally would be at a fear using Linode, Vultr, Digital Ocean trying to use what I’m paying for. They could come and shut you down anytime they want.

The other issue is bandwidth. Azure needs to offer reserved capacity for bandwidth. It’s direly needed for that wide adaption on small business/medium business sector. No one wants to pay $88 bucks for 1TB bandwidth. I’m not saying that everyone is out there hoping to use that amount because if that was the case a lot of service providers would be either out of service or plainly struggling. The pay-as-you go for bandwidth has to be improved for a massive Azure adoption rate, in my opinion. I can deal with virtual machine prices because reserved instance has my back on this.

In conclusion: Microsoft Azure is amazing, and ultimately if you have the money and don’t mind paying premium I ask you to give it a try.  For small time people like me, Azure comes off as an overpriced service. I hope to come back to Azure someday, but it’s highly unlikely with those bandwidth prices.

 

ArubaCloud is not as bad as I expected: A contender to the “one dollar wonder”?

I’m astonished that my first experience with ArubaCloud is not as bad as I initially expected. It’s not how I expected to open this post tonight and it’s certainly something that I’ll be giving a real test throughout the year because when you offer $1 Virtual Private Servers you can’t help but wonder how they stay in the business while providing such a cheap service.

Let me start by saying that this is not a VPS review, but hopefully a journey that will lead me to do a full review in a near future. ArubaCloud simply put is one of those services that makes you scratch you head and wonder if it’ll be okay to leave your site/blog/forums in the hands of a $1 dollar service.

What can I expect from a $1 VPS service? I have no idea. But I can tell you what I don’t expect from a $1 VPS:

  • Network stability
  • Good uptime
  • Support (come on, let’s be realistic here and say that support was never thought of for this type of service)

ArubaCloud has a lot of things that it got right: The separation concerns between billing and managing your cloud are split in two different areas. Billing takes care of charging for the service and the control panel manages all things with the service. At first sight it may not look like the most user friendly experience but having that peace of mind that I can have two different passwords for billing and managing my cloud is not that bad in my book. Of course, this is incredibly debatable and I’m sure there are people out there that don’t want it like this.

ArubaCloud control panel is the heart of all things related to the cloud. The server creation process is straightforward but the user interface leaves much to be desired of and while that’s the case I was still able to get everything up and running in exactly:

Exactly one eternity later. The problem with ArubaCloud is that it’s under so much demand that it took around 6 hours to get my server through whatever queue they have. Before I even had access to the control panel I had to wait 24 hours to get my ArubaCloud account fully activated because it’s, and this is conjecture here, manually activated.

Another bad thing is that their ticket system is quite literally broken. I could never open a new support request. On a similar note, I don’t think I would blame any poor soul there trashing the ticket system so it doesn’t work because the high amount of support tickets for a $1 VPS must be too damn high.

I researched about ArubaCloud a bit before diving in. Yes, I was doing a full checkup on it because I’ll be using it in production for the hostname http://storage.thehumble.ninja/ and as the name states it’s mainly used for storage at the moment.

Now for the intriguing part is that, and please bear with me here because I will probably be called out for this and it’s only expected. Whether I hit the cluster bingo or not I can safely say I’ve had a better experience on this $1 VPS than on Vultr, Digital Ocean, and Namecheap (VPS, and shockingly it’s faster than the VPS Namecheap provided me). Usually my experience with the services I mentioned above is that they have something in common, a common that should also affect ArubaCloud but strangely doesn’t. They are under high demand. I’ve yet to replicate the same performance I get from Azure in DO, Vultr, Namecheap. I do not know why but Azure and now ArubaCloud performs better for me than any of the services I mentioned. Whenever I used SSH on DO, Vultr, Namecheap it always lagged out and took a while to send/render what I typed, not only that the time taken to render PHP pages was just longer.

It’s all highly dependent on so many factors that I know I’ll be called out for the simply reason that not everyone is experiencing the same. It could be a networking, hardware, availability of the CPU/Disk to process my requests to it (which is also part of hardware). With Azure I feel like I have a local server at home because of how simply responsive it is and with ArubaCloud I feel the same as well.

After my server was set up I upgraded the server to the latest Ubuntu Server LTS (18.04). I enhanced security the best I could and enabled UFW after setting up all the rules because I don’t like leaving ports opened to the public. Then I did a speedtest and to my surprise it wasn’t that bad:

In conclusion: It’s one dollar. I don’t expect much from a dollar and you can only stretch it so much to the point that you get a VPS out of it, quite elastic if you ask me.

In all seriousness. Give ArubaCloud a try. I am in no way related to them, but I thought that if you are someone with a site that currently can’t spend on a premium service like Vultr, DO, Linode, and the whole known gang of cloud hosting then honestly you don’t have much to lose at all.

The weird case of foreign languages

I have noticed over the months I have been working on my app that managing foreign languages like Japanese, Chinese, Korean, etc takes a memory hit to the point that it spikes up the memory usage–as one would expect. Sure, I expect more memory usage… but we are talking about a spike from 60mb (normal usage) to 80-100mb usage per entry–thus I was forced to call garbage collector manually as I couldn’t wait for the QML/JavaScript engine to do the clean up when there’s “inactivity”.

So, I was worried and added initial linux support to my app (never been planned to be released under linux) and found out that languages such as Japanese walks a fine line of 40mb memory usage. The garbage collector works twice as fast as well. For example, in Windows I’d call garbage collector and it doesn’t do it that fast. In linux? Blazing fast. It’s not much about the speedness of how fast it takes to free the memory, it’s the usage. I’m talking that Windows still takes 60-80mb+ (and up) while the linux build keeps walking the 40-50mb line.

Now, initially I suspected a memory leak, but that wasn’t the case. The Windows build just takes that much memory, and it worries me. Part of what keeps me at ease is that since this will be an android application; I can expect the same behavior that I get here in my linux mint in Android. Memory will be freed and the usage will be kept at minimum.

Granted: Pure naked eye seeing memory usage is not enough to suggest there’s a memory leak or that there’s a memory mismanagement, that’s the job of a profiler After running valgrind a few times I couldn’t find any memory leak just petty warnings, so I proceeded to guard against it, well, it wasn’t much about guarding as I honestly needed to free the objects that are no longer needed after X time. Plus, I also rationalized the usage that Windows is just being Windows… maybe Qt is pulling something that requires big allocations in Windows, but not in Linux for whatever reason. I do think that it has something to do with the font mechanism in general… but who knows at this point.

My e-mail service makes me uncomfortable

Ever since we had the privilege to use Gmail (Googlemail) e-mail service back in 2004 Google became our favorite search engine, and truly our favorite e-mail service dethroning hotmail, yahoo, and other popular services by introducing a fresh look.

Its feature rich web interface and the features it offered made me rave in delight for days and weeks. Over the years, the hidden price of using such service unfolded to see it plagued with privacy issues.

This type of issue may make some throw hands up while rolling your eyes with a “here we go again…”. Truth? Most of us have nothing to hide, yes. Having “nothing to hide” is the go-to response to privacy concern issue in which I find quite short-sighted as it’s enabling Google as a company to keep this practice.

Perhaps I am too paranoid, maybe. I’d also like to keep whatever I talk to between my colleagues, friends, relatives in private and not be part of Google’s targeted ads. Which reminds me, did you know that anything you talk through Google Hangouts is also used for ads? No? Give it a try.

All in all, I am cursed. You hear me right, I am cursed because for many many years I have used the same e-mail address in services like Amazon, Ebay, PayPal, Facebook, you name it. And now I am “forever” tied to Google ads machine. What I fear is not the Ads machine but what comes after it.

  • Profiling your behavior
  • Search behaviors

All the searches you have made, all the things you have talked through google services is going to become a carcass of what you may may not do. It takes no genius to realize that the could also be gathering data of the places you visit through the millions and millions of sites that uses Google Analytics, including this site. Has there been a report as such? Not really, at least not yet.

Google have given us ever reason to distrust it. Sadly the giant is so big nobody sees the threat up in the air. As for me I have to find ways to transfer all the services I use to the new e-mail.

To those who wonder which e-mail service protects your privacy:

  • Check out Posteo.de they also do transparency reports and often calls out on authority abuse.
  • Check out fastmail.

Restoring data

If you are currently reading one of my How-To articles or downloading the WINE binaries for a game. My apologies, I’m currently restoring the data as I migrated everything to Ghost blogging platform.

It won’t take long; I’m just waiting for rsync to finish uploading all the data, then I’m off to tweak a few setting in nginx and I’m done.

I’d also like to announce that the script I used to migrate from Pelican to Ghost will be available.