About Us

Get to know about our business and what we do!

The Mobile Platform

Our thoughts on the importance of Smart Phones.

The Reporting Hierarchy

gbgsoft makes reporting easy.

gbgsoft and the Open Source Model

How the open source community changed gbgsoft and your business.

Our Process

Our approach to programming and solving our client's needs.

Friday 12 December 2014

Microsoft & Nokia Redux




A year ago I wrote that Microsoft’s purchase of Nokia looked “like it was intended to guarantee that at least one major manufacturer in the world would be producing phones based on Microsoft’s software”.

Well since that time a lot has happened. Steve Ballmer has been replaced by Satya Nadella as Microsoft CEO. Microsoft has acquired Nokia's handset business, turning the once proud jewel of Finland into just another MS porridge product.

Apple has a new cell phone and has take several steps further into the minute control of the entire Apple eco-sphere, much to the benefit of their bottom line. Android, the ubiquitous cell phone software is no the most "used" computer operating system in the world, although unlike Microsoft's Windows and Mac's operating systems, it's basically provided at no discernible cost.


Not long ago, I used to think these were things of some import, but lately I have found that I care less and less about winners and losers and I care more about ownership and control. And you know what? We're losing this battle. Both Windows and Apple have taken steps to lock down the devices running their operating systems; with the ultimate goal of generating revenue of the parent OS when ever you install and in some cases, use the software running on the device.

This is already true of Apple's IOS. And Microsoft's Office 360 and Adobe Photshop have embraced a pay as you go for use of their products. And as for Android, Google cares less about what type of device you're running so long as it is fuelled with Google products that reinforce Googles advertising empire and lately with its own productivity apps (Google Docs). Further, it controls what's run in the Andoid space, through it's control of the Play store.

At one point in time, you could run whatever program you liked on your device and it was nobody's business or concern save your own. Now increasingly you need Apple, Microsoft or Google's permission to down load and install a piece of software. The door has been completely closed, but it's getting harder and harder to do. Only Linux is different, and other than a few die hards like myself, it seems forever destined for obscurity.

Somehow, I don't think this bodes well.

Written: by Rick Gregory

Monday 29 September 2014

The Mobile Platform


It is undeniable that the mobile platform has become and will continue to be an important part of business. But more than that, mobile platforms have become a standard of living for younger generations.

Recently, Rick and I had a conversation about the importance of smartphones. Rick argued that mobile devices had become so important because younger people are constantly “on the go.” Young people tend to work more jobs, travel as often as they can, and go out more often than someone who is older. In short, young people move around a lot more and having a mobile device is an easy way to guarantee connectivity with the rest of the world without the bulk of a personal computer or laptop.

But I think it is more than that. It is true that many of my friends and colleagues only have smart phones and do all of their personal computing on that device, and that they tend to travel around a lot. However, I think the prevalence of mobile devices harkens to something greater, something more than just convenience and mobility.

We would all have these if it was just about mobility.

For many people today, their online presence can be as important as their offline one. For example, every morning, I wake up, I check the few online comics that I follow, and I check my facebook, twitter, email, etc. During the day I use the internet professionally and to research the various things I am personally interested in. I share funny things with my friends and various followers and read interesting articles about the world around me. When not using the internet, I using other features on my compute such as movie players, word processors, code compilers etc. In the end, I spend most of my day interacting with a computer, be it a phone or a desktop.

My life might as well be this.
 So when I travel, it is not that I simply want to have internet access, it is that so much of my life involves using computers. The technology is an integral part of my day and, frankly, I couldn’t work, or do a lot of my hobbies without it.

So when I leave my home, I bring my phone to make sure I have access to the tools I need to make it through the day. As technology becomes increasingly prevalent in day to day life, the access to mobile platforms will only become more important, and it is important to consider that when planning the future of technology in your business.

Written by: Andrew Gregory

Thursday 18 September 2014

Microsoft & Nokia


September 11, 2013

The best phone I ever had was a Nokia 6120. It wasn’t smart, it didn’t text, it was just a dual band (analogue/digital) and had an incredible standby of 14 days and talk of 3.5 hours. Considering that my previous phone was a Mitsubishi that had just 15 minutes of talk time, about 6 hours of standby and weighed 225 grams, the Nokia was a huge improvement.




Over the next several years I had a variety of cells phones, but none has held the same spot in my heart as the Nokia 6120. That is one of the reasons why I experienced a sense of loss when the once proud Nokia sold its phone business in its entirety to Microsoft at the beginning of September. Before that, Nokia had struck a deal that saw one of Microsoft’s senior VP’s Stephen Elop became Nokia’s president. He announced almost immediately that Nokia would jettison all but the Window’s mobile platform. As I recall, Nokia also got billion dollar cash injection, presumably to help grease the skids for Windows mobile.


This began a process whereby Nokia turned its back on trying to develop either its own mobile platform (Symbian) or partner with others (Intel and Meego) to do so. These were genuinely serious efforts. Integral to both was the Qt multi-platform C++ GUI library. Qt offered software developers a standard set of programming interfaces that could be deployed into any number of platforms. All you had to do was to take you Qt application and compile it under the OS you wished to target.

Initially developed by a company called Trolltech Qt’s motto was ‘Code Less. Create More. Deploy everywhere.‘ And this was certainly true in the Windows-Mac-Linux worlds and with the acquisition of Trolltech by Nokia in early 2010, it appeared that with Nokia’s deep pockets that Qt was destined to also run under whatever mobile OS you wanted. This at the time struck me as a serious long term vision for Nokia. It would leverage it’s undisputed global manufacturing reach by having software that was designed from the ground up to run on anything. It didn’t workout. A scant 14 months later (April 2011), Nokia sold it’s Qt business to a Finnish company called Digia shortly after hooking up with Microsoft and Elop.




So what happened? How did a long term strategy that needed several years to work founder in a period just months?

Well, I think several things happened. First producing at mobile version of Qt to work beyond Nokia’s Symbian platform turned out to be harder than people thought.

Also, by the end of 2010, it was clear that Apple’s iPhone and Google’s Android platforms were runaway successes, garnering between the two of them and impressive 49.5% market share. And Qt had nothing going on these market share giants’ platforms.

As you can imagine... big platforms.
Nokia actually gained market share, but it was growing at an annualized rate of 30% while Android had a rate of 615.5% and Apple was still growing by 85.9%. It must have seemed to Nokia’s board as they searched for a CEO in the winter of 2011, that their Qt strategy wasn’t going to bring in results soon enough to matter. Hence Nokia started to cast about for a different strategy. What is truly confounding in all this, is why they thought a Microsoft alliance made sense. Microsoft had a minuscule 3.1% market share in 2010, down from the preceding year. Plus their rate of growth was falling. Citation: all figures taken from http://arstechnica.com/gadgets/2011/01/android-beats-nokia-apple-rim-in-2010-but-firm-warns-about-2011/.

So Nokia wasn’t exactly lining up with a proven market winner, quite the contrary. At the end of June 2013, Apple’s share of the smartphone had declined to 13.2% while Android had soared to 79.3%. Although Microsoft platforms experienced strong growth, their overall share was 3.7%. From Nokia’s point of view, their strategy of focusing exclusively as the MS platform, had to be seen as a bust. They were in serious danger of becoming another who also ran, like Blackberry – too late to the market to gain any lasting traction.

Slippery when late.
Thus Microsoft’s purchase of Nokia looks like it was intended to guarantee that at least one major manufacturer in the world would be producing phones based on Microsoft’s software. Can the strategy work? The odds are against success, but Microsoft are superb marketers (and Nokia is no slouch either). And the mobile space, phones and tablets is a must win situation for Microsoft. Expect them to pull out all the stops and spare no effort in this fight.

And the time is propitious for change, as Microsoft looks for a new CEO. I’ll be keeping an eye on Elop, as he appears to be a logical choice to work the strategy.

Written by: Rick Gregory

Image Sources:
http://www.thetelecomblog.com/2013/09/04/its-official-microsoft-acquires-nokias-mobile-division/

http://gambarhp.com/nokia/nokia-6120-1715.html

http://davy.preuveneers.be/phoneme/?q=node/1

http://www.zivaveng.com/rec/66-Elbit-Elop

http://www.mlahanas.de/Greeks/Mythology/Images/GiantsKircher.jpg

http://www.wpclipart.com/cartoon/signs/more_signs/warning_slippery.png

Wednesday 17 September 2014

The Reporting Hierarchy



Gbgsoft has evolved a reporting philosophy and developed supporting technologies that address the very real need for clients to retrieve and analyze their data. We call this the ‘Reporting Hierarchy’.

Here are its precepts in order of importance:

If it’s important, then it should be on the screen, accessible in a meaningful way. The best report is one which will never be printed.


Business logic should be encapsulated in the base system and the results of that logic should be exportable to other programs like Excel and desktop publishing. We have developed a technology we call QBE (query by example) where the user can access the central queries they use to work with the data and then select the fields that they wish to export. The mechanism makes no judgments about how the data should be represented: that is under the control of the user.


Sometimes we have a query that encapsulates detailed business logic that needs be run periodically against a set of replaceable parameters. For example, we want a list of active items in our database where the definition of ‘active’ encompasses a range of dates, or perhaps the interpretation of a data field. This logic can be captured, given a name and run repeatedly as needed. The results are then QBE’d out. We call this a pre-built query.


More rarely, you just need a report whose format and logic seldom if ever change. An aged receivables list is an example. The logic of the business need dictates not only a repetitive parametrized query but also mandates a format each time the process is run. We have developed a very flexible and low cost reporting tool that is superb at producing columnar reports (including sub-sections). The tool creates PDF files by default, and the data can also be exported to a spreadsheet. The report can even be printed!


Lastly, there are complex reporting needs that require specialized programs that can analyse data into highly customized formatted reports. Examples of these are Crystal Reports, Jasper Reports and Businesses Objects (a web-served version of Crystal). These engines offer very sophisticated reporting technology which now encompasses data warehousing and OLAP data cube capabilities. These programs are expensive and require a highly skilled person to use them.  Resorting to these solutions should only be considered after the other elements of the hierarchy have been explored and exhausted.

Written By: Rick Gregory

Image Sources:
http://ifs.host.cs.st-andrews.ac.uk/Books/SE9/Web/Requirements/ViewpointHierach.html

gbgsoft and the Open Source Model

Over the span of 15 years, gbgsoft has replaced its dependence on proprietary software where ever possible. We use Libre Office, not Microsoft Office; Thunderbird, not Outlook; and Firefox, not IE. The tool kits we use to make programs are all open-source under various licenses. Most open-source these days is platform agnostic. It will run under Windows, Mac, Linux. In fact we choose our tools precisely because they will work in all three platforms.


“If I have seen a little further it is by standing on the shoulders of giants.”

-Sir Isaac Newton in a letter to Robert Hooke (Feb 5, 1676)


“Today, Newton would probably get sued for patent infringement.”

-Rick Gregory, Senior Programmer gbgsoft (Jul 15, 2006)


Why Open-Source?

For one thing it’s cheaper. That’s not to say that it’s devoid of cost. All projects encourage financial contributions and we make it a practice to support our key suppliers through regular donations. Each software project also has a community of supporters and consultants who provide support on a per hour basis. This means that high quality support is always available. And it is often these support dollars that pay for the primary development of the next generation of the software.

Each generation of open-source software follows a steady development and release plan,  publicly arrived at and adhered to. This is good news for the software’s users. Most people don’t have the time or inclination to know what the next versions are going to look like, and arbitrary changes by software producers have become the bane of most corporate IT departments. There have been upgrades of MS SQL versions that have brought entire enterprises to a screeching halt while the compatibility issues get sorted out. We work with PostgreSQL, the open-source database, and have undergone 3 major releases without incident.

Open-source software is higher quality. While proprietary software may gain a temporary advantage by having the “hot new” feature, it has a poor record in terms of security, preservation of privacy, and the fixing of known bugs. In the open-source world there is an overall transparency and visibility in code that proprietary companies lack. As the aphorism goes, “given enough eyeballs, all bugs are shallow.” A phrase the open-source community has wholeheartedly adopted.

Open-source is trustworthy. We now know that Microsoft delayed fixing bugs and broke its own encryption schemes, all in the service of making it easier for the government to spy on its citizens. Not only would no open-source project ever do this, but given that the software’s code is out there for all to inspect, any such activity would be exposed in an instant. It turns out that transparency is our best guarantee of privacy. A US Supreme Court judge famously wrote “Sunlight is the best disinfectant.”

Open-source gives you choice. Can you name two closed-source Office Suites? Most people can’t. In the open-source world there’s Libre Office, Open Office, KOffice and Calligra Office, to name a few. Most of these are multi-platformed. Closed-source likes to dominate the market, saturating it with a single product,  limiting your choice, and stopping you from getting the tools you really need.

In the end, open-source encompasses a different algorithm for paying smart people to create interesting software that users actually need. This pushes forward innovation, reliability and quality for both the programmer and the user. IBM, the world’s oldest and perhaps most respected computer company, supports several open-source projects with commitments running to the tens of millions of dollars annually. They see these open-source projects as intimately tied up with and integral to their own success. Projects large and small are all being supported by individuals, organizations and companies whose economic interests have aligned in often synergistic ways with the open-source community. And unlike the closed-sourced world where marketing and distribution issues dominate the agenda, all this open-source money goes directly to the funding of developers and development.

Open-source means better software.

Written by: Rick Gregory and Andrew Gregory

Tuesday 16 September 2014

Our Process



We’ve had a lot of experience with different application needs and program eco-systems. Over that time, we’ve worked out a pretty fool proof way of doing our work. The software industry has a long history of creating the methodology ‘du jour’ and then giving it a fancy marketable moniker.  Notable are Agile, Xtreme, UML, the Grady Booth method, and  the Yourdon methodology.


We couldn’t think of a catchy name, but there are several precepts we do follow.

1. Close to the Client

Our average system remains in use for over a decade and several are in the middle of their third decade. The reason for this is that we we go to great lengths understand what our clients need their software to do.  This involves extensive interviews with clients about their needs and critical objectives. This is a very empathetic process. Good software anticipates and shapes work flow and information in ways that leverage clients’ key capabilities. When it’s done right the whole process smoothly glides the program into being and we end up forging an enduring long-term relationship with clients.

2. Business Logic should be encapsulated in data structures.

Programs should administer data structures. This is sometimes difficult to fathom, but let’s look at a simple example. Let’s say that we want to email birthday greetings so many days before a person’s birthday. You could write the program to send birthday greetings  three days prior. But it would be better to create a database into which the client can store a ‘Birthday greeting interval’ that would then get applied automatically as the calendar advances. If usage shows that four days is a better interval, that decision can be implemented without changing the program.

3. Data Validation.

A corollary of Precept #2 is that data should be validated. If you are adding a new record to your master data table (a customer, a contact, a client or a member), there is certain information that must be properly entered in order for a record to be considered valid and usable. Some fields must not be empty. Some fields should only be validated against a list of pre-defined alternatives in order to ensure data quality. (An example is picking a province from a drop-down box of choices.) Program logic and data structures are externalized into control table. These are then manipulated by the program, using the data created and maintained by the client to administer very complex business flows.


4. Deliver early, deliver often.

This is known in the trade as  RAD (Rapid Application Development).  It entails creating many iterative releases from which the final program ultimately emerges. We’re firm believers  in this.  It involves the client in the details of the system; giving end users real input and control over the way the system ends up working. It not only results in a better system but one which receives a broader and deeper acceptance of the program by users. Secondly, RAD catches bugs and gets them fixed earlier. There is a famous software aphorism that says that given enough eye balls, all bugs are shallow. This has certainly been true in our experience. Finally it prevents poorly implemented features from disrupting workflow as they become the norm. Programmers, being human, get enamoured of their own thinking and can easily program themselves into corners. Frequent iterative releases tests these ideas early on and they get refined or dropped. Either way, we don’t end up spending time and money on stuff that doesn’t work.

5. Do the reports last.

Often the design process becomes dominated by a list of reports, existing or otherwise. It’s easy to think in terms of reports, but using these as a starting point is usually a mistake. A report is a static time-frozen representation of data. Having a new system usually means that data and work flows are going to change. Premature consideration of reports closes important areas of exploration. For a program to succeed it must creatively manage those work flows; creating the data on which to report. In additon, writing reports requires a reasonable amount of data to use as the raw material of the report. The RAD process usually generates a fair bit of testing data for use when report creation time comes. Lastly, until quite late in the process of development, data structures and the like are highly volatile, changing in response to testing and refined program design. Unless left until quite close to the end, you end up writing the reports twice, a not very efficient use of client resources. We feel so strongly about the importance of getting the reports right that we have an entire separate page devoted to the topic.

6. You get the source.

When we write a system for clients, they not only get the compiled binary program, they also get all of the source code created for the client, our development library itself (released under the GPL) and a working copy of the development IDE installed on one of thier servers.   This leaves control exactly where it should be, in the hands of the client. While we  like clients to continue using our development services, they are not required to do so. Clients have everything they need to change and build new versions of the program. This arrangement is part of the fundamental relationship of trust that we strive for.

Written By: Rick Gregory

Image Sources:
http://www.aust.edu.ng/school/index/computer-science/about
http://www.edrawsoft.com/Yourdon-and-Coad.php
http://photo.elsoar.com/many-people-playing-video-games-pictures.html