Adding ad-hoc filters to generating a report

If you’ve looked at our new AutoQuery B.I./ad-hoc program, you’ll see that it is built on our reporting engine. But it has added the capability to change the filter in the select to change what data is displayed in the generated report. All very cool.

One of our customers saw it and immediately asked if we could make the API in the engine we use for this functionality public as they want to build an additional application around this functionality. I’ll be honest and admit that it had not occurred to us that customers would want this functionality. But after they walked us through what they are going to do, it became obvious that this is a powerful addition to our system. And since it’s already implemented on the .NET side (AutoQuery is Windows only), it isn’t that much work to document the API and add it on the Java side.

And so we’re about to release some super-cool new functionality to our engine. You can create one template and then, based on the value of variables passed to the datasource when running the report, set what rows of data are rendered in the report. For example, you may have a table listing all sales for your company. You can then pass in filters to limit the table to sales in the western region, over the previous quarter. The next run may be all sales for one sale rep. You can filter any way you wish without ever changing the template.

And how hard is this? Well here’s the additional code to select several specific rows of data:

KeyPairDictionary adHocVariables = new KeyPairDictionary();

adHocVariables.Add(“employeeId”, new FilterList(FilterBase.SORT.NO_OVERRIDE, “employeeId”, new object[] { 1, 2 }));

datasource.Map = adHocVariables;

report.ProcessData(datasource, “”);

And here is is for a condition:

KeyPairDictionary adHocVariables = new KeyPairDictionary();

adHocVariables.Add(“employeeBirthDate”,

 new FilterCondition(FilterBase.SORT.NO_OVERRIDE, “employeeBirthDate”,

new FilterCondition.Condition[] { new FilterCondition.Condition(“BirthDate”, FilterCondition.Condition.OPERATION.GREATER_THAN_OR_EQUAL, new DateTime(1948, 12, 8)),

new FilterCondition.Condition(“BirthDate”, FilterCondition.Condition.OPERATION.LESS_THAN, new DateTime(1958, 1, 9)) }, true));

datasource.Map = adHocVariables;

report.ProcessData(datasource, “”);

It makes it incredibly easy to use this new functionality. And I think this will become very popular (essential for many). Because it moves the filtering logic from the template, and removes it from creating a specific select for each query, and instead leaves it that you just define the filter and we take care of the rest.

You can download the C# SQL/XML sample here (requires version 11.0.6 or later).

Posted in Uncategorized | Comments Off on Adding ad-hoc filters to generating a report

The Colleges we invited to the Intercollegiate Code War

We’ve been asked by several people what schools we’ve invited. We invited the following schools as they tend to be the ones on most top 10 lists for computer science. We figured this would be a fun competition between the top schools where the contest could be over programming instead of sports.

If you attend any of the schools that have not accepted yet (including those that have declined), please lobby your computer science department to accept. If they are interested, please contact me at david@windward.net or call at 303-499-2544 x1185.

Boston University Accepted!
California Institute of Technology declined
Carnegie Mellon University Accepted!
Cornell University Accepted!
Georgia Tech University Accepted!
Harvey Mudd Accepted!
Massachusetts Institute of Technology Accepted!
Penn State University  
Princeton University students on break
Purdue University Accepted!
Stanford University Accepted!
University of California at Berkeley  
University of California at Los Angelos  
University of Cambridge (UK) declined
University of Illinois Accepted!
University of Maryland declined
University of Massachusetts Accepted! 
University of Oxford (UK)  
University of Texas at Austin declined
University of Toronto (Canada) Accepted!
University of Washington  
University of Wisconsin Accepted!

Defrag 2011

Really useful conference. But what’s interesting is that the biggest value I got from it was not what was presented, but thinking about what those concepts would lead to as they are implemented.

A significant chunk of the conference is looking ahead 3 – 10 years. And the discussion there was primarily around big data. The discussion there was mostly about the technical problems of pulling useful information out of data collections so large that SQL no longer can handle it. And there are very interesting technical challenges that need to be addressed (and Windward will be one of the companies to address it).

But the technical problems pale into insignificance next to the societal changes coming. We worry today about the end of privacy, where it is possible to learn most anything about anyone else. And that is a very real problem. But when we mine the data being collected and cross index it, we’ll know things about people that they don’t know about themselves. When Google can tell what specific item on a page you read (from facial recognition) and therefore present ads based on your focus, they also learn what truly appeals to you. When the water company knows you’re pregnant before you do (from sensors in the sewage line), do you want to find out via a congratulations email from them?

This means the end of news media as we understand it today. Within five years services will be able to provide you exactly the news stories you want to read. As that happens the news organizations value as intermediary’s deciding what to provide is eliminated. There will still be a demand for quality reporting, but no demand for what entity provides it. It also means that people will no longer be faced with stories they should read, but don’t want to – and that will bring about a major change in how our political system works.

There was some discussion about 3-D printers. But I don’t think they received the attention they deserved. They were discussed as more of a curiosity that does some cool stuff. But again, I think they are going to radically change manufacturing. We have seen manufacturing jobs drop dramatically – worldwide so you eliminate the impact of off-shoring. But they are going to drop a ton more because 3-D printers eliminate a substantial number of the remaining jobs. Most machining and assembly goes away. We even saw a company working on automated forklifts for warehouses so the entire supply chain is going to see an incredibly degree of automation.

While this is great news for those of us in the startup sector, because there is a ton of opportunity in times of great change, this is devastating for most workers. The government is trying to figure out how to bring back jobs when technology is about to put a lot more people out of work. And this change is going to have an outsize effect on manufacturing centric economies like China. We have not figured out a workable economic system where 70% of the workforce can provide everything for 100% of the populace.

There were a couple of good talks about successful ways to run startups. The guy from Atlassian was really good at this, talking about what worked for them and why. He did a good job of providing context so that you could make an estimate of if it made sense for your own company. The guy from Netflix was at the other extreme telling everyone why the only way to do things was the Netflix way (and one of his key points, to only do one thing, Netflix doesn’t follow). My favorite was Robert Stephens (The Geek Squad) who took us through the creation of the company and the decisions they made along the way – not necessarily useful (very different business from mine) but definitely interesting.

We had two people from the government, Aneesh Chopra (White House CT) and Phil Weiser, talk about how the federal government is doing a great job making use of technology to make things run better. I’m thrilled we have people as smart and enthusiastic as them working to improve things. But when you have people who are high up in Washington thinking that they are significantly improving things, when by any rational measure the system remains a disaster, it leaves me discouraged. Step one of fixing a problem is recognizing a problem. (And I say this as a passionate Democrat who worked hard to get Obama elected.)

And the Best Was

By far the best talk was Brad Feld’s. The single best line was that humans suck at understanding exponential curves. Very true. We tend to look at the last 3 – 5 years, fit a constant line to that period (any short period on an exponential curve does look straight), and assume it will continue at that straight line. While curves for physical thinks cannot continue on an exponential curve forever, the increase in knowledge, ideas, and applying them to society has been on an exponential curve since the end of the dark ages. And it shows no signs of slowing down.

What does this mean? That new concepts, new ideas that change the world will continue to impact us at an ever increasing rate. We’re still trying to figure out the impact of the Internet (as Tim Bray said, we still don’t know why Wikipedia works). The impact of social media is radically changing society but we barely see what it is doing right now. And coming next is big data which will lead to levels of understanding that will make today look like woeful ignorance.

Brad suggested reading science fiction (the parts of life here, not the space travel) to get a feel for the kind of changes coming. He sees those stories giving a preview of much that is coming. (I disagree, as does Neil deGrasse Tyson).

In Conclusion

What I see coming makes me very hopeful about the future. While everything has trade-offs and nothing is purely good, the technology coming and the changes that will bring to society will dramatically improve life. Civilization has been on an upward curve since the stasis of the dark ages and a significant part of that comes from the improvements we get from technology.

My biggest worry is most governments are still trying to address issues like it’s 1945. And while technology is on an exponential curve, government is celebrating that they’re increasing on a linear curve. (On the flip side, it’s the nature of things that we in the startup world will view government as sclerotic. Government by definition is one of the slowest evolving organizations while startups are among the fastest.)

The Windward National Intercollegiate Programming Finals

All the excitement of March Madness, without the sweat

This upcoming January will see the first intercollegiate programming code war, with multiple teams competing from most of the top computer science colleges in the country. We have invited the schools that appear on the main top 10 lists and so far Cornell, Harvey Mudd, and Purdue have accepted. The invitations have just gone out so we’re still waiting on the others.

What’s a Code War

A code war is a contest where each team is given an identical programming problem. Each team then writes a solution to the problem in the allowed time and the solutions are run against each other. In this case I am creating a game where each team writes an A.I. (Artificial Intelligence) for the game. I do think an A.I. is fun because instead of the result being a score for each team with the high score winning, you watch players move on the board and shoot each other. The play-off is a lot more interesting.

The teams get the problem at 10:00am and have to deliver a working A.I. by 6:00pm. We provide the students with the essential food groups – donuts for breakfast, pizza for lunch, cookies in the afternoon, and soda pop all day long (talk about a balanced meal).

We will first have play-offs at each school with the A.I.s written by that school’s teams doing their best to kill each other. Then the top two teams from each school will run against each other in the final games for the national championship. (Great video of a previous code war at C.U.)

Why should you care?

The future of technology is primarily software. The top teams here, those are the students that are going to go on and create the future. The students at these schools are some of the most brilliant programmers in the world. And showing up to spend a Saturday writing code for no reason other than the challenge demonstrates that they are the ones with the curiosity and initiative required to create the brilliant new products no one has thought of yet.

And it’s a lot of fun to cheer for the teams from your college as you see the game play out.

Posted in Uncategorized | Comments Off on The Windward National Intercollegiate Programming Finals