Tech
Asynchronous logging with MongoDB
0One specific use case for MongoDB is as a user activity store. It's simple, scalable, and can be done asynchronously (as long as occasional failure is tolerable).
How? The gist is to keep your records in an array that you atomically push to.
MongoDB's documentation (http://www.mongodb.org/display/DOCS/Updating#Updating-%24push) should get you started on understanding how atomics work. Whenever you get a new event/activity that needs logging, just $push it to your array for storage or later processing. Make sure you set safe=False for whatever Mongo driver you're using. That will let it be done asynchronously, mostly eliminating the front-end cost of the operation.
Note: Mongo's $push operation can get pretty slow on really large lists, so take that into consideration.
Dear Newegg, Goodbye. Love, Mike
0Newegg,
I'm sorry, but you've lost an alpha-geek customer today.
I remember back in college having a motherboard and memory die within a week of getting installed. You had replacements in the mail the next day, before I'd even sent back the bad ones.
I've had hard drives arrive DOA, and every time you've fixed the problem immediately.
Power supplies prematurely dying? Check! Always an easy-to-handle RMA process.
Today, after being dragged around by UPS for two weeks, who finally ended up losing my package (no surprise from them), I went to your customer service chat expecting my problems to disappear. Instead, what I got was being told that a replacement could be shipped in 7-10 days once your claim was processed by UPS. Really? That's your solution to a pissed-off customer who has been waiting for 2 weeks on hard-drives to repair a failed RAID array?
When threatened with a charge reversal, you retreated to "you should re-place the order and ask for a refund, which should process in 7-10 days". Don't mind the $40 more that same order would cost to place now. After pressing on that, and being put on hold for 10 minutes, I'm told they would credit me the difference, in a tone that made it seem like I was being done a huge favor. Don't mind the $50 gift certificate that now gets refunded and I'm unable to use for this purchase and the extra $300 on my credit card. How does creating more of an inconvenience for me help anybody? All I wanted was for my original order to be fulfilled. Don't make your problem with UPS into mine. I'm already pissed off enough at them.
Icing on the cake? 500 character limit on their feedback form post-chat. Really? You're actively trying to discourage your customers from giving feedback?
What happened to the Newegg I used to love? I really feel like the heart and soul is dead. Customer service reads off of a script and is un-empowered to actually fix any problems.
I may still purchase here and there if you have the best price, but the loyalty is gone, along with a willingness to pay a premium for better service. Anything I would have blindly put in my cart will now get price-checked on Amazon first.
I'm sorry, but I've dropped ~$10k through Newegg since '03, and have been a vocal fanboy to anybody needing computer gear. That enthusiasm died today. This isn't a letter I write to every company that gives me crappy service or disappoints me. This one actually sucks to write because I feel like I've lost my "home" on the internet for computer gear. You guys need to get your shit together, or somebody's going to come along, treat their customers right, and steal your lunch.
All the best,
Mike
P.S. This isn't written in anger due to some perceived injustice or atrocious customer service. Their policies are not the worst that's out there. It's more sad that a bastion of great online customer service has given way to mediocrity and lackluster soul. Here's to jumping the shark.
Hackers vs. Architects
0Over the last decade of developing, I've noticed two major schools of thought when it comes to software development. They're really two ends of a spectrum, and most developers fit somewhere on that line between them. The extremes of the spectrum are the Hacker, and the Architect. I won't argue that one is better or "right", but each lend themselves to very different situations.
Hackers focus on a visible end-result, and obtaining it as simply and quickly as possible. They are fast to cast off any baggage that slows them down, and build their software "just in time." A common mentality is "I'll build it when I need it". If it would take them 3 hours to hack a solution together, and 5 hours to integrate a 3rd party library, they'll opt to build it themselves. They concern themselves with "time to market" and are adept at cranking out working prototypes within hours or days.
Architects focus on beautiful, robust software that is elegantly constructed and flexible to future changes. They will often delay the immediate gratification of an early ship in order to get the technology "right". They pride themselves in their focus on systems engineering. Characterized by a fear of technical debt, architects can be known to bring a touch of OCD to their work. A common mentality is "If we do it right now, we won't have to gut it later". They always plan for the long term, even if it takes more time in the near-term. They concern themselves with "overall cost of ownership."
Obviously, each school has its pros and cons, which suit themselves better to different scenarios. Are you most concerned with immediate delivery (at the expense of long-term cost)? If so, you need a hacker. Is reliability, security, or stability a concern? Get yourself an architect.
NextNY Tech Mentorship program (in collab with GA)
1
So, over the past few weeks, I've been putting together a tech mentorship program for aspiring developers. The mentors helping out are amazing. If you know any smart developers, feel free to pass this info along.
Details & apply: http://bit.ly/kM9hoX
""""""""""
NextNY presents the NYC Tech Mentorship Program, in collaboration with General Assembly. It is connecting a select group of smart developers with top startup leaders serving as mentors. The goal of the program is to help high-potential techies reach into the startup world through advice, mentorship, and the wisdom of tech leaders who have been in their shoes. It will be an opportunity for developers to ask questions relevant to their goals and situations, and get personal feedback from industry vets.
How it works:
- Each mentor gets paired with one or two developers
- Each mentor and their mentees meet once a month from May-August
- Meeting is over lunch or coffee, and we'll leave it to each group to pick time/place
Requirements:
- You are a bona-fide techie. You have a degree in CS or have worked as a developer professionally.
- You're looking to get involved (or more involved) in the tech startup world.
- The program is free, but we ask that you pay for your mentor's coffee or lunch as a thank-you.
The mentors:
- Andrew Kortina, Venmo (twitter.com/kortina)
- Carter Cleveland, Art.sy (twitter.com/carterac)
- Chris Maguire, Postling (twitter.com/revolvingdork)
- Dana Spiegel, AxialMarket (twitter.com/danaspiegel)
- Dmitri Tcherevik, MightyMeeting (twitter.com/cherevik)
- Eliot Horowitz, 10gen (twitter.com/eliothorowitz)
- Kevin Owocki, Ignighter (twitter.com/owocki)
- Liz Crawford, Birchbox (twitter.com/liscrawford)
- Mike Lewis, SpotOn (twitter.com/mlewislogic)
- Naveen Selvadurai, foursquare (twitter.com/naveen)
- Nick Ganju, ZocDoc (twitter.com/nganju)
- Pete Miron, Knewton (twitter.com/petemiron)
- Simon Murtha-Smith, Singly (twitter.com/smurthasmith)
- Vanessa Hurst, Paperless Post (twitter.com/dbness)
Deadline is midnight May 11, EST.
Tweeting "Apply for the NYC Tech Mentorship program by May 8th http://bit.ly/kM9hoX" might get you bonus points.
""""""""""
Version n+1
0Behind the scenes at eventLo, we're working on a phenomenal new V2 of the product. Back-end and front-end.
My biggest take-away from the experience is the catharsis you feel when you strip away dead code. Entire packages were re-done to do more with less. Less code. Less edge cases. Less rigid models. Less architecture. Less dependencies.
When I look at the code-base now, it almost seems trivial, but it's important to remember that this sort of simplicity didn't happen overnight. It took a thorough understanding of the problem domain to architect this simpler solution. That sort of understanding just can't come around in pre-production design sessions. The most thorough understanding almost always comes from paying your dues in the trench.
Making art is easy. Making it beautiful is an art.
A new year
0Once again this blog has gone dark for over a month. That seems to happen whenever I get extremely busy. No apologies for it however, as it's been a productive month.
At the end of November, the first public alpha of eventLo was launched. We're holding back on any marketing or PR at the moment, until a few key issues are sorted. As it stands, the site actually looks quite vanilla, but there's a lot more going on than meets the eye. I'm likening the current site to that of an iceberg, where 90% of it's mass is below the surface. Expect to see that power wielded in the near future.
Over the month of January, we'll be hitting on several initiatives, including product improvements, market validation, and a heavy refinement process. I'm thrilled with how much we've accomplished in such a short period of time. The beautiful thing about having invested time in infrastructure and architecture is that future development, iterations, and improvements can be implemented at breakneck speed, without a rickety and patchy framework to hold it back.
I'll be keeping the eventLo blog up to date on eventLo issues. That frees up CleverKoala to once again focus on tech industry commentary and the life of a startup technologist.
Over this next year, I'll be focusing a lot of the writing on my emergence from a software focus to a broader tech industry focus. Still expect the nerdy how-tos and tech-heavy details, but much of it will be coming from a broader perspective. As my responsibilities have grown, so to has the perch from which I see my surroundings.
New Year's resolution: learn to sell, responsibly
Monaco font for Windows
1If you develop on a Mac using Coda or TextMate, you already know how easy the Monaco font is on your eyes.
Grab it for windows here. Your eyes will thank you.
Singular Purpose Servers: The productivity boost of Amazon EC2
0I'll start this post by saying that any productivity improvements you get from EC2 probably won't be immediate. There are a lot of features that are very powerful once you know how to use them. The time spent migrating to EC2 will probably even put you in the negative at first.
Everybody has made much hullabaloo about EC2 instances and how they can help with scale. I think most non-techie folks hear this and envision "Well the website started on one server, so we'll just add a second and it will be twice as fast!" Unfortunately, as web applications get more complicated, this isn't always the case. Where does your database run from? Do you need redundancy? Do you need a search index aside from the database? How is the website hosted? Server. Server. Server. Server. And that's not accounting for application specific servers, or central repositories.
Us techies know that these things can all just be stuffed onto one box. For a bootstrapped operation, this makes a lot of sense, but will have costs in the form of wasted productivity. Clashing libraries (or different/custom versions of the same library), over-cluttered filesystems, conflicting configurations. These are all time sucks to deal with. Even when the environment is set up and stable, it's harder to stay focused in a "busy" environment.
Amazon's EC2 puts the power in your hands to define your datacenter by how it should be, rather than by many servers you have on hand. Each major functional piece of the system can have it's own server. The micro instances are so cheap that for development work, the incremental cost can be negligible (probably under $100/mo per developer, depending upon your application). Every developer could have their own version of the data center for personal tinkering. The closer your development environment looks to live, the better QA your developers can do for you. The software will get done faster and will be done just plain better. The more "things" a developer has to keep in their head, the harder it is to produce quality work.
I'll also note that Google's App Engine looks very promising on this front as well, though you have to accept using Google's proprietary datastore. It's probably going to be a compelling force in the next 5 years, but I don't know if I'd single-source myself in on it yet.
Go for it devs, set up your dream datacenter and get cracking. Feels nice to do it right, huh?
The Scene Will Thrill You
0Brad Hargreaves had a phenomenal post on his blog yesterday. The core of it was a warning that succumbing to the groupthink of tech circles will hamper innovation, and lead you to develop your products for the wrong customers.
I agree with what Brad posted. The tech scene can be a succubus eager to suck down your time and innovation. It's easy to adapt your business to the ideas of whatever big-shot graces you with his thoughts. No matter how experienced or tech-famous they are, however, you can never please everybody. Think about how many investors pass on companies that eventually get funding. Even the pros aren't always right. Don't compromise your vision.
This post won't be a rant on scene issues, but is more to say why the scene can be a beautiful thing, if you have the self control to avoid it consuming you. As a solo founder, the NYC tech scene has been a source of inspiration and support. This may not be as important to a small team of founders bunkered down, working on the next big thing, but for me, the opportunity to get feedback from my peers and from tech veterans is invaluable. Take what everybody says with a grain of salt, but take it regardless. Quite bluntly, without the tech scene, I would know so much less about the tech industry, and peculiarities surrounding it.
Scenester tips:
Avoid going starry-eyed and getting excited over tech celebrities. They got there by working hard and smart, and you can too.
Be honest in your feedback to others. Politeness often comes off as brown-nosing. Don't be afraid to disagree or call somebody's baby ugly. If they have half a brain and you have good points, they'll thank you for it.
It's not a beauty pageant. Know what you want out of an event before going. Being a social butterfly is useless without actual progress on your business. The scene is your support network, not your business.
So you want to be a tech scenester? Here are a few great resources to find out what goes on every week.
StartupDigest - Top notch tech/hacker/entrepreneur event mailing list.
This Week in NYC Innovation (NYC only) – Charlie O'Donnell's weekly newsletter on what's going on in the upcoming week. The only subscription email that I open every time.
Meetup.com – Tried and true. Pick a few decent niche events to get instant community around what you care about.
There are other ways to find events as well, but the 3 above provide plenty of opportunity to me. Turning into a networking junkie just serves to waste your time. Focus on building a killer business and people will want to talk with you about it.
Netflix Culture slides
1Old stuff in the tech world, but profound nonetheless. Set aside 30 minutes to absorb these. It is time that will be repaid in the future.
