It’s meaningful for programmers to objection themselves.
Creative and technical inactive is the only second.
In the resolve of the new year, I’ve compiled twelve month-sized resolutions.
Each month is an each year renewable technical or particular challenge:
Programmers obsess over the exact and the digital good past the point of lower returns.
Thus, a small asset in the analog yield comparatively large gains.
Here’s an opener list of analog life to try, each of which gate about a month of faithful effort to passage out of the beginner (and into the seasoned beginner) stage:
- Martial arts.
Engage the arts and humanities
Engineers tend to look downward on the arts.
What engineers fail to understand is that the skills and humanities add to high-tech excellence
Steve Jobs was fascinated pointing out the necessary of connecting technology and the liberal art, and rightly so.
Art and design have principles capable to human-computer interaction.
Don’t be unaware of these principles.
The arts and humanities train and sharpen intuition in a way that is difficult to quantify, yet is indispensable to of us who work in quantified fields.
Engineers need to review how to part what they can’t tally, or counting only what they can measure.
For Partly one month per year, learn more about section like the following:
- Industrial design.
- Music and music theory.
Friendly sciences have much to offer computer scientists as well. Try economics and psychology in particular
Programmers turn to live idle lives, and we face different health objection from our occupation.
We tend to ignore these challenges.
Spend an entire month each year adapt your exercise, diet, and environment to sponsor durable healthy habits.
Go to a clinic each year to get your blood pressure, cholesterol and blood sugar checked. Watch how these values change over time.
If your complete are starting to tender or have been hurting, break now and take a deal to combat RSI.
Focus on improving your posture, with an emphasis on your shoulders and neck. I use a posture corrective brace to help
Record your weight, caloric consumption, and caloric burn. If basic, modify your lifestyle to further healthier eating and weight loss.
If you’re before trim, consider a one-year analysis in packing on clout and muscle.
2017 update: For the past a few months, I’ve been tricky out a standing desk attachment, and it’s been fresh both mentally and physically.
I measure I’m burning an extra 360 calories a day from fixed, but since standing has raised my overall activity, I thick it’s more than that, and I find I have a much greater target when I stand than when I sit.
Learn a new programming language
Programming languages ascent and decline.
Programmers that only know one language will narrow their problem-solving capability and their orbit prospects.
Spend a full month holding one’s attention a new language or a new language paradigm.
Write a modest program in it.
Here are a few less general languages to learn:
If you’re feeling especially brave, take a crack at dependently-typed setup languages / theorem-proving systems:
If you’re out of programming languages to learn, appliance one.
The most powerful underused skill programs carry is the ability to dehumanize both the virtual and the physical.
If you’ve never made a robot, build a robot.
At the very least, hit with LEGO Mindstorms:
or hack on an Arduino board:
Survey the everyday tasks you do, and decide which can be automated incomplete or in part.
Home automation technology has advanced far, and much is likely with DIY systems like Insteon.
Take a month to provide in an automation project:
- Tune your mail filters or set up primal.
- Set up shell scripts to automate the common.
- Create shell scripts to benefit your writing.
- Learn how to use the iron tool.
- Link closet lights to motion located
- Replace wires with wireless where possible.
- Stop manual syncing: Move it to the cloud.
- Set up a casually controllable sound system.
- Control your thermostat from your server.
- Fixed up digital security cameras.
- Create a digital intercom/baby monitor.
- Have your coffee maker turn on automatically.
- Set up a self-refilling water dish for pets.
- Build a sensor-controlled pet door.
- Hack a Roomba into a personal courier.
Learn more mathematics
At its feeling, computer science is a mathematical control.
Good mathematicians make good hacker.
Do not let your mathematical faculty wither.
Consider an annual one-month fresh up on one of these topics:
- Discrete mathematics.
- Number theory.
- Category theory.
Embrace the uncomfortable
Since my early twenties, I’ve looked at my earlier peers and tried to find out why some faster and how others stay vibrant.
The answer is a comfort.
Comfort breeds professionally fossilization.
We find a system that everything for us, and we stick with it.
But, technology advances and those that stay in their comfort zone never realize the gains from these advances.
Practice becoming pleasant with being uncomfortable.
Here’s a list of things that might make you uncomfortable at first:
- Switch to Dvorak.
- Switch from emacs to vim or vice versa.
- Stop using a mouse.
- Use a different window manager.
- Switch from cream and sugar to black coffee or straight tea
- Try out that “popular new piece of crap” for the full month.
- Turn your cell phone off for one day a week.
- Learn a one-handed input device.
- Try a different OS.
- Try a different version control system on a small project
- Forcibly abstain from the internet for one day a week.
- Try a dietary restriction: go vegan, vegetarian, dairy-free, etc.
- Eat a food you don’t like every day
- Put your dominant arm in a sling.
- Learn to write with your non-dominant hand.
- Start a blog
- Sign up for public speaking.
- Listen to a kind of music you don’t like for a month.
- Volunteer at a hospital or retirement home.
- Fast once a week.
- Travel to a country with a different language and/or culture.
- Read an acclaimed novel from a genre that you don’t like.
- Watch an acclaimed movie/show from a genre that you don’t like.
- Learn to drive stick.
- Argue against something you believe.
After a month of doing anything different, decide whether you wish to control doing things variously or even if there are ways to fusion the best of the new and the old.
For instance, when I switched to vim after ten years of emacs, I set up the emacs-style keybindings for infusion mode but kept vim.
Focus on security
Few programmers practice good security habits.
If you’re sensible of your own digital bond, you’ll be more alert of the security of the code you write.
Check that you’re using unique, strong passwords for every site.
If you don’t already practice whole-disk encryption, set aside time to do it. (On a Mac, it’s painless to set this up.)
Each year, study the top ten vulnerabilities for the past 12 months. How did they happen? What coding practices could prevent them in your code?
Here are other security tasks you can try out:
- Learn the other stuff SSH can do.
- Set up an SSL certificate in Apache.
- Implement a cryptosystem like RSA or AES.
- Try to crack the key to your wireless network
- Snoop your network traffic with WireShark.
- Set up passwordless, key-based ssh login.
- Run nmap on yourself. Configure your firewall
- Set up port-knocking.
- Create an encrypted USB drive.
- Setup log file monitors.
- Set a cronjob to upgrade your packages regularly.
Learn more theory
Computer science has rich theoretical structure.
Keep equal of new developments and renew your mastery of the classics.
allocate a month each year on topics like the following:
- Automata and computability theory
- Formal languages.
- Algorithms and data structures.
- Complexity theory.
- Algorithms and data structures.
Back up your data
Each year, spend time reviewing your backup strategy.
Invest a month in reduced the cost of creating backups.
[I’ve recently moved to keeping many of my helping files in Copy, a slick DropBox-like app that comes with much more free cache than DropBox. Sign up through this referral link to get an extra 5 GB.]
Opt for defense in depth by assigning an individual hard drive to each computer and enabling automatic backups with tools like Time Machine.
Keep critical files in version control with a graphically remote repository.
Learn new software
Learn new software
For instance, if you’ve never used 3D modeling software, try Blender.
Or, if you’ve never learned LaTeX, give it an honest effort.
As you learn, note what you like and don’t like.
Ask yourself honestly whether these observations are reflected in the software that you create.
It’s hard to spot bad practice in your own work, but easy to spot in others’.
No parent ever had an ugly child.
Learn to recognize your ugly children.
Complete a personal project
If you spend all day writing code for someone else, remember why you became a programmer by writing a program for yourself.
Spend a month each year on a project of your choosing.
Bring the nucleus of that project to fruition.
Open source it and release it to the world.