In this post, I thought I share some of the food deals, tips, and tricks that I found to be beneficial for me - and of course these food joints are the ones I frequent. I am pretty sure there are more out there - if you know those deals, tips, and tricks, let me know in the comment section and I will try them and add them into this post with credit to you.
Deals:
Restaurants.com: Several times a year, Restaurants.com has excellent deals with their discount code. I bought several coupon for $25 off for certain restaurants for only $3 per coupon, some for $4 (depending on the deals). Be on the look out at fatwallet.com or deals.woot.com for coupon code.
Roosters: on Olentangy River Rd chain, they have appetizers deal on Tuesdays. So each Tuesday they will give you a discount on one selected appetizers. For example, last time I went there, it was $1.07 for an order cheese sticks (has 5 sticks in it).
Qdoba: On Tuesday nights, kids eat free at Qdoba. If you are a Qdoba card holder, get double points on Friday. If you go to the one in 5th ave, they give free chips if you come after 8pm - for any day. Students can have a $5 meal - any day.
City Barbeque: Buck-a-bone Tuesdays. So instead of paying $17.99 for a full slab - pay only ~$12. Some stores have $4 off a sampler Mondays.
Applebee's: 1/2 Price Appetizers with any beverage purchase from 10 p.m. to close. At the bar from 11 a.m. to 4 p.m. (dine-in only. excludes sampler).
Tips & Tricks:
Chipotle/Qdoba:
BD's Mongolian Barbeque:
Roosters:
For some more food items that are not in the menu:
-- read more and comment ...
Sunday, February 21, 2010
Food Deals, Tips, and Tricks
By
Johannes Setiabudi
@
11:20 AM
0
comments! add yours!
Wednesday, February 17, 2010
Using ASP.NET Chart Controls in ASP.NET MVC
In the past, I blogged about using Google Visualization to render charts with ASP.NET MVC here. It's pretty easy, it works, and fast. What if you do not want to use Google Visualization / javascripts to make your charts? Well, Microsoft released ASP.NET Charting Controls late 2008 and this blog post will discuss several options you can have in using it with ASP.NET MVC.
There are several ways you can do this (that I have tried/used):
- Generating and rendering the chart in the controller and returning it as a FileResult using MemoryStream
- Generating the chart in the controller and put it in the view data and let the aspx/ascx renders it using the webform control
Now using the webform control gives you all the bells and whistles (url, tooltip, label, etc) - no extra work needed. BUT - in my experience, it does not work if you run your MVC project under a virtual path. For example, if you run your project under root, such as http://localhost:2000/Home/Index - it will work. But if you then go to the Project Property window in the solution explorer in VS 2008, go the the "Web" tab, and set a virtual path, and build and run (i.e. http://localhost:2000/Chart/Home/Index) - it will break. When it runs, it will give you "Failed to map the path '/ChartImg.axd'". I am still unable to solve this problem yet - you can see my StackOverflow question here.
You will need to download a couple of things to get started:
- Microsoft Chart Controls for Microsoft .NET Framework 3.5
- Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008
First, you will need to prepare your web.config by adding these lines:
In your development environment, when running using VS 2008 by hitting F5, the images will always be rendered in memory regardless what you put in the appSettings, unless you are including the "WebDevServerUseConfigSettings=true;" in there..... <appsettings> <add key="RenderMode" value="MEMORYSTREAM" /> <add key="ChartImageHandler" value="privateImages=false;storage=file;timeout=20;deleteAfterServicing=false;url=/App_Data/;WebDevServerUseConfigSettings=true;"/> </appSettings> .... <system.web> <httphandlers> <add verb="*" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/> </httpHandlers> </system.web> ....
You can also read more about the possible enumerations and values for the appSettings here.
Now, the HTML:
<%
if (ConfigurationManager.AppSettings["RenderMode"] == "MEMORYSTREAM") {
Response.Write("
");
} else {
myChart.Controls.Add(ViewData["Chart"] as Chart);
}
%>
The controller code:
public ActionResult Index() {
ViewData["Message"] = "Welcome to ASP.NET MVC!";
if (ConfigurationManager.AppSettings["RenderMode"] != "MEMORYSTREAM") {
Chart myChart = CreateChart();
ViewData["Chart"] = myChart;
}
return View();
}
public ActionResult Chart() {
using (var ms = new MemoryStream()) {
Chart myChart = CreateChart();
myChart.SaveImage(ms, ChartImageFormat.Png);
ms.Seek(0, SeekOrigin.Begin);
return File(ms.ToArray(), "image/png", "mychart.png");
}
}
private Chart CreateChart() {
Chart chart = new Chart();
chart.Width = 350;
chart.Height = 300;
chart.Attributes.Add("align", "left");
chart.Titles.Add("MY CHART"); // Display a Title
chart.ChartAreas.Add(new ChartArea());
chart.Series.Add(new Series());
chart.Legends.Add(new Legend("MY CHART"));
chart.Legends[0].TableStyle = LegendTableStyle.Auto;
chart.Legends[0].Docking = Docking.Bottom;
chart.Series[0].ChartType = SeriesChartType.Pie;
for (int i = 0; i < 10; i++) {
string x = "MEMBER " + (i + 1).ToString();
decimal y = ChartTest.Models.Utility.RandomNumber(1, 100);
int memberId = i;
int point = chart.Series[0].Points.AddXY(x, y);
DataPoint dPoint = chart.Series[0].Points[point];
dPoint.Url = "/Member/Detail/" + memberId.ToString();
dPoint.ToolTip = x + ": #VALY";
dPoint.LegendText = "#VALX: #VALY";
dPoint.LegendUrl = "/Member/Detail/" + memberId.ToString();
dPoint.LegendToolTip = "Click to view " + x + "'s information...";
}
chart.Series[0].Legend = "MY CHART";
return chart;
}
Now, depending on how your "RenderMode" setting is in the web.config, it will either render the chart using approach #1 (memory stream) or #2 (using webform control).
Additional readings/resources:
By
Johannes Setiabudi
@
10:16 PM
4
comments! add yours!
Tuesday, February 9, 2010
GeoDocs Reborn, version 8.0 Released!
After a long overdue, GeoDocs 8 was released by AWH on December 2009 (this blog post is late). Last month, GeoDocs revamped its website using the new version, new look and feel, and faster!
In a collaboration with Nationwide Children's Hospital, they became the first client to upgrade to the new version.
GeoDocs was also recognized as a semi-finalist for the 2009 TechColumbus Innovation Awards! GeoDocs was nominated in the category of 'Outstanding Product, Fewer than 50 Employees'.
So what makes GeoDocs 8 to be better than its predecessor?

There are a lot of reasons why GeoDocs 8 is better, as far as the technical aspects - here are some of them:
Now if you are a user, here are the benefits of GD 8:
This does not mean that we are removing all the good features and functionality that GD 7 has, GD 8 still has them, but better! GeoDocs since version 7 has boasted robust feature such as:
GeoDocs is a product created and maintained by the Allen, Williams & Hughes Company, or AWH.
You can follow GeoDocs on twitter and on facebook.
-- read more and comment ...
By
Johannes Setiabudi
@
4:25 PM
0
comments! add yours!
Monday, February 8, 2010
Best Bang for The Buck!
One of the restaurant that I probably most frequently visited in the last 2 years is Tai's Asian Bistro. It's a small place on Lane Ave, close to OSU West Campus (click here for map). How frequent did I go? At least once a week, more likely twice a week and sometimes more. I think remember that there were times when I actually went everyday of the week, excluding weekends.
So, why? Is is that good? Cheap? Economical? Fit my taste? What are the reasons that so compelling for me to keep coming back?
Well, the blog title pretty much sums them up, but here are the details about why Tai's Asian Bistro is the best bang for the buck for me (some may not apply for you):
Tai's has a small selection in their menu, but for each one, they do it extremely well. I have pretty much tried every single item in their menu and in the order of how much I like them here are the top ten items to order at Tai's Asian Bistro:
-- read more and comment ...
By
Johannes Setiabudi
@
9:50 PM
0
comments! add yours!
Friday, February 5, 2010
Implementing jQuery FullCalendar PlugIn with ASP.NET MVC
I have been using jQuery for most of my javascript work, so when I need to display a calendar related data in a "month view", I did a search for jQuery plug-ins that will work with my existing project (and extensible to be used for future projects as well). My current projects are built using ASP.NET MVC, so working with jQuery and its plug-ins just makes sense.
After a careful research, trial & error, I finally picked "FullCalendar" jQuery plug-in. You can download it here. It says in its website as:
"FullCalendar is a jQuery plugin that provides a full-sized, drag & drop calendar like the one below. It uses AJAX to fetch events on-the-fly for each month and is easily configured to use your own feed format (an extension is provided for Google Calendar). It is visually customizable and exposes hooks for user-triggered events (like clicking or dragging an event)"
$(document).ready(function() {
$('#calendar').fullCalendar();
}
Somewhere in the HTML:
<div id='calendar'></div>Set the controller code to display the view:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult MonthView() {
return View();
}
At this point, we should be able to display the empty calendar by going to http://<site>/<controller_name>/MonthView.So now, we are going to modify this empty calendar to display the data from somewhere (db/xml/etc) via AJAX. For this, I created a class called "CalendarEvent" which structure is mimicking the JSON object model described in here; such as this:
public class CalendarEvent {
public string id { get; set; }
public string title { get; set; }
public string date { get; set; }
public string start { get; set; }
public string end { get; set; }
public string url { get; set; }
}
Then in the controller code:
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult CalendarData() {
DateTime start = new DateTime(1970, 1, 1);
DateTime end = new DateTime(1970, 1, 1);
start = start.AddSeconds(double.Parse(Request["start"]));
end = end.AddSeconds(double.Parse(Request["end"]));
// call middle tier/orm/whatever to get data from source
List list = SearchForEvents(start, end);
return Json(list);
}
private List SearchForEvents(DateTime start, DateTime end) {
// code to get data here
}
Now, we need to modify the jQuery to call the action in our controller to return data:
$(document).ready(function() {
$('#calendar').fullCalendar({
events: '<%= Url.Action("CalendarData", "MyController") %>'
});
}
Voila!
By
Johannes Setiabudi
@
10:00 PM
0
comments! add yours!

