Herding Code 132: Phil Haack, Keith Dahlby and Paul Betts on Git for Windows developers

In this episode, they guys talk with Phil Haack and Paul Betts (both new GitHubbers) and Keith Dahlby (author of posh-git, a set of PowerShell scripts which provide Git/PowerShell integration) about using Git on Windows.

Download / Listen:

Herding Code 132: Phil Haack, Keith Dahlby and Paul Betts on Git for Windows developers

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0132-Phil-Haack-Keith-Dahlby-and-Paul-Betts-on-Git-for-Windows-developers.mp3]

Show Notes:

  • Paul begins with talking about why he thinks Git is cool, starting with the ability to create a clean source history that’s based on intent.
  • Phil says some people who aren’t used to distributed version control get the wrong impression of rewriting history. The idea is that you’re rewriting history as you work locally to build a clean commit. You don’t generally rewrite history once you’ve pushed to the master repository.
  • Keith says he tells people that when you push, it’s permanent. Until then, you can pretend you’re perfect. It’s just a save point – this reminds Jon of a quote from Dave Ward that this is like the ability to create save points anywhere in a video game.
  • Scott K says this is all great in theory, but he never sees people taking advantage of history rewriting. He goes on to say that he loves GitHub but hates Git because Git hates developers – rewriting history is way too hard.
  • Phil says that this makes more sense when you think of this in terms of replaying changes.
  • Phil says that he really started liking Git after reading the site Think Like (a) Git.
  • Paul says that he thinks this would be a lot easier to understand if you could see and work with things visually. Scott K says gitk kind of works but it’s clunky. Keith talks about gitk a bit more.
  • Scott K talks about how he regularly ends up with a corrupted state and asks for recommendations. Paul says the solution is to use either git reset or git rebase and explains what they mean. Jon asks for more info, and Paul talks about git reset –hard.
  • Phil talks about the importance of following an established workflow to avoid problems or getting in a state you don’t understand. He talks about the published workflow they use for the NuGet Gallery. Paul talks about how he and Phil are working on improving the interface to make it easy to follow working patterns.
  • K Scott talks about one confusion is that there are so many commands and parameters. Keith says that you can get by with a tiny subset, and can grow as needed.
  • Kevin asks if it’s possible to get your repository into a corrupted state, or if users are just getting confused by a valid state. Paul talks about some finer points of how things are stored and wraps up by saying really the only way to lose work with Git is to mess up or delete uncommitted changes or files.
  • Twitter question from @LeeFlannery: "can you discuss how command line git for Win isn’t so scary – stop waiting for integrated VS tooling to use git." Paul talks about how the MSysGit makes things unnecessarily confusing by making you think you need to use the Bash prompt.
  • Twitter question from @JavierLozano: "Why use powershell instead of bash for a console client? What are the gains?" Keith explains how posh-git gives you a Windows native experience (e.g. Windows style file paths). Phil talks about how the posh-git tab extensions give you an IntelliSense-ish experience with Git. Keith explains that posh-git does things like keeps track of which file have been added, so you can autocomplete files you’re adding rather than have to type them out.
  • Scott K says that posh-git was slow when he tried to use it and asks if performance has been improved. Keith says that posh-git calls git status on every action to offer contextual tab expansions and explains how to disable that for faster performance.
  • Keith talks about installing posh-git using psget, and more advanced use by cloning the posh-git repo and customizing it. Jon asks why installing posh-git in command-line didn’t work in the PowerShell ISE, and Keith explains that there are separate profiles for PowerShell command line, PowerShell ISE, and the NuGet Package Manager prompt in Visual Studio.
  • Question from John Sheehan: "What are some of the other things outside of tooling that are impediments to Windows users adopting Git." Paul lists several: line endings, SSH keys, the MSysGit install, and the git commit using vi in compatibility mode.
  • Keith says that MSysGit isn’t Git for Windows, it’s Git for Linux developers on Windows – it doesn’t behave like Windows at all. Keith asks who runs MSysGit.
  • Phil says there are a lot of conceptual obstacles to adoption, and says that he thinks it’s necessary to make it easier to do simple things without worrying about obscure and advanced options.
  • Jon talks about the frustrations in typing in the SSH passphrase and asks for suggestions. Paul talks about ssh-agent.
  • Jon asks for specifics about what Paul and Phil are working on. Paul say the idea is similar features to GitHub for Mac – not necessarily in design, but featureset.
  • Jon says that he likes how the TortoiseHg tooling shows the command-line version you could have typed when you perform operations in the GUI. Paul agrees that’s useful, and Keith points out that it’s available in Git Extensions.
  • Scott K says that he likes the built in Mercurial server and says it’d be nice if Git made it easier to run a Git repo on Windows. Paul says that it’s really easy to set that using a fileshare. Scott K says he uses that, but it’s not as discoverable as the Mercurial webserver. Keith talks about how setting up he’s seen this set up using per-user shares.
  • Twitter question from @jeremydmiller "Are you concerned that folks spend so much time debating and tweaking their Git workflow that they’ll forget to actually code?" Phil and Keith discuss two popular GitHub workflows: GitHub Flow and git-flow.
  • Twitter question from @kppullin "why must line endings be so painful!" Paul explains the source of the problem and how autocrlf tries to solve that, and there’s a general about how problems occur.
  • Keith talks about using gitattributes to do things like telling Git to use C# differencing with .cs files.
  • Jon asks finding good, non-hostile documentation. Scott K says that all the books focus on happy path documentation rather than useful stuff. Some useful online resources are listed, including Think Like (a) Git, The Git Parable, and ProGit.org.
  • Keith jokingly asks if we can talk about why Git is better than Mercurial. Jon takes the bait, and hilarity ensues.
  • There’s a long discussion about the usefulness of a clean history and the ability to accurately use "blame" to understand when a bug was introduced.
  • Things start to wrap up and K Scott asks for last thoughts. Paul mentions GitPad, which sets Notepad as your Git commit editor. Keith recommends Console2. Phil points out a neat hidden feature on GitHub – using T to get incremental search.

Show Links:

Herding Code 131: Chris Williams and Matthew Podwysocki on the Javascript community

In this episode, the guys talk to Chris Williams (organizer of jsConf) and Matthew Podwysocki about the Javascript community, fighting negativity in the programmer community, emerging Javascript trends, and the merits of spring beers.

  • Jon asks Chris to catch us up with what’s happened since we last talked to him, just after jsConf.us 2010.
  • Chris starts with his jsConf.eu 2010 talk, including Promote.js and the reminder not to forget the roots of the Javascript community.
  • Chris doesn’t speak at the jsConf.us conference, mostly because he organizes the US conference and doesn’t want to present an appearance of unfairness.
  • Chris then moves on to his jsConf.eu 2011 talk, An End To Negativity.
  • Chris says that the negativity is rampant in the programming community, and it feeds on itself. There are far too many people who participate in community conversation just to cheer on the fights. Our profession has a unique opportunity to create and try new things, but the negativity in the community stifles that. We need to stop the negative “hating” in private conversations, not shouting matches in online forums.
  • If you disagree with a technology, put your energy to constructive use via open source contribution (fork and create) rather than writing scathing blog posts.
  • Scott K says that negative discussion’s everywhere – all online discussion, politics, media. Rather than discuss ideas, people just call others idiots. Chris says you’ve got to start locally. His recommended solution involves beer.
  • Matt says it’s easier to lob bombs from afar, and personal discussions solves that. Kevin says one on one discussions over beer aren’t always possible, and Chris says even the offer is what’s important.
  • Jon says that he’s never tried to resolve issues one-on-one and come away convinced that the other person is just plain evil. Usually there’s some unspoken history that explains why people think as they do. Chris applies that to prejudices against Javascript that were formed by bad experiences people may have had long ago.
  • Jon says he’s noticed that Chris’ speaking style is disarmingly humble. Chris says he really values humility in developers, and that the current rock star ninja terminology is too self promoting.
  • Jon says that the online discussion forums like Reddit and Hacker News are all about voting up or down, which encourages negativity. Chris talks about trite these arguments often are, such as focusing on features which aren’t yet implemented in new technologies.
  • Scott K. says he’s amazed at the overall positivity on StackOverflow. Chris says he thinks it’s a matter of time before it creeps in. Jon says he thinks that he thinks the vote engineering and overall problem solving focus of StackOverflow is designed to produce overall positive results.
  • Jon reacts to Chris’ Fork and Create call by saying that when he’s releasing code publicly, it’s a lot harder to criticize others. Chris says that people who are busy creating don’t have time for trivial arguments, and Matt says that working publicly gives you a healthy dose of vulnerability.
  • Chris talks about the negativity he encounters in putting on conferences. At jsConf.us 2011 they raised over $3000 to contribute towards increasing gender diversity and it received no attention at all, while a negative incident at the conference got a lot of attention.
  • Jon says that in teaching his daughter some basic programming, he’s reminded of the fun of creation that got him started in development. That’s got to be our focus. Chris and Matt talk about how their parents spent time introducing them to computers, and would love to see parents introducing their kids to computers.
  • Scott K says that he’s seen the community as a whole move from a focus on writing code to macho chest thumping.
  • Jon says he liked the part of Chris’ keynote that welcomed Dart and CoffeeScript. Chris said that innovation and new languages are great since they move things forward. Chris points out that people bash on Flash, but forget that it was instrumental in the development of Javascript through things like JIT compilation.
  • Scott K wonders if we’d do better to just create new languages more often. Jon says that’s tricky with Javascript since it runs on so many platforms, but Scott K says that he thinks there’s more room for extending Javascript inside the language itself. Chris says both can be powerful, and mentions ClojureScript. He says that the velocity of change for Javascript is accelerating with more frequent browser releases and the things he’s seeing in Windows 8. He says we need to embrace that change by being more willing to drop support for older browsers.
  • Christ talks about how TeamJS is raising money in the Mozilla Firefox Challenge (please join in!).
  • Jon reacts to Chris’ keynote question, “What would you do if you knew you could not fail,” noting that most of his personal failures come from not attempting things. Chris says that quote is inspirational to him, and agrees that we fail in 100% of things we do not attempt.
  • Twitter question from @elijahmanor – “Recently Chris tweeted that the trolls may be right. What did he mean by that?” Chris says that a reaction to hype around node.js, and there’s a general discussion about node.js.
  • Jon asks Chris about his reactions overall to Microsoft getting involved with things like node.js and Javascript on Windows 8. Chris says that the community sometimes has an initial shock, but Microsoft-of-new is a different company that’s doing a lot of great stuff. He says he’s happy to see talks from Microsoft developers that aren’t “Microsoft presentations.”
  • Matt talks about a recent node.js talk focused on maximizing node.js hosting efficiency.
  • Jon asks Matt and Chris to give us a heads up on some emerging technologies in JavaScript land. Matt mentions emscripten, jsmad, and RiverTrail.
  • Jon asks if people (himself included) will eventually realize that Javascript isn’t inherently too slow for these computationally intense applications. Scott K and Matt talk about how things like V8, JITing, and investment by big companies continue to make Javascript faster and faster.
  • Jon asks Chris what trends he’s noticing, and he mentions dynjs, pdfjs, and jslinux. He mentions browser vendors moving towards extension systems based on Javascript. Jon talks about how he thinks Mozilla’s XUL was so far ahead of the game, using HTML/CSS/Javascript as a development platform.
  • Matt brings up JSIL (a compiler that transforms .NET applications to Javascript). There’s a discussion of Javascript as a VM for other languages. Matt mentions Microsoft’s Volta initiative.
  • Chris and Scott K talk about putting other languages in the browser. Chris says that Javascript has been battle tested in a way that no other language has.
  • There’s a discussion of the node.js work that Microsoft’s been doing – not just getting it to run on Windows, but in making Windows / IIS hosting for node.js compelling.
  • Jon asks Chris and Matt for their current recommendations, and an argument over spring beers erupts.

Show links:

Download / Listen:

Herding Code 131 – Chris Williams and Matthew Podwysocki on the Javascript community

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0131-Chris-Williams-and-Matthew-Podwysocki-on-the-Javascript-community.mp3]

Herding Code 130: Dave Weaver on Loggr – a realtime analytics service built with MVC, MongoDB and SignalR

In this episode, Jon Galloway and Kevin Dente talk to Dave Weaver about Loggr, a complete logging, analytics and notification system that will easily bolt on to your application.

  • Dave runs Markkup, a consulting company and is building Loggr, SaaS application that provides real time logging and monitoring.
  • He was one of the founders of Chili!Soft, which was an implementation of Classic ASP that ran on Linux, Solaris, IBM software, and Windows.
  • Dave tells the story behind Chili!Soft, which is now Sun Java System Active Server Pages.
  • Dave goes into the main features/benefits of Loggr.
  • Jon asks about reports and queries provided by Loggr.
  • Dave mentions there is an HTML5 version of the dashboard that works well on a tablet as well as an iPhone app. There is also an Android app in the works.
  • Jon and Dave discuss the freemium model that Loggr employs.
  • The guys move to talking about the stack that Loggr is developed on.
  • It is built on ASP.NET MVC2.
  • It uses Backbone.js for the client side JavaScript.
  • MongoDB is used as the database.
  • SignalR is used for the client-server communication to provide live user monitoring.
  • Kevin asks about the decision to build a startup on the .NET platform.
  • The guys touch on the VB.NET vs C# debate.
  • Jon asks about the backup/redundancy story for MongoDB.
  • Dave talks about the HTML5 client vs the native iOS app vs the Android app.
  • Jon asks about the experience developing the iOS and Android apps.
  • There are agents for .NET, Java, ColdFusion, PHP, Ruby, JavaScript.
  • You can configure log4net to log to Loggr.
  • Dave mentions Loggr uses Rapleaf to display demographics for a user, such as age and gender.
  • Loggr also uses FullContact to display the social networks and avatars of a user.
  • Jon asks Dave for advice for anyone interested in starting a similar venture.
  • Jon asks about the Loggr road map.
  • Jon asks about the business and marketing side of Loggr.
  • Jon asks if any companies are leveraging the Loggr APIs to create other offerings.
  • Jon asks if there is any demand for customers to host Loggr internally.
  • Kevin asks if there have been any issues related to versions of the Loggr APIs.
  • Kevin asks about downtime and SLAs.
  • Jon asks about the process to get started with Loggr.

Show links:

Download / Listen:

Herding Code 130: Dave Weaver on Loggr – a realtime analytics service built with MVC MongoDB and SignalR

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0130-Dave-Weaver-on-Loggr-a-realtime-analytics-service-built-with-MVC-MongoDB-and-SignalR.mp3]

This week’s show notes were typed up by @RossFuhrman – Thanks!!!

Herding Code 129: Rob Reynolds on Chocolatey and the Chuck Norris Frameworks

In this episode, Jon Galloway, Kevin Dente and guest host John Sheehan talk to Rob Reynolds about Chocolatey (a Machine Package Manager, somewhat like apt-get for Windows), as well as Rob’s Chuck Norris frameworks for project setup, management, deployment, and more.

  • Rob talks about how Nu helped shape the direction of NuGet.
  • Chocolatey is a tool for installing system wide applications such as Notepad++ or Git.
  • Rob explains that it is built in PowerShell on top of NuGet.
  • The guys talk about the simple process to install Chocolatey and install an application.
  • Rob explains how Chocolatey was born.
  • John S. asks what the process is to create a new Chocolatey package.
  • The PowerShell command to install Chocolatey is: iex ((new-object net.webclient).DownloadString(“http://bit.ly/psChocInstall”))
  • Jon G. asks what Chocolatey does behind the scenes when installing a package.
  • Jon G. asks how to use Chocolatey to uninstall software Chocolatey installed.
  • John S. asks if Chocolatey has been used in a way that wasn’t expected.
  • The guys discuss the various ways of setting up a process to install multiple packages at once.
  • Rob explains the difference between Chocolatey and Ninite.
  • Kevin asks about the silent installs and how it works if the application doesn’t support silent installs.
  • Kevin asks about the update story.
  • The guys discuss learning and understanding PowerShell.
  • Rob discusses the Chocolatey integration with Web Platform Installer.
  • John S. asks about the reason behind writing Chocolatey in PowerShell.
  • Kevin asks about Microsoft’s package manager, CoApp and how it relates to and is different from Chocolatey.
  • John S. and Rob discuss how Chef, Puppet and Chocolatey could be used to spin up a new machine for a production deployment.
  • Kevin asks about the fact that Rob is the owner of most of the Chocolatey packages and how he keeps track of updates to all those packages.
  • Rob talks about the Chuck Norris framework and the following components of the framework:
  • WarmuP -allows you to define templates for entire projects and change them as technology changes and you learn new things.
  • UppercuT – is a conventional automated .NET build framework (templated NAnt). UppercuT is the insanely easy to use build framework.
  • RoundhousE – is an automated database deployment (change management) system that allows you to use your current idioms and gain much more.
  • DropkicK – is a fluent deployment framework that seeks to make deployments easier.
  • Jon asks if the company Rob and Dru worked for when they were working on these projects was receptive to their open source development.
  • Rob will be speaking on NuGet at CodeMash (it’s sold out) in January.

Show links:

Download / Listen:

Herding Code 128: Rob Reynolds on Chocolatey and the Chuck Norris Frameworks

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0129-Rob-Reynolds-on-Chocolatey-and-the-Chuck-Norris-Frameworks.mp3]

This week’s show notes were typed up by @RossFuhrman – Thanks!!!

Herding Code 128: Corey Haines on Global Day of Coderetreat (December 3)

On this episode of Herding Code, Scott K, Jon, and Kevin talk to Corey Haines about the Global Day of Coderetreat event being held in 90+ cities on December 3.

  • Scott asks Corey to start by explaining his software journeyman thing, or as Scott calls it “couch surfing in return for coding.” Corey describes how he transitioned from a traditional software developer job to training and speaking.
  • Scott describes his experiences at a Coderetreat in Seattle – a series of 45 minute pair programming exercises with Conway’s Game of Life under a variety of constraints.
  • Corey explains how Coderetreat got started at CodeMash 2009 as a way to intentionally practice writing beautiful code outside of the pressure of day to day work.
  • Corey talks about how deleting your code at the end of every 45 minute session means you can concentrate on learning rather trying to complete anything.
  • Jon asks if people are working towards any kind of graphical output, and Corey says that the focus is really on the code, and learning how to respond to changes and constraints.
  • Twitter question from George Dinwiddie (@gdinwiddie) “What was the most interesting starting point for the Game of Life” Corey talks about people often start with traditional object oriented noun/verb approaches in the morning and move towards an outside-in mentality in the afternoons. He’s seen some interesting work with functional languages such as Clojure and J.
  • Jon asks about the breakdown of programming languages that he sees people using.
  • There’s a discussion of how setup and install can often eat up a lot of time at this kind of event, and Corey talks about how that’s not such a problem here: people show up with working development environments, are working at the testing level, and can just pair with someone who
  • Jon asks what common patterns he sees people learn. Corey talks about some big changes in TDD focus and application design.
  • Scott and Corey talks about the benefit of pairing with a lot of people at differing skill levels.
  • Twitter question from Steven Proctor (@stevenproctor) “How often do you get to pair at these events” – Corey says that the facilitator role means you don’t get to pair, so he’s only been able to a couple times.
  • Kevin asks how new pairing is to attendees, and if there’s any specific focus on learning how to pair better. Corey talks about some specific exercises which focus on paring techniques, including a Mute session (no talking, all communication through code) and Find The Loophole (in which the the coder purposefully tries to write the wrong algorithm while passing all tests).
  • Scott says he
  • Twitter question from from Maggie Longshore (@MaggieLongshore) “How he makes each code session unique so it doesn’t get monotonous. Share some tips for facilitators.”
  • Jon asks about the upcoming Global Day of Coderetreat on December 3. Corey explains what will be going on worldwide, and how he’ll be exploiting a flight over the international date line to attend the full day sessions in both Sydney and Hawaii.
  • Jon asks about some of the guidelines for listed hosting a Coderetreat, including a good (non-pizza) lunch and no cost to attendees. Corey says that in some cases there’s a deposit which is fully refunded provided you show up.
  • Jon asks Corey how people can find out about a Coderetreat near them, and if it’s still possible to set up a Coderetreat if there isn’t one in your area. Corey says yes, and points us to Coderetreat.org for all information about the Global Day of Coderetreat on December 3.
  • Jon asks Corey about his MercuryApp, a micro-journaling system with analytics that he and Sara Gray run.
  • The guys chide Corey for slacking off by setting his Global Day of Coderetreat so low, and he talks about his difficult decision to exclude astronauts this time around.

Show Links:

Download / Listen:

Herding Code 128: Corey Haines on Global Day of Coderetreat

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0128-Corey-Haines-on-Global-Day-of-Coderetreat.mp3]