Instantly share code, notes, and snippets.

View outline.md
  • The Heroku Developer Experience
  • Values
  • Effects
    • button
    • clone-learn-build-share
View adams-heroku-values-subset.md

Do it with style

Just because we're building bad-ass infrastructure and tools doesn't mean it can't be cool, stylish, and fun. Aesthetic matters. See The Substance of Style

Slick and fun meets powerful and serious.

Before Heroku (and a few others, like Github and Atlassian), developer-facing products were almost always stodgy, ugly, and completely lacking in style or fun.

We're part of the consumerization of IT.

View facebook_use.md

Goal

  • Keep a Facebook account for those who occasionally contact me or share content with me via Facebook.
  • Minimize behavioral information about myself shared with Facebook, assuming it will be shared beyond my control

Steps

  • Never use Facebook proactively. It's just for people who wants to contact me and share with me.
  • Keep personal profile on Facebook similar to LinkedIn and make it public.
  • Delete Facebook mobile apps unless needed to view shared content. Delete main app, probably Messenger, maybe Instagram. Make sure these apps don't run in background after use.
View k8s.go
import (
"k8s.io/client-go/1.4/kubernetes"
"k8s.io/client-go/1.4/pkg/api"
"k8s.io/client-go/1.4/pkg/labels"
"k8s.io/client-go/1.4/pkg/apis/extensions/v1beta1"
"k8s.io/client-go/1.4/tools/clientcmd"
)
var (
kubeconfig = flag.String("kubeconfig", os.Getenv("HOME")+"/.kube/config", "absolute path to the kubeconfig file")
View designer.html
<link rel="import" href="../../salesforce/s1-elements/scaffold/s1AppScaffold.html">
<link rel="import" href="../../salesforce/s1-elements/scaffold/s1PageContainer.html">
<link rel="import" href="../../salesforce/s1-elements/s1StagedNavigationStageLeft.html">
<link rel="import" href="../../salesforce/s1-elements/s1StagedNavigationNotifications.html">
<link rel="import" href="../../salesforce/s1-elements/s1AnchorLightDefault.html">
<link rel="import" href="../../salesforce/s1-elements/s1ListWithLabels.html">
<link rel="import" href="../../salesforce/s1-elements/s1AnchorDark.html">
<link rel="import" href="../../salesforce/s1-elements/s1IndicatorDotsLightBackground.html">
<link rel="import" href="../../salesforce/s1-elements/s1ButtonGroups.html">
<link rel="import" href="../../salesforce/s1-elements/scaffold/s1DetailView.html">
View safe_storage_of_passwords.md

Safe-keeping passwords used in ad-hoc scripts

When I need to send small batches of customized emails, I use Craig Kerstiens' and Will Leinweber's Ruby trick.

I've added an additional small hack to this trick that I've used several times: Storing and retrieving passwords in the Mac OSX keychain with minimal pain.

If you read through Craig's post and the code, you'll see that you need to pass in your GMail password. I care deeply about protecting access to my GMail account, so I don't just paste passwords into code or other random files stored on my hard drive. To keep things as secure as possible, I do the following:

  • Turn on two-factor for GMail
  • Now you cannot use your primary password for scripts like this. Instead I generate a per-application password. (click on "App passwords" on Security settings).
View keybase.md

Keybase proof

I hereby claim:

  • I am jesperfj on github.
  • I am jesperfj (https://keybase.io/jesperfj) on keybase.
  • I have a public key whose fingerprint is 85E8 AED2 A3FC 16C1 4D6D 3C1A 14D9 03AB F0AF 4D33

To claim this, I am signing this object:

View thoughtworks_technology_radar.md

The ThoughtWorks Technology Radar is full of good stuff. Here are my personal favorites:

Micro Services

There's an upfront cost in building more distributed systems with independently operated micro services but it brings so much clarity to your world. You can align small agile teams with each service, you have much more explicit conctracts, leaky interfaces becomes more rare.

The key trend here is that platform services and frameworks have come a long way to make it easier to build micro services. So you should absolutely trial it out and understand just how the cost compares to your current approach.

Perimeterless Enterprise

View go.md

Gigaom picked up Derek Collison's tweet about Go. The article singles out static typing as a reason why Go will become a popular systems language.

I will add another reason: It is not an object oriented language.

In the 15 years I have spent designing, building and marketing what is essentially networked services (web apps), object orientation has always feel like a poor fit. Object orientation is simply not a universally applicable modeling principle. Going further, I will argue that, in most cases, it is a poor modeling principle. Objects rarely exhibit behavior. More often, objects are subjected to behavior by some external force (functions operating on data structures).

I find that keeping functions and data structures separate yield the most well structured programs. Best practices for writing web apps follow the same pattern: Use data transfer objects, use compositi

View m2eclipse_copy_dependencies_conflict.md

Take a simple Maven app like this JAX-RS app:/

$ git clone http://github.com/heroku/template-java-jaxrs.git
Cloning into template-java-jaxrs...
remote: Counting objects: 348, done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 348 (delta 97), reused 348 (delta 97)
Receiving objects: 100% (348/348), 39.70 KiB | 45 KiB/s, done.