Moral and Ethical Obligation
This post might come across as a hit-piece, but it is in-fact an analytical look at how a company is being run to take advantage of their investors – essentially pilfering them to maintain illusion of granduer held by the management team. I do have reason to be a bit objective, as I had the misfortune to have been recruited into nGap in April 2018. For some time, I was excited about the kind of software I’d be involved with creating.
It became very clear – after a few months – how poorly engineered the software was. The events that took place during my employment with nGap, Inc. are kinda outrageous, and I’m compelled at a moral, ethical, and professional level to tell about it.
I passed up jobs (career paths) at bigger, and better-established companies so that I could be a part of something great – saving the DoD – and subsequently American taxpayers – billions and billions of dollars. Even though I was making a little less than I would have at, say, Intuit, Inc., I was thrilled by the challenge and my 10-minute daily commute to the office.
If you’re a friend of the family, you qualify as a software architect
In the first month – I realized how obfuscated the framework is, that nGap’s flagship software is based on. I will go into great detail in this document as to the technical problems I found and shared freely with the entire company – even the executives.
It turns out that an individual by the name of Bruce Murray was tasked with building the framework – which is loosely based on .NET MVC Framework using C# (C Sharp) as the server-side scripting language. This individual had no business building a framework for any kind of web application – and in particular – one that was going to handle multi-billion dollar contracts – considering that he had no formal training in the realm of software engineering – and literally “learned as he went” as described by sales executive, Thomas Graham.
What made matters even more dumbfounding is Bruce’s superiority complex. It is no wonder that my predecessor – a gentleman referred to as Tony – was driven out of the position. While I was attempting to fix some deep-rooted problems relating to sessions – Bruce asked me why I wasn’t using the function he built to generate URLs. When I replied that his function was failing and that I didn’t need his function to build a URL; preferring to use my own logic – he decided to completely ignore me. To my bewilderment – even after making Mason Beninger intimately familiar with the situation – he completely blew it off like it didn’t matter. Of course, Bruce is Mason’s friend, so that explains it. You can imagine how awkward it felt knowing Mason was discussing this with Bruce over dinner at “the house” where he apparently lived at one point and continues to frequent on a social basis.
Let me recap that!!! Mason Beninger took NO ACTION WHAT-SO-EVER after being shown beyond a doubt that his buddy Bruce Murray was playing games that were costing the company and ultimately THE INVESTORS lots of money all for the sake of stroking Bruce Murray’s ego.
There’s an individual at the company named Kevin Man – who calls himself a front-end developer. I think he probably has a neo-pronoun by now since it’s become a trend. He – like Bruce – is completely unqualified, and the only reason he’s working at nGap is because he was dating Anda (Alexandra) Benninger – Mason’s sister – Mark Benninger’s daughter. He apparently was able to get Mark Beninger to buy him a $6,000 computer for his office when everyone else ran outdated equipment that cost a fraction of the cost of Kevin’s computer – brand new.
Kevin – like the two Indian nationals that are working for nGap – and whose H1-B visas are being sponsored by nGap and their investors are all right out of college with not even a couple of years of experience put together – they got paid to putz around while they learned to write software.
Indian Nationals Displace US Worker
Their names are Vihar Patel and Deepty Sharma. For an unknown reason, nGap has decided to sponsor these Indian nationals as they went through school and attempted to integrate into the United States. When Vihar Patel overheard me calling the DFEH about me not getting my probationary pay raise and the continued harassment from Kevin – he called Deepty for a meeting – I noticed them huddled together walking outside in a hurried and worried state as I lft for lunch. While I was at lunch, I was advised by the IT guy that my access was being cut off – Vihar and Deepty conspired to get me fired. Mark Beninger actually got everyone into the conference room and instructed all the employees to write disparaging statements about me.
Vihar and Deepty were so afraid of losing the chance at becoming a US citizen that he worked to literally oust me. According to the IT guy – who refused to write a disparaging statement about me, Vihar was very concerned that if the DFEH were to come to the office because of my complaint, that they might find him and Deepty there and that might open a can of worms that could get them deported.
There was an occasion when I was asked for help by Ryan Gonzalez, yet another friend of the Beninger family, he needed me to help him traverse a multidimensional data array in JSON format. Apparently, he asked Deepty for help and she was not able to figure it out either, this is the current “Senior Software Developer” at nGap, who can’t decipher an array. She told Ryan to not ask me for help. Draw your own conclusions about Deepty’s professional integrity and moral deficits.
During my first week, I noticed Vihar struggling with a problem he’d been tasked to fix, where text was being displayed outside the bounds of the element that was to contain it. He was literally trying to programmatically resize the string of characters based on its size, I guess, in relation to the container, in the server. Being that this is a web application, there’s an entire layer in the development stack that’s called the presentation layer, which with very minimal code, could resolve the issue without adding any complex programmatic algorithms to resize and/or truncate the text string. By simply applying a single styling property to the container element, I showed Vihar how he could leverage the presentation layer to achieve his goal.
Accounting and Finance?
I developed a financial control system – basically a general ledger/journal system to track financial transactions in the OAS system. I called a meeting for anyone who was interested to show how making general ledger entries that reference certain states and values of a given aspect of a project component could provide a very clear audit trail and allow for calculation of the financial state of any component of a project – or the project in its entirety – accurately and efficiently.
I was absolutely dumbfounded when Stan – the supposed accounting and human resources guy at nGap, inc. – stood up and argued defiantly about the method by which I planned to record general ledger transactions. He insisted that the way I ought to record transactions is to find the sum of all entries that use a particular account, and make a single consolidated entry. I explained, that’s now how general ledger entries are done as a principle. I went on describing that a logical reason to consolidate journal entries would be because we’re in the 1940’s, and we’re making hand-written entries on a ledger pad – or perhaps with consolidation of monthly financials from multi-entity conglomerates.
I went on to describe how OAS was neither a collection of hand-written ledgers, nor a consolidation of financial reports from multiplebusiness units of a larger organization. I emphasized that it made absolutely no logical sense to consolidate journal entries for OAS.
I further described how consolidating the entries would defeat the purpose of keeping detailed transactions – because some of the elements of each individual record are required for tracking purposes.
Stan Snyder slammed his hands against the table declaring that he didn’t need to sit there and listen to the “nonsense” and stormed off. When I told Mason Benninger about Stan’s behavior – he dismissed it as just a part of his personality – and basically to just get over it.
How does that make you feel as an investor in nGap, Inc.?
Is it not a little unsettling knowing that some schmuck that’s stuck in the 1940’s with his hand-written, consolidated journal entries – is running the financial affairs of nGap, Inc., the company you’re sinking your hard-earned money into?
It’s obvious Stan is not qualified to run the finances of a modern company in very much the same way Deepty, Vihar, Bruce and Kevin are not qualified to be developing software that the actual department of defense may use.
The first Major Hurdle, subsequent Brick Wall
During the development phase of implementing this general ledger and general journal system, I came across a problem that stems from instability and obfuscation baked right into OAS by Bruce Murray.
Journal entries will number in the millions, possibly billions over the lifetime of a system like OAS. Bruce engineered the framework to only allow for GUID’s to be used as a uniquely identifying data element.
Each entry in the general ledger table has to have a unique identifier. In a general ledger, which has the potential of having millions or billions of records – it isn’t feasible to use a GUID to uniquely identify each of the millions of records, so instead, an auto-incrementing number is used to uniquely identify a general ledger transaction. (Ex. 1251.)
The GUID is 32 characters long (36 if you include the dashes,) and each of those characters takes up an entire binary bit (Ex. 10010100.) The Integer (whole number) is stored using 32 binary bits (Ex. 0110010011001010010100010101101.) Each character of the GUID (including the dashes) is stored using 16 binary bits (Ex. 1011010010100010,) So that means all of the characters stored in binary bits looks like this;
There’s a blatantly obvious difference in the number of binary bits used in an integer number compared to a GUID. This is important because during database operations, the database server is actually comparing those binary bits – NOT the actual text the represents them. Clearly, it takes less time to compare a series of 32 zeroes and ones than it does to compare a series of 288 zeroes and ones.
Bruce found it to be perfectly logical and appropriate to use this GUID as a primary key for datasets that inherently have unique identifiers – for example – currency codes are all inherently unique by design, but OAS uses a GUID to uniquely identify a currency. The same is the case for the table of countries. Apparently the ISO 4217 standards established to uniquely identify currencies and countries around the world aren’t good enough for Bruce Murray.
Considering the inefficiency of the GUID, and the strict enforcement of using a GUID as the primary key within the framework as engineered by Bruce Murray, my task was rendered unfeasible – unless significant – and deep rooted flaws in the architecture were corrected – which would involve a literal overhaul of the framework.
You run a software company, how?!?
During a meeting with Mark Beninger, it occurred to me that there’s major problems. This is when I should have pulled up any roots and started running, far and fast from nGap, Inc..
I explained that the framework built by Bruce Murray was the reason why new features could not be added – and I added that the development cycle consisted of highly unskilled and inexperienced, novice-level software engineers that were recruited right out of school – were basically faking the funk – making the software appear to work by using front-end trickery. This was described as “smoke and mirrors” in a conversation I had with Thomas Graham – who vehemently insisted that he not burn up any more of his DoD contacts to try and sell software that doesn’t work.
Take the money and run!
I went on to describe how, if the DoD had their systems analysts look at the source code, they’d laugh and ask if a kindergartner wrote the code – quickly bringing into question the abilities that nGap leads people to believe they actually have. Mark Beninger quickly scowled- “nobody get’s to look at our mother-fucking source code – not even the DoD.” I asked how he intended to get the DoD to become a customer when they can’t see the source code – and the demos that are given to them are failing and causing a tremendous amount of embarrassment? He basically described a “bait and switch” tactic where he gets his son – Mason Beninger to demo a piece of software that appears to do exactly what the customer wants or needs – knowing full well that the software is in-fact not capable of truly fulfilling all of the promises it makes. Mark went on to describe a “take the money and run” scenario where he insisted that he wouldn’t be around long enough to hear about any fallout because of software deficiencies and fatal flaws. He described how he’d have sold off the company well in advance of the deterioration of its reputation – leaving the new owners with the fallout. Is that really part of YOUR exit strategy as an investor?
It only gets worse
Every single “software engineer” that was working at nGap besides myself were all novices, just out of school. In-fact, Mason and Mark were trying to get Vihar and Deepty’s visas converted from student visas to working visas – this despite the fact that it was illegal to hire someone from a foreign country when there are Americans who are capable of doing the same work. But that’s a whole other story, right now, I want to expose where exactly your money has gone as you’ve invested in nGap.
This video describes the mindset and actual skill level of each of the people on nGap’s payroll, supposedly developing software.
Here’s a good example. Here’s how Mason Benninger spells committee; this guy is the actual program director for the software YOU’RE PAYING FOR! That’s “OVERSIGHT CEMITY” in-case you didn’t know.
Another good example..
There were massive datasets that needed to be imported into the database for testing purposes. I wrote a script in about four hours that quickly imported massive amounts of multi-dimensional (relational) data into the database. The tool was already in use and it was effective and fast. In a meeting I was excluded from – I overheard Kevin describing how he figured out how to write a query that would insert a record into the tables he intended to – and so proceeded to write thousands of lines of queries by hand, to run on the server to import data – literally transposing data from excel to a manually generated query – while the tool I wrote took the data directly from the excel spreadsheet, wrote and executed the queries, and was done in a matter of a minute – Kevin Man spent days, possibly weeks creating just one dataset – let me remind you – this was after I had already created the import tool! You paid for that!!! What’s kind of funny is while Kevin was describing this in the meeting that everyone else was at but me – I heard Mark actually clapping and doting on Kevin like he was a toddler that took his first step.. YOU PAID FOR THAT!!
One more note on this topic – Mason – during a scrum meeting made the suggestion that all fields in the database be made NULLable – so as to overcome some of the problems the developers faced because of the rigid framework, the obfuscation it brought; on top of being complete novices. This is 1000% against the principles of database design. It makes it impossible to maintain data integrity. There will be records dropped from complex queries when NULL values are encountered on relational tables where data is expected – for example. It was absolutely frightening that not one of these novice “software develoeprs” including the “Senior Software Engineer,” Deepty Sharma spoke up with any concerns with Mason’s suggestion.
What’s incredibly disappointing is, Deepty and Vihar were both graduates from teh same school I went to – Coleman University (FKA Coleman College.)