I’ve been on a rather lengthy functional PHP hiatus. With my discover of Ruby on Rails (January 2012) and my foray into iOS development (starting November 2012), I haven’t had time to think about WordPress or PHP much lately. But in searching for a lightweight solution to a soon-to-be-published magazine’s website, I realized that a Ruby-based approach wasn’t going to work well. I like Rails and Sinatra, but managed Ruby hosting is very expensive, and my client needed an cost-effective solution.
So I decided to give PHP another try. It’s cheap, and I realized that much of what I had disliked about it in the past was the inner workings of WordPress. The folder structure of WordPress is poorly organized, theming and admin customization are laborious, and then there’s The Loop™. Does web development really need to be so confusing? After a bit of searching, I cam across Slim, a lightweight framework for PHP. It’s very similar in style to Sinatra, which I appreciate. And it has a good set of extras and an active community. It turned out to be just what I needed.
I still don’t love PHP. It has some pretty ugly syntax, it can be a little sluggish at times, and I don’t like how methods are scoped. But it’s not a bad language. It gets the job done.
Sinatra is a wonderful lightweight web framework for Ruby developers. It has a very simple DSL syntax (an example is provided on the homepage). With it, you can write a complete web application (albeit a simple one) in a single Ruby file!
But when you expand your source into a few files and combine it with the excellent Ruby ORM library DataMapper, you can accomplish some pretty cool stuff and avoid the bloat of a large framework like Rails.
I re-wrote this website in Sinatra in May. I’ve enjoyed being free from the oppression of common web programming language that shall not be named. You can browse the source code of my site here. One resource that came in particularly handy when getting starting was ididitmyway.heroku.com. Give Sinatra a try and see what you think. If you think it’s wonderful, I’ll agree with you.
The trick to being truly creative, I’ve always maintained, is to be completely unselfconscious. To resist the urge to self-censor. To not-give-a-s**t what anybody thinks.
It is a universal truth that all artists think they are frauds and charlatans, and live in constant fear of being exposed. We believe that by working harder than anyone else we can evade detection.
–Linds Redding
The preceding excerpt is from an excellent article that addresses the question of balancing passion with deadlines, and keeping both of these in equilibrium with everything else. How much of your life is worth sacrificing to do great work?
I just came across this article by Jakob Nielsen on web usability which I believe was written last week. He says not to use target="_blank" on links.
If I want a new window, I will open it myself! – Jakob Nielsen
This makes sense to me, so I think I’ll stop doing it right away. I probably should have sooner, but like I said it’s a brand new article.
And wow, I just read the rest of it. It’s amazing that people are still making all the same mistakes they were back then. C'mon people, get your acts together!
SESSION 6: The Intersection Of Design & Development (Jeff Croft)
He’s a hybrid.
He used to use the tools he knew to do whatever he needed to do. (vbulliten, moveabletype, etc)
Off the shelf tools suck (for doing what they’re not meant for)
He started working with the original django team on www.lawrence.com
He’s a control freak – he wants to be involved at all levels, not just making it look pretty
Materials vs. Tools
Mastery of tools is key (but you must understand your materials too)
Our material is code
Zeldman says real designers always write code
Glen Murphy says the best designers are ones with a technical background
Some of the most important design decisions happen in code
Be proactive in development (i.e., if the designer left something out, take care of it)
You should learn to write code even if you don’t need to for your job
It could get you hired Being able to code makes you a better designer (whether or not your job requires it)
Jim Coudal: “All things being equal, hire the one who can write.”
The more parts of a project you can influence, the more you can innovate (like Apple does)
Breadth == Influence
How do you get there?
Just dive in!
Find a client who will fund your education
Don’t stop at HTML and CSS
The language doesn’t matter
Start at the language level (not the framework)
Stop having “handoffs” – they kill elegance
Instead, work together on the entire project
Make decisions together
Stop worrying so much about tools and processes
Don’t blindly draw a line between front-end and back-end
Beware the “Valley of Badness” (thinking you know more than you do – be respectful)
Truly Innovative Products Need Custom Code
If you plan to build the next big thing, you better know how to code
Have a basic understanding of graphic/interaction design (layout, color, typography, etc)
Work with marketing, but insist on conversation being within the scope you define
Example of good PR:
Amazon creates “amaze-me” moments – they re-sent a guy’s order for free
They’re very wonderful in all ways!
Create positive assumptions
NQA return policy
answer calls/messages fast
Documentation
Document customer support
Create a wiki or something like that, and seed it with content
Place helps in strategic places
Empower your reps
Tell them to take the blame
Encourage creativity
Take away the clock
Encourage power listening (hearing all of it from the client)
Have them envision the person on the other side
Encourage real language
Emphasize follow through
Remind them to keep their cool
Weekly checkups
Call your own support line
Send emails to your support line
Go the extra mile
Amaze Me reports
Require follow through on
Guard your territory
Belong
Fight for your voice
Love your reps!
Don’t allow abuse
Show them a way out if they want it
Reward them outside of customer care
Session 9: Reinventing Interest Discovery Through Adaptive Human Behavioral Analysis (Jonathan LeBlanc)
Technology is the solution!
The Sociological backbone of identity (Us & Them – The science of identity)
The different states of knowledge
What a person knows
What a person knows they don’t know
What a person doesn’t know they don’t know
Identity and discovery are NOT a technology solution
He decided to make a change, which led him to stopped.at
He helped them build an identity engine
Building check-in categorizations (like a miniature Googlebot)
shopping
tech
books
posters
gifts
The more you use it, the more accurate it becomes
Find people you mostly overlap with, and help people learn what the other knows that they don't
That’s how you get the “don’t know they don’t know” section
The Future of the web will not be driven by technology, it will be driven by human nature
Session 10: Getting Your CSS Under Control (Jonathan Snook)
He’s worked for himself, Yahoo, Shopify Misconception: CSS is easy
CSS renders in reverse – each element in the page tests against each selector from right to left until a non-match is encountered
Sub-modules (like types of button)
d. State (like active, current, etc)
use “is” (i.e. “.is-active”) to designate
e. Theme
colors, borders, text, fonts/font-sizes
only override what needs to be overridden, don’t rewrite everything
Naming Convention
a. They clarify intent
b. Use classes over IDs (specificity is dangerous – leave room for multiples in the future)
c. Specify what node you’re styling (use “.btn.btn-large” instead of “.btn.large”)
Decouple HTML/CSS
a. use child selectors because they limit scope, and they render faster
b. use them inside a class-based module
Increase Semantics
a. use only one selector in a string if possible!
b. add the same class to different types of tag, if they’re performing the same role
I attended this year’s ConvergeSE in Columbia, South Carolina. It’s a great web conference geared toward developers, designers, and businesspeople. I took copious notes on the sessions I attended. Here are my notes from Friday (read notes from Saturday).
Turing Machine, by Alan Turing, British mathmetician (Turing test)
David Hilbert – proposed problems, made a list of ten famous problems. Turing built a machine to solve Hilbert’s “entscheidungsproblem”
Definitions…
Alphabet: any set of characters String: sequence of symbols from the alphabet Formal Language: any set of strings over an alphabet Deterministic Finite Automatons (DFAs/State Machines)
an alphabet
a set of states
one denoted as a “starting state”
one or more denoted as a “accepting states”
a transition function (takes a symbol and a state)
DFA accepting binary strings that are multiples of 3 (i.e. “101101”):
Nondeterministic Finite Automatons (NFAs)
an alphabet
a set of states
one denoted as a “starting state”
one or more denoted as a “accepting states”
a transition function
takes a symbol and a state and returns zero or more states
NDFA accepting the binary string “1”
Regular Language: A formal language that can be expressed using a regular expression. Theorem: A language is regular if and only if some regular expression describes it.
Turing Machine
Formal Definition:
Two alphabets
one for reading, the input alphabet
one for writing, the output (tape) alphabet
A set of states
starting
accepting
rejecting
A transition function
takes a symbol and a state and returns a state, a symbol to write, and a direction to move
Session 4b: Polyglot Rejected – internal DSLs are really what we want (Mark Gunnels)
“Simplify essential complexity; diminish accidental complexity.” – Neal Ford
Polyglot: knowing or using several languages DSL: a computer language to solve a particular type of problem Internal DSL: Like Rails – it’s a framework composed of DSLs
Using several languages on the same project causes more accidental complexity
Context switching slows people down
But we do want DSLs! They’re better than different languages.
The argument for DSLs is often confused with the argument for Polyglot programming
This past month I visited the west coast for the first time. It was really beautiful! I spent most of my time there in the San Diego area. My favorite parts of the trip were as follows:
There’s still much of the country that I haven’t seen, but I highly recommend California. This is the beginning of a lot of travel for me, if all goes as planned.
Hello friends. Here is an overview of how to set up Homebrew on Mac OS X. Homebrew is one of the best things ever. It allows you to easily install many software packages with simple terminal commands.
Homebrew already has a useful installation guide. It will get you up and running, but it’s lacking some important details.
By default, Homebrew uses the directory /usr/local/Cellar to install your packages, and it creates symlinks to the executable files in /usr/local/bin. However, in order to run Homebrew-installed packages with ease, you’ll need to add the latter directory to your $PATH variable. On OS X, this variable is located in the file at /Users/yourname/.bash_profile. (If the file does not exist, create it.) Add the following line to the beginning of the file:
export PATH=/usr/local/bin:$PATH
Now the terminal will look in your Homebrew directory when searching for executables to run, and your life will change for the better. Happy brewing!
Anybody else come across a nasty bug in Chrome when using @font-face with text-shadow? Your text gets all thin and scrawny as soon as you drop the shadow on.
It seems that this only occurs when viewing Google Web Fonts in Google Chrome. And unfortunately, this hasn’t been fixed even in the canary release of Chrome (v16).
However, there is a solution. Some guy has figured out a clean hack to get around the problem. Obviously you’ll want to declare a hex color first for older browsers, then your rgba color. Only new browsers pick up on the second declaration, and the color difference is negligible.
Hello all. I’m going to be taking a trip to Boston very soon. I wouldn’t even mention it, except that I really feel like I ought to make this information somewhat public. For instance, what if somebody were to look for me in my usual hangout spots? I wouldn’t be there! I think you see what I mean. I’m leaving Tuesday and returning Sunday. I’ll be working remotely a little, but mostly just visiting someone, which should be great. I hope all of your weeks are equally great.
I’m working at Mediasation again. After a college semester and a half, an awesome summer involving an internship with Squared Eye, a vacation in Indiana working at an excavating company, and a trip to visit an amazing girl, they decided to have me back for a bit. No one knows how long this stint will last, but everyone knows that I’ll sure enjoy it while it does. It’s a blessing in the skies.
That’s what they tell me on YouTube. “They sure as !@#$ don’t write &#*$ like this anymore!” Or some such statement. Is it true? They also say that fairly new stuff like Oasis’s Don’t look back in Anger is genius. I know that’s not true – Noel Gallagher said so himself. So what gives? My conclusion here would be that YouTube users in general have no idea what makes music great. I’m a YouTube user too, so that sucks! Of course, since the advent of the internets, more and more artists are getting publicity (sweet!), which means the truly good artists stand out less (lame!). However, the whole concept of “popular” music is still relatively new, which gives me hope. Perhaps over time, people will feel the same about this decade as they do about the 60’s and 70’s. (The 80’s are not helping my theory.)
So to my modern musician friends: Write with soul. Sometimes exploring new territory can mean the loss of a solid melody. Not good! Be transparent, but look outside of yourself for inspiration, not inside.
And stuff. So far it’s been ok, but it looks like I may not be learning a lot in my computer classes! What a shame. At least I get to chill with wannabe nerds. That in itself is worth the time, methinks. Getting started with Java took me like ten minutes… bleh. I was hoping to get a better OOP foundation, but I guess I’ll just have to learn the same stuff over again, or something like that.
It’s finally here! After lots of work, etc., I have finished my first album, If Music be the Food of Love. It will be on iTunes September 15, but you can download it right now at www.imbtfol.com, or on NoiseTrade. I’d like to thank Michael Golus, Joshua Mayfield, Caleb Sherer, and Joshua Davis for their help with everything from playing the piano to doing cartwheels, etc. Enjoy!
I’m coming down to the home stretch with my new album, If Music be the Food of Love. Something tells me that this could be exciting! I’m shooting for August 15, which is less than two weeks away. There’s a certain satisfaction to doing everything by yourself, but I definitely want to try a different approach next time. It just isn’t time-effective to write every single note of every instrument by hand. I hereby vow to reach out in a non-hermit-like manner, and join with other fabulous musicians to make a more beautiful sound! I have one more food song left to finish, so I should be good with my deadline. Oh wait, I’m releasing my album in India a week sooner… YIKES.
One of the hardest things about music is actually feeling it. It’s too easy to just write what sounds decent, and not really put my heart into it. So when a song can really make me feel deep down, I’m intrigued. In my experience, the emotional quality of a song has to do with escaping the mundane, both lyrically and musically, and presenting to the listener a vast spectrum of sensations. Two of the main ways to do this are through long distances and long periods of time.
That’s why I love Enya – she does an excellent job of spanning an incredible range of feelings. Her ethereal sound includes stark elements from the past and the present – fleshing out orchestral arrangements with electronic sounds. And her lyrics bring together years of circumstances, shrouding modern life in the expansive mystery of the past. Trains and Winter Rains I think shows her strengths the best of any of her songs.
I’ve recently begun to favor slightly different ways of layout out a main navigation div in CSS. I had been using padding on my a tags, and padding on a span tag inside them. However, line-height seems to be a viable method of achieving the same effect with less code. It generally seems IE-safe too, although you have to be a bit verbose for the poor thing.
If you do use a span inside your a (for additional background images and such), you’ll need to either re-declare the same line-height on it, or display it as a block-level element, either one of which is easier than trying to divide up your padding correctly around your text. But in some cases, using the block-level option may cause IE’s box model to freak out, rendering your a/li elements block-level as well. If so, float the span. This, however, may hide the background of the span, in which case either height or zoom must be added to the parent a/li tags. :P
After writing this out, it sure doesn’t look easier, but at least my code is pretty… thanks to Nate Hanna for (non-monetary) tips!
I followed Derek Webb’s little scavenger hunt all the way to Nashville last night with my buddy Christopher Plemmons, and I was severely disappointed. Sure his new songs were great, but I already knew that. I wanted him to do something! Like… play some music?? He didn’t even stick around for me to meet him. It rather seemed like a waste of 12 hours of driving, but maybe it wasn’t. Nashville was still a pretty cool place to visit, and I pulled my first all-nighter to boot. Amazing.
I’m trying to write an upbeat love song. It’s not going so well! I think the idea I had for it was good, but I always seem to end up with a cynical undercurrent. That’s not the worst thing ever, but it kind of ruins the mood if you pick up on it. So I’m trying to make the lyrics just cheesy enough that some people will understand what I’m really saying, but most people will still be able to enjoy it as a lighthearted love song. The EP I release this fall will probably include it, so you can judge how well I did when you hear it. It’s called Mary Kate.
So far this summer, which has been about a month and a half, Weezer has been my main musical input. The first time I heard them was on the Buddy Holly music video included with Windows 95. Obviously I was confused – what a great idea for a music video though! Spike Jonze is cool, yo. I think what really sets Weezer apart from similar bands is the clean, almost timid vocals (and the lyrics that correspond with them) set against the gritty guitars. Pinkerton was especially revealing, almost awkwardly so. Rivers' attitude towards being a rockstar is often disarming – what is there to dislike? That’s why I was a little disappointed with the Red Album – they lyrics had mostly lost their distinctive honesty and self-deprecation, and seemed more pop-ish. I’ve really been inspired by Weezer though, and I’ve been trying to integrate more honesty into my own lyrics, with mixed results. It’s hard to tell people what’s really in your heart! I sometimes hope they’ll think I’m joking… :)
And this is why it’s thrilling: I get to write about all the stuff I think about all the time! That is good news indeed. The other thrill-type aspect is that this site has had the fastest development time of any I have worked on up to this point. Of course, I didn’t have a picky client to deal with, just cool, calm, collected me. More importantly though, I’m using WordPress. I’ve just become a huge fan! After trying many free cms’s (Joomla is GROSS, Textpattern is overly complicated, ExpressionEngine has a lame core version…), WordPress was the clear winner. I plan on using it for many of my illustrious clients. I made my own theme for this site, which I fondly named Grayson. I’ll be expanding on it as the occasion arises.
So that’s it! I’m going to be a blogger. Every cool person needs to blog.
Some things aren’t fun to talk about. But sometimes the darkest secrets are the ones that bring the most joy when they are uncovered and undone. Today I heard a man testify to his release from a six year pornography addiction. I wanted to scream when I heard him say it! So God’s power really is incredible. It’s good to be reminded of that again. There’s a lot going on, and I usually do pretty well about getting past temptations – at least in my view. But God… He takes freedom to an entirely different level! I think I’m almost ready to experience it.
Sometime within the next lifetime, things will change. I know it. Someday, an epiphany will strike you, and you will no longer be a follower – even as I rather am in this writing.
So many things are given to you to depend on. Advertised as support to your health, or exceptionally decisive peers as support to your life choices; if you know how to rely on something else you’re pretty much all set. Nobody will ever require anything more.
But that non-essential is not a limit.
In plain sight, others have gone beyond the borders of mere consciousness, and the rewards were sweet. Even still, if you have the courage to overcome, you can become the one to admire. It’s hard to see someone else you know take the journey and leave you behind, but it’s also an inspiration.
A pseudo-limerick that I wrote today while I was reading my psychology book.
Multitasking baby.
Go on, young sailor, and fend off the blow
Remember your life, and grow
Your freedom is gained
Through the love you’ve profaned
Would wisdom enrich what you know?
Concentric commitment – relive and repent
(Except from the time that was spent)
And nobody cared
If the truth made you scared
It’s painful to straighten what’s bent
For now you can linger with all that you blamed
Forget if it makes you ashamed
In time, what you know
Will change as you grow
Your future’s in what you were named
Just a heads-up here folks: most of what you see on this blog will probably not make much sense. I think I’m a little bad in the head. Anyway, I hope all you fans enjoy reading my sincere, yet completely irrational thoughts!