Blog Archive 2018 AngularJS 1.7: The Ultimate Version Feb 04 2018 AngularJS Console Debugging Tricks Jan 28 2018 Reliably Managing Dependencies In Long Term Projects Jan 16 2018 2017 Reliably Managing Modals in AngularJS Dec 11 2017 Preferred AngularJS Communication Patterns Sep 29 2017 Angular 1.6’s Possibly unhandled rejection errors Aug 20 2017 Advanced ng-model Integration for Bug-free Controls Aug 06 2017 You’re Not Using ng-model Enough Jul 28 2017 AngularJS Form Properties Guide Jul 02 2017 Prevent AngularJS Injection Errors With Strict Mode Jun 25 2017 ng-annotate Deprecated: What That Means for Your Projects Jun 18 2017 Fixing Angular Template Overuse Jun 11 2017 The Magic Properties of Angular’s ng-repeat Jun 04 2017 Understanding Optional AngularJS Bindings May 28 2017 Converting Angular Controllers to ES6 Classes May 20 2017 Angular Dependency Injection Annotations With ES6 Classes May 14 2017 Moving Angular Factories to Services With Classes May 08 2017 Screencast: Debugging Bad Performance in an AngularJS App Apr 06 2017 The Performance Difference Between ng-bind and {{}} Mar 23 2017 Techniques for Improving ng-repeat Performance Jan 25 2017 Testing Components with $onChanges Using angular-stub-changes Jan 17 2017 Unit Testing Angular Components with $componentController Jan 09 2017 Angular 1.6 is here: what you need to know Jan 01 2017 2016 Replacing Angular’s Deep Watches with the $doCheck Lifecycle Hook Dec 20 2016 Replacing $scope.$watch with Lifecycle Hooks Dec 13 2016 Video Walkthrough: Refactoring Angular Components to Use Require Mechanism Dec 06 2016 Advanced Angular 1.x: Component Communication with Require Nov 30 2016 Spotting Outdated Angular 1.x Posts Nov 23 2016 Avoiding ng-include for Elegance and Performance Nov 17 2016 Circular Dependencies in Angular and the Injector Service Nov 10 2016 What Angular’s .equals and .toJson are for Nov 02 2016 Configuring components with ui-router and ngRoute Oct 25 2016 $scope.$apply: What Is It Good For Oct 16 2016 Angular 2 Is Out: Should You Start Using It? Oct 09 2016 Animating Transitions in 2 Minutes with ngAnimate and CSS Sep 26 2016 ngAnimate Basics: Pure CSS ng-repeat Animations Sep 18 2016 Angular Interview Question Deep Dive: Implement ng-click Sep 06 2016 Understanding Angular’s @ Binding Aug 31 2016 Stop ng-repeating options: use ng-options Aug 12 2016 Properly Wrapping Native JavaScript with $q Promises Jul 10 2016 Not Everything in Angular Should Be a Singleton Jun 22 2016 $scope.$watch and controllerAs Jun 02 2016 Understanding Angular’s One-Way Binding May 19 2016 Understanding Angular’s & Binding May 13 2016 Using ES6 Arrow Functions in Angular 1.x + Cheatsheet May 05 2016 Directives are not what they were a year ago Apr 28 2016 Angular Performance: Updating bind-once elements Apr 21 2016 Angular 1.5 new component lifecycle hooks Apr 14 2016 Please leave the ng prefix alone Apr 01 2016 Naming Your Controller-As Consistently Mar 25 2016 Using Angular 1.5’s Multiple Transclusion Slots Mar 04 2016 What is the Component Router? Can you start using it? Feb 26 2016 Writing Pragmatic Angular Components Feb 19 2016 Angular 2 migration: what’s ng-forward? Feb 03 2016 Caching HTTP results in Angular Jan 27 2016 Setting up SEO in an Angular app Jan 20 2016 Adding the first Angular 2 component to your Angular 1 app Jan 14 2016 Adding the first Angular 2 service to your Angular 1 app Jan 07 2016 2015 Automatically find links in text using Angular Dec 31 2015 Configuring components with ui-router and ngRoute Dec 25 2015 Angular’s .component - what is it good for? Dec 17 2015 Angular 1.5 is close - here’s the interesting parts Dec 10 2015 Lazy Loading Your First Component in Angular Dec 03 2015 Query Parameters in ui-router Without Needless Reloading With Example Project Nov 25 2015 The Deal With Angular And Minification Nov 18 2015 Angular controllerAs: When Should You Use Scope Nov 11 2015 Angular Forms and Validation: Step By Step Example Nov 06 2015 Angular Authentication: Remember Where You Were + Demo Project Oct 29 2015 Angular Authentication: 3 step recipe Oct 22 2015 Angular Nitpicking: Differences between $timeout and setTimeout() Oct 14 2015 Angular 2 Preparation: Killing Controllers Oct 07 2015 Angular 2 Preparation: Controller Code Smells Sep 30 2015 $q.defer: You’re doing it wrong Sep 24 2015 When Does a Directive’s Link Function Get Called Again? Sep 16 2015 Angular 2 Migration Path: What We Know Sep 10 2015 Controller-Directive Communication Part 3: Controller to Directive Sep 02 2015 Controller-Directive Communication: Part 2 Aug 27 2015 Controller-Directive Communication: Scroll to Bottom Aug 21 2015 Angular: Watches, Watches Everywhere Aug 14 2015 Angular Performance Diagnosis 101 Aug 03 2015 Angular Performance: ng-show vs ng-if Jul 28 2015 Controllers Should Not Be Control Freaks Jul 21 2015 Resourceful Angular: $http, $resource and Restangular head to head Jul 17 2015 My Angular Debugging Tips Jul 07 2015 Should You Use Angular 2.0 or 1.x? Jun 27 2015 Simple pagination and URL params with ui-router Jun 20 2015 Using ng-change instead of $watch in Angular Jun 11 2015 AngularJS: Pitfalls using ui-router’s resolve Jun 02 2015 Don’t use $http’s .success() May 25 2015 AngularJS: Dynamically loading directives May 19 2015 AngularJS: How to setup pushState with html5Mode May 12 2015 AngularJS: Notifying about changes from services to controllers May 04 2015 AngularJS: What’s the difference between factory and service? Apr 28 2015 Badass Apr 22 2015 Bad Commit Messages Hall of Shame Mar 16 2015 Testing the Untested Mar 11 2015 My checklist for upgrading to Angular 1.3 Jan 23 2015 I take it back: Don’t read a book a month Jan 02 2015 2014 Swift intro exercises playgrounds Dec 16 2014 Thoughts on Constraints, Productivity and Creativity Dec 14 2014 Your First WatchKit Glance Nov 18 2014 AngularJS 1.3 Taste: Async Validators Nov 02 2014 Don’t Use Yeoman’s Default Angular File Structure Oct 08 2014 It Depends Sep 20 2014 CSS Tip: Elements with Height 100% - Fixed Amount Sep 08 2014 Prefer Code that Runs Once Aug 27 2014 Lessons from Building a Rocket Alarm App Jul 28 2014 Generic HTTP Error Handling in AngularJS Jun 25 2014 Angular Performance 101: The Slides Jun 17 2014 AngularJS: Decisions, Decisions & My Preferred Choices May 26 2014 Understanding Angular’s Magic: Don’t Bind to Primitives May 10 2014 What I Wish I Knew Writing My First Billing System Apr 22 2014 Improving ng-repeat Performance with “track by” Apr 15 2014 Writing More Maintainable Angular.js Directives Mar 30 2014 Please use hasOwnProperty: short story of a hack Mar 14 2014 Frontend Driven Development Feb 20 2014 My Pre-Deploy Checklist Jan 15 2014 CSS Tip: Differentiate Classes Used in Scripts Jan 03 2014 2013 My Favorite Ways for Horizontally Centering DIVs Nov 20 2013 CSS Tip: DIVs with Equal Dynamic Heights Nov 18 2013 CSS Tip: Stop Your Buttons from Flickering Nov 12 2013 Stop Using Key Up Events When You Don’t Need To Nov 07 2013 Adapting Scroll Views to iOS 7 Oct 18 2013 Please Use Labels Properly Aug 26 2013 CSS Tip: Overflowing with Text Aug 23 2013 Rails 4 with Ruby 2 on Heroku Jun 30 2013 Do-It-Yourself Twitter Triggers for IFTTT Jun 21 2013 Optimizing Angular Templates with Grunt on Heroku Jun 16 2013 My First 5 Minutes Learning AngularJS Mar 23 2013 Don’t allow your team to just go through the motions Jan 13 2013 2012 Slides from my Rails Israel Talk Nov 12 2012 Poor Man’s IFTTT Twitter Triggers Hack Oct 12 2012 Passbook: Lessons Learned Oct 10 2012 Rack Params Magic Even Got Stripe CTF Creators Aug 30 2012 Spare Me Your Fake HTML Controls Jun 23 2012 Why I Don’t Believe in Refactoring Tasks Jun 04 2012 Quick Tip: Firing Up Rubinius to Dig into Ruby Source May 06 2012 Slides from my “Introduction to Rubinius” Talk Apr 30 2012 Using Evernote for Fun and Profit Apr 20 2012 Using Binary Search for Debugging Apr 10 2012 Migrating to a GitHub Organization Mar 31 2012 Slides from the “How BillGuard does MongoDB” Talk Mar 07 2012 Notes from the Agile Practitioners 2012 Improving Your TDD Workshop Mar 01 2012 Notes from the Israeli Software Craftsmanship Group Code Retreat Feb 28 2012 Extend Your Toolbox: Custom Matchers Feb 04 2012 Stop Bitching: Do Self-Agile Jan 28 2012 Looking Back on 18 months of Testing and TDD at a Startup Jan 06 2012 2011 Stop Bitching: It Doesn’t Always Take Two to Pair Dec 30 2011 Stop Bitching: Use the Tools You Want Dec 18 2011 Your Brain Cares About Code Style Dec 10 2011 How I Moved My WordPress Blog from Dreamhost to a Free EC2 Instance Nov 30 2011 Stop Bitching: Write Those Damn Tests Nov 28 2011 Stop Bitching: the Autonomous Craftsmanship Core Nov 12 2011 Stepping Up: Do the Pre-Commit Skim Nov 05 2011 Fight Zombie Code Oct 28 2011 TIL: Ruby Classes that Look Callable Oct 18 2011 Submitting your first patch to Rubinius Oct 11 2011 When being idiomatic wears you out Aug 27 2011 Guest Post: Lookup Tables with Ruby-on-Rails Aug 09 2011 Today I Got Burnt by Isolated Tests Aug 07 2011 Shell Hackery: The Use of “cd .” Aug 04 2011 Why I Regret Choosing RightScale Jul 27 2011 In the Mind of a Master Programmer Jul 25 2011 Input Validation means more than Javascript Jun 20 2011 Statistics of 62K Passwords Jun 18 2011 Sometimes Tests Have to Fail Apr 03 2011 Testing Techniques: Managing External Resources Apr 01 2011 Design is Simpler Now: Embrace the Extract Mar 30 2011 Crafting Up - Community is Key Mar 27 2011 Making Embedded GitHub Gists Show Up on RSS Readers Mar 09 2011 Using Chef to Automatically Configure New EC2 Instances Mar 07 2011 Fake It Till You Make It - Team Edition Mar 05 2011 You Owe it to Yourself to be Old-School Feb 22 2011 Stop Wasting My Code Feb 05 2011 Book Review: Growing Object-Oriented Software Jan 10 2011 2010 Using Puppet to Automatically Configure New EC2 Instances Dec 19 2010 Adding GOOS Sauce to GWT MVP Dec 18 2010 Notes from the 5th Israeli Software Craftsmanship Meeting Dec 17 2010 Serializer Kata: Practicing DRY Dec 11 2010 Liskov Substitution Principle Violation Spotted in the Wild Nov 24 2010 Say No to Null Checks Nov 14 2010 Letting DRY Drive Nov 09 2010 Refactoring to Heaven Nov 07 2010 Refactoring: You’re Doing it Wrong Nov 06 2010 DRY: Don’t Get Trigger Happy Nov 04 2010 Taking DRY Further Nov 03 2010 Short Intro to DRY Nov 02 2010 Pairing for Life Oct 01 2010 Pairing for a Better Future: Grunts Making a Change Sep 30 2010 Logging with a Context: Users in Logback and Spring Security Aug 27 2010 Unleashing Your Enthusiasm: Grunts Making a Change Aug 20 2010 Book Review: Clean Code Jun 15 2010 Case Study: Refactoring Interfaces with TDDed Tests Jun 02 2010 Stop Apologizing for Your Code May 13 2010 Notes From the (First?) Israeli Code Retreat May 10 2010 Case Study: Single Responsibility Principle Violation May 09 2010 Python (nose) Test Coverage on Buildbot May 09 2010 Agile Software Development: You Will Never Code The Same Again May 02 2010 nose doesn’t discover tests on Solaris Mar 03 2010 Avoid the perils of coder customers Feb 20 2010 Stop Coding in the Middle Ages Feb 16 2010 Less Code is More Feb 13 2010 A Week in Nowhere for Better Code? Jan 14 2010 Every Coder Should Read TDD By Example Jan 12 2010 2009 Trying to Find Coder’s Heaven Nov 19 2009 Becoming a Happier Hacker: Actively Strive to Work with Other Hackers Oct 17 2009 Writing a BuildBot Latent Build Slave Oct 04 2009 Bash Nitpicking on Redirections Aug 12 2009 Fixing Equations in Word Documents Converted from OpenOffice Jun 28 2009 So You Got an Arduino May 14 2009 My “Hello, Arduino” May 14 2009 Sometimes all it takes is a little push Apr 04 2009 New version of JUnitConverter is out Mar 27 2009 Sending SMS using Google Calendar’s python API Feb 26 2009 2008 How To Pull an All-Nighter Aug 15 2008 Software Project Learning Process Jul 31 2008 Don’t Write Voodoo Code! Jul 09 2008 ANTLRv3 Integration with Eclipse Jun 20 2008 Multiple Threads Testing Idioms In Java May 06 2008 One Book A Month Apr 25 2008