Development Notes #3 – How easy it is to fall into the “oh, this will be easy” pitfall.

Photo by Trung Le

Actually I never fell for that when I started. Sorry to disappoint you! (Jokes on you though, things can be seemingly easy, sadly, they will still consume a rather large portion of your personal time).

Truth is after doing this for so long you get ideas of how long things will take. Some will require a lot of time, and some will require more than time, it will require a will and motivation to burn through.

Truth is, it’s really, really easy to fall into hype and excitement of things that you are doing. You’ll start to notice that 2-3 weeks later things are still being worked on, and that in truth that idea you had didn’t account for a dozen of things that site owners may require and you have to refactor a lot of code to accommodate to that.

This, to me is the biggest challenge in software development. Starting a product by yourself is not really a joke. It requires a lot of determination, will, if you may, to power through a lot of the things.

And the same goes for theme development has become insanely complicated with an array of devices with different resolutions they have to re-adjust and re-test their things over and over.

There has been a lot of progress regarding development of the plug-in I’ve been working on. I don’t want to say I’ve had to rework the things I’ve been working on. Rather I’ve had to refactor a lot of the code to accommodate future code so that it’s easier to extend. That itself is rather different than reworking because reworking would be something along: “I had to rework X feature because not only it didn’t work as expected or the implementation didn’t work out.”

So, there’s been a lot of architectural changes, if you want to call them that. When it comes to organization PHP is a bit messy. For me, this time I just decided to keep things as simple as possible. I don’t want to get overly crafty. I just want to get things done. Less classes, less overhead, less useless organization.

If in the future I think of reorganizing it I’ll just work on that but I’m not gonna focus on that.

My mindset is about getting things done. Getting to where I want. No more Mr. Fancy. I love being organized, but I also waste a lot of time on said organization because when it comes down to it maybe the architecture you did for it wasn’t quite well-thought out and you see yourself wasting even more time to have a fancy structure.

Development Notes #2: WordPress suggestions and practices are awful when it comes to security

Photo by alx_chief

A disclaimer: This post doesn’t have anything to do with the core team or their roadmap.

As anyone doing software development, when we have questions one of the things we have to do is use a search engine. The documentation in WordPress can sometimes be extremely vague, or at times there are situations where a hook or filter I need exists but I end up recreating the wheel just to be annoyed that it’s already there and my time has been wasted.

One of the things that really stood out is the amount of really, really bad recommendations because some of the answers are copy/pasted from other answers and of course maybe the person writing out the answer hasn’t come to the realization that WordPress way of naming their hooks and filters can come out as vague.

And to know surprise I’m talking about:

is_admin()

The is_admin() function is meant to just check if you are within the administrative interface. But given the rather free and exposed nature of WordPress it’s also a function that could have unintended effects. For example, Some plug-in creators doesn’t develop plug-ins with security in admin, I’ve noticed with a plug-in that I use that anyone could literally change the configurations of my plug-in as long as he/she is registered.

But the problem goes deeper. The workflow that WordPress has introduced over the year is a bit convoluted. A plug-in is literally a free soul that is attuned to the environment, it’s a vacuum that receives all types of requests.

is_admin() while it is an offender doesn’t cover the next thing. Some plug-ins aren’t aware of AJAX/RESTful calls so they end up blocking the calls because the plug-in is expecting the call to be done while a user uses the admin interface but that may also break features that are meant for the public, depending on how things have been laid out.

I feel like while WordPress does tell the developer “hey, you can use this to achieve this”, it doesn’t instruct the developer on “hey, that’s cool you are using our hook/filter but before all that you should check out documentation on security and understanding the functions you need to safely provide resources to your users.”

But it’s not only a thing about security. Like I said, a plug-in in WordPress is a free soul. It listens to all requests, meaning the developer has to devise a way to tend to the needs of:

  • public requests
  • private requests (within admin)
  • public (ajax/RESTful)
  • private ajax(RESTful) (within admin)

That aside for a moment, I have actually enjoyed my time developing my plug-in. I can’t actually wait to use it in the public myself but it’s under heavy development.

One of the things I love is how flexible/extensible/versatile WordPress do things. It takes very little effort, or any at all! But as all things, it’s also super easy to mess up your code and leave yourself wide open to attacks.

And I fear that while WordPress has vast amounts of plug-ins out there the bigger question is how many of them are secure?

Would the fault lies with WordPress core team not communicating things? Would WordPress StackExchange need to go on a purge to flag all high risk answers ?

It’s food for thought honestly. Personally, we are already here, and I’ve seen their new documentation and it’s amazing but the people who are writing plug-ins may not be aware of such documentation and maybe being more vocal about security isn’t a bad idea.

DNS Updates

Small update that the site is currently switching over to new nameservers and it might not work for everyone. Propagation usually takes 48 hours.

Hello, WordPress, great to see you again! Development Notes #1

This week has been extremely busy for me. It’s been a while since I worked on the development of a new site. A lot of what I’ve done this week has been pretty much the definition of: “Can I do this with WordPress?” *proceeds to poke the code with a stick*

And so far the answer has been, yes, a lot of the difficulties I’ve thought would cause me a a lot of headaches has turned out to be great, yet I don’t want to make it sound easy either I have spent a lot of time reading documentation and going back and forth with the core code. As to why you wonder, why would you go to the core code? Surprisingly because the answers I seek weren’t found in Google.

A lot of the answers became more of a sales pitch: “Hey, what’s up, my company works on this plug-in it just costs $60 monthly”. Quite frankly I’m not against making a living out of this at all. I’m gearing myself towards this as well.

As I progress I notice a lot of potential that can be untapped with WordPress… it’s actually insane how much you can do with it and the nature of how you do business with WordPress code always feels slightly primitive. It’s like having this piece of software akin to the likes of Slackware which a lot of well-tested scripts to power through the OS, but instead you have a lot of scripts, tiny functions that can be overridden or filtered.

WordPress is honestly a miracle that has stayed glued together.

You still find code from WordPress 1 or WordPress 2 versions and see them hanging around in 2020.

Overall, it’s been a great experience. That were some things with the structures that took me by surprises and in the long run it makes sense to have it that way.

I’ve also been using Visual Studio Code which so far has been a delight to use. I thought about paying for PHPStorm but ultimately…. the experience provided by Visual Studio Code suffices.

Evolving the site and giving everyone their place to talk. Humble Spaces™

Photo by Lilac and Honey

As of late I’ve been thinking of expanding this site into something else. It’s been a long time since I’ve done something community-driven and for someone who moderated communities a long time ago I guess there’s a small part of me who feels a tiny bit uneasy.

Well, in general handling people is never easy in any profession.

The Humble Spaces thing is a joke… kinda. I mean, in a sense I’m giving you the space to have your own thing going. I also don’t usually talk much of what I do, I’ve always adapted the idea that it’s always better to speak with actions rather than words. Words are cheap, actions solidifies your commitment to what you have planned. Excitement gets the best of us, and it has happened that sometimes I get overly excited about something and talk about it endlessly but at the end of it it’s all hot-air, nothing. So, in a sense I actually dislike talking about things that I have in mind for the future because I consider it a taboo, consider it something I’ve instilled within me as a code to follow.

I do think it’s the best approach and for whatever it’s worth it’s more of an experiment than anything else. I don’t think I’m going with the mindset that suddenly it’ll be flooded with people.

I ended up choosing WordPress as my go to content management system. I think at some point, and it happened again this year is that I usually prefer to create my own stuff, but the truth behind that is that it takes 10-15x times the effort to just roll out on your own for an audience that may not be exactly there at all.

WordPress fits the bill in almost every area. It’s easy-to-use, it’s manageable, and it has all the tools I need for people to use. PHP 7.4 is around the corner for me, although I could go ahead and make it available for me but I’d rather wait for Ubuntu Server 20.04.1 because it’d be less headaches.

There are some integration things that I want to do to broaden the way the audience share their content. But ultimately, my expectations are that I just gotta keep working on it.

I do subscribe to the ideas of Jeff Atwood. I’ve always wanted to get better at writing, but there’s a huge part of me that fears writing. Quite honestly, you can’t get good at something if you don’t practice every day or at least a few times in a week. And what I mean by all of this is that you’ll see more content from me. I will continue writing more, and I hope that once the site has expanded that you also join me in writing and speaking your thoughts.

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.

It’s good to be 127.0.0.1(home): New (blazingly fast) host

Hurrah!

I’ve been meaning to actually move this site to a new host. Not just this site but all the other sites that are under this…. I can say that I’ve been successful and it took me a sweet 3 hours to configure everything.

Ouch!

Now, usually moving large amount of files I don’t even bat an eye to that. I just put my trusty rsync command to do its magic and get all files transferred.

What took me a bit was the MySQL configuration part. Now it actually has more secure configurations so it’s really nice, but…. I had users set to specific IP addresses that I’ve forgotten about. Testing nginx configurations was remarkably fast… to the point I was surprised how little you need to get nginx running. I also have extra users for PHP FPM so they run isolated from everything.

What’s left is a series of doing some security configurations and update the backup script I’ve used for all my sites.

All in all. I’ve been meaning to do this for a long time. Yay me!

Learning 日本語「Japanese language」

Hopefully I wrote that right in the title. The featured image is by Freebird_71 under Creative Commons license.

So, I am thrilled and also committed to the notion of learning a new language mostly because while not only it allows me to expand my knowledge of learning a third language, English being my second language, the excitement of understand and talking to foreigners is always exciting.

In the past I did try doing my best to learn the language but the motivation wasn’t there. There was a lot of turmoil in my personal life, and honestly the focus just wasn’t there at all for me to even put myself through the grind. Not only that but I felt like I just launched myself at it without organizing and structuring myself a bit more. It’s not just “oh, yea, open a site and learn a few words and now you know everything”.

I’ve been trying a lot of different stuff this year. Some did stick with me others didn’t really stick with me, for example: drawing is a skill that I would love to work on but the commitment isn’t quite there yet. Photography I enjoy doing but it also requires a lot of planning so it’s not something I do often.

I guess, what I’m trying to say is that of all the hobbies that I want to work on. Learning a new language, and traveling seems like the calling I want to answer.

Photo by Almir de Freitas

For me using Anime or Manga would be the most crude and lamest reason to learn a language.

My main motivation to learn English wasn’t because I wanted to watch Lost, or Games of Thrones or any series that’s running. For me, a person that was born as a US citizen on an island whose main language isn’t English created a conflict for our future careers.

It was first out of curiosity, then as I began communicating with people from different parts of the world mostly thanks to the internet it hit me that the internet helped me out little by little correct myself, and by trial and error just learn more about the English language and the people who uses it.

But most importantly, it was and it will always be a business decision.

Learning English today open doors everywhere. Especially in the United States, or even United Kingdom. Whether you agree with that or not, if you were born already in a English-speaking country then honestly what I said may be pointless. But if you were born in a different country that speaks Hebrew but all the opportunities are in English-speaking countries then you have to put everything on a balance what would benefit you more in the future.

Photo by cogdo.

So in a way, my reason to learn a new language this time is to talk to more people, to meet more people, to know their views and daily life, to hangout with them and maybe even go to karaoke sing broken English-written songs, who cares, it’s all in the name of entertainment and blowing off steam.

I feel like just using a medium like anime or manga as a reason to learn a language is disrespectful to the country. And this not only includes Japan but any country in the world. I just think it’s a very short-sighted and immature reason, but I get the pulling of doing so, especially from young people that are growing right now and have easy access to anime/manga/series that we really didn’t have back then and where harder to get. The appreciation I have for translators will never be enough for their work on exposing a medium of any kind out there. Be it in Japanese/Chinese/Korean.

I’ve made a lot of accommodations, and I have been heavily putting a lot of hours into this. All I hope is that it goes all well and that my hard work eventually pays off.