That's a good list of subject areas, and articles for technical areas, but if you're going to be an effective programmer, you need to venture out a bit. There are a couple of good books by Gerald Weinberg that will change the way you look at your profession. First is The Psychology of Computer Programming. It's a bit long in the tooth, but the lessons are still relevant. Same goes for Quality Software Management, Volume 1. Be warned, QSM, in particular, will make you dissatisfied with your managers.
I've been using Evernote for almost 4 years now. Overall, I like it. Having access to the same information on my desktop, laptop, tablet and phone is amazingly handy, especially at events where I go through multiple sets of batteries in a day. (SXSW comes to mind.)
The key to using Evernote, or probably any personal content management system, is organizing your data so you can find it later. I started using notebooks, but have evolved to a combination of notebooks and tags. It's important to spend some time up front, and create some management system and stick to it. It will evolve, but as with many things, if you have a good base, it will grow well. I use the notebooks to separate major contexts; like work and my various hobbies. I use the tags to keep track of individual subjects. This is handy when a given item can fall into more than one category.
I like that you can use the camera to embed pictures into notes. You can also embed other files. The free version has a fairly modest limit on the amount of data you can upload, but it's been adequate for me. You can upgrade to the pro version for $45/yr, which gives you a lot more upload and I think some enhanced OCR capabilities as well.
I also like the web clipper plug-in. It will extract the content and put it into a note. This is very useful if the content changes or even disappears. They've been steadily adding features. I'm getting into the shortcuts and reminders and finding both useful.
Going back to your original application though; if you want to keep a journal, keep a journal. Adding organized, indexed notes to it will be amazingly useful. I do keep an irregular journal on Evernote. Though, if I have an ongoing need for detailed tracking, I switch to pen and paper, usually in the form of a Daytimer. I do this for legal reasons, and not operational ones.
My only major criticism is that the iOS app is very slow on my iPhone 4.
Please don't construe the above as a diss on One Note. I haven't used it, and haven't been motivated to try it.
My rule of thumb is that most everything you know now will be useful, but mostly obsolete in ten years or less. That makes extracurricular learning a constant and ongoing process. There are a multiple ways to accomplish this. The best way will depend on your learning style. The areas you study will depend on both your interests and available opportunities.
You already have a Bachelor's from a good school. An additional degree in computer technology isn't going to deliver a lot of value. You've been working in embedded systems, which can be its own little world sometimes. But at least where I live, good opportunities abound. If you like it, you can stay there, or you can branch out. I moved from embedded, to systems software, to application software. I still like embedded programming.
If you want to branch out, it's vital that you know your goal. It can be exploratory, or it can be more concrete. There's room for both. But, be prepared for some major time commitments. You can find lots of resources for self directed learning with a little searching. If you need a classroom setting, Extension courses are good resource, albeit expensive. Don't forget to check your local community college. Our local CC offers an excellent introduction to the Java programming language. It's always filled.
Online tutorials in most subjects are plentiful, and there are more traditional books and study guides. Study groups are another resource, if you find a good one. They have the advantage of expanding your social and professional network too.
My personal mix is mostly books, online articles, and fiddling around doing something useful for someone else. I also attend a couple of conferences I find particularly useful. However, I do appreciate that there are times when a structured approach is best. I find it most useful in abstract areas like UML, or other methodologies and particulary complicated subjects like optical engineering. You get to determine what's best for you. There's no canonically right way.
I'll toss in some more suggestions:
- Put a unique label on all your cables, at both ends.
- Prepare to have your cabling documented, and be willing to keep that list up to date.
- When they wire the building, ensure there are enough power drops with enough current to supply your equipment.
- Make sure there's enough airflow into that room to keep temperatures reasonable.
- Try to do everything you can with configurable network hardware.
- Keep a wiki
- I'll second the suggestions to color code, and route cabling overhead.
$2B is a lot of money, but not that significant, relative to their cash on hand. So, they aren't putting much at risk. As problematic as Dell can be, their organization works better than HP, and MS execs don't need clown suits for management meetings.
Microsoft gets some interesting things in return:
- Access to world class manufacturing and logistics operation. Could they be headed toward the Apple model of vertical integration?
- Maybe a good place to make xBoxen and Surface tablets.
- Microsoft loses out to Apple in user experience, partly because some of the peripheral OEMs write horrible drivers. If Dell can force them to write good drivers, it gives a boost to Microsoft's software that goes beyond just Dell.
- A say in Dell's fate should they crater. This might be the most important. What would happen if Google decided to buy up their manufacturing operations?
If Microsoft is going to start investing in partners, it signals a real sea-change in the PC market. Up til now, they've been critically dependent on OEMs to make compatible hardware. Instead, they've been hurt by lousy drivers for incompatible hardware. Dell has enough clout to steer the market. But that assumes this deal produces more than just promises.
Are we talking on a professional or personal level? The two overlap to some extent. You need to do a serious analysis on yourself (perhaps with the help of a trusted friend or colleague) and identify the areas where you need to improve your skills.
But, here's my own list:
On a personal level -- Buddhism Plain and Simple is a good read, even for non-Buddhists.
On a professional level --
Moving up to something like a tech lead means you need more feel for the business side, and your technical reading should be more abstract. You're a professional programmer, you should be able to go from an algorithm to the programming language of your choice with no trouble.
Quality Software Management, Vol. 1 by Gerald Weinberg is good for getting your head around the way technical organizations operate; for better and for worse. I wouldn't worry about the other three volumes for a while.
Introduction to Algorithms by Cormen, et al. We talked some about algorithms and complexity when I was in college, but never in enough detail. I like this book for its rigor, not necessarily its readability.
Design Patterns by Gamma, et al. is another book to get you thinking about programming in more than just linguistic terms.
One other resource worth mentioning -- MIT, Stanford, and other universities have put their core Computer Science classes online. You should investigate those classes in light of where you need to improve.
Eric Schmidt has spend a lot of time competing against Microsoft. I think he's mostly right. Microsoft has only been able to prosper through monopoly tactics and those won't work anymore. They come out with a lousy version 1.0 to keep competitors away, refine it some through versions 2 and 3, then version 4 becomes useful. They can't even think about that strategy now because someone else came out with version s 1, 2, and 3.
Microsoft is still dominant in the word processing and spreadsheet markets. Unfortunately, they'll probably lose that franchise, given the rise of PDF for interchange, and their unwillingness to port their products to either Android or iOS. Someone with deep pockets, probably Google, will come along and take those markets from them.
There's also a lot of back office software that uses their servers, databases, and development tools.But those markets will never grow as quickly as the consumer end.
They won't be going away any time soon, but if they're ever going to get back in to growing markets, they need to change radically. In the end, no company that size will turn on a dime, and its not clear whether there's still time for them to get back in the game.
Programming languages are more than just syntax and semantics. Basic is a terrible programming language. Not just for a lack of rigorous language constructs, but for the programming culture that surrounds it. Visual Basic has morphed into something that has little relationship to its ancestors, but still suffers from hokey syntax and inconsistent semantics.
It was the best we had for computers that don't even have the power of a modern microcontroller. But we have better ways of doing things now. Let's leave languages that embody the best we could do with very little, and start people with something that's consistent, useful, and doesn't embed so many dysfunctional programming constructs.
And before you flame me for not knowing basic, I know Basic well. I use it frequently in my work. I still don't recommend it to my clients.
I've been using NVU/Komposer/BlueGriffon for more than 10 years. It isn't perfect, but it's usually good enough. Now days, I mostly use Drupal, but when I need a simple static page, I'm back to BlueGriffon.
That said, if you need something more complicated, think about using a web content management system. It takes some learning, but I can now set up a basic Drupal site in less than a day, on a managed host.
American Airlines changed something about its baggage handling software. It isn't working. Flights are consistently departing late due to bag loading issues. One plane had to be unloaded and reloaded so the handlers could check the contents.
Bet the development team is going to hear about this one. .
Apple, to its credit, cares about user experience. They're not perfect, but they're way ahead of the windows world. I think that's what's selling the users on Macs.
I bought a Toshiba laptop a little over a year ago. It came with Windows 7, which isn't bad. The Toshiba-supplied drivers, are terrible. It's not stuff you notice right away. It's a lot of annoying little things; scratchpad scrolling doesn't work reliably, and various problems with the sleep functions. For some reason, it thinks it should wake up when the laptop is closed and it gets movement from the wireless mouse. I have to turn off my wireless mouse before I stow the machine, otherwise, it cooks itself in the laptop bag. The audio mute button on the keyboard stopped working with the last MS security update. This kind of cr@p gets on your nerves after a while.
Our household iMacs just sit there and work. My next laptop will be a Mac. I'm running my dev software in a virtual machine anyway. I, like others here, do *nix anyway. Might as well have one in my backpack too.