text:
Infinities Loop
ASP.NET and .NET from a new perspective
Minecrafter: The Minecraft Companion App for Windows Phone 7
StackUnderflow.js: A JavaScript Library and Mashup Tool for StackExchange
StackUnderflow.js is a JavaScript library that lets you retrieve – and render – questions from the StackExchange API directly on your website just by including a simple, lightweight .js script.
VSNewFile: A Visual Studio Addin to More Easily Add New Items to a Project
My first Visual Studio Add-in! Creating add-ins is pretty simple, once you get used to the CommandBar model it is using, which is apparently a general Office suite extensibility mechanism.
Tokenizing JavaScript - A look at what's left after minification
Join the Dark Side of Visual Studio 2010
Hard to believe it's been so long, but it was almost 4 years ago when I published Join the Dark Side of Visual Studio. That was when a lot of people were still using VS2003, and importing and exporting environment settings required a custom add-in, VSStyler, which has since fallen off the planet and is hard to find (link, anyone? Let me know). Three versions of VS later, and I'm still using and loving the dark side. Pleased, I am (haha). In fact, that article for one reason or another is still one of my most popular blog entries, thanks in part to a link from Scott Hanselman and a commenter on Coding Horror. I will point out selfishly that my article predates both of these :) But, yes, it's sad when one of your top referrers is from a link in a comment on another blog. Not even the first comment, either.
ASP.NET 4.0 ScriptManager Improvements
.NET Framework 4 Beta 2 has been out for a little while now. There are some subtle improvements to the ScriptManager control in ASP.NET 4.0 that few have picked up on yet. Allow me to introduce you to them! First, let me say that this is strictly about features in the server-side ASP.NET ScriptManager control, not the Ajax library in general. Also – if you do not use the ASP.NET Ajax library but you are a WebForms developer, I assume you, this article is still for you!
EnableCdn? Yes please.
This one has been blogged about by ScottGu already, but for completeness, here it is. The ASP.NET Ajax scripts are now hosted in a Microsoft CDN, and you can tell ScriptManager to load them from there by simply enabling this property. For virtually no work you get better performance, less bandwidth usage, and a cleaner rendering due to those ScriptResource.axd urls going away from your HTML. Do read the linked post for details. But wait, there's more!
What has not really been blogged about is this: The EnableCdn property isn't only for ASP.NET Ajax scripts. Even the scripts in System.Web.dll are on the CDN. So if you are using a GridView, TreeView, or Validators, for example – those scripts will load from the CDN, too. It wouldn't have been the best experience if only only some scripts were affected by this setting, right?
But what if you are using custom scripts, or 3rd party controls? How would that work? Here's how.
Normally, when you embed a script within an assembly for use by a WebForm (either via ScriptManager or the classic GetWebResourceUrl and RegisterScriptResource APIs), you have to define a WebResourceAttribute for it, which allows it to be accessed via the WebResource.axd or ScriptResource.axd handlers:
[assembly: WebResource("Foo.js", "application/x-javascript")]
Now, there's a new property on WebResourceAttribute: CdnPath. Don't get too caught up on the fact it's a hard coded url. More on that later.
[assembly: WebResource("Foo.js", "application/x-javascript", CdnPath = "http://foo.com/foo/bar/foo.js")]
ScriptManager looks for this property when the EnableCdn property is set to true, and simply uses that path instead of the ScriptResource.axd path to the assembly resource. Pretty simple. And this means that you too can provide your own CDN paths for your own assembly resource scripts. As for where to host your script, well, that's up to you.
ScriptManager does some interesting and useful things, like: script combining, serving scripts from assemblies, script localization, script globalization, removing of duplicate references, automatic switching between debug and release scripts, and now automatic switching to a CDN. Trouble is, it comes with a bit of a tax: It always includes the Microsoft Ajax library (MicrosoftAjax.js), and by default, MicrosoftAjaxWebForms.js (for partial rendering support with UpdatePanel). The partial rendering script could be removed by setting EnablePartialRendering=false, but there was no way to disable MicrosoftAjax.js. So if you wanted to use the useful features of ScriptManager without using MicrosoftAjax.js, well, you couldn't (although Bertrand once blogged a way of hacking it by making use of it's de-duping process).
The AjaxFrameworkMode property adds two new modes to ScriptManager's behavior. Enabled (the default, and the same behavior as before), Explicit (does not include any scripts by default but still assumes Microsoft Ajax is to be utilized), and Disabled (does not include any scripts by default and does not assume Microsoft Ajax will be used).
So here I have a ScriptManager that is including a custom script, without also loading MicrosoftAjax.js or any of the inline script it normally produces.
<asp:ScriptManager runat="server" AjaxFrameworkMode="Disabled">
<asp:ScriptReference Path="~/scripts/foo.js" />
- MicrosoftAjaxCore.js (contains the type system like registerClass)
- MicrosoftAjaxComponentModel.js (contains Sys.Application, Sys.Component, Sys.UI.Control, as well as DomEvent for event abstraction and DomElement helpers)
- MicrosoftAjaxNetwork.js (contains WebRequest and WebRequestManager related classes)
- MicrosoftAjaxWebServices.js (contains WebServiceProxy and is used to talk to asmx and wcf services, or any service that can serve JSON)
- *MicrosoftAjaxApplicationServices.js (talks to the Profile, Role, and Authentication services)
- MicrosoftAjaxSerialization.js (contains the JavaScriptSerializer class)
- MicrosoftAjaxHistory.js (contains extensions to Sys.Application to add client-side history management support)
- MicrosoftAjaxGlobalization.js (contains formatting and parsing logic for culture-aware Date, Number, String conversion)
MicrosoftAjax.js still exists, too, which is now considered a composite script of all these scripts. The one (*) exception is that MicrosoftAjaxApplicationServices.js is now its own script, not part of MicrosoftAjax.js, and so must be included explicitly even if you don't use Explicit mode and you want to use any of the application services.
Keep in mind when using this mode that you are "on your own" with determining which parts of the framework you need. This is strictly for those of you who want to lower the footprint of your pages by a little bit. MicrosoftAjax.js in ASP.NET 4.0 is somewhere around 98kb, which is gzipped when served, which takes it down into the 30kb range (numbers from memory – and by the way, these numbers are lower in the recently announced ASP.NET Ajax Beta release on CodePlex by the CodePlex foundation). By comparison, jQuery is something like 20kb once gzipped. So it's not going to make a big difference, but every bit counts! You can use the existing CompositeScript feature of ScriptManager to include the separate parts of the framework and yet still have them served as a single script.
Oh – yes, these scripts are all also on the CDN and work with EnableCdn, of course.
Replacing System.Web Scripts
When a script component on the page requires an ajax script, it implements the IScriptControl interface, which allows it to tell ScriptManager what scripts it requires. Typically a component will ship with its scripts embedded in its own assembly. In previous versions, you could use a statically declared ScriptReference to override the script used by that component. For example, if a component used the 'Foo.js' resource from the 'CustomControls' assembly, you could replace the resource based script reference with a static (and possibly, customized) copy like so:
<asp:ScriptManager runat="server">
<asp:ScriptReference Name="Foo.js" Assembly="CustomControls"
Path="~/scripts/customfoo.js" />
(In red to indicate this is not a new feature)
One problem with this feature was that it only worked for scripts that were registered via ScriptReferences or through the IScriptControl interface. But some components still use ClientScript.RegisterClientScriptResource or ScriptManager.RegisterClientScriptResource. The controls in System.Web for example, like the TreeView, GridView, etc. If you wanted to replace one of those scripts with a static copy, you couldn't (actually for System.Web scripts there was a way, but as a legacy feature I won't go into). Now in 4.0, you can. So for example – if you find a bug in WebUIValidation.js for a Validator control in System.Web, or there's just something about it you don't like – or even, you want to customize it for some reason, just override the reference:
<asp:ScriptManager runat="server">
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web"
Path="~/scripts/customWebUIValidation.js" />
An interesting benefit to this is that it is now possible to ScriptManager's CompositeScript capabilities to combine System.Web scripts! If you are using a GridView and a Validator, for example, you will by default get two WebResource.axd's to Gridview.js and WebUIValidation.js. Most likely you will also get WebForms.js which has some postback logic in it. Now you can combine them into one:
<asp:ScriptManager runat="server">
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" />
Now, that is still going to render as an 'AXD' script -- to ScriptResource.axd. The scripts still live in an assembly, after all. But a feature you probably didn't know about with CompositeScripts (and has been there since ASP.NET 3.5 SP1) is that you can point them at static paths just like regular ScriptReferences. For ultimate in performance and a clean HTML rendering, you can not only combine all those scripts into one, but have them referenced via a simple static script block too. No more 'AXD' with a long, encrypted query string.
<asp:ScriptManager runat="server">
<CompositeScript Path="~/scripts/combined.js">
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" />
Simple Assembly Names
A small but welcomed addition. Previously, if you wanted to reference a script embedded in an assembly via a static script reference, you had to include the full assembly name in the 'assembly' attribute. If the assembly is a strong named one, that meant including the fully qualified named, including the publicKeyToken which you undoubtedly would have to lookup somewhere (although I have a friend who has memorized his company's publicKeyToken! LOL). Something like this:
<asp:ScriptManager runat="server">
<asp:ScriptReference Name="Foo.js"
Assembly="CustomAssembly, Version=22.214.171.124, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
Now you can just use simple assembly name. The caveat to this is you do at least need to have the assembly in your bin, or it must be referenced in the <assemblies> section of your web.config. Otherwise, the simple name could be ambiguous to multiple versions in the GAC. In the previous example, notice I used only 'System.Web' when overriding WebUIValidation.
<asp:ScriptManager runat="server">
<asp:ScriptReference Name="Foo.js" Assembly="CustomAssembly" />
This is definitely my favorite new feature, so I saved it for last. Normally, ScriptManager determines where to get a script from by looking at the Name, Assembly, and Path properties. Name and Assembly go together to indicate an embedded resource in the assembly, and Path is just a path to a static script in your application. Since the beginning, you could override an assembly-based reference with a path-based reference. For example, to get MicrosoftAjax.js to load from a path in your site rather than from an assembly, you could declare a script reference like so:
<asp:ScriptManager runat="server">
<asp:ScriptReference Name="MicrosoftAjax.js" Path="~/scripts/MicrosoftAjax.js" />
The assembly is assumed to be System.Web.Extensions if not specified. With this script reference, now even if script controls on the page registered a requirement for MicrosoftAjax.js, this one would be recognized as the same script thanks to the Name being the same. A static reference on ScriptManager trumps all, so your custom path wins, thus replacing the assembly reference with a path one (and worth noting – it still supports auto switching to the debug version and to localized versions).
Great – there are some problems to consider:
- What if I want every page in my app to do this? If you're using a Master Page, you may only have a few ScriptManager's to deal with, so that may not be so bad. But even then, there's a maintenance factor here.
- What if I am using a 3rd party component and it does not define a CdnPath? Is there any way to make it work with EnableCdn if I can host it somewhere myself?
- What if I want to change which CDN is used for a particular resource (remember, we hard coded the path earlier)?
- How can I get the benefits of automatically switching between debug and release scripts for a non assembly-based resource?
- How can I get the benefits of automatically switching between debug and release scripts for a script like jQuery that does not use the ".debug.js" naming convention?
To be fair, #4 was already possible by explicitly setting the ScriptMode property on the script reference – but we'll see a better way now.
ScriptResourceMapping to the rescue. Think of ScriptResourceMapping as a static/global location into which you can describe all the details about a particular script resource: a logical name for the script, it's debug and release locations, what assembly it lives in (if any), and what it's debug and release CDN paths are. With all that information, ScriptManager can make smarter choices about how to handle a script reference and makes your life easier.
For example, let's say you want to include jQuery via a ScriptReference.
<asp:ScriptManager runat="server">
<asp:ScriptReference Path="~/scripts/jQuery-1.3.2.js" />
But wait – what about jQuery-1.3.2.min.js? You should definitely be using the minimized version in production. But in a debugging environment, it's better to use the non-minimized version so if you ever need to step into jQuery code, you can actually understand what is going on.
And what about EnableCdn? That's not going to work with this since ScriptManager doesn't know about this script. It's just some script in your project. Yes, you could just put the full 'http://...' path in there. But having to remember that path every time you need it is not very nice.
No problem – we'll just create a mapping that fully describes the resource. Mappings are static, so let's create them from the Application_Start event in Global.asax:
void Application_Start(object sender, EventArgs e) {
// map a simple name to a path
ScriptManager.ScriptResourceMapping.AddDefinition("jQuery", new ScriptResourceDefinition {
Path = "~/scripts/jquery-1.3.2.min.js",
DebugPath = "~/scripts/jquery-1.3.2.js",
CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.min.js",
CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.js"
Three big wins here.
- Now I can simply reference jQuery by name, just like MicrosoftAjax.js (only I don't even need the '.js' part).
- Because ScriptManager knows the path to jQuery's release and debug versions, it switches automatically just like it does for MicrosoftAjax.js.
- Because ScriptManager knows jQuery's CdnPath, the EnableCdn feature will toggle using it on/off just like it does for MicrosoftAjax.js.
Using this mapping is simple – just reference the script by name:
<asp:ScriptManager runat="server">
<asp:ScriptReference Name="jQuery" />
Beautiful. You can use this to redefine the CdnPath for an existing script, too. For example, say you don't like the fact that MicrosoftAjax.js loads from the ajax.microsoft.com Cdn. Or, say you are using some 3rd party controls, and they don't define a CdnPath, but you happen to know of one that uses it (or even, the 3rd party published a Cdn after they shipped the product). Just create a mapping and set the CdnPath. Done. For the entire application.
But wait, there's even more. The jQuery example shows how you can map a simple name to a static script. But a script resource mapping can also be used to map a name to an assembly resource.
// map a simple name to an assembly
ScriptManager.ScriptResourceMapping.AddDefinition("Foo", new ScriptResourceDefinition {
ResourceName = "FooResource.js",
ResourceAssembly = MyAssembly
Or, map an existing assembly resource to a static path.
// map assembly resource to a path
ScriptManager.ScriptResourceMapping.AddDefinition("SomeScript.js", SomeAssembly,
new ScriptResourceDefinition {
ResourceName = "SomeScript.js",
ResourceAssembly = SomeAssembly,
DebugPath = "~/scripts/somescript.debug.js",
Path = "~/scripts/somescript.js"
Or, map an existing assembly resource to a different assembly resource.
// map an assembly resource to another assembly resource
ScriptManager.ScriptResourceMapping.AddDefinition("SomeScript.js", SomeAssembly,
new ScriptResourceDefinition {
ResourceName = "SomeOtherScript.js",
ResourceAssembly = MyAssembly
Don't forget you can also use this to change where the MicrosoftAjax*.js scripts come from.
This gives you a lot of control over where scripts come from. Now your pages can utilize ScriptManager's advanced features, without necessarily depending on MicrosoftAjax.js, and without having to hard code paths to scripts or to assembly resources. Now your pages can be a semantic definition of the scripts your page requires – and the details are all in one location. And when the need arises, you can change where those scripts come from, no matter where they came from originally.
Bringing it all together: De-AXD'ifying
Not really a feature of it's own – but a consequence of the others worth noting. Because ScriptManager can now deal with System.Web scripts or any scripts regardless of which API is used to register them, it is now possible – for the first time – to get rid of all WebResource.axd and ScriptResource.axd urls from the HTML rendering. And you can do it without touching your pages due to the ScriptResourceMapping feature. And what's more – because of the CompositeScript feature, you can also get them all combined into a single, static script file, with a simple, beautiful url. Or better yet – let Microsoft handle the bandwidth, and use the CDN!
Microsoft Ajax 4 Preview 5: The DataView Control
Preview 5 of the Microsoft Ajax 4.0 library has been released. Some quick background – this the next version of the client-side ajax framework you have probably already heard of, the one that ships along with ASP.NET 3.5 (but is also available in script form). The fact it ships with ASP.NET has sometimes led to it being called the ASP.NET AJAX Framework. Technically, that name is a superset – it encompasses "Microsoft Ajax" and it's ASP.NET specific, server-side features, like the ScriptManager. But "Microsoft Ajax" always has and always will be an ajax framework that is not tied to any specific server-side technology. Also noteworthy is that this 4.0 library can run on top of ASP.NET 3.5, replacing the 3.5 version it normally uses.
In previous previews of Microsoft Ajax 4, we introduced the DataView control. It's a simple but powerful control that takes advantage of the client templating engine we built for it. You point it at a template, and some data, and it instantiates the template for each item in the data. The templating engine lets you use 'placeholders' and create 'live bindings' between the rendered DOM elements and the data, as well as allow you to attach other ajax components and controls.
I want to focus on one of the new features added to the DataView in preview 5, but first, I feel obliged to introduce the DataView control from a basic level, since most of you probably don't know about it yet.
Simple DataView Example
As a simple example – lets make up some data. Normally this would come from a web service or some other source, not hard coded, of course.
var stockData = [
{ symbol: "DJIA" , change: 79.88, value: 9627.48 },
{ symbol: "NASDAQ", change: 23.63, value: 2084.02 },
{ symbol: "AAAA" , change: -0.22, value: 27.56 },
{ symbol: "BBBB" , change: -1.46, value: 82.12 },
{ symbol: "CCCC" , change: 0.67 , value: 7.56 }
We want to show this stock data in a table, and probably do some formatting to show the values as currency, etc. Without a templating engine, you'd basically either have to painstakingly create DOM elements by hand, or build up a string and use innerHTML. Neither technique is easy to maintain, or are designable by designer tools. Worse, building a string and using innerHTML could net you some XSS vulnerabilities. This is where the templating engine in Microsoft Ajax 4 comes in.
<table id="stocks" class="stocks sys-template">
<td>{{ symbol }}</td>
<td>{{ value.localeFormat("c") }}</td>
<td>{{ change.localeFormat("c") }}</td>
<td>{{ (change/value).format("p2") }}</td>
In the simple form, {{ foo }} represents a placeholder where the value of a field named 'foo' from the data items will be. What language is this stuff? Just javascript. So as you can see, this take advantage of the formatting methods in Microsoft Ajax to convert the values to currency. You could write any ole javascript here, of course (unobtrusive javascript alert: yes, you can do it that way too, more on that later).
The class "sys-template" is setup to have display:none, so that this chunk of HTML doesn't actually show up in the markup.
That's the template – it represents what each item should look like. Now to put it to use with the DataView control:
function pageLoad() {
$create(Sys.UI.DataView, {
data: stockData
}, null, null, $get("stocks"));
That's it. The DataView control is given the data, and the template. Everything is hooked up. Here is the result (css not shown):
One obvious improvement we could make to this sample is to dynamically style the rows so that stocks going up are green, down, red. You can in fact do that, but I digress. This is just the most basic use of a DataView. I haven't even mentioned live bindings. And even in preview 4 you could reuse templates across multiple dataviews, and set the placeholder to be something other than the default. Here is an excellent article by Jim Wang which covers some of the other things you could do in Preview 4, including selecting items, and integrating with an ADO.NET DataService.
http://weblogs.asp.net/jimwang/archive/2008/11/05/working-with-ado-net-data-services-in-ajax.aspxPreview 5 – Dynamic Templates and Dynamic Placeholders
Preview 5 introduces a new feature to the DataView control that allows you to dynamically determine the template used for each data item, as well as dynamically determine the placeholder that anchors where it will be inserted. This means each data item can potentially render completely differently, and render into completely different areas of the page, all the while being under the control of a single DataView!
What does this mean? Well, say you have a single set of data returned by a service of some kind. But you don't want to simply list this data all in one place. Some needs to go there, and some over there, depending on the state of each item. A typical example of this might be a data set of forum posts, where some of them are marked as 'sticky', and so should be listed first, but the sticky ones aren't necessarily first in the list of data. How would you normally deal with that? Separate the sticky items into their own data set, or query for them separately? If you are using stored procedures, maybe that means creating a new one or modifying an existing one to support the filtering. Why go through such hoops and database-level manipulations when this is purely a UI problem? If it can't be solved by your UI tools, perhaps you're blurring your separation of concerns.
So as an experiment, I imagined a list of bloggers. Each blogger may or may not be on Twitter, right? But I want the tweeting and non-tweeting bloggers to be listed separately. Furthermore, the way I display a tweeting blogger and a non-tweeting blogger may be very different. For one, I want to display some of the latest tweets from the tweeting bloggers, and display their Twitter avatar.
Mind you, it is certainly possible to use dynamically determined css classes, and to dynamically show/hide regions of content within a template, based on the data item. But that only gets you so far. Sometimes, the differences are too much to neatly define a single template that can represent either kind of data item. This particular example could have been done either way. Maybe I just wasn't creative enough :)
First – let's define our bloggers.
var bloggerList = [
{ name: "InfinitiesLoop", author: "Dave Reed",
uri: "http://weblogs.asp.net/infinitiesloop", twitter: "infinitiesloop" },
{ name: "Computer Zen", author: "Scott Hanselman",
uri: "http://www.hanselman.com/blog", twitter: "shanselman" },
{ name: "Random Thoughts", author: "Bob",
uri: "http://myblog.com" },
{ name: "Tales from the Evil Empire", author: "Bertrand Le Roy",
uri: "http://weblogs.asp.net/bleroy", twitter: "bleroy" },
{ name: "The Gu", author: "Scott Guthrie",
uri: "http://weblogs.asp.net/scottgu", twitter: "scottgu" },
{ name: "Some blog", author: "Mr. IDontTwitter",
uri: "http://weblogs.asp.net/donttwitter" },
{ name: "Jim Wang's Blog", author: "Jim Wang",
uri: "http://weblogs.asp.net/jimwang/", twitter: "turanuk" },
{ name: "James Senior", author: "James Senior",
uri: "http://www.jamessenior.com/", twitter: "jsenior" }
Each blogger has a blog name, author name, uri, and if they have one – a twitter id. Important to note – the non-twittering bloggers are not at the beginning of the array, they are mixed in with the others.
For brevity I'm going to show the declarative way of attaching a DataView control, even though we feel most developers would prefer to keep this stuff separated from their markup. Everything you see here can be done in pure code (imperatively). And we are actively working on some very interesting improvements that make the imperative ways much, much easier than they are in Preview 5, so stay tuned, you won't want to miss it. Both declarative and imperative approaches are in the sample download at the end of this post.
Let's first define the overall structure we want:
<div id="bloggers" class="bloggers"
sys:attach="dv" dv:data="{{ bloggerList }}"
dv:onitemrendering="{{ itemRendering }}">
<div class="notwitter">
Non-twittering Bloggers
<li id="normalph"></li>
<div class="hastwitter">
Twittering Bloggers
<li id="twitterph"></li>
Two divs, one for each kind of blogger. And placeholders for where each should be rendered. A DataView is attached declaratively with sys:attach="dv" (the 'dv' comes from an xml namespace declared on the documents body tag and maps the namespace 'dv' to the Sys.UI.DataView class, 'dv' is not magical). As each blogger is processed, the 'itemRendering' event is fired before anything is instantiated for it. We've hooked up a handler for it:
function itemRendering(dv, args) {
var blogger = args.get_dataItem();
if (blogger.twitter) {
else {
If the blogger has a Twitter id, we set the template to the 'twitterblogger' template and tell it to render where the 'twitterph' element is. Otherwise, we use the 'normalblogger' template and render them where the 'normalph' element is. For a 'normal' blogger, we just want to render a link to their blog and their name:
<ul class="sys-template" id="normalblogger">
<a sys:href="{{ uri }}">{{ name }}</a>
<span>author: {{ author }}</span>
Pretty simple. For a tweeting blogger, we want to do something slightly different, plus we want to show their last 5 tweets for good measure.
Another feature in Microsoft Ajax 4, I should mention, is JSONP support. And good thing too, because it makes this demo way cooler. Twitter happens to have a JSONP service, and the DataView integrates nicely with the networking support in Microsoft Ajax, giving it JSONP support, too. So getting tweets for someone is just a matter of creating a DataView with the JSONP address as the 'dataProvider'. So our Blogger DataView is going to actually contain a nested DataView. Here is the 'twitterblogger' template:
<ul class="sys-template" id="twitterblogger">
<a sys:href="{{ uri }}">{{ name }}</a>
<span>{{ author }}</span>
<ul class="tweets sys-template" sys:attach="dv" dv:autofetch="true"
dv:dataprovider="{{ getTwitterUrl(twitter) }}">
<img class="avatar" sys:src="{{ user.profile_image_url }}" alt="" src="" />
{{ text }}
So, our blogger entry has a nested UL, to which we attach another DataView with the JSONP Twitter url as the target provider. The data returned from Twitter also has information about the Twitter user, like their avatar, so we may as well show that, too. The 'getTwitterUrl' call demonstrates that you aren't limited to just data – you can do stuff with it too. That method simply takes the blogger's Twitter id and constructs the JSONP service url for their last 3 tweets.
That's it! Here it is in action:
Download the sample code here.
Also, be sure and check out these other awesome posts about Microsoft Ajax 4.
- Bertrand demonstrates how to use templates recurisvely with the DataView to display hierarchical data.
http://weblogs.asp.net/bleroy/archive/2009/09/14/building-a-class-browser-with-microsoft-ajax-4-0-preview-5.aspx - Jim Wang shows how to make MS Ajax 4 compatible with ASP.NET 3.5's UpdatePanel, and some simple ado.net integration.
These are based on previous preview releases.
- Preview of the DataView (based on Preview 4) by Encosia
A sneak peak at ASP.NET AJAX 4.0's client-side templating Encosia - Damien White has an excellent series of articles (based on preview 4)
DataView: http://blogs.visoftinc.com/archive/2009/04/28/ASP.NET-4.0-AJAX-Preview-4-Client-Templates.aspx
Sys.Observer: http://blogs.visoftinc.com/archive/2009/05/21/ASP.NET-4.0-AJAX-Preview-4-JavaScript-Observer-Pattern.aspx
Bindings: http://blogs.visoftinc.com/archive/2009/05/27/ASP.NET-4.0-AJAX-Preview-4-Data-Binding.aspx - I blogged about another feature in Microsoft Ajax 4, Sys.Observer (based on preview 3 but relevant)
- Bertrand demonstrates how to use templates recurisvely with the DataView to display hierarchical data.
ASP.NET WebForms: Taking Back the HTML
There's a lot of debate these days about the ASP.NET WebForms model vs. the newer ASP.NET MVC model. There are advantages to both. Disadvantages to both. Pick the one that best fits your needs. Nuff said. But sometimes that choice isn't so obvious.
MVC for example essentially gives you much more control over the generated HTML for the page. Well, complete control. But sometimes you don't really need complete control, and the lack of an encapsulated control kind of sucks. HTML Helpers help, but they have no design time experience. Hence, there are the MVC Controls in the MVC Futures project on CodePlex and an interesting compromise between the two models, at least when it comes to the rendering part of the application.
But then there's the other side of the equation – you've got a WebForms application, and you need a little more control over the HTML. What's the compromise there? Well, server controls try to give you control over the markup. Some of them do a pretty good job at it, like the ListView control added in ASP.NET 3.5. Others, not so good. If a control doesn't let you do what you need, you are pretty much stuck – either abandon the control and all its usefulness, or write your own control.
What's in a control anyway?
If you think about it, controls at the highest level are really two very different things.
- Controls abstract the rendering of HTML.
- Controls provide client-server integration by managing data between client and server.
Take the CheckBox control. It renders an input and label, and connects them with the 'for' attribute, so clicking the text also checks and unchecks the checkbox. That's it's HTML abstraction. It provides client-server integration by allowing you to dynamically read and write to the checked property on a server-side proxy.
A simple example of #2 is the TextBox control. Double meaning, uh, not intended. Type some text into the box and submit the form – magically, the server-side instance knows what its Text property should do. The control can also push data back to the client. Set the Text property, and magically the value is reflected in the rendered page. This can be much more complex though – the control might manage a hidden field, or rely on data stored in that catch-all hidden field we love to hate, ViewState.
The thing is, HTML abstraction is useful, but a lot of the time it doesn't provide a ton of benefit. Client-server integration, however, is usually much more useful. If you don't need that there's a good chance you don't need a control to begin with.
Html Controls
I would be wrong not to point out that there's a whole namespace of controls in ASP.NET that are largely underused. HTML controls allow you to add a runat="server" to an HTML element and get reasonable client-server integration with it. So if you don't like how the CheckBox control renders, just use the HtmlCheckBox instead. But what if you're using a more complex control that has no HTML equivalent?
What if you could control the HTML for any server control without losing the client-server interaction?
Wouldn't that be nice?
Taking Control
Introducing the CustomRender control. This control suppresses the rendering of any control(s) you put in it, while allowing you to define your own, replacement HTML. It gets a little nicer than that, though. One step at a time – first, lets choose the enemy. A Button control that sets the text of a Label control.
<script runat="server">
private void ButtonClick(object sender, EventArgs args) {
Label1.Text = "You clicked Button1";
<asp:Button ID="Button1" runat="server" Text="Go" OnClick="ButtonClick" />
<asp:Label ID="Label1" runat="server" />
You're going down, Button1. Bring on the CustomRender:
<i88:CustomRender runat="server">
<asp:Button ID="Button1" runat="server" Text="Go" OnClick="ButtonClick" />
<asp:Label ID="Label1" runat="server" />
That's step 1. Now how do we get our own HTML in here? As this stands, the button and label will not render anything. They still participate in the page lifecycle and all that goodness. But nothing renders. So we could just put the HTML next to the CustomRender control. But it would be nice if this control helped me out a little by giving me what these controls would have rendered, wouldn't it? Lets swap over to Design View.
If you're one of the types that never uses Design View – it's that button that says 'Design' on the lower left, or Shift-F7.
Click on "Update HtmlTemplate", then switch back on over to Source view. Voila…
<i88:CustomRender runat="server">
<asp:Button ID="Button1" runat="server" Text="Go" OnClick="ButtonClick" />
<asp:Label ID="Label1" runat="server" />
<input ID="Button1" name="Button1" type="submit" value="Go" /> <span ID="Label1">
The designer for the control has rendered its ControlTemplate and put the result into the HtmlTemplate. And just to prove it works, modify the HTML a little. Lets change the 'value' of the input from 'Go' to 'Gone'.
And now lets click the button and see if the server control still works. Remember, it's supposed to set the text of the label to "You clicked Button1.". Hmmmm.. nothing. It broke!!! No… remember, when you do this, you take complete control over the HTML. That text doesn't just come from no where. The code is running, but you haven't put it into your HTML.
How do you do that? No problem – think of the HTML template like a mini-MVC View.
<input ID="Button1" name="Button1" type="submit" value="Gone" />
<span ID="Label1"><%= Label1.Text %></span>
Now when we click the button, it works:
Show Off – The Challenge
"Okay," you say, "but that's just a button and a label. What about a real world scenario," you spout in disbelief? I dunno if you said that, but it's more interesting to pretend like you are challenging me to put this technique to the test. I accept your pretend challenge.
Way back in ASP.NET 1.x there was the DataGrid control. As great as it was at the time, it's limitations eventually led to the GridView control. As great as that was, you still didn't get enough control over the markup and CSS, so the ListView control was born (I often wonder what we'd call the next iteration – running out of two-word data-like combinations aren't we? No, there already is a DataList control!). My point being that in the current set of databound controls, the DataGrid control is probably the oldest and most set in its ways, and most known for its lack of customizability. It renders as a <Table>, and that's that. How 1990's of it.
A perfect target for the challenge – let's do the unthinkable. Get a DataGrid to render as <UL> and <LI> and be styled with 100% CSS, while maintaining the server-side features like SelectedIndex.
First, lets take a look at a DataGrid utilizing the SelectedIndex feature.
<asp:DataGrid ID="dg1" runat="server"
AutoGenerateColumns="false" SelectedIndex="1" SelectedItemStyle-CssClass="selected"DataSource='<%# DummyData %>'>
<asp:BoundColumn DataField="Name" />
<asp:ButtonColumn DataTextField="Price" DataTextFormatString="{0:c}" CommandName="Select" />
It shows two columns – a product name, and a price, formatted as currency. You can click on the price to select the item, which then has a different CSS class. The DummyData property is just returning an ArrayList with a few sample items. Let's not forget how you databind this thing… you may be using a DataSource control. For this purpose we'll just do it the old fashioned way.
protected override void OnLoad(EventArgs e) {
if (!Page.IsPostBack) {
Now lets take a look at the rendering.
<table cellspacing="0" rules="all" border="1" id="dg1" style="border-collapse:collapse;">
<td> </td><td> </td>
<td>Widget</td><td><a href="javascript:__doPostBack('dg1$ctl02$ctl00','')">$19.95</a></td>
</tr><tr class="selected">
<td>Horn</td><td><a href="javascript:__doPostBack('dg1$ctl03$ctl00','')">$2.99</a></td>
A few things of note going on here. For the SelectedIndex feature to work, the ButtonColumn has rendered an <A> tag which does a postback. The ID it passes to the __doPostBack function is the UniqueID of a link button it has added to the control tree. The LinkButton raises a bubble command named "Select", which the DataGrid picks up and sets its SelectedIndex property. While rendering, the DataGrid applies a different style to the selected item.
Translating this into your own custom HTML is pretty easy actually. The trick is to do rendering only – you could in theory use a Repeater to bind over the same items. We're trying to leverage the existing features of the DataGrid, so rather than grab the data directly we're enumerate the DataGrid's Items collection and try to reuse as much as we can.
Again, think of this template as a mini-MVC view, and the actual control we are targeting is like our ViewData. That way, changes to the DataGrid don't require changes to the custom rendering.
<i88:CustomRender runat="server" ID="c1">
<asp:DataGrid ID="dg1" runat="server" SelectedItemStyle-BackColor="Red"
AutoGenerateColumns="false" SelectedIndex="1"
SelectedItemStyle-CssClass="selected"DataSource='<%# DummyData %>'>
<asp:BoundColumn DataField="Name" />
<asp:ButtonColumn DataTextField="Price"
DataTextFormatString="{0:c}" CommandName="Select" /></Columns>
<% for (int i = 0; i < dg1.Items.Count; i++) {
// enumerate the DataGrid's items so we can choose how to render them
var item = dg1.Items[i];
// the ButtonColumn is rendering a LinkButton or Button
var priceLink = (IButtonControl)item.Cells[1].Controls[0];
<ul class="item<%= dg1.SelectedIndex == i ? " selected" : "" %>">
<li><%= item.Cells[0].Text %></li>
<li class='price'
onclick="<%= Page.GetPostBackEventReference((Control)priceLink) %>">
<%= priceLink.Text %>
<% } %>
A for loop enumerates the DataGrid.Items collection. For the first column we just repeat the cell's text. The 2nd column is more complex as it contains a LinkButton with a postback reference. Even so, it's not too complex – get a reference to the LinkButton and use Page.GetPostBackEventReference() to generate the necessary postback script. We are now free to apply CSS in anyway we like. Watching for the the SelectedIndex, we apply a 'selected' class, for example.
I've just quickly put together these styles to make each 'item' float left, so the "grid" isn't even a grid anymore, just to show how it can be totally different.
<style type="text/css">
ul.item {
float: left;
list-style-type: none;
padding: 0px 10px 0px 10px;
ul.selected {
border: solid 1px red;
li.price {
cursor: pointer;
color: Blue;
text-decoration: underline;
And here it is running.
Mission Accomplished
Perhaps you are thinking that is pretty ugly and difficult. If you are, remember that is why controls abstract that stuff away for you, so it's easy and expressive. This is by no means "the end" of control rendering. It's a tool you should keep in your toolbox. If you have a difficult to fix rendering issue for a specific control, now you don't have to say goodbye to the whole thing.
How does it work?
It's actually pretty simple! All controls create their HTML in the Render() method. To control the HTML, you just need a way of injecting your own HTML while suppressing the stuff it's Render() method produces. Ok – so, don't call Render(). The Render method unfortunately does not only produce HTML. Sometimes it produces script references or "startup" scripts. Sometimes it registers with the ASP.NET Event Validation feature for security purposes. So this control still calls Render, but it throws away the resulting HTML. It instantiates the ControlTemplate like any other template, adding it to its own control tree so they particulate in the lifecycle. It just chooses to actually render the HTML template instead. That is, unless it is design time. Then it renders the control template – allowing you to use the controls in the designer like you normally could.
Controls will not necessarily take kindly to being rendered "for reals" at Design Time. The page isn't real, and the other controls on the page don't necessarily exist or are in their proper hierarchy. So the "Update HtmlTemplate" designer action may not always work. It might even cause an exception to be thrown. It depends on the control.
Also, I find that although the correct HTML is being rendered internally, VS gets it's hands on it and makes a few modifications to the persistence of it for some reason. It seems mostly benign, like reordering element attributes. But one bad thing it does is capitalize the 'id' attribute, which is supposed to be in lower case if you care about XHTML compliance. Easy enough to fix once you get the HTML bootstrapped. I'm trying to find out from someone on the team why this happens and if we can fix it. If all else fails, you can always run the page and use the actual source to get the HTML rather than use the designer trick.
Download & Discuss
It's up on code gallery, including the sample of the world's first cannibalized DataGrid.
Professional ASP.NET 3.5 AJAX Released
Looking for an ASP.NET AJAX book? This one has been massively updated from its 2.0 version, to cover in detail the features added in 3.5, and not to be forgotten, 3.5 SP1. For example, Script Combining was a new feature in 3.5 SP1, and so was History support, so it's an important distinction! The 2.0 book was 307 pages, and this one is 552. History support, by the way, has a dedicated chapter. Script combining is a major portion of the chapter on the ScriptManager.
Another important difference between the 2.0 and 3.5 versions -- this time, I'm a contributing author. :) My first major technical publication, hopefully more to come. I'm that weird guy on the right.
The Event Handler That Cried Wolf
I ran into an interesting and unexpected behavior in ASP.NET AJAX event handling the other day. Once I figured out what was going on, I was almost positive it was a bug, so I started looking into what a solution would be. But just out of curiosity, I looked at what the behavior was for a server-side event. Much to my surprise, the behavior was the same. The behavior then was consistent with the server-side behavior, not a bug. But is it the "correct" behavior? Tell me what you think...


text:
We have found some free an american affair videos and pictures.
BEVERLY HILLS, Calif.—Javier Bardem has his own A-list cheering section. Sean Penn, Julia Roberts, Ryan Gosling and writer-director Alejandro Gonzalez Inarritu are among the celebrities rooting for him to receive awards recognition for his emotional ... Source: Denver Post
They ranged from small-bore ones such as his pledge to open American cultural centers in Islamic cities abroad (a promise being kept) to his vow to repeal the Bush-era tax cuts for the wealthy (a promise broken). To the Heritage Foundation's Brian Darling ... Source: Huffingtonpost.com
That's over. In recent weeks, in the wake of the latest collapse of American diplomacy in the region around Thanksgiving, a new, more hard-headed view of Netanyahu has become cemented in the West Wing — one that rates the chances of a personal alliance ... Source: Politico.com
Jeremy Cota of Carrabassett Valley, Maine, was the top American, finishing sixth. David Digravio of Farmington, Maine, was seventh, Bryon Wilson of Butte, Mont., eighth and Patrick Deneen of Cle Elum, Wash., 10th. Source: ESPN.com
WASHINGTON -Health care is Shannon Taylor's "big, big hot button" and no wonder. She is a nurse in Tennessee who examines hospital bills for a health insurance company, and a mother who saw President Barack Obama's health care law come just in time for her ... Source: AOL News
WASHINGTON , Jan. 14, 2011 /PRNewswire-USNewswire/ -- The Washington -based Council on American-Islamic Relations (CAIR) today distributed a commentary marking Martin Luther King Jr. Day. In his ISLAM-OPED commentary, titled "MLK is an Example to American ... Source: YAHOO!
Muhammad Ali lost to Larry Holmes (in a pitiful affair) and Trevor Berbick well after he should ... Some of the best boxers in American history couldn't do it and Tyson wouldn't do it either. This fight would be hard fought for the first few rounds. Source: Bleacherreport.com
But Hu also got to experience the type of American political discourse that China's critics have often lamented isn't allowed in the rising global power. Despite President Obama pulling out all the stops for the red-carpet affair, several key ... Source: Newsweek
Did Todd Palin have an affair with a "massage therapist?" That's what the National Enquirer is reporting. The National Enquirer reports that Todd Palin cheated on Sarah with a woman named Shailey Tripp, a massage therapist who was arrested on March 4, 2010 ... Source: Associated Content
Todd Palin had an affair with an Alaska-based sex-worker? At least, according to swirling Web rumors today. Who broke the "news?" The National Enquirer , which, despite having a less-than-stellar reputation for newsworthiness, is the same magazine who ... Source: Forbes (blog)

subset: commoncrawl


text:
Utilities official says best U.S. 30 drainage solution also cheapest
BY JAMES D. WOLF JR. Post-Tribune correspondent February 14, 2014 5:42PM
Updated: February 14, 2014 8:46PM
VALPARAISO — The best way to improve drainage and upgrade a pump station along U.S. 30 is also the cheapest way, according to City Utilities Director Steve Poulos.
That's what Poulos told the Utilities Board this past week.
By not building a new lift station but investing in new equipment, the City Utilities would take on a $700,000 project instead of one that costs $2.3 million or $3.5 million, according to estimates Poulos provided the board.
The lesser plan would increase capacity at the Horse Prairie Avenue lift station from 5 million gallons a day pumped to 6.8 millions gallons a day.
At Tuesday's Utilities Board meeting, Poulos said that would be sufficient for planned growth along U.S. 30 and south for 10 to 15 years, including the planned Pratt Industries paper plant to be completed in 2015.
The cost of $2.5 million or $3.5 million to increase it to 7.5 million gallons a day is not only not worth the cost but unnecessary.
"You never want to over-develop a lift station," Poulos said. "You're expending funds you don't have to expend."
Poulos hopes to make improvements without borrowing money.
His department received a $200,000 grant from the Northwest Indiana Regional Development Authority in May and has $291,000 left from a state revolving fund proceed that is left over from a disinfecting process project.
If the utility department doesn't spend that, it could end up paying a penalty, he said.
The rest should come from a summer bond or available money.
Poulos recommended improving the Horse Prairie Avenue lift station instead of the Sturdy Road station. The Horse Prairie station was last upgraded in 2003 but uses three 50 horsepower pumps; two date from 1983 and the other was installed in 2000.
Because the pumps have no variable frequencies, solids settle to the bottom, creating an odor.


text:
Mack Maine - My City
My City Mack Maine
Editor Rating: VERY HOTTTTT
User Rating:
Listen to My City, a new offering from Mack Maine, which was released on Tuesday, January 31st, 2012.
Listen to My City, the latest track from Mack Maine. The cut dropped on Tuesday, January 31st, 2012. Mack Maine's future brightens with every new release, and My City certainly isn't an exception. It's a fitting addition to a solid catalogue that Mack Maine has been developing since stepping foot in the game. We're excited to hear more.
Have you heard Mack Maine's Windows Halfway Down (Unreleased Freestyle)? If you're down, make sure to visit Mack Maine's profile page for the newest info, news, songs, and mixtapes.


text:
Exciting New Figures & Collectibles at ToyWiz.com
ToyWiz.com is offering customers a variety of popular products at great prices in their Huge Blowout Sale.
ToyWiz.com also continues to carry an incredible selection of the newest and most popular action figures, toys, and collectibles including:
* Avatar Movie Collectibles
* Disney / Pixar CARS TOON 1:55 Die Cast Vehicles
* WWE Wrestling DELUXE Aggression Series 22 Action Figure CM Punk
* Pokemon Platinum Arceus Booster Box
* WWE Wrestling Ruthless Aggression Series 42
* YuGiOh 5D's 2009 Set Holiday Collector's 2nd Wave Tins
* Yu-Gi-Oh Card Game Ancient Prophecy Single Cards
* Super Mario Bros.Collectibles
Other cool figures and collectibles available to order NOW at ToyWiz.com include...
* WWE Ruthless Aggression
* YuGiOh Trading Cards
* Disney Pixar Cars Movie Die Cast Race-O-Ramas
* New Littlest Pet Shop figures
* Mcfarlane Sportspicks
* Star Wars Clone Wars Action Figures
* Tech Deck Finger Boards
* Pokemon Trading Cards
* Bakugan Figures and Collectibles
* YuGiOh 5D's Duelist Genesis Single Cards
* Chaotic Trading Card
* Gears of War
* Halo 3 McFarlane Series 3
* MMA & UFC Action Figures
* Neopets Species Collector Plush
For all of these and more, be sure to check out ToyWiz.com!
[ E-mail to a Friend - Discuss in our Forums ]
The Coolest New Collectibles at Urban-Collector.com


text:
reviews & comments (5)
I used Jasmin Rice and it came out pretty well, but it might take a little more than 5 min before the rice browns, but I loved this recipe.
This recipe sounds fine, in principle, but the term "Mexican Rice" bugged me a bit- I was raised in Mexico around very traditional cooking (particularly the regional cuisines of Mexico City and Yucatan- both extremely traditionalist). In both cases, and in every instance, "Mexican Rice" is different from any other rice because it gets fried in vegetable oil (just a quarter sized drop) before the water gets poured in. This keeps it from sticking together and gives it a wonderful texture. Fry the rice with half an onion and a couple of garlic cloves (all whole, not chopped), and leave them to boil with the rice, thereby infusing it with their flavors. A little chicken bullion adds the necessary salt and flavor. If you have them, add a whole serrano chile (thin, small green chiles that look a lot like a thinner version of a jalapeno) to the onion and garlic clove mix. My mom and grandmother both added a vegetable for color and flavor, like some yellow corn kernels, potato cut into small chunks, chopped carrot, etc. (not all at once- each time they made the rice, a different vegetable was used). Boil 30 minutes or until water evaporates. THAT is Mexican rice.


text:
DHL's long term partnership with Paragon software
DHL has been a user of Paragon's routing and scheduling software since the late 1980's and is now using more than 50 systems across its business development functions and operational contracts. Industry: Distribution/3PLCategories: Operational routing and scheduling , Strategic planning , International , Large operation
CEVA Logistics standardises globally on Paragon routing and scheduling software
CEVA Logistics has selected Paragon as its strategic routing and scheduling system supporting new business development in Europe, Australia, Asia and Latin America. Having bought 18 Paragon systems in total, complete with Integrated Fleets and Multi Depot, as well as Paragon maps for over 20 countries, CEVA Logistics is setting about adding to its 1,100 worldwide contracts. Industry: Distribution/3PLCategories: Strategic planning , International , Large operation
KN Drinks Logistics rolls out Paragon software
Following a major pilot in three regional distribution centres, KN Drinks Logistics, a wholly-owned subsidiary of Kuehne + Nagel in the UK, has started a national roll-out of Paragon's enhanced routing and scheduling optimisation solution, as the company seeks to improve its radial distribution planning operations in the brewing and drinks sector. Industry: Distribution/3PL , Food & DrinkCategories: Operational routing and scheduling , Benefits reported , Large operation
Centralised routing and scheduling speeds deliveries for Goodyear Dunlop
The nationwide distribution of 150,000 tyres a week by Goodyear Dunlop, in partnership with Christian Salvesen, sees Paragon's Multi User routing and scheduling software enhancing next day delivery. By making the switch to centralised planning, while maintaining fast efficient scheduling for national next day delivery, Multi User Paragon has extended the operation's routing and scheduling capabilities to achieve new levels of efficiency and customer service. Industry: Automotive , Distribution/3PLCategories: Operational routing and scheduling , Benefits reported , Large operation
DHL Exel uses routing and scheduling software for BP
DHL Exel uses Paragon software to reduce costs & improve service at BP, cutting fleet requirements by 13% and more. On-target route and fuel savings achieves reduction in carbon emissions. Industry: Oil & Gas , Distribution/3PLCategories: Operational routing and scheduling
Paragon route scheduling software boosts strategic planning
Paragon Software Systems' routing and scheduling solution has been selected by Bibby Distribution, the UK's leading independent logistics company, for strategic planning use throughout its business. Industry: Distribution/3PLCategories: Strategic planning
DHL Exel Supply Chain wins new contract in Australia with Paragon routing software
DHL Exel Supply Chain, the world's largest global logistics provider, has purchased Paragon software to help with strategic planning and business development in Australia, winning a new contract for consumer products distribution. Industry: Distribution/3PLCategories: Strategic planning , International , Benefits reported
DHL optimises transport operations for JD Wetherspoon
Supporting its new five-year contract, DHL-Exel is implementing Paragon routing and scheduling software to manage distribution for JD Wetherspoon. Industry: Distribution/3PL , Food & DrinkCategories: Operational routing and scheduling
Food distributor AWT targets 10% savings with Paragon software in Croatia
AWT International d.o.o., one of the leading FMCG distribution companies for Croatia, Serbia and Macedonia, has installed Paragon's advanced routing and scheduling software. Paragon Multi Depot logistics software optimises routes, schedules and loads for AWT's distribution operation within Croatia, thereby reducing transportation costs by at least 10 per cent. Industry: Distribution/3PL , Food & DrinkCategories: Operational routing and scheduling , International , Benefits reported , Large operation
Norbert Dentressangle chooses Paragon routing software
As one of the best-known names in Pan-European distribution, operating from 190 sites, employing 10,500 people and making 600 English Channel crossings a day, logistics solutions specialist, Norbert Dentressangle, has added Paragon to its array of commercial advantages, using the system's strategic planning capabilities to improve the quality of transport service. Industry: Distribution/3PLCategories: International
- 1
- 2
Select an Industry
- Home Delivery (8)
- Manufacturer (7)
- Healthcare (3)
- Agriculture / Animal Feed (3)
- Automotive (2)
- Waste Management (3)
- Food and Drink Retail (12)
- Oil & Gas (2)
- Wholesale (7)
- Non-Food Retail (6)
- Parcels/Post/News (4)
- Service Management (4)
- Distribution/3PL (12)
- Food & Drink (10)
- Operational routing and scheduling (44)
- Tactical planning (7)
- Strategic planning (11)
- Vehicle tracking and fleet management (7)
- International (9)
- Benefits reported (34)
- Small/medium operation (20)
- Large operation (26)
- Integration (5)


text:
I am looking for these patterns, if anyone has them- you can send to firstname.lastname@example.com
Story Book Dolls As Follows-TD
Dolls As Follows:-TD
Air Freshener Dolls As Follows:-TD
Young At Heart Series As Follows-TD
Looney Tunes Crochet Afghans-AA
Pillow Babies as Follows:-AA
Follow-Up Postings:
I've sent you an email |
Please Note: Only registered members are able to post messages to this forum. If you are a member, please log in. If you aren't yet a member, join now!
Return to the Fiber & Needle Arts Exchange Forum
Information about Posting
- You must be logged in to post a message. Once you are logged in, a posting window will appear at the bottom of the messages. If you are not a member, please register for an account.
- Please review our Rules of Play before posting.
- Posting is a two-step process. Once you have composed your message, you will be taken to the preview page. You will then have a chance to review your post, make changes and upload photos.
- After posting your message, you may need to refresh the forum page in order to see it.
- Before posting copyrighted material, please read about Copyright and Fair Use.
- We have a strict no-advertising policy!
- If you would like to practice posting or uploading photos, please visit our Test forum.
- If you need assistance, please Contact Us and we will be happy to help.
Learn more about in-text links on this page here


text:
My Two Cents: While the media seems to be excited about this guy and his "small government" rhetoric, don't be fooled. While he may be speaking from the heart, his track record states something different. First of all, he was a big supporter of the Iraq War. He also voted to end Bush tax cuts. Vote wisely. End Two Cents.
*Taken from the Trenton Patch.
U.S. Rep Thaddeus McCotter (R-Livonia) made his message loud and clear Saturday when he announced he was seeking a bid for the White House.
The congressman announced before a crowd of a few hundred people Saturday that he is in the race for president of the United States — then brought out his American flag-themed guitar to play some bluesy rock music at the Freedom Festival at Whitmore Lake, sponsored by conservative talk radio station WAAM-AM (1600).
McCotter represents Michigan's 11th congressional district, which includes Canton, Garden City, Livonia, Milford, Novi, Northville, Plymouth, Redford, South Lyon, Westland and White Lake. He was elected in November to his fifth consecutive term.
He was joined onstage by his wife and two of his three children on a sweltering evening with temperatures nearing 100 degrees, where he emphasized that the U.S. doesn't need big government, but rather self-government.


text:
We did not need Michelle Obama or Zooey Deschanel to tell us that bangs are in right now. That ultra hip style is absolutely everywhere, and it is easy to see why. Bangs have been making their way from the hippest areas of the coolest cities in the world and are now the rage on this side of the globe.
That means it might be time to consider a new custom wig that incorporates this hot style. One of the best things about this style is that it is positively ageless. You can make bangs look fantastic on a wide range of facial structures. It all depends on how you style them. A new wig with bangs will be the kind of versatile style perfect for the boardroom or the beach. It is ideal for the modern woman who is hoping to have it all.
Getting a new long wig with gorgeous bangs is not trend hopping. This is an established look that is not likely to go out of style any time soon. Already own a wig but it doesn't have bangs? Don't be shy to give it a new style. But for those who would rather have versatility, add a new custom wig with bangs to your collection.
You can follow any responses to this entry through the RSS 2.0 You can skip to the end and leave a response. Pinging is currently not allowed.


text:
HBO Fan Fiction
Forum for HBO Fan Fiction Related Stuff
Log in to check your private messages
Log in
Hollow Life: Personal Diary
HBO Fan Fiction Forum Index
Fan Fiction Comments
View previous topic
View next topic
Site Admin
Joined: 25 Jul 2004
Posts: 4356
Posted: Tue Oct 05, 2004 2:38 pm
Post subject: Hollow Life: Personal Diary
This topic is for posting comments to:
Hollow Life: Personal Diary
Posted by Solidus Snake (email@example.com)
4 October 2004, 12:53 AM
Back to top
Joined: 29 Jul 2004
Posts: 1000
Location: Grand Rapids MI
Posted: Tue Oct 05, 2004 4:08 pm
Post subject:
More than anything else, I liked the poem in the middle. This didn't sound much like a real diary. But you know your character better than I do, so I'll write it off to my ignorance.
You have a good imagination and seem to be a good writer, so don't let spelling and grammar errors distract your reader. Go through your story as many times as it takes. You had some easy words spelled wrong, and a few words in the wrong tense.
That aside, good job.
C.T. Clown
Back to top
Solidus Snake
Joined: 30 Jul 2004
Posts: 281
Location: A dying Metal Community
Posted: Tue Oct 05, 2004 8:45 pm
Post subject:
Thanks, I guess I didn't look over it as well either. Although I never intended for it have spelling errors, but when I start to type so fast I seem to skip words and such. And yeah it isn't a REAL diary but I do have one a bit more disturbing and stranger than this.
Back to top
Joined: 30 Jul 2004
Posts: 25
Location: cary, nc
Posted: Wed Oct 06, 2004 6:04 pm
Post subject:
i understand the whole ostracized and disturbed angle of the diary, but the language just doesn't seem to fit a 15yr old. Also, towards the end you got better with the first person POV. in the first entry you were doing more telling than showing, a diary tends to steer away from that. otherwise a good story.
Back to top
The Hammer
Joined: 30 Jul 2004
Posts: 3744
Location: Tango, Oscar, Charlie
Posted: Wed Oct 06, 2004 8:35 pm
Post subject:
I can understand the grammatical errors - I could bet they are intentional - and using conversational use of 'like' would be quite fitting for an average teenager.
Very depressing.
But then again, there are some other errors outside of the journal. Solidus, since you're pretty regular, I'll just inform you, and leave it up to you.
But there's something Solidus captured. Symbolism. The whole diary was symbolic. You can't trust people, you can only trust paper. That kid was unstable, and in some cases, you allude heavily to "Go ask Alice." About the family connections crumbling, and the hard times at school.
And the burn at the end was symbolic in the way that life is delicate, like paper itself - and how it only took a small tick in balance to silence the writer forever - it reminds me of how the ruthless rulers burned books.
It shows that the Covenant once again wish to silence us all - by burning our books.
Almost like Franz Kafka's "The Metamorphasis." and Mary Shelley's "Frankenstien." It wasn't Doc Frankenstein that created the monster - it was society - that led to the death of creator and creation.
Like that famous German Scholar... I can't remember his name, but he said,
[b][i]"...First, we burn our books. Then, we burn our people..."
- Dave.
"Lizzie Borden took an axe and gave her mother forty whacks. When she saw what she had done, she gave her father forty-one."
- A child's nursery rhyme.
"When in doubt, empty your magazine."
- Murphy's first law of combat operations.
Back to top
MC's Cousin
Mr. 1337
Joined: 30 Jul 2004
Posts: 2142
Location: Here.
Posted: Wed Oct 06, 2004 8:36 pm
Post subject:
Well, your first entry sounded like a prologue to the whole guy's life. If it was the first entry, I could understand, but if not, I would have expected that to have been explained previously. Then, I would have dispersed references to the events throughout many different entries (ie- "Today I thought of my Stepfather, whom I hate..." and so on, why he thought of him and such).
Generally, I dislike diaries because they tend to be boring; not conveying details at all. This was no different; however, I liked this one. Because of the way you included it, it proved to be interesting enough to hold my attention through the end. At a point, I though that there was a good chance the kid would kill himself after a certain entry, or that the Covenant would attack at any time; but I suppose that is what happened.
Overall, it was good. Not as good as a solid narrative, but still a relaxing thing to read. Good work.
Back to top
Display posts from previous:
All Posts
1 Day
7 Days
2 Weeks
1 Month
3 Months
6 Months
1 Year
Oldest First
Newest First
HBO Fan Fiction Forum Index
Fan Fiction Comments
All times are GMT
Jump to:
Select a forum
Fan Fiction
Fan Fiction Announcements, Guidelines, and FAQs
Fan Fiction Comments
Fan Fiction Reviews
Fan Fiction Writing Style Guide
Site Feedback
New Account Issues and Feedback
Site Feedback for Registered Members
Discussion Forums
HBOFF Contest Forum
General Discussion
Mostly About Canon (MAC)
HBOFF Hosted Project
The Library
Archived Posts
Old Forums
Halo: The Tabletop Game Project
post new topics in this forum
reply to topics in this forum
edit your posts in this forum
delete your posts in this forum
vote in polls in this forum
Powered by
© 2001, 2005 phpBB Group


text:
The Big Chill (1983)
With one look at a cast photo of this dramedy about a reunion of college friends, Close launches into a sort of graduate seminar on late-20th-century Hollywood bed-hopping. ''Now, I had dated Kevin [Kline],'' she explains, using the picture as a diagram. ''And my best friend, Mary Beth, had been married to Bill Hurt. At a reading we did in New York, she read the part of Mary Kay Place. And she had just broken up with Kevin.'' She laughs. ''It was a little incestuous.'' The cast's bond made Close ambivalent about being singled out by the Academy for her turn as the earthy, maternal Sarah. ''I think my crying-in-the-shower scene had something to do with it,'' she says. ''Hollywood loves to see naked. Naked or dead.''
The Natural (1984)
Close was handpicked by star Robert Redford to play Iris Gaines, the saintly single mother abandoned by a talented ballplayer (Redford). Another year, another Best Supporting Actress nod, although Close credits this one to cinematographer Caleb Deschanel: ''That hat was designed so the sunlight would come through. We waited for a certain time of day, so the sun was shining through the back of the stadium. And he had a lens that muted the people around me. It was an incredibly well-thought-out shot. And I honestly think that's the reason I got nominated.''
Fatal Attraction (1987)
Alex Forrest, the woman whose obsession with a married man (Michael Douglas) pushes her to madness, may be the most iconic role of Close's career. It was also the hardest for her to get. ''[The producers] didn't even want me to audition,'' says Close, who much like Alex refused to be ignored. ''They didn't think I could be sexy.'' She proved them wrong and created an endlessly imitated '80s look. ''The hair and makeup tests for this movie were some of the most rigorous I've ever done. The trickiest thing was the mouth shape, because it was very, very subtle. But we ended up filling in this little dip here [at the top of the lip, just beneath the nose] because it made her mouth sadder. It's all subliminal, but that changed her.'' Close famously disagreed with director Adrian Lyne over the movie's macabre ending, and still thinks her character deserved more empathy. ''[The producers] were right as far as satisfying the audience, giving them catharsis: The bad person is dead. But she wasn't just a bad person. When people say, 'You've played so many evil characters'...Alex is not on my list. The only evil person I've played as far as I'm concerned is Cruella De Vil.''


text:
StereoMeter 3.3
Triaxes StereoMeter is used to calculate the optimum stereo base for making stereo photos. Stereo base - the distance between positions for taking the left and right photos or between leftmost and rightmost frames in multi-frame series. The size of the stereo base plays the key role in creating a stereo photography. StereoMeter allows you to take into account a lot of parameters and choose the optimum stereo base size.
See also: stereopair, stereobase, multi-frame series, 3D photography, stereo photography, 3D photo, lenticular, anagliph


text:
One of the most time consuming and repetitive tasks in supporting an organization with a large number of computers is the handling of turnover of old computers as they become obsolete and new machine orders. A typical setup consisted of copying down the MAC addresses and destination hostnames on a piece of paper, typing them up and emailing them to someone else, wait for that person to update the DHCP server, create a station and config file for the new computer account, etc., etc. This project is to reduce the amount of human intervention needed to set up a machine.
I chose NetBSD for this project because it's most familiar to me. I have no doubt that someone could accomplish the same results with Linux and BusyBox, or any other combination.
I do not cover site security measures and common sense service lock down. Obviously if anyone on the internet can connect to your database server and create a host record, you have a security problem.
"What we're trying to do here is..." simplify workstation setup so that as many repetitive tasks as possible are eliminated. A while back someone realized that a significant portion of the support staff time is spent typing emails and waiting for another staff member to do something that they didn't have permission to do themselves. Workstation installation and upgrades is just one small facet of the big picture, but I believe it's the most taxing and time consuming. After a little flow charting and discussion, we settled on the following procedure:
Boot the client system from some type of removable media device. I use USB flash drives and CDs. With a little more effort, one could probably fit the kernel on a floppy as well.
Request a DHCP lease using a dhcp-client-identifier so that the client can get a static temporary IP to upload the data to the server.
Download a list of valid OUs from the server with FTP, and display it on screen.
Prompt the user to enter the desired hostname of the machine, a destination OU, and confirm that the probed MAC address, serial number, and GUID look sane.
Using the NetBSD FTP client, we request a URL similar to http://server.com.edu.biz.net/compreg.php?HOSTNAME=$HOSTSNAME&MAC=$MAC&GUID=$GUID&...
With the -o file output option we take the results from the servers script operations and check for an error. If there's an error prompt to retry, if not we ask to reboot or shut down the system. Though since no file systems are mounted, you can just hit the power switch.
The server side scripts scan for duplicate GUIDs, MAC addresses, serial numbers, and sends a ping the specified host name. If the host is alive it sends back an error and drops the request, if everything else looks good, the host entry is added to the database or any matching records are marked for deletion and then it's added with an update flag set. Another script scans the database for records with the update or delete flags set. Using the updated information, that script fires other scripts to:
Now we have a prestaged computer account, updated dhcp, updated asset information, and removed old data almost completely automatically. What use to take the time of up to four people is now down to at most 2, usually only one.
I highly recommend you read Building an embedded NetBSD system before you attempt this so you can understand what's going on.
This patch is against version 2.5 of DMIdecode. Basically all it does is remove spaces from the output and use unique names for information I'm interested in. This lets me get away with grep and cut instead of having to add sed and awk.
--- dmidecode.c 2004-10-14 14:33:20.000000000 -0400 +++ ../../dmidecode-2.5/dmidecode.c 2004-12-23 11:46:25.000000000 -0500 @@ -316,7 +316,7 @@ return; } - printf(" %02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X", + printf("%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X", p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); } @@ -2831,13 +2831,13 @@ case 1: /* 3.3.2 System Information */ printf("\tSystem Information\n"); if(h->length<0x08) break; - printf("\t\tManufacturer: %s\n", + printf("\t\tSystem Manufacturer:%s\n", dmi_string(h, data[0x04])); - printf("\t\tProduct Name: %s\n", + printf("\t\tSystem Product Name:%s\n", dmi_string(h, data[0x05])); - printf("\t\tVersion: %s\n", + printf("\t\tVersion:%s\n", dmi_string(h, data[0x06])); - printf("\t\tSerial Number: %s\n", + printf("\t\tSystem Serial Number:%s\n", dmi_string(h, data[0x07])); if(h->length<0x19) break; printf("\t\tUUID:"); @@ -2856,7 +2856,7 @@ dmi_string(h, data[0x05])); printf("\t\tVersion: %s\n", dmi_string(h, data[0x06])); - printf("\t\tSerial Number: %s\n", + printf("\t\tBase Board Serial Number: %s\n", dmi_string(h, data[0x07])); if(h->length<0x0F) break; printf("\t\tAsset Tag: %s\n",
CrunchGen config file example
# List of directories to search for the object code of the programs we want to include
srcdirs /usr/src/bin /usr/src/sbin /usr/src/distrib/utils /usr/src/usr.bin
# Programs we want crunched
progs init sh reboot ls x_dhclient route ftp mount newfs mount_ffs cat cut grep ifconfig mv rm sleep tput
# make a link from sh to -sh in the event that a script or program calls -sh
ln sh -sh
# mount_mfs is a link to newfs
ln newfs mount_mfs
# List of libs that crunchgen needs to examine for dependencies
libs -lz -lutil -lcrypt -ll -ledit -ltermcap -lm
You will need at least the following sets from the NetBSD FTP site:
create bin,etc,dev,root,sbin,var,var/db,var/run
/etc/fstab need only contain the line "/dev/md0a / ffs rw 1 1"
/etc/dhclient.conf should have something like "send dhcp-client-identifier "Reaper";"
Bootstrapping is fairly straight forward. Installboot and the associated files in /usr/mdec should let you boot FAT, FFS, and ISO9660. I have successfully booted USB key chains that use SCSI over bulk transfers on all the machines that support booting from USB. However, I've only had success using key chains that use ATAPI over bulk on the latest Intel 915 boards.
ISO9660 booting is a bit more complex. You'll need to create a 1.44 or 2.88 MB floppy image with makefs. Then use vnconfig to attach the image file so that you can boot strap it. Once you have that image set up and boot strapped you can write it to a CD using El-Torito floppy disk emulation with cdrecord or your favorite cd mastering application.
Since we are only using the DB to create a dhcpd.conf file and a flat hosts file, the table is pretty sparse. There's no reason you couldn't use DMIdecode to dump the processor name, type, speed, model, stepping, cache sizes and speeds, etc.
variable | var type | type |
Hostname | varchar(255) | Primary key and unique |
IP | varchar(255) | unique |
MAC address | varchar(255) | unique |
GUID | varchar(255) | unique |
Serial number | varchar(255) | unique |
Destination OU | varchar(255) | |
Comments | varchar(255) |
The scripts are going to depend on what database and script solution you want to use. We are using PHP MySQL, Perl, and ActivePerl. If you get stuck on something here, feel free to email me. We are still working out some of the special cases, so I prefer not to post what we have until it's been tested some more.


text:
My son rolled down driver electric window (96 Toyota Avalon) in very cold weather and it got stuck. This happened last winter also. Mechanic said to push down on window when pushing the window button to "reset" the switch. I tried and tried but nothing happened. There is no motor sound when trying the switch. All other windows work fine with their switches in the main panel on driver door, which are lit. The driver window switch light is not on. I have appt. with mechanic tomorrow, but will try my own fix if any of you have some ideas.
Thanks! |
Follow-Up Postings:
If you have the "express down" feature, it may be stuck in limbo because the "express-down" feature was engaged and it may not have completely made it all the way down to trigger the system back to 'normal' mode. There may be ice in the track(s) or the window seals are very stiff and/or stubbing on the glass. Try pushing down on the glass to see if it will move a tad more. It might help to have an assistant hold the button/toggle switch in the down position, but not into the express down. If that doesn't budge anything, then repeat while momentarily moving the window switch into the 'express down' position. Be prepared to quickly remove power from the regulator motor in case its gets stalled and power continues to apply even though the window switch has been returned to neutral. To do this, turn the ignition key to off. If this does not remove power, the only option left that I know about is to undo a battery cable. It'll probably trip a breaker or blow a fuse before you can remove the battery cable. that reminds me - look for blown fuse or tripped circuit breaker for the power window circuit. If you can't get the window to budge downward, is there enough glass sticking up that you asist it upward when pushing the "up" button"? I suspect that the express-down feature needs a bit of adjustment at the bottom of the window's displacement. |
Thanks jemdandy! I tried pushing down hard on the window while pushing the down button (same as the express button, but don't hold down as long) many times with no results. Also tried pulling up when pulling up on the button to close window with no result. Did not look for fuse, as I saw that the other 3 windows were working and thought they would all be on the same fuse. Unfortunately I did not get to read this until today, so it's at the mechanic now. I'll let you know what it was. Thanks again. |
Please Note: Only registered members are able to post messages to this forum. If you are a member, please log in. If you aren't yet a member, join now!
Return to the Cars Forum
Information about Posting
- You must be logged in to post a message. Once you are logged in, a posting window will appear at the bottom of the messages. If you are not a member, please register for an account.
- Please review our Rules of Play before posting.
- Posting is a two-step process. Once you have composed your message, you will be taken to the preview page. You will then have a chance to review your post, make changes and upload photos.
- After posting your message, you may need to refresh the forum page in order to see it.
- Before posting copyrighted material, please read about Copyright and Fair Use.
- We have a strict no-advertising policy!
- If you would like to practice posting or uploading photos, please visit our Test forum.
- If you need assistance, please Contact Us and we will be happy to help.
Learn more about in-text links on this page here


text:
Item title reads - Fires scorch 300 square miles.
California, America (USA).
Various shots fires raging on hillside. M/S fire fighters at work. M/S grass and trees ablaze. M/S men beating out the fires. M/S's burning grass. M/S burning house. M/S fireman dragging hose into position. M/S directing hose on building. Various shots burnt out area.


text:
Wolfenbüttel, 1694
An edition of Cluver's Introductio with 43 maps of Africa, America, Asia, World, etc. : Introductio in omnem geographiam veterem aeque ac novam olim studio & opera Joh. Bunonis. In multis passim correctior curante J. Reisko. Wolfenbuttel, sumptibus Haeredum Buninianorum Typis Bismarck, Annon MDC XCIV (1694). Original book: 4to (approx. 21 x 17.5 cm), with illustrated title page, and 43 (42 folding) copperplate printed maps including the world map, maps of the continents (America, Africa, Asia, and Europe), and all regions. 608 pages with dedications, table of contents, and index. Book #AB-12
Click Here for Large Image of America Click Here for Large Image of Africa
Click Here for Large Image of Cover
The two men principally involved in the German editions were Conrad Buno (c.1613-1671), and his brother, Johann Buno (1617-1697). Conrad was an engraver and publisher at the court of Wolfenbüttel. Johann was a theologian and pedagogue in Lüneburg. This map and the 1661 Cluver-Johann Buno maps are close copies of each other. They both are modeled after the 1641 Cluver-Conrad Buno map of Africa. Like the 1661 Cluver-Johann Buno map, this map is larger than the 1641 map and, as a result, has numerous placenames added to it. Much of the nomenclature is decidedly old; for example, Aethiopia Inferiors Pars is placed along the Southern African coast. For the interior, this map follows the 1624 Hondius and the 1617 Blaeu folio maps. This map is readily distinguished from the 1661 Cluver-Johann Buno map by the inclusion of the imprint for the engraver for this map, 'Herman Mosting Sculp: Lüneburg', at the bottom left of the map. In addition to engraving this map of Africa, Herman Mosting of Lüneburg engraved other maps in the book. The remaining maps in the book were engraved by Martin Hailler whose imprint appears on some of the maps. It appears that with Conrad Buno's death in 1671, new engravers were needed for the new editions of the book.
The map of Africa and the other maps are approximately 21 x 25.5 cm each. There are two known editions containing this Philipp Cluver - Johann Buno - Herman Mosting map of Africa. The first was published in 1686 in Wolfenbüttel by the widow of Conrad Buno (Viduae Conradi Bunonis). The second edition was published in 1694 by the Heirs of Conrad Buno (Haeredum Buninianorum), also in Wolfenbüttel. This second edition was edited by Johann Reiske (1641-1701).
Betz, Map #140. Shirley, Maps of the World, Map #425. Burden, Maps of America, Map #360.
Fine example. Folding maps are in fine condition. Some spotting and fingermarks, slight browning, placnames of some maps with some old underlining. Bound in contemporary vellum.
To order this map, CLICK HERE
For further information on ordering, CLICK HERE.
Home About Us Index To All Maps Map References Map Conditions & Descriptions Ordering Information Useful Map Links E-Mail Us Join Our Mailing List
Hemispheres Antique Maps & Prints Dr. Richard L. & Penelope W. Betz Phone: 603-446-7181 Fax: 603-446-2301 E-mail: firstname.lastname@example.com


text:
Alien: Isolation won't be upon us till October, but it's never too early to start thinking about how you might not expire of enormous puncture wounds. Here are some things I tried while playing the game at Creative Assembly's Horsham HQ last year - top tricks and tactics for when life has lost its charm. Mind you don't get blood on the carpet.
Hit it!
Ha ha ha ha ha ha! Oh wait, you were serious? I guess I can't blame you. Certain other Alien/Aliens games allow the player to overpower the Xenomorph, shoving it back when it moves in for the kill, or even clubbing it into submission - an unhelpful precedent. Try that on Creative Assembly's Alien and it'll tear you up like a crisp packet. No, backstabbing won't work either. The creature's almost twice your height - how are you going to reach its jugular? Do Aliens even have jugulars?
Shoot it?
Bullets have worked against Aliens in the past, but Creative Assembly has strongly implied that (a) there aren't any guns on the Sevastapol space station that are meaty enough to take down this one, and (b) ammo will be scarce. Shooting at the Alien is probably just going to make it angrier while giving away your position, then. Resist the temptation.
Shoot something else, then!
Besides the Alien, you'll run into (or at least, speak to) fellow human survivors while exploring the space station, plus a sinisterly albino breed of android. It's implied that some of these entities will take exception to your presence: as creative lead Alistair Hope has hinted, "there are characters on the station that are in a very similar position to you, trying to survive, and how they react to the situation varies, and you'll get to see how that plays out."
Given that the Alien is supposed to be your main antagonist, it's probable that your weapons will be rather more effective against these unspecified foes - but mind you don't alert the Alien in the process. I can well imagine a scenario in which Amanda must find her way through an area that's patrolled by both the Alien and a number of theoretically disposable rogue androids. How will she dispose of the latter, without riling the former? As the classic proverb goes, "one should always pick the lesser of two evils, because at least it won't chew a hole in your forehead".
Open a door!
This isn't Star Trek, with its purring elevators and quietly tinkling terminals. The mechanisms of which the Sevastapol is composed are rickety, ogreish, petulant hummocks of user-unfriendliness, each seemingly designed by an engineer with no ears. If you move from one chamber to the next, the Alien is going to know about it, and when the Alien knows about something it generally tries to eat it.


text:
Branch Events
The Butler Did It - Mystery Book Discussion - Wicked Autumn By G.M. Malliet - N.R. Branch
For adults. Copies of the book are available at the Adult Information Desk. New members are welcome. For more information, call the North Ridgeville Branch Library at 440-327-8326.
- Date:
- Location:
- North Ridgeville Branch Library
35700 Bainbridge Road
North Ridgeville, OH 44039
(440) 327-8326(440) 327-8326 - Openings:
- Unlimited


text:
Blog | Comments |
WoW | 24 Comments |
Recent Comments:
The Queue: Short attention span edition {WoW}
Sep 13th 2010 11:35AM Does WoW.com keep track of just how much comments get upvoted and downvoted? I think it would be neat to see which comments have been the most-upvoted and the most-downvoted!
Call for Submissions: Confessions of a noob {WoW}
Sep 3rd 2010 3:13PM When I first started playing a Holy Paladin at end-game, I didn't realize that that stacking arcane "buff" was actually a debuff. I was so excited about *finally being able to dispel magic debuffs* (my main is a druid) that I didn't stop to think about why it was only the mage that was getting stacking debuffs.
The Queue: Now, that's a beard {WoW}
Aug 26th 2010 11:34AM Short answer: no. It was answered in the druid column comments (of all places!): http://www.wow.com/2010/08/24/shifting-perspectives-beta-build-12803/#comments
Cataclysm Beta: Guild advancement Q&A {WoW}
Aug 18th 2010 3:18PM I remember reading a while back that people that are in guilds tend to play longer and more often. It makes business sense to encourage players to join guilds if it keeps people playing longer. You could argue this will discourage unguilded players from playing altogether, but I suspect the numbers play out in Blizzard's favor.
Shifting Perspectives: Balance DoTs in Cataclysm {WoW}
Jul 31st 2010 7:05AM I see that I'm not the only one who plays with the profanity filter turned on!
The Daily Blues {WoW}
May 14th 2010 7:19AM http://adblockplus.org/en/
Insider Trader: 7 things that should stay in Cataclysm {WoW}
Apr 26th 2010 4:54PM @Travieso
It costs the same whether you farm it or buy it with gold because you could have exchanged those materials for gold. http://en.wikipedia.org/wiki/Opportunity_cost
Breakfast Topic: World PvP {WoW}
Apr 8th 2010 10:58AM I, for one, have extremely fond memories of world PVP on the Isle of Quel'Danas. A few well-timed gankings often led to epic PVP battles between impromptu raid groups that rolled back and forth across the Isle for hours. Here's hoping that the Tol Barad will re-create this phenomenon.
Breakfast Topic: PC voices {WoW}
Apr 6th 2010 8:47AM Female humans!
"I like to fart in the tub."
The first time I heard that one, I lost it.
Breakfast Topic: I threw that away, d'oh {WoW}
Mar 31st 2010 9:47AM David, I think part of the fun of levelling is supposed to be happening upon interesting quest lines. If Blizzard announced all of the interesting quests, there would be no joy of discovery. Sure, you might miss a few, but the ones you stumble upon and complete are all the better.


text:
Baker–LePain JC et al. – The rs288326 and rs7775 FRZB single–nucleotide polymorphisms (SNPs) are associated with the shape of the proximal femur. The presence of the rs288326 SNP alters the relationship between proximal femur shape and incident radiographic hip osteoarthritis (OA). These findings suggest that FRZB may serve an important role in determining hip shape and may modify the relationship between hip shape and OA.
Methods- A nested case–control study of Caucasian women, age ≥65 years, from the Study of Osteoporotic Fractures cohort was performed.
- Cases (n = 451) were defined as subjects with radiographic evidence of incident hip OA during followup, while controls (n = 601) were subjects in whom no radiographic hip OA was identified at baseline or followup.
- Statistical shape modeling (SSM) of the digitized hip radiographs was performed to assess the shape of the proximal femur, using 10 independent modes of shape variation generated by principal components analysis.
- In addition, center–edge angle and acetabular depth were assessed as geometric measurements of acetabular shape.
- The association of the rs288326 and rs7775 FRZB variant alleles with hip shape was analyzed using linear regression.
- The effect of these alleles on the relationship between hip shape and radiographic hip OA was analyzed using a logistic regression model with or without inclusion of interaction terms.
- The rs288326 and rs7775 alleles were associated with the shape of the proximal femur (SSM mode 2).
- There was a significant interaction between the rs288326 SNP and proximal femur shape (SSM mode 2) in predicting radiographic hip OA (P for interaction = 0.022).
- Among subjects with the rs288326 variant allele, there was an increased likelihood of radiographic hip OA in association with increasing quartiles of proximal femur shape mode 2 (for the fourth quartile of mode 2, odds ratio 2.5, 95% confidence interval 1.15, 5.25; P for linear trend = 0.02).


text:
Family Calendar & Concerts
Thrift Shop Grand Opening (Fri. Jan 30, 2015 5:00 pm - Sat. Jan 31, 2015 12:00 am)
Contact Info:
Arthur, IL
The Arthur MCC Thrift Shop, 1065 E Columbia in Arthur, will have a Grand Opening on Friday & Saturday, January 30th and 31st beginning at 10 am. This is a nonproft thrift shop operated through Mennonite Central Committee. The proceeds will benefit local and global charities. To donate please call or email.
Matt Vollmar & The Great Romance Fundraiser concert (Fri. Jan 30, 2015 7:00 pm - 10:00 pm)
Contact Info:
Belleville, IL
Matt Vollmar & the Great Romance will be in cocnert with Nick Bifano & The Innocents and Chris Habermehl on Friday, January 30th at 7pm at the East High School, 2555 W. Boulevard on Bellville. This is a fundraising concert for medical expenses for Little Janet who has been battling a malignant brain tumor for almost 2 years. Tickets will be available at the door for $10. Please call or go online for details or check facebook for the Praying for Little Janet page.
Refresh Women's Conference with Pam Peoples (Fri. Jan 30, 2015 7:00 pm - 10:00 pm)
Contact Info:
Decatur, IL
Pam Peoples and Brenda Nevitt will be the main speakers at the Refresh Women's Conference, Friday and Saturday, January 30th and 31st at GT Church, 500 S. 27th Street in Decatur. The conference begins Friday at 7pm and concludes Saturday at Noon. For details or to register, please call or go online.
Winter Jam (Fri. Jan 30, 2015 7:00 pm - 10:00 pm)
Contact Info:
Schiller Park, IL
This years Winter Jam 2015 features Skillet, Jeremy Camp, Fransesca Battistelli, Building 429, Family Force 5, Newsong, For King and Country, Blanca, About a Mile and Veridia, with speaker Tony Nolan. The cost is $10 cash at the door. Friday, January 30th at All State Arena, 6920 N. Mannheim Rd in Schiller Park, doors open at 6pm and the concert starts at 7pm. For details, please go online.


text:
Page 1 of 4
HUBLI: An average advocate from Hubli, Jagadish Shettar has seen almost all posts in politics - Hubli-Dharwad councillor, mayor, opposition leader in the assembly, BJP state president, Speaker, minister, and now chief minister. The last is a bayasade banda bhagya (unexpected luck).
His unorthodox political personality, strong RSS background and loyalty to the party catapulted him to the present position. The 58-year-old leader from the Lingayat community, who was baptized through the Jan Sangh in the early 1990s, saw a steady rise in his career. Hailing from a family of politicians, he has a strong political background.
His father, SS Shettar, was five-time corporator from Hubli-Dharwad Municipal Corporation, representing the Jan Sangh. His uncle Sadashiv Shettar was the first Jan Sangh leader in the South to get elected to the state legislative council from Hubli city in 1967.
Born in Kerur village of Badami taluk in Bagalkot district, Shettar was a practicing lawyer for 20 years at the Hubli Bar before beginning his political journey with the ABVP and RSS. He was elected to the Karnataka legislative assembly for the first time in 1994 and was re-elected MLA from Hubli Rural for four successive terms.
In 1999, his political career began its ascent when he was chosen opposition leader in the legislative assembly and went on to become state BJP president in 2005. When the BJP formed its coalition government with the JD(S) in 2006, Shettar was given the prime revenue portfolio, quite by default.
Shettar was not given the same treatment when the BJP government came to power for the first time in 2008, thanks to his one-time bete noire and colleague BS Yeddyurappa. He had to settle for the Speaker's post.
Apparently, Yeddyurappa was apprehensive of Shettar's emergence as a parallel leader in the community. Shettar retaliated by joining the Reddy brothers, who had revolted against Yeddyurappa in 2009, to make a grand entry into the cabinet as minister for rural development and panchayat raj.
In 2011, Yeddyurappa took revenge against Shettar by backing Sadananda Gowda for the CM's gaddi, soon after quitting on charges of his involvement in illegal mining. After a see-saw battle for four long years, Shettar seems to be having the last laugh now.
Filed by Kattimani/Cleared by Naheed
Stay updated on the go with Times of India News App. Click here to download it for your device.
Interest Network
itimes | Email