Saturday, June 14, 2008
Let 'em Eat Cake
birthday cake from Mark...also known as Poo-baca,
Poo-Man-Chu, Poo-Man or any number of other Poo-related
names. Mark is the Waste Water Treatment Plant Tech
and some feel he sometimes has a little too much
time on his hands. We went to a birthday party this
weekend where Jay-Bird was presented with this pretty
cake from Poo-baca. Sometimes they look good enough to
eat. However, if you look at the ingredients, however
good it may look, it might cause a few Pepto-Bismo
momments when digested. When I asked him for a recipe
I could put on my blog, he was more than happy to oblige:
Grammy Bacca’s Poo-licious Cake
6 cups Class A or B processed sludge*
*this can be biosolids processed from belt press, centrifuge,
or compost pile; pre-tested for microbial and organic nutrient
& at least 14-17% solids content after de-watering for
consistency and body
3-4 cups Hand-whipped cream topping--cooled
6 oz. Syrup of choice--warmed
4 oz. Sprinkles of choice
2-3 oz. Candy of choice
---------------------------- --------------------------
Take the sludge and pack into a non-stick or pre-coated
decorative mold. Let stand at room temperature (preferably
20 C [ 70 F ]) for 2-4 hrs. When ready to decorate, carefully
turn molded sludge onto a serving plate/platter (preferably
fine china, silver, or acceptable equivalent) and release
sludge from mold by tapping and slight force. If mold crumbles
at all you will have to start all over or apply delicate hand
“spackling” techniques to the molded sludge to put it to rights.
After cake is satisfactorily positioned onto the plate or
platter, take the pre-refrigerated hand-whipped cream and
spread evenly onto the surface—taking extra care in easing it
over the edges of the mold. Then—as liberally and decoratively
as you wish—apply dobs of your favorite syrups, sprinkles,
candies, and accents (edible or non-edible)
***be careful when pressing or inserting decorations, for the
molded cake may crumble
Keep at cooled temperature (0-4 C [ 32-40 F ]) until ready
to serve
Serves 4-8 per cake
Enjoy!!!
Love Ya…Grammy Poo-bacca!!!
Dark Days Ahead
this May (top two photos) and last May (bottom two photos).
Even though we turned off quite a few lights last year to
conserve energy, this year we've probably turned off twice
as many and it's very obvious when comparing the photos. I
for one am very happy since I am a Dark Sky proponent and we
will see many more stars and auroras here in town. There
are some who would rather turn on all of the lights but I
think it's more how Antarctica should be and not just some
big town on the edge of the wilderness. Safety does however
play a big part of our lives down here and I concede that we
need to have a fair share of lights on so people will not
hurt themselves. For the next few months, this will be our
view when looking over McMurdo as the Sun is long gone and
even the very dim twilight at midday will be gone in less than
a week. However, with the lights vastly dimmed, I'm
looking forward to some fantastic sky shows this winter!
Tucker to Castle Rock
winter to put 250 hours on the new Tucker tracked vehicles.
Once a week, Sean and Josh take two people from town out on
the Castle Rock Loop on a two hour trip. This week, Lynn
and I got to go. We hadn't been to Castle Rock before
and we hadn't ridden in the new Tuckers before so it was
a doubly nice trip. The Tuckers are tracked vehicles so
they roll over the snow easily and had no problem at all
climbing from the Sea Ice up the glacier headed to Castle
Rock.
I was pretty surprised how steep the terrain was around
Castle Rock and it's definitely a long slide down to the
bottom of the glacier. Lots of people make this 9.3 mile
loop trip on foot or skis, but they definitely have more
energy than I do. I was very happy making it in a warm
vehicle.
On the way back, we were riding along the top of the glacier,
so we were fairly high up compared to McMurdo Sound to the
right and the Ross Ice Shelf to the left. At this high
up, you could see that it's a lot brighter to the north,
but you'd have to go hundreds of miles to actually see
the sun. And this was at 3:30 in the afternoon. We had
a great trip and hopefully we'll be able to go out again
after it's completely dark to see lots of stars.
WINFLY-WhenFly-OpenFly
decided that we will not have our traditional
WINFLY the third week of August. They're
replacing it with something officially called
ADVON, (Advanced Echelon...some vague military
term). What it comes down to though is that we
will not be leaving the third week of August as
planned. Instead we will be departing as early
as September 1st (not likely) or as late as
September 15th (more likely). This caused
several people to leave early last week that
were scheduled to Winter with us. They either
had definite plans for that period or had
immigration issues that they couldn't risk
fouling up because a date had changed. More
than likely we will only get three weeks off
before returning here for the Summer. As a
result, we can kiss our trip to Tibet, Nepal
and Bhutan goodbye as it was supposed to start
on September 4th. It seems like the folks who
are currently on the Ice might have been a bit
of an afterthought when the plans were being
drawn up for this period (whatever you want to
call it) but we are cogs in the machine and
that's the way it works. Can't get too upset
over it as it does mean three more weeks of pay
which will come in handy. My cynical side though
makes me wonder if they're planning on sending
a plane for us at all in five months.
"They said bidey-bye to them what they'd
birthed. And from the nothing, they looked back...
and Captain Walker hollered, Wait, one of us
will come! Wait, one of us will come! And
somebody did come. Walker! We's heartful to
you, Captain Walker. We's ready now. Take us
home.
Sunday, June 1, 2008
Photoshop 3D Layers Tutorial
This video tutorial shows how to add a 3D object in a photo and some 3D layer effects.
Related Reading
- Photoshop Patch Tools and Levels Tutorial (0)
- How To Make a Feed Icon in Photoshop Video Tutorial (1)
- Photoshop Filter: Liquify Tutorial (0)
- Fix a Website using GreaseMonkey and Firebug (0)
- You Suck At Photoshop Video 1 (0)
Type Mathematical Formulas with Ease Using LyX
LyX is an open-source document processor which runs on Mac, Windows and Linux. They called it a “document processor” simply because unlike most word processors, it encourages an approach to writing based on the structure of the document rather than the appearance. This means that you do not have to worry about the appearance of your document because the software will handle the details for visual layouts.
The software is free with no strings attached. Using LyX for typing regular notes and letters is as easy as using your favorite word processor. The main feature of the software is its ability to produce complex equations with ease while providing a professional look for the created document. It takes a little time to get used to and to learn the commands for the software, but once you get the hang of LyX, you can turn LyX into a very useful document tool. You can check out their video demo here.
LyX is a great alternative for your usual word processor and a great tool for creating documents that contains simple and complex equations. It is light and does not eat up a lot of memory and you can download it for free.
Related Reading
- Evernote: Remember Everything, Access Anywhere (5)
- Help Find Cure for Diseases by Playing Foldit (0)
- Xobni: Email Organizer for Outlook Users (0)
- Use Multiple Online Language Translators with Translate.Net (3)
- Turn your iTunes into an Alarm Clock (0)
Search Available Domains Faster Using Domize
We all know that searching of an available domain name can be such a pain. Typing a name at a time and hoping that the search will return a “this domain is available.” It can be very time consuming and frustrating at the same time.
Domize is a domain name search engine that lets you search domain names faster and gives quick results of available and unavailable domains. The engine is very easy to use and is secured over SSL. Like most domain search tools out there, all you have to do is type in the domain name that you want to search. Then it gets interesting. With every character that you type, the engine will show a result of the availability of your domain for every letter that you add. This will give you additional information and a greater possibility of finding a shorter domain name.
After each search, a snapshot preview of the available domains can be accessed easily. Just hover your mouse cursor over the red colored text (red means taken and blue means available), and a snapshot window will popup. If you did not find what you are looking for, you can edit the text in the Domize search bar and the results will change as you add or remove a letter or character to your domain name. This will save you a lot of time while playing around with ideas for a domain name.
Thousands of domain names are being registered everyday. Finding an available name gets even harder with conventional domain search tools. Using Domize as a tool for finding a domain name will certainly give you an edge and save you a lot of time.
Note: Domize also offers iPhone support.
Related Reading
- Powerset: The Natural Language Search Engine (1)
- Stumpedia: The Social Powered Search Engine (2)
- Google Just Banned Ecocho on Earthday (0)
- Ecocho: The Green Search Engine (3)
- Evernote: Remember Everything, Access Anywhere (5)
Spot what your Favorite Celebrities are Into
Coolspotters is a social networking site launched to public beta a few days ago which focuses on finding and cataloging stuff that celebrities use. The service will appeal most to celebrity fans who wants to check out what their favorite stars are using. They can also contribute to the community by creating their own “spots”. A “spot” is the term used by Coolspotters when a certain product is associated with a celebrity. Spots can be anything that is discovered in movies, magazines, TV, snap shots, paparazzi shots, etc.
We all see great stuff being worn and used by our favorite celebrities - in magazines, TV, in movies - but there’s never been an easy way to find out exactly what the great stuff is! So, we built one.
You don’t have to join Coolspotters to enjoy their service. If you just want to browse around and check out “spots”, registration is not needed. Serious spotters however will be required to create an account in order to contribute and enjoy other features.
Related Reading
- Xobni: Email Organizer for Outlook Users (0)
- Insoshi Introduces an Open Source Social Networking Platform (0)
- Iron Man Movie Wallpapers Up for Grabs (0)
- I Am Legend Global Banners (0)
- Killer Bean Official Trailer (1)
Seero Releases Embed Feature in their Geotagged Video Service
Seero is a San Francisco based startup that we introduced a while back which is the first true geo-broadcasting platform which seamlessly integrates live mobile webcasting and GPS mapping. The service is very promising especially with new features constantly being added.
The team just introduced their embed feature for the service which will give you the ability to broadcast live in your blogs and websites. All you need to do is to get the embed codes in your Seero profile. You can choose to embed a particular broadcast or the entire profile (This type of embed will connect to a broadcaster’s live feed or on-demand playlist (if not live)) of the broadcaster and let your viewers choose which broadcast they want to watch within the embedded video. There are two format shapes to choose from (horizontal and vertical).
Today, Seero’s Chief Creative Officer, David Rothschild, will be broadcasting live and on-location from the Where 2.0 conference (May 12 - 14). David will provide in-depth coverage and interviews on recent advances in location-based technology as a member of the press. You can check out the live broadcast in the embedded video below.
Related Reading
- Seero Launches to the Public (2)
- Seero to Give Live Webcasting with GPS Mapping (1)
- Nissan GT-R Disengages Speed Limiter When In a Racing Circuit. (6)
Xobni: Email Organizer for Outlook Users
Xobni (Inbox spelled backwards) is a Microsoft Outlook plugin that helps you manage and organize your emails by utilizing existing Outlook features and creating an email-based social network within your email client. Bill Gates quoted Xobni as “The next generation of social networking.” The plugin features; quick e-mail searches, quick attachment discovery, automatic extraction of phone numbers, automatic schedule creator and email conversation threading. Check out the video demo below for a more detailed explanation on how Xobni works.
This is a new and interesting way of managing your emails if you are using Outlook (the most popular email client in the world). The plugin is currently available for Outlook 2003 and Outlook 2007 and they are planning on releasing Xobni in other email clients and platforms. This is a great idea for Xobni to create an application/plugin to make Outlook users’ life a little easier. Think of the time that one can save by using this plugin. This will allow the users to be more productive and have easier time managing information in their emails.
Related Reading
- Backup to Email: Useful Backup Tool for your Files (0)
- Help Find Cure for Diseases by Playing Foldit (0)
- Spot what your Favorite Celebrities are Into (2)
- Type Mathematical Formulas with Ease Using LyX (0)
- Use Multiple Online Language Translators with Translate.Net (3)
Create Your Own Video Sharing Site with StartYourTube
Want to know what it feels like to have your own YouTube? StartYourTube is the Ning of video sharing sites. It lets you easily create your own video site without hassles. There is no installation needed, no servers and other technical stuff. It’s just like creating a blog in Blogspot. Actually the procedure is very similar to creating a Blogspot account where you create an account, customize your site (upload logos, change theme colors etc), use your own domain name and advertise (where they keep 40 percent of the revenues for the free account).
Being a video sharing site, StartYourTube lets you have your own members where they sign up and share their tubes in your created tube site. The service is free but will only allow you to have 10 thousand page views per month and upload a maximum of 200 videos which should not exceed 2 GB of storage space. You also get to have a “Powered by StartYourTube” mention in your pages and you cannot disable advertisements. This is not a bad deal considering that you are paying them nothing but it is not enough to survive a Digg effect if ever one of your videos gets dugg. However, a paid account will let you get a bigger storage space and bandwidth, remove the StartYourTube mention, run your own ads and keep all the profit.
The trick is to start free play around with a niched video site and eventually upgrade your account if your site becomes popular. This is another interesting service and a potentially useful one (if they can offer larger bandwidths and storage) for people who wants to start a niched tube site.
Related Reading
- Flickr Launches Video Service for Pro Users (2)
- Photoshop 3D Layers Tutorial (2)
- Photoshop Patch Tools and Levels Tutorial (0)
- Create a Flash-Based Website Online Using Wix (2)
- Fix a Website using GreaseMonkey and Firebug (0)
Mento: A Fresh New Bookmarking Service
There are lots of link sharing sites out there but Mento thinks that it could be better and simpler for users. Mento provides a lightweight, non-intrusive solution for easy bookmarking, sharing and tagging.
To use Mento, just register and download the Firefox or Internet Explorer extensions, or use their bookmarklet which works on all browsers. When you click the bookmarklet or Mento button, a small popup window will appear asking which Mento service you would like to use. The send feature will allow you to send the links (along with images and comments) to your Mento friends, groups, tags or email buddies. The save feature will generally save the link to your mento profile allowing you to place tags, images and notes along with the link. The reply feature will allow you to comment on the link(s) provided that it has already been saved by somebody in your network. This will also keep track of the linking activities of your Mento friends whether they have previously saved a particular link which will prevent duplicate link sharing in your network. The site also keeps track on how many times a link you’ve shared has been clicked, and which members have clicked it.
Mento also offers outside link sharing by allowing you to publish links to del.icio.us, FriendFeed, Magnolia, Tumblr, and Twitter. They also have a Facebook app that allows friends to view and comment on your links without having to install the application themselves. You can also use the AddThis widget to publish your links on other bookmarking sites. Talk about not being selfish.
Mento is another addition to the numerous social bookmarking services in the internet. The site is fresh looking and packed with sharing features which are also user friendly. If you are in the market for an alternative bookmarking service, Mento is definitely worth checking out.
Related Reading
- Fix a Website using GreaseMonkey and Firebug (0)
- Iminta What? (4)
- Test Websites on Differrent Browsers and Operating Systems using CrossBrowserTesting (3)
- Get Blogging Suggestions for your Content Using Zemanta (2)
- Get Instant Phone Text Answers for your Questions with Mosio (1)
Yard sale web site portal - Website Design Freelance Job
Excel sheet - Data Entry Freelance Job
Wednesday, May 14, 2008
Laser Removal Equipment Website (B2B) - I need content - Web Content Writing Freelance Job
Have Punch Lines, Need Your Drawings - Cartoon Illustration Freelance Job
Vtiger Signup script - Vtiger / PHP / MySQL / LAMP / DNS / BIND / APACHE - Website Programming Freelance Job
Thursday, May 8, 2008
Updated VSTS VPC Available
Brian Randell has just given the official word that there is a new VSTS/TFS 2008 VPC available:
It's no April's Fool day joke.
A new all-up image has been posted. It's been updated with Office SP1, the December 2007 TFS Power Tools, and all Windows Updates.
Also available with it are some labs to help you look at the various aspects of Team System. And, for that final bit of good news, it won't expire until December 31st, 2008.
Don't forget, you can use Free Download Manager to help you queue up and download all the different ZIP files.
DirectX MVP 2008
This would not have been possible if it wasn't for the people in the community.
Thank you to everyone, SADeveloper.NET, Gamedev.net and the XNA community over at http://creators.xna.com/. These are the communities that have made this possible! Thank you!
If you would like me to come and present a session on XNA or Game Development concepts, please don't hesitate to contact me!
Thank you once again to everyone!
Share this post: email it! | bookmark it! | digg it! | reddit! | kick it! | live it!Visual Studio Team Suite vNext "Rosario Express" will be FREE
Auf der MIX-Konferenz in Las Vegas hatte ich die Gelegenheit für eine exklusive Vorstellung im Akquaknox-Restaurant [1] im The Venetian Hotel. Zusammen mit anderen Microsoft Regional Directors und dem neuen Vice President Scott Guthrie durfte ich einen ersten Blick auf die letzten Bits des Visual Studio 2008 Codename "Rosario" werfen. Es handelte es sich hierbei aber nicht um die öffentlich verfügbare CTP-Version [2], sondern um die neue Visual Studio Team System "Rosario Express" Version, die vollständig kostenfrei sein wird.
Die VSTS Express Edition ist auf ein Team von 5 Personen beschränkt und kann nur mit dem TFS Workgroup Edition an einem Standort betrieben werden. Einzige Beschränkung sind maximal 10.000 Work Items pro Solution, mehr werden aber die meisten Projekte onehin nicht brauchen. Die Entscheidung finde ich sehr spannend, insbesondere da die meisten kleinen Teams die Team System Funktionalität sehr wohl benötigen und gut gebrauchen können. Diese Entscheidung wird definitiv zur Verbreitung von Team System beitragen.
Eine öffentliche CTP wird voraussichtlich Ende April verfügbar sein. Vielleicht klappt es noch rechtzeiig zur TeamConf. Aber, wie immer mit den Releases, erstmal abwarten.
[1] http://www.venetian.com/AQUAKNOX.aspx
[2] http://www.microsoft.com/downloads/details.aspx?familyid=8450eff5-24ad-44c3-ab91-1ed88ef2f4f0&displaylang=en
Setting up authentication in asp.net MVC
I wanted to setup user authentication in asp.net MVC, and I wanted it to tie in with the built-in IIdentity and IPrincipal support that is already in asp.net, but I did not want to have to setup asp.net membership services. I wanted to have my own user objects, and I wanted to save/retrieve them through my user repository just like my other domain objects. All of this was done for a demo, so it is certainly not production quality code, but I hope it helps you.
First off I setup my User table in my database, it looks like this:
This is obviously just a start, but it is enough to get the job going. I have dragged this database table onto the Linq To Sql designer and it created my User object like so:
Next in my UserRepository class I have a method that looks like this:
public User GetUserByUsername(string username)
{RecipeZoneDataContext context = ContextFactory.GetRecipeZoneContext();
return (from u in context.Users where u.UserName == username select u).SingleOrDefault();
}
This way when someone tries to login, I can pass their username into this method and it tries to look that user up. You will notice that we use a "SingleOrDefault" method in order to return a single user or "null" in case there is no user by that name. Next I have created a method on my UserController named "Login" that looks like this:
public void Login()
{_viewData.Redirect = Request.QueryString["redirect"];
RenderView("Login", _viewData);}
Here we are looking for a query string parameter named "redirect" that is going to contain a url that we will redirect to upon successful login. We assign this to our UserControllerViewData class and then pass that to RenderView. The UserControllerViewData is just a class that I use to hold view data for most of the actions on my UserController class.
My Login view is then rendered:
<asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
<%= Html.RenderUserControl("~/Views/Shared/ErrorMessages.ascx") %><%using (Html.Form<UserController>(c => c.LoginValidate(RedirectUrl)))
{ %><table>
<tr>
<td>
Username:
</td>
<td>
<%=Html.TextBox("User.UserName")%></td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<%=Html.Password("User.Password")%></td>
</tr>
<tr>
<td>
</td>
<td>
<%=Html.SubmitButton("login", "Login")%></td>
</tr>
</table>
<% } %>
</asp:Content>
Here we are using a few of our Html helper methods. We use the Html.Form helper method in order to create our html form as well as to render our url that the form will post back to. I am using the overload that takes an Expression and then renders the url based on the controller type and method that you call on it in the expression. You can see that we are posting back to a different action called "LoginValidate" and we are passing the "RedirectUrl" as a parameter to it.
The LoginValidate controller action looks like this:
public void LoginValidate(string redirect)
{if (Models.User.ValidateUser(Request.Form["User.UserName"], Request.Form["User.Password"]))
{if (!String.IsNullOrEmpty(redirect) || String.Compare(redirect, "none", true) == 0)
{Response.Redirect(redirect, true);
}
else
{ RedirectToAction("", "");}
}
_viewData.ErrorMessages.Add("Invalid username or password."); RenderView("Login", _viewData);}
First we pass our UserName and Password to our User.ValidateUser method. If the user is validated then we check for a redirect and if one exists then we redirect. Otherwise we redirect to a default controller and action. Here we have entered no defaults, you would want to fill them in. If we don't succeed then we add an error message to the view data and redirect back to our Login action. There is a bit of data we have to put into the web.config first though:
<authentication mode="Forms">
<forms name=".APPNAME" protection="All" cookieless="UseCookies" />
</authentication >
This just sets up our application to use forms authentication, and then sets a few parameters on it. After we have this setup we can now call the ValidateUser method. The ValidateUser method looks like this:
public static bool ValidateUser(string username, string password)
{var userRepository = new UserRepository();
User user = userRepository.GetUserByUsername(username);
if (user == null)
{return false;
}
if (String.Compare(user.Password, password, false) == 0)
{var authTicket = new FormsAuthenticationTicket(1, username, DateTime.Now,
DateTime.Now.AddMinutes(30), true, "");
string cookieContents = FormsAuthentication.Encrypt(authTicket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents)
{Expires = authTicket.Expiration,
Path = FormsAuthentication.FormsCookiePath
};
if (HttpContext.Current != null)
{HttpContext.Current.Response.Cookies.Add(cookie);
}
return true;
}
return false;
}
We pull the user and if it doesn't exist then we immediately return. Then we compare passwords (yes, there is no encryption at this point, like I said, demo) and if they match then we create our authentication ticket. This is part of the forms authentication system and it lets us specify which user is currently logged in. We create a cookie with our data and write it out, then return true. Pretty simple! This saves our username that is logged in, but what about our roles? We need to be able to tell if someone is a normal user or an administrator. In order to do this we have to implement the Application_AuthenticateRequest method in the global.asax file.
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{ HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{ FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
var identity = new GenericIdentity(authTicket.Name, "Forms");
var principal = new CustomPrincipal(identity);
Context.User = principal;
}
}
Here you see how we are pulling the authentication ticket out of the cookie (if it exists) and we are creating a GenericIdentity object (this is because we don't need any additional functionality for our IIdentity class) and then we create an instance of our CustomPrincipal class which is just a class we have created which implements IPrincipal. This interface has the methods for checking roles. In this application I have just put in some simple code to test for roles since I wanted to keep it simple. This class looks like this:
public class CustomPrincipal : IPrincipal
{ public CustomPrincipal(IIdentity identity)
{Identity = identity;
}
public bool IsInRole(string role)
{if (String.Compare(role, "admin", true) == 0)
{return (Identity.Name == "JustinEtheredge");
}
else
{return false;
}
}
public IIdentity Identity
{get; private set;
}
}
As you can see we just check for one role, "admin", and I hardcoded it against my username. I could obviously create a table to manage this, but I have not done so. So, now that we all of this setup, how are we going to use these roles? Well, we are going to create custom ActionFilterAttributes! Of course! I want to be able to protect my controller actions like this:
[UserInRole("Admin")]public void List(int? page)
{_viewData.Users = _userRepository.GetUsers();
RenderView("List", _viewData);}
This UserInRoleAttribute will now make sure that you are authenticated and that you are in the "admin" role before it will let you access this controller action. If you aren't authenticated then it will forward you to the login page with a redirect to send you back to where you came from. This attribute looks like this:
public class UserInRoleAttribute : ActionFilterAttribute
{private readonly string roleName;
public UserInRoleAttribute(string roleName)
{this.roleName = roleName;
}
public override void OnActionExecuting(FilterExecutingContext filterContext)
{if (filterContext.HttpContext.User.IsInRole(roleName)) return;
//use reflection until they expose this method
MethodInfo methodInfo = filterContext.Controller.GetType()
.GetMethod("RedirectToAction",BindingFlags.ExactBinding |
BindingFlags.NonPublic |
BindingFlags.Instance, null,
new[]
{typeof (RouteValueDictionary)
}, null);
methodInfo.Invoke(filterContext.Controller,
new object[]
{new RouteValueDictionary(
new
{controller = "User",
action = "Login",
redirect = filterContext.HttpContext.Request.Url.AbsolutePath
})
});
}
}
This class is actually very simple. The constructor simply takes a roleName and saves it. When the action is called the OnActionExecuting method is called and we simply test the current user to see if they are in the saved role. Otherwise we use some reflection in order to call "RedirectToAction" on the controller class since it is private. Hopefully they will implement this method in the ActionFilterAttribute base class, or they will make it public on the Controller class. But for right now this is the easiest way I could find to call it.
So, what else do we need? Well, we need some way for a user to logout. For this I simply added a Logout action that looks like this:
public void Logout()
{FormsAuthentication.SignOut();
RedirectToAction("List");}
That is all. You just call SignOut and then redirect to whatever action you want. You could also add a redirect parameter here if you wanted, so you could return to whatever page you clicked "logout" on.
So, there you have it. I'm sure that there is something that I am forgetting, but this post is pretty long and I am tired. :) Please let me know if you see anything that I did wrong or could have done differently! I hope you enjoyed it!
How To: Use the XmlDataSource object load XML data to a GridView
Last week I showed you how to read an XML file, load it to a DataSet and assign those values into a GridView. Today I'll show you how you can read an XML file using the XmlDataSource object.
Let's assume that we have an XML file called Symbols.xml in our App_Data folder
that contains the following data
<?xml version="1.0" encoding="utf-8" ?> <Symbols> <Symbol ExecutionSymbol="ATT" Name="AT&T"></Symbol> <Symbol ExecutionSymbol="MSFT" Name="Microsoft"></Symbol> <Symbol ExecutionSymbol="GOOG" Name="Google"></Symbol> <Symbol ExecutionSymbol="CSCO" Name="Cisco"></Symbol> <Symbol ExecutionSymbol="IP" Name="International Paper Co."></Symbol> <Symbol ExecutionSymbol="MF" Name="MF Global"></Symbol> <Symbol ExecutionSymbol="Q" Name="Qwest Communications International Inc."></Symbol> <Symbol ExecutionSymbol="BMC" Name="BMC Software Inc."></Symbol> <Symbol ExecutionSymbol="WCI" Name="WCI Communities Inc."></Symbol> <Symbol ExecutionSymbol="SPY" Name="SDRs"></Symbol> <Symbol ExecutionSymbol="LEH" Name="Lehman Brothers Holdings Inc."></Symbol> <Symbol ExecutionSymbol="XLF" Name="Financial Select Sector SPDR"></Symbol> <Symbol ExecutionSymbol="QQQQ" Name="PowerShares QQQ TR 1"></Symbol> <Symbol ExecutionSymbol="IWM" Name="IShare Rus 2000 INDX"></Symbol> <Symbol ExecutionSymbol="GE" Name="General Electric Co."></Symbol> <Symbol ExecutionSymbol="MER" Name="Merrill Lynch Co., Inc."></Symbol> <Symbol ExecutionSymbol="BAC" Name="Bank of America Corporation"></Symbol> <Symbol ExecutionSymbol="INTC" Name="Intel Corp"></Symbol> <Symbol ExecutionSymbol="F" Name="Ford Motor Co."></Symbol> <Symbol ExecutionSymbol="QID" Name="UltraShort QQQ ProShares"></Symbol> </Symbols>
and we want to load it to a GridView with no server-side code and a quick and easy way. The answer is to use the XmlDataSource object. The XmlDataSource control is an ASP.NET control that allows you to automatically read XML Data and make that data readily available to any ASP.NET control.
To start using this control, go to your Toolbox and drag the XmlDataSource control to your page.
Once the control is on the page it would popup a dialog that has configuration options for our XmlDataSource control. Click the "Configure Data Source" button to configure our XmlDataSource
A popup like below will come up that allows you to select the Xml file you want to your XmlDataSource object to read. It also gives you the option to select the XSL file. You can also specify an XPath expression to use to filter the data in our Xml.
Click the "Browse" button for the "Data File" option to select an XML file.
A new dialog will appear that will let you navigate the folder tree to select your desired XML file
Click "Ok" and you'll be taken back to the "Configure Data Source" screen. Click "Ok" again to finalize the XML data assignment.
Now that we have the file set in to our XmlDataSource control we need assign it to a control. We can do that by dragging a GridView control to our form.
Next, we need to assign the XmlDataSource control as the data source for our GridView. We can do this by selecting our XmlDataSource from the "Choose Data Source" dropdownlist.
Click "XmlDataSource1" and you will notice that our GridView was automatically updated and now shows the contents of our XML file.
Easy huh? Next up, Consuming Web Services in ASP.NET
Wednesday, May 7, 2008
FxCop Now Targeting Speeding
Almost two months ago, at the February Adelaide Geek Dinner, I was expressing my frustration at one of my Visual Studio solutions taking too long to build and how I would like Visual Studio to build using multiple processors just like the new MSBuild /m parameter.
Paul Stovell made the comment that even with the improvement that multi-core builds was giving me, my solution really shouldn't be taking that long to build. Given that Paul wasn't familiar with my particular project layout and I naturally didn't have a copy with me, the conversation quickly went onto other topics.
However, Paul's comment stayed with me for days after, bugging me every time I waited for the latest build to complete. Then, while staring at the VS Output window during a build, I noticed that most of the time seemed to be spent running FxCop on each project.
I decided to rebuild the solution but this time disabling code analysis via the appropriate build switch. I watched the build time drop from 40 seconds to just 10 seconds by skipping the FxCop process.
Excellent! But given that our entire team runs with Option Strict On, Treat Warnings As Errors, and the Code Analysis Check-in Policy, how could I possibly revert to such a lax build process for the sake of decreased build time?
The answer is to disable Code Analysis in each project's settings (and unfortunately the check-in policy too) but leave it enabled in the Team Build script so it runs and gets reported via the continuous integration build that runs after each check-in. Luckily we've also been running with FxCop for so long that we tend to avoid writing code that would cause violations in the first place.
I met with Paul over the weekend and mentioned my success with better build times. When I told him I had been running FxCop with every build, he just laughed, amazed.
Juggle.com
Well, I can finally start releasing the name of our product / company / web site since 1 - we are officially expanding the team and hiring more people, 2 - the placeholder page is up at juggle.com, and 3 - the CEO accidentally updated her LinkedIn profile two weeks ago. Oops. But I can't tell you what we are building yet.
Hey, here is a good way to find out. Join the company!
Hiring in St. Louis
We are a small web development group looking to expand our team. Plain and simple, we are looking for great developers. We are focused on finding people who have a passion for development and are excited to be part of a team that is developing a leading semantic web application. There's no Ruby, Java or PHP here… Microsoft only.
You will be working in a fast paced environment that deals with a lot of Web 2.0 (I really hate that term) technology. We value team members who make the internet a part of their lives, not just a place they send their hard work for other people to use. Here's a quick test. Which search engine just threw in the towel? What do Alex and Kevin sit on? What's the point of Twitter? What should manager Rob write himself?
What to expect from our environment?
We have one core rule: Create great software. There is no team of red tape police who have locked down your workstation and blocked 50% of the sites on the internet. No crazy rules about reading blogs or blocking IM.
Each Monday we start a new development iteration where you will commit to the amount of work you can get done for the week. Thursday's are code reviews, so no sneaking in a DataSet to get the job done quick. Friday's are iteration review meeting day where you will demo what you finished during the week. And every morning is a quick standup meeting.
Qualifications:
- You should know C# or VB.NET (but you will be using C#), ASP.NET 2.0 or higher and SQL Server 2005.
- It would be helpful if you also knew AJAX and how to write unit tests.
- It would be really great if you already knew CSLA or ComponentArt.
The Joel Test results: 11 out of 12.
- Do you use source control? (YES)
- Can you make a build in one step? (YES)
- Do you make daily builds? (YES+) We believe in continuous integration. No breaking the build.
- Do you have a bug database? (YES)
- Do you fix bugs before writing new code? (YES)
- Do you have an up-to-date schedule? (YES)
- Do you have a spec? (YES)
- Do programmers have quiet working conditions? (NO) You will be working in an open area with 4 other developers.
- Do you use the best tools money can buy? (YES)
- Do you have testers? (YES)
- Do new candidates write code during their interview? (YES)
- Do you do hallway usability testing? (YES)
Still interested even after #11? Then send me an e-mail using the contact form or scott.kuhl@juggle.com.
Technorati Tags: hiring,st. louis,asp.net,juggle.comDynamic lookup
A while back Charlie Calvert and Mads Torgersen wrote about dynamic lookup being part of the plans for C# 4.0. A code block specified with the "dynamic" key word will allow dynamic lookup with syntax like follows:
static void Main(string[] args) { dynamic { object myDynamicObject = GetDynamicObject(); myDynamicObject.SomeMethod(); // call a method myDynamicObject.someString = "value"; // Set a field myDynamicObject[0] = 25; // Access an indexer } } While this is a welcome feature I want it now! Of course I could resort to reflection but it gets tiresome writing all the code needed just to get a simple field or property so I made a little library that lets me write the previous example as follows:
static void Main(string[] args) { dynamic { object myDynamicObject = GetDynamicObject(); myDynamicObject.Member("SomeMethod").Call(); // call a method myDynamicObject.Member("someString").Set("value").Call(); // Set a field myDynamicObject.Member("Item")[0].Set(25).Call(); // Access an indexer } }
This also allows me to access private, protected or internal members of objects and on top of that it can compile functions for invoking the member on several instances of the same type.
I provide the code here but I'm sure there are several bugs in it so please don't use it in your applications as is. Actually please don't use it for anything like that without asking permission first...
#region Using Directives using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Globalization; using System.Reflection.Emit;
Interactive MAD Fold-ins - coolness
This is awesome, and has nothing to do with tech(found via twitter):
Interactive MAD magazine fold-ins from the sixties to today.
ProfileCommon in WebApps fixed quite easily with no addins required
In my previous post, I was sort of happy to see an update for WebProfile for use in VS08. The thing is, I really dislike the error you get in the build with this approach, I just can't use that in a production environment. So... I did some more digging and came across this solution by Jon Galloway. You should read his article for a full explanation of what is going on.
His samples are in C# which is great, but there are some caveats to doing it in VB.
Here is the same code in VB:
Public Class UserProfile Inherits ProfileBase Public Shared Function GetUserProfile(ByVal username As String) As UserProfile Return CType(Create(username), ProfileBase) End Function Public Shared Function GetUserProfile() As UserProfile Return CType(Create(Membership.GetUser().UserName), ProfileBase) End Function <SettingsAllowAnonymous(False)> _ Public Property Description() As String Get Return TryCast(MyBase.GetPropertyValue("Description"), String) End Get Set(ByVal value As String) MyBase.SetPropertyValue("Description", value) End Set End Property <SettingsAllowAnonymous(False)> _ Public Property Location() As String Get Return TryCast(MyBase.GetPropertyValue("Location"), String) End Get Set(ByVal value As String) MyBase.SetPropertyValue("Location", value) End Set End Property <SettingsAllowAnonymous(False)> _ Public Property FavoriteMovie() As Integer Get Return CInt(MyBase.GetPropertyValue("FavoriteMovie")) End Get Set(ByVal value As Integer) MyBase.SetPropertyValue("FavoriteMovie", value) End Set End Property End Class When using this approach in VB, I still get some occasional errors in the designer when using SplitView, a recompile makes these go away and the code does indeed run fine. It seems to be something in the background compiler... I wish Microsoft would fix this silly 4 year old bug.
Anyway, I really like this approach MUCH better than placing the profile data in web.config. If you are relying on the code and some genius decides to add a field or change the name it will cause any dependent code to go haywire anyway when the CodeSpit is regenerated.
When I am controlling the Fields in Code (where it should be anyway...) That is not a major concern since we know what we are doing when the code changes and its not in an editable file by someone not actually Testing the code.
Therefore, all the other methods have many problems that just aren't worth dealing with when this is simple, elegant, effective and safe.
I also find it much easier to just use an instance rather than some other suggestions of using a Property in a BasePage.
i.e
Dim prof = UserProfile.GetUserProfile()
or
Dim prof = UserProfile.GetUserProfile(username)
I also found that turning off Automatic updates seems to help with the errors for some reason, with it turned off, I don't seem to get them any more and thus you need to do your saves with an instance or you will have to perform a save after changing any item since getuserprofile will overwrite any unwritten changes to the object because it is creating a new instance every time.
So my resulting web.config looks like this:
<profile automaticSaveEnabled="false"
enabled="true"
inherits="ProfileUtility.UserProfile">
This is for the Default Provider, if you use Custom Provider as well, use the following:
<profile defaultProvider="<YourProviderName>"
automaticSaveEnabled="false"
enabled="true"
inherits="MonetaModel.UserProfile">
IE8 will be the only browser not to support opacity
I recently blogged about that IE8 beta1 currently doesn't have any support for the CSS3 opacity property or the alpha filters that is used in IE5.5/IE6/IE7. Microsoft had noted in one of their whitepapers that they would plan on adding some CSS3 support based on customer feedback. The lack of opacity is one of the most requested features in their bug tracking system, so natually I figured that they were going to add opacity to a future beta.
However, this week the IE team wrote that they are NOT going to include this in IE8 but will consider it for a future version.
This would make IE8 the only browser to not support any form of opacity, and "break" A LOT of exisiting websites, tools etc. that rely on this (including several of Microsoft's own websites and API's). I'm flabbergasted.
If you as me think this is wrong, go and sign up for the IE8 beta program and vote and comment on this issue.
Click here to sign up for the IE8 beta program. Afterwards you should be able to see, vote and comment on the opacity bug entry:
https://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=331735
Semantic Web in the news
In scanning new Semantic Web news, I'll be looking out for re-use of data. The momentum around Linked Open Data is great and exciting -- let us also make sure we make good use of the data.
Saved By: James Kim | View Details | Give Thanks
Tags: Semantic Web, Tim Berners-Lee, mashup, re-use of data, Web of data
Book: Fructose ‘missing link’ in obesity epidemic
GAINESVILLE, Fla. — Could the simple sugar responsible for putting the sweet in everything from bananas to root beer be the missing link in understanding what puts the fat on a person’s thighs? Yes, according to a book penned by a University of Florida researcher that was published today.
In his book, “The Sugar Fix: The High-Fructose Fallout That Is Making You Fat And Sick,” Dr. Richard Johnson reviews the increasing evidence that fructose may play a role in the obesity epidemic and proposes a low-fructose diet he believes could help people lose weight and potentially prevent diabetes and cardiovascular disease.
“We recognize that obesity has multiple causes, including eating too much and exercising too little, but we think a missing piece of the obesity puzzle is fructose intake,” said Johnson, the J. Robert Cade professor of medicine and chief of the division of nephrology, hypertension and transplantation in the UF College of Medicine. “It’s not fructose itself that is the problem, but eating too much of it.”
Americans consume nearly three times as much fructose as a century ago, Johnson said. Although the major source of fructose is soft drinks, it’s found in a variety of foods such as fruit, juice, sweetened cereals and pastries.
“We think fructose makes you obese not simply by the calories it provides but because it also tricks hormonal systems that control appetite,” Johnson said. “You don’t get a sense of being full so you keep eating. It (fructose) may also be important in the development of diabetes, kidney disease and heart disease.
“An additional problem is that the more fructose you eat, the more sensitive you become to it,” Johnson said. “If you want to have success losing weight, you have to cut out fructose for two weeks. At that point you are no longer as sensitive and you can resume a low-fructose diet with ease.”
Johnson’s book, which was published by Rodale, contains a diet he developed with nutritionist and dietitian Elizabeth Gollub, as well as tables listing the fructose contents of common foods. Fructose content is not found on most labels.
Unlike other low-carbohydrate diets, which require dieters to reduce all carbs, Johnson’s plan targets fructose. Starchy foods like potatoes and rice aren’t a no-no as in low-carb diets. And after the first two weeks, dieters can resume eating fruit and having treats such as cake in moderation.
“Most people are used to eating about 50 percent of their diet as carbohydrates,” Johnson said “When you cut it way back and have a very high-protein, high-fat diet, it’s very hard to sustain. It’s also not necessarily healthy. What’s great about our diet is we can maintain a normal carbohydrate-protein-fat balance, and when you do that, the diet is much easier to sustain.”
Johnson became interested in fructose while studying hypertension. He and his colleagues discovered that uric acid increased blood pressure in animals and that ingesting fructose seemed to spur production of uric acid. Reducing uric acid in these animals helped control blood pressure and other problems such as pre-diabetes.
“The effect of fructose to cause pre-diabetes and raise blood pressure may be more important than its effects to increase weight,” Johnson said. “Our studies suggest that, even if one can control one’s weight, that excessive intake of fructose may increase the risk for high blood pressure and diabetes. Going on a low-fructose diet will have benefits above and beyond losing weight.”
The research in Johnson’s book came from studies in his own lab as well as from other scientists studying fructose in cells, animals and humans at other institutions, he said.
He also reviews the history of fructose consumption, comparing it with the rise of obesity. The two histories mirror each other, he writes.
Although fructose consumption was already on the rise when high-fructose corn syrup was invented, the introduction of this sweetener in the late 1960s accelerated the increase. High-fructose corn syrup contains about as much fructose as table sugar but is cheaper to produce, leading companies to produce bigger portions of sweets and soft drinks for the same price, Johnson said.
Today, Americans eat 30 percent more fructose than they did in the 1970s and three times as much as in 1900, when the obesity rate was 5 percent, Johnson said. About 33 percent of adults are now overweight or obese, according to the Centers for Disease Control and Prevention.
“After reading this book I found myself looking more carefully at labels, looking specifically for high-fructose corn syrup,” said Dr. Andrew Whelton, an adjunct professor of medicine and the former director of clinical nephrology at Johns Hopkins University. “I was amazed to see it so often.
“Although this book was put together for a lay audience, I thought it would be useful for health-care providers, particularly for anyone who deals with issues of obesity and diabetes.”
Scientists: New technique identifies molecular ‘biomarkers’ for disease
GAINESVILLE, Fla. — University of Florida chemists are the first to use a new tool to identify the molecular signatures of serious diseases — without any previous knowledge of what these microscopic signatures or “biomarkers” should look like.
Reported this month in the online edition of the Journal of Proteome Research, the advance could one day lead to earlier detection and improved treatment of some types of cancer as well as other diseases.
“With many diseases, the problem has been that we really don’t know what to look for,” said Weihong Tan, a professor of chemistry and the lead author of the paper. “What we’ve done is create a technique to identify the biomarkers despite that limitation.”
Doctors often diagnose cancer and other diseases based on the appearance of a tumor or a patient’s symptoms. While such traditional methods can be effective, they sometimes identify a disease only after it is established. For example, clinicians may get tipped off to the presence of lung cancer — which kills more people than any other type of cancer — based on visible images of a tumor that appear on radiological exams of a patient’s lungs.
Because earlier detection typically improves outcomes, doctors would like to spot disease at the molecular level, before it grows or spreads and manifests itself in more obvious and harmful ways. Given that diseased cells’ molecular structures differ from those of healthy ones, that approach should be possible, and researchers have had some success finding such “biomarkers” using antibodies, Tan said. But despite years of research, biomarkers for most diseases remain elusive or unreliable, he said.
His group turned to “aptamers,” single-strand chains of DNA or RNA that recognize and bind to target protein molecules, as a new tool. His paper reports the first-ever successful use of the aptamers to discover a molecular biomarker — in this case, one for leukemia.
Tan said his group used cell-SELEX, a process his group developed and patented.
Researchers create trillions of different varieties of aptamers in a solution. They then immerse cells known to carry the sought-after disease in the solution. After an incubation period, they rinse the cells.
The vast majority of the aptamers wash away, but those with stronger molecular affinity for the diseased cells remain. The researchers repeat the process several times, eventually shrinking the pool of aptamers to as few as 10 to 25 very strongly attached aptamers — those most closely associated with the diseased cells. Analysis then reveals these aptamers’ molecular structure, as well as the molecular structure of the cells’ biomarkers they bind to.
“As long as the molecules in question are expressed in a substantially different way on diseased and normal cells, they can be identified,” Tan said.
Rebecca Sutphen, associate professor and director of the Genetic Counseling & Testing Service at the H. Lee Moffitt Cancer Center & Research Institute in Tampa, said improved diagnosis may not be the only application of the research.
“The opportunity to identify cancer cell-specific biomarkers and potentially detect small numbers of cancer cells has many potential clinical applications, including disease detection, better imaging of tumors and even potential application for stem cells,” she said.
Other biomarkers have been found for leukemia, but none is particularly reliable, Tan said. Tan and his colleagues reported using aptamers to recognize cancer cells in a 2006 paper in the Proceedings of the National Academy of Sciences. Tan said the latest paper advances that work by revealing the target biomarkers the selected aptamers recognize, Tan said. These targets will form a molecular foundation in understanding diseases, he said.
“In 2006, we did not know what the aptamer recognized on the cancer cell surface,” he said. “In this current work, we report discovering these biomarkers, which then form the molecular foundation for us to understand the cancer and to prepare different molecular tools for molecular medicine.”
Tan said the research is particularly promising because aptamers are relatively easy and inexpensive to manufacture compared with antibodies. “This offers the potential for wider application,” he said, adding that aptamers could one day be used not only to detect disease, but also to ferry therapeutic agents to diseased cells.
The research was funded in part with two grants from the National Institutes of Health. It was also funded with two grants from Florida’s Bankhead-Coley Cancer Research Program and one grant from the State of Florida Center of Excellence in Bio/nano sensors.
The paper’s co-authors are Dihua Shangguan, Zehui Cao, Ling Meng, Prabodhika Mallikaratchy, Kwame Sefah, Hui Wang and Ying Li.
UF family finance expert gives top 10 ‘What Not to Do’ list for taxpayers
GAINESVILLE, Fla. — Tax season is one of the most stressful times of the year. And a University of Florida expert cautions against making common mistakes that can complicate matters as we go about accounting for our income with the federal government.
So Michael Gutter, an assistant professor in family financial management with UF’s Institute of Food and Agricultural Sciences, has compiled a list of Americans’ top 10 tax-season gaffes.
1. Not making use of VITA (Volunteer Income Tax Assistance) sites. If your taxes aren’t terribly complicated–you don’t own a business or have a lot of investment income to report–then VITA is an underused resource worth checking out.
“That’s the first thing I would tell people, is to make use of those sites. They have a lot of oversight by state regulatory agencies and the IRS and they’re audited internally before tax forms are sent up and approved and they’re e-filed for free,” he said. “It’s a free service, done by people who literally work with tax code day in and day out.”
Check with your local county extension office or the Florida Prosperity Campaign, www.prosperitycampaign.com, to find your closest VITA site.
2. Not keeping organized records and missing deductions or credits you deserve.
Gutter said taxpayers should keep in mind that the tax code is designed to promote and encourage good-citizen type behavior: Getting an education, taking care of your children, buying a home, giving to charity, etc.
“There are so many opportunities for people to try and save legitimately between deductions and credits,” he said. “A tax credit is a dollar for dollar reduction in your tax liability, so by not taking advantage of it, you’re really giving away your own money.”
3. Not using your kids to your best (tax-saving) advantage.
If you have children, Gutter said, a number of tax credits might be relevant for you. If you have college-age offspring, there are even more.
Go to www.irs.gov and search “education tax credit.”
4. Not realizing that if you’re struggling financially, you might be eligible for the Earned Income Tax Credit, a credit for low-income workers. Even if your income isn’t high enough to require a tax return, you can still get the credit.
Go to www.irs.gov and type “Earned Income Tax Credit” in the search box.
5. Spending your tax-refund windfall instead of filling out IRS Form 8888. The 2-year-old form can be used to automatically funnel your tax refund into one or more accounts, such as a savings account or an IRA or other safe place where you won’t be tempted to spend it on an impulse item.
Go to www.form8888.org
“It helps people with the self-control issue that we all have with money,” Gutter said. “It burns a hole in everyone’s pocket, it just depends on what temperature it burns in your pocket and how fast.”
He advises taxpayers to use tax refunds sensibly: Reduce debt first, put money toward retirement or pay bills.
6. Not realizing you can go back and amend previous years’ returns.
If you find this year that you haven’t been taking a tax deduction you’re legitimately eligible for, Gutter says, it’s perfectly acceptable to go back and file amended returns for those years.
7. Buying into the hype over speedy refund anticipation loans.
Unless you are in a true financial emergency, tax refund anticipation loans are “not typically in people’s best interest,” Gutter said.
The loans are similar to paycheck advance loans, he said. The “refund” you get is generally the refund you would have gotten if you’d waited–minus a fee or interest.
8. Not realizing you can make IRA contributions for the previous year up until tax filing day.
So until April 15, 2008, you can contribute to your IRA for tax year 2007.
9. Delaying filing a return without a good reason.
This just leaves your refund in the government’s hands when it could be accruing interest for you, Gutter said. There are some instances where it might make sense to sit on one’s tax return until the last minute–such as waiting to pay Uncle Sam if you still owe taxes, as a way to keep the money working for you until the last moment.
10. Breaking the law by lying on your taxes or not filing a return at all.
“We always tell people, even if you owe the IRS money, work on it–you’re not going to get away with this for very long,” he said. “And if you don’t know how to file your taxes, get some help. But not filing is not in your best interest.”
Economy slows Florida population growth to lowest level in 30 years
GAINESVILLE, Fla. — The bursting of Florida’s housing bubble and overall economy has also let the air out of the state’s famed population growth, which has shrunk to its lowest levels in three decades, according to the latest projections from the University of Florida.
“A tremendous slowdown is forecast over the next few years compared to what we’ve experienced during the last five years,” said Stan Smith, director of UF’s Bureau of Economic and Business Research. “The state has not experienced a decline of this magnitude since the mid-’70s, when we were in a national recession.”
The Sunshine State is expected to add an average of only about 209,000 residents a year between 2007 and 2010, compared with annual increases of about 418,000 people between 2002 and 2006, he said.
Although Florida remains a major destination for retirees, far more young and middle-aged people move into the state to find work than their older counterparts arrive to retire, Smith said. But declining job opportunities have stanched the influx of younger people, he said.
“The vast majority of Florida’s population growth is due to migration, and during a recession the rate of job creation slows down in Florida,” he said.
The biggest group moving to the state during the last four or five decades has typically been those in their 20s and 30s, with those 65 and older accounting for only about 15 percent of in-migration, Smith said. But younger people in their 20s and 30s also make up the biggest share of those leaving the state, which is why Florida became the nation’s oldest state after World War II, he said.
Robust real estate markets and burgeoning construction fueled Florida’s growth from 2002 to 2006, just as it did during the boom years of 1971 to 1974, Smith said. In turn, the housing market’s decline dramatically curbed population growth after 2006, just as a national recession in the ’70s sharply limited expansion between 1974 and 1977, he said.
Another reason growth typically slows during a recession in addition to the availability of fewer jobs is that people have difficulty selling their houses, which delays their move, he said.
“We’ve certainly seen a slowdown in economic growth nationally, and it’s even possible we may be in a recession right now, although we won’t know for sure until later this year,” he said.
Projections call for Florida’s population to return to more normal growth levels of about 317,000 a year between 2010 and 2020, similar to the 1980s and 1990s, Smith said. Although there also was a slowdown in growth during recessions in the 1980s and 1990s, it was nowhere near the steep decline of the 1970s or that which is taking place now, he said.
“It’s really sort of a boom-and-bust pattern that we have seen in Florida,” Smith said. “The years between 2002 and 2006 were the biggest in terms of absolute increases since the early ’70s, and then just as we experienced in the ’70s we are going from a period of high- to low-growth numbers.”
The county projected to grow the fastest in percentage terms between 2007 and 2010, Lafayette in Florida’s Big Bend, is something of an anomaly because it owes its top spot to prison construction, Smith said. It is predicted to grow from 8,215 in 2007 to 9,200 in 2010, he said.
Otherwise, many of the high-growth counties are the same as in past years, he said.
Flagler, which was the fastest-growing county between 2000 and 2007, jumping from 49,832 to an estimated 93,568, is expected to continue to expand at a rapid rate, to 103,500 by 2010, Smith said. Its coastal location, proximity to Jacksonville and relatively low cost of living, as well as the presence of the large Palm Coast development, contribute to its high ranking, he said.
Other rapidly growing counties are Sumter, which owes its surge in part to prison expansion and the increasing number of residents at The Villages retirement community, and Osceola County, which receives spillover from nearby Orlando.
In terms of absolute numbers, the counties expected to make the biggest gains between 2007 and 2010 are Miami-Dade, from 2,462,292 to 2,512,300; followed by Orange, from 1,105,603 to 1,154,200; and Hillsborough, from 1,192,861 to 1,234,900.