
Shift Happens
We all know about outsourcing right? Hell, a lot of companies probably wouldn’t be where they're at without it. But in my opinion, it’s just the way the cookie crumbles and if you’re not on board, you’ll be left behind.
This is a cool video I found linked off of some guy’s blog:
VideoThis is the blog:
Blog PostAlso, check out this other blog about personal finance that has a pretty cool perspective on the stock market dip:
Stock Market
My freind saw this post and had this to say:
So the video mentions that "we are living in exponential times" and cites some projections:
- by 2013, a super computer with the computational power of a human brain
- by 2023, a desktop computer that does the same
- by 2049, a computer that exceeds the computing power of all human brains on the planet
Although, I'm curious if the 2049 figure accounts for exponential population growth, or was referring to our current population size.
So the video is about the acceleration of technology, science, communication, etc. Another acceleration includes the reverse engineering of the human brain. That, plus other types of efforts to understand intelligence, combined with the other accelerations will yield AI sooner or later. And by "AI", I mean *real* AI, as in a computer that is good at doing what people do (recognizing patterns, making analogies, reasoning with imperfect data, navigating and manipulating the physical world, thinking abstractly, etc.)
Outsourcing might be a legitimate, but fairly short lived concern.
So we might be faced with AIs that can replace us as equals. But it gets more interesting. Consider that AI would be a work of engineering amenable to the same kind of speed up, miniaturization, power reduction and cost reduction as all other works of engineering (mp3 players, cell phones, laptops, software, etc.). An Nth generation AI will be superhuman in its intellect. That's hard to imagine, but a study of technology and history points to it happening. Probably in our lifetime.
Finally, one interesting aspect to all this speculation on acceleration and the future is that it's still wise to do the following (not an exhaustive list):
- take care of your health
- take care of your finances
- keep your expenses less than your expenditures
- stay on top of your field
- network
- read; stay informed
- use Cobra for all your programming needs (
http://cobralang.com/)
Most of life is just a ride. As individuals we do not control outsourcing, technology acceleration, AI research, the federal government or hardly anything at all that might concern us on a macroscopic level.
Mostly we just get to manage our personal resources and our time.
-Chuck
This is my response:
Basically I don't think it's an acceleration. I think it's just life. Check this:
All through human existence we've been trying to stay alive. To fight the ravages of time and extend our species lifetimes longer and longer. To do that we've built lots of technologies, starting with fire, and moving on to catapults, and cars, and planes, and now computers and software.
I don't think technology, or global warming, or AI, or anything of that sort is going to be the end all of the human race. I do think however that we're entering uncharted territory and that no one can truly predict the future of our computing power at all. I mean just look at Moore's law. It's almost outdated its so off by now.
I do think one day AI will be smart enough to help us out on a daily basis, but I definitely don't think it's going to be one of these iRobot situations.
As for a global market, it’s the same thing. True it's something that Americans and the rest of the world haven't seen before. But you know what, that’s ok with me. I'm ready to compete on a global basis. And it doesn't matter if you can replace me with 5 or even 10 Indians, or Chineese, or whoever. The fact is people not only want, but they need to have face to face conversations with people involved with the project. If that makes it a more competitive environment, so be it.
I'm not going to try to predict what's going to happen in 10 or 20 or whatever years. I'm just going with the flow. Just like I did when I went to college. At the time, the bubble had just burst and CS registrations were down and everyone was saying all the jobs were leaving. Guess what, they didn't. The fact of the matter is life goes up and life goes down. And I'm not going to be arrogant enough to make broad sweeping claims about science, or humanity, or weather, or anything. I'm just riding the wave. :-)


Take Your Time!
Time is money, right? When you think about it, it costs money just to be alive! So it stands to reason that if you want to save money, especially if you’re a business, you should just hurry up and get what you’re trying to do … well, done. The faster you work, the more money you save, the more profit you keep.
This all seems on the surface like a great idea. But in my mind, the quality of a product wins out over the cost of a product. People just like me and you will pay a little more if you’re buying something that will last rather buying something that works. That’s why I say take your time when you’re writing software, and get it right.
Part of getting it right is having the right environment, using the right tools, and testing your software to ensure that what you set out to make is actually what you made. Testing is such a big part of the software lifecycle that many big organizations hire people that are specifically trained or have a certain perspective on software just to try to break it.
I believe that quality, above having something that actually fits the need, is the most important part of an application. Graphics, extra configuration, extensibility, all that is second to quality when making something to sell.
When your business is a service not products, you lose out. Because every minute you spend on a project is a direct subtraction from the bottom line. Even if you can save some time by implementing some sort of platform / infrastructure / re-usable code-base, every project is different and will require you to spend time on it. Even if you’re paid for that time, you’re under a ceiling in terms of profits.
Working on projects under that kind of business model can be stressful. When projects are late, or when they don’t quite exactly work, or even if you have to do a revision to a previous project you start thinking about how much things cost. And sooner or later (as a fellow blogger put it) you start looking at the world in terms of hours. New coat? 3 hours. New computer? 20 hours. Fill up your gas tank? 1/2 hour. And I’m telling you, that’s not the way to live.
Creativity is the key to innovation, and when you’re not relaxed you can’t be creative. I think that’s why some of the larger software companies (Microsoft, Apple, Google, etc) don’t have dress codes, they offer free drinks, and all these things to make you comfortable. They know that to get people performing at their best, they have to relaxed.
Stay relaxed, take your time, and build a quality product that people love to use. It may cost a little more up front, but if your time is money, it’s also an investment.


Why Workflow Is The Most Exciting .net 3.0 Technology
So we all have seen that .net 3.0 has come out, and probably most of us have at least heard of WPF and WCF and WWF and probably to a lesser extent WCS. They all are pretty cool technologies and in their own right but to me only one of them is really exciting; and that’s Windows Workflow Foundation.
Don’t get me wrong, graphics are nice … everyone loves graphics, hell look at how well Apple is doing pretty much just because of graphics. And who doesn’t love a good update to web services and great networking things. But for me, workflow represents a major advance in both human/human interaction as well as human/computer interaction. The others are also advanced, but for the most part they are really only advancing programming and the software industry.
Workflow is exciting not only to developers , or even users; it’s exciting to our species. Here’s why:
Computers are “perfect” … even though they are based on volt differences and human made hardware and not to mention buggy software … but in principle it’s pretty easy to see what’s going on and why; because we created them! They go through a set of instructions as fast as possible and give you a result.
Humans on the other hand are complex and may I even say unpredictable. Communication on its own is very hard between humans. To be able to convey complete understanding just doesn’t happen. There are so many chemicals and emotions and organs and brains that we just don’t “get”. But we do our best to understand and git-r-done.
When we make software, its often based on practically unreliable information that’s almost a guess at true meaning. To go beyond that, when we as humans tell the computer what we humans do, it becomes a nightmare. There are so many methodologies and frameworks and techniques out there that are supposed to help alleviate that problem. I think Workflow is not an end all solution, but it can help bridge that gap.
Lets say we as a human can understand what a set of humans do on a day to day basis. Now we need to create software to help them out. Instead of baking in some crazy business rules into our app and hoping to get it right, now we’ll just write a workflow that describes what the humans do. That workflow visually bridges the gap between the business type people (“users”) and the nerdy type people (“developers”). It comes with a great designer that is easy for anyone to understand. Then we’ll let the workflow engine take over and help guide the humans in their daily lives. If something is out of step between the workflow and the actual business process, all you have to do is call a meeting, rearrange some blocks and you’re good to go.
Now I wouldn’t say this is totally bridging the gap between programmers and computers and it probably isn’t trivial to create these workflows in the first place. It still requires a professional programmer to talk to computers. But when you think about how businesses operate, and you think about trying to optimize what you do, putting that directly into a language a computer can understand is amazing.
I can see the business type’s ears turning my way now. They know that when you can automate something with robots or machines you’re saving money. And if you can “automate” humans, you’re saving a lot of money while you fine tune your business processes that still require humans.
Windows Workflow Foundation may not get talked about a lot because it’s not very sexy to “us”. You know … internet people; developers and people that care about cool technology. But all I’m saying is if you want to make money by helping other people save money, you should at least check it out.


Apple This, iPhone That
What’s going on with all this hype over the iPhone, and even Apple in general? Every tiny whisper about Apple products hits the front page of Digg. Now, I like Apple, and I’ve owned two iPods, and I would probably get an iPhone if it were out. But why doesn’t Microsoft get this much attention?
I think Microsoft is a great company, and has great strategies in business. I think Apple is a great company, but has bad ideas about business.
Microsoft is not a hardware company; they only make mice, keyboards, game consoles, and portable music players. Apple is more; they want to control all hardware and software they put out. And on top of that they want to control the price too. They use barely legal MAPS programs to force retailers to charge a particular price. They don’t let a free-market decide the price, and they take the most profit.
While at first glance this sounds smart, because they make everything and control quality and they make the most money, it is not the case. What they don’t understand is, how key being a platform is. Microsoft understand this, and with every product they intentionally open up a marketplace for 3rd party’s to build on. Why this is key is because every time a 3rd party software vendor uses Microsoft products and platforms to make a product to sell, they also pay Microsoft.
Microsoft and Apple both want to lock you in as customers, but Microsoft only wants to lock you into their platform, not just them. Beyond Windows, think Windows Media Player and the different stores you can buy music from, think Visual Studio and all the add-ons you can buy, think Xbox360 with XNA that will let anyone create and sell games. Each of these products still give you choices on how to do things because they make it so people want to build on and extend their initial product. Apple says you will do things their way.
It’s a bold strategy, that even today doesn’t produce revenue levels even close to Microsoft’s.
This guy has some real numbers:
iPhone debate: I’m a Mac vs. Bill Gates

Why Programming Is Hard
I’ve been thinking about programming lately. I’m just finishing up an ORM that I built in .NET 2.0; now it is a component that I(and you) can re-use. This is now a library for object persistence that I can pull off the shelf for any project. That concept is cool to me: creating libraries and technologies that other people use as off the shelf products.
When you do that though you’re kind of hoping that someone else’s idea of what you need, and what you actually need are the same thing. And this is where I think programming is hard. Programming is not a generally well understood problem. What I mean by well understood is basically the difference between “yeah I kind of know what you mean” and “most everyone knows this.”
Things like bridges are well understood. You could teach a robot to build a bridge, heck even Lemmings can build bridges. Programming is more complicated. If you say “build me a bridge”: I know I need strong materials and I need to know the size, and that’s about it. But if you say “build me a login form”: I know I need some input, but what platform is it for, what languages can I use, what backend is there, what front end do you want, and you need to know all of these for the most basic thing.
Bridges, you can kind of do in your head; because it’s well known. Software, you really need to have a lot of communication of knowledge; and often communication can be hard and not so black and white. So a lot of what we’re building is just “yeah I kind of know what you mean” not “for certain, this is what you need.”
Just think about the difference between the login forms on ING Financial’s site, the login form on your favorite forum, and the login form for your last client/server app (did you use a webservice?). They’re the same, but totally different in every way.
And that’s why programming / software is still a science and is not an engineering field… yet! We are history in the making; some day, the “login form” will be well understood.
Why you may ask?
Let’s go back only 30 years. At this time there were only two styles of programming: functional and linear. Then a revolution called object oriented programming came out. This was something brand new and took a lot of people to understand it and define it. They wrote history.
I love that software is still a science and that we’re defining it every day.


New Website
I finally made a new website; and I'm only 6 months late! I think its worth the wait though. ;-)
What is this?Well basically this is professional me. It contains information about projects I've worked on, awards I've won, my thoughts on software/technology (in the form of a super spiffy [we]blog), and other things you may want to know about me.
My goal here is to have an online presense that showcases what I do. Hopefully that will lead to increased collaboration with colleagues, employment opportunities, business partnerships, and maybe even a good old fashioned pat on the back.
So, what about personal me?It's true that I used to have a lot of mixed content at this address. I used to host lots of pictures, my academic schedule, grades, and I even had an interactive webcam. But, those days are over now ... kind of.
Right now I have three domains that I want to run websites on. A portfolio site (this), a resume site, and a personal/family site. Only this one is available at this time (and to be honest, I haven't started the others).
Cool, anything else I should know?Not really ... I think it's pretty straight forward; if you don't think so, please feel free to contact me and we'll converse.
Happy New Year!
p.s. I still have a lot of content to get up, and only a little bit of display tweaking left here and there. I decided to launch without being at 100% because ... well ... uhh ... when is any website 100%? :-P
