Victus Spiritus


Less than 100 Ways to Make Flexible Web Tools

19 Mar 2010

I only came up with 24 out of 100 this morning. That's where you come in. Drop your wisdom bombs in the comments below, and don't forget to start with the number the last one leaves off with.
These are merely guidelines, some of which are highly opinionated and biased by own narrow perspective. Skip the ones that don't resonate, latch on like a tic to the ones that do:

The Ways:

  1. Learn the basics of a web programming language. You don't need to be a master, just learn enough to transfer your ideas into a barely functioning tool and know where to find examples/docs. There are a ton of generous hackers out there that will help you get over the hump (Github + Git basics). Web coding isn't a spooky animal
  2. Just because you're a master of design, doesn't mean your users share your preferences. I'm getting a little burned out on the minimalist extreme, if I wanted an empty screen, I'd keep my browser minimized. Sure keep it simple & clean, but let end users trick out their own interfaces. Integrate the most popular designs into your tool, and reward the folks that build it. Build a set of tools instead of one size fits all. Share your "vision" as one sample template
  3. Shut up and code (Mark)! I spend way too much time considering alternate methods and implementations. My biggest mistake is asking my cofounder for permission to try some hairbrained scheme out. Hacking web programs isn't a permission sport, just f'ing do it. If it crashes and burns you learn and move on. Don't waste your breathe convincing other hackers do to your dirty work. They'll jump all over it when they find it interesting. You've got to make it interesting. Cash helps but only goes so far, if you create a hacked up prototype that genuinely gets people interested, it's GO TIME
  4. Don't hesitate to ask when you get stuck. You don't need permission to try stuff out, but it's more than fine to ask other web hackers for help, expect ~60% to say RTFM (read the "funky" manual) because:
    • they had to
    • have no idea
    • or are too busy downloading anime porn torrents

    Web programming is becoming a solid social gravity for more than just geeks

  5. You don't need seed, angel or VC money to build cool tools. You can't buy genuine interest and excitement. Don't believe me? Go to a noody bar and spend a few hundred dollars - how much love do you walk out with?
  6. If your cool tools/framework and passionate hacking team finds community traction (10 fan-atics), then you can focus on building out a business. If you can do it well enough with revenue, your group can "own" more of their labor by delaying liquidity. Otherwise cash some of the equity in to Angel/VC money and use that to build the business up and out. PS don't give up more than 49%
  7. Leverage open data, source and standards whenever possible. It's a lot easier to start with plenty of breathing room as your web tools grow up, as opposed to locking in designs to a closed (externally owned and regulated) source. Sometimes you won't have a choice because some eccentric wannabe hacker* will start with a single service ad tool. Quickly Jedi mind trick him into building a ground breaking adaptive open web tool
  8. Don't latch on to one programming language too hard. Sure Ruby on Rails is fun and zen, but it's not the right tool for every job. If you're doing heavy numerical analysis or anything that is super time critical you may need to swap in some other tools
  9. No matter what web framework you <3 i suggest you learn the basics of Javascript & Jquery. They're a fantastic way to offload connections and dynamic web content on the client side
  10. The slowest parts (bottlenecks) of pretty much any big web app are:
    • Remote API hits
    • Database writes. Concurrent reads makes reading not quite as slow
    • your inner most loop. Stop recalculating a million digits of pi in that loop hoser
  11. Talk to a bunch of folks that share a common difficulty. Learn about every angle of the problem and why it's so tough. Take all that community knowledge and lay the foundations for my favorite new augmented reality virtual smartphone pingpong game. The world needs this, I need this, NOW
  12. Don't get another degree. Don't delay what you need to learn and go do it now. If you must, take online courses for free, or read and workthrough free subject texts online. The world has enough people with epic qualifications that can't do anything. Beware the "walls full of proof" crowd, they suffer the horror of group think and love the taste of their own bath water. If you can't think of anything better to do, a multidisciplinary degree from a university won't help. My advice, go get a job at a tech startup
  13. Don't deliberate too long. When tight on time just go with any reasonable option instead of getting stuck on a tough choice and burning up all your mind candy (sugar in the brain gets used by each decision)
  14. Don't lock into one solution or concept. The biggest threat to your next mind expanding web application is weighing your preconceived notions too highly. The "not invented here" syndrome infects us all. We're much more biased by the devil we know, compared to alternatives. Dig into the docs, and use the alternatives to make a rational decision. Not everyone is the same kinda genius, but (almost^) everyone is brilliant in their own way
  15. Learn to listen for the brilliance in others. Cultivate it if you are in a position to do so, without telling others what to do. Folks do best when they discover their own calling and rockstar expertise
  16. A rich web tool can have many different angles of attacking a problem and solving a need. Orthogonal (different info) solutions can be mashed together to make stronger utilities. If I know your favorite movies, music, tech companies, and choice of clothing I can better suggest bloggers you may enjoy reading
  17. Pick a few features or just one to start with and wrap your mind around it. All your great ideas don't have to get shoved into one tool, library or object (Mark)
  18. Garbage in equals garbage out. Before you crucify the latest method (latest methods get a bad rap because 90% they reveal a bug in your earlier design) make sure it's getting quality inputs
  19. That last guideline of garbage in, garbage out extends way beyond programs to you and your personal information diet. Cancel cable tv and your World of Warcraft subscription and start a company with your newly freed 70 hours per week. Review every news site, email, blog or "social media" platform and critically decide if it's helping your bottom line now or ever will. This includes this blog, if it's not paying off drop it or check less often. My posts bounce all over. I'll be damned if I have to "wear a straight jacket" for my own blog topics
  20. There's nothing worse than being told what to think, and how to solve a problem. Empower everyone you work with to make their own decisions, and only interject if a poor choice will actually kill your web utility. Broken code gets fixed with a git revert (mulligan)
  21. Don't be afraid of arguing an important decision for the tool you're working on. But don't argue every point, Contrarian! Every moment spent arguing is another lost fix/development. Worst case you can fork it and go different directions and decide which is the more elegant/appealing choice later, but I suggest a third party nerve staple the pissing match. How important is that shiny spinning feature or killing it? (my pet rotating images)
  22. Don't repeat yourself. Modularize and compartment your code whenever possible. I'm lazy so sometimes I don't do this. I almost always regret it later
  23. The the correlary of don't repeat yourself, automate whenever you can. Automate the automating. Automate, the automating of the automating
  24. Don't reinvent the wheel. If millions of open source coders haven't put it out there then by all means be that guy or gal. Fork some useful starting point and get with the new hotness hacking

* any similarity between this author and such a wannabe hacker is completely intentional ;)
^ Some people are beyond help, and are helplessly stuck in bad thinking land.