Categories: idea

RSS - Atom - Subscribe via email

Building tools for my future self

Posted: - Modified: | idea, planning

I was thinking about steps towards personal digital assistants. In a separate thread, I was also thinking about the psychology of aging. In a third thread, I was thinking about projects I might want to build to help me learn more. It makes sense to bring all these threads together: thinking of systems I can build to improve the quality of life I’ll enjoy in the future.

I think this might be a better fit for my experimental learning than either a hypothetical market or specific people. After all, I’ll always have a future self who could benefit. (And if I don’t, I’ll be past caring!) If the things I build along the way turn out to be useful for others, all the better.

Anyway, I was thinking about the kind of simple, deterministic, idiosyncratic assistant I could build to make life a teensy bit better in the medium term and the long term.

I could start with a text box interface on a webpage, then move to alternative inputs like dictation or neuro-integration(!) when that becomes reliable. It would be great to have some kind of offline buffering, too.

In terms of logic, I could start with stateless well-defined responses, add synonyms, support conversational interfaces, use weighted factors, add feedback mechanisms, and then eventually reach proactive notification and action. Inferences would be awesome, but I don’t have to wait for them to be sorted out. Ditto for program generation and adaptation.

In terms of sensing and acting, I can start with existing APIs and tools, write specific adapters for other sites, push into the physical world with sensors and actuators, use context and probability to simplify, and then take advantage of improvements in fields like computer vision or biometric analysis as other people build and commoditize cool tech.

But first, it starts with building a simple tool. Hmm, maybe a little thing that suggests what to do next (and coincidentally makes it easy to track)…

Priming the idea pump

| idea

I really like Sumana Harihareswara’s post on ‘From “sit still” to “scratch your own itch”’ because she shares great tips for people who don’t feel like they have big ideas of their own. I’ve been learning more and more about building things based on my own ideas. I often hear from people who struggle with coming up with ideas and who don’t feel like they fit in, or who are waiting for that one great idea before they go ahead and explore their dreams. There are lots of ways to get started even without that clear spark, though, and it’s great to read about some things you can pay attention to.

Here are Sumana’s tips and how I can relate to them from my own life:

  1. Embrace boringness. It’s good to know you don’t have to create something new and wonderful all the time. It’s okay to not always be breaking new ground. I spend time writing about everyday things and trying out things that lots of other people have figured out before, like cooking, and sometimes I find interesting ideas along the way.
  2. Embrace silliness. It’s okay to play instead of always trying to solve big problems. Drawing is starting to become play for me, and coding can be fun and silly too. (Like the time I made a smiley-face generator…) One of the things I love about W- is that we can be silly together. The other week he made funny sounds by patting his cheeks, which boggled and delighted me, so I had to go and figure out how to do that too. =)
  3. Find someone else’s pain point. I like doing this a lot. I get a kick out of writing a small tool or creating a script that automates a painful or repetitive part of someone else’s work.
  4. It’s fine to take a class. I’m not as good at doing this because I often talk myself out of spending money on in-person classes and I haven’t really engaged much with online classes. That said, I enjoyed my sewing class, and I learned a lot from my Japanese lessons. Maybe I should give this another try!
  5. Work with scraps. I like doing this with writing. I pick up scraps of ideas from books, blog posts, questions, and experiences, and I combine them into new blog posts. When coding, I pick up scraps of API functionality and write something that glues them together. There are so many good things out there. I could probably spend the rest of my life connecting the dots instead of adding new ones, and that would still be a good life.

If you’ve ever told yourself, “But I don’t have any good ideas!”, you may want to check out Sumana’s blog post:

From “sit still” to “scratch your own itch”

Helping people learn more about programming

| business, development, idea
A number of people I know want to learn more about code. People see it as a useful skill, whether they’re dealing with functions and macros in Microsoft Excel, building tools in Ruby or PHP, or playing around with graphics in Processing. I had tea with a designer who’s learning how to code in the process of building a personal project. Since he was there and the code was there, I figured I’d help by answering any questions he had. By the time we wrapped up, he’d solved three of the things he was getting stuck on: limiting queries, working with inline PHP, and using AJAX to dynamically pull in data. Good stuff.

Helping people learn is so much fun. I loved teaching introductory computer science. Even though sometimes it was frustrating, it was such a thrill getting people to those "aha!" moments. I speed-read, so it’s easier for me to skim through Google results and documentation to spot just the right function. I’ve made lots of mistakes, so it’s easier for me to debug things than it is for people who are starting out. Sometimes all people need is a nudge in the right direction, a snippet of sample code, and then they’re off. I get such a kick out of it. It’s high-leverage – a little help can go a long way.

Problem decomposition is a key skill: breaking a challenge down into small, motivating steps, identifying the things you need to figure out first so that you can build on top of them. It’s hard when you’re new, and easier when you’ve solved lots of similar problems. I want to get super-good at this, which probably means doing this with more breadth and depth so that we have more building blocks to play with.

I’m figuring out what I like. I like one-on-one sessions and co-working chats more than group tutoring or teaching a class. I don’t mind looking at someone’s screen using Skype. I’m not an expert, but we can learn together, and I’ve been told that my enthusiasm is infectious.

What could this look like, if I folded this into my experimental life? Maybe it starts with informal coworking in a shared space, helping people while hanging out and doing my own work. (I might have a "Do Not Disturb" / "Open for Helping with …" sort of sign on my laptop.) I’m planning to join in March, after my current consulting gig winds up. (I hope the weather will be nicer by then!) More formally, people might book hour-long sessions in a cafe, coworking space, or library, like the way tutors meet with students. I’d get paid in cash (pay-what-you-can) and/or barter. I could offer virtual help, too – e-mail? Skype?

So there’s this idea of code coaching, for those questions that you can’t ask on Stack Overflow or on mailing lists, and for learning not just a specific thing but also the process of learning it. Shall we give it a try? I’m open to inquiries about Emacs Lisp, PHP, Ruby, Rails, JQuery, Excel functions and reporting tools, AutoHotkey, Bash scripting, and other things people might want to learn.

I’m a little anxious about the impostor syndrome, but I should just get over that. I confess up front: I’m not an expert in any of these frameworks, especially since most of them move faster than I can learn. <laugh> (You won’t believe the kinds of things people are building with Emacs Lisp these days!) I’m always going to be looking things up, because I switch between languages and don’t have all the syntax in my brain. I sometimes have to look up how to do basic control structures like a for loop. And I’ll tell you if I don’t have the foggiest idea how to solve something, but at least I can show you how I’d look for it.

This sort of mentoring is an expected part of teamwork. Who’s done this as an independent? Are there things I should watch out for? Will it hopelessly fragment my brain?

Who’s interested in exploring this with me? How would you value it, and how do we test whether it’s worth it for you and me? Jan/Feb’s busy with consulting, but maybe we’ll see what this looks like in March, or we’ll do low-key coaching for starters…


Web app idea: Stamp mix calculator

| geek, idea

2013-01-03 11.05.45

I’ve resolved to send more paper letters. I also have an odd mix of stamps that I want to use up: some with Canada Post’s permanent postage, and various denominations throughout the years. There are different rates for domestic, US, and international letter mail. Naturally, I want to optimize my stamp use so that I use the minimum number of stamps and avoid exceeding the required stamp rate.

Some examples for the $1.80 international rate:

  • 2 x $0.89 + 1 x $0.02
  • 2 x permanent postage (currently valued at $0.61 each) + 3 x $0.02 + 1 x $0.52

And lo, someone has actually built a stamp optimizer. Also, only one in Google Search? What do people call these things?

Next question: Has someone built a stamp optimizer that lets you keep track of your stamp inventory, maybe through bookmarkable parameters? It would be neat to be able to not have to enter in your particular mix of stamps each time. That might be overengineering this, though.

Who knows, I may sit down one day and code this just for fun. It totally fits the profile of the programming competitions we used to do in high school and university.

Ideas for making my work more effective and efficient, creating value, and rocking my work

| ibm, idea, work
  1. Change to Ubuntu
  2. Set up virtual machine for my Windows partition
  3. Use Emacs to handle my mail? Hard to do calendar acceptance
  4. Set up regular backups
  5. Resize Windows partition
  6. Clean up my Firefox extensions
  7. Clean my keyboard
  8. Set up personal or team bugtracker – not needed, projects have ClearQuest
  9. Set up website with talks
  10. Improve visual communication skills by practicing illustrating Enterprise 2.0 concepts
  11. Improve random information management tools – book quotes, stories, etc.
  12. Add automated testing framework to projects
  13. Uninstall unneeded programs
  14. Set up IE5 on Linux
  15. Move orangechair blog to Slicehost
  16. Convert orangechar blog to Drupal
  17. Set my desktop background to my work goals sketch
  18. Set up an easy way to crosspost Enterprise 2.0 sites
  19. Figure out team’s strengths, weaknesses, opportunities, threats (SWOT)
  20. Write an article on Enterprise 2.0 for managers
  21. Guestblog.
  22. Organize a teleconference with an external speaker.
  23. Build a conference tool
  24. Write a well-researched blog post for orangechair
  25. Post a book review – Generation Blend?
  26. Help write a book
  27. Help plan our menu of services
  28. Help IBM partners and account teams learn more about Drupal
  29. Organize other IBM Drupal developers into a community
  30. Do SWOT analysis for IBM and Drupal development
  31. Develop more IBM Drupal extensions
  32. Record a vidcast or slidecast about Enterprise 2.0
  33. Summarize resources
  34. Segregate my blog topics a bit more, making it easier for people to read Enterprise 2.0-related news
  35. Organize IBM Web 2.0 for Business resources
  36. Publish newsletter
  37. Build aggregator for community
  38. Build IBM voices aggregator
  39. Help draw vision for smarter planet
  40. Ask my network for help in identifying potential clients.
  41. Create blog alerts for Enterprise 2.0 topics
  42. .. and more!

Ideas for improving my website

Posted: - Modified: | idea
  1. Add a section about my speaking topics and events
  2. Switch to Drupal and customize it
  3. Restore the Feedburner widget that shows how many people read this blog
  4. Make it easy to view my blog through different lenses (geek, life, both)
  5. Have a landing page that explains the site for first-time visitors
  6. Allow people to choose their default landing page when they come to
  7. Add more photos
  8. Make my sketches easier to view
  9. Allow people to toggle full entry, summary, or list view
  10. Put my self-introduction on the front page
  11. Highlight certain blog posts
  12. Extract names, e-mail addresses, and websites of people who have commented, and thank them
  13. Remember to respond to comments by e-mail as well as online
  14. Find a way of sharing the books I’m currently reading and what I’m learning from them
  15. Add a page with my blogroll
  16. Link to my other presences on the Web
  17. Make it easier to remember visitors’ details
  18. Visualize my posts and my posting frequency
  19. Format into a nice PDF
  20. Pull in relevant Twitter entries
  21. Make it easier for people to subscribe
  22. Use category templates and icons
  23. Share my task list again?
  24. Share my currently-checked-out list again
  25. Share my book summaries
  26. Share my to-read list
  27. Share my reading history

Crazy business idea: videoconferencing event/party spaces =)

Posted: - Modified: | idea

Yes, videoconferencing should be the kind of thing anyone can get working at home, but technical glitches often come up.

I think there’s a market for at least one company that can set up an event space with a good screen, a computer, a reliable network connection, and a sound system. It beats having lots of people clustered around one laptop and spending most of the time struggling with technical issues. Market: business meetings during the day, globally dispersed families / friends at night and on weekends.

Anyone with that kind of business in Manila, please contact my mom. =)