Friday, June 26, 2015

My Standing Desk

I have known about standing desks for a number of years now.  But the longest period, up until now, of ditching a traditional chair involved using an exercise exercise ball as my primary chair at work.

However for the past month this has been my set up at work:


I've got nothing but good things to say about it.  I have an anti-fatigue mat, a step stool, a foot roller, and a chair (like a bar stool).  Standing for eight hours comes with its own problems.  But short walks around building during the day, alternating between sitting and standing every couple of hours, and using the stools and roller to vary my stance, makes for a great balance.  

10 Accessories Every Standing Desk Owner Should Have

Podcast Recommendation: TalentGrow

I recently posted a 5 star review of the TalentGrow podcast on iTunes.  I want to share that review here, and recommend the show to everyone: IT VPs, Directors, Managers, Product Owners, Product Managers, Developers, and QAs.  Whether you are a leader or not, whether you just want to be a great team member, or if you just want to be a happier, more successful person there is much Halelly Azulay has to offer.
From the first episode, I was hooked.  Halelly is a rare combination of light (almost bubbly), smart, and driven.  Seven episodes in and she has consistently had on great guests, leaders in their respective domains, and asked good questions.  I'm not sure how someone who has just started is such a great interviewer;  allowing her guests to comfortably share their stories, while keeping them on point, and her listeners engaged.   The first six episodes have ranged over a variety of topics: avoiding being overworked, goal setting, focus, creativity, and performance. But through them all there is Halelly, her love of learning, and her personal desire to improve every day -- while helping others to do the same.  Give the show a try, you won’t be disappointed.
 The TalentGrow podcast is available on iTunes and Sticher.

Agile

Having been on Agile teams that were mostly Agile, and Agile teams that were mostly not Agile. I agree with these two posts by Nathan over at Design, Code, Release : Agile is... and Agile methodologies are just tools.

As with most things, the people who know the least about a subject are usually the most dogmatic about it, and those who know the most rarely talk about it. This most certainly applies to the different Agile shops I've been in.  The most Agile development shops involve a lot of team communication, support, and respect--respect of the company for the team, respect of the team members for each other and respect of the team members for the company.

On these great teams, we talked, we helped, we supported, we did stand ups, we did sprints and sprint plannings, and backlogs, and retrospectives, and demos.  We adapted, and were given almost complete control over  what we did, how we did it, and most of the time when we delivered, Agile was our tool.  Great carpenters rarely talk about hammers and screw drivers.  The find the best, they learn how to use them, and then go about doing what needs to be done: one has tools to build, one does not build in order to talk about tools.

Nothing in Agile is set in stone.  The purpose of Agile is to allow for communication, adapt to ceaseless changes from the business, and to build great products.

Monday, June 22, 2015

NDC 2015 Security Keynote

A Thousand Times, Yes!

Organizational Skills Beat Algorithmic Wizardry
When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity.
I came across the above, here: The most important skill in software development

Totally agree. Great stuff!

Motivation and Drive

Good Stuff from John Sonmez here:





NDC Oslo 2015 Goodness

With NDC Oslo 2015 wrapped up, lots of great goodness in the form of blog posts and videos to come.

Via @bryan_hunter, I've mostly been following the functional programming tract.  However, there is so much more and I'm looking forward to digging in.

Today's post over at The Morning Brew features a post from Dyan Beattie with lots of front-end, WebApi, and RESTfully goodness: Slides and code from NDC Oslo 2015

And finally if you do not know about all of the goodness that NDC Oslo has to offer, take a week or two off from work and go here:

https://vimeo.com/ndcconferences/videos

Saturday, June 20, 2015

Jasmine

I'm about to start my first AngularJs project in almost a year.  The two biggest flaws with that last project were 1) I was on a development team of one, ME, with a three-month project timeline, and I allowed a complex form validation scheme to be part of the first release. You think I would have learned from past failures!!! 2) The more detrimental mistake -- to my sanity and my having to spend two glorious summer months, working inside, 60 to 80 hour weeks -- I made was not doing front end testing.

Although, the project did launch, albeit a few weeks late, I committed myself to never do another website release without both a suite of JavaScript unit tests, and Selenium integration tests.  The Web Api projects I have delivered (successfully and early) this year have come with suites of integration and unit tests, but now that I am doing a front end project again, its time to look at Jasmine.  There are of course other tools, and I will explore them as this project progresses, but Jasmine seems like a great place to start.

After searching the web, and watching a couple of PluralSight videos, I want to recommend this series on YouTube. Excellent presentation of the material.


Resume Thoughts

John Sonmez has some good ideas here to consider and look into.


A History of Functional Programming

An informative historical look at function programming.

Joe Armstrong, NDC 2014
Functional Programming the Long Road to Enlightenment: a Historical and Personal Narrative

Friday, June 19, 2015

Interviews: The Factory Pattern

After a recent failed job interview, it happens--even for someone like me who never has a problem getting the next job, I've been refreshing my understanding of the basics. This is always one of the struggles of interviewing, when working day-to-day, year-to-year at a job, the "interview vocabulary" is not fresh in your mind.  Even though you might be working with factories, types, and encapsulation on a regular basis, you aren't talking about it, you are doing it.  One of the values I see in doing this blog, being more active on twitter, and hopefully finding other outlets like StackOverflow and local user groups, I can be more ready for ad hoc interviews, and not just the end of job interviews that I have to time to prep for.

Now the actual feedback I received from the interviewers was not that I didn't ready have good answers to the technical questions, but that I was defensive about (or with) my answers. Unfortunately, given the situation, I was not able to get follow-up feedback on what that meant.  So although I don't have details to report on this aspect yet, I do have a plan for working on my natural tendency of being defensive in stressful situations.

Rant: God, do I hate group interviews! As an introvert, give me eight one-on-one's in a row, take up four to five hours of my day, but do make me sit in a room with two managers, an architect, and three developers.  Ugh!  I've never gotten those jobs, but ALWAYS get the job where I do a series of one-on-one interviews.

One of the question and answers that stand out to me, was the one on the factory pattern. When asked about it, I basically gave that standard descriptor: the factory pattern is a construction, a creation, pattern.  I went into little to no detail, and drew a blank after I said I used them on my latest project. After leaving the interview I remember the awesome factory I create for creating Excel Reports. <sigh>

We had a dozen different individual Excel reports that needed to be generated.  All the reports had the same styles, header, and footer.  But the data being displayed in each report was quite different. So I created a a shared interface and a factory for generating the different Excel reports.

What's interesting to me, and this was something I did based on my gut, and not a reasoned approach, is that after several refactorings I moved from the factory pattern to the facade pattern. It would be an interesting an assignment for myself to re-approach my Excel code and see if I would make the same decisions to move to the facade pattern.  I know the primary thought I had when making the facade was that I did it during my last week on my job when my team members were on vacation.  The choice I had was to make the code as readable as possible or to write documentation.  I am a developer, so I of course chose rewriting my code.  :-)

In an earlier post, I recommend Derek Banas' YouTube series on Design Patterns. Based on what I just wrote I am going to re-watch Derek's videos on the factory pattern and the facade pattern.

Thursday, June 18, 2015

Stackify

Stackify: one solution for monitoring, performance, errors, and logging.  Worth considering for your next project.

Featured on a recent episode of .Net Rocks: Instrumenting using Stackify

Wednesday, June 17, 2015

Agile, You keep Using That Word




John Sonmez's latest post made me think of Inigo's sage observation.  :-)


I like to say that my position was on the most Agile team I had worked on.  But even we did not fully get the demo, feedback, revise, demo loop.


Truer words have never...

"Leaving alone" means being there for support, guidance, coaching, setting goals and direction, and most importantly keeping outside demands and interference to a minimum. Nothing less than this, and little more. Hire doers and let them do.

Tuesday, June 16, 2015

NCrunch: A Must Have

I cannot say enough good things about NCrunch.  If you are interested in unit test testing, if you are committed to TDD, not buying and using NCrunch is like seeing the value in strength training and not doing High Intensity Training. Don't understand the analogy?  That's okay, buy Doug's book, buy NCrunch, use them, and see your productivity and efficiency sore.

I am not an advocate of doing everything in your life, ever single project, to its utmost.  But I am an advocate of doing a few things in your life to the fullest--plus one.  To pushing your limits, to always improving, to taking every opportunity to see how much you have in the tank, and to doing hard things. There is just something about forcing all Visual Studio warnings to be errors, to getting as close to 100% code coverage as possible, to not allowing any method to be more than eight lines, to using the CQRS pattern every where you can, to not repeating yourself ever, ever, EVER.

NCrunch will encourage you to do all these things, while holding your hand, encourage you to do better one day at a time, while not screaming bloody murder at you because you just started.

NCrunch PluralSight Training

Type Drive Development

I came across the concept of Type Driven Development this morning.  Placing this here for future reference.

Why type-first development matters

Type-Driven Development

More Typing, Less Testing: TDD with Static Types, Part 1

More Typing, Less Testing: TDD with Static Types, Part 2


C# and Fody

Fascinating stuff!

.Net Rocks! Extending C# using Fody with Simon Cropp



Fody on Github

Monday, June 15, 2015

Uncle Bob on Mocks

This is the clearest and most thorough presentation on the various types of test doubles and their relationships to one another I've seen:


Test  Double, dummies, stubs, spies, mocks, and fakes.

Friday, June 12, 2015

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs by Gerald Jay Sussman and Hal Abelson is recommended by Robert C Martin in hist NDC 2014 lecture Functional Programming; What? Why? When?

Unlcle Bob also recommend the MIT lectures by Sussman and Abelson.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/

I am currently watch "Functional Programming; What? Why? When?" and am adding the above links for future reference.

Mark Rendle's Worst Programming Language Ever

Mark's talk at 15th December 2014 in London at The Skills Matter eXchange

https://skillsmatter.com/skillscasts/6088-the-worst-programming-language-ever

Friday, June 5, 2015

Architecture: Food for Thought

Software Architecture vs. Code by Simon Brown

I've been thinking a lot of about architecture a lot over the past year, and just loved this presentation. Many thought provoking ideas:



One of my favorite ideas here is that for all the good unit testing provides, there is much baggage it comes with, and some "problems" it causes. As computers are getting faster, and as it because easier to spin up VM instances, we have so many more options.

I love the idea of relying on integration tests more than unit tests. Integration tests that run just as fast and easily as unit tests. I love the idea of component architecture. I love Uncle Bob's idea of screaming architecture and The Clean Architecture, not being implementations (MVC, SQL Server, AnjularJs, etc), but conceptual (Employees, Accounts, Payments, Users, etc): Architecture, Use Cases, and High Level Design

Lots of wonderfulness and efficiency here, if we can learn from the past (tight coupling and spaghetti code) while not over-architecting and over-layering for the sake of our tools.