Tech Tuesday: Customizing Your Interface

It’s no secret that people who enjoy their environment are more productive. For me, “environment” not only describes my place of work, it also describes the interface that I use to write programs and do day to day work. It’s a testament to this user-centric productivity philosophy that Apple’s products are so popular – they’re all about the interface! Today I’m here to tell you about a few tools I use to customize my work environment, make it more pleasing to the eye, and streamline my workflow. Hopefully, these tools can help you, too.

 

Candybar

If you’re like me, you use a lot of different applications regularly, and you probably keep them in your dock. Well, if you’re ever getting a little bored of the standard apple dock, consider getting the application <a href=’http://www.macupdate.com/app/mac/8948/candybar‘ title=’candy bar’>CandyBar</a>. This tool allows you to fully customize your dock and all of your system icons, personalizing your environment. I take a certain pride in the uniqueness of my system’s interface, and this is thanks in large part to the amazing changes this app has allowed me to make. It is only for Macs, but it’s free! You can download amazing icon packs at <a href=’http://weloveicons.com/‘>WeLoveIcons</a> or make your own!

dockicons

 

BetterTouchTool

dock

This is a fantastic tool for organizing window panes as you work. You may be familiar with the Ubuntu user interface, but if you’re not, you’re missing out on a great feature. In Ubuntu, you can drag windows to “hotspots” on the screen, and the window will fill up a predefined section of the screen. Gone are the days of dragging window corners, looking for the perfect size! Not only does BetterTouchTool take care of this by porting the feature to Mac, but it also allows you to define new keyboard shortcuts and mouse gestures. I always have a million windows open – code windows, testing windows, articles, the terminal, et cetera. It’s invaluable that I can manipulate them at will. This app is also free!

 

Give these tools a try – they’ve made me proud of my personal interface, and made me much more productive by allowing me to focus not on the menialities of window organization, but on the work itself!

AT Friday: Textastic

So far I’ve showed ya’ll some neat tricks for how to get more out of your iPads, from reading other people’s code, to getting notes automatically written down for you. I’ve showed you how to hook up an SSH GUI to your mac with MacFuse, and a great text editor for your Mac, Linux machine, or PC. What I haven’t showed you, that I have found very useful during my time at Tufts, is a code editor for the iPad. That’s right, you can actually write code fairly easily on your favorite little notebook.

The first question you have is probably “Why on earth…?!” Well, the answer hearkens back to my days as a wee freshman at Tufts. Having no laptop to speak of, and only my trusty iPad for computing on the long days out of my room, I needed a way to code on the go. If you find yourself with a) no laptop, or b) a really bad laptop, keep reading. So how does this work?

The app I use is called Textastic. I’ll tell you up front, it comes with an 8 dollar price tag, but to me, it’s been worth every penny. The biggest problem with most code editors on the iPad is that the keyboard is difficult to use, leaving you with two options: Bring a bluetooth keyboard (ugh), or painstakingly use the default iPad keyboard. Well, no more. Textastic’s keyboard is phenomenal, because it gives you direct access to all those symbols programmers use in everyday work.

 

photo (1)

 

Caption: I have found this interface very easy to use. And this is the biggest advantage of the app – you can pull it out and start coding, without the hassle of a keyboard, or the frustration of multiple taps through the keyboard UI.

The app has other awesome features, like built in SFTP, WebDav, and DropBox file transfers. There’s syntax highlighting for tons of languages, including JS, CSS, PHP, and HTML. The app has a fullscreen code editor, and  a side filesystem navigator. Here’s my second favorite part: If you’re a web designer or developer, the app has in-house previewing of all pages.

            Check out the app page to view additional features, but the things I have listed are what made this application so invaluable to me. Now, admittedly, it’s very difficult to achieve the same level of productivity on this app as you would on your home setup, but I’ve found that it comes closer than any other app I’ve used.

AT Friday: Dragon Dictate

The AT Fellows iPad Program is underway, and students are coming in every day to pick up their shiny gadgets.  Many of these students will be using their new iPads for note-taking and dictation, so today I’d like to talk about a neat iPad app that specializes in just that.

Dragon Dictate

            Dragon Dictate is a free app which is supported on all iOS devices, and regular computers, too! Its method is simple: tap anywhere on screen, then talk for as long or as little as you want. Dragon Dictate will parse your ambiguous human lingo into the concrete world of the written word. Better, the app supports a variety of languages, including English, French, Spanish, and German.  Once it’s done (which, admittedly, can take longer than one might like), your text will appear on screen so you can copy and delete chunks of it. You can email your note as well, which is always handy. One of the annoying things about this app is that you have to be on a network for it to run, but Tufts is pretty well WiFi-ed up. If you want to increase the usability of this app, try sitting near the front of a lecture and recording your professor’s entire lecture. You can’t talk in class, but they sure can.

            I found that Dragon is eerily accurate, even in slightly noisy settings. Speaking in a quiet voice, and making little effort to TALK_LIKE_A_ROBOT, the app got almost all of my words after a slight delay. Dragon doesn’t insert punctuation, but you can insert it yourself with commands like “PERIOD.” I find that while the lack of punctuation stops lengthy notes from immediately appearing professional, it helps in one important way.

When your sentences look like something written in stream-of-consciousness sentence fragments, it behooves you to go back and make sure everything is accurate. Doing so allows you to reread your notes and organize your own thoughts better. They say that it takes about thirty seconds of batting an idea around in your head for it to stick, so if you go back frequently, ideas from class will be on your mind for longer. Granted, this is only an asset if you’re the type who cares about the punctuation of your notes, but I find it very useful.

Pros: Free, eerily accurate, simple interface, wide language support, email, copy/edit text, no robot voice needed, allows/forces you to review ideas.

Cons: Need network connection, going back to fix punctuation takes time, not 100% accurate, newest update crashes on older devices.

While this app has certain flaws, I’m constantly amazed at how far word detection software has come in the last decade. Considering it’s free, I’d say Dragon Dictate is a steal which can help your workflow in a lot of ways.

AT Friday: Tools for CS Students Part 3

I’ve been realizing slowly that to write good code, you don’t just have to practice a lot. You also have to regularly read good code.  Most people read articles and frequent StackOverflow to solve their own problems, which is great. But I think reading all sorts of code, whether related or unrelated to your current work, is a really fantastic exercise in expanding your skillset.

iGist

The iPad can be a good fit for this type of learning, because it’s really easy to browse other people’s code quickly and conveniently. I just downloaded the free app iGist, which is a way to browse small snippets of code that you and/or other people have written (or “gists”). If you have a github account (also free!), you can log in to this app and immediately see all incoming gists along with your favorites. A problem that I run into a lot is that I’ll see a really cool piece of code, but don’t think to bookmark it or save its location in any way. These days, gists are getting more popular, and they make it easy to bookmark and remember code in an organized fashion. With this app, viewing all of those gists is very easy.

Also, each gist has a “forking” option, which allows you to modify the gist yourself. This can be really good for thinking about problem solving, and finding better solutions than those presented to you.

PeepCode

            Ok, so reading is pretty neat, but they say a picture is worth a thousand words. Well, what about a video of code being written and talked about? Peepcode is a wonderful online service that offers screencasts on a plethora of web development topics. Topics range from using github, to learning CoffeeScript, to developing specific products, step-by-step. With 85 of these screencasts, it’s really easy to learn new techniques. The movies are downloaded along with accompanying code, so once you have a screencast, it’s yours foever. This is important, because PeepCode is not a free service. There is a one-time fee of $55 for five screencasts, $99 for ten, or $199 for a year of unlimited downloads. It may seem pricey, but the amount of knowledge available is stunning. I downloaded all of the screencasts and code, which will provide months of learning. The best part is that once you have the video, you don’t need access to the internet, making these screencasts invaluable for long car rides and other such things. The narration is clear and concise (though the voice can get a little annoying), and I have already learned quite a bit from these screencasts.

If you’re serious about learning a variety of coding methodologies, these two tools will probably help you a great deal. In parting, I’d like to leave you with a useful alias.

alias sshtufts=’ssh flast01@linux.cs.tufts.edu’ – where flast01 is your UTLN. Makes sshing a breeze. Alternatively, if you only ssh into Tufts, type !ssh to execute the last instance of an ssh. This technique works with any command.

Happy coding!

-Sam Purcell

AT Friday: Tools for CS Students #2

I wrote a blog post a few weeks ago about some of the tools I use to streamline my workflow. Since then, I’ve been experimenting with even more tools, and I have some tips and tricks to share with all you other CS people and web developers out there.

Sublime Text 2 [Part 2]:

            Last time I talked a little bit about package control, BEAUTIFUL syntax highlighting, and using MacFusion to edit remotely accessed files in sublime. I have a new tip here which makes me wonder if I’ve actually fallen in love with Sublime.  The point that I’d like to address is that some people (myself included) are REALLY comfortable in vim. Moving your hand to the mouse can be very frustrating when you’re in the zone. Why switch to Sublime if you have to change your methodology? A great question, with an awesome answer. Sublime offers a mode called Vintage, which is basically just vi … except with all the benefits of Sublime. To activate Vintage, go to Sublime Text 2->Preferences->Settings – User and change ‘“ignored packages”: [something in here]’ to ‘“ignored packages”: []’. Restart Sublime, and hit escape while in a file. Congratulations, you’re in vi. Press “i” to use insert mode, IE regular Sublime.

Oh-my-zsh:

If you’re using bash, csh, or something else, you may be doing just fine.  I mention oh-my-zsh because for me, the little things it has to offer make all the difference. OMZsh is quick to install, and right away offers a ton of neat shortcuts, which are given in detail <a href=” http://www.intridea.com/blog/2011/5/18/its-not-enough-to-bash-in-heads-youve-got-to-bash-in-minds-with-zsh” title=”OMZsh info” >here.</a> For example, being able to type “…” instead of “cd ../..” actually makes a big difference when digging through directories. I won’t go into everything that it does, but to summarize, I get a prettier terminal, a ton of out-of-the-box aliases, and cool options to fiddle with in the ~/.zshrc. Oh yeah, also colored tab completion, and auto-correct. Read the above article, try it out, and see if you like it.

Tips [mac]:

  1. If you’re on a Mac, one of the most useful commands I have ever used is “⌘-Shift-Y.” Highlight a chunk of text that you want to save, and hit those keys. The text will be automatically entered into a sticky. My Stickies application is plastered with useful code snippets because of my addiction to this command.
  2. When it comes to poking around in your system, hidden files can be packed with valuable information. Though ls -a is a fine way to see these files, some folks like to use the Finder GUI for browsing. You can set all of your hidden files to visible with a simple terminal command. “defaults write com.apple.Finder AppleShowAllFiles YES” does the trick. To reverse it, change YES to NO.
  3. Some useful aliases:

1. Changing and adding aliases might be something you do often. I use OMZsh, so I like to have an alias… get ready… that lets me change aliases. Rather, it takes me directly to the file that does it.

zsha() {

        cd ~/.oh-my-zsh/lib

        vim aliases.zsh

}

2. How often do you find yourself calling a directory, then looking at its contents? Let’s minimize keystrokes here.

cs() {

        cd “$1” && ls -al

}

Type “cs the_dir” and you’ll get into it, and see its contents immediately.

3. If you want to open a file or folder in Sublime (or whatever you use) directly from the Terminal, try this alias.

alias subl=’open -a  /Applications/Sublime\ Text\ 2.app/’

            Example “subl myfile.cpp” or “subl my_dir”.

 Work smarter, not harder.

-Sam Purcell

Tools for CS Students

As someone who writes code for work and pleasure, I find that the amount of code I produce is directly related on the efficiency of my tools. Having the right tools for a variety of jobs is very important. This first became a necessity when I started doing projects for computer science classes. Sure, vim and emacs are time-tested editors with tons of features, but if you’re not well versed in them, learning to use them can take hours that you just don’t have. The purpose of this blog post is to explain and review a few tools that I use on a daily basis. They increase my productivity, streamline my workflow, and minimize my frustration. Hopefully they can do the same for you.

Tools:

SSH Terminal Pro:
This is a neat iPad app for on-the-go code editing directly on the Tufts servers (or any place you want to ssh to, for that matter). I’d advise using a Bluetooth keyboard if you have one, because let’s face it, iPads were NOT designed to accommodate the myriad of strange characters programmers use every day (“{}, &&, ||,” etc). It does have one bug that I know of, which is that it will end your session if you leave the app idle for more than a minute or two.
So, the overall impression of this app is that while no sane person would ever use it keyboard-less or for any serious development, it’s very handy for small edits, or for trying out a quick new idea.

Sublime Text 2:
Sublime text 2 is a text editor that I now use for all of my code-writing. Unlike the “old-school” editors vim and emacs, Sublime allows you to use your cursor, and you can customize it REALLY easily. Here are some awesome features that might make whatever Comp class you’re in (11 through 180) a whole lot less painful.
Perhaps the most awesome Sublime feature is called “Package Control.” This simple download lets you add all sort of neat plugins to the app, like a clipboard with more than one item at a time, or a command which lets you open a terminal window in your current directory. The plugins are many, and powerful.
A slew of language plugins come pre-installed with Sublime. That means that almost whatever language you’re writing in, there will be specific syntax highlighting, designed for that language. Best of all, you can add more of these plugins with Package Control.
Now, you can either edit remote files (for example, ssh into the tufts servers, or local ones. Chances are, if you’re a Tufts CS student, you’re writing in a low-level compiled language, so you’ll need to get a compiler (XCode dev tools on the mac for g++ and gcc), but this isn’t hard at all. Try creating a Sublime alias for quick file editing from the terminal.

MacFusion:
So, you’ve managed to get an out-of-terminal editor set up. Great! Now, you probably need to edit files on remote servers (e.g. linux.cs.tufts.edu). Grab MacFusion from Tuxera (macfusionapp.org is unmaintained and outdated) and download OSXFuse, which will enable MacFusion to work on [mountain] Lion’s architecture. Once you’ve installed these two things, go into MacFusion and enter your Tufts ssh credentials, then hit “mount”. Go into your Finder, click on your name under “devices” and you should see a disk leading to linux.cs.tufts.edu. Boom! Your files should all be there. If you don’t have any yet, make one! You can make it via this interface, or via the traditional route of the terminal ssh, touch filename, etc. The changes you make should be reflected immediately in the finder window (admittedly, it may be a bit laggy at first). Now, all that’s left is to start writing code on your local machine, in your favorite editor, and you’ll NEVER have to email yourself code, or copy files from one machine to another.

-Sam Purcell