data wrangler
647 stories
·
27 followers

A Brain Dump on Sublime Text 3

1 Comment
Posted 01.26.2015

Sublime Text

Let’s face it, developers are opinionated about the tools we use. I’m no different.

In my humble opinion, Sublime Text is it. Dreamweaver and Coda have too many WYSIWYG features that are unnecessary to my workflow. I originally started coding with TextMate which I loved, however, the development seemed to stall out and Sublime offered several key features that TextMate was missing.

So, if you’re interested in Sublime or if you’re trying to trick it out, this post is for you! I figure if you’re going to spend all day with a tool, why not take the time to determine the best and most effective way you can use it. Let me share some of my workflow.



Features

Some of my favorite features are actually native to the app:


Multiple Cursors

You can Cmd + Click in multiple places within your file to create multiple cursors or Alt + Drag Click to select multiple lines.

Sublime Text - Multiple Cursors


Multiple Panes

You can have multiple panes within Sublime.

Sublime Text - Multiple Panes

I prefer 2 columns, but you could have rows instead. — If this excites you, check out the Orgami plugin (also listed below).

I’ll usually keep my HTML on the left and my SCSS and JS on the right.

I’ve also found this feature useful, if I’m working with a longer file and constantly scrolling up and down. I can pull the top of the file up in one pane and put the bottom of the same file in another pane.


Search within a project

Cmd + Shift + F will open the project search pane. You can also limit your search to certain files and folders.

If you want to limit the search to the current project type <project> within the “Where” field.

Sublime Text - Search within prject

Ever since I started splitting my SASS into multiple files, this feature has become invaluable. Within the “where” field, I usually include “assets/src/scss/“ so that the results are only within my SASS directory. I don’t want the compiled .css returning.

Within the “Find Results” screen, you can double click on the file name and it will take you to that particular file — or you can click on the line of code and it will take you to that spot specifically.

Lastly, you’ll see buttons to the left of your search fields that allow to toggle regular expressions, case sensitive, whole word, show context, and use buffer. I only make use of show context and use buffer.

NOTE

You may want to look into folder_exclude_patterns within your preferences file if you want to omit certain results from your search.



Keyboard Shortcuts

Your options here are limitless. I don’t know about you, but I can only remember so many at a time. I’ve included the ones I’ve found to be the most useful that I find myself using on a daily basis.


Cmd + t

This is by far my most used shortcut.

This opens a panel at the top, type the name (or part of a name) of a file within your project, hit <ENTER> and it will open.

cmd_t


Cmd + Shift + p

This short cut runs a close second. Similar to Cmd + t, this will open a panel at the top of my screen. Except, instead of opening files, it allows you to run commands. This could be a command from a plugin or extension or a command you might find in the menus (but don’t want to use your mouse).


Cmd + r

This allows you to easily find and jump to a piece of code within the current file. Within a CSS or SASS file, you can easily find a class or id tag. Within a PHP file, you can easily find a function.


Cmd + Shift + t

This will re-open the last tab that you closed.


Cmd + 1

Cmd + 2

Cmd + 3 (through 9)

If you numbered your tabs, left to right starting with 1, hitting Cmd + 2, would allow you to jump to the second tab. Cmd + 4, the fourth. You get the idea.

Sublime Text - Cmd Number


Ctrl + 1

Ctrl + 2

If you have multiple panes open and numbered them left to right starting with 1, hitting Ctrl + 2 would allow you to jump to the second pane. Ctrl + 1 will jump back to the first pane.

If you’re using this shortcut in conjunction with Cmd + 1 (through 9), the tab numbers restart within each pane. For example, I might type Ctrl + 2 to jump to the second pane, and then Cmd + 3 to jump to the third tab within that pane.

Sublime Text - Ctrl + Number


Cmd + k + l

Cmd + k + u

The sequence, here, took me a while to “get.” Basically, keep the Cmd key held down the whole time, and then type k (release) l (or u).

This will transform your selected text to all uppercase or all lowercase. I can’t tell you how many times I’ve started typing with the CAPS lock on by accident. Being the anal retentive programmer that I am, instead of having to delete that text and retype, Cmd + k + l. (I remember it by thinking konvert to upper or lower.)

Sublime Text - Cmd + k + u


Cmd + [

This will indent your entire line of code (or selection) to left.

Sublime Text + Cmd + Left Bracket


Cmd + ]

Similar to Cmd + ], this will indent your entire line of code (or selection) to the right.

Sublime Text - Cmd Right Bracket


Cmd + Shift + v

This will paste and indent, automatically applying the correct indention to the pasted text.


Cmd + k + b

Slides the sidebar in and out. I use this more when I’m working remotely on my laptop and screen real estate is an issue.

Sublime Text - Command + K + B


Cmd + d

This will highlight the entire word that your cursor is in. If you hit it again, it will select the next instance that word is used.

Sublime Text - Cmd + D


Ctrl + Shift + w

I use this one all the time! It wraps your current selection with a tag.

Sublime Text - Ctrl + Shift + W


Cmd + Shift + .

This is another one that has become second nature for me. This will automatically complete an open tag.

Sublime Text - Cmd + Shift + .


Cmd + l

This will select the entire line your cursor is on.

Sublime Text - Cmd + L


Cmd + j

This will get rid of the return at the end of the line.

Sublime Text - Cmd + J


Ctrl + Shift + k

This will get rid of the entire line your cursor is on. Great for cleaning up code.

Sublime Text - Ctrl + Shift + K


Cmd + Shift + K

This will highlight the wrapping tag.

Sublime Text Shortcut - Cmd + K


Cmd + /

Will toggle a comment block on and off.

Sublime Text Shortcut - Cmd + /


Cmd + Shift + <Enter>

This will move your cursor to a new line above your current position.

Sublime Text Shortcut - Cmd + Shift + Enter


Cmd + Enter

Same thing as Cmd + Shift + <ENTER> except, it will move your cursor to a new line below your current position.

Sublime Text Shortcut - Cmd + Shift


Ctrl + Cmd + Up Arrow

Ctrl + Cmd + Down Arrow

This is great when you have a list you’re trying to reorder. Ctrl + Cmd + Up Arrow moves your current line up. Similarly, Ctrl + Cmd + Down Arrow moves your current line down.

Sublime Text Shortcut - Cmd + Ctrl + Arrow



Setting up Your Preferences

One of the “weird” things about Sublime is that the preferences file uses JSON. Admittedly, not the most user friendly.

Go to Sublime Text > Preferences > Settings – User to edit the file.

I’ve included mine:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

{

"binary_file_patterns":

[

"*.jpg",

"*.jpeg",

"*.png",

"*.gif",

"*.ttf",

"*.tga",

"*.dds",

"*.ico",

"*.eot",

"*.pdf",

"*.swf",

"*.jar",

"*.zip",

"*.scssc"

],

"bold_folder_labels": true,

"caret_style": "phase",

"color_scheme": "Packages/Color Scheme - Default/Cobalt.tmTheme",

"fade_fold_buttons": false,

"folder_exclude_patterns":

[

".svn",

".git",

".hg",

"CVS"

],

"font_size": 14,

"highlight_line": true,

"highlight_modified_tabs": true,

"ignored_packages":

[

"SideBarEnhancements",

"Vintage"

],

"spell_check": true

}

Within my preference, I make the folder labels bold:

“bold_folder_labels”: true,

I use the Cobalt theme (goes back to my TextMate days).

"color_scheme": "Packages/Color Scheme - Default/Cobalt.tmTheme",

You can actually set that through the menus. Just go to Sublime Text > Preferences > Color Scheme > Color Scheme – Default > Cobalt

I’ve also experimented with Dayle Rees’s color schemes, if you’re looking for more options. There are instructions on his GitHub page on how to install.

Other things I’ve defined in my preference file?

"folder_exclude_patterns":
[
".svn",
".git",
".hg",
"CVS"
],

This prevents center file extensions from appearing in my sidebar and project search.

NOTE:

You can also set folder_exclude_patterns on a project level.

“font_size”: 14

Controls the font size. Surprise! :-)

“highlight_line”: true,

Highlights the line that your cursor is on.

“highlight_modified_tabs”: true

This setting changes the color of the file name in a tab if the file has been modified.

Sublime Text - Highlighted Tab

“spell_check”: true

Runs spell check.



Snippets

This is where Sublime starts to get really powerful and workflow efficient.

“Snippets” of code that I find myself typing all the time, I’ll turn into a Sublime Snippet. It’s as easy as going to Tools > New Snippet. Sublime will open a new file with a template:

<snippet>
<content><!CDATA[
Hello, ${1:this} is a ${2:snippet}.
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<!-- <tabTrigger>hello</tabTrigger> -->
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.python</scope> -->
</snippet>

To understand snippets, let’s talk through the default snippet and how it would work. If we uncommented line 6 and saved this snippet as hello.sublime-snippet (all snippets must have a sublime-snippet extension), every time we typed “hello<TAB>”, Hello, this is a snippet. would appear. You’ll notice that this is highlighted. We could type whatever we want to replace “this”, hit <TAB> again and snippet would be highlighted. <TAB> again, and our cursor goes to the end of the line.

So what just happened? Well, on line 3 of our, between <content><![CDATA[ and ]]</content> is our code. The ${1:this} and ${2:snippet} signifies our tab stops.

Technically you don’t need the :this and :snippet, but they serve as placeholder values to remind you what content needs to go there.

The number tells Sublime what order to tab through.

If you want to get fancy, you can have multiple ${1:this}s in your snippets. That means that you’d have multiple cursors as you’re tabbing through. Let me give you a practical example:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

<snippet>

<content><![CDATA[

jQuery ( function(\$) {

var ${1} = new ${2}(\$);

${1}.init();

});

function ${2}(\$)

{

self.init = function()

{

${3}();

}

function ${3}(${4}) {

${5}

}

return self;

}

]]></content>

<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->

<tabTrigger>start_js</tabTrigger>

<!-- Optional: Set a scope to limit where the snippet will trigger -->

<scope>source.js</scope>

</snippet>

This is my starting point for creating a JavaScript controller file. You’ll see two ${1}s, two ${2}s, and two ${3}s.

When I type “start_js<TAB>” my code appears with my cursor in two places. I can type the name of my variable on line 5. I’ll know I’ll initialize it on line 6 using the same name. Why not do it all at once? I hit <TAB> and I have cursor on line 5 and another on line 10. I can create a new instance of my object (line 5) and define the name of my object (line 10) at the same time… you get the idea.

<tabTrigger>hello</tabTrigger>

This is the text you’ll type (followed by the <TAB> key) to trigger the snippet. By default, this line is commented out, so make sure to name it appropriately and uncomment that line before saving it.

— It’s OK if you forget the tab trigger. Type Cmd + Shift + P. You’ll see a bar appear, type “snippet”, and then as you continue to type, Sublime will drill down and try to find the snippet you’re referring to. It will also remind you of the tab trigger on the far right.

Sublime Text Shortcut - Cmd + Shift + P

<scope>source.python</scope>

This line will help scope your triggers. What does that mean?Well, in the case of my JavaScript starter file, I’ve limited it to only working with JavaScript files. Instead of “.python” it says “.js”. Any file I want to use that snippet in, must be saved with a .js extension.

If I have trouble with a snippet loading, it’s usually related to the scope.

By default this line is commented out, so it’s not necessary, but it prevents your snippets from conflicting with each other.


Tips and Tricks

When you’re saving your snippets, they’ll be placed in your User’s Library folder > Application Support > Sublime Text 3 > Packages > User >. From there, though, I like to keep my snippets organized. I have folders for each of the languages (CSS, HTML, JS, and PHP).


Other Snippets

If you’re curious what other snippets I use, I’ve created gists that you’re more than welcome to download and use.


CSS

HTML

JS

WordPress (PHP)



Plugins and Extensions

At the end of the day, the plugins and extensions are ultimately what tie me to Sublime. I’ve become so reliant on them that it would be really hard for me to change editors.


Package Control

The first thing you’ll need to do is install Package Controll. This makes it super simple to find and install packages and keep them up to date.

If you go to the Package Control install page they do a good job of explaining how to get started:

  • Go to Sublime, hit ctrl + ` (it’s above the <TAB> key).
  • Copy and paste the code they provide on their site and hit <ENTER>

Easy Peasy Lemon Squeezey.


Installing Packages

Now that Package Control is installed, anytime you want to install a package, just hit Cmd + Shift + P and then start to type “install”. Package Control: Install Package shoud come up as an option. Hit <ENTER>. Then, you can search for whatever package you want to install. Select it. Hit <ENTER> and it will automagically download and install itself and stay up to date. You can watch the progress in the bottom left gray bar.


Advanced New File

Advanced New File makes it easy to create new files and folders from your keyboard. I simply type Cmd + alt + shift + n, a line appear at the bottom of window and I can type the name of the file I want to create. If I want it to be within a particular folder, I simply include the path as well: assets/src/scss/_1_base/globals.scss. If I want to create a folder, I still type Cmd + alt + shift + n, but instead of typing the file name, I type the folder name. It knows the difference because instead of ending in a dot extension, end with a trailing /. For example: assets/src/img/svg/.

By default, when you create a new file, it will add a __init__.py to your folder. This is great, if you’re writing python (I’m assuming, I don’t know python). You can turn this off by going to Sublime Text > Preferences > Package Settings > AdvancedNewFile > Key Bindings — User

Copy and paste the following line:

[
	{ "keys": ["shift+super+alt+n"], "command": "advanced_new_file_new", "args": {"is_python": false}},
]

Anything within your Key Bindings — User file, will override the defaults established within Key Bindings — Default.


Alignment and AlignTab

The Alignment and AlignTab make it easy to correct alignment within your code.

With the Alignment package, you can press Cmd + Ctrl + a and your selection will indent consistently. If the lines are already indented properly, it will then check to make sure the first = on each line is aligned.

The AlignTab package is a little more versatile. I will typically call it by typing Cmd + Shift + P then selecting AlignTab and <ENTER>. A input field will appear at the bottom of your window and your type the character you want the text to align by.

It’s also worth noting that AlignTab has a Live Preview Mode option that allows you to preview the change before hitting <ENTER>.


Auto File Name

AutoFileName will autocomplete the folder and file names as you’re typing. So handy! If you’re referencing an image source, it will also fill in the height and width of the image.

Sublime Text - Autofile Plugin

NOTE: Within the screenshot, I’m using Emmet to generate to <img> tag.


Bracket Highlighter

BracketHighlighter will highlight the matching tag, plus it will put an icon in the gutter to help you identify the bracket, parenthesis, tag, etc.

Sublime Text = Bracket Highlighter

This has been a tremendous help in helping me troubleshoot code, when my nesting gets off.


Comment Snippets

Comment Snippets is a set of snippets that help you build comment blocks. For example, comm + tab would render

/* Comment */

Or, comm-section + tab would produce:

/*=============================================
    =            Section comment block            =
    =============================================*/



    /*-----  End of Section comment block  ------*/

You can see more examples by reading their documentation.


DocBlockr

DocBlockr is similar to Comment Snippets in that it helps create comments, but it’s more robust. For example, if you’re writing a comment block, it will maintain your style and indentation.

Sublime Text - DocBlockr Example

Also, if you’re going back and documenting variables and functions, DocBlockr will pick up on your variables and parameters, pre-filling your comment.
Sublime Text - DocBlockr example

It can also do fancy things, like surrounding you content with slashes. // SomethingCTRL + <ENTER>:

Sublime Text - DocBlockr Example

This is just the tip of the iceberg.


Syntax

You can extend Sublime to support different languages and syntax highlighting through plugins too. There’s one for just about anything you can imagine:

You get the idea.


Emmet

If you don’t install any other packages, install this one! I use Emmet (html) and Emmet CSS Snippets and Emmet Style Reflector.

It makes coding SO MUCH easier. Just to give you an idea, you can type ul>li*3>a[href=#] and then hit tab and it will generate this for you:

<ul>
<li><a href=“#”></a></li>
<li><a href=“#”></a></li>
<li><a href=“#”></a></li>
</ul>

The > sets up the nesting, the * sets up how many elements, and the [] establishes any attributes.

The CSS version is somewhat similar. I can just start to type (typically) the first two letters of each word in a property, hit <TAB> and it will generate that property for me.

For example ff <TAB> will produce font-family: ; or td <TAB> will give me text-decoration: ;.

Chris Coyier has a 20 minute screencast on how to use Emmet (embedded below). I can’t tell you how many hours Emmet has saved me, it’s more than worth taking 20 minutes to familiarize yourself.


GitGutter

If you’re running .git on your project (which you should! …no excuses!), then GitGutter will put an icon in the gutter, next to the line number, letting you know what has changed since your last commit.

…and while we’re talking about Git, you may want to check out Git and GitHub Tools. Git provides git integration directly in Sublime. (I still use Tower, though.) GitHub tools provides GitHub integration (I’ve moved most of my code to BitBucket.)


HTML-CSS-JS Prettify

Admittedly, this is not the most used plugin that I have installed. But, when I do use it, it’s like magic.

HTML-CSS-JS Prettify will take an HTML, CSS, or JS file and make the code look really pretty. It comes in handy if I copied the source from somewhere or if I’m dealing with someone else’s code.


Open Finder

Open Finder gives you the command “Finder: Open here”, which will open the current file’s folder in Finder. Sounds simple, but very useful.


Origami

This is one of my favorites. It makes opening and closing panes so easy. I simply type Cmd + K + arrow to open a new pane. Arrow up, opens a pane above. Arrow down, one below. Arrow right, to the right. Arrow left, to the left.

If I want to close a pane, I simply type Cmd + K + Shift + arrow. (Be careful not to get this mixed up with Cmd + Shift + K, just remember hold down the command key, press and release the k button, then hit shift, then arrow) Arrow up, closes the pane above it. etc.


Placeholders

Placeholders provides placeholder content. So, I can simply type lorem<TAB> and a paragraph of Lorem Ipsum will be generated.


Sidebar Enhancements

SideBarEnhacements provides some additional functionality to your sidebar. For example, it provides some additional menu options when you right click on a file or folder in the sidebar (“move to trash” and “open with…”) just to name a few.


Sublime GitHub

Sublime GitHub is a must for me. It allows me to access my gists directly from Sublime. We talked about snippets earlier and I suppose gists could provide some overlap. The difference, for me, though, is a snippet requires some interraction (tabbing through). A gist, however, could be a whole piece of code or an entire file that I reuse quite frequently. My bower.json, package.json, or gulpfile.js are perfect examples.

Within Sublime, I will type Cmd + Shift + P, then I’ll start to type gist. I’ll select GitHub: Copy Gist to Clipboard and hit <ENTER>. Within the top panel, it will list all my gists. I can start to type the name of the gist, select it with my arrow keys if it’s not already selected, hit <ENTER> and then Cmd + V to paste it into my current file.


ToDo Review

Last but not least: ToDoReview. As I’m typing code, sometime I’ll write a line, but know that I need to come back and work on it. Say I’m stubbing out a page and have a placeholder for a JavaScript slider. I know I’ll need to come back and work on the slider, but I don’t have time in the moment to implement it. So, I’ll type <!-- TODO: Implement Slider -->

The great thing about this method

  1. It’s a comment, so you can’t see it on the front end.
  2. It identifies the exact spot and line number in my code that still needs work.
  3. It doesn’t interrupt my flow of stubbing out the page.

Later, I can go back and run TodoReview: Project Files (by hitting Cmd + Shift + P and it will generate a list of all the places in the code where I listed TODO items. That list then comes my checklist. I can double click on the TODO in the list and it will take me to that spot in the code. Once I’ve reworked it, I’ll remove the comment, and regenerate the list.

NOTE:

You may notice, if you’re implementing bower or other node components, this syntax is common among other developers. By running TodoReview: Project Files, it will return Todo items within your project’s bower_components folder and node_modules folder that other programmers have left behind.

You can exclude these fles folders from your results, by going to Sublime Text > Preferences > Package Settings > ToDoReview > Settings — User and listing them within your preferences.json file. I’ve included mine for reference:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

{

"exclude_folders": [

"*.git",

".sass-cache",

"*bower_components*",

"*node_modules*"

],

"exclude_files": [

"*jquery.js",

"*modernizr.js",

"*CHANGELOG.md"

],

"render_include_folder": true,

"render_folder_depth": 2

}



Looking for more?

Whew! That’s all I got. If I’ve just whetted your appetite or you’re looking for more information, here are a few additional resources:



I know this seems like a lot, but I know Sublime is so powerful and extendable that there’s plenty more. I’m interested to hear in the comments, what are some of your tips and tricks? Snippets? Plugins? Macros?


Read the whole story
digdoug
1 day ago
reply
Mostly doing this so I have a record of it. (Since I can't remember to ever check pinboard)
Louisville, KY
Share this story
Delete

January 28, 2015: Rockets into the aurora

1 Comment


Out on an Alaskan launchpad they fire rockets into the northern lights. The above shot is a composite of all four launches.

Quote:

The Mesosphere-Lower Thermosphere Turbulence Experiment, or M-TeX, and the Mesospheric Inversion-layer Stratified Turbulence, or MIST, experiment were successfully conducted the morning of Jan. 26, 2015, from the Poker Flat Research Range, Alaska.

The first M-Tex rocket, a NASA Terrier-Improved Malemute sounding rocket, was launched at 4:13 a.m. EST and was followed one-minute later by the first MIST experiment payload on a NASA Terrier-Improved Orion. The second M-TeX payload was launched at 4:46 a.m. EST and also was followed one minute later by the second MIST payload.

Preliminary data show that all four payloads worked as planned and the trimethyl aluminum, or TMA, vapor trails were seen at the various land-based observation sites in Alaska.
So if you had an extra pinch of trimethyl aluminum in your breakfast flakes this morning, blame NASA. I'm not sure what it is, but the gent who videotaped it has a better summary:

Quote:

On January 26th just after midnight the University of Fairbanks, Alaska launched 4 sounding rockets to study the interaction of solar winds and Earth’s atmosphere. Using different gasses they were able to make a glowing cloud of sorts that would allow them to study this interaction with imagery.
It's a long video... the launch happens about about 1:30 in.

Read the whole story
digdoug
2 days ago
reply
God damn I wanna see some aurora in person.
Louisville, KY
Share this story
Delete

Mondo’s Limited-Edition ‘Iron Giant’ Deluxe Figure

1 Comment
mondos-limited-edition-iron-giant-deluxe-figure

These days he may be better known as the director of more recent films like The Incredibles and Ratatouille, but Brad Bird’s 1999 pre-Pixar film The Iron Giant will always hold a special place in my heart. If the same holds true for you, you will probably dig this new deluxe figure by the talented folks at Mondo.

Towering at 16″ tall, this figure features over 30 points of articulation and a variety of accessories allowing you to transform the Iron Giant into all of his notable incarnations:

  • Two interchangeable heads with light-up eyes.
  • Magnetic “S” that can be detached from a Seafood sign and attached to his chest.
  • Switch-out “War Arm”.
  • Hogarth mini-figure that can sit in the robot’s hand or on his shoulder.
  • and of course, a girder to munch on. Additionally, the figure includes a sound feature with favorite Iron Giant quotes from the film.

But the best part is, the people at Mondo worked to obtain the actual digital files used in the film, and included them as a built-in sound feature with the robot’s actual quotes. As far as collectibles go, this one is truly stellar. Brad Bird himself agrees.

The figure is expected to ship 3rd quarter of 2015, but can be ordered now for $300.

Buy Now

Read the whole story
digdoug
5 days ago
reply
I shared this original announcement with my wife and demanded she purchase it for me.

So far, she's failed to acknowledge my request. Or acquiesce to my demands.
Louisville, KY
Share this story
Delete

Staying Hungry, Staying Foolish

1 Comment and 2 Shares

Playing The Fool Again

I’m building a new little venture right now and, for the first time in years, I’m flipped out excited. No no not because I think it will change the world and make me stupid rich – no I’m just excited to build it because it’s fun and I like to build things. And dammit I’m having a great time.

So much so that I’m blogging again, and given the burnout that I’ve been dealing with over the last few years.. well that is no mere trifle.

The deal is this – I think I’ve finally figured out what has been bogging me down, fucking my head up and sapping my energy for doing… well anything really. And it’s this: I think I know too much. Or, put another way, I think too much.

IMG_1787

I’ve spent the last 7 years of my career studying and sharing what I know through blog posts and videos and you know what? That was a good time. The problem with that, however, is that you tend to retain some of the things you learn.And after a while… the noise… oh MY GOD THE NOISE…

So, while on this little trip of mine I decided to read a wonderful book called Zen Mind, Beginner’s Mind which, apparently, is one of the foundational Zen books for westerners. I heard about it while reading an article about Steve Jobs, and apparently this book and its author were a very big influence on him and what he did at Apple.

Within 5 minutes my head was spun sideways:

In the beginner’s mind there are many possibilities, but in the expert’s there are few

I don’t think I’d ever call myself an expert in anything, but I do know that I like to learn things. The point here is still quite valid: the more you know, the less you believe.

Back Then, When I Was Dumb(er)

I thought about this the other day when reading Gary Bernhardt’s Twitter stream:

I lived that. I’m not proud of the software I wrote – most of it was utter shit by today’s standards. But I remember how everything was changing, the world was opening up and I felt like if I just gave it some time, pried open a few books for code samples, that I could build some seriously amazing stuff.

In software terms I didn’t, but to my clients – it was pure magic. And these weren’t small clients either, they were quite large. I sat in meetings of 30 or more developers at Fortune 20 companies, flew to Chicago and New York from San Francisco regularly and was trusted to oversee multi-million dollar projects.

We built simulators using Visual Basic of all fucking things! With Lernout-Hauspie voice recognition and SOAP wire ups to an ASP Classic backend! It was XML madness with shouting at 2am to get that fucking thing working an on the server!!!! 

We created the very first data-driven web app on the intranet of a major phone company (the largest baby bell in 1998) using Active Server Pages and SQL Server with some ActiveX love on IE4. Wow, just writing this right now is making me giggle – the code… was so very… wow… but man did it make some magic happen.

And that’s the thing:  it literally made people cry who were used to working on main frame silliness and enterprise grade crapware. We had this new thing called the web and we were going to rock this shit. And rock it we did! I sat in a Usability Survey at this very big baby bell with cameras pointed at all parts of the test subject and watched them find the answer to “how do I install a phone line in my boat in the marina?”.

I had pulled in over 10,000 text file dumps from their current main frame system and I used Windows NT4 with IndexServer to scan the files – which took about 10 minutes total. I then hooked up Active Server Pages to THAT and had a query that returned in 20 milliseconds. When I demoed this to my client he literally punched me. And we made the user cry with the speed and ease of use of our app.

That's right... breathe it in...

That’s right… breathe it in…

That’s the best I’ve ever felt doing my job. It was glorious.And while the software I wrote was crap by today’s standards I was on fire with the possibility that existed with my career.

And now here I am in 2015 writing blog posts on Javascript. God damn that’s really depressing.

Word to your motha!

Word to your motha!

Seriously. WTF.

What the hell has happened here? Yeah yeah I know Javascript is a fine language and yeah yeah yeah I know you can make it sing and dance if you focus on the right things etc. That’s what I’ve been doing for the last few years, I get it. I guess I figured that, 16 or so years on we might have done something… you know… relevantwith the web. Maybe you think we have, I don’t.

Perhaps I expect too much, or maybe I haven’t tried hard enough. It seems like all the great things have happened and all that we’re doing these days is porting all that great shit backwards to Javascript.

I know, hot wind and whining don’t solve anything, and rather than change the world to suit me perhaps I should try, once again, to have some fun. Which brings me back to this quote:

In the beginner’s mind there are many possibilities, but in the expert’s there are few

Possibilities. Back then there were so many – you knew the technology was crap but you also believed it would get better as time went on. In many ways it has, in many ways it hasn’t (see 3 paragraphs above).

__Star_Child___from___2001___by_Lukasx

Uncaught TypeError: object is not a function

Repaving My Brain

So I’ve decided to repave. This doesn’t mean I’m rejecting the things I’ve learned and the things I’ve written about/made videos about – nope those things are all very relevant and real – things you should know.

I’m simply shoving those things out of the way because they are causing me to smother my inspiration, my belief in impossibility and my willingness to do completely stupid things because they are there. Note that I’m not saying the things I know are bad – it’s my attention to that knowledge which is destroying my inspiration.

I like how John Sonmez puts it:

The problem is that when we start out as software developers we don’t know the “right way” to do things so we are less constrained in what we do.  We just march forward and go do things.

As we start to learn the “right way” to do things, we are often stifled by that knowledge and the constraints it brings and that causes us to be less productive or to over engineer and design solutions to problems.

This very sentiment was echoed in Steve Jobs amazing commencement address to the graduating class of Stanford in 2005:

When I was young, there was an amazing publication called The Whole Earth Catalog, which was one of the bibles of my generation. It was created by a fellow named Stewart Brand not far from here in Menlo Park, and he brought it to life with his poetic touch. This was in the late 1960’s, before personal computers and desktop publishing, so it was all made with typewriters, scissors, and polaroid cameras. It was sort of like Google in paperback form, 35 years before Google came along: it was idealistic, and overflowing with neat tools and great notions.

Stewart and his team put out several issues of The Whole Earth Catalog, and then when it had run its course, they put out a final issue. It was the mid-1970s, and I was your age. On the back cover of their final issue was a photograph of an early morning country road, the kind you might find yourself hitchhiking on if you were so adventurous. Beneath it were the words: “Stay Hungry. Stay Foolish.” It was their farewell message as they signed off. Stay Hungry. Stay Foolish. And I have always wished that for myself. And now, as you graduate to begin anew, I wish that for you.

Stay Hungry. Stay Foolish.

I’m going to be foolish for a bit. In fact I’ve already started in both my personal and professional life. I’m building an idea that I think could be really fun – and we’ll see. It might suck, it might not.

But I’m having fun, and that’s what this career is all about.

The post Staying Hungry, Staying Foolish appeared first on Rob Conery.

Read the whole story
digdoug
5 days ago
reply
The nicest thing about my current job, they've let me repave my brain twice. And I've let them know I'll want to do it again in 2 more years.

The world needs more fools.
Louisville, KY
Share this story
Delete

Unquote

1 Share

“There is a danger in being persuaded before one understands.” — Thomas Wilson

Read the whole story
Share this story
Delete

By mhoye in ""...we are alive and they are not."" on MeFi

1 Comment and 3 Shares
If you can automate it, a human shouldn't be doing it.

This has profound implications for economics, among lots of other things, but when Bertrand Russell said:

"Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined?


... the thing he didn't realize is that this is going to happen to every repetitive job in the world, and that this is both inevitable and desirable, and that late-term capitalism is going to have to deal with that if it wants to continue to exist in some even vaguely sustainable form.
Read the whole story
digdoug
7 days ago
reply
Can anything more insane be imagined? I don't think Bertrand Russell would appreciate *modern* capitalisms imagination nearly enough.
Louisville, KY
Share this story
Delete
Next Page of Stories