Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "suphle"
-
I just remembered some of the "harmless" dev-related insults I've received over the years:
1) most recently, I shared a tool with an acquaintance cuz it bears the same name as something he put together a while back. Background: this guy likes to come across as having infinite programming knowledge and brags to his fb pals about being an expert in multiple languages. While trying to make sense of the cryptic docs of the package I sent him, he implies I don't know what the iframe or html5 canvas are. Claims not to elaborate what package does cuz the docs is meant for advanced desktop and mobile devs
It hurt because this is one of few people who know I built suphle, yet thinks so lowly
2) as you can tell from the first point, I share links I consider interesting with relevant contacts. I'm also quite vocal about my (mostly contrarian) takes on occurrences within the dev space that I'm familiar with. One day on the laravel board, this dude is reprimanding me and asks me to take the opinions I read on blogs and tabloids with a pinch of salt, implying I didn't form them independently but was influenced by what was written by some stranger online
It hurt because I expected him to know better. I felt I'd sufficiently proven to have actually built things that informed my school of thought
3) the oldest happened many years ago but I remember it now because the perpetrator called me out of the blue last week. I was teaching his boss, who managed an office but preferred to keep his student status hidden, to avoid being thought incompetent. This caller guy just so turned out to be learning js at the time. Fast forward some years, we all disbanded. He'd landed a dev job and was doing well. So I sent him one of those js gotchas, asking him to explain his answer
After he replied, I told him his answer was close enough but it had more to do with js passing closure arguments by reference. Dude responded that he knew that was the correct answer but wasn't aware I knew what closures meant. That stung me like hell back then. I missed his call and didn't know who owned the contact, so I searched my chats and saw that last interaction. Pain all over again3 -
#Suphle Rant 11: Laravel board launch
The launch took almost 2 weeks more than originally slated, because I sought to install it manually, just as an outsider would. Installation steps had been documented, automated tests for the installation tests were passing. When time came to actually execute the binary from the terminal, we went from one obstacle to the other. First, were the relatively minor Composer/Roadrunner issues, eventually resolved by the helpful RR maintainers who sat with me through a Discord server for about 2 hours until their command ran the way I needed it to.
Next was the Psalm scare: One of my value propositions was the guarantee of eliminating all type related bugs in Suphle apps. I intended to use Psalm for that. Wrote tests as usual. Turns out the library behaves differently under conditions differing from raw CLI usage. I resurrected threads I'd opened since December that were left unattended, and with some help from the maintainer, we eventually got it to do what I need it to do.
I was all the more frightened by the fact that Transphporm had caused me to renege on one of my earlier promises. I can only miss so many targets. After this, the docs had to be updated with all the changes effected to accurately integrate those two. Project installation and initialization commands were ran rigorously to ensure all progresses smoothly.
Tagged one final release and suddenly became impatient to launch on our local Laravel group chat where I've been a member for the last 4+ years, where we've had a rollercoaster of emotions. In that time, I've refined my launch speech to suit that audience -- obviously, countless times. Not just a tame "It's my pleasure to announce what I've been working on", but near 40 messages going into details about the inner workings, why it was built, how it compares. An expose that dove deeper than I would anywhere else.
I scheduled a time for them to tune in and got some encouraging anticipation. Ended up deflated after posting the whole thing. Only about 5 persons interacted. 1 (who I've chatted with outside the board) was quite enthusiastic. Feverishly checked the docs but commented it was overwhelming and he'd need more time. Already starred the repository.
For some context, there are give or take 250 members on that board. Not all are active but activity there easily reaches a crescendo when the topic discussed is about inanities like what 3rd party services to use for SMS, how to receive salaries from abroad, or job openings. I was optimistic when the acquaintance mentioned above published a payment library and met a riotuous welcome as one of their own. Maybe, they are simply not fond of me and the speech should have been passed off to someone else.
I checked Packagist installs -- not more 10. For 3 years, I'd been hyped up for that night; but for some reason, the audience I considered myself closest to flopped, woefully. Thankfully, this isn't the main launch. I'm still holding out hope for that. If it fails, I would have sunk an immeasurable amount of effort and time, that nobody will compensate me for. That is the one place I go to see those more advanced than me in PHP. I constantly learn there and find stimulating conversations there.
Now, I can no longer predict reception from other presentations. All I can do now is hope1 -
#Suphle Rant 10: boys relax
All things being equal, Suphle will be ready tomorrow. Don't stop dreaming, kids! So long as it's got a realistic, actionable plan to achieve5 -
#Suphle Rant 9: a tsunami on authenticators
I was approaching the finish line, slowly but surely. I had a rare ecstatic day after finding a long forgotten netlify app where I'd linked docs deployment to the repository. I didn't realise it was weighing down on me, the thought of how to do that. I just corrected some deprecated settings and saw the 93% finished work online. Everything suddenly made me happier that day
With half an appendix chapter to go, I decided to review an important class I stole from my old company for clues when I need to illustrate something involved using a semblance of a real world example (in the appendix, not abstract foo-bar passable for the docs)
It turns out, I hadn't implemented a functionality for restricting access to resources to only verified accounts. It just hasn't been required in the scheme of things. No matter, should be a piece of cake. I create a new middleware and it's done before I get to 50 lines. Then I try to update the documentation but to my surprise, user verification status turns out to be a subset of authentication locking. Instead of duplicating bindings for both authentication and verification, dev might as well use one middleware that checks for both and throws exceptions where appropriate.
BUT!
These aspects of the framework aren't middleware, at all. Call it poor design but I didn't envisage a situation where the indicators (authentication, path based authorisation and a 3rd one I don't recall), would perform behaviour deviating from the default. They were directly connected to their handlers and executed after within the final middleware. So there's no way to replace that default authentication scheme with one that additionally checks for verification status.
Whew
You aren't going to believe this. It may seem like I'm not serious and will never finish. I shut my system down for that day, even unsure how those indicators now have to refactored to work as middleware, their binding and detachment, considering route collections are composed down a trie
I'm mysteriously stronger the following day, draw up designs, draft a bunch of notes, roll my sleeves, and the tsunami began. Was surprisingly able to get most of previous middleware tests passing again before bed, with the exception of reshuffled classes. So I guess we can be optimistic that those other indicators won't cause more suffering or take us additional days off course2 -
#Suphle Rant 3: Road to PHP8, Flow travails
Some primer: Flows is a feature that causes the framework to bypass handling the request now but read it from cache. This cache entry is meant to be populated without warming, based on the preceding request. It's sort of like prefetching but done on the back end
While building Suphle, I made some notes on some chapters about caveats and gotchas I may forget while documenting. One such note was that when users make the Flow request, the framework will attempt to determine who user is, using authentication mechanism defined on the first module (of the modular monolith)
Now, I got to this point during documentation and started wondering whether it's impossible for the originating request to have used a different authentication mechanism, which would result in an empty entry for returning user. I *think* it's possible cuz I've got something else called "route mirroring", where web based routes can be converted to API routes. They'll then return JSON, get served under defined API path, use JWT, all automatically. But I just couldn't connect the dots for the life of me, regarding how any of this could impact authentication on the Flow request
While trying to figure out how to write the test for this or whether it was even necessary (since I had no use case), it struck me that since Flow requests are not triggered by an actual user, any code attempting to read authenticated user will see nothing!
I HATE it when I realize there's ambiguity or an oversight, after the amount of attention and suffering devoted. This, along with a chain of personal troubles set off despondency for a couple of days. No appetite for food or talk. Grudgingly refactored in this update over some days. Wrote some tests, not all passed. More pain. May have to convert them to unit tests
For clarity, my expectation is, I built this. Nothing should be impossible for me
Surprisingly, I caught a somewhat lucky break –an ex colleague referred me to the 1st gig I'm getting in 1+ year. It's about writing a plugin for some obscure forum software. I'm not too excited cuz it's poorly documented and I'll have to do a lot of groping, they use arrays instead of objects etc. There's no guarantee I'll find how to implement all client's requirements
While brooding last night, surfing the PHP subreddit, stumbled on a post about using Rector to downgrade a codebase. I've always been interested in the reverse but didn't have any incentive to fret over it. Randomly googled and saw a post promising a codebase can be upgraded with 3 commands in 5 minutes to PHP 8. Piqued my interest around 12:something AM. Stayed up all night upgrading it, replacing PHPSTAN with Psalm, initializing the guy's project, merging Flow auth with master etc. I think it may have taken 5 minutes without the challenge of getting local dev environment to PHP 8
My mood is much lighter than it was, although the battle is not won yet –image tests are failing. For some weird reason, PHP8 can't read generated test images. Hope I can ride on that newfound lease on life to study the forum and get the features working
I have some other rant but this is already a lot to digest in one sitting. See you in rant #4 -
I am busting moves rn. I'm in the bathroom but the surge of energy is making me pump my arms like the time Leo Messi scored a clutch winner against Valencia in 2019
Remember the plugin I referred to in this rant? https://devrant.com/rants/6019851/...
Yup! I managed to subdue that fossilised codebase. Effected all changes required. To have a rough idea about how ancient the code is, its classes use constructors predating PHP 5. It throws away the ~15 years of autoloading, view templates, routing engines, DI, ORMs (NO PDO!!), lower-cased multi word variable names, etc. I'm looking at SCRIPTS with raw functions north of 4-600 lines. The client insisted I zip the folder across
BUT! The good news is, we surmounted it. In fairness to them, it's commendable for one man to have pulled this off. The codebase is massive and appears to have been predominantly written by some Gideon dude. Who knows where he is now
There is one pattern I appreciate –something I wish Transphporm does–some segments of the rendered view are composed using class methods ie instead of having the HTML file mixed with templating syntax, you have class methods that receive the raw data. Then you can extend this class as you wish, overriding just the method that composes the segment you intend to modify. That was elegant to work with. But it can become dreadful if the class expects a specific structure of data (an array with weird keys) that you have no access to sourcing
So, I finally get to enjoy one good evening in 2/3 weeks. I called 2 friends to express an emotion that's not gloomy, but they were unavailable. Will probably get some sleep4 -
Is there any language or framework I am guaranteed to get a job in if I learn right now?
I know this is a shot in the dark cuz if such did exist, every job seeking entrant would simply flock to it; but I don't know how developers switch between stacks. Off the top of my head, recommendation but what if such social capital is missing?
Some background: I built and published a php framework called Suphle (angry-cray-9c191b.netlify.app), which surprisingly neither got any users after a year nor impressed any php employer to hire me despite hundreds of applications sent out
Rather than throwing in the towel, I wish to switch to some other software stack but I don't know where to start, If with all my proven php experience, I'm unable to land any php roles. I have tried searching for nestjs and spring boot internships or junior but nothing comes up. I have run out of time to study a language I will never profit from
I have a flutter app on playstore, built together with a product designer who worked on the ui cuz my front end chops aren't strong. I will preferably continue in a back end environment but if I can solicit immediate employment, I don't mind brushing up on any available tech, be it devops or what have you. I've also worked with spring in a professional capacity, although a very turbulent one where the team we had issues ranging ranging from absence of adequate docs for something as basic as authentication, to using nosql (totally unnecessary), trying to separate codebase into different projects to mirror the real life department (this was my idea). I don't know if it's Conway's law but I decided project should be split into admin, user and common modules/repos since they were being worked on by different devs and had little in common. Unfortunately, there is no doc for importing/sharing local projects so we had more days chucked off
Anyway, I Built a react native app a lifetime ago. Been around the block a bit and pretty confident I won't take much time to get up to speed with a tech. Where do I go or how do I start? I stay in Nigeria so may be limited from on-site roles as well12 -
#Suphle Rant 9: verbatim exception scare
In multiple rants, I've bitched about laravel stealing suphle features. By some very weird coincidence, it appears I've been given a taste of my own medicine. Let me explain:
We're having a chat this morning on a laravel group chat when someone says he uses their notification component a great deal. Curious, I ask him what he uses it for since I only used it sparingly during my laravel days. To pry an answer out of him, I ask whether he uses them for sending app error alerts to a slack channel, and he responds with an eerily familiar term. I quickly look it up and the results on the docs are chilling: errors can be sent to bugsnag (which suphle has an integration for), sentry and Co. Errors can either be broadcast or disabled. Specific kinds of errors can be caught. My heart sunk. My brother called for something while I was going through it and I was struggling to pull myself together
Their exception component is almost identical to mine and I'm only just realising. It's shameful that I'm just learning about functionality present since 5.8. I thought my creation was novel. BUT! The good news is, the implementation differs
Too many errors went unnoticed during my time there because error broadcasting is optional. Since none of my colleagues read that part of the documentation, we were firefighting by pulling and wrangling production error logs. This informed their abolishment in suphle altogether
A relatively minor difference is in the APIs –their philosophy makes significant use of global functions, violating SRP, etc.
But the most important difference, that still cheers me up, is that they only catch known errors. Suphle has a construct for isolating calls to a decorated service. Any unforeseen error to occur during its execution will do a series of things before control is returned to the caller -
#Suphle Rant 4: Laravel closing the gap II
I had expected rant 4 to come at least, some days later. Apparently, I'd miscalculated how fast things work in this wonderful world of software. In an earlier rant, I wrote about how dismayed I was to learn laravel had implemented one suphle feature I'm very proud about. They call it Premonition. Idk if it's officially rolled out yet but you can do a search among accepted pull requests for what it's all about
Well, today, I've just seen a draft from one of their maintainers showing one of the things suphle was designed to do: https://twitter.com/enunomaduro/.... They can't integrate it with this pattern since php doesn't have generics, so it'll either get trashed or with plastered as some band aid. In suphle docs, I explicitly indicated the data structure/typing for that feature is a polyfill for the absence of generics
I think I can get away with it because of where I'm using it (model authorization instead of custom exceptions/throwable operations, in general, like theirs)
I don't feel as distraught as I did on finding the Premonition thingy. Am I impressed with these things dawning on them? Ffs Laravel was invented in 2011. It's incredulous to think it gave me hell for years. Waited ~2 years for me to fix all issues in a brand new framework, only to magically gain iq points and start improving their work
It's weird and brutal. If they keep figuring stuff out, it may not be long before there are no features unique to suphle. Then, my worst nightmares will come to life. I will argue there's one thing nobody will ever copy, not without rethinking the mvc architecture in its entirety.2 -
#Suphle Rant 8: Strange star discovered
I was searching for a project I'd starred earlier, on my github feed, when I realised a user had starred suphle at some point but for some reason, it wasn't reflecting on the stargazers. I was half overjoyed and half confused. Overjoyed over unlocking the milestone.
User seemed legit –an Italian with projects in C that were not forked. Followers and commit graph are organic. Did he star in error, feel the project is a stinker, or encounter installation challenges? Luckily, I found his email address but all his repositories are in Italian so I wasn't too sure he'd understand English, or if the mail was being attended to. Yet, I took my chances
He surprisingly got back to me, affirming that the star-unstar was actually deliberate. He withdrew the star cuz project's documentation is not hosted online and still requires npm start.
I try to persuade him by reminding him it's just a one liner but that markdown files are equally rendered directly on github. Never heard from him again, sadly
I'm kind of bothered cos I find it funny I thought suphle's APIs are all cast in stone, but the more I work on the docs, the closer I am to spotting something that doesn't sit right with me, and diving in to modify it. This not only prolongs ETA, there's the risk of someone who may have stumbled upon it and is studying it, having the rug pulled from under their feet. Things like validator rules and route-collection service-coordinators have been converted from methods and classes to native decorators. I guess I'm safe since nobody has indicated any signal to the contrary. It'll be pedantic to start tagging versions for each change.
Another consideration is that these breaking changes would go to the first segment of the semver scheme, which is hilarious because the rate at which I push such changes is so alarming, we'd probably progress through 15 versions under a year12 -
#Suphle Rant 5: Xavi
When I first detailed what it was I was working on to my brother and its expected impact on the industry, I must have done so with an enormous amount of enthusiasm that he impatiently began to request when the dream will be realised. He didn't give a shit about specifics of where I was on the timeline. He kept repeating the same question. Exasperated with the futility of my explanations, I replied that I'd be done by November as this was far beyond my estimated completion date
Every milestone (e.g. my birthday) I've expected it to be ready at has come and gone, including the unrealistic November. My present state of mind is far from the optimistic pioneer I was then. I'm just going with the flow and won't be surprised if it's not officially released by the end of the year
This gonna be me in 2072, convincing anyone who cares to listen that I'm fleshing out the docs and that the reason the release date keeps getting pushed back is because nobody has shown interest in either using or contributing to it -
#Suphle Rant 7: transphporm failure
In this issue, I'll be sharing observations about 3 topics.
First and most significant is that the brilliant SSR templating library I've eyed for so many years, even integrated as Suphle's presentation layer adapter, is virtually not functional. It only works for the trivial use case of outputting the value of a property in the dataset. For instance, when validation fails, preventing execution from reaching the controller, parsing fails without signifying what ordinance was being violated. I trim the stylesheet and it only works when outputting one of the values added by the validation handler. Meaning the missing keys it can't find from controller result is the culprit.
Even when I trimmed everything else for it to pass, the closing `</li>` tag seems to have been abducted.
I mail project owner explaining what I need his library for, no response. Chat one of the maintainers on Twitter, nothing. Since they have no forum, I find their Gitter chatroom, tag them and post my questions. Nothing. The only semblance of a documentation they have is the Github wiki. So, support is practically dead. Project last commit: 2020. It's disappointing that this is how my journey with them ends. There isn't even an alternative that shares the same philosophy. It's so sad to see how everybody is comfortable with PHP templating syntax and back end logic entagled within their markup.
Among all other templating libraries, Blade (which influenced my strong distaste for interspersing markup and PHP), seems to be the most popular. First admission: We're headed back to the Blade trenches, sadly.
2nd Topic: While writing tests yesterday, I had this weird feeling about something being off. I guess that's what code smell is. I was uncomfortable with the excessive amount of mocking wrappers I had to layer upon SUT before I can observe whether the HTML adapter receives expected markup file, when I can simply put a `var_dump` there. There's a black-box test for verifying the output but since the Transphporm headaches were causing it to fail, I tried going white-box. The mocking fixture was such a monstrosity, I imagined Sebastian Bergmann's ghost looking down in abhorrence over how much this Degenerate is perverting and butchering his creation.
I ultimately deleted the test travesty but it gave rise to the question of how properly designed system really is. Or, are certain things beyond testing white box? Are there still gaps in the testing knowledge of a supposed testing connoisseur? 2nd admission.
Lastly, randomly wanted to tweet an idea at Tomas Votruba. Visited his profile, only to see this https://twitter.com/PovilasKorop/.... Apparently, Laravel have implemented yet another feature previously only existing in Suphle (or at the libraries Arkitekt and Deptrac). I laughed mirthlessly as I watch them gain feature-parity under my nose, when Suphle is yet to be launched. I refuse to believe they're actually stalking Suphle3 -
#Suphle Rant 2: Michael's obduration
For the uninitiated, Suphle is a PHP framework I built. This is the 2nd installment in my rants on here about it.
Some backstory: A friend and I go back ~5 years. Let's call him Michael. He was CTO of the company we worked at. After his emigration, they seem to have taught him some new stack and he needed somewhere to practise it on. That stack was Spring Boot and Angular. He and his pals convinced product owner at our workplace to rebuild the project (after 2+ years of active development) from scratch using these new techs. One thing led to the other, and I left the place after some months.
Fast forward a year later, dude hits me up to broach an incoming gig he wants us to collab on. Asks where I'm at now, and I reply I took the time off to build Suphle. Told him it's done already and it contains features from Spring, Rust, Nest and Rails; basically, I fixed everything they claimed makes PHP nonviable for enterprise software, added features from those frameworks that would attract a neutral party. Dude didn't even give me audience. I only asked him to look at the repo's readme to see what it does. That's faster than reading the tests (since the docs are still in progress). He stopped responding.
He's only the second person who has contacted me for a gig since I left. Both former colleagues. Both think lowly of PHP, ended up losing my best shot at earning a nickel while away from employed labour. It definitely feels like shooting myself in the foot.
I should take up his offer, get some extra money to stay afloat until Suphle's release. But he's adamant I use Spring. Even though Laravel is the ghetto, I would grudgingly return to it than spend another part of my life fighting to get the most basic functionality up and running without a migraine in Spring. This is a framework without an official documentation. You either have to rely on baeldung or mushroom blogs. Then I have to put up with mongodb (or nosql, in short).
I want to build a project I'm confident and proud about delivering, one certified by automated tests for it, something with an architecture I've studied extensively before arriving at. Somewhere to apply all the research that was brainstormed before this iteration of Suphle was built.
I want autonomy, not to argue over things I'm sure about. He denied me this when we worked together. I may not mind swallowing them for the money, but a return to amateur mode in Spring is something I hope I never get to experience soon
So, I'm wondering: if his reaction reflects the general impression PHP has among developers globally, it means I've built a castle on a sinking ship. If someone who can vouch for me as a professional would prefer not to have anything to do with PHP despite my reassurance it'll be difficult to convince others within and beyond that there could be a more equipped alternative to their staple tool. Reminds me of the time the orchestra played to their deaths while the titanic sank8 -
#Suphle Rant 6: Deptrac, phparkitect
This entry isn't necessarily a rant but a tale of victory. I'm no more as sad as I used to be. I don't work as hard as I used to, so lesser challenges to frustrate my life. On top of that, I'm not bitter about the pace of progress. I'm at a state of contentment regarding Suphle's release
An opportunity to gain publicity presented itself last month when cfp for a php event was announced last month. I submitted and reviewed a post introducing suphle to the community. In the post, I assured readers that I won't be changing anything soon ie the apis are cast in stone. Then php 7.4 officially "went out of circulation". It hit me that even though the code supports php 8 on paper, it's kind of a red herring that decorators don't use php 8 attributes. So I doubled down, suspending documentation.
The container won't support union and intersection types cuz I dislike the ambiguity. Enums can't be hydrated. So I refactored implementation and usages of decorators from interfaces to native attributes. Tried automating typing for all class properties but psalm is using docblocks instead of native typing. So I disabled it and am doing it by hand whenever something takes me to an unfixed class (difficulty: 1). But the good news is, we are php 8 compliant as anybody can ask for!
I decided to ride that wave and implement other things that have been bothering me:
1) 2 commands for automating project setup for collaborators and user facing developers (CHECK)
2) transferring some operations from runtime to compile/build TIME (CHECK)
3) re-attempt implementing container scopes
I tried automating Deptrac usage ie adding the newly created module to the list of regulated architectural layers but their config is in yaml, so I moved to phparkitect which uses php to set the rules. I still can't find a library for programmatically updating php filed/classes but this is more dynamic for me than yaml. I set out to implement their library, turns out the entire logic is dumped into the command class, so I can neither control it without the cli or automate tests to it. I take the command apart, connect it to suphle and run. Guess what, it detects class parents as violations to the rule. Wtflyingfuck?!
As if that's not bad enough, roadrunner (that old biatch!) server setup doesn't fail if an initialization script fails. If initialization script is moved to the application code itself, server setup crumbles and takes the your initialization stuff down with it. I ping the maintainer, rustacian (god bless his soul), who informs me point blank that what I'm trying to do is not possible. Fuck it. I have to write a wrapper command for sequentially starting the server (or not starting if initialization operations don't all succeed).
Legitimate case to reinvent the wheel. I restored my deleted decorators that did dependency sanitation for me at runtime. The remaining piece of the puzzle was a recursive film iterator to feed the decorators. I checked my file system reader for clues on how to implement one and boom! The one I'd written for two other features was compatible. All I had to do was refactor decorators into dependency rules, give them fancy interfaces for customising and filtering what classes each rule should actually evaluate. In a night's work (if you're discrediting how long writing the original sanitization decorators and directory iterator), I coupled the Deptrac/phparkitect library of my dreams. This is one of the those few times I feel like a supreme deity
Hope I can eat better and get some sleep. This meme is me after getting bounced by those three library rejections -
#Suphle Rant 1: Laravel closing the gap
This is the first of a series of long overdue rants regarding Suphle, because I have had so so much to grumble about over the last ~2 years building it. A bit of introduction: I compiled a list of all the challenges I faced in my time as a salaried PHP developer. I also gathered issues complained about by other developers in a laravel group I'm part of, and decided to solve them at the framework level since they're avoidable. I also borrowed impressive features encountered in my time working with other languages and invented a new one, as well. I quit my job last July, still haven't get a new one yet cuz office workload kept conflicting with Suphle development. I concluded all work and testing on it back in August/September but it's yet to be officially released since the docs is still in progress.
Anyway, yesterday, I stumbled upon what is IMO the most progressive /tangible update I've seen in all my time following Laravel updates. It's called [precognition](don't have enough rep to post the PR link but you can search on their repo), and contains features that are actually beneficial to both developer and end user. It also turns out to be functionality that was part of Suphle's bragging rights. Their DX is still tacky but I'm devastated cuz it's a matter of time before they work it out. Makes me wonder what the quality of all I've built would be in a year if it doesn't become big enough to attract frequent contribution. I guess there's only so much one can do against a community.
Later that evening, I found a developer from my country on twitter who claims to be making a decent living. A little snooping around his profile informed me he's building his own back end framework but in NodeJS. I know with every degree of certainty that what he'll eventually do can't hold a candle against Suphle in overall functionality or thoroughness. Not a dick measuring contest but when your motive isn't significant innovation, you'll neither plan properly nor even know what exactly to build. You'll just reinvent the wheel as an academic exercise
Yet, I can't help but have that sinking feeling he's winging it, while making a windfall with his dozens of freelance projects. It kind of feels like I shortchanged myself, and Suphle's shelf life will suffer the same fate as a hobby project for 10 stars (which I don't even have yet!!). I reached out to him to rub minds together but he ignored. More pain.
I'll get over this and return to work on the docs, but from the look of things, the end isn't an appealing or expected /deserved one