Wintellect Blogs

F# Improvements in Xamarin Studio

Jonathan Wood

9 May , 2016  

shutterstock_197284118

With the (almost) stable release of Xamarin Studio 6 comes a ton of great new improvements. I absolutely love the new dark theme! However, some huge improvements were made to the IDE for F# support, as well. Improvements that I feel may have gone without much notice. So I wanted to help get those improvements out in the open more as well as to recognize the folks that made all of this happen. At the time of this writing, I’m running the alpha build (v6.1) of Xamarin Studio.

Speaking of recognizing folks, huge shout out to Dave Thomas and Jason Imison for all their hard work in getting these improvements into Xamarin Studio. F# in Xamarin Studio would be nothing without these guys.

Project Templates

Xamarin Studio 6 now includes project templates for Xamarin Forms in F#. This is a pretty big update since, before, you couldn’t even add a PCL project in F# in Xamarin Studio.

F# Xamarin Forms Project

With this you can start creating cross-platform mobile applications with Xamarin Forms in F#! While this was doable before, it is much easier without going through a few workarounds to get things working. Just select this project and the templates do everything for you.… Read more

, ,

Wintellect Blogs

NG-Conf 2016 – Day Three Wrap Up

Dave Baskin

6 May , 2016  

The last day of ng-conf 2016 continued with lots of great information. Some highlights:

  • Daniel Rosenwasser gave a good overview of TypeScript and a little bit of its history. He also demonstrated benefits of using TypeScript with Javascript directly. It can be beneficial in catching things in regular Javascript code (serving a similar purpose to the ESLint Javascript lint tool). He also showed some new features coming in TypeScript, like async/await and handling null and undefined types.
  • Aysegul Yonet talked about the new features of pipes in Angular2, including how pipes can be configured to better handle change detection.
  • Ken Synder presented details about transclusion updates. In Angular1 you can now have multiple slots for injecting transcluded elements. The ng-transclude directive now supports a name property and directives can specify multiple transclusion slots that correspond to these names. This allows Angular1 to come closer to how ng-content tags work in Angular2.
  • Matias Niemela gave a whirlwind tour of the new animation features in Angular2. After evaluating the different options of working with animations in the DOM (through CSS transitions, Key Frames, or direct Javascript), they settled on using Javascript, which they call “web animations”. The benefit is that it gives an application very fine-tuned control over animations, works around various issues with key frames and CSS transitions, provides better performance and less UI jank, and allows for better rendering (including in offline scenarios).
Read more

,

Wintellect Blogs

The Future of Angular2, and More Updates From NG-Conf 2016

Dave Baskin

5 May , 2016  

image

Some highlights of day two of ng-conf 2016:

  • Day two started with a focus on the future of Angular2. No, they didn’t announce Angular3, but they did focus on the work they are finishing up and looking towards the future. For example, work is in progress to build an offline compiler for Angular2 applications. This should greatly reduce the payload delivered to the browser. In fact the Angular2 team’s aggressive goal is to have the “Hello World” version of an an Angular2 application be only 10K!
  • A second release candidate came out today. Part of the changes from beta to release candidate includes changing the package references. For example, angular2/core is now referenced as @angular/core. This change allows for better use of the ES2015 modules and better optimization when using the offline compiler.
  • The Material Design team is creating a base set of services that are common to user interface components in general, such as mobile usage, accessibility, internationalization, overlays, and more. The broad set of material design components build on these services, but other components can as well. They are also looking to expand the set of components to things like a Google Map component, a video player, rich text editor, and more.
Read more

, ,

Wintellect Blogs

Highlights From Angular’s NG-Conf 2016

Dave Baskin

4 May , 2016  

image

I just finished up the first day of ng-conf 2016 and as usual, it has been a great informative conference. Thanks to the organizers, sponsors, and Angular team members for all your efforts.

Here are some highlights from today:

  • Brad Green’s keynote address, of course, covered the big picture of the Angular development work. The Angular1 site had 1.3 million visitors and the Angular2 site has already had 306 thousand visitors, even though the first release candidate was only made available yesterday. The team is focused on making Angular2 a robust framework, but there are still some gaps to fill before it will be ready for production release.
  • What was really impressive is the breadth of applications that can be created with Angular2. Web applications we all know and love are just part of the story. You can create progressive apps that can be used offline. You can create mobile web applications with native-like user interface using Ionic. You can create truly native mobile applications with NativeScript. You can create cross-platform desktop application on top of Electron.
  • If need a quick look at what Angular2 actually looks like, John Papa does a great job of live-coding an Angular2 application.
Read more

, ,

Wintellect Blogs

Using Redux to Manage Angular2 Application State

Dave Baskin

3 May , 2016  

ScreenShot

In this post, I want to focus on managing application state. In the example application, I tried to create an application that had a reasonably complex user interface (“complex” is relative here, of course). The user interface needed to show where changes in one area of the page had immediate impact on other areas.

If we look at the “edit view” of the application, there are three panels: the list of images grouped by tags, a details table of image information, and the image edit panel. User actions performed in one of these panels have an immediate effect on the other panels.

example-app-edit-view

For example,

  • In the details table, a user can sort the image details by the image title, size of the image, and by the date the image was taken. When the images are sorted by title, changes to the title in the edit view are reflected in the table itself and may change the order the images are listed in.
  • Changing the order that images are sorted by affects not only the details table, but also changes the order that images are displayed within each group. Images in each group will be sorted in the same order as the detail table.
Read more

,

Wintellect Blogs

Yes, I Used jQuery in My Angular2 Application

Dave Baskin

24 Apr , 2016  

ScreenShot

An astute observer has probably noticed that I’m using jQuery in my Angular2 example application.

“The horror! Revoke his Angular2 license now!!”

I’m in no way saying this is a best practice or even a good practice. Including jQuery is not required or even desirable for most Angular2 applications. Angular1 had a dependency on jQuery or its own jQuery-lite version, but for Angular2 this is no longer the case.

jQuery will also cause problems for other scenarios, like pre-rendering the Angular2 application on the server or in a web worker, because jQuery components are expecting to work with the physical DOM. Plus it weights your application down with additional dependencies that will cause the application to load more slowly for a user.

But using jQuery was practical for this situation and gives me the chance to demonstrate how Angular2 can interoperate with existing web technologies. Let’s take a step back and look why jQuery might be worth considering in certain scenarios.

User Interface Widgets

There’s been much discussion about creating general purpose user interface components (commonly called “widgets”). Think of widgets as resuable pieces of user interface that can help you to build your application, for example, a progress bar, a dynamic and sortable table view, menu bars, charts and graphs, etc.… Read more

, ,

Wintellect Blogs

Container and Presentation Components in Angular2

Dave Baskin

18 Apr , 2016  

ScreenShot

Angular2 has a strong emphasis on components. An application is made up of a tree of components, starting from the root component and working down to child components. This helps to organize your application into logical and manageable pieces. Complex user interface can be broken down into smaller components, assembling them together, to better organize your application’s functionality and how it is presented to the user.

Components can be further categorized. Some components are just simple user interface components, for example like a date-picker widget or a simple user information card. These components are used throughout your application, but they don’t exercise your application logic. That work is delegated to other parts of the application. These components might be called “Presentation” (or “Dumb”) components.

Other components serve to organize and orchestrate the activities of child components and application services. These components know about the application logic. They might push application data down to child components and respond to events emitted by them. They might transform an event into a transition to a new application state. These components might be called “Container” (or “Smart”) components.

Example Application Components

Let’s look at how some of the components in the example application are organized.… Read more

, , ,

Wintellect Blogs

Big Ideas Behind Angular2

Dave Baskin

12 Apr , 2016  

ScreenShot

When I first started using AngularJS (way back in version 0.8, I believe), I was continually impressed at what it could do. The team I was working with at the time had many discussions on how this young framework could be used effectively within our project. We found ourselves experimenting with different techniques and slowly figuring out what patterns worked best. We were rewarded with many “Aha!!” moments that showed us how much insight went into the framework.

As you probably already know, there’s a new version of AngularJS that is close to being released. The Angular team basically took a step back and considered all the things they learned building Angular1, many ideas and techniques that came about as browser technology matured, and advances to Javascript itself (ES2015 and TypeScript), and rewrote the framework to be a better platform for creating modern web applications.

I’ve spent some time working with the new Angular2 framework and now have a better sense of how it is used. I think the Angular team has done a great job of improving the framework.

I’ve built an example application to manage a list of images. It’s not a full featured application, but I wanted to build something that had a reasonably complex user interface and also incorporated routes and UI controls (and wasn’t a To-Do application).… Read more

, ,

Wintellect Blogs

FastFileFinder Now 30 Percent Faster—How Fast Can You Make It?

John Robbins

21 Feb , 2016  

image

A while ago I whipped up a small utility to search for filenames at the command line. I noticed recently that it did not handle long filenames over 260 (MAX_PATH) characters. Having a few spare minutes I updated FastFileFinder to use the Win32 API directly as the .NET Framework Directory methods do not have that support. Additionally, I took at idea from Josh Carroll and batched up the matching filename output to minimize the calls to Console.WriteLine.

With that little bit of work FastFileFinder is now 30%-50% faster! I haven’t looked too much harder but I think there’s some more speed up work that can be done. Are you up for the challenge? How much faster can you make it go?

Grab the code here: https://github.com/Wintellect/FastFileFinder
Grab the compiled binary here: https://github.com/Wintellect/FastFileFinder/releases/tag/v2.0Read more

,