Start Edge Animate when is in the screen

I've come across a few sites that will tie window scrolling with animation. When used in a subtle, small fashion, this is kind of cool. When used to change large portions of the view or really screw with scrolling, I detect it. Like most things, it all comes down to how you use it I suppose. But I was thinking recently - how can we do this with Edge Animate?

Change edgePreload.js

In a file calles something_edgePreload.js you find a line similar to the follow:

    if (AdobeEdge.bootstrapLoading) { 
        signaledLoading = true; 
        AdobeEdge.loadResources = doLoadResources; 
        AdobeEdge.playWhenReady = playWhenReady; 

Replace playWhenReady with false.

Change edgeActions.js

First of all you have to insert a function to decide if an element is in the visible part of the screen.

function isScrolledIntoView(elem) {
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom <= docViewBottom) 
            && (elemTop >= docViewTop));

This function returns True if an element is in a visible portion of the screen.

Now we have to change the main function to check it and then play the animation. Here the complete code of an edgeAction.js.

(function($, Edge, compId){
var Composition = Edge.Composition, Symbol = Edge.Symbol; 
   // aliases for commonly used Edge classes

   //Edge symbol: 'stage'
   (function(symbolName) {
       var showAnimation = true;
       function isScrolledIntoView(elem) {
            var docViewTop = $(window).scrollTop();
            var docViewBottom = docViewTop + $(window).height();

            var elemTop = $(elem).offset().top;
            var elemBottom = elemTop + $(elem).height();

            return ((elemBottom <= docViewBottom) 
                    && (elemTop >= docViewTop));

      Symbol.bindSymbolAction(compId, symbolName, 
                    "creationComplete", function(sym, e) {
          var animSize = sym.getDuration();

          if(!isScrolledIntoView('.EDGE-1931783')) {
	        setTimeout(function() { sym.stop(); }, 0);    

           window.onscroll = function(e) {
              if(isScrolledIntoView('.EDGE-1931783')) {
                  if (showAnimation) {
                    showAnimation = false;
   //Edge symbol end:'stage'

})(jQuery, AdobeEdge, "EDGE-1931783");

EDGE-1931783 is the class of my animation. Replace it with yours.

Happy coding!

Microsoft REST API Design Guidelines

Microsoft is publishing its “REST API Design Guidelines” to the API community:

These guidelines represent a multi-year, cross-company, collaborative process aggregating the collective experience of hundreds of engineers designing, operating, and running global scale cloud services from across Microsoft; and listening to feedback on our APIs from customers and partners.  We have attempted to incorporate those learnings along with industry best practices in the API space to create guidelines that API teams across Microsoft use on a daily basis.

Our hope in publishing these guidelines to the greater API community is twofold:

  • First, that we will further stimulate feedback on our APIs and our approach to building them – only through such feedback can we build products that match the evolving needs of our customers.
  • Second, as we have benefitted from others in the API design community who have shared their guidelines, we want to contribute back. We believe that organizations of almost any size building APIs can benefit from having their own design guidelines.  Many companies and even organizations such as the Whitehouse have already published their design guidelines and it’s our hope that by contributing ours to the community conversation, we can add to the body of community knowledge and reusable content so that anyone can draw upon more collective knowledge when looking to set standards and guidelines within their organization.

We recognize that in API design, there are multiple correct ways to do things (ex: snake-case vs. train_case vs. UpperPascalCase vs. …) and we are sharing these design guidelines as what we have settled-upon after much debate among Microsoft colleagues.  We expect that these guidelines will evolve over time and that your feedback will play a part in that evolution.


Naturally, the Microsoft REST API Guidelines document on GitHub went through a number of iterations before being what you can read today.

The effort got started from hearing two key points of feedback from customers:

  • It should be easier to get started with Microsoft APIs – Developers wanted to be able to run the curl tool against an API endpoint and get a human-readable result in just a few minutes
  • APIs for Microsoft cloud services should be consistent – Developers didn’t care that an API to work with an Azure virtual machine and an API to work with a user’s Office 365 documents were developed by different parts of the company, they were both from Microsoft and developers expected consistency.

One of the goals of the effort was to find the right balance of detail in the guidelines.  We wanted a document that sufficiently codified best practices, but was also approachable for individual contributor engineers and technical product/program managers. 

Relationship with OData

The OASIS Open OData standard provides a great level of detail for API developers seeking wire-level interoperability; and while Microsoft teams are encouraged to follow OData (and benefit from the broad OData ecosystem), there are some cases where it was more specificity than teams needed and some cases where additional information was needed.  For any areas of deviation, we have worked to feed information back to the OASIS OData Technical Committee and many aspects of the latest OData v4.0 and OData v4.01 incorporate learnings from evolution of the Microsoft REST API Guidelines.

Relationship with the Open API Initiative (OAI)

We are proud that Microsoft is a member of the Open API Initiative (OAI), the evolution of Swagger.  As the scope of OAI/Swagger efforts have expanded from a framework and tooling to also include a specification, we believe there are more opportunities ahead for Microsoft colleagues to engage with the OAI community to continue to evolve both.

Installing Google Play Services in the Microsoft Visual Studio Android Emulator

Installing the Google Play Services in Microsoft’s Visual Studio Android Emulator that comes with Visual Studio 2015 is easy to do. This installs the Google Play store and related services, which makes it possible to install other apps to your Android image.

  1. Download the Google Apps package from the Team Android site. Make sure that you match the version of the apps to the version of Android that your emulator is for. The default emulator is for Kit Kat, but this also works for Lollipop.
  2. Start the Microsoft Visual Studio Android Emulator
  3. Start the Android virtual machine that matches the version of the apps that you downloaded for (default would be Kit Kat).
  4. Unlock the Android VM so you get to the home screen
  5. Drag and drop the downloaded Google Apps package in to the Android VM. You will get a prompt to install the apps that looks like this: Install-Goople-Play-Microsoft-Android-Emulator
  6. Select the “Install and Shut Down” option.
  7. Start the VM again
  8. Click the All Apps button in Android and you will see the Google Play store.
  9. When you open the Google Play store, you will need to login with your Google account and make a new one.

Once you have the Google Play store installed, you should be able to install other common applications. I tested this by installing Chrome and it worked well.

Microsoft Orleans


Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud.

Orleans has been used extensively in Microsoft Azure by several Microsoft product groups, most notably by 343 Industries as a platform for all of Halo 4 and Halo 5 cloud services, as well as by a growing number of other companies.

Scalable by Default
Orleans handles the complexity of building distributed systems, enabling your application to scale to hundreds of servers.
Low Latency

Orleans allows you to keep the state you need in memory, so your application can rapidly respond to incoming requests.

Simplified Concurrency
Orleans allows you to write simple, single threaded C# code, handling concurrency with asynchronous message passing between actors.

Introducing the free Microsoft R Client

Over the years, we've shared several posts on using the ScaleR package to import, process, visualize and analyze large data sets with R. Until now, you needed to have access to a Microsoft R Server license to take advantage of the package. Now, you can use all of the capabilities of ScaleR free of charge with Microsoft R Client for Windows, which is available for download now.

Microsoft R Client is a free, community-supported, data science tool for high performance analytics. R Client is built on top of Microsoft R Open so you can use any open source R packages to build your analytics. Additionally, R Client introduces the powerful ScaleR technology and its proprietary functions to benefit from parallelization and remote computing.

R Client allows you to work with production data locally using the full set of ScaleR functions, but there are some constraints. On its own, the data to be processed must fit in local memory, and processing is limited up to two threads for ScaleR functions. To benefit from disk scalability, performance and speed, you can push the compute context to a production instance of Microsoft R Server such as SQL Server R Services and R Server for Hadoop.

Here's a short video that explains the capabilities of Microsoft R Client for local data processing, and how you can push computations to a remote Microsoft R Server for even greater power.


If you're new to big-data functions in Microsoft R, a great place to start is the The RevoScaleR Getting Started Guide. If you want to dive deeper, the full documentation set is available on MSDN. To get started with Microsoft R Client, follow the instructions in the installation guide linked below.

MSDN: Install Microsoft R Client on Windows

Apollo 11: do they accept pull requests?


The system responsible for the first moon landing is now readily available online, after an enterprising former NASA intern uploaded the Apollo Guidance Computer code to Github this week.

Although the code for the MIT-designed system has long been available to interested researchers, it's never been quite this at hand. Quartz has an excellent, thorough breakdown, but the jokes and asides are a special point of interest.

Reddit has already taken a look under the hood, and uncovered some of the best tidbits. For one, you'll find "BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc" in there. In another spot, you can see a note about "TRASHY LITTLE SUBROUTINES."

One particularly poetic coder even included a bit of Shakespeare, although the reason for it is a little opaque now:






You can explore the code yourself here.

Continuous: C# and F# IDE for the iPad by Frank A. Krueger


Continuous gives you the power of a traditional desktop .NET IDE - full C# 6 and F# 4 language support with semantic highlighting and code completion - while also featuring live code execution so you don’t have to wait around for code to compile and run. Continuous works completely offline so you get super fast compiles and your code is secure.

Continuous gives you access to all of .NET’s standard library, F#’s core library, all of Xamarin’s iOS binding, and Xamarin.Forms. Access to all of these libraries means you won’t be constrained by Continuous - you can write code exactly as you’re used to.

Real Work, on the iPad

I love the iPad but was still stuck having to lug around my laptop if I ever wanted to do “real work”. Real work, in my world, means programming. There are indeed other IDEs for the iPad: there is the powerful Pythonista app and the brilliant Codea app. But neither of those apps was able to help me in my job: writing iOS apps in C# and F#. I couldn’t use my favorite languages on my favorite device and that unfortunately relegated my iPad to a play thing.

Well it took me a bit of time, but I finally have it: a .NET IDE on the iPad (and phone too!).

But it’s not “just an IDE”. I didn’t want it to simply be sufficient - I wanted it to be great. I also thought it was a nice time to push the state of the art in .NET IDEs a tad.

For ages compiled languages like C# and F# have forced a sequential development loop on programmers: the Code-Compile-Run-Test loop. We code something up, wait for it to compile, then wait for it to deploy and run, then we get to test it.

I hate waiting for compilation and deployment so I designed Continuous to minimize those steps. It does this by eagerly compiling your code - never waiting for you to tell it when to start. It runs your code as soon as those compiles complete successfully and displays the results of that execution right next to your code. Now you can focus on the code and the results of that code instead of being distracted by all the silly machinery of a compiler and IDE.

The benefits of making compilation and execution fast have surprised me. My iPad has become my favorite place to write apps now.

  • The UI is visualized right next to the code that is building it.
  • I am no longer constrained by designers with their static view of the world - the UI objects in Continuous are live and interactive.
  • I can use real code files but still visualize objects out of them as if they were scripts.
  • I can focus on building one screen of my app at a time and see the results without having to navigate from the first screen to see the screen I’m working on over and over.

I could argue that I’m a more efficient programmer thanks to these changes. Perhaps I am more productive. But the truth is, I’m just happier using Continuous. I play with GUIs more now, trying new ideas and tweaking things left and right. It’s quite liberating and plain old fun to get nearly instant feedback on your work.

I hope you find these features as exciting as I do. Please visit the website if you want more details on them, or throw caution to the wind and buy Continuous on the App Store now to see them first-hand.

Standing on the shoulders of giants

Continuous wouldn’t be possible if it wasn’t for .NET’s great open source ecosystem. Continuous uses Roslyn for compiling C# and FSharp.Compiler.Service for compiling F#. Continuous also relies heavily on Cecil (what problem can’t be solved with Cecil?) Also, Xamarin.Forms could only be included thanks to Xamarin open sourcing it.

And of course, none of this would be possible without mono and Xamarin.


I wrote Continuous in F# using Xamarin Studio. The code is more functional than object oriented and uses a redux style architecture. I don’t think I could have built such a large app with its sophisticated requirements without F# at my side. Three years ago I wasn’t sure how to write GUI apps in a functional language, now I question why I haven’t always done things this way.

Internet Access Is Now A Basic Human Right


People may joke that others spend too much time on the internet, but this intricate series of tubes has become an important part of everyday life—so much so that it’s become a human rights violation to take it away.

That’s according to the United Nations Human Rights Council, which passed a non-binding resolution in June that condemns countries that intentionally take away or disrupt its citizens’ internet access.

The resolution was passed last Friday, but was opposed by countries including Russia, China, Saudi Arabia, South Africa, and India. The issue was with the passage that “condemns unequivocally measures to intentionally prevent or disrupt access to our dissemination of information online.”More than 70 states supported the resolutions, according to a statement released by Article 19, a British organization that works to promote freedom of expression and information. Thomas Hughes, the executive director of Article 19, wrote:

“We are disappointed that democracies like South Africa, Indonesia, and India voted in favour of these hostile amendments to weaken protections for freedom of expression online...A human rights based approach to providing and expanding Internet access, based on states’ existing international human rights obligations, is essential to achieving the Agenda 2030 for Sustainable Development, and no state should be seeking to slow this down.”

The resolution notes what many of us already know: It’s important to increase access to the internet, as it “facilitates vast opportunities for affordable and inclusive education globally,” or provides other resources for education, especially across the digital divide. In accordance with the 2030 Agenda for Sustainable Development, the organization also recognized that the spread of technology has the “great potential to accelerate human progress.”

It’s all here: your news organizations, your job-hunting resources, and your credit card statements. It’s become impossible to live without basic internet access.

Other countries have already stressed the importance of open access, including President Barack Obama, who in 2015 said that “today, high speed broadband is not a luxury, it’s a necessity.”

The resolution also highlights a number of issues that need to be addressed, including that the issue of freedom of expression on the internet. Also among the points presented were statements:

  • Calling upon all states to address security concerns in “a way that ensures freedom and security on the Internet,”
  • Ensuring accountability for all human rights violations and abuses committed against persons for exercising their human rights,
  • Recognizing that privacy online is important,
  • Stressing the importance of education for women and girls in relevant technology fields.

The UN can’t enforce resolutions legally. Rather, they’re issued to provide guidelines for participating nations and to put pressure on any that may have dissenting views. These are just general statements on how governments should shape laws when it comes to the internet. It’s nice to see, even if it does little beyond filling a few pieces of digital paper.

The next step is for those countries to start actively addressing problems, including laws pertaining to freedom of expression and how those rights can be abused to spread violence, terrorist ideals, and harassment. The more we discuss the problems that come along with the free reign of the internet, the closer we’ll get to Valhalla (or so I’ve heard).

How to update the data in listview in Xamarin.Forms?

First you add a new class as a ViewModel like:

public class RoomViewModel : BaseViewModel
   [here following code]

If you don't have BaseViewModel try to download from nuget Refractored.MvvmHelpers. Then in your class define an observable collection like

  public ObservableCollection<RoomRecommandation> _roomSuggestionList = 
               new ObservableCollection<RoomRecommandation>();
  public ObservableCollection<RoomRecommandation> Recommendations
     get { return _roomSuggestionList; }

In your ContentPage add a listview like:

<ListView ItemsSource="{Binding Recommendations}">
       <Grid Padding="10" RowSpacing="10" ColumnSpacing="10">
           <RowDefinition Height="" />
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="" />
           <ColumnDefinition Width="Auto" />
         <controls:CircleImage Grid.Column="0" BorderColor="#DDD3CB" 
                               BorderThickness="3" WidthRequest="66"
                               Source="{Binding Image}" />
         <Label Grid.Column="1" Text="{Binding Description}" 
                               VerticalOptions="Start" />
         <Label Grid.Column="2" Text="{Binding Price, StringFormat='£{0}'"
                               FontSize="Small" VerticalOptions="Start" />

Then in your ContentPage code:

  RoomViewModel vm = null;
  public RoomPage ()
      InitializeComponent ();

  public void LoadData()
      if (vm == null)
          vm = new RoomViewModel();
          BindingContext = vm;

Happy coding!

Microsoft CEO and UWM grad Nadella on Brexit vote: 'We're going to continue to invest'


Despite international fears about the impact on technology companies of the United Kingdom’s decision to exit the European Union, Microsoft Corp. CEO Satya Nadella this week said the vote will not impact the Redmond, Wash.-based company’s investments – or jobs – in the country.

“When it comes to the U.K., we’ve been there for 30 years and we’re going to continue to invest because it’s a huge market and a place which is pretty core to us,” Nadella said on CNBC. “We’re a global company – 55 percent of our revenues are global – so what happens in Britain and (around) the globe matters a lot to us.”

Microsoft (Nasdaq: MSFT) has more than 3,000 employees in six U.K. offices, according to the company’s website. The country accounts for 7 to 8 percent of Microsoft’s revenue, said Nadella, who's a graduate of the University of Wisconsin-Milwaukee. The company, he said, won’t let the Brexit vote impact investments in the U.K. and won’t remove jobs from the country.

Earlier this year, the company's U.K. chief released a statement, writing a vote to exit the EU could risk investments from Microsoft and other technology companies.

“Our view is that the U.K. should remain in the EU,” Microsoft’s U.K. chief executive Michel Van der Bel wrote. “The U.K. remaining in the EU supports important criteria for continued and future investment by Microsoft and others.”

Seattle-area financial experts said last week it will take years to realize the full effect of the Brexit vote for U.S. companies. Many expect a negative impact on technology companies.



Planet Xamarin

Planet Xamarin