Search results: personal learning environment

Thinking about my personal learning environment

I was thinking about what I learn and how I learn it.

  Experience Blogs Books Communities Mentors Classes
Life High Medium Medium Medium Medium  
Web 2.0 Medium High High High Medium  
Presentation High Medium High Medium Medium  
Drupal High Low   Medium    
Emacs High Low   Medium    
Organizational knowledge Medium Medium   High High  
Drawing High Low Medium      
Personal finance Medium Medium Medium      
Productivity High High High      
Sewing High Low Medium     Low
Leadership Low Medium High   Medium  
Delegation Medium          

Looking at this, I can see that I’m really not keen on sitting in classes (especially for things I’ve mostly taught myself off the Internet). I learn the most from getting in there and playing around with things. I read a lot about Web 2.0, presentation skills, personal finance, productivity, drawing, and leadership, but I haven’t found many good blogs or resources for delegation. When it comes to technical topics like Drupal or Emacs, I learn the most by getting into the source code and by helping the community solve problems. I mostly turn to mentors for help in navigating IBM and understanding the organization, although we also talk about life, Web 2.0, and communication and leadership skills.

That made me think about what I primarily read about, what I talk to lots of people about, and what I talk to specific mentors about.

 

learning

That makes me think of things I might want to move to different parts of the Venn diagram, like productivity… Hmm.

Learning more about Docker

I’ve been mostly heads-down on parenting for a few years now. A- wasn’t keen on babysitters, so my computing time consisted of a couple of hours during the graveyard shift, after our little night-owl finally settled into bed. I felt like I was treading water: keep Emacs News going, check in and do some consulting once in a while so that the relationship doesn’t go cold, do my weekly reviews, try to automate things here and there.

I definitely felt the gaps between the quick-and-dirty coding I did and the best practices I saw elsewhere. I felt a little anxious about not having development environments and production deployment processes for my personal projects. Whenever I messed up my blog or my web-based tracker, I stayed up extra late to fix things, coding while tired and sleepy and occasionally interrupted by A- needing extra snuggling. I updated whenever I felt it was necessary for security, but the risk discouraged me from trying to make things better.

Lately, though, I feel like I’ve been able to actually have some more focused time to learn new things. A- is a little more used to a bedtime routine, and I no longer have to reserve as much energy and patience for dealing with tantrums. She still sleeps really late, but it’s manageable. And besides, I’d tracked the time I spent playing a game on my phone, so I knew I had a little discretionary time I could use more effectively.

Docker is one of the tools on my to-learn list. I think it will help a lot to have environments that I can experiment with and recreate whenever I want. I tried Vagrant before, but Docker feels a lot lighter-weight.

I started by moving my sketch viewer into a Docker container. It’s a basic Node server with read-only access to my sketches, so that was mostly a matter of changing it to be configured via environment variables and mounting the sketches as a volume. I added dockerfile-mode to my Emacs, made a Dockerfile and a .dockerignore file following the tutorial for Dockerizing a Node.js web app, tried it out on my laptop, and pushed the image to my private Docker hub so that I could pull the image on my server. It turned out that Linode’s kernel had overlay built in instead of compiled as a module, so I followed this tip to fix it.

cat << EOF > /etc/systemd/system/containerd.service.d/override.conf
[Service]
ExecStartPre=
EOF

I also needed to uninstall my old docker.io and docker-compose, add the Docker PPA, and install docker-ce in order to get docker login to work properly on my server.

The next step was to move my web interface for tracking – not Quantified Awesome, but the button-filled webpage I’ve been using on my phone. I used lots of environment variables for passwords and tokens, so I switched to using --env-file file instead.

In order to move Quantified Awesome or my blog into Docker, I needed a MySQL container that could load my backups. docker-compose.yml Loading the SQL was just a matter of mounting the backup files in /docker-entrypoint-initdb.d, and mounting a directory as /var/lib/mysql should help with data persistence. If I added a script that created a user and granted access from '%', I could access the MySQL inside the Docker container from my laptop. I didn’t want my MySQL container to be publicly exposed on my server, though. It turned out that Docker bypassed ufw by setting iptables rules directly, so I followed the other instructions in this Stackoverflow answer and added these to the end of my /etc/ufw/after.rules:

# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16

-A DOCKER-USER -j ufw-user-forward

-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12

-A DOCKER-USER -j RETURN
COMMIT
# END UFW AND DOCKER

There’s more discussion on docker and ufw, but I don’t quite have the brainspace right now to fully understand it.

Anyway. Progress. sketches.sachachua.com is in a Docker container, and so is my button-based time tracker. I have a Docker container that I can use to load SQL backups, and I can connect to it for testing. The next step would probably be to try moving Quantified Awesome into a Docker container that talks to my MySQL container. If I can get that working, then I can try moving my blog into a container too.

Yesterday was for sleeping. Today I wanted to clean up my notes and post them, since I’ll forget too much if I keep going. More coding will have to wait for tomorrow–or maybe the day after, if I use some time for consulting instead. But slow progress is still progress, and it’s nice to feel like more of a geek again.

The imperfect fungibility of time: thinking about how to use money to accelerate learning

2015-01-30 Leaving money on the table -- index card #consulting #experiment #balance

2015-01-30 Leaving money on the table – index card #consulting #experiment #balance

Any time I want to, I could spend more time consulting. This would make my clients happy. It would help me create much more value, and they would get more value from me than from other ways they could spend their budget. I would improve my skills along the way, especially with people's requests and feedback. And to top it all off, I would earn more money that I could add to my savings, exchange for other people's time or talents, or use to improve our quality of life.

How hard is it to resist the temptation to work on other people's things? It's like trying to focus on cooking lentils when there's a pan of fudge brownies right there, just waiting to for a bite. It's like wandering through the woods in hope of coming across something interesting when you know you can go back to the road and the road will take you to an enormous library. It's like trying to build something out of sand when there's a nifty LEGO Technic kit you can build instead. It's probably like Odysseus sailing past Sirens, if the Sirens sang, "We need you! You can help us! Plus you can totally kit out your ship and your crew with the treasures we'll give you and the experience you'll gain!"

Maybe I can use this temptation's strength against it.

2015-02-02 What if I use the lure of work to help me grow -- index card #consulting #experiment

2015-02-02 What if I use the lure of work to help me grow – index card #consulting #experiment

Maybe I can treat client work (with its attendant rewards and recognition) as a carrot that I can have if I make good progress on my personal projects. If I hit the ground running in the morning, then I can work on client stuff in the afternoon. A two-hour span is probably a good-sized chunk of time for programming or reporting. It's not as efficient as a four-hour chunk, but it'll force me to keep good notes, and I know I can get a fair bit done in that time anyway.

The other part of this is making sure that I don't give myself too-low targets so that I can get to client work. It'll be tempting to pick a small task, do it, and say, "There, I'm done. Moving on!" But I have to sit with uncertainty and figure things out. I expect that learning to work on my own things will mean encountering and dealing with inner Resistance. I expect that my anxious side will whisper its self-doubt. So I lash myself to the mast and sail past the Sirens, heading towards (if I'm lucky!) years of wandering.

Part of this is the realization that even after my experiments with delegation, I'm still not good at converting money back into time, learning, ability, or enjoyment. Time is not really fungible, or at least I haven't figured out how to convert it efficiently. I can convert time to money through work, but I find it difficult to convert money back to time (through delegation) or use it to accelerate learning.

2015-01-07 What am I happy to pay for in money or time -- index card

2015-01-07 What am I happy to pay for in money or time – index card

Extra money tends to go into projects, tools or cooking experiments. Gardening is one of my luxuries: a few bags of dirt, some seeds and starters, and an excuse to be outside regularly. Paying someone to do the first draft of a transcript gets around my impatience with listening to my own voice. Aside from these regular decisions, I tend to think carefully about what I spend on. Often a low-cost way of doing something also helps me learn a lot – sometimes much more than throwing money at the problem would.

2015-01-27 Financial goals -- index card #finance

2015-01-27 Financial goals – index card #finance

But there are things that money can buy, and it's good for me to learn how to make better decisions about that. For example, a big savings goal might be "buying" more of W-'s time, saving up in case he wants to experiment with a more self-directed life as well. House maintenance projects need tools, materials, and sometimes skilled help. Cooking benefits from experimentation, better ingredients, and maybe even instruction.

2015-02-01 Accelerating my learning -- index card #learning #accelerating

2015-02-01 Accelerating my learning – index card #learning #accelerating

What about accelerating my learning so that I can share even more useful stuff? Working with other people can help me:

  • take advantage of external perspectives (great for editing)
  • organize my learning path into a more effective sequence
  • learn about adjacent possibilities and low-hanging fruit
  • bridge gaps
  • improve through feedback
  • create scaffolds/structures and feed motivation
  • set up and observe deliberate practice
  • direct my awareness to what's important

In order to make the most of this, I need to get better at:

  • identifying what I want to learn
  • identifying who I can learn from
  • approaching them and setting up a relationship
  • experimenting
  • following up

How have I invested money into learning, and what have the results been like?

Tools? Yup, totally worth it, even for the tools I didn't end up using much of (ex: ArtRage). Do more of this. How can I get better at:

  • keeping an eye out for potentially useful tools:
    • Emacs packages
    • AutoHotkey scripts/ideas
    • Windows/Linux tools related to writing, drawing, coding
  • evaluating whether a tool can fit my workflow
  • supporting people who make good tools
    • expressing appreciation
    • contributing code
    • writing about tools
    • sending money

Books? Some books have been very useful. On the other hand, the library has tons of books, so I have an infinite backlog of free resources. Buying and sketchnoting new books (or going to author events) is good for connecting with authors and readers about the book du jour, but on the other hand, I also get a lot of value from focusing on classics that I want to remember.

Conferences? Mostly interesting for meeting people and bumping into them online through the years. Best if I go as a speaker (makes conversations much easier and reduces costs) and/or as a sketchnoter (long-term value creation). It would be even awesomer if I could combine this with in-person intensive learning, like a hackathon or a good workshop…

Courses? Meh. Not really impressed by the online courses I've taken so far, but then again, I don't think I'm approaching them with the right mindset either.

Things I will carve out opportunity-fund space for so that I can try more of them:

Pairing/coaching/tutoring? Tempting, especially in terms of Emacs, Node/Javascript, Rails, or Japanese. For example, some goals might be:

  • Learn how to improve Emacs Lisp performance and reliability: profiling, code patterns, tests, etc.
  • Define and adopt better Emacs habits
    • Writing
    • Organization
    • Planning
    • Programming
  • Write more elegant and testable Javascript
  • Set up best-practices Javascript/CSS/HTML/Rails environment in Emacs
  • Learn how to take advantage of new features in WordPress
  • Write more other-directed posts
  • Get better at defining what I want to learn and reaching out to people

Actually, in general, how does one accelerate learning?

  • General learning techniques: spaced repetition, skill breakdowns, deliberate practice…
  • Structure and motivation: personal trainers, courses
  • Instruction and perspective: expert, peer, or external
  • Higher-quality resources: original research, well-written/organized resources, richer media, good level of detail, experience/authority
  • Better tools: things are often much easier and more fun
  • Experimentation: learning from experience, possibly coming up with new observations
  • Feedback, analysis: experience, thoroughness
  • Immersion: languages, retreats
  • Outsourcing: research, summaries, scale, skills, effort
  • Relationships: serendipity, connection, conversation, mentoring, sponsorship
  • Community: premium courses or membership sites often offer this as a benefit
  • Freedom: safety net that permits experimentation, time to focus on it instead of worrying about bills, etc.

Hmm. I have some experience in investing in better tools, higher-quality resources, experimentation, feedback/analysis, delegation, and freedom. I'd like to get better at that and at investing in relationships and outsourcing. Come to think of it, that might be more useful than focusing on learning from coaching/instruction, at least for now.

Let me imagine what using money to accelerate learning would be like:

  • Relationships
    • Get to know individuals faster and deeper
      • Free: Build org-contacts profiles of people who are part of my tribe (people who comment/link/interact); think about them on a regular basis
      • Free: Proactively reach out and explore shared interests/curiosities
      • $: Figure out digital equivalent of treating people to lunch or coffee: conversation + maybe investing time into creating a good resource for them and other people + sending cash, donating to charity, or (best) cultivating reciprocal learning
      • $: Sign up for a CRM that understands Gmail, Twitter, and maybe even Disqus
    • Identify things to learn about and reach out to people who are good role models for those skills
      • Free: Be specific about things I want to learn
      • Free: Find people who know how to do those things (maybe delegate research)
      • $: Possibly buy their resources, apply their advice
      • $: Reach out with results and questions, maybe an offer to donate to their favourite charity
    • Help the community (like Emacs evil plans; rising tide lifts all boats)
      • $: Invest time and money into creating good resources
      • Be approachable
      • $: Bring the community together. Invest in platforms/organization. For example, I can use whatever I would have spent on airfare to create a decent virtual conference experience, or figure out the etiquette of having an assistant set up and manage Emacs Hangouts/Chats.
  • Outsourcing
    • Identify things that I want to do, regardless of skills
    • $: Experiment with outsourcing parts that I don't know how to do yet (or even the ones I can do but want external perspectives on)
    • Use the results to determine what I actually want and what to learn more about; iterate as needed

Huh, that's interesting. When I start thinking about investing in learning, I tend to fixate on finding a coach because I feel a big gap around directly asking people for help. But I can invest in other ways that might be easier or more effective to start with. Hmm… Thoughts?

25 Tips for Totally Rocking Your Drupal Development Environment: pre-session notes

When I beta-tested this talk with an IBM audience, I realized that there was no way in heck I could fit all the generally useful tips I wanted to share into the session, much less go into the joys of Eclipse, vi, or Emacs. (Especially Emacs. I could spend hours sharing what I’ve learned about Emacs.) Besides, editor choice is such a personal thing. So I’m not going to try to braindump all the cool things you can do with your development environment. Instead, find me at DrupalCon 2009 and pick my brain.

In the meantime, here are some tips that most people might find useful.

  1. Meta tips
  2. Browser tips and plugins
  3. Drupal modules
  4. Source code and configuration management
  5. Automation and regression testing

Meta tips

1. Be lazy.

We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris.

Larry Wall, Programming Perl (1st edition), Oreilly and Associates

Minimize your total effort and the total effort of your team. Learn more so that you spend less time looking. It’s amazing how much of a pay-off you can get from an hour or two just flipping through the Drupal API or the lists of Drupal modules – you’ll get a sense of where things are and what they’re called, and you’ll spend less time reinventing the wheel too. If you can invest thirty minutes in building a tool that’ll save you ten hours of work over the course of the project, do it.

2. Learn from others.

Join a users’ group. Read the Drupal forums. Hang out in #drupal, #drupal-support, and other channels on irc.freenode.net. You’ll learn so much from other people’s questions and answers, and even their approaches for figuring out what’s going on. And you’ll learn quite a lot by helping other people, too.

3. Know your tools inside out.

Read the documentation for your editor and development environment. Read the Drupal handbook and the API. Read the source code, even. Practice your editor’s shortcuts until they’ve been burned into your brain. Know your tools inside out, because they will save you lots of time and effort.

4. Know what’s out there.

One of Drupal’s strengths is the sheer number of third-party packages out there that you can just drop in and customize. Keep an eye out for interesting things. Browse through the available modules or view all the modules in a category. Subscribe to the Drupal Modules news feed in order to find out about new releases. Subscribe to Planet Drupal for interesting blogs. You’ll get lots of inspiration, too.

5. Practice relentless improvement.

At least once a week, invest some time in thinking about about what you’re doing and one small way you could do it even more effectively. Lather, rinse, repeat. As you incorporate more of these improvements into the way you work, you’ll free up more time and energy to work even better. Share your improvements with your coworkers or on your blog for even more benefit.

Browser tips and plugins

These tips are for Mozilla Firefox, because that’s what I use. =)

6. Firebug

Firebug: http://getfirebug.com/

Probably the single most useful extension for web development. I love how you can examine your webpage structure and even change styles or HTML elements on the fly. The Javascript console is really handy for testing JQuery statements and other scripts.

7. firefox -ProfileManager -no-remote

This is how you start a separate session of Firefox, so you can test your site using, say, an admin account and a regular user account at the same time. Bonus: you can set up a test profile with very few add-ons, so that your add-ons don’t interfere with the site you’re testing.

Other ways to accomplish this: run a separate browser, or use the Devel module to switch back and forth. Not as convenient, though.

8. Tamper Data

Tamper Data: https://addons.mozilla.org/en-US/firefox/addon/966

The Tamper Data module is handy when you’re debugging form submits or page redirects, because you can step through the requests or change any of the submitted values.

Alternative: The Devel module for Drupal lets you intercept redirects too.

9. iMacros or another recorder

iMacros: https://addons.mozilla.org/en-US/firefox/addon/3863

Record and automate repetitive browser-based tasks or tests. Really handy for testing those pages where you have to log in, click on this link, click on that link, set this text field, and so on.

10. Drupal for Firebug

Drupal for Firebug: https://addons.mozilla.org/en-US/firefox/addon/8370

Comes in two parts: a Firefox add-on and a Drupal module. This extends Firebug to give you all sorts of Drupal-related goodness, such as a message log, variable dumps for users, nodes, and forms, and data about your views. Reduces the need to insert var_dump into random parts of your code to figure out what’s going on.

Drupal modules

11. Admin Menu

admin_menu: http://drupal.org/project/admin_menu

One of the first modules I install on a Drupal project, this module adds a much more usable dynamic administration menu along the top of the page.

12. Devel

devel: http://drupal.org/project/devel

Lots of goodies for developers and themers. I particularly like being able to view all the SQL queries run on the page, with slow queries highlighted. You may also want to set the SMTP library to Devel during testing, so that you can test e-mail without actually sending e-mail.

13. SimpleTest

simpletest: http://drupal.org/project/simpletest

You can use SimpleTest to test your system both at the source code level and at the web page level – it includes a simulated browser, so you can send GET and POST requests and test whether the results contain text or things like that. Tests are tremendously handy for improving your source code quality. You can also use this to generate lots of test data – just write a test case that creates the test data, and then call the tests you want.

14. Login Toboggan

logintoboggan: http://drupal.org/project/logintoboggan

Configure it to display a login form on every page. You’ll find this helpful when you’re testing various parts of your site, reloading the database from the backup, or generally doing things that involve logins and sessions. You might like it so much you’ll leave it on all the time. =)

15. Xdebug

Xdebug: http://www.xdebug.org/

Not a Drupal module, but a very useful extension for PHP. Use either this or the Zend debugger to pretty-print nice stack traces and variables, or even step through your code. Your debugging life will get so much easier when you figure out how to integrate this with your development environment.

Source code and configuration management

Tip 0: Use a source code control system. If you don’t, you’re inviting disaster. Trust me, you _really_ want to be able to revert to code that’s known to work.

16. Check in your entire Drupal source tree.

Don’t get tempted to just check in the sites/ directory. You might need to touch others, you might need to upgrade core… Anyway, things could get messy. Just check it all in at the beginning, and your development and deployment will be easier.

17. Organize your source code.

Use different site subdirectories for multiple environments, and use subdirectories to organize your modules. This can help you keep your testing modules separate.

I usually work with a local development environment (ex: local.example.com), a testing environment (ex: qa.example.com), and a production environment (ex: example.com). All of the modules that should be available to all those environments go in sites/all/modules. Sometimes I find it handy to put open source modules in sites/all/modules/oss/ and custom modules in sites/all/modules/custom, or another project-specific directory. Development modules that should never ever end up on the production server (such as simpletest and drush) go into sites/local.example.com/modules, and I use symlinks to make the modules available in other testing environments as well.

18. Check in clean source for third-party modules.

With Drupal’s hook and theme system, you can generally get away without directly modifying the source code of well-written modules. However, modules might not have the hooks you want. Before you make any modifications to third-party source code, make sure that a clean, unmodified copy is checked into your source tree. This makes it easier to upgrade the module later on: just get the difference between the current version and the last clean version, install the new version, and reapply the differences (correcting the patch when necessary). To be safe, commit the source code as soon as you unpack the module.

If you started with an already-modified version, don’t worry. It’s not impossible to correct, just tedious. Get the difference between the modified source code and the clean source code, commit the clean source code, and then apply those differences.

19. Test all upgrades against a copy of the production database.

This is related to configuration and change management for a live site. When developing improvements to a site that’s already in production, you’ll often find yourself needing to set variables, enable new modules, and make other changes. Resist the temptation to make these changes by hand as part of a manual upgrade process. You don’t want to do that. You can experiment with making changes through the web-based interface for sure, but any behavior-related changes should (and can!) be written as update functions in the relevant .install files. This allows you to test the upgrades against a copy of the production database as part of your quality assurance process.

CAVEAT: install functions are run in a certain order: alphabetically by module, and then numerically by update number. Keep that order in mind when writing update functions that interact with other modules that also have updates.

For more about this, come to the panel on staging and deployment at DrupalCon 2009 – I’ll be there too!

20. Manage your source code branches and track changes that need to be merged.

Once your website is in production, you’ll find yourself working on bugfixes for the current site and new features for the next version. Save yourself pain and suffering by learning how to use your source code management system’s branching commands to maintain at least two branches of the source code tree – one for the development version, and one for the current released versions. Also look for tools to help you remember which changes you’ve applied to both branches. For example, the svnmerge tool is handy for managing Subversion tries. That way, you can fix bugs on the release branch and merge them into the development branch, so that the next version won’t have those bugs either.

Automation and regression testing

21. Use build tools

You run lots of different commands as part of development. Refresh the database from the backup. Clear the cache. Enable development modules. Connect to the database. Instead of trying to remember or re-type all those commands, use a build tool like GNU Make or Apache Ant to simplify your work. For example, I have my Makefile set up so that no matter what project I’m currently working on or environment I’m currently working in, the following commands pick up project-specific settings and do the right thing:

make mysql connect to the database
make backup make a copy of the database
make backup-partial make a partial copy of the database, omitting accesslog data and other unnecessary information
make restore restore the database from the backup
make dev-restore restore the database from the backup, and enable all the development modules
make clearcache restore the database from the backup
make tags restore the database from the backup
make doc restore the database from the backup
make test run all my project-specific tests

You’ll enjoy not having to remember the command to type.

22. Learn or make tools to save yourself work.

This is an application of tip #1. A little scripting goes a long way. Learn how to write shell scripts and you can save yourself a lot of repetitive work. For example, my team members regularly need to deploy revisions of our source code to the QA testing server. In my team, I’m the most comfortable with Linux. Instead of doing all the deployments myself, I spent thirty minutes writing a script that lets any of the team members start a build. (For a while, I even integrated all the unit tests into it!). The whole system is a bubble-gum-and-string contraption involving PHP, a shell script, a Makefile, and SSH, but it works.

23. Make the most of the Drupal shell (drush)

drush: http://drupal.org/project/drush

Drush totally rocks. Drush makes it easy to run Simpletest tests, SQL queries, even evaluate PHP statements within the Drupal context. I modified mine to make it easy to upgrade modules, too, which means that I can restore from a backup of the production database and run all the update functions within a minute. Learn how to use the different commands built into Drush, and add your own. You can save a lot of mouse clicks and time that way, and you’ll find it easier to automate things (including testing!) and integrate that into your workflow.

24. SimpleTest

Introduced this previously (#13), but it’s well worth repeating. If you implement other tips (such as #19: check all upgrades against a copy of the production database), your tests will become incredibly useful. Write lots of tests using SimpleTest and associate them with a group. Restore your copy of the database using the production backup. Run all of your updates. Use Drush to run the group of your project-related tests, or individual tests. A good test doesn’t display anything if the test passes. If everything passes, hooray! If a test has broken, find out what’s wrong–the code or the test–and fix it. Lather, rinse, repeat.

25. … What’s your favorite tip?

Leave it in the comments below, or share it with everyone during the DrupalCon 2009 session on Totally Rocking Your Development Environment, from 11:30 – 12:30 on on March 4 in the Trellon Room.

Can you see why I’m going to have a hard time fitting all of that into the 60 minutes I have? ;) Particularly if I’m showing things. And I really don’t want to talk _all_ the time, because I’d love to hear people’s tips too. Come and join us on a whirlwind tour. Ask questions. Share your tips. It’ll be fun. =)

Related sessions you might be interested in:

Drupal Patterns: Managing and Automating Site Configurations: ChrisBryant, March 5, 3:00-4:00
Staging and Deployment – A Panel Discussion: Greg Dunlap, Kathleen Murtagh, Shaun Haber, and me: March 5, 5:15-6:30
Drush, Command Line Drupal Productivity: Moshe Weitzman and Owen Barton, March 5, 5:15-5:45  (conflict!)
Drupal Process Management: Drew Gorton, March 6, 9:00-10:00

What do I want to learn?

Inspired by Michele Martin’s post on personal learning environments, I started working on a mindmap and a blog post about how I learn. Before I got far into it, though, I realized that I wanted to first share what I want to learn – the why, not just the how.

So here are a few things that I want to learn more about, why I want to learn more about them, and how I’m currently learning about them. I’d appreciate your suggestions, and I’d love to hear about what you’re learning!

Telling stories with words and images

A good story can make a point so much more effectively than charts or data can. I love listening to stories and showing people that they’ve learned something other people will find useful. I love collecting stories so that I can pick an appropriate story later. I love telling stories in my presentations, blog posts, and conversations, and I want to get better at it.

I want to get better at finding and telling stories because I believe it’s a remarkably effective way to understand people’s experiences and to communicate.

I practice telling stories with words and images by writing blog posts
and by including stories in my presentations. So far, I’m doing well,
but there’s still so much more I can learn. When I grow up, I want to
be Dan Pink. ;)

I want to get better at listening for hints of a story and bringing it out. I think I’ve read as much as I could about this, so it’s really just a matter of getting out there and talking to people.

I want to improve my visual literacy. I often have a hard time thinking of a good image that can illustrate an abstract idea, and an even harder time finding an image that fits. I’ve used Creative Commons-licensed pictures from Flickr and stock photography from low-cost photo sites, and I’ve seen how they can make presentations much richer. I want to develop my ability to think of illustrations and either sketch them myself or find good stock photos. In order to improve that, I:

  • read books about presentation design and cartooning
  • flip through graphic novels and compilations of comic strips
  • browse presentations on SlideShare.net
  • sketch on my Nintendo DS

I think I just need to expose myself to a whole lot of images so that I can start making associations in my brain. =)

Helping new hires connect with the rest of the organization (and vice versa) through Web 2.0

Yes, that’s pretty specific. =) I’m also curious about how individual employees can use social media to grow their networks and provide more value, how communities can use social media to support their activities, and how companies can incorporate social technologies into their strategies, but I’m particularly passionate about helping new hires connect. I think it’ll not only make a big difference in employee retention and satisfaction, it’ll also help companies get more value from what new hires know and what new hires are learning.

I want to get better at communicating the benefits and needed actions to experienced people. To practice this, I’ve joined a community that helps colleagues learn about Web 2.0 and use our internal tools effectively.

I want to improve my ability to show new hires the benefits and help them get started.
I’m working on some materials for new hires, and I’ve gotten involved with our local new hire network.

Experience will help me learn a lot, and I’ll also get to provide a lot of value along the way. =)

Sharing what I’m learning

I want to get better at figuring things out and sharing what I’ve learned. I’m practicing this by blogging and by talking to people. I can improve this in several ways:

  • I can learn about more things
  • I can improve my writing skills to help me write faster, clearer, and more effectively
  • I can make it easier for you to find other things you might be interested in.

I want to get better at mapping what I know. If you know what I know, then you can make better use of it. I’ve got too many blog posts for someone to go and read all of them, but a good map of that – and a map of things I’ve learned but haven’t written about yet – can help you find things you might find interesting.

Helping people change

The thing I enjoy about technology evangelism isn’t convincing people to change, it’s helping people who already want to change. I want to get better at helping people understand their options, figure out how to get started, and learn how to be more effective. I’m practicing by helping people at work and on my blog, and I’m learning more by talking to other people who have a similar urge to help others learn and grow.

Nurturing relationships over a distance

I’m here in Canada because my significant other is here and he can’t move to the Philippines with me. My family and my old friends are half a world away. Being split between worlds is the biggest source of pain in my life. It’s hard to stay in touch when you don’t get to share as many experiences. It’s hard to deal with expectations – both mine and other people’s. It hurts because I don’t want to go for either extreme. I don’t want to give up on this wonderful relationship and focus instead on my duty to my family and my country. I don’t want to focus only on this relationship and forget my roots.

I need to connect with other young first-generation folks. How do other people manage it?

I’d also like to nurture my old friendships, because I’d gotten to know some really incredible people over there. Some friends are easier to keep in touch with than others–they blog, they chat… Through them, I get to hear about other friends, too. I still need to think about how I can do this better.

I also want to learn how to nurture connections with people around the world – coworkers, acquaintances, people I’ve gotten to know through blogs… I currently practice that by responding to mail and by reading other people’s blogs.

Learning how to nurture relationships over a distance is difficult, but I need to learn.

Being more practical

There are a lot of little things in life that I still need to learn. Driving, sewing, gardening, stuff like that. No substitute for experience – I just have to do it.

So those are a few of the things I’m working on learning these days. I’d love to hear your tips. How about you? What are you learning?

Babysitting experiment so far: pretty great, and working on making it even better

We’ve had twenty babysitting sessions so far. We started weekly experiments in May 2018, when A- was a little over two years old. She asked me to stop after eight sessions, since she wanted to play with me instead. We resumed in April 2019 because A- wanted to give it another try. I wanted to quickly reflect on how that experiment has been going and think about how we can build on it.

What have we been doing?

We scaled up from 4 hours a session to 7 hours a session. This works really well for me because it gives me one or two chunks of focused time long enough to dig into and solve reasonable problems. It probably works out even better than a half-day preschool program, since transitions chew up so much time.

I increased it to 2 sessions during the week because we might be away for a trip, so I wanted to front-load some consulting and personal time.

We started booking Saturday sessions as well so that W- and I can work on house projects together. I think it’s worth investing the time and money in developing my DIY skills, and I want A- to grow up seeing us do that kind of stuff.

What have I learned from having all these different babysitters?

A- gets along well with lots of different people. She switches over to focusing on the new babysitter within a few minutes, and she seems comfortable heading out to the park with them even if it’s just the first time they’ve met. She’s good at communicating what she wants and can be easily understood. She generally likes to take the lead, but she’s willing to accept suggestions and reminders.

There’s one babysitter that A- loves, a few she’s okay with, and a few she’s less keen on. A- seems to respond well to energy and engagement. Even when A- and the babysitter don’t click as well, I learn something from what I think might be missing. It inspires me to be more engaged, too. It’s great having such a variety of people. It’s like being able to experiment with different parenting styles and personalities while keeping A- constant.

A- likes the crafts and games they suggest, and often asks to repeat them. The babysitters often introduce things I wouldn’t have thought of trying with A- just yet, so I’m pleasantly surprised by her capabilities. They’ve made it out to playgrounds a few times, although A- often prefers to stay close to home.

A- really likes helping me pay for the babysitter, too. She’s learning to recognize different numbers and bills. Hmm… If the sitters don’t mind, I might switch to paying mostly in 10s so that she can get used to hearing that sequence of numbers. I talk to her about withdrawing cash from my savings, how I earn that money by working, and how the babysitters earn their money by working too. We even talk about receipts and taxes in the process.

What did I do with the time?

  • Consulting: 25.5 hours, or a little less than 50% of the hours since we resumed the experiment in April. Lots of SQL and Javascript. Working during the daytime is much, much nicer than staying up late. I make faster progress and feel happier, and I can talk to my clients as needed. Also, if I remember to go to bed early, I have more energy when I’m with A-.
  • Coding: I worked on a bunch of little tweaks for Emacs and my phone so that I can update Emacs News and my journal more easily. I also organized my files, updated my blog, and did lots of little kaizen projects.
  • House stuff: I painted the cabinets, and I’m looking forward to doing more house things.
  • Organization: I tidied up my basement workspace and organized my files.
  • Errands: I took two hours to go to the Philippine consulate. It was nice not worrying about whether A- would get bored or need to go to the bathroom.
  • What didn’t I do? Drawing, sewing, batch-cooking, and self-care still felt lower-priority than other things I could do with that time. Writing is pretty sporadic too, although I turned a few Emacs tweaks into blog posts.
  • ECE: I’ve only done a little bit of early childhood education reading and preparation. I could spend more time and energy doing this, since enriching our days together will likely pay off more than incremental tweaks to my computer or phone setup.

What concerned me before?

How would the sitters interact with A-? I see a lot of parents and caregivers focused on their phones or other adults while their kids play fairly independently, and I can be like that too unless I make an effort. So far, most of the babysitters we’ve gotten have seemed pretty engaging, though. Seeing them in action helps me appreciate the kind of play skills I want to develop myself. At some point, A- will be more interested in playing by herself or with other kids. At the moment, though, she wants lots of interaction, and it’s amazing what she can learn with someone’s help and appreciation. I think my ideal at the moment is for A- to have a supportive and appreciative play partner who expands her vocabulary and understanding, occasionally asks questions or suggests things that challenge her, and sometimes models new techniques. It’s hard to do that sort of stuff, so I’m glad I can pay for role models.

I want to learn more from how sitters interact with A- without disrupting them. I can hear them from the basement, and I come up for snacks and for transition time. (Then A- says, “Why did Mama come up?”, in a “I’m fine, I want to keep playing with the babysitter, Mama go back downstairs” sort of way.) Hmm… If the babysitter’s okay with it and if it doesn’t mess with my concentration too much, maybe I can listen on the baby monitor when I’m working on personal projects.

Less awareness of A-‘s interests and growing skills? As it turned out, I didn’t need to worry about this at all. When A- is interested in something, that interest runs through everything she does. I still feel in tune with what she’s curious about and what she’s working on.

Less exposure to household stuff? Not an issue at the moment. A-‘s still involved in getting groceries, cooking, cleaning, and other things we do around the house. I’d like to eventually involve her more in DIY, but that can wait until I have more skills and she has more self-control.

What’s the next step?

More time? A- often tells me that 7 hours is too short. She wants to try 8 hours, which means we need to:

  • get ready earlier in the day
  • do chores early afternoon so that we can have dinner and do bedtime soon after the sitter leaves
  • help her get the hang of either going out, playing, and napping in the stroller, or resting during quiet time.

Eight hours might make it easier to get an occasional babysitter outside the agency, if we decide to go that route. Summer is coming up, and it might be awesome to snag a teacher or early childhood educator on a summer break.

Do we want to consider a regular babysitter or daycare? I actually like the variety that comes from having different babysitters, and we don’t offer enough hours or commitment for someone else to commit to us for a longer term anyway. At the moment, A- is more interested in playing with a grown-up or by herself than with other kids. I’ll expose her to more group situations later on, but in the meantime, I think it’s worth having someone focus on her, help her answer her questions, read her tons of books, and so on.

How can I build on what A- does? Babysitters often come with one or two ideas and we have a lot of open-ended supplies, so they’re already doing pretty well. The table I made is a little too text-heavy for them to quickly glance at, but quick verbal instructions and one activity pouch might work. I can rely on their experience to figure out what level A- is at and come up with an appropriate challenge or spin. In fact, they generally do a better job at this than I do, so the less I get in their way, the better.

A- freely shares what she’s interested in (“I’m a firefighter!”), so I don’t need to brief them on that, since a good babysitter will pick up A-‘s cues and incorporate them into activity suggestions. I have plenty of days with A- for following up on those interests anyway. (We’ve been to the fire station four times in a little over a week…)

It might be interesting to build on techniques, which I can pick up by asking about crafts and displaying her work. For example, A- has been very interested in painting and then folding the paper or placing another piece of paper on top, and she repeated that technique with other sitters and with me. If I annotate her art with the date (and possibly sitter name), that also helps me cross-reference it with the babysitter when asking A- about her babysitter preferences.

Another level would be to build on concepts. If I systematically go through something like Playing Preschool, that might help me spot opportunities to sneak more learning into stuff A- wants to do. She can generally fill the whole day with things she wants to do, but she’s curious about new things in her environment, so that’s how I might be able to provoke her curiosity. I can work on getting the hang of this myself before figuring out how to get the babysitters on board with it too, since they’re already doing a great job of exposing A- to different kinds of activities. I don’t want too much structure, anyway – just a little to support more discovery and thought.

There’s something pretty interesting about this setup, and we’re very lucky to be able to do stuff like this. I’m curious about how to make the most of it.