Co-op Highlights 15

This is my last post for this semester, but not my last post ever.  I will be continuing to post regularly on topics and research as I run into things.  I also plan to use this website as a portfolio to highlight different projects I have been involved in and code that I have written.

I found this great website in the course of research about Google Charts API.  This is going to be key in the next week as I work to enhance the Google Charts running on my capstone project, also known as VARI.  As of last week, I was able to add a rough chart based on a basic array.  This article from Dot Net Fox talks about binding data from a SQL database, which is exactly what I’d like to do.  My goal with VARI is to show several different charts, but I am still exploring what those will be.  I’d love to show a stacked bar chart or a pie chart showing the different portions that make up the total (the number of children, students, sites, and main auditorium numbers totaling the overall weekend number), for example.  I’d also like to show some sort of year at-a-glance bar chart by location.  I believe there is a way to add a dynamic data control with Google Charts, so that a user could choose a date range and choose a location, and then see a chart based on that input.  I have not found a good resource out on the internet for this yet though.

In my research over the last couple of weeks, I also found this article that talks about the advantages and disadvantages of using SQL DataSource, LINQ to SQL, and EntityDataFramework.  This was helpful and it seems that there is no clear ‘right’ answer to the question.  The last sentence of the article sums it up well:

“But remember, you can also mix the use of different DataSources in your WebForms, using the most appropriate choice for the task in-hand.”

Use the most appropriate tool for the job.

Another great web article that I found talks about using MVC and WebForms in the same project.  And, that’s what I’m attempting to do with VARI, my capstone project.  I created everything in MVC with Razor view, and then have added a couple of WebForms pages to show the reporting elements.  I’m not sure if it’s the very best way to do it, but it does seem to be working fine.  From what I can tell, there are good things about both MVC and WebForms.  I anticipate the next generation of MVC to incorporate a little more WebForms-like pieces OR WebForms incorporating a little more of the MVC-like pieces – it reminds me of the Reeses Peanut Butter Cup commercial – “who put their chocolate in my peanut butter?” vs. “who put their peanut butter in my chocolate?”  Once both people taste the final product, they both love it!  I could be totally wrong (since there’s a lot I don’t know!), but it feels like this is the direction things are moving.

Co-op Summary – Spring Semester 2014

This is my Co-op Summary for Spring Semester 2014, my final semester at Cincinnati State.  At week 1, I identified several Learning Outcomes with my Co-op Supervisor to work towards during this semester.  One of the Learning Outcomes included utilizing my blog,, to document my experiences in this co-op (CPDM 192) during the Spring 2014 semester.  I did maintain weekly or semi-weekly posts and included information and links to the topics I’ve researched or been exposed to this semester.  This semester also included my Capstone project, so several of my blog posts have referenced that project.  One of the coolest things that I have run across is using Google Charts API in my Capstone project.  I have one more blog post to write this week (Co-op 2 Highlights 15) and am planning to explore that topic a little deeper.  One big event that happened this semester was a major domain migration from one server to another.  This was huge for the IT team, and while I was not directly involved with helping with that, I did gain a big appreciation for what a huge task it was.

Another Learning Outcome included attending a webinar for the Birst product.  This is a reporting product and it seems like it can do a lot, but there’s also a big price tag associated with it.  The great thing about Google Charts API is that it’s available at no cost.  Infographic reporting, not just lists of data, on the data that we have in our MySQL database (the Vine) and our attendance (my Capstone project) seems like it could be valuable and I hope that there will be opportunities in the future to incorporate more reporting features.  Back in January, I also worked with the Director of Communications to build a WordPress website for a conference coming up in May.  This was great to walk through each step of the process and I have made updates to the pages several times in the last couple of months.

Again this semester, I was an active participant in the Database Architect meetings and provided feedback on various topics as appropriate.  This semester included a good quantity of website updates for our sister organization,  This included uploading Powerpoint and Word documents to our Amazon storage via Cloudberry, activating ‘closed due to weather’ images on the home page, and updating the web pages for an annual event that is happening at the end of May.

Overall, this semester was heavier on website updates, but lighter on other IT-related projects.  However, including my work on the Captsone project, which is directly related to our organization, seems to be an even tradeoff.  The Capstone project includes building a SQL database and tables to hold our weekend church attendance data, which is currently stored in an Excel spreadsheet.  Once the tables were organized and normalized, I imported some test data.  After building the scaffolding for the website in C# using the MVC 4 with Razor view, I developed a couple of stored procedures to call the data, allow for updates, entering new data, and deleting data.  This was not without a lot of help from the Capstone instructor.  I think he was stumped at times too.  There are probably one hundred additional things I could do to this project, but the big things that remain are adding enhancements to the reporting page and importing additional historical data.  The historical data is tricky because everything in the Excel spreadsheet is based on a Sunday date, even if it happened on a Wednesday or Friday or Saturday.  This requires a little more finagling of the data to make sure it is in the proper format before importing in to the table.

Because this is my last semester at Cincinnati State and I will be graduating on May 4, I have been actively looking for opportunities after graduation.  My goal, going in to this program almost two years ago, was to transition to a new career working with databases and building or maintaining websites.

Co-op 2 Highlights 14

It’s funny, but I have been about a week behind all semester – I’m not sure how that happened, but we’ve come down to the last week of classes and I will be posting #14 here today and #15 sometime in the couple of days.  I met last night with the capstone instructor and we tweaked just a couple of things on VARI (Vineyard Attendance Reporting Index).  One of those was to show just one date near the delete button instead of looping through the model to see how many events could have occurred on that day (it could be 2 at Middletown or 10 at Tri-County).  I didn’t want to have 10 dates of the same date showing next to the delete button.  The other thing we tweaked was styling my back/cancel button to make it look like a button, while really being a link.  There are several opinions and ways about how best to do this.  With MVC, you can’t have more than one submit button on a form, so one way to get around that it to have 2 or 3 forms on a web page, each with their own submit button.  With the situation of a cancel button, it doesn’t really get ‘submitted’ anywhere, it would just redirect the user back to the home/starting page, so it’s more like a link in that aspect.  This post, from StackOverflow, gave some options on how to do that.

I’ve started adding in the historical data from the original Excel spreadsheet, so that everything is converted over to the SQL database.  This is easy in a way, but time-consuming.  For things like the Saturday night church service or the Wednesday or Friday services, those are all listed with the Sunday date for that week, so the dates need to be adjusted for each of those.  I’m unsure yet about how much historical data to include, but for now, I will import the last year to be able to provide some decent reporting comparisons.

Reporting – the final hill!  One of our web/IT people at work suggested using the Google Charts API and I’ve begun implementing that.  It almost seems to easy!  I need to read up on how to connect my datasource (the database) to the Google javascript, so that the chart is pulling data from the database (and not the pizza array that Google gives as an example).  There has never been really great dynamic ways of reporting on the attendance data, so I think it could prove pretty valuable.  It’s one thing to see a plus or minus number on an Excel spreadsheet and say ‘oh, we are down for the month,’ but it is a whole new world to see that represented in color on a pie chart or bar chart.  This introduces the infographics topic again – I think I wrote about that earlier this semester or last semester.  Infographics are graphical representations of data.  The use of color, trendlines, sizes, and shapes really help to convey the meaning of the data they represent.

I’m planning to present this project to our IT team and a couple of other interested parties at work next week.  Then, I can get feedback and together, we can determine if it is a useful enough product to present to the leadership team and possibly launch for real-world use.

Co-op 2 Highlights 13

So, I’m catching up now on my posts here.  I had fallen a bit behind on posting, but not for lack of ideas or things to write about, rather a lack of time to put fingers to keyboard (like putting pen to paper).  🙂

My capstone project has been pretty much all-consuming lately and I am starting to see the end of the tunnel – it is a real, live attendance tracking tool.  You can enter attendance data for a specific date for a specific location and church time and save it.  And, it really does save into a database!  One of the things that I’ve added is a jquery datepicker, which has been a nice addition.  My capstone instructor has been very helpful with this project and maybe even a little stumped at times.  Between the two of us (him:  logic and syntax, me:  double-checking commas, column names, datatypes), we created a stored procedure to create a temp db – this will check to see if any attendance record already exists for that particular date.  If so, it allows you to update that attendance.  If not, it creates a record.  That was a huge breakthrough about 3-4 weeks ago now.  Connecting the datepicker was helpful and allows the end user to just click on a date, instead of typing in the date (and already knowing that Sunday was April 6 instead of April 5).

One thing I’ve realized though about our historical attendance data, which I am now importing in to the database, is that all records are based on a Sunday date, regardless of whether they happened on Wednesday, Friday, or Saturday.  Over the years, that has been the structure and it has worked, but in a pretty rudimentary way.  The Wednesday and Friday attendance numbers are in the same column, so you can’t really compare or analyze those numbers accurately because you don’t know if something was a Good Friday service or a Wednesday night church service.  I have to think through this a little further, but I am leaning to the side of correcting all of those items as they are imported into the new database.  It makes it more accurate, and databases are all about accurate.

Another thing I have wrestled with in the past 2 weeks is a datetime format for my data – I found this website with a great listing of examples for any type of format you may want.  I am still fine-tuning my date and time listings.  The times show up in 24-hr format, instead of AM/PM and I think the AM/PM would be a more user-friendly way to display the church times.

Reporting is one of the final big hills to tackle with this and I’m not sure how pretty it’s going to end up.  The project is based on MVC overall, but MVC and WebForms can intermingle within the same project.  I’ve found some good information here and here about this.  Actually making that happen doesn’t seem to be quite as easy.  I do have a basic gridview on a Reports page that allows sorting and paging of data, so you could sort by date, time, location, notes, or even attendance count.  I would love to find a great way to create a visual or infographic to display this data.  I’m still working on this and hopefully will be able to post about my success in my next post (#14).

One last piece is implementing a log-in system on this project, so not just anyone could enter data.  That will take a bit more research.