How pretensious is THAT title? Pretty pretensious, right? Let’s move on.
This is a tools pornography post which means I just list out a bunch of tools and we all just start sharing with each other.
There’s a lot of empty calories here but sometimes that’s enjoyable. If you, in turn, write about the tools you use I would love to read it.
Prelude
A couple of weeks ago, while burning a few bridges, I mentioned that I think there are better tools than ExpressionEngine. A lot of people asked, “What are those tools, jerkface? (and where’s that smell of burning wood coming from? the bridge?)”
I offer no alternative at EE’s skill level. I am able to work quicker with frameworks. For a website that needs a nice admin interface I use Django. It’s rare I build those.
Two things in flux
I always have two things in flux, my editor and a task manager. I’m on The Hit List and Sublime Text 2 currently.
I like The Hit List because it lets me create sub tasks and is enjoyable to use. Before The Hit List I used Things, but found their ‘filing’ mechanism clunky.
I like Sublime Text 2 only after I installed a bunch of extra add-ons. It’s tab completion with HTML is particularly nice. It has a vibrant community as well, which is really important to the success of the editor.
I’ve found that these two things really don’t affect net productivity unless you constantly switch them. I use text editors to write things, as well.
Tools I use (in no particular order)
Xcode. I’ve started diving into the creation of applications. This is something I’ve wanted to do since I was 12 and I’m really enjoying using Xcode. Jumping from a text editor to an IDE is an enlightening experience. I’m in Xcode every day now.
iTunes Match. I went all in with iTunes several years back and we have all Apple stuff at this household, so this made a lot of sense. I still love Rdio, but I love The Beatles more.
Gitbox for lower level Git management. When I need to do complex stuff I use terminal. It goes without saying that I use Git, right?
Mindnode Pro for when I need to think broader terms like setting yearly goals.
Terminal + Vim: I use this combo a lot, specifically at work, as we work on remote boxes to code.
Querious and Base: When given the options I will always choose a more aesthetically pleasing option then the command line and happily pay the licensing fees.
Beanstalk for source code. I also use Github and wish Beanstalk had their code review tools, but I love the Beanstalk team and I like what they do. I keep most of my stuff private.
Reeder is the best way to use Google Reeder across all of Apple’s platforms.
Kaleidescope for viewing diffs. It integrates easily with Gitbox.
Parallels 7. I used to be a VMWare guy but version 7 of Parallels offered better Lion integration, usability and speed.
Paperless and a Fujitsu ScanSnap S1300 for trying to be as paperless as possible.
An iPad 2 and iPhone for reading and consuming. Instapaper is a must.
Soulver as my spreadsheet substitute. Also check out this screencast if you’re interested.
Acorn for any imagery I need to manipulate, which is rare.
Python, Objective-C and JavaScript are my favorite languages to futz with these days. I still use jQuery, but I’m much more interested in the core mechanics of the language itself, so I’m trying to do things without frameworks for educational purposes.
Fin.
I think that’s about every damn thing I have. So now, when you come to rob me, you’ll at least have realistic expectations.
Have you guys checked out Steven Wittens acko.net? It’s totes awesome. Over the weekend as links to it sprung up on twitter there were a bunch of “holy crap thats amazing“‘s and a lot of “Boooo that’s unusable rabble rabble rabble”s. Jeff Croft took a look at the latter and covers the spirit of experimentation honestly.
Both the site and Jeff’s post are worth taking a looking at. Prior to reading Jeff’s piece, I had a conversation about how I thought it was a great interface. Users are directed exactly to where the site owner wants them to go. My eyes instantly go to the banner and I learn a little bit about what I’m looking at. I assume many users visited the site from Twitter without knowing much about Wittens. Right away we know this is a “Hacker, Design and Math” site. The recent posts are in the background, so still completely accessible and easy to move to with a scroll.
The audience of this site is most likely pretty web savvy so I don’t see many users being confused. A little laggy in Chrome? Maybe, but who notices when you are being dumbfounded by how rad it is! I wonder if the people Jeff talks about are complaining about other distinct headers and unique interactions. For instance, I enjoy the use of giant hero images such as the one on The Great Discontent and feel it fits the content and audience, even though visitors might have to “wait” to get to the content by scrolling. People hate on one page scroll sites lately and while I could certainly look up “Hydraulic Fracturing” (zzzzz) I’d rather learn about it on http://dangersoffracking.com/. Some I’m sure will hate that site and prefer a wikipedia option, but I think its pretty nifty.
So as Jeff said, cheers to those of you that keep making the radness on the nerd.
A reader of ours left a great comment on a previous article about ExpressionEngine. Here is the full text from the commentor:
So more than a year down the line, does anyone feel we are in a significantly better place with EE? I know you posted a “Thanks” after the initial plea but did the plea to Ellislab have any tangible benefit? Forecast came and went. There was a load of chat on the EL blog about this and that. Lately - ghost town - everywhere.
Reactor? Sure? Free labour though and initially focused on hooks. Hooks equally more add ons and sketchy upgrade paths. Feature Request forum is full to bursting again and I laugh when I see a cheery “No, EE can’t do that, but shall I move it over to the Feature Request forum? That will be a GREAT feature request? Oh yes please. Done :D (sucker).”.
The product is still the same product. We have a better file manager. Not bad for a year.
I feel the EE team are running around patting themselves on the back. People are being promoted from Support Exec, to Manager to Director to VP in a year but nothing is actually happening with the core product. Do I really pay $300+ a license for a small team of people to support everyone else?
Sorry to come across a bit snarky - but damn it annoys me to see something with so much potential driven in the ground from a product point of view even if some politician is using a 5 entry EE site and EE’s userbase is growing. Are they in Hawaii with suitcases of money?
I agree with many of his/her points for appropriate attribution), but this is from outsider observation. I stopped using ExpressionEngine quite some time ago. When they let Leslie Flinger leave, they really lost some of their great visibility/personality they had been building.
I have no stakes in this game anymore. I believe there are better systems/tools these days. Plus, Greg Aker is gone. I do think there are some great lessons to learn here about community and leadership.
What do you think? I’ll ask a fellow Nerdary compatriot, Mark Huot, to chime in as I know he still uses EE.
Over at Happy Cog, we recently worked with MTV on their second Online Music Awards event. The project consisted of both a live streaming event as well as a supporting web site where users could come and vote on nominees. As a site that was designed to be exciting to use, we also wanted to make sure the experience was easy to use, while including some “surprise and delight” factors. The Vote page features an adaptive grid with hover states that were planned to reveal additional information about the categories.
The hidden information is not vital to be able to interact with the links, so we didn’t want to cover the imagery with it. We also didn’t want to exclude it, because some of us who have been watching MTV since “Video Killed the Radio Star” might need some additional context to know what the hip kids are voting on these days.
Talking it over with the design team, we figured we wanted the additional text to slide up on mouse over, so we decided to take advantage of CSS transitions to do so. I figured, no problem! We’ll toss a few different block elements within a link, since HTML5 lets us do that, and then set the height on the hidden text to 0, and then height auto that jawn on hover! Right? Not so much.
As you can see, there is no transition. Just a straight reveal. Bummer. So, I then tried animating to a height of 250px. And that works!
Unfortunately, I didn’t know the heights of all the descriptions. So that wouldn’t fly. Life’s looking up though, when I thought, how bout we try max-height instead.
So we remove the height attributes completely and set max-height to 0 initially, and then max-height to fit within the fixed dimension size of the box. As you can see, we’re in business.
For browsers that don’t support this, you can fallback to a straight reveal or rely on the primary link text to describe the link destination. CSS hover effects have gotten to be a boatload of fun.
Everywhere I look, generator tutorials are doing a bad job of teaching the material. The reason for this is that generators are taught right from the iteration point of view (for/in).
The problem with this is it doesn’t help the beginner. A better example of generators is to look at them as a result of a sequence of events (step-by-step) instead of in a loop.
This is primarily for Python users (optimally with iPython).
A simple generator
Here is a simple generator function:
def gentastic():
print("The generator hath begun!")
yield "All hail the generator"
print("The generator hath returned!")
yield "All hail the generator"
print("The generator is risen!")
yield "All hail the generator"
print("The generator hath now ended!")
yield "It is right to give him thanks and praise"
Is this the most efficient generator? No. Does it love you? Of course it does.
Yield
When you use the yield keyword in a function it returns a generator object (it doesn’t just return that string) and immediately exits the scope it’s in. It yields control to the function that called it with a little gift sometimes. In our case we’re yielding with strings like “All hail the generator!” Those strings get wrapped into the generator object.
To get a better idea type the following:
awesome = gentastic()
Then type awesome again and hit return. You should see something like this:
<generator object gentastic at 0x100462370>
Boom. Generator object. Thanks yield.
Next
A generator object has many methods but the most important one is next.
Let’s manually call next on the previous awesome object:
print(awesome.next())
Here is the output:
The generator hath begun!
All hail the generator
I’m using the print function for a very specific reason. I want to see the string value that the generator object is carrying right away. I could also assign it like q = awesome.next() and it will give me that string (“All hail the generator!”) as the value of q.
Now let’s call the next method again:
print(awesome.next())
and I get this:
The generator hath returned!
All hail the generator
Did you see what happened? Isn’t that fantastic! When we called next() it brought us back into the function at a different starting point (after the previous yield) each time. That’s why yield isn’t a return statement, it remembers! It knows what you did last summer.
Calling awesome.next() again returns:
The generator is risen!
All hail the generator
The grand finale
Now, this is the typical example that follows tutorials on generators:
for a in gentastic():
print(a)
More on this sequence and using iterables when I’m not feeling incredibly lazy and want to follow-up.
Update: In Python 3 the correct way to call next is not object.next() but rather next(object). Thanks to takluyver.