There are many different kinds of cloud offering out there – Amazon AWS, Google App Engine, Microsoft Azure – and they offer different services for the different ways you use cloud. Savvis offers an enterprise-grade cloud infrastructure service, Savvis Symphony, that allows you to maintain and configure your virtual cloud environment – from security to virtual hardware servers. Savvis is focused on “Infrastructure as a Service” (IaaS) where it provides a wide range of managed services for enterprise needs.

Savvis Symphony Virtual Private Data Centre (VPDC) is a virtual data center inside a shared cloud. What makes Savvis stand out among the competition is their end-to-end security service on Savvis Symphony. Savvis provides well-defined security policies and procedures, and ensures compatibility between newer security protections designed specifically for virtualized environments and more traditional, physical security controls. These comprehensive security features and processes are integrated into Savvis Symphony VPDC.

Personally, Savvis is probably the first cloud IaaS provider (and hopefully more to come) that I know of who puts so much emphasis on security for enterprises, giving enterprise businesses a peace of mind when moving to the cloud. Not only do they provide cloud services, but they also provide infrastructure consulting services to help your business streamline and “outsource” your IT department to the cloud.

For more information, check out savvisknowscloud.com or www.savvis.sg.

 

Internet Explorer 10 Platform Preview 1 is available for download today. This is mainly for developers and people who are interested to test out the new features of Internet Explorer 10.

Welcome to the Platform Preview

The Platform Preview is an early look at the Internet Explorer platform so some features are incomplete, some may change, and some may be added. To learn more about this preview of the Web Platform, please see the Internet Explorer 10 Developer Guide. These release notes list new features available in the latest Platform Preview and known issues with those features. To report issues, and provide feedback please click on Report Issue and click Send Feedback.

What’s New in Internet Explorer 10 Platform Preview 1

Internet Explorer 10 Platform Preview 1 is the first public preview of the IE10 web platform. In this release, we are showcasing support for CSS3 Flexbox, CSS3 Grid Alignment, CSS3 Multi-column, CSS3 Gradients on background-images and ECMAScript5 Strict Mode.

 

 

Erik Meijer and Gavin Bierman from Microsoft recently wrote a paper on “A co-Relational Model of Data for Large Shared Data Banks“. They argue that noSQL is really coSQL, and that there is a duality between coSQL and SQL which are simply 2 opposites that coexist in harmony. This is huge, if there is a simple mathematical duality between the 2, then monads and monad comprehensions can provide a common query system which abstracts and simplifies coding for either SQL or noSQL.

It’s a good read, but your brain might melt with some of the mathematics involved.

In this article we present a mathematical data model for the most common noSQL databases—namely, key/value relationships—and demonstrate that this data model is the mathematical dual of SQL’s relational data model of foreign-/primary-key relationships. Following established mathematical nomenclature, we refer to the dual of SQL as coSQL. We also show how a single generalization of the relational algebra over sets—namely, monads and monad comprehensions—forms the basis of a common query language for both SQL and noSQL. Despite common wisdom, SQL and coSQL are not diabolically opposed, but instead deeply connected via beautiful mathematical theory.

Source: A co-Relational Model of Data for Large Shared Data Banks

 

The Singapore police conducted a raid yesterday afternoon on an illegal software ring after a 6-month investigation in cooperation with Microsoft. Over a thousand pieces of counterfeit software and a dozen tablet PCs loaded with unlicensed copies of Microsoft Windows 7 were seized in today’s crackdown. Under the Singapore Copyright Act, a person found guilty of infringing copyright can be fined $10,000 for each item or maximum imprisonment of five years.

Here are some tips to avoid purchasing counterfeit software:

  1. Check the labels, packages and discs
    Be suspicious of software products that do not include proof of authenticity, such as a hologram CD, DVD, recovery media, manuals and Microsoft Software License Terms (MSLT). Genuine Microsoft software should appear primarily copper in color and the hologram has a wavy effect.
  2. Buy from a trusted source
    Genuine Microsoft software is published by Microsoft Corp., properly licensed and fully supported by Microsoft or a trusted partner. Buy only from reputable sellers or visit http://www.microsoft.com to purchase genuine Microsoft software and gain access to technical support.
  3. Activation verification
    Before purchasing your software, ask the resellers if they can confirm that it will pass the Windows activation test. Once you receive the software, activate it immediately to determine whether it is properly licensed and genuine.
  4. Mind the price
    If the price for software seems too good to be true, it probably is. Some sellers even advertise Microsoft products for “free,” which is a strong indication that it is counterfeit and likely loaded with malware and malicious code.
  5. Do your research
    Check out http://www.howtotell.com, Microsoft’s anti-counterfeiting site, for more information on how to protect yourself from counterfeit software.


From Singapore Police expose Counterfeit Software Ring in Singapore, posted by Justin Lee on 4/07/2011 (3 items)

Generated by Facebook Photo Fetcher


 

Microsoft Visual Studio Productivity Power Tools is a set of extensions to Visual Studio Professional (and above) which improves developer productivity. Much of these new productivity enhancements are unknown to a lot of developers. This session will showcase most (if not all) the 21 various enhancements that you’re not using yet! Download the Visual Studio Productivity Power Tools here if you haven’t done so!

Date: 7th April 2010 (POSTPONED)
Time: 7pm
Place: Level 22, Microsoft, One Marina Boulevard, Conf Room SINOMB 22CF-12 (60) VTC
Speaker: ME! :)

 

If you are an ALM practitioner, lead, or manager who is passionate about mastering your craft, the Microsoft Application Lifecycle Management (ALM) practitioner conference will help you gain deeper insight into your application lifecycle.

You will also discover and learn about industry best practices that address additional development challenges, and how Microsoft’s ALM Solutions enable and support those best practices. The ALM practitioner conference will provide you with insights on how to use Visual Studio 2010 Ultimate for making better design, implementation, and technology selection decisions.

Who Should Attend
TDM, IT Manager, Project Manager, Application Manager, Architect, Development Team Leader, Developer, Programmer, Test & Quality Manager

Date
21st April 2011 (Thursday)

Time
9:00am to 4:30pm
(Registration and breakfast starts at 9am)

Venue
Auditorium, Level 29, Tower 2,
Petronas Twin Towers, KLCC

Register here.

 

In light of the recent explosion of mobile smart phones, many people have asked the same question – “Which smart phone is the best?” There are many phones that are better in some ways than others, yet doesn’t perform as well in other ways. Different people have different usages and different needs out of their phones. The better question when getting a smart phone to first ask – “Which smart phone operating system is for me?” – before choosing which phone to buy.

Apple iOS

Let’s start with one of the most popular mobile OS in Singapore, Apple iOS. It’s simple, responsive, clean and consistent interface, with lots of applications and games from the Apple App Store to extend the functionality of your phone. It’s very app-centric where you have a whole range of apps for your various needs. If you’re a person who just wants a phone that can give you a “no fuss, no muss” experience, Apple iOS is for you. However, if you’re looking to do more than what Apple has dictated for your phone, read on.

Google Android

Google Android OS takes the opposite spectrum of Apple. It’s highly customizable, flexible, with various complex interactions to use the phone. The integration with all things Google (e.g. Gmail, Google Maps, Google Calendar, YouTube, etc) is very tight with majority of the features found on the web also available on the Android apps. The home screen allows you to put various widgets, icons, folders, etc., up to your heart’s content. If you’re a person who uses the various Google services and loves to personalize your phone, Google Android is for you. However, if you feel lost without some direction, or just require a simplistic use of your phone, you might want to consider the other mobile OSes.

RIM BlackBerry

RIM BlackBerry has always been strong in the mobile enterprise messaging space. With its interface primarily focused on messaging together with its secured encryption and private BlackBerry network, it makes a very compelling reason to use this phone as a business phone or a messaging device. If you’re a person spends a lot of time communicating through text messages, instant messaging, emails, or just simply typing a lot, BlackBerry OS is for you.

Microsoft Windows Phone 7

Microsoft Windows Phone 7 is a new player in the mobile OS space. It focuses on putting information at your fingertips. The tiled home screen allows you to consume information quickly with a flick of a button. The entire phone OS interface is geared towards showing information efficiently, effectively, plainly, without fluff so you can quickly understand what information is presented to you. If you’re a person who consumes loads of information every day, from reading emails to social feeds, from photos to the news, give Windows Phone 7 a try. You might just like it.

Summary

There are many similarities between all the smart phone OSes out there, like the ability to download applications and games or to surf the web with a browser. However, different smart phone OSes are great for different uses and needs, catering for different types of people. So, “Which Mobile Smart Phone OS is for You?”

Apple iOS Simple, easy, no fuss mobile OS that’s app-focused.
Google Android Flexible, customizable to suit your style. Tight integration with various Google services.
RIM BlackBerry Focused on messaging with secured encryption.
Microsoft Windows Phone 7 Consuming information quickly, effectively, efficiently.
 

Attend the “Encounter SharePoint® 2010″ workshop and discover how to streamline your business processes and drive productivity. At the event, you will experience hands-on sessions for the latest features of Microsoft SharePoint® 2010. Learn how this new Microsoft collaboration solution can:

  • Improve productivity by gaining more operational insights with centralized administration and new management capabilities to control your SharePoint farms
  • Scale unified infrastructures for better control over IT resources, improve performance of large lists, and protect server farm availability
  • Enable flexible deployments with quick-and-easy installation and configuration to maintain more governance control, centralize SharePoint management and run custom codes

Transform the way you collaborate with Microsoft SharePoint 2010.

Register here for 7th April 2011. (Full)
Register here for 21st April 2011.

Continue reading »

 


Startup Weekend arrives for the second time in Singapore! For 54 intense hours, participants brainstorm, plan, prototype, and pitch a startup concept.

If you’re technical, think of it as a weekend-long hackathon, sort of like a SuperHappyDevHouse, but held at Microsoft’s premises. If you’re non-technical, (what are you doing on this mailing list?) think of it as a chance to practice Powerpoint. Mentors, speakers, and judges include members of AWS’s tech team, serial Internet entrepreneurs, and venture capitalists.

Details: April 29 – May 1, 2011 at Microsoft @ 22 level @One Marina Boulevard (OMB)

Some FAQ:

Do I have to have an idea for a startup? No. There will be lots of people with ideas, so you can always join somebody else’s team.
What is the time commitment? Friday night from 6pm to 11pm; Saturday 10am to 10pm; Sunday 10am to 10pm.
What does it cost? If you register before April 6, $75 for geeks and $88 for muggles. After April 6 it’s $99.  So register soon.
Who’s facilitating? Last year it was Marc Nager. This year, Joey Pomerenke.
What about food? Meng Weng will be cooking his famous sous vide: eggs for breakfast, roast beef and BBQ ribs for lunch, and oxtail for dinner. In case that turns out to be a total failure, Lau Pa Sat is just a short walk away.

For more information go to singapore.startupweekend.org.

 

A client of mine wanted to center a scrollable region (ScrollViewer) in Silverlight whenever it zooms in or out. Currently, whenever you do a zoom, it will zoom in or out based on the upper left hand corner. There isn’t a lot of information regarding this, and many of which doesn’t fit this situation.

Some solutions use ScaleTransform within a RenderTransform which will zoom, however if within a ScrollViewer, it will not show the scroll simply because the view area is constraint. Another solution was to use a Viewbox and apply the zoom there, but I never did get it working.

The one solution that works was to zoom the canvas itself (or in this case I  wrapped it around a LayoutTransformer from the Silverlight Toolkit) and then move the ScrollViewer‘s scrollbar itself to the position I wanted. That’s the gist of the solution, but it’ll require some explanation. Let’s get started.

<Grid x:Name="LayoutRoot">
    <ScrollViewer x:Name="Scroller" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" VerticalContentAlignment="Center" HorizontalContentAlignment="Center">
        <layoutToolkit:LayoutTransformer x:Name="zoomTransformer">
            <layoutToolkit:LayoutTransformer.Content>
                <!-- Some content here -->
            </layoutToolkit:LayoutTransformer.Content>
            <layoutToolkit:LayoutTransformer.LayoutTransform>
                <TransformGroup>
                    <ScaleTransform x:Name="scaleTransform" ScaleX="1" ScaleY="1"/>
                </TransformGroup>
            </layoutToolkit:LayoutTransformer.LayoutTransform>
        </layoutToolkit:LayoutTransformer>
    </ScrollViewer>
</Grid>

The sourcecode above is just a very simple ScrollViewer with a LayoutTransformer in it. I want to get Line 5 to center zoom whenever I zoom in or out. Right now it zooms and stays on the Top Left corner.

First up, I need to get the values of the scrollbar offsets whenever it changes. However, Silverlight 4 doesn’t have ScrollChanged event. You’ll need to simulate this by following this sample code: ScrollViewer Scroll Change Event in Silverlight. In a quick change of the code, you’ll get the following:

<UserControl.Resources>
    <!-- This is from the sample provided at http://dotplusnet.blogspot.com/2010/05/scrollviewer-scroll-change-event-in.html.  It gives us access to an event when the scroll viewer is changed -->
    <Style x:Key="svScrollerStyle2" TargetType="ScrollViewer">
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="VerticalScrollBarVisibility" Value="Visible"/>
        <Setter Property="Padding" Value="4"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush">
            <Setter.Value>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FFA3AEB9" Offset="0"/>
                    <GradientStop Color="#FF8399A9" Offset="0.375"/>
                    <GradientStop Color="#FF718597" Offset="0.375"/>
                    <GradientStop Color="#FF617584" Offset="1"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ScrollViewer">
                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2">
                        <Grid Background="{TemplateBinding Background}">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <ScrollContentPresenter x:Name="ScrollContentPresenter" Cursor="{TemplateBinding Cursor}" Margin="{TemplateBinding Padding}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
                            <Rectangle Fill="#FFE9EEF4" Grid.Column="1" Grid.Row="1"/>
                            <ScrollBar x:Name="VerticalScrollBar" Margin="0,-1,-1,-1" Width="18" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" IsTabStop="False" Grid.Column="1" Grid.Row="0" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Value="{TemplateBinding VerticalOffset}" Orientation="Vertical" ViewportSize="{TemplateBinding ViewportHeight}" Loaded="VerticalScrollBar_Loaded" />
                            <ScrollBar x:Name="HorizontalScrollBar" Height="18" Margin="-1,0,-1,-1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" IsTabStop="False" Grid.Column="0" Grid.Row="1" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Value="{TemplateBinding HorizontalOffset}" Orientation="Horizontal" ViewportSize="{TemplateBinding ViewportWidth}" Loaded="HorizontalScrollBar_Loaded"/>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>

The most important parts are Line 34 and 35, where you set the “Loaded” event of each scrollbar. Within both “Loaded” events, you simulate a ScrollBar ScrollChanged like this:

private ScrollBar _horizontalScrollBar;
private ScrollBar _verticalScrollBar;
private double _relScrollX;
private double _relScrollY;

private void HorizontalScrollBar_Loaded(object sender, RoutedEventArgs e)
{
    // Register a handler any time a user scrolls horizontally
    _horizontalScrollBar = sender as ScrollBar;
    _horizontalScrollBar.Scroll += horizontalScrollBar_Scroll;
}

private void VerticalScrollBar_Loaded(object sender, RoutedEventArgs e)
{
    // Register a handler any time a user scrolls vertically
    _verticalScrollBar = sender as ScrollBar;
    _verticalScrollBar.Scroll += verticalScrollBar_Scroll;
}

void horizontalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
    SaveScrollerValues();
}

void verticalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
    SaveScrollerValues();
}

/// <summary>
/// Save the values of the scroller any time they are changed
/// </summary>
private void SaveScrollerValues()
{
    // This concept is modified from the code at http://social.msdn.microsoft.com/Forums/en/wpf/thread/5202aae5-b2cc-4fc3-aa43-4541fcc856fb
    if (Scroller.ExtentWidth > 0)
    {
        _relScrollX = (Scroller.HorizontalOffset + 0.5 * Scroller.ViewportWidth) / Scroller.ExtentWidth;
    }
    if (Scroller.ExtentHeight > 0)
    {
        _relScrollY = (Scroller.VerticalOffset + 0.5 * Scroller.ViewportHeight) / Scroller.ExtentHeight;
    }
}

The code above is pretty much self-explanatory. I save the relative scroll values and use them when I’m actually scrolling. In order to get the relative scroll values, I need to get current Offset (i.e. current position of the scroll) and add the mid-section of the ViewportWidth then divide that by the ExtentWidth to get the relative scroll position. There’s some math going on, but I’ll add a bit more explanation if I ever get around drawing it out.

Of course, now we need to attach the new style created above with our ScrollViewer.

    <ScrollViewer x:Name="Scroller" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Style="{StaticResource svScrollerStyle2}">
        <layoutToolkit:LayoutTransformer x:Name="zoomTransformer">
            <layoutToolkit:LayoutTransformer.Content>
                <!-- Some content here -->
            </layoutToolkit:LayoutTransformer.Content>
            <layoutToolkit:LayoutTransformer.LayoutTransform>
                <TransformGroup>
                    <ScaleTransform x:Name="scaleTransform" ScaleX="1" ScaleY="1"/>
                </TransformGroup>
            </layoutToolkit:LayoutTransformer.LayoutTransform>
        </layoutToolkit:LayoutTransformer>
    </ScrollViewer>

Now that we’ve got everything set up, let’s do the zooming! Just attach whatever events you’re attaching it to and start zooming. For me, I attached it to a KeyUp event on the Page itself.

private void Page_KeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == Key.X)
    {
        // Shrink the viewbox.
        scaleTransform.ScaleX -= 0.1;
        scaleTransform.ScaleY -= 0.1;
    }
    if (e.Key == Key.Z)
    {
        // Expand the viewbox.
        scaleTransform.ScaleX += 0.1;
        scaleTransform.ScaleY += 0.1;
    }
    zoomTransformer.ApplyLayoutTransform();
    MyContent.UpdateLayout();
    Scroller.ScrollToHorizontalOffset(Math.Max(_relScrollX * Scroller.ExtentWidth - 0.5 * Scroller.ViewportWidth, 0) == 0 ? 0.5 * Scroller.ScrollableWidth : _relScrollX * Scroller.ExtentWidth - 0.5 * Scroller.ViewportWidth);
    Scroller.ScrollToVerticalOffset(Math.Max(_relScrollY * Scroller.ExtentHeight - 0.5 * Scroller.ViewportHeight, 0) == 0 ? 0.5 * Scroller.ScrollableHeight : _relScrollY * Scroller.ExtentHeight - 0.5 * Scroller.ViewportHeight);
}

Just a quick explanation what’s going on. Line 3 to Line 14 does the scaling. You can change the scaling factor however you want depending on how much you want to scale. After scaling, you need to apply the layout transform in order for the zooming to be affected.

Line 16 is just to refresh my content within the LayoutTransformer.Content. You have to do this to get the reflected values on the ScrollViewer on Line 17 and 18.

Here’s where the magic begins. Line 17 and 18 essentially figures out where your scroll offsets are and sets them. There’s more math magic going on here. However, I had a problem where _relScrollX and _relScrollY wasn’t set at all if I didn’t move the scrollbar. So what I did was to use half of ScrollableWidth and ScrollableHeight (0.5 * Scroller.ScrollableWidth) whenever the values were 0 so it wouldn’t continue to zoom from the Top Left. This fixed the centering issues I had.

That’s it! Now you have a zoomed content with your ScrollViewer still able to scroll to your other “hidden” segments of your content.

P.S. The solution was gotten from the Silverlight Forums LayoutTransformer, ScaleTransform and RenderTransformOrigin which I simplified and explained what’s going on here.

© 2009 - 2011 JustinLee.sg Suffusion theme by Sayontan Sinha
Stop SOPA!

SOPA breaks our internet freedom!
Any site can be shut down whether or not we've done anything wrong.

Stop SOPA!