<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.2">Jekyll</generator><link href="https://bradyclifford.me/feed.xml" rel="self" type="application/atom+xml" /><link href="https://bradyclifford.me/" rel="alternate" type="text/html" /><updated>2022-12-06T20:52:08+00:00</updated><id>https://bradyclifford.me/feed.xml</id><title type="html">Brady Clifford</title><subtitle>Software Engineer | Architect | Strategist</subtitle><entry><title type="html">Upcoming entries</title><link href="https://bradyclifford.me/Upcoming-blogs/" rel="alternate" type="text/html" title="Upcoming entries" /><published>2022-09-09T00:00:00+00:00</published><updated>2022-09-09T00:00:00+00:00</updated><id>https://bradyclifford.me/Upcoming-blogs</id><content type="html" xml:base="https://bradyclifford.me/Upcoming-blogs/">&lt;p&gt;Its been awhile since I have journaled my experiences in my profession; 7 years running.&lt;/p&gt;

&lt;p&gt;I am rededicating myself to journal atleast once a quarter.  I have experienced many different technologies, patterns, processes, logistics over the past 7 years that I will start to document.&lt;/p&gt;

&lt;p&gt;I will probably start on my series of posts regarding my companies team reorganization and Gen2 transition experience:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Conway’s law and how we decided to reorganize teams and management to align with a verticle instead of horizontal structure.&lt;/li&gt;
  &lt;li&gt;Importance of architecture and strategy decision records&lt;/li&gt;
  &lt;li&gt;Context mapping exercise - company wide (all disciplines) to determine the true boundaries, subdomains, core domains, etc.&lt;/li&gt;
  &lt;li&gt;Method to keep the context map current and accessible to all.  This includes a single place to document our ubiquitous lanages per context.&lt;/li&gt;
  &lt;li&gt;Breaking about a monolith site and database into boundaries, not all at once, little by little&lt;/li&gt;
  &lt;li&gt;Importance of a Design System and Component Library&lt;/li&gt;
  &lt;li&gt;Compose micro front-ends into a homogenous site with BFFs and web-components&lt;/li&gt;
  &lt;li&gt;Break down buildtime dependencies between teams by embracing runtime dependencies&lt;/li&gt;
  &lt;li&gt;Implement anti-corruption layers between boundaries (both internal and exterinal)&lt;/li&gt;
  &lt;li&gt;Utilize a feature toggle system to perform A/B testing in production&lt;/li&gt;
  &lt;li&gt;Embrace events over APIs for cross boundary communication&lt;/li&gt;
  &lt;li&gt;No monolith database - embrace the duplicate data across boundaries paradigm - on the bounded context can access directly its database.  All other access must be performed through APIs or events.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some other experiences I want to eventually document by priority:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Finish my Marten usage experience journal entry&lt;/li&gt;
  &lt;li&gt;Importance of a company repo used to start new projects.  Documents architecture decisions.&lt;/li&gt;
  &lt;li&gt;React and how to manage state without complex libraries like Redux - i.e. react-query&lt;/li&gt;
  &lt;li&gt;Zero bug policy&lt;/li&gt;
  &lt;li&gt;Breaking work down in to small, managable, incremental parts&lt;/li&gt;
  &lt;li&gt;Improving the SDLC process and integrating it into automation.&lt;/li&gt;
  &lt;li&gt;Integrating SOC and EDE audit requiremnts into the SDLC process without constricting incremental improvements&lt;/li&gt;
  &lt;li&gt;Shifting left with QA engineers, product managers and UX designers.&lt;/li&gt;
  &lt;li&gt;Story mapping and coming up with a delivary plan while staying agile - focus on milestones / goals, not individual stories and story points&lt;/li&gt;
  &lt;li&gt;GitHub Actions experience - sharing standards functionality with multiple teams and repos&lt;/li&gt;
  &lt;li&gt;Production Support and alerting - integrating with PagerDuty and a public status page site&lt;/li&gt;
  &lt;li&gt;Load and Stress testing experience - k6, kubernetes, reusing Cypres tests and pseudo services for 3rd party integrations&lt;/li&gt;
  &lt;li&gt;CloudEvents, Azure Functions, CosmosDB streams, Azure Event Hub and the Outbox pattern&lt;/li&gt;
  &lt;li&gt;Terraform + Azure experience&lt;/li&gt;
  &lt;li&gt;Integrating a demo environment&lt;/li&gt;
  &lt;li&gt;Integration a failover environment&lt;/li&gt;
  &lt;li&gt;Integrating with a 3rd party both at the API level and UI level - the good, the bad the ugly and how to mitigate risk through contractual tests&lt;/li&gt;
  &lt;li&gt;Distributed tracing with AppInsights &amp;amp; FullStory experience - how to ingegrate multiple AppInsight instances from micro front-ends&lt;/li&gt;
  &lt;li&gt;Home automation experience&lt;/li&gt;
&lt;/ol&gt;</content><author><name></name></author><summary type="html">Its been awhile since I have journaled my experiences in my profession; 7 years running.</summary></entry><entry><title type="html">Revamp blog</title><link href="https://bradyclifford.me/blog-revamp/" rel="alternate" type="text/html" title="Revamp blog" /><published>2022-09-09T00:00:00+00:00</published><updated>2022-09-09T00:00:00+00:00</updated><id>https://bradyclifford.me/blog-revamp</id><content type="html" xml:base="https://bradyclifford.me/blog-revamp/">&lt;p&gt;Plan to re-create this blog into a React app demonstrating my abilities.  Debating on using Next.js or Remix as a base.&lt;/p&gt;

&lt;p&gt;Will integrate some of the micro front-end abilties and web-component isolations.&lt;/p&gt;

&lt;p&gt;I want to also experiement more with webservice workers and progressive apps.  I don’t have much experience yet with those two topics&lt;/p&gt;

&lt;p&gt;Details to come…&lt;/p&gt;</content><author><name></name></author><summary type="html">Plan to re-create this blog into a React app demonstrating my abilities. Debating on using Next.js or Remix as a base.</summary></entry><entry><title type="html">Marten + Postgres</title><link href="https://bradyclifford.me/Marten/" rel="alternate" type="text/html" title="Marten + Postgres" /><published>2018-01-20T00:00:00+00:00</published><updated>2018-01-20T00:00:00+00:00</updated><id>https://bradyclifford.me/Marten</id><content type="html" xml:base="https://bradyclifford.me/Marten/">&lt;p&gt;I have finished up a project where we replaced the use of RavenDB with that of Marten + Postgres.  The transition came from the issues we were having with RavenDB, maily its chaotic, random indexing process.  We needed a more robust solution that not only resloved our index issues but also allowed us to mix our usage with that of a relational database.&lt;/p&gt;

&lt;p&gt;Details to come…&lt;/p&gt;</content><author><name></name></author><summary type="html">I have finished up a project where we replaced the use of RavenDB with that of Marten + Postgres. The transition came from the issues we were having with RavenDB, maily its chaotic, random indexing process. We needed a more robust solution that not only resloved our index issues but also allowed us to mix our usage with that of a relational database.</summary></entry><entry><title type="html">My first look at HTTP/2.</title><link href="https://bradyclifford.me/HTTP-2/" rel="alternate" type="text/html" title="My first look at HTTP/2." /><published>2015-12-09T00:00:00+00:00</published><updated>2015-12-09T00:00:00+00:00</updated><id>https://bradyclifford.me/HTTP-2</id><content type="html" xml:base="https://bradyclifford.me/HTTP-2/">&lt;p&gt;Great podcast by .NetRocks on the upcoming HTTP/2 with Robert Boedigheimer.  The main browsers support it.  Waiting for the servers to get up to speed.&lt;br /&gt;
Windows 10’s IIS already supports it. Need to wait for Windows Server 2016 release and will hopefully see it on Azure.&lt;/p&gt;

&lt;p&gt;It is basically resolving the issue that we currently have how many requests a browser can do in parallel… 6 request at once seems to be cap with HTTP/1.1.  HTTP/2 is opening up the flood gates.  Not only will it allow for more requests in parallel, 
it also allows the client to ask for dependencies using a dependency map with priority weight.&lt;/p&gt;

&lt;p&gt;The server also has the ability to send resources to the client without he client first asking.  The server knows that client will need this Css file and this JavaScript file.  Why not send it in the initial request? The protocol will now transmit using binaries instead of plain basic text.&lt;/p&gt;

&lt;p&gt;With the issue of capped requests gone, Robert is suggesting that we don’t need to package up our Css and JavaScript anymore.&lt;br /&gt;
No more sprits in Css or embedded binary images.   It is still important to minifiy, but no need to package and combine our resources.   This brings back the ability for smaller files to be cached.  If I change a single line in a large bundle, the entire bundle becomes expired.  There will still be a need for compression and expiration.  CDNs are still a plus.&lt;/p&gt;

&lt;p&gt;Overall, you will see 5%-15% speed increase from HTTP/1.1 to HTTP/2 not taking advantage of the new features. Image the speed increase you can get once you implement the new features.&lt;/p&gt;

&lt;p&gt;Listen to the &lt;a href=&quot;https://www.dotnetrocks.com/?show=1224&quot;&gt;Podcast&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Great podcast by .NetRocks on the upcoming HTTP/2 with Robert Boedigheimer. The main browsers support it. Waiting for the servers to get up to speed. Windows 10’s IIS already supports it. Need to wait for Windows Server 2016 release and will hopefully see it on Azure.</summary></entry><entry><title type="html">My first look at Go Lang.</title><link href="https://bradyclifford.me/GoBallClock/" rel="alternate" type="text/html" title="My first look at Go Lang." /><published>2015-07-25T00:00:00+00:00</published><updated>2015-07-25T00:00:00+00:00</updated><id>https://bradyclifford.me/GoBallClock</id><content type="html" xml:base="https://bradyclifford.me/GoBallClock/">&lt;p&gt;Had my first look at the Go Lang. Went ahead with a small exercise and wrote a ball clock out of the language.&lt;/p&gt;

&lt;p&gt;Overall, I am impressed.  It seems similiar to Swift yet has its own glow.  I really liked the ability to return multiple values.&lt;/p&gt;

&lt;p&gt;Take a look at my solution on &lt;a href=&quot;https://github.com/bradyclifford/BallClock&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Had my first look at the Go Lang. Went ahead with a small exercise and wrote a ball clock out of the language.</summary></entry><entry><title type="html">Using Components and Resolves in UI-Router States</title><link href="https://bradyclifford.me/AngularJs-Components-Resolves/" rel="alternate" type="text/html" title="Using Components and Resolves in UI-Router States" /><published>2015-05-22T00:00:00+00:00</published><updated>2015-05-22T00:00:00+00:00</updated><id>https://bradyclifford.me/AngularJs-Components-Resolves</id><content type="html" xml:base="https://bradyclifford.me/AngularJs-Components-Resolves/">&lt;p&gt;Adding to the &lt;strong&gt;Component Pattern&lt;/strong&gt; in relation to AngluarJs and taking excerpts from this article: &lt;a href=&quot;https://medium.com/@tomastrajan/component-paradigm-cf32e94ba78b&quot;&gt;component-paradigm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quick review… The importance of &lt;strong&gt;controllerAs&lt;/strong&gt; and &lt;strong&gt;bindToController&lt;/strong&gt; property in your directive / component.
&lt;a href=&quot;http://blog.thoughtram.io/angularjs/2015/01/02/exploring-angular-1.3-bindToController.html&quot;&gt;bindToController&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In summary, the &lt;strong&gt;bindToController&lt;/strong&gt; property helps in situations where we want to pass something to the directive’s isolated scope from parent component. When used, properties from isolated scope will be automatically bound to controller’s this.&lt;/p&gt;

&lt;p&gt;The example below is referencing an inline template instead of a templateUrl in the ui-router state configuration.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$stateProvider
  .state('patients.patient.state', {
    url: /patient/:patientId',
    template: '&amp;lt;div state-patient&amp;gt;&amp;lt;/div&amp;gt;',
    resolve: {
      // ...
    },
  });
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The problem with this is how do we inject our resolve data into the controller which is now not there?&lt;/p&gt;

&lt;p&gt;Instead of injecting the resolved dependency data into the directive’s controller, load it into a service.  Unfortunately I am not a fan of this approach.  It feels too much like scope inheritance…&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;.state(''patients.patient.state', {
    url: /patient/:patientId',
    template: '&amp;lt;div state-patient&amp;gt;&amp;lt;/div&amp;gt;',
    resolve: {
        init: function($stateParams, patientResource) {
            return patientResource.init($stateParams.itemId);
        }
    }
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For details on this pattern, see the article below.
The examples are written in ES6, but the concept can be still be applied to our ES5 code base. &lt;a href=&quot;https://medium.com/@tomastrajan/model-pattern-for-angular-js-67494389d6f&quot;&gt;model-pattern-for-angular-js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that this is one way of tackling this problem.  I do not agree 100% with this approach but it does lay down the concept and possible alternatives.&lt;/p&gt;</content><author><name></name></author><category term="JavaScript" /><category term="AngularJs" /><summary type="html">Adding to the Component Pattern in relation to AngluarJs and taking excerpts from this article: component-paradigm Quick review… The importance of controllerAs and bindToController property in your directive / component. bindToController In summary, the bindToController property helps in situations where we want to pass something to the directive’s isolated scope from parent component. When used, properties from isolated scope will be automatically bound to controller’s this. The example below is referencing an inline template instead of a templateUrl in the ui-router state configuration.</summary></entry><entry><title type="html">Task Runners and Building our JavaScript Code</title><link href="https://bradyclifford.me/Build-JavaScript/" rel="alternate" type="text/html" title="Task Runners and Building our JavaScript Code" /><published>2015-05-07T00:00:00+00:00</published><updated>2015-05-07T00:00:00+00:00</updated><id>https://bradyclifford.me/Build-JavaScript</id><content type="html" xml:base="https://bradyclifford.me/Build-JavaScript/">&lt;p&gt;No excuses now, every should be transpiling and building their web application.  I put together a &lt;a href=&quot;http://www.slideshare.net/bradyclifford/building-javascript&quot;&gt;slidedeck&lt;/a&gt; that went through the whys and the benefits.  &lt;a href=&quot;http://www.slideshare.net/bradyclifford/building-javascript&quot;&gt;Take a look&lt;/a&gt;…&lt;/p&gt;

&lt;p&gt;I based my slidedeck on the presentation &lt;a href=&quot;https://youtu.be/VkTCL6Nqm6Y&quot;&gt;Peter Hunt&lt;/a&gt; gave back in 2014.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To summarize:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Spas are the best UX experience&lt;/li&gt;
  &lt;li&gt;Con is that the initial load takes too long&lt;/li&gt;
  &lt;li&gt;Instagram has 10 SPAs in their architecture&lt;/li&gt;
  &lt;li&gt;Reduce amount of HTTP requests &amp;amp; bytes downloaded&lt;/li&gt;
  &lt;li&gt;Bundling everything into one file is not the best approach2.5MB gzip bundled file is too big.&lt;/li&gt;
  &lt;li&gt;Utilize a module system to intelligently bundle your packages with a dynamic dependency map.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 2 slides from his presentation that impacted me the most:
&lt;img src=&quot;/images/posts/2015-05-07-Build-JavaScript.bundled-modules.png&quot; alt=&quot;Bundled Modules Example&quot; /&gt;
&lt;img src=&quot;/images/posts/2015-05-07-Build-JavaScript.optimized-bundles.png&quot; alt=&quot;Optimized Bundled Modules Example&quot; /&gt;&lt;/p&gt;

&lt;p&gt;###Overall, I argued the need to build web front end code so one could:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Developers to mimic production on their own box&lt;/strong&gt;.
    &lt;ul&gt;
      &lt;li&gt;Developers are able to identify concatenation and minification issues before code is checked in.&lt;/li&gt;
      &lt;li&gt;The build config is shared amongst all environments
Prepares us for AngularJs 2 and ES6&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Automated versioning of shared packaged libraries&lt;/strong&gt;.
    &lt;ul&gt;
      &lt;li&gt;Treat our shared libriaries like 3rd parties&lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;On check-in, build, package and version shared libraries deploying to local package repository like git.  This speeds up the build process for the Spa and also removes versioning within TFS.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;Part of the build process can also incorporate the automation of generating documentation and demos.  See how AngularStrap and UI-Boostrap and achieving this from their source code.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Utilize a package manager and a local rev. repository&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Automated builds of documentation and shared component demos&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Reduction and even elimination of Glofs and Glogs&lt;/strong&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Reduce initial Spa loading time&lt;/strong&gt; through intelligent bundling: use a module system and an intelligent dependency map bundling tool, like webpack.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Architecting our web application code so it is web server agnostic&lt;/strong&gt;.
    &lt;ul&gt;
      &lt;li&gt;Instead of loading 100+ servers with our web application files, we can upload them to one location&lt;/li&gt;
      &lt;li&gt;Avoids the second hop to our F5 and web farm in our current architecture&lt;/li&gt;
      &lt;li&gt;Brings us closer to a true micro services SOA architecture; separating the front end from the middle tier.&lt;/li&gt;
      &lt;li&gt;Allows us to use redirection only for api calls.  Don’t have to perform a browser redirect during login.&lt;/li&gt;
      &lt;li&gt;An example of a server agnostic web application:
&lt;img src=&quot;/images/posts/2015-05-07-Build-JavaScript.objective-6.png&quot; alt=&quot;2015-05-7-Build-JavaScript,objective-6.png&quot; /&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="JavaScript" /><category term="AngularJs" /><summary type="html">No excuses now, every should be transpiling and building their web application. I put together a slidedeck that went through the whys and the benefits. Take a look…</summary></entry><entry><title type="html">AngularAtom: Component-based Organization Directory Structure</title><link href="https://bradyclifford.me/Angular-Atom/" rel="alternate" type="text/html" title="AngularAtom: Component-based Organization Directory Structure" /><published>2015-04-04T00:00:00+00:00</published><updated>2015-04-04T00:00:00+00:00</updated><id>https://bradyclifford.me/Angular-Atom</id><content type="html" xml:base="https://bradyclifford.me/Angular-Atom/">&lt;p&gt;With the changes in AngularJs 2.0 coming down the pipe, many have started to prepare for the component-based pattern.&lt;/p&gt;

&lt;p&gt;Dmitri Moore has a great blog around the &lt;a href=&quot;http://demisx.github.io/angularjs/atom/component-feature-based-organization/2014/12/13/angular-1-component-organization-4.html&quot;&gt;AngularAtom&lt;/a&gt; proposed directory structure that addresses the component-based structure. Some of the takeaways for me pertaining to this article are I have summarized:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Components folder&lt;/strong&gt;: all stateless components / services.
    &lt;ul&gt;
      &lt;li&gt;A Components folder can have sub components&lt;/li&gt;
      &lt;li&gt;A component has a component.model.js file and a component.service.js.  The model contains the data while the service is responsible for getting, setting that data.&lt;/li&gt;
      &lt;li&gt;Single responsibility per file standard.  Does not place controller, directive and module within the same file.&lt;/li&gt;
      &lt;li&gt;Component folder can contain a Data folder for specific JSON data files and related assets&lt;/li&gt;
      &lt;li&gt;Each component or state folder can contain a i18n folder for resource localization&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;State folder&lt;/strong&gt;: contains everything necessary to render the particular UI state
    &lt;ul&gt;
      &lt;li&gt;Instead of placing all routes / states within a single route.js config file, they are modularized.  Each state folder contains its own route config file with that specific route / state.&lt;/li&gt;
      &lt;li&gt;Each state may contain one or more child states that, unlike sub-components, each define their own module.  This is because each state, be it parent or child, is looked at as an independent citizen that can be added or removed at any time of the application lifecycle.&lt;/li&gt;
    &lt;/ul&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;      1. 'phones'         // abstract state, can't be transitioned to
      2. 'phones.list'    // UI shows a list of all phones
      3. 'phones.detail'  // UI shows detail info on the selected phone
 
       |phones| // &amp;lt;-- abstract state that loads default layout
         /  \
        /    \
       /      \
    |list|  |detail| // &amp;lt;-- concete states that plug in their own content into the default layout
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Layout folder&lt;/strong&gt;: contains all partial files that support the application shell.
    &lt;ul&gt;
      &lt;li&gt;Layouts are injected into the main app/index.html by the abstract states. Your public section, for example, may inject one layout (ex. public.html) from the app.public abstract state, with this the secure section may inject a completely different layout (ex. secure.html) from the app.secure abstract state.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Helpers folder&lt;/strong&gt;: contains a collection of various utilities not specific to any component. Usually implemented as JS pure functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Summary of Dmitri Moore’s the folder structure below.  For a full view of the folder structure, see his &lt;a href=&quot;https://gist.github.com/demisx/cbbf605db31e7c9f5cf6&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;…&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;
[app-name]/ # application root directory
  |__app/   # container for all user-generated app code
  |   |__components/   # stateless feature components
  |   |__layouts/      # layout specific partials
  |   |__states/       # application UI states
  |__vendor/ # 3rd party vendor client libraries global to the entire app
  |__config/           # app related configuration
  |__node_modules/     # 3rd party vendor node.js modules global to the entire app
  |__scripts/          # shell scripts like Glup tasks
  |__tests/            # e2e tests
&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;a href=&quot;https://github.com/johnpapa/angular-styleguide#folders-by-feature-structure&quot;&gt;John Papa’s style guide&lt;/a&gt; is similar to what the &lt;a href=&quot;https://gist.github.com/demisx/cbbf605db31e7c9f5cf6&quot;&gt;AngularAtom&lt;/a&gt; folder structure is suggesting; just isn’t as detailed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Folder by Feature&lt;/strong&gt;: create folders named for the feature they represent. When a folder grows to contain more than 7 files, consider creating a new folder.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Layout Folder&lt;/strong&gt;: components that define the overall layout of the application; these may include a shell view and controller (navigation, menus, etc.)&lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="JavaScript" /><category term="AngularJs" /><summary type="html">With the changes in AngularJs 2.0 coming down the pipe, many have started to prepare for the component-based pattern.</summary></entry><entry><title type="html">AngularJs and the Component Pattern</title><link href="https://bradyclifford.me/AngularJs-component-pattern/" rel="alternate" type="text/html" title="AngularJs and the Component Pattern" /><published>2015-03-03T00:00:00+00:00</published><updated>2015-03-03T00:00:00+00:00</updated><id>https://bradyclifford.me/AngularJs-component-pattern</id><content type="html" xml:base="https://bradyclifford.me/AngularJs-component-pattern/">&lt;p&gt;A few tips and a few standards related to using the component pattern with AngularJs.  Highly suggsted to start writing your AngularJs project with this pattern in mind due to the migration path to AngularJs 2.0.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Don’t use &lt;a href=&quot;http://teropa.info/blog/2014/10/24/how-ive-improved-my-angular-apps-by-banning-ng-controller.html&quot;&gt;ng-controllers&lt;/a&gt;; instead modularize your code into directives.&lt;/li&gt;
  &lt;li&gt;Reduce your reference to $scope.  Instead use ControllerAs with vm.&lt;/li&gt;
  &lt;li&gt;Utilize the &lt;a href=&quot;http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern&quot;&gt;PubSub pattern&lt;/a&gt;; communicate between directives (components) with loosely coupled events.&lt;/li&gt;
  &lt;li&gt;Keep AngularJs 2.0 in the back of your mind while writing your AngularJs apps. &lt;a href=&quot;http://youtu.be/uD6Okha_Yj0&quot;&gt;http://youtu.be/uD6Okha_Yj0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;For further Reference concerning these patterns, see the following &lt;a href=&quot;/sites/Engineering/Dev/blog/Lists/Posts/Post.aspx?List=7b352325-6321-4dc8-9309-c32888f5cae0&amp;amp;ID=205&amp;amp;Source=http://crossroads/sites/Engineering/Dev/blog/Lists/Posts/AllPosts.aspx&quot;&gt;post&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="JavaScript" /><category term="AngularJs" /><summary type="html">A few tips and a few standards related to using the component pattern with AngularJs. Highly suggsted to start writing your AngularJs project with this pattern in mind due to the migration path to AngularJs 2.0.</summary></entry><entry><title type="html">AngularJs Experience</title><link href="https://bradyclifford.me/AngularJs-Experience/" rel="alternate" type="text/html" title="AngularJs Experience" /><published>2015-01-30T00:00:00+00:00</published><updated>2015-01-30T00:00:00+00:00</updated><id>https://bradyclifford.me/AngularJs-Experience</id><content type="html" xml:base="https://bradyclifford.me/AngularJs-Experience/">&lt;p&gt;The AngularJs focus group gathered together at HireVue floor last night.  The lead developer presented the dos and don’ts that they learned from their 2 year experience with AngularJs when they decided to implement it back in 2012.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;To summarize, if you follow John Papay’s style guide, you should be good go.  Here is Dave’s presentation from last night:
&lt;a href=&quot;http://slides.com/djsmith/how-we-made-a-mess-of-our-angular-app/#/&quot;&gt;http://slides.com/djsmith/how-we-made-a-mess-of-our-angular-app/#/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name></name></author><category term="JavaScript" /><category term="AngularJs" /><summary type="html">The AngularJs focus group gathered together at HireVue floor last night. The lead developer presented the dos and don’ts that they learned from their 2 year experience with AngularJs when they decided to implement it back in 2012. To summarize, if you follow John Papay’s style guide, you should be good go. Here is Dave’s presentation from last night: http://slides.com/djsmith/how-we-made-a-mess-of-our-angular-app/#/</summary></entry></feed>