Obviously, the first thing to do was all the
Chrome
There's a lot of debate on which is the best browser. I tend to oscillate between Chrome and Firefox on a roughly 3-yearly cycle - I'm just past peak-Chrome right now. I'm beginning to get annoyed at some of its aspects, but on the whole, I prefer the look-and-feel to Firefox's, and (purely anecdotally) it *feels* faster. Moreover, because I have an Android phone, I get all the benefits of the Google ecosystem "for free" (though, in fairness, I should mention that you can pull off many of the same tricks with Firefox mobile). In particular, since I'm getting back into web development right now, my familiarity with Chrome's Developer Tools definitely trumps Firefox's (also excellent, but unfamiliar) Firebug.
The privacy and open-source debate is a conversation for a whole other time.
Settings tweak
While Chrome was downloading, I tweaked some Mac settings to more sensible values:
- Natural scroll direction (this is the default, thankfully, but I checked it just to be sure!)
- Upped the trackpad and mouse sensitivity
- Removed practically everything from the Menu Bar, moved it to the left, and set it to auto-hide. I've never understood modern OS' determination to cover up usable space with passive and useless menus. They should be there when you need them, and be hidden otherwise. With Mac's Cmd-Space shortcut for Spotlight search, and similar functionality available in Windows via Alfred, you should never need to use a menu-bar to launch a program again!
- “Use function buttons as function buttons” - I very rarely use the (admittedly quite nifty) media, brightness, and backlight controls built into the average Mac keyboard, but I *do* make extensive use of the function keys in IntelliJ (see below).
Open Chrome
Once Chrome had downloaded, I logged into my Google Account (using 2FA, natch), and all my bookmarks and apps were automagically present. Whoop whoop!
Apps/plugins of note:
- Pushbullet - one of those apps that makes you go "Why on earth wasn't this included originally?". It allows you to link your Android phone to your Chrome install, to "push" notifications from one to the other, and (best of all) to reply to SMS messages directly from your computer.
- Adblock - I don't know how anyone can bear to browse the Internet without Adblock, frankly. Of course, you should disable it when browsing smaller and/or independent sites that you want to support with your ad-views
- LastPass - arguably the best of the "Password vaults" (1Pass being the notable competitor). Everyone knows you shouldn't reuse passwords, right? But it's such a hassle to think up (and remember!) a unique and strong password for every site. Enter LastPass. It generates a fresh and cryptographically strong password for any site you visit, and auto-fills with your details on request. Even if a site is hacked and nefarious nasties acquire your password, they'll only be able to access that one account (and only until you change it). Of course, this does introduce a SPOF in LastPass, but personally I'd much rather have one extremely strongly-protected password store than multiple potentially-weak ones sharing the same credentials (someone who knows more about InfoSec, please feel free to correct me!)
- Tampermonkey - a Chrome version of GreaseMonkey, which lets you install and run arbitrary javascript userscripts on defined domains. Allows for considerable prettification and customisation of pages
- Tweetdeck - at last count, I own 7 twitter accounts, and that's not counting the several that I've probably forgotten about. Even if I only had one, TweetDeck would still be my client of choice. It's super-awesome. (Not technically an app anymore, since it's served from tweetdeck.twitter.com, but still)
- RES - Take my comments about Adblock and The Internet, and replace with RES and Reddit - only more so.
- Postman REST Client - ok, so this is a bit niche, but if you're doing anything with REST APIs, Postman is by far the easiest way to get an intuitive feel for the call-and-response without dropping to the Terminal
- nCage - absolutely essential, without a doubt
iTerm2
Talking of the terminal, Terminal.app that comes bundled with MacOS X is alright, -ish, but you should really get hold of iTerm2 as soon as possible. It's way more customisable, and supports many more features, including handling of url-clicked links - click a hostname in a webpage to immediately ssh to it, how cool is that!?
f.lux
F.lux is one of those apps that you don't realise that you desperately needed until you try it. The thought goes that while bright white-ish light is best for visibility under fluorescent lighting in offices, when the ambient light drops a little your eyes need a warmer hue. F.lux uses your location and clock settings to automatically change the colour balance of your screen to a setting that's more comfortable on the eyes. Try it - you might not notice the gradual difference, but you'll certainly notice when you turn it off!
IntelliJ
If you do any Java development at all, you'll inevitably have a favourite IDE, and it will probably be one of Eclipse or IntelliJ. As with any holy war, there's not really much to choose between the two of them, but I just seem to grok IntelliJ that little bit more. It's a rare week that goes by without my discovering some awesome little time-saving feature that allows me to use even fewer keystrokes - an IDE should be all about minimising the barrier between "thought process" and "working code" (arguably, so should a language's design, but that's a discussion for another day)
IntelliJ require a newer Java runtime to actually run, so while that was downloading, I installed...
Colloquy
My team's recently made the switch from Communicator to IRC. While that's undoubtedly a step backwards in modernity, IRC has two notable advantages - one, it's not based on a super-fragile Microsoft techology that cuts out in a strong breeze - and two, IRC allows for programmable chatbots to lurk in our channel and provide added functionality. It's early days yet, but I hope to expand our chatbot to give us automatic notifications of deployments, build failures, and all sorts of things that nerds care about.
Get it here.
Setup Samba sharing
There are about as many workflow methods at work as there are developers, but a common choice is between "develop and build on desktop" or "develop on laptop, build on desktop". The former has the advantage that everything's all in one place, but forces you to have dual inputs for both machines - the latter keeps a consistent experience by keeping your "head" in a single machine space and just building via the terminal. Until I set up a proper git-based sharing system (which would have the advantage of enforcing good commit frequency), I'm using Samba to share the code files from my desktop to my laptop, so that IntelliJ can get at them.
Install Thunderbird
I want email, so I want Thunderbird. In the dark and scary minutes before this was set up, I tried using the Microsoft Exchange Server web interface - shuddered, and vowed never again. Lightning plugin for Calendars is so essential that I'm surprised that it doesn't come packaged with.
Solarized colour themes
Everyone knows that being a l33t H4X0R is 90% about having a cool-looking green-on-black terminal constantly scrolling across your screen. As bad-ass as that is, I find it super helpful to have different colour schemes for different machines (laptop, work desktop, pi, etc.). The Solarized Light and Dark schemes are my current favourites. You can get them from here - and, if you set up iTerm profiles for them, you can set up ssh shortcuts to your favourite servers with appropriate colour scheme changes.
Spotify
This is a strange one for me, since I’m not much of a Spotify user - music.google.com will normally do for me, since I don’t listen to much music outside of running - but I’d been to a Frank Turner gig the night before, and had a hankering to listen to “Plain Sailing Weather”, which I don’t have uploaded yet.
Dropbox
Obviously, it's very important not to store anything private or confidential in Dropbox (the same goes for Evernote, which I had been using extensively until I realised that making use of our company wiki-space was more efficient), but it's incredibly useful for quick-and-easy backup and sharing of non-essential files.
Squirrel
Squirrel is y SQLClient of choice. In an ideal world, our code would be sufficiently well-encapsulated that we wouldn't have to worry about the underlying persistence layer, and could simply rely on services to fetch and mutate data correctly without debugging on the database itself...
....Hahahahah. Oh, oh my. Good, I needed that. OK, on to the next one.
pip
If you use Python, you need pip. The days of installing modules via easy_install (or, worse yet, the Cheeseshop - great name, bad implementation!) are, thankfully, long gone. Install pip and never worry about missing dependencies again!
cx_Oracle
cx_Oracle is a python module used for interfacing with Oracle databases. As detailed in the Squirrel section above, in an ideal world I wouldn't have to use this, but it's always nice to be prepared for writing the quick-and-dirty-but-essential hack-script *before* you have to, rather than installing dependencies while everything's on fire.
I'm getting a bit niche here, but this is as much recorded for my own guidance as anyone else's - since I remember having a massive struggle to install this module last time, and could only barely remember the arcane practices required. So, here you go, future Jack! http://www.cs.utexas.edu/~mitra/csSpring2012/cs327/cx_mac.html and http://lorcancoyle.org/wiki/public/cxoracle
Steam
Because, come on, what good is a personal machine if you can't play games on it!?
And then these guys just had to go and do one better: http://lapwinglabs.com/blog/hacker-guide-to-setting-up-your-mac
ReplyDeleteJust love your article.I do invariably look over your web site for brand new articles.I am recently performing on associate app why do i get ads on my phone after downloading spotify premium apk
ReplyDeletethats going awing and special because of you