Adam Cogan is a chief architect at SSW; Microsoft certified partner specializing in Office and Dot Net solutions. At SSW Adam has been deploying custom solutions for businesses across a range of industries such as government banking, insurance, and manufacturing since 1990. For clients such as Microsoft, Quicken, and The Fisheries Research and Development corporation. Adam develops Microsoft technologies such as SQL Server, Reporting Services, win-forms and web-forms using Visual Studio. VB.net and C# Access Outlook exchange server and now Office 2003 using interior architecture. Adam is one of only two regional directors in Australia.
Greg Low: Introducing show number 14 with guest, Adam Cogan.
Our guest this afternoon is Adam Cogan. Adam is a chief architect at SSW; Microsoft certified partner specializing in Office and Dot Net solutions. At SSW Adam has been deploying custom solutions for businesses across a range of industries such as government banking, insurance, and manufacturing since 1990. For clients such as Microsoft, Quicken, and The Fisheries Research and Development corporation. Adam develops Microsoft technologies such as SQL Server, Reporting Services, win-forms and web-forms using Visual Studio. VB.net and C# Access Outlook exchange server and now Office 2003 using interior architecture. Adam is one of only two regional directors in Australia. Welcome, Adam.
Adam Cogan: Greg, how are you doing?
Greg Low: It’s funny reading the one of only RDs in Australia; I’m the other one.
Adam Cogan: We’re brothers.
Greg Low: People don’t understand the distance between the towns here.
Adam Cogan: Down here in Canberra today.
Greg Low: In Canberra today; I’m in town in Brisbane.
Adam Cogan: I’m actually from Sydney as you know. Sitting here in a hotel, about to have a quiet conversation with my fellow RD.
Greg Low: Excellent value, that’s great. Can I get you to tell us how you came to be involved with SQL Server at all?
Adam Cogan: SQL Server or SQL Server Reporting Services?
Greg Low: Both.
Adam Cogan: SQL Server has been my first project; that was 6.0 when it came out. We were doing an application for one of the, Australia’s first ISP. Hit the wall with the database; we had to move it into SQL Server 6.0. My first experience with that, realizing that it didn’t automatically go off when I say this.
Greg Low: That’s what most people find.
Adam Cogan: And then you had the data in there amid 6.5 and then to SQL Server 7. We ended up doing a lot of migrating access systems to SQL Server. We were involved in the upsizing of the access team. Basically then came along Reporting Services. I would consider a separate tool from a separate team, really. You do all the infrastructure from SQL Server, but it’s a completely different project.
Greg Low: One of the things that Adam is well known for is having a good sense of rules for development on his website. I’ll provide a link for that later. There’s a set of rules to do with Reporting Services. We’ll wander through a number of those rules. The first one you had is you said do you check that our configuration manager is all green ticks?
Adam Cogan: I think one of the things about healthy software is the ability for you to basically look at a series of checks and see that things are running well. One of the best things that came out of programming was essentially; for the Dot Net community it was in units. Look up your code, check project code; things like that. See a whole series of green ticks, when you see red its clear there’s something going wrong here. I like the way Reporting Services have added these configurations. You don’t have to be an expert to know what’s wrong. With 2000 you really have to know; better check if the database is installed, pointing to the right spot. A whole series of bits and pieces. People didn’t really understand Reporting Services consisted of multiple different paths to it. Didn’t understand that the services were running, that needs to be running. Sometimes some guru would start their machine, after some reason. Off you need to work out all the different bits. It’s not interfaced; a whole series of green ticks. It’s a little like end-user if you think about the UI. The first thing you should do to make sure you have it all set up there. One of the things I typically see is a cross on it. Time for Reporting Services; no actuality of time for it.
Greg Low: The other one I must admit saying is the least understood is the encryption keys area.
Adam Cogan: definitely.
Greg Low: It’s another one that may or may not be configured right. The next thing I had was about checking out the built-in samples.
Adam Cogan: I think this is kind of unfortunate that we know why Microsoft doesn’t install any of the default databases and things anymore for security reasons. As a developer, need to get it up and running on your box. The first thing you should do is get your reports running, get your models running so you can try using the report data. What I did sometimes is writing a knowledge space article that shows the series of steps you’ve got to open up a series of projects buried deep down into one of the sample directories. Get those up and running, get them deployed and check them out.
Greg Low: Do you think realistically in the product that maybe the developer edition should have those on by default and not try and just immediately mimic the Enterprise Edition install?
Adam Cogan: I don’t mind if it’s not on by default but I like it to be a lot more obvious. It shouldn’t be more… The MSI files you’ve got to find, they run and extract. Open up the project, right click deploy. Another nice experience with the very first developer trying to get it up and running. The developer that’s working by himself or at home or something; this is a great experience. If there is nothing shown there they should link the samples that are uninstalled. If you want to install samples click here. It takes you through; even my mom can get the samples up and running.
Greg Low: What’s your thoughts on the sample reports?
Adam Cogan: Like to see a lot more, that’s for sure. Like to see some sample reports using security; see some sample reports using best practice. Solving a lot of the problems I end up having such as sharing common parts throughout a report. Not the typical question on how to have a hierarchy when you’ve got major type of employees that have boldness. Additional reports I’d like to see them focus… Look all alike. All the reports that are made for each company.
Greg Low: Do you tend to get the end users to use the standard browser interface that comes with the reporting services or do you wrap it in an application and call it from a web service?
Adam Cogan: Well, I will always say take what’s free first. I think the report major is quite good. Yes, it’s not very easy to customize it to make it look how you want it to look. You would have to use web application. I just saw, working in a government department yesterday; see the whole of infrastructure into my community. I don’t want it to look like the report major. I just want to put reports in on it, which I can’t do. Really, expression about this; it has more problems to work out. A lot of reports you have to write; information administers need. I think I should be focusing on number one: getting all their reports fast, all their reports and all their data. Then I would start… The issue changes if you’re going to use reporting services on the web for X amount of people. I think you should always be using the built in report major because you get it for free.
Greg Low: The third one you have is does your report print and display on the web properly?
Adam Cogan: This is something that I commonly see. Developers make a report and then they check it looks alright. That shouldn’t be finished until they’ve checked print, okay. When we’re doing reporting applications for customers. Our sign-off is printing the report and getting them to initial it. I think it’s common for developers to get it wrong and put the parameters you should change for Australia and for the U.S. settings.
Greg Low: Mostly in terms of getting page margins, right?
Adam Cogan: That’s right. If you design the report and that report is meant to be printed in landscape, you need to put at the top of the report a little note or tip. Tip, print this report in landscape. There’s no point in having users having to work that out or print it out incorrectly.
Greg Low: In a lot of win-form type ones we’ve been involved with we tended to generate them directly in PDF. The nice thing in that regard is that it does do the auto-landscape thing for you. They can look for it and just go print, print, it flips it around. The PDF is nice for saving, emailing, all those things. You don’t have the interactivity with the drill down, the things like that with the HTML reports.
Adam Cogan: I like the way that… Even in win form application we don’t go your approach, we have… A different course because you know all they’re trying to do is print out an invoice, maybe that would be better to open up. Seen a mix before. He never uses the PDF thing, takes more interest in getting the excel.net so I can mash that. Get why they want it.
Greg Low: What I’ve seen in quite a few win-form applications is there’s a prepare button but they have a radio button that says “excel” or “PDF.” If it’s PDF they launch one to the screen. People can save, print, email, whatever. In a win-form application. I’ve seen that commonly done. The other thing that I find at the moment that they tell me is one of the highest requests on that is to be able to have a different format that just provides the data on the excel reports. I find that we end up having to write two reports for every report. You want one that’s nicely formatted for printing and viewing and whatever. People often just want tables of data in the excel report.
Adam Cogan: Yeah. I agree with that. I think that every report would be nice if you could just… If there was an option where you could turn that report into xml so you can bind something. Put a question mark “SQL?” You could see SQL defined in that report. If you had… A user wanted to check where a number came from, expand on that. Take what you’ve got and make a few adjustments to it; they should be able to do that type of thing. I like to see that I’m really on web pages as well. In many cases you’re looking at data; if you wanted to bind it and you don’t mind someone else binding to your data. Be that quickly; be able to get the xml at that exact time. Maybe we’ll see that if this takes off and it’s mainstream.
Greg Low: The fourth one you have is do you include a useful footer at the bottom of the reports?
Adam Cogan: Yeah. Typically see a footer that has page one, next page is page two, page three. The first thing I like, I like all footers to look alike. I think this should be like a default footer that everybody gets. The main thing I like to see is the data and time printed. Make sure it hasn’t been in the printer for the past few days; get most recent one. Want to know who printed it. Say something like “printed by Adam Cogan on the date.” Do that using the user ID type of variable. I also like to see page one of 10. Also, the link to the website, so they know who wrote it. Any comment to it, you might put a name on it if you have a problem with the report. Always put the execution time. Get the execution time which is based on the date it got rendered. You can see if users can find out how slow a report is. You see in four seconds; you know you’ve got something wrong there. There’s no time really that you shouldn’t have. I like getting the steps. I think you should be conscious when you developed a report to know its numbers. You know how websites, bottom of the status bar… This is completed, downloaded, loaded. We think to put the time there, it took five seconds to load. You can see when pages are slow to load.
Greg Low: What about selection criteria for the report? Do you like to see that in a footer?
Adam Cogan: Yes, I would really like it if you go into the parameters and add a camera. If that automatically displays in the report as well in the header. It’s very common, every single time we ever added a camera we put it in the top of the report to show what it selected. Date range, export to PDF and print. They don’t know what they’re looking at.
Greg Low: It’s a thing I put in the footer, same deal. I like to see… I often only put it in a pitch. I like to see the selection criteria be visible on the report.
Adam Cogan: I like it in the header because I think it’s one of the first things that you would look at to know what that data pertains to. Someone looking at a series of invoices… In the footer I don't think it would be that obvious to… Probably try to start working themselves out, it starts at this amount; must be February data. Not as important; put it in the footer.
Greg Low: That’s good. The fifth one you’re saying these imbedded charts in a table to generate a dynamic chart list. That one, I must admit I like the graphics you have. Instead of giving people a sea of numbers you’re giving them a little graphic that is a good indication of the number instead. In addition in fact.
Adam Cogan: Yes. I actually, this is an interesting thing. It was only yesterday on some different reporting techniques. One of the questions I ask is “do you have a wall of numbers or do you make the numbers more visual?” They said they already make the numbers visual. That’s interesting, I looked at their real reports; exactly the way I did it. He hadn’t picked up that I was from SSW. I actually the first thing I do when I see a whole table of numbers… I like to see it graphically. Accountants are people who prefer seeing numbers. Typically if you see the logic behind it is those are the numbers, it would look nice if it was in a graph. They put a graph at the bottom of the report so it’s got the numbers at the top in a table and a graph of the same numbers underneath. A better taste doing that, what you can do… The reason I don’t like the graphs of this dimension is it’s hard to make a graph look decent based on how much data. Record, two records, the graph looks horrendous; massively big and fat. Then you’ve got hundreds of records, but you’ve put it into a chart, there’s barely anything. What I would do is put a table, drag the chart in front of the table. You have the visualness of how wide it is; you have the numbers, put them in a column or put them at a point. You get the best of both worlds; you don’t need to have a chart and a table. Numbers consist of the chart, usually sit… This comes with one caveat. When you do this and someone says “oh, I like that chart, I think I’ll have that scheduled to come into my inbox on the first of every month.” The report contains a lot of images; the email that you receive from reporting services schedule is a fairly fat type of email. It will look fine, but as soon as you forward that email, Outlook will become extremely slow and even hang. You need to a warning at the top of the report that says “do not reply or forward this email.” It isn’t the greatest.
Greg Low: Noticed number six, do you avoid showing empty reports? That’s a simple but effective one.
Adam Cogan: Yeah. I never liked the idea where people design a report that you must enter parameters before seeing the data. I think that at a minimum you can usually guess what they want to see. Unfortunately, the reason why you see a lot of reports with no default parameters is because the default has nothing there. Go the extra step and do it. You should never just open up a report that hasn’t got default pyramids. I guess when you’re doing it, it’s best to try to choose the most intelligent methods you can to show something. You might be showing products that not most commonly sold. If you’re showing that, show the current month of data. Something like that.
Greg Low: If you have a start date and end date maybe share them from the beginning of the month and the current time if you think that’s what they’re going to want. The only downside of that is it ends up working that out if your defaults aren’t good; counterproductive effect.
Adam Cogan: Referring to that example about the date data. I like to draw the date data from the start. What developers will do is say “let me show the current month.” They’ll use an expression and the expression will be looking at the now. Going back to the last month or something. Use the current month or whatever. I prefer to show that based on what the data is. I will not use an expression, I will date drag that data. Look at the maximum data in the report. Do you follow what I mean? Let’s just say that there’s no data in that for the last two months for some reason. It would just go back to the very last month that had data. Make sure that it’s always showing some default data.
Greg Low: I must admit one of the other things I’ve often ended up doing is if you have reports that are kind of showing a month or something… I try to make a decision based on what day of the month it is at the moment; as to what they probably want to see. Rather than just assuming that on the second of the month they really want to see the first or the second. See the previous month.
Adam Cogan: Reason, it would be very nice to be able to know what the last parameters they used for it; be able to case them. You can’t, you have to get a month to make sure we’re sharing something relevant. Sales people keep sales people.
Greg Low: With the parameters you’re saying all is set default parameters?
Adam Cogan: Yes.
Greg Low: The other one is very straightforward. The date-time data for date parameters. String type?
Adam Cogan: About one of the only things that I can think of that drives me nuts is that you can’t have much control over the parameters at the top. Ideally, I would like to be able to display, enter the data in MN/DD or enter the data in MN. You know that the American’s have got a lot to answer for this craziness. There is no visual way for a user to know which way they’re entering. I remember many years ago, when I grew up on SQL had to be passed in; the ware-clause of the day had to be passed in through MN/DD. The rest of the world should take a class action out on the U.S. for that.
Greg Low: I always point people to T-Bookerasi’s website. He’s got a link to some articles; got a really good article called the ultimate guide to the date-time data type. It should be compulsory reading for all developers. I think the thing that isn’t often understood is that outside the U.S. the most common misconfiguration on PCs for example is the culture; the local type info. Regional settings, that kind of things.
Adam Cogan: Multitude gets to understand. George Bush in the beginning of his tenure made a little bit of noise around where they could automatic. Look at the date-time, whether they could change that.
Greg Low: The matter of discussion, yes. Listen, that’s a good point to take a short break. When we come back we’ll talk about the last few of the rules.
Adam, what I might do is have you share with us about yourself, where you live, interests or hobbies or anything?
Adam Cogan: My hobbies are my kids. I have one two-year-old and one four-year-old. Helping my little four-year-old pass an entrance exam to get into a private school in Sydney. All of them have these entrance exams. She had a teacher there.
Greg Low: That’s amazing. I was at Oz-Fox on the weekend with Adam; you were mentioning that. I had never heard of an entrance exam for kindies and things. It really is serious?
Adam Cogan: It’s not complicated for us; you only have to count to 30, do simple math add two and two to get four. I would recognize, what color are these shoes, things like that. I was trying to talk to the teacher; lots of things. She was making up, “stop doing it sir.” I threw the book on the bed, I said that’s it, I’m not reading you anymore of this, or working with you on this. She said “but daddy I’m just a little girl I’m trying so hard!”
Greg Low: That just struck me the way you used to not learn things until you went to school and then they added kindergarten and preschool; they moved more and more learning down to that. The idea of then having an entrance exam for the kindergarteners is getting a bit tough on the poor kids. Getting younger and younger.
Adam Cogan: Completely full list of applicants; they take the best student. Half interviewing mom and dad at the same time. I hope I didn’t destroy their chances.
Greg Low: On the next of the errors, you’re also suggested do you show errors in red?
Adam Cogan: I said it, yes. I believe you should be showing errors in red. It’s probably not just good enough that you show a message that records the error. What I do is I put a red box with a red icon and a whole series of message there. As soon as it comes up visually that there’s nothing there, just like the end; the red crosses and the green ticks. They’re great for your eye. If there’s extra trouble…
Greg Low: That’s good. You also said on the note of errors that you validate all your reports.
Adam Cogan: You know what I wish the Reporting Services had? I wish that you could press “compile” and check everything throughout. I can develop that site trying to report, but by the time I’ve gotten to my last report I check the others to make sure it’s okay. Sometimes you’re making changes and things. It’s done on every single report. I would like to be found out about the errors without running them. What I did is I wrote a utility. We stored the machines; you can download it from our site. SSW SQL point services, mouthful for program. What it does is installs a web application and an ADO front to your reporting service. It cycles through every report and opens it and checks that they’re all right. It gives you a big list of red ticks and red crosses and yellow warning signs where it can’t work it out. The only time it can’t work it out is if you don’t have a default. Very specified.
Greg Low: What you’re checking is saying “if I called a report with a default parameters does it actually run?”
Adam Cogan: Correct.
Greg Low: The real impact of that is as if there’s an underlying scheme of changes; all sorts of things that might otherwise break the report. You’ve got no way of picking that up until you run it.
Adam Cogan: Becoming more and more common place. With SQL 2000 has the ability to bind to xml, that’s then that you can high-speed data coming from lots of places. Good, could potentially change. When you deploy it this way; later on it could stop working. Better to set this type of report up on a schedule. Obviously it’s a bit of a performance impact. Whenever there’s not a green tick. This is also beneficial because it actually gives you the time each report took to run. If the report is taking too long to run, then you should consider implementing casing on the report or structure or something.
Greg Low: That’s great. You’ve got denormalized database fields for calculated values.
Adam Cogan: Yes. This is an integral one. Important to database purists like you; I don't know what you’ll think of this. One of the things that often happens is when you’re writing a report you can do some very cool things with your expressions. Make values that are negative; data budget in red, hide tables based on the customer’s category. Highlight other things. The expression that is so powerful that I strongly believe the expressions should only be done; used for formatting. Changing colors, hiding things, it looks a lot like that. I see business rules being implemented in these expressions. I don’t like it at all. You might have a title figure on there that the database doesn’t store the tax. If the database doesn’t store the title you end up doing a calculation of adding in your own tax. Different based on different states. The total figure there. The right way to do it is to call out to the middle tier object, has your business rules in it. The fact becomes quite new to developers. They don’t always do it. They have to add in a reference to the family; have to put the expression on more of the opinions. Skills in the table. Invoice table, I’ll put a title figure there. When you’re doing the reporting, it’s a lot simpler, but you will always get it.
Greg Low: That’s one of the things you’ve got with SQL Server 2005 you’ve now also got persisted calculated fields. It wouldn’t necessarily… You’ve also got the option for calculated fields that aren’t persisted. You’ve got those options, apply the logic, have it in the database. Make it look like a field that may or may not have it stored.
Adam Cogan: That’s basically for those people who are too stingy to write out space usage. If you don’t care that this space usage, put that data on my scale data. The benefit of what you just suggested is the field is not going to become out of synch with the data. If you put a denormalized field you have that potential where you have scaled data there or incorrect data. What we always do when we store it is we write another check. Put a stored-procedure in the database called proc data in this case, invoice_total. That stops a return to record, if the total doesn’t equal the sum of the items in the calculation. Any application, somehow someone has imported that or something. A stored-procedure will load that.
Greg Low: If you are going to store that separately you’ve always got the potential maintenance issues. If you can do it with a calculated field that’s great. It’s done on the fly every time as required or if it’s persisted the database keeps it in synch for you. Probably having… With a lot of people it depends on level of comfort with things like T-SQL. For example one of the things I found myself invariably doing with Reporting Services is I kind of like to write an expression or T-SQL statement that returns the data in a pretty good form. Really all that’s happening in the report is things like formatting, stuff like that. All of the calculations and how things are done; stuff like that, I try to have that in the statements, whatever, or the proc. Whatever returns the data for the report.
Adam Cogan: Typically they’re riding around… My feeling is if they’re using SQL 2000 or another database, use a denormalizing field. Go ahead and use the fields.
Greg Low: Calculated ones were there in 2000, you just didn’t have the option to persist them.
Adam Cogan: That’s right.
Greg Low: Number 12 is saying do you create a separate virtual directory for admin access?
Adam Cogan: Reporting Services isn’t that nice or that easy to put out for public access. What you really want is somewhat internal. You want them to go to Reporting Services and authenticate with their sheet. External, give them anonymous access to these reports that anyone can view. What we do is we create two websites, there’s a whole series of steps there listed. Explain to you that you basically copied the report manager followed up to another folder. You demonstrate the security settings. Conflict point to the other point like ACTP columns//server column 81/report service. Giant configuration in its own directory. Then you set the security to use integrated for the secure ones. I guess the note here that Mitch pointed out to me before is what you do with this service pack. You run though it every time you get a service pack. Not ideal.
Greg Low: Again, a bit easier nowadays given the fact you can script all of that stuff. I might add, with Mitch’s new favorite thing being Mon-Ad as well. The new Windows shell. It’s even easier to do that sort of thing. That’s good. You’ve also mentioned you cache popular reports for better performance.
Adam Cogan: We kind of touched on this. It’s never okay for a report to take three minutes to render and send to a user. Any report that’s going to take more than 20 seconds really should be implementing caching. It’s very… It’s like ASP.net, but with ASP.net you really need a developer to implement that on the pages. Reporting Services, you just go in there, get the proc; easy execution, and done.
Greg Low: Or you say in the next one if the thing really is going to take a long time the scheduling the report is a better option. Should we do a snapshot of the report? In fact, one of the things I find whenever you get people asking odd questions you know there’s something weird going on. I had a class a while ago where one of the guys was talking about “how can you seriously increase the time on ASPX pages and things like that?” I was talking like I was interested in how much and he was saying three or four hours. I was saying like “pardon?” Again, they had reports that took two and a half hours to run. The internal decree was that you had to do all these things straight off a standard web page. Let somebody click on a thing, come back three hours later on the page it appeared on. You might want to rethink that.
Adam Cogan: When you’re used to using a hammer everything looks like a nail.
Greg Low: The last of the ones you mention on here is do you take advantage of integrated security. Do payroll reports.
Adam Cogan: Typically when you’ve got anything that’s half empty; don’t display it in the ability that the user can even say. It’s a name to the others. Something that would change that so you can use the built in user ID. They just see what they’re getting.
Greg Low: The basic rule in any security thing is you want to avoid people being curious as well.
Adam Cogan: That’s right.
Greg Low: Don’t show them things they can’t do rather than trying to stop them from doing it. Well, thanks for those; I suppose the other thing we’re interested to know is what do you have coming up, where can people see you? What are you doing? Presentations, things happening?
Adam Cogan: Might just talk a little more about one thing we haven’t touched on with Reporting Services. This is the issue of using Reporting Services inside a real web application. I don’t really have a rule on this, but kind of a discussion; more like a tactic. I’ve just been looking to a few tactics on the column where they ask what’s your tactic for this 100-page write.
Greg Low: Run like crazy, yes.
Adam Cogan: This is a fast pull.
Greg Low: 100 meter race is over in nine seconds, something like that.
Adam Cogan: Very strange. I have nothing specific here, but the situation where you can put reports embedded in a web page. I guess the webpage is when can you use reporting services; when it is appropriate to use reporting services and when is it appropriate to use and ASP.net web application? All I can say is that my feeling on this is that Reporting Services is much faster to develop a page. A read-only page in Reporting Services if you have to do 100 of them; compared with ASP.net; the maintenance is going to be easy in reporting services. There’s no code or very little code. When you need to do report groups and headers and groupings and totals in each sections; in Reporting Service is after that it iterates through the data, keeping variables of whatever you’re doing. Adding parameters with ASP.net, adding code to do the same thing. For the user, the user gets the ability for that data they’re looking at to automatically export to PDF or excel. For free, another popular format. Also, they could go up to that report; can’t just go to a webpage and say “I want that delivered to my inbox unless it’s Office driven.” Some of the bad things is you’re forced to use the built-in parameter control if you don’t like it. Not much flexibility. You have the issue where the user would like to say “can you put another date control, a little link that goes back a month?” You’ve got no flexibility to do things like that. Also, with reporting services you don’t get to see the string you can in ASP.net. That drives me bonkers. Then you’ve got all the potential difficulties in deployment with ISP and Reporting Services.
Greg Low: That is a separate thing, yeah.
Adam Cogan: I haven’t seen Reporting Services used much on the web. I think there’s some compelling things there could be. If it’s read-only it’s worth considering if you can get yourself over the deployment hump. Thoughts on that, Greg?
Greg Low: Tend to think so. I like having a little more control, parameters; all those sorts of things. My inclination if I have the time is to wrap it in something else. That’s a personal preference.
Adam Cogan: The actually wrapping of it now; that changes with 2005 how you can actually have the built-in control in Visual Studio. Edit it in the page and control it on an ASP.net page. I think it’s not clear which place is the best way.
Greg Low: In fact, even I’m imagining in things like Ajax. You could rip out and keep grabbing and re-rendering a report in the middle of a region in the middle of an aspx page and things like that. That might produce some powerful sort of scenarios. Again, if the formatting of the report and stuff, there’s a lot of work that Reporting Service is doing for you, it has to be worth using in ASP.
Adam Cogan: Right. To answer your question before about what I’m doing…
Greg Low: What’s coming up?
Adam Cogan: I run my user group in Sydney; I’ll be carrying on doing my Dot Net user group. Doing one in Adelaide, one in Malaysia, and Japan. I’m going to be at code camp. Great code camp, I’m going to be writing my push block there.
Greg Low: You were saying that. I probably should, I’d die before I got there.” I love the idea that you’re writing the push block there. Shows people where Waldo is.
Adam Cogan: I might be working on Mitch over lunch, trying to talk him into that. He’s trying to talk me into going to the Krispy Kreme doughnut place…
Greg Low: Worth the bike ride. Well thank you very much; we’ll talk to you again soon.
Adam Cogan: See you Greg.