For most tables in a database you can get away with an auto-incrementing integer primary key. This, however, is a scaling headache if you ever have to shard your database. This is a common problem with a Users table, and there are better ways to fix this issue than with the ever-present UUID/GUID
I've given Ember a hard time in the past. I just didn't get it. I didn't understand the philosophy, why Ember existed at all, or why it was called 'MVC'. Over the last 6 months I've dug in my heels and tried (once again) to build something with it. I did, and I'm impressed. And still a bit confused.
I've been playing around with DigitalOcean lately, specifically the pre-rolled Applications they have setup. I'm just blown away at how simple things have become: including setting up your own private Heroku
I love Github - they do so much right. But sometimes I don't want everything to be public and I also don't want to pay so my private repos can be hosted. Gitlab is the perfect answer to this situation - here's how to set it up in 5 minutes for $5/month.
I get asked rather often by friends if I wouldn't mind reviewing abstracts they've put together for submission to various conferences. This usually happens after they've been rejected. I'm not a Master Speaker by any stretch - but one thing I know how to do is to craft a compelling abstract. I offered to review an abstract for a friend today - as long as he let me blog it... so here goes..
Trying to learn Ember? Don't trust the experts.
Up to now I've posted mostly about the document-oriented features of Biggy, but that's only half the story. Let's take a look at the relational side of things
I just released my latest screencast for
Tekpub Pluralsight and I rather like it. It's live coding and I'm building something I need; I did my best to keep it real, and bring in what I've learned from other frameworks like Ruby on Rails and Node.
Getting closer to pushing a first release so I thought I'd try to expand on what Biggy is and why I made it
In 2001 I had a choice to switch to PHP or learn ASP.NET. I did the latter, and I'm wondering if that was a good idea.
Postgres is an amazing database and you can EF with it, sort of. If you want to explore something new and have some fun - read on.
We're slowly rolling our productions into Pluralsight, and two of my favorites are up and ready for you to see.
I was planning on releasing two videos (one on BDD and one on Node) when the whole Pluralsight deal went down. I'm still planning on it... but a few things need to happen first. Here's an update.
I'm building out a Node application - in this case a Blogging engine - and these posts are my adventures building this thing. This is part 10.
I'm building out a Node application - in this case a Blogging engine - and these posts are my adventures building this thing. This is part 9.
I'm building out a Node application - in this case a Blogging engine - and these posts are my adventures building this thing. This is part 8.
I'm building out a Node application - in this case a Blogging engine - and these posts are my adventures building this thing. This is part 7.
For as long as I have been running Tekpub, my goal has been to expand things. Our subject matter, our market, and above all: Your Minds. Today I'm happy to announce that I'm joining forces with Pluralsight: Tekpub has been acquired. This is good news all around - for you, for me, and for the online learning industry.
I'm a fan of BDD, but I find that many examples (and codebases and default settings) fall short of the original philosophy. Here's Why.
When I read things like "Callbacks as our Generations Go To Statement" I’m like maybe we need that. Maybe we need some time where we’re walking around with a donkey with old rusty GO TO statements clinking on the sides.
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...
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 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"...
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...
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?
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.
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?
I've chosen to use MongoDB - now what?
The data has been rolled into MongoDB - at least the first round - and now I need to get the API up and tested.
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'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....
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.
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.
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.
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 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.
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.
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.
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.
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.
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 :)
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.
Just finished putting the wraps on a new provider for SubSonic using the new LOLCat.NET coding engine.
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.