Online Platform

Who Writes Your Reports?

Posted by admin on January 26, 2015  /   Posted in Business, Online Platform

Newspaper city route Graph

What Reports?

Reporting has been and still is the most important part of running a business. Without taking the pulse regularly (or better yet, constantly), how would you know if your business is healthy or sick, thriving or dying.

Here’s the catch, truly useful reports take careful planning and considerable time to compile. A truly useful report cuts down the amount of parameters to wade through, and it highlights the most important and relevant information for the business owners and managers to make not only good decisions, but to make those swiftly — because in decision-making, next to the quality of the decision itself, the timing is the most important aspect, and a lot of people don’t realize this.

And since it has to keep up with the changes both internal and external to the company, it also has to be modified continuously.

Another important aspect of today’s reporting is: Visualization. Far from being just pretty charts, modern reports takes advantage of the fact that our brain has a tremendous capacity to process information when served in a coordinated visual pattern.

So here comes the question, who takes care of the reporting in your company? The answer, as we shall see next, is not as simple as you may think.

No One?

Most surprisingly, most companies are not doing nearly enough tracking and checking the pulse of their business processes. Reporting is just an afterthought in which the goal is “just enough info to get by” instead of being recognized as one of the key aspects of the whole business operations.

Despite the increasing popularity of Executive Dashboards, Infographics, Data Warehousing and Business Intelligence tools in general, there are still far too many businesses whose reporting activities are reserved for end of the week rush jobs or those tense accounting department fire-drills where you can feel the heat rising at the beginning of each month.

In Short: Unacceptable. Someone has to be responsible to compile and generate your truly useful reports.

Isn’t That The Company Accountant’s Job?

While accountants should generate useful reports, they are limited to only one aspect of the business, the financials. Truly useful reports encompass the whole business operations, not just the financials.

Even in the realms of financial report, your accountant most likely would not have enough visibility into the business to tell you important information that could help you grow the business.

For example, a report from your accountant would state how much profit the business is generating this quarter, but most likely it will not say which part of the profit came from a high-maintenance customer who takes up twice as much resources to serve. Nor it would tell you that you have a leak in your business process because you are paying a vendor extra for something that isn’t contributing to your business process.

From customer demographics and statistics, to inventory flow and trends, to manufacturing logs and exceptions, to vendor analysis, and more, these are important “pulses” that a truly useful reporting should cover. The more regular and painless it is for you as the business owner / manager to get a hold of these information, the better you would be able to run the business and grow it.

In the ideal setup, financial reports would be one of the inputs into the reporting system. A whole lot of information can be cross-analyzed between departments in your business. By taking time to do this, these reports can yield insights that you never even considered before!

In Short: No. Your business accountant should be one of the sources for the data that went into your truly useful reports.

Is It The Business Owner?

Since the business owner is the one who ultimately make the decision for the company, it makes sense that he or she is the one who consume and utilize these reports the most.

The distinction here is between consuming vs creating the reports.

Business owners should use the reports to monitor, and make decisions, but if they are also the ones responsible for creating them, when will they have the time to read them? And sadly, since they are busy putting out fires (show me a business owner who is not doing this all the time) while trying to keep the sales pipeline filled up, more often than not, reporting takes the back seat and the business loses a lot of potential revenues from the lack of monitoring and decision-making.

In Short: No, the business owner should be the last person responsible for generating the reports. All of their time should be spent consuming and utilizing those reports to make business decisions.

Is It The Employees?

If the business owner delegates the report generation to an employee, then the employee should have enough visibility into the business *and* the knowledge and experience to build the kind of report that is truly useful, which usually requires a lot more than just familiarity with spreadsheets.

So not only does the business have to put a process in place to disseminate the visibility to the responsible employee(s), but also, there has to be an implicit (or explicit) trust that the employee would not abuse the authority by combining what they know about the company with the new information that is accessible due to the new level of visibility.

In Short: Maybe. Unless the company has the budget and the infrastructure to support a team of experienced reporting and data-analysis as staff, reporting is not a good side-job for existing employees due to the experience required and the sensitivity of the information.

Okay, I Give Up!

So really, who should do the reporting? The answer may surprise you: An outsider.

There are service providers whose goal is to do in-depth, automated, reporting for others. Due to the abundance of data both within your company and relevant ones outside (what often referred to as Big Data, sometimes correctly, other times not), these kind of services will become as mainstream in the near future.

One of the benefits of outsourcing reports is that you get a fresh perspective and an impartial view of your company’s data. Why is this important? Typically, a reporting service provider has a lot of experience seeing patterns of data that can be useful when mining for information. Let me explain below.

Business owners usually think that their data set is unique to their business, but this is often not the case. Whether we are talking about soil humidity data gathered via telemetry, or the number of customers who predictably buy a certain product each month, to an experienced data analyst or scientist, those are just numbers that exhibit a certain pattern of distribution.

In fact, these patterns are what makes things interesting. They can be visualized to give business owners a different view to their business. The kind of view that could be very useful to make those important decisions.

Another important benefit in outsourcing reports is the fact that the service provider has not stake in the company. They are motivated to provide the best service possible without having to know the meaning of the data that is analyzed.

In fact, any decipherable sensitive data should be scrubbed before it goes out of the company, and when the reports are generated, those went through an automated mapping process (setup within the company boundaries) that puts back the right context into the generated information.

In Short: The key to setting up a reliable automated reporting system is to find a good reporting service provider who knows how to handle your company data professionally. We don’t yet have household names for this kind of service, but there are companies who are working on that. Including nextCoder.

At nextCoder, we help our clients get a constant and useful, distilled, aggregated information that they can use to make business decisions better, quicker and with a higher degree of confidence.  Often times using the data they already have.

As the result, our clients experience a steady improvement in their visibility into their business processes and this turn into the ability to measure the relevant KPI (Key Performance Indicator). As the old adage says: What gets measured, can be improved, is certainly true in this case.

-WG

Subscription or One Time Payment?

Posted by admin on January 08, 2015  /   Posted in Business, Online Platform

The Question

When it comes to funding an online business systems that implements your business processes and ideas, which one is the better way to go? Pay every month (or year) or cough up a larger sum in the beginning and never pay again?

The first option is the Subscription model, where the cost of the development is spread over a period of agreed time (most often ongoing).

The second one is the One-time Payment model, in which the company decides on a budget and the system developers are given a certain period of time to design, code, and test the system. Notice something missing in that list? Correct, maintenance and modifications. A business system has to be maintained and also modified to suit the changes in the business. After all, the system is created to support the business, not the other way around.

What is the consensus?

Whenever I asked this question to a business owner, in seven out of ten the answer leans towards a One-time Payment (usually upfront and a much larger sum). Except those who has tasted the experience of a properly-planned and properly-executed Subscription model development.

In a sense, this is not surprising, it is human nature to prefer a one-time purchase rather than subscription, unless the benefits of paying subscriptions is clear (or if they do not have a choice in the matter).

The reality is, building a system to help implement a business process has a lot more parameters and is prone to changes, both from inside or outside factors. Therefore, and the statistics agrees, it is rare that a custom business system can be developed in one iteration. The successful ones are built in several iterations with some that takes care of the inevitable changes.

The Comparison

Subscription Model

  • The company pays a subscription periodically
  • The developers are motivated to continuously enhance the system because doing so will make their job easier. As the result, the system is getting more stable and robust over time
  • The system can be built to follow the changes in the business processes. This is very important when the company is trying to train and organize their employees in phases
  • There is time to build measurement functions into the system, enabling the company to know exactly how effective the system is. This is a key feature for those answering to a board of investors
  • Everybody wins in the end

One-time Payment

  • The company pays one time
  • The developers are motivated to do their best, but more often than not, the requirements collected upfront is not complete, therefore the system cannot be as stable and robust as it needs to be, before the time or the money (or both) run out
  • The system is highly susceptible to changes in the business processes
  • Everybody loses in the end

Can We Not Pay Later for Modifications?

Certainly, you can hire the same system builders or someone else to do the modifications to the system later on, but this does not solve the problem of whose responsibility is it to monitor the performance of the system and make sure that it is still aligned with the business process it is supporting?

If the business owner is willing to take on this responsibility, then the risks are:

  1. The business owner may not have the time to do it because he is busy running the business (as he should be)
  2. The business owner may not have the necessary skills and experience to determine when the system needs to be modified

The better candidate for fulfilling this role is actually the system builders. They are in the position to setup automated monitoring system (which in itself, an evolving sub-system) that can notify the business owner when certain events are detected within the system.

The cool thing for the business owners are: They are not wasting time monitoring the system, but they are notified so they can make the decision where it matters, at the business process level. The best way to get this benefit is to adopt the Subscription model.

Can One-time Payment Ever Be a Good Choice?

The answer is yes, if the following conditions are true:

  1. The system’s requirements can be defined clearly upfront
  2. And, more importantly, those requirements do not change a lot as time goes

A good example would be a well-known system like a shopping cart, or an accounting system. Unfortunately these systems alone are rarely sufficient to help a company serve their customers and grow at the same time. Most companies seeking to build their own system has way too many customized rules and a lot of unmeasured assumptions.

In Summary

In business today, you can’t survive without taking advantage of what technology has enabled us. From remotely scanning documents, to SEO marketing, to a full-blown employee resource tracking and management system, to a data-analysis system capable of evaluating the quality of customers, we have so many technologies that a custom business system can take advantage of, that also changes rapidly.

The only way to keep up with it is to have a team of developers who are always on the ready to make the necessary changes to the system. A subscription-based arrangement is designed to fund this kind of project because as they say: Time is on our side.

Validating Your Online Form When User Clicks Submit with ZK Framework

Posted by admin on August 19, 2014  /   Posted in Business, Online Platform, Web Development, ZK

So you’re using ZK Framework to build your online forms, and your forms have fields which needs validations. You have a “Submit” button which your user will click when they’re done filling out the form. You’re using the MVVM paradigm with the data binding. You tried adding constraints to the fields, but you want the validations to happen only when your users click the “Submit” button. We have discovered this little trick that might help you.

Most likely, you are using the @bind(…) method to bind your form fields to the View Model attribute, e.g:

<textbox value="@bind(vm.someAttribute)" constraint="no empty" .../>

We noticed that when we used @bind() in conjunction with a constraint on the field, the validation was triggered immediately, for example, when the cursor left the corresponding input field. Depending on your requirement, this might be acceptable, but in one of the project that we have with our client, we went the extra mile for our client and opted for a cleaner solution, which is to trigger the validation only when the user clicks the “Submit” button.

The answer is to break the @bind() into @load() and @save(), and make sure the @save() is called before the command which handles the “Submit” button, i.e:

<textbox 
     value="@load(vm.someAttribute) @save(vm.someAttribute, before='save')" 
     constraint="no empty" .../>

<button label="Submit" onClick="@command('save')"/>

Note that the @save() expression has before=’save’, which matches the name of the ‘save’ @command() handler. This way, the validation is invoked just before the ‘save’ command, and the invalid input pop message is only shown at that time.

That’s it for now. We hope this tip helps someone out there with the same situation.

A little bit about us, NextCoder is a team of data analysts, software architects, and developers.  Using our up-to-date skills and experience, we help businesses make profitable decisions while increasing their capacity to grow. We combine Business Intelligence methodology with our vast software development experience to provide effective and unique solutions for our clients. Some of our products includes:

Tutoring Metrics

Team Tag 24

Hands-on Review of Bands in iReport

Posted by Esteban Martinez on August 19, 2014  /   Posted in Online Platform, Web Development

Here at nextCoder, we regularly use the JasperReports reporting engine and the iReport report designer tool in the systems we build for our clients. One of the issues I’ve noticed is that the iReport Ultimate Guide has lots of great technical info but doesn’t address most of the issues that come up in my real-world usage of the tool.

So I’ll be writing about some of tips and tricks that we here at nextCoder use with iReport. There’s a bunch of stuff to cover so I’ll deliver the goods in 3 separate articles. So lets get part 1 started with understanding the basics of all those report bands within the template, which will help with some creative reporting!

General Assumption
I assume that you are somewhat familiar with how iReports work, I will be glazing over some terminologies and concepts that I consider basic.  If you would like for me to go deeper on some of these, that’s what the comments box is for down there.

Title Band:
Meant for the title of the report. Intended to only print once and lacks any iteration properties.

Page Header:
Meant for printing on every page. Designed for keeping track of where you are in a multi-page report or to appear on a page when particular trigger has been fired. For example, if you have an accounting report for business expenses, there will be a section that will have employee costs. So in the header, you would show that this page is reporting employee costs. Then when
the report changes to reporting the utility expenses, the header would change to reflect this.

I usually have Static Textboxes for keeping track of the Page Header. A variable from a parameter could be used, however, if your information changes mid-page the Page Header will not show this. It’s often simpler to make a new sub-report if you have new Page Header information.

So in our example, the report would finish somewhere on the page reporting the cost of employees and leave the rest of the page blank. Then the new page would start with the new Page Header and start showing the costs of utilities. An easy way to ensure that a sub-report will start on it’s own page is make sure that the actual sub report (NOT the sub-report element ‘graybox’) has a page height of a full page. For 8.5 x 11″ this is 792. You can see this information by selecting the name of the report at the top of the list on the left hand side.ReportName

A secondary use of the Page Header is as a notification or alert. An example would be of a project exceeding a budget. In this case you would not always want the band to print. We can control this with the PrintWhen property of the band.

PrintWhen So the expression would look similar to:

$F{current_expense} > $P{project_budget}

Put in your notification text in the textfield and now this message will only print when the project has exceeded costs. Also great use for inventory too high or low.

We here at nextCoder we love the PrintWhen control!

TIP: There is a PrintWhen control for individual textboxes, a frame, or the entire band. This can be a real life-saver if your report has to dynamically change in accordance to user choices/selections.

Column Header:
Simple Static Text boxes that will print at the top of a column and will reprint again on the next page.

TIP: If you drag a field from the list on the left hand side of iReport into the detail band, a corresponding column header will be generated automatically in this band.

ColumnHeader

Detail Band:
This is where the majority of your report will take place. The most important aspect of the Detail Band is it will iterate through data automatically. So if you have a field called $F{employee}.getSalary(), then it will access that list of employee salaries and start listing them until it reaches the end.

NOTE: If you are using a sub-report, then it will be the band in which the actual sub-report is being processed that will determine iterating behavior. So if the parent report wants a complete list of a set in the title band (or any non-iterating band), then place the sub-report element in the title band. But make sure that the child(sub-report itself) is using the detail band to
iterate through the data.

Column Footer:
This band is meant mainly for keeping track of a total for a column of a page. It can also be used for keeping a running total if the report is spanning several pages for that column.

Here at nextCoder, we typically create a variable for this and give it a Calculation of Sum and Reset Type of Report. This will give me a running total for the report on each page. Use the Increment Type to update the variable when you like. So if I want the new total at the bottom of every page, I would select Page for the Increment Type.

Page Footer:
This band is used to repeat values at the bottom of every page. Typically used for Page X of Y information and a good place for the date. Both of which you can simply insert from the Palette Tools section in iReport and drag a box into the band.

NOTE: To open Palette, select ‘Window’ from menu and then ‘Palette’ or Ctrl + Shift + 8 Paging and Date utilities will be in the ‘Tools’ section.

Last Page Footer:
This band will print only on the last page of a report. Typically used for signaling the end of the report with a Static Text box.

Summary Band:
The main purpose for this band is to report out totals for the entire report. Will only print out on last page of report. If you have been keeping track of running totals with variables, or simply want to print a final total for the report, this is where they should go.

NOTE:  Variables should have their Reset Type set at Report. Otherwise you may not have all the data in the variable.

No Data:
This band will only print when enabled and if the report does not recieve data to process. To enable the band, Go to the properties of the report(Usually I just click on the report name at the top of the list on the left hand side), and find the section “When No Data”. Then select “No Data Section” from the drop-down list.

NoData

Put in whatever Static Text you want into this band to signal that no data was sent to it. Good for debugging reports and sub-reports.

I hope this has given you a good overall feel of the different bands in Jasper Report and their practical, real-world uses.

See you next time when I’ll be covering the most powerful, yet most misused and misunderstood feature of the engine: Sub-reporting. We are going several levels deep!

-Esteban Martinez

Senior Programmer at nextCoder

How To Build and Maintain Multiple Online Platforms

Posted by admin on May 14, 2014  /   Posted in BI and Custom Development, Business, Online Platform

The other day, out of curiosity, one of our clients asked me: “How are you guys able to build and maintain the quality on so many platforms simultaneously?”

That question prompted me to pause and think about this:

What are some of the things that make it possible to build and maintain multiple online platforms simultaneously without overwhelming the capacity?

As I started to write out the answer, I decided to go ahead and share two “ingredients” or “secret-sauces” that works for us and enable us to serve multiple clients simultaneously without compromising on either quality or support.

So What’s The First Secret Sauce?

Just like in the movie “Kung-Fu Panda,” — don’t read the rest of this sentence if you haven’t seen the movie yet — the “secret” turns out to be a blank scroll.

No really, the reason we at nextCoder are able to crank out a lot of platforms is not because of a secret-sauce recipe, rather, our carefully (and painstakingly) selected and molded “ingredients” (think building blocks) that we continually evaluate, test for fit, improve and build upon.

Because we are intentional about it, these building blocks are ready to be attached together to become the online platform that serves a particular industry domain. But in their disassembled state, they are just like “a blank scroll.”

See, back when dinosaurs roamed the earth — that’s the era of DLL-thunking, MS C++ vs Borland C++ vs Intel C++ to you, young programmers — the choices to make when developing an application is which compiler, which sorting algorithm, which expensive optimized libraries, even which memory manager.  The concepts such as Open Source code repository, data sharding, virtualization, JIT compilation, UI-templates, Aspect programming, had yet to become mainstream.

Today, we have the luxury to pick and choose from literally hundreds of already-made “blocks of code” to build our platforms with.  Some are Open Source, some have to be purchased, some are as complex as a whole application or platform framework, some packaged as neat little libraries, and the others, a network of code snippets and functions.  Internet browsers (big or small, desktop or mobile) is everywhere, and themselves, serve as a platform that does the heavy-lifting.

Therefore as platform builders, we can focus more on helping businesses map their needs through the use of data modeling, system configuration, deployment models (see Docker.io if you want to see an impressive technology) and of course: Business Intelligence and Data Analytics.

Ok, That’s The First One, Out with The Second

The second ingredient has to do with how we fit our client’s business model into the building blocks we just talked about.  Having done a lot of deployments across different business domains, we found that there are a lot of businesses out there whose data and information can fit the following model:

Building Blocks 800px

Basically, beyond infrastructure facilities such as security, user, configuration, email, role-specific dashboards, scheduling, notification system, full-text indexing which comes with every online platform worth its salt, we usually can organize data in the business in one or more grouping hierarchies, which typically ends with the main business object. What is this main business object? you may ask.

The main business object is typically tied to how the business serve their customers.  So for example, in the legal industry, the main business object would probably be legal cases, for a bookstore, the books, for a landscape-maintenance company, it’s probably the customer’s property, for a gymnasium, its member’s goals (lose weight, gain weight, get fit, etc.).  The Main Business Object is what most people associate with what the system manages.

Then predictably, almost all of the businesses that we came across associate the main business object with the same concepts such as trackable / auditable notes, links and tags, custom fields (who does not need a handful of these…?) and the ability to sort, search, and filter under various contexts.

Speaking of contexts, all of us know that chronological context is used all over the place, “when” something happens, and what else happens “after that” will always be the primary way in which we process information.  Thanks to the Geographic Information System (GIS) technological advances nowadays, Geospatial data is fast to become the next super-context which will find its place in many aspects of our lives.

Then after all this are put together using the building blocks, we begin the implementation of the proprietary process owned / copyrighted / trademarked by the client’s business or personally. We have been very blessed to work with innovative business owners whose brilliant process is just waiting for a good home to be built.

This process fits the definition of an Online Platform where construction and enhancements never really ends.  All of our platforms exhibit this characteristics.

In Summary

The combination of carefully selected building blocks and the right level of abstraction (at the business object level) gives us the ability to serve many clients simultaneously through our platforms.

This is not something that we take lightly, in fact every processes that we created and use takes this as one of the main goals, by which everything else is taken into consideration.  Why is this so important? Because this is the only way we can extend two biggest benefits to our clients:

  1. Continuous technical improvements, an improvement created for one platform can and will be replicated to the others
  2. Consistent quality and ease of maintenance, which translates into lower cost

Given that most of our platforms are priced in accordance to the number of usages, the growth of our clients’ business means growth for us as well. This is, to us, the prime motivation to go the distance towards excellence.

As I mentioned in my previous blog entry, we are living in the “golden-hours” of the Information technology, where the efforts of many finds its uses to benefit a much larger portion of the population than ever before.

We are the beneficiary of many-many hours spent by dedicated and incredibly smart people. At nextCoder, we intend to pass along these benefits to help as many business as possible out there. In other words, it’s time for the “secret-sauce” to be enjoyed by many, many more.

- Will Gunadi


We serve businesses of any type and size
Contact Us Today