Radio Garden is, essentially, Google Earth for radio. You click and drag a 3D globe around, and zoom in on local stations around the world. Every dot represents a feed you can tune in to, and, using the options in the top left of the webpage, you can switch between live streams, historical content, jingles, and recorded interviews. Live streams are the most engaging, and in a few minutes you can browse everything from Ugandan pop to Norwegian evangelical rock to Japanese J-pop to Indian astrological advice. It’s a genuine cornucopia, with nearly 10,000 stations available to tune in to.


Image description

Tesla's home energy efforts might be centered around its solar roofs, but it knows that not everyone can (or wants to) rip up their roof just to bring renewable energy to their home. To that end, the company is offering a first glimpse at Panasonic-made solar panels that would go on top of your existing roof. Unlike many aftermarket options, this would be relatively slick and unintrusive -- the panels have "integrated front skirts and no visible mounting hardware." While it'll be patently obvious that you have solar energy on your roof, it shouldn't be the eyesore you sometimes get with conventional designs.

The company is taking requests for custom price quotes right now, but it tells Electrek that production for the 325W modules should start sometime in the summer. You'll have to be patient if you're determined to escape the conventional power grid. However, this is definitely not a secondary project for Tesla. The firm says that it'll use these panels for all new residential projects (outside of tiles), so you're really looking at the future of Tesla's mainstream energy tech.


Spring is a fantastic open source framework that addresses the complexity of application development. One of the chief advantages of the Spring framework is its layered architecture, which allows you to be selective about which of its components you use. Spring is a cohesive framework for J2EE application development.

While developing desktop, web, enterprise, cloud, or microservices applications, almost every application type needs a robust infrastructure which takes care of dependencies, auto-configuration, and actuators.

So getting started with Spring or any other frameworks is a critical and time consuming task.Spring provides a convenient way over such application infrastructure issues with a framework called Spring Boot.Spring Boot provides the best industry practices, helps when you start applications from scratch, and boosts your application development speed.

Full tutorial >>

Image description

Image description


This script listens to meetings I'm supposed to be paying attention to and pings me on hipchat when my name is mentioned.It sends me a transcript of what was said in the minute before my name was mentioned and some time after.It also plays an audio file out loud 15 seconds after my name was mentioned which is a recording of me saying, "Sorry, I didn't realize my mic was on mute there."

Uses IBM's Speech to Text Watson API for the audio-to-text.

Github project

Image description


Git has a strong commitment to backwards compatibility: many powerful features are hidden behind options rather than exposed as default behavior. Fortunately, Git also supports aliases, so you can create your own commands that do all manner of Git magic. Here’s a selection of the more useful (or at least entertaining) aliases defined in my .gitconfig:

Git Please

$ git config --global alias.please 'push --force-with-lease'

Git’s --force-with-lease option is far more polite than the --force option: it checks that your local copy of the ref that you’re overwriting is up-to-date before overwriting it. This indicates that you’ve at least fetched the changes you’re about to stomp. Since git push --force-with-lease is rather a lot to type out each time, I’ve created a polite alias for it: git please.

Git Commend

$ git config --global alias.commend 'commit --amend --no-edit

Ever commit and then immediately realize you’d forgotten to stage a file? Fret no more! git commend quietly tacks any staged files onto the last commit you created, re-using your existing commit message. So as long as you haven’t pushed yet, no-one will be the wiser.

$ git add Dockerfile
$ git commit -m ‘Update Bitbucket pipeline with new Docker image’
# (facepalm)
$ git add bitbucket-pipelines.yml
$ git commend

Git It

$ git config --global \
'!git init && git commit -m “root” --allow-empty'

The first commit of a repository can not be rebased like regular commits, so it’s good practice to create an empty commit as your repository root. git itboth initializes your repository and creates an empty root commit in one quick step. Next time you spin up a project, don’t just add it to version control: git it!

$ cd shiny-new-thing
$ git it
Initialized empty Git repository in /shiny-new-thing/.git/
[master (root-commit) efc9119] root

Git Staaash

$ git config --global alias.stsh 'stash --keep-index'
$ git config --global alias.staash 'stash --include-untracked'
$ git config --global alias.staaash 'stash --all'

git stash is one of the most delightful and useful Git commands. It takes any changes to tracked files in your work tree and stashes them away for later use, leaving you with a clean work tree to start hacking on something else. However if you’ve created any new files and haven’t yet staged them, git stash won’t touch them by default, leaving you with a dirty work tree. Similarly, the contents of untracked or ignored files are not stashed by default.

I’ve created a few handy aliases to handle different variations of git stash, based on which bits of your work tree you need to stash:

git stsh      # stash only unstaged changes to tracked files
git stash     # stash any changes to tracked files
git staash    # stash untracked and tracked files
git staaash   # stash ignored, untracked, and tracked fil

If in doubt, the long one (git staaash) will always restore your worktree to what looks like a fresh clone of your repository.

Git Merc

$ git config --global alias.merc 'merge --no-ff'

If you’re using a standard non-rebasing branching workflow, running a standard git merge to combine feature branches with the master is actually not ideal. With no options, git merge uses the --ff merge strategy, which will only create a merge commit if there are no new changes on the master branch, otherwise it simply “fast forwards” your master branch to point at the latest commit on your feature branch. Only sometimes creating a merge commit makes it tricky to reason about which code was developed on which branches when looking through your git history.

Image description

Git merc uses the --no-ff strategy, to always create a merge commit.

Image description

Incidentally, --no-ff is also what we use under the hood (by default) when merging pull requests in Bitbucket.

Git Grog

$ git config --global alias.grog 'log --graph --abbrev-commit
--decorate --all --format=format:"%C(bold blue)%h%C(reset)
- %C(bold cyan)%aD%C(dim white)
- %an%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n
- %C(white)%s%C(reset)"'

My git grog (or “graphical log”) alias has evolved over the years to the point where I’m no longer sure I understand exactly what it does. But it sure looks pretty:

Image description