There are no "best practices" or established architectural patterns with Firebase Functions. So what do we do when we receive payment from the customer?
There are no "best practices" or established architectural patterns with Firebase Functions. So what do we do when we receive payment from the customer?
Let's address the elephant in the room: Should you trust a service like Firebase to handle your business? Not unless you want your pants on fire(base)!
Yes, I know, you're sick of the term. The idea is interesting... but is it realistic? In this blog series we'll find out.
I want to love this process... I ... want to ...
I'm hoping to do some small part to encourage conference diversity.
There is so much I don't know about Computer Science. I figured I'd share that with you
I both love and hate when things go upside down in my career. A little panic mixed with the intoxicating effect of opportunity.
I've taken a little time from blogging about Elixir and this little project, mainly because I wanted to dive into OTP a bit more, and I also needed to figure out Phoenix and what I needed to remove.
I am not a fan of migrations - never have been and probably never will be. They were interesting when Rails first came out, but now they're pure friction.
I've run into my first problem, and it's a big one: using Atoms inappropriately.
We have a Session process that is being Supervised, which is the hard part. Now let's hook up a persistent data source.
It's time to dive right into the deep end and consider how we're going to use OTP. The learning curve is deceptively steep, but if we can do this correctly we'll have a rather bullet-proof system.
Red:4 needs an online store. We could continue to use Shopify but that's not our style. As CTO, I've decided to build an eCommerce store with Elixir and to do it publicly. You're going to help me.
I'm building out a pretty detailed application using Postgres and Node - mostly Postgres - trying to flex as much of its power as I can. For me, this means kicking ORMs to the curb and relying on Postgres' amazing function features
The fuller support for JSONB in Postgres 9.4 makes working with document structures incredibly compelling. Here's an interesting way to have your Relational Peanut Butter play nicely with Document... Chocolate
I'm traveling for a year with my family without a plan. We started in Europe and are planning, at most, 3 weeks into the future. So far it's been pretty life-changing.
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..
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.
We're slowly rolling our productions into Pluralsight, and two of my favorites are up and ready for you to see.
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...
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"...
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?
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.
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...
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.
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...
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.
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...
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 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.
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.
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.
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.
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!
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!
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.