Skip to content

Commit

Permalink
doc(all): update email links and company names
Browse files Browse the repository at this point in the history
  • Loading branch information
EisenbergEffect committed Sep 10, 2016
1 parent 4fa09b0 commit 94b5a22
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 37 deletions.
62 changes: 31 additions & 31 deletions doc/article/drafts/FromCaliburn.MicroToAurelia.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,34 @@ Twitter: @GregoryGum

Linked In: GregGum

# From Caliburn.Micro to Aurelia

## _If you know Caliburn.Micro, then you already know Aurelia_.

Ok, so the syntax is different, but you will find the concepts **very** familiar. The learning curve is not so much learning Aurelia itself, it's learning the JavaScript ecosystem in which Aurelia lives. Once you have mastered that, you will find that Aurelia plugs in all that MVVM goodness you found in Caliburn.Micro. This guide is a high level view meant for c# developers moving to JavaScript who wish to write the same types of apps they did before in Silverlight/WPF, but this time, write a real web app.

First some background so you know from where I write this guide: I have written apps in various technologies for the last 15 years, starting with Visual FoxPro, Windows Forms, WPF and then finally Silverlight. Silverlight's biggest contribution is that it popularized the MVVM (Model-View-Viewmodel) concept and made it easy to implement through binding. The level of apps I could write with Silverlight which much more sophisticated than anything before, and it became clear that I needed a framework to bring all the pieces intelligently without having to write it all myself. I did in fact write a framework for Visual Foxpro ( called TurboFox, long since laid in the technology graveyard) and knew the amount of raw hours it takes to bring a framework up to professional standards. I checked out the different frameworks, and Caliburn.Micro was the one that worked best for me. I have since authorized at least 20 major applications with the framework, and became very familiar with its use. Even after the "death" of Silverlight, I was a diehard. I saw no viable alternative on the horizon and thus continued to use it. For corporate apps which you can mandate, that's not really a problem. But the reality is that the web, and using web standards like good ole html and JavaScript is now the _only_ standard. And if you are reading this, you have already seen the light. But if we are destined to write html/JavaScript, how do we get there without throwing everything we know and love about writing serious applications out the window and starting from scratch?

Here is where Aurelia makes its entrance. Some time ago, someone asked Rob, "What if you could create Caliburn.Micro in JavaScript?" It was a revolutionary thought, but why not? In the end, design patterns are design patterns no matter what language they are implemented in. JavaScript is not known for its application of design patterns. Despite there being a book named "JavaScript Design Patterns" from O'Reilly, I don't think any JavaScript developers have actually read it, and if they did, completely ignored them. Any JavaScript I have ever seen was written in the vein of "gitter-done now!", not "Which GOF pattern shall I implement today?" (Like c# coders are fond of).

So that is the premise of Aurelia implement those patterns which have worked so well in the past in JavaScript to create MVVM style applications in JavaScript.

The first pill to swallow is that it's a lot of JavaScript. In a SL application, I think nothing of writing a few thousand lines of application code. That's not a lot of code really. But to see that in JavaScript makes some people squirm. At least it did me. Most people see JS as a few lines of code to send an alert to the window. You have to see it in the same way you see code in a c# application its code, it should be well written, and using standard coding practices such as classes and separations of concerns. So in Aurelia, you start writing classes, just like you do in c#. You are going to have a Welcome class, and a Welcome view which combine to make a Welcome page. But I am getting ahead of myself. Here are the major concepts of Aurelia, and how they are implemented.

# Routing

Every app is a collection of pages. In Silverlight, there was a Navigation Template which attempted to route pages with a router, but most app's did not use this. I even wrote an adapter so that I could use the SL router and then using Caliburn.Micro to bind the pages. In Aurelia, the Router is elevated in status to one of the prime components and it integrates deeply with the browser. The net result of this is that the browser forward and back buttons work as users would expect them to do. Even though the back button does not in fact change the page he is on (it's a single page application, remember) it does navigate him back to the prior view. So it appears to him that he went to the prior page, and even the link in the browser bar updates accordingly.

# Pages

When a user navigates to a page, that page is a view/viewmodel pair as I hinted to earlier. In Caliburn.Micro, the convention was to use CustomerViewModel/CustomerView. In Aurelia, it's just Customer/Customer, or whatever you want to name it. It just uses the exact same name, so only the extension is different.

An Aurelia ViewModel has the same type of lifecycle as in Caliburn.Micro. There are the usual Activate/Deactivate, as well as CanActivate/CanDeactivate which work as you would expect.

# Binding

Ah, the miracle of bind. Binding is what made MVVM great, and it's no different in Aurelia. In your viewmodel, you have a "name" property, and you bind it in your view like so: <input value.bind="name" /> Just like old times. The binding is two way binding as well in this case, as it's an input element which automatically gets two way binding. But there is another way to bind in Aurelia and it's called "String Interpolation." Instead of having to have a control to bind to, you can specify the binding directly in the html. Say for example you want to display them name property in a span. This is the syntax: <span>${name}</name> This of course is one way binding. But it is live binding, so if you change the value of the name property to "Greg", it will automatically update in the UI just as you would expect. While this is a minor thing to a xaml developer, it's big news in the HTML world. Knockout was the original binding library, and it's still kicking around with a lot of people using it. Durandal, the forerunner of Aurelia supported Knockout, but Aurelia brought its own binding library to the table. I won't go into the details, but Aurelia binding is much cleaner having brought years of binding experience to the table before it was even started.

# Wrap Up

So there you have it. My goal here was to whet your appetite for Aurelia and convince you to give it a chance. Aurelia is rapidly becoming the SPA framework of choice, and your experience with Caliburn.Micro is going to help you get up and running. Welcome aboard. If you have questions, you can reach me on the Aurelia gitter channel, or email me at greg.gum@gmail.com
# From Caliburn.Micro to Aurelia

## _If you know Caliburn.Micro, then you already know Aurelia_.

Ok, so the syntax is different, but you will find the concepts **very** familiar. The learning curve is not so much learning Aurelia itself, it's learning the JavaScript ecosystem in which Aurelia lives. Once you have mastered that, you will find that Aurelia plugs in all that MVVM goodness you found in Caliburn.Micro. This guide is a high level view meant for c# developers moving to JavaScript who wish to write the same types of apps they did before in Silverlight/WPF, but this time, write a real web app.

First some background so you know from where I write this guide: I have written apps in various technologies for the last 15 years, starting with Visual FoxPro, Windows Forms, WPF and then finally Silverlight. Silverlight's biggest contribution is that it popularized the MVVM (Model-View-Viewmodel) concept and made it easy to implement through binding. The level of apps I could write with Silverlight which much more sophisticated than anything before, and it became clear that I needed a framework to bring all the pieces intelligently without having to write it all myself. I did in fact write a framework for Visual Foxpro ( called TurboFox, long since laid in the technology graveyard) and knew the amount of raw hours it takes to bring a framework up to professional standards. I checked out the different frameworks, and Caliburn.Micro was the one that worked best for me. I have since authorized at least 20 major applications with the framework, and became very familiar with its use. Even after the "death" of Silverlight, I was a diehard. I saw no viable alternative on the horizon and thus continued to use it. For corporate apps which you can mandate, that's not really a problem. But the reality is that the web, and using web standards like good ole html and JavaScript is now the _only_ standard. And if you are reading this, you have already seen the light. But if we are destined to write html/JavaScript, how do we get there without throwing everything we know and love about writing serious applications out the window and starting from scratch?

Here is where Aurelia makes its entrance. Some time ago, someone asked Rob, "What if you could create Caliburn.Micro in JavaScript?" It was a revolutionary thought, but why not? In the end, design patterns are design patterns no matter what language they are implemented in. JavaScript is not known for its application of design patterns. Despite there being a book named "JavaScript Design Patterns" from O'Reilly, I don't think any JavaScript developers have actually read it, and if they did, completely ignored them. Any JavaScript I have ever seen was written in the vein of "gitter-done now!", not "Which GOF pattern shall I implement today?" (Like c# coders are fond of).

So that is the premise of Aurelia implement those patterns which have worked so well in the past in JavaScript to create MVVM style applications in JavaScript.

The first pill to swallow is that it's a lot of JavaScript. In a SL application, I think nothing of writing a few thousand lines of application code. That's not a lot of code really. But to see that in JavaScript makes some people squirm. At least it did me. Most people see JS as a few lines of code to send an alert to the window. You have to see it in the same way you see code in a c# application its code, it should be well written, and using standard coding practices such as classes and separations of concerns. So in Aurelia, you start writing classes, just like you do in c#. You are going to have a Welcome class, and a Welcome view which combine to make a Welcome page. But I am getting ahead of myself. Here are the major concepts of Aurelia, and how they are implemented.

# Routing

Every app is a collection of pages. In Silverlight, there was a Navigation Template which attempted to route pages with a router, but most app's did not use this. I even wrote an adapter so that I could use the SL router and then using Caliburn.Micro to bind the pages. In Aurelia, the Router is elevated in status to one of the prime components and it integrates deeply with the browser. The net result of this is that the browser forward and back buttons work as users would expect them to do. Even though the back button does not in fact change the page he is on (it's a single page application, remember) it does navigate him back to the prior view. So it appears to him that he went to the prior page, and even the link in the browser bar updates accordingly.

# Pages

When a user navigates to a page, that page is a view/viewmodel pair as I hinted to earlier. In Caliburn.Micro, the convention was to use CustomerViewModel/CustomerView. In Aurelia, it's just Customer/Customer, or whatever you want to name it. It just uses the exact same name, so only the extension is different.

An Aurelia ViewModel has the same type of lifecycle as in Caliburn.Micro. There are the usual Activate/Deactivate, as well as CanActivate/CanDeactivate which work as you would expect.

# Binding

Ah, the miracle of bind. Binding is what made MVVM great, and it's no different in Aurelia. In your viewmodel, you have a "name" property, and you bind it in your view like so: <input value.bind="name" /> Just like old times. The binding is two way binding as well in this case, as it's an input element which automatically gets two way binding. But there is another way to bind in Aurelia and it's called "String Interpolation." Instead of having to have a control to bind to, you can specify the binding directly in the html. Say for example you want to display them name property in a span. This is the syntax: <span>${name}</name> This of course is one way binding. But it is live binding, so if you change the value of the name property to "Greg", it will automatically update in the UI just as you would expect. While this is a minor thing to a xaml developer, it's big news in the HTML world. Knockout was the original binding library, and it's still kicking around with a lot of people using it. DurandalJS, the forerunner of Aurelia supported Knockout, but Aurelia brought its own binding library to the table. I won't go into the details, but Aurelia binding is much cleaner having brought years of binding experience to the table before it was even started.

# Wrap Up

So there you have it. My goal here was to whet your appetite for Aurelia and convince you to give it a chance. Aurelia is rapidly becoming the SPA framework of choice, and your experience with Caliburn.Micro is going to help you get up and running. Welcome aboard. If you have questions, you can reach me on the Aurelia gitter channel, or email me at greg.gum@gmail.com
2 changes: 1 addition & 1 deletion doc/article/en-US/business-advantages.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
* One of the only two main-stream, open-source SPA frameworks with official commercial backing (Ember is the other).
* The only SPA framework with commercial support options available.
* Custom contracts available for enterprises.
* Internally “dogfooded” by Durandal Inc. in its own business-critical products.
* Internally “dogfooded” by Blue Spire Inc. in its own products.

Many technologists make incorrect assumptions in this space. You may hear about "Google's Polymer" (or Angular) or "Facebook's React". However, these libraries aren't official products of their respective companies. React team members have stated publicly that Facebook is not committed to the React library. Google developers have stated publicly that Polymer is not a Google product and developers are not considered customers. Angular and Polymer are two out of six UI libraries built by Google employees, all competitive with one another, and none officially recognized by the company. There is much marketing and brand recognition around these libraries but no guarantee and little hope of long-term stability. We encourage you to try to see past the marketing, brands and hype and into the core capabilities and benefits of the technology itself. If you do, we think you'll realize that Aurelia is the best option available.

Expand Down
4 changes: 2 additions & 2 deletions doc/article/en-US/getting-help.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@

When you join the Aurelia community, you have access to our entire ecosystem. If you need quick help or an answer clarifying documentation, we hope you'll engage with the community in our Gitter chat room. We have one of the most active Gitter channels in the world, with core team and community members present almost every hour of the day, no matter what part of the world you live in. You can join the channel and get help at [http://www.gitter.im/aurelia/discuss](http://www.gitter.im/aurelia/discuss)

If you need architectural advice, consulting or training, you can take advantage of Durandal Inc's services as well as those provided by our global partner network. For inquiries, please contact [consulting@durandal.io](email:consulting@durandal.io). We would love to connect with you, hear your needs and help provide you with the best resources to build your product and business.
If you need architectural advice, consulting or training, you can take advantage of Blue Spire's services as well as those provided by our global partner network. For inquiries, please contact [consulting@bluespire.com](email:consulting@bluespire.com). We would love to connect with you, hear your needs and help provide you with the best resources to build your product and business.

If you need commercial or enterprise support, priority bug fixes and/or a guaranteed SLA on support answers for your team or organization, Durandal Inc. can provide for you. To inquire about establishing a support agreement, please contact [support@durandal.io](email:support@durandal.io).
If you need enterprise support, priority bug fixes and/or a guaranteed SLA on support answers for your team or organization, Blue Spire can help you. To inquire about establishing a support agreement, please contact [support@bluespire.com](email:support@bluespire.com).
2 changes: 1 addition & 1 deletion doc/article/en-US/what-is-aurelia.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,5 @@ So, Aurelia is a set of modern, modular JavaScript libraries for building UI...a
* **Web Standards Focused** - Focused on next generation JavaScript and Web Components, and avoiding unnecessary abstractions that obscure the underlying web, Aurelia is the cleanest and most standards-compliant framework today.
* **Integrates Well with Others** - Because of the extensible design of Aurelia and a number of core technical considerations we made early on, it's easy to integrate Aurelia with any 3rd party library or framework. For example, you can easily integrate with jQuery, React, Polymer, Bootstrap, MaterializeCSS and much more.
* **TypeScript Support** - Each Aurelia library is released with its own d.ts files. We also have official TypeScript beginner kits and production quality starter kits.
* **An Official Product with Commercial Support** - Libraries like Angular, Polymer and React are neither official products of their associated companies nor is any official support or commitment to the library by the company guaranteed. However, Aurelia is an official product of Durandal Inc., has commercial and enterprise support available and we are committed to it over the long haul. If you are building core technology for your business, you want to know that your technology provider is as committed as you are. Aurelia is a clear choice.
* **An Official Product with Commercial Support** - Libraries like Angular, Polymer and React are neither official products of their associated companies nor is any official support or commitment to the library by the company guaranteed. However, Aurelia is an official product of Blue Spire Inc., has enterprise support available and we are committed to it over the long haul. If you are building core technology for your business, you want to know that your technology provider is as committed as you are. Aurelia is a clear choice.
* **Thriving Community and Ecosystem** - With one of the largest and most active developer gitter channels in the JavaScript world, a huge number of contributors and a large active core team, Aurelia has an amazing community. Our ecosystem also includes video training resources, books in production, master class opportunities, upcoming conferences, component libraries, tooling, an official partner network and more. Aurelia has been used to build just about every type of application and is used by large, well-known multi-national companies and enterprises.
Loading

0 comments on commit 94b5a22

Please sign in to comment.