There's a thought in neuroscience/psychological circles that words are much more than sounds that represent things: they are the abstraction of our higher brain function. Words are language, code is language. Restricting yourself to one or two languages is limiting your cognitive abilities
I love experimenting with text editors and occasionally IDEs. In the last 6 months I've used no less than 5 different ones... each time I learn just how valuable Vim is to me.
It can be confusing when trying to structure a client-side application, especially when it comes to separating models from controllers and services. Doing this in Angular means diving into some details.
The Ember guys are having a hard week. I promised Tom Dale I'd try and help by "arm-waving" an API together that I feel expresses a bit more about the main ideas behind Ember. It's Friday, I've had a beer or two... but I got inspired...
Get up from your desk or chair or floor and go for a walk. Right now - I challenge you to do this. If you can walk through a crowded place - that's even better. Go by yourself, and soak it in... all of it...
If you read my blog, you know I've been goofing around with quite a few Javascript libraries. Some are easier than others. This time, it's Ember's turn.
Convention over Configuration is now simply an assumed thing for modern frameworks - and this is (mostly) a good thing. Sometimes I wonder if it's being taken too far.
I've been teeth-deep in Client-side Javascript frameworks over the last 4 months for Tekpub. This month is Angular, last month was Ember's turn and I gave up. It's the first time I've given up - here's why.
I was lucky enough to get some help from Ryan Niemeyer (KnockoutJS core contributor) recently, and, like I do, I asked if I could record it. I love stuff like this: I need this to work well for the Real World, and I want to do it right.
If you've ever sent a support email to Tekpub, you know I'm in the habit of asking questions. I think truly serving the Customer sometimes means asking questions, and sometimes even saying "No"...
It was a beautiful night, and I was propping up my new telescope that my wife had given me for Christmas. The scope was amazing, but the alignment routine fired up the geek in me...
I had never heard anything like it. A two-string bass, distorted, pulsing and bending under a finger slide ... rolling in time to the perfectly executed ryhthms of a jazz saxophone. You've got to be kidding me.
Some people have a code editor they use all their life. Others, like me, jump around a bit depending on the need. I thought I'd share with you what I've found out, as I get asked about this a lot.
Once the script outline is set and you have a skeleton of the words and tone you want to use - it's time to bake the demos. Yes: Bake.
It was exactly 1:32pm, HST, when the motor died. I stared at the throttle... hoping it was a joke. Land was 50 miles away, and the sea was building, and we were drifting. I thought: "This time dude... this time you really fucked up".
You have a solid idea of what you want to say - now you just have to say it. The uphill climb begins. This is part 2 of how to improve your screencasting skills.
I get asked a lot about my process, software, and microphone for the screencasts I do at Tekpub. I figured I'd blog about it because the world needs better screencasts. This is part 1 of more to come...
Any tool can create a mess. Some seem more prone to messes then others - that's what I thought of KnockoutJS until recently when I had a chance to catch up with Steve Sanderson - Knockout's creator. We talked, I tried some different things. I've changed my mind.
Postgres is gaining more and more attention - deservedly so. Open database systems like Postgres are standing up squarely against the massive, sprawling (and expensive) "Enterprise" systems like SQL Server and Oracle - usually with feature parity that works better. Of all these systems, Postgres is the smartest, fastest, and most capable.
At NDC 2012, I was set to give a talk on NodeJS, and what it's like to work with it. I dislike the quick "hey neat wow" demos - but how do you show what it's like on a daily basis to a room full of people who have likely never tried it?
Just pushed the latest drop for Tekpub - Speed: ASP.NET MVC Edition with Sam Saffron. I had a lot of fun doing this production and it's made a massive impact on our site.
For some reason I'm reading more and more how the iPad is "only for consumption". I tend to favor my laptop given that I do a lot of video editing and code - but recently I leaned heavily on my iPad for more than just watching movies.
The tech industry, like many, is rife with sexual discrimination and muted policies towards equality in the workplace. I used to let it ride. No longer - this is my story.
I try not to work on the weekends and instead spend the time learning something new and, hopefully, different. To that end: Tekpub jas just released Hello NodeJS. What are you doing this weekend?
Don Syme makes a very interesting postulation over on his blog: "Is Javascript code always so full of bugs?" His post goes on to show what happens when you turn on script errors in IE - which is striking. But is it really that easy?
One problem people face when starting out with Node (and Javascript in general) is handling the asynchronous, deep callback nesting issue. EventEmitters help fix that.
One of the tomes we live by: "Global Variables are EVIL!!!!!!" - so we abstract our stuff into patterns and build up highly ceremonial and ornate bits of dramaware called "IoC Containers". For what? To use Global Variables - That's Why.
Nothing but respect for Yehuda, but I'm thinking the Kickstarter model for creating a tool might not fit terribly well in the OSS landscape. I could be wrong. Either way - I have an idea.
I'm really liking what's coming together with this Hypermedia-ish API. So many ideas and approaches are starting to come into focus. Like this one: how much structured data do I pass on the initial load of the API?
Continuing on with building out a NodeJS app with Express and other buzzwords - I decided to build out a page using my API, while I build the API.
One of the perils of riding blind into the Wild West of Web Programming: Everyone has an opinion on what you should do. What tool you should use, what language you need to flex. It's almost as if they don't want you here...
The best way to build an API is to use it while you're building it. At least that's what I find the most effective. But how am I going to consume this API?
I asked for help with the Alt.Tekpub API from the RESTafari because I grew incredibly weary of the constant talk and Fielding quotes. Here are my results.
Tekpub just pushed its latest production: Hello PostgreSQL - and I invite you to take a look at some of the very compelling and interesting features this Open Source system has. No seriously - it's worth a look.
The Alt.Tekpub site is coming together... all the pieces are starting to play nicely. But I still don't have an API. I have an *idea* what I want to do - but I'm waiting on a few more opinions.
Right from the start I've known this application would serve a number of clients over its lifetime: HTML, Single Page JS Apps, and Mobile. How do we lay this thing out? A touchy subject of late, to be sure.
I made the mistake of publicly commenting on someone's idea of a RESTful API. And already - I've probably lost you. I don't know any single term more explosive and zeal-inducing than REST and "what it means to be RESTful". Oh - you say "it's quite simple?" You say "what's so hard?" Pedanticize away my pedantic pedant...
Mongo is installed, our data is ported. Time to roll together our first model: the Customer. How do you model this stuff with MongoDB and Node?
NodeJS has a pretty specific convention when implementing callbacks in modules - function(err,result). Does this always make sense?
The data has been rolled into MongoDB - at least the first round - and now I need to get the API up and tested.
I've chosen to use MongoDB - now what?
I love learning in the open. The simple process of relaying what you see/do/think/learn/fear/love can, itself, be illuminating. So here we go again - I'm going to fuddle around live, with some edge technologies, and you get to laugh at me.
I was given a copy of the fictional MonoStudio 2015 last week so I could pretend to write a review about it. In short, I'm impressed with what I dreamed up - and incredibly happy that the Xamarin team took this challenge on in my dreams...
... In which we reflect on my ego-mania and just how in the dark Enterprise Devs using OSS really are...
Rails 3.1 marks a strange turning point in the evolution of Rails: many hard-core fans are feeling the framework is losing its edge and becoming over-engineered. That might be a premature opinion.
Some interesting posts flying around about how ActiveRecord is rotting people's brains and how Rails is "pants on head retarded". I figured I might as well respond.
OK maybe the title is a smidge dramatic - but it's the truth. I sweated over each and ever second of Tekpub's latest production and I really believe that it's the best work we've done to date. It's basically a This Developer's Life, in video.
I've always marveled at the geeks who can write good, clean Javascript. Not jQuery - Javascript. I've never cared much for the language - but my mind has been changed with all the great stuff coming out.
I'm not opposed to swearing in presentations, or anywhere for that matter. I don't cringe when I read F-bombs nor do I care if you have the word "Fuck" embroidered on your Calvins. Swearing says more about your abilities as a speaker then it does your content... that's the problem.
We just recently pushed Tekpub over to Posgres and all in all, it was very simple. I won't talk about the reasons we moved from MySQL - that's another post. This one is all about making sure your backups go off nightly.
Last night, around 8:30pm, I was sitting in my backyard with my 9 yr. old daughter, Maddie. We were looking at stars, trying to identify constellations, when one of them started moving...
My last post was a bit of a pulpy, prosey trope about a problem I had debugging an issue in IE 9. It was supposed to be a fun read - but it turns out I might have actually uncovered an issue with IE 9... so giving the team due respect, here's a bit more detail.
This was a multi-day bug with 10 deployments behind it. I was tired, frustrated and hateful of the incessant problems Internet Explorer brings to the world. I was about to give up. To hack in Yet Another IE Workaround, when I noticed something strange in the response headers...
I get asked, quite often: "Where do you put your business logic in a Rails model?" This question typically comes from .NET developers who are dabbling with Rails/Ruby and trying to wrap their heads around it. A bit of a slippery-slope - I'm no expert here - but I'll tell you what *I* do...
Thought I would take a minute or two and update Tekpubbers out there on what's happening in the near future....
Many developers own Macs as their primary development box, yet they don't fully flex the Unix OS that powers OSX. I was one of them - used to my Windows GUI and clickity-click experience. I've since changed that ...
One thing I really like about Ruby is the ability to refactor to one line. Note that this isn't some spartan thing I have going, nor some geek-macho :) "look what I can do". Instead, I find it a lot more readable. Here's why...
One of my favorite movies of all time is Pulp Fiction. There are so many lines... so many scenes that it's hard to describe one as your favorite - but one that comes to mind often is Harvey Keitel as "The Wolf". When Ving Rhames says "I'm sending in the Wolf", you knew something good was about to happen.
I've been meaning to write this post for a long time and finally today have gotten around to it. I just read Scott's post on fixing up Hanselminutes and looking at his examples of using Massive... eek! There's a better way - let's see how.
The startup world has an exaggerated sense of competition - almost as if each "player" is a puppy struggling for access to the funding teet. This serves the VC puppet masters just fine, but can ultimately destroy the very business you're trying to start.
This blog runs on Sinatra, using a CMS called Nesta (inspired by Topfunky). I love the control it gives me, but publishing a post meant deploying an update using Capistrano. I like Capistrano, but not as a post publisher... here's how I got around that.
Time for another music post - this time one of my all-time favorites: Killing Joke. Yes, they're still around and yes, they still rock.
Go ahead and write this off as a Fanboy post - just read this one point: when I bought a Mac as my primary dev machine, my work life became a whole lot easier. I know Macs don't resonate with a lot of people - and that's fine. I find it to be a highly versatile bit of hardware.
In the last post I showed the basics of the Todo List app that I refactored from the original. I'll say it again - I'm fairly certain I don't know completely what I'm doing. I'm sort of following my nose a bit and trying to use what I've learned over the last few weeks. In this post - I'll wire up some events to make the Views dance.
This is a long post with lots of code. I want to be complete, but I also don't want to bore you to tears. If you want to see the refactor right now - here it is. I'm fairly certain I don't know what I'm doing - and that I probably lack the experience to even be writing this post. All I can tell you is that I have a feeling… a not so good feeling… when reading the current Todo List tutorial up on Github. So I figured I'd refactor it and submit a pull request. Is this correct? You tell me…
Magic Strings - they're bad right? What are these repulsive warts on good design? And why do they want to melt my code? The fear of strings drives otherwise talented and wise developers to do some extraordinarily ridiculous things...
We've been running for a little over a year and a half and I'm happy to say that we're doing really well as far as startups and small business go. It's my goal to be as transparent and communicative as I can be - so if you're a Tekpubber (or are thinking about joining) - here's what's going on.
TL;DR: I turned my Twitter account back on because as much as I like the silence and increase in my efficiency - Twitter helps me in a lot of ways I'm beginning to miss. Go ahead and crow. You were right.
In honor of pushing our newest series Mastering C# 4 with Jon Skeet, Tekpub is opening its doors once again for 24 hours for all people to come and check out the groovy content we have.
Having a lot of fun with this little tool - and more great comments are coming in. I've added some good stuff in the last few days - like Paging and streamed results.
I've been having a lot of fun with Massive and people are really giving me a lot to think about - and change/improve! I'm about to push an update today that will break stuff but that's OK, it's still newish.
I read Scott's post today about Interview questions and it made me chuckle a bit. They're great questions - no mistake about it - but you could almost (just barely) hear an audible set of mouse-clicks as managers around the world copy/pasted those questions into their "What To Ask Developers" Word Doc. I'm not sure the problem is the developer...
In a previous post I showed some fun stuff with System.Dynamic and Data Access. I'm happy to say that I tweaked it, loved it, and pushed it to Github if you want to diddle with it. This post is a tad long and dives into Dynamics at the end - read it if you want a fun mental exercise. Otherwise the code is upfront.
I don't normally use my blog to pimp Tekpub, but this is just too good. I've been holding my breath while we get this production together - and all the pieces recently fell into place. I'm giddy like a goose.
I promised myself I'd never do this again: create an ORM-y/Data Tool for .NET. But I needed some utilities for some work I'm doing, and I extracted the databits because I can't help myself. I like to share - mom taught me right.
I've spent the last 4 hours cleaning up my hard drive. 2 Tb of space fills up rather quickly when you do video/audio work - and today was the day to flush all the stuff I didn't need and organize the stuff I want to keep.
You would think that someone would have tried this before - but I haven't seen anyone blog on it yet. I'm sure I'm not the only knuckle-dragging mouth-breather who eschews High Concept for Dumb-simple solutions when available. Today I think I might have broken my own record for ugly: I deployed a site using Git and Dropbox. And I love it.
I read K. Scott Allen's post today on The Great Rewrite and how it's "wankery" - the wrong answer to solving a business problem. I see his point, but I disagree. I don't think you can plan this stuff. You can try - but it will end up late and uninspiring.
I was incredibly skeptical when I heard about WebMatrix. I was dismissive and snotty about the WebMatrix data access story. I called the WebMatrix IDE a "MySpace Code Editor". I was wrong. They got it right, and I'm really impressed.
Fight Club is one of those movies that you can take at face value and have a great time, or dig a bit deeper into David Fincher's directorial excellence and unravel some crazy stuff. The shifting reality of the film leaves a lot to be discovered.
I'm a fiend for good documentaries and it's great that you can stream some outstanding ones from Netflix. Last night I watched one that blew me away: Maynard James Keenan (lead singer from Tool) moves to Arizona and begins to create wine. But this isn't about some rock star in a crisis - he's actually leading a wine revolution...
Haakon Langaas Lageng asked me the other day "How do you make your videos?" His question was less technical, more procedural. I answered him and thought that I would share this with you. You might be thinking "why would I do such a thing?" - the answer is that a well-made screencast saves everybody time and is 10 times as effective as a book.
Many have noticed that I've shut down my Twitter account. No, I wasn't suspended and no, I'm not having a mid-life crisis meltdown. I finally "got smarts" and did the math: Twitter costs me a lot more than I get from it.
Believe it or not - this title isn't link-baiting. I have to deal with encoding video on a near-daily basis and it can be mind-numbing, frustrating, and time-consuming. I finally got fed up and rolled my own. It took 5 hours and 100 lines of Ruby. This is my story.
We just pushed the latest build of Tekpub - and it's a pretty massive rewrite. I bounced between frameworks during this rewrite, eventually settling with Rails 3. A few people have asked why. Here's why.
I'm working on my keyboard-fu a little bit more today, making sure I know my shortcuts and how to get around. A lot of "oh... yeah!" and "oh wow!" as I'm discovering ways to turn my mouse off. You'll know some of these... some you won't. Either way I thought I'd share what I'm putting together.
I've always been a major proponent of Open ID. I love the idea and the intention - it's a great solution to a long-standing problem and solves a lot of issues for developers. Unfortunately it creates a ton more for business owners.
I made a rather strong comment about HAML the other day and I think I regret it a bit. I was feeling cheeky - so I thought it might be worth it to ... uncheekify that comment and add some code for context. I love HAML - it helps me do the right thing. Here's why.
This post has been moved...
When I was at Microsoft I had an idea that I thought would help Open Source projects: prodding employees to ask for a percentage of their time (aka "commitments") to put towards an Open Source project. There were some issues to work out (mostly legal) - but I found an ally in DPE and it almost took off. Unfortunately I left (and so did he) and the idea died. But I think it's a good one - and it doesn't have to belong to Microsoft alone.
One thing that you can count on if you read anything online - you will be insulted at least once or twice a day. Or hour. If you have a blog or Twitter account - it's likely going to be more than that. Sometimes I laugh at it. Sometimes I introspect a bit. Sometimes I put on my headphones and shut off the stream. And then sometimes I write a post.
Rack is something most people have heard of yet don't really understand. If you're a Rails/Ruby dev, you most likely know the basics of it. If you're a Microsoft developer, chances are you have no clue about it. Understanding Rack is not only important for you as a web developer - it's also eye-opening and fun.
A judge from Microsoft's .NET County submitted a 00110101 year restraining order on Friday against Microsoft's C-Sharp development community. The stay-away order bans Microsoft developers from using the compiler's services as a development tool, forcing them to find other means to support their claims they "they are done" with features they are developing.
An idiom that I really like in Ruby is the ability to use a Hash to send arguments to a method. It's not something you would expect - the method calls tend to be quite verbose, yet they are incredibly clear and concise. In VB (back in the day) - passing arguments in an Array was considered a good thing. In C# 4.0, we finally have the flexibility to do this properly.
I read a great post today from Yehuda Katz - Everyone Who Tried to Convince Me to use Vim was Wrong. I liked this post - it reminded me of a conversation I had just the other day - trying to explain what I like about Vim.
It's great to see people so interested in Ruby and what makes it work. My last post sparked a great discussion and I'm happy I did it (thanks for the prod Jon!). In that spirit I thought it would be fun to add some more to it: this time with the nebulous Ruby code block.
Last night my friend Jon Galloway suggested that perhaps if I could elaborate more on why I like Ruby, then it might help people to understand a bit better why they might want to look into an alternative language (rather than just take my word for it). I sort of believe this leads to arguments. We'll see.
I've received a flood of emails since we launched the revamped Tekpub site (using Rails and MongoDb) a few months back. Many people have been surpised to find out that we use both MongoDb *and* MySQL. Here's the story of how we did it and why.
I don't know how I got on this weird tangent - but I'll warn you now: it's weird. It has something to do with Gary Bernhardt, my brother, and Vim - but I can tell you this much: I'm a changed guy and I'm kind of hooked on Vim.
Steven Sanderson and I just wrapped up our last episode for Tekpub's ASP.NET MVC 2 series. I don't particularly like to write "pimp posts" - but I'm making an exception in this case as we've decided to Open Source the code and I wanted to talk about what's in it.
I’m a big fan of giving relational systems the boot when it comes to persisting application data. The more I work with document (or OO) databases, the more I feel really, really dumb for doing it any other way. One question that comes up a lot in conversation, however, is “dude what about reporting – you can’t do that with NoSQL very well now can ya?” and the answer is “yes, correct. You can’t”. As with all things programming: right tool for the right job.
James Avery and I have just launched a new site, Tekpub.com, that is focused on helping developers kick ass in their jobs. There have been a lot of questions about this after our “soft” launch yesterday, so I thought I would address them here.
This post is way off-topic and if you aren’t planning to come to Hawaii, or if you don’t even care about this place and want to see some code – well move along. This post is for people who are thinking or are planning on coming out to the Aloha State – my practical tips and ideas for having an awesome vacation. If you aren’t or don’t care, this post isn’t for you :). OK – let’s get to it: Yes I live in Hawaii – no I’m not crowing about it – I promise. I’ve been asked soooooo many times, however:
“Hey what’s fun and cool to do over there? Where should we go? Any local tips?”And yes – I have plenty! I used to have an email that I wrote for a friend long, long ago that I would copy/paste every time someone pinged me. I’ve been told countless times to “put it on the blog” so here it is – a useful and practical guide to the best possible Hawaiian vacation you could have (IMHO).
I’m never shy about my opinion – why start now? I’ve been reading a lot of posts flying about on whether you should learn MVC, Summing up the differences so you can decide when to use it, I even found a post that offers a scorecard approach!
Sometimes I find myself with absolutely nothing to say and yet decide to write a post anyway. Do you ever have that problem?
Last night I was watching the sunset here at my house, watching the lightning ripple across the sky as mellow slack-key tones twanged in the other room. Work can get .
This is an off-topic Saturday post that came to mind as I was eating lunch. I haven't written an off-topic in a while, so I thought today might be the day I write about something that is very close to me: one reason I live where I do.
Props on this one go to Scott Hanselman who pulled me back from the edge of the cliff last night. I was particularly distraught in getting a MIX demo together where I had to do some queries using LINQ, and I couldn't for the life of me figure out how to fashion an IN query!
Just got done reading Phil's post about Leaving LA and it made me homesick. The odd thing is, I'm in LA right now, on vacation with my family, sitting in the house I grew up in, visiting my momma and I'm still homesick, but I'm very happy because it's right outside my door, and when I get done I'm headed out into the sights, smells, and sounds of the city that I love.
This is the sixth rewrite of this post. It's not that I don't know how to write a thought, nor that people are telling me what to write.
Just finished putting the wraps on a new provider for SubSonic using the new LOLCat.NET coding engine.