IT Management
Saturday, August 29, 2015
Researcher Woes
Study: More Than Half of Psychological Results Can't Be Reproduced
http://science.slashdot.org/story/15/08/28/0228224/study-more-than-half-of-psychological-results-cant-be-reproduced
Found that headline interesting. As a researcher reading A-level publications, and working with A-level researchers to publish my own, I can understand why. Research involving people is tricky, and when you try to find "truth" using a sample, you are usually trying to prove some theory. If you work hard enough and long enough, you can make your sample line up with some theory, but I think many researchers are misleading themselves that they have definitely found truth in the process. I myself have tried to duplicate the research of others and gotten different answers. In my discipline, we hardly ever verify the work of others, and that is a problem. One problem is this, you can test a theory 100 times and have it fail each time and you can never publish it. If you get it to be more or less right just once, however, you can publish that paper. Thus, reality often gets buried behind the chance results. Also, the exceptional case result gets published, whereas the normal case likely does not because a non-finding isn't considered a finding worth publishing in most cases. The literature therefore gets distorted.
Friday, June 01, 2012
Software Frameworks, Good, Bad, or Otherwise?
Something I've been wondering about a little bit lately is if software frameworks are a bad thing. When I say frameworks, what I mean is a library of code that you plug into your software that 1. pushes you to use some consistent design (often based on one or more design patterns) and 2. Gives you some powerful code that makes many important tasks easier to accomplish.
Upsides:
Surprisingly I feel divided about using software frameworks. On the one hand if you use a software framework it is a sign of professionalism. If a person is applying for a job or if a 3rd party is doing IT work for you, it communicates a lot of good things about them if they advocate the use of and have experience in using software frameworks. It says that they are smart enough to leverage the work of others, it says that they understand and are addressing some important challenges that exist in the domain of work that they are engaged in, it says that they will create maintainable code that others will be able to work on. Based on these observations, you'd think it would be a shoe in that I would always use frameworks on my own projects and favor working with individuals that use them, but in actuality it doesn't always go that way.
Downsides:
This summer I've had some recruiting companies contact me about job openings. They were desperate. In one case I had several recruiters contact me about the exact same job at a particular company. The issue at hand was that they badly needed someone who knew not just a particular programming language, but a list of important libraries and frameworks. I consider myself aware of the top frameworks in many languages, but I hadn't heard of any of these. That in itself showed me that the company was backed against a wall in hiring somebody.
Recently I've been seeing two opposing trends. On the one hand I see on sites like dice.com that the job market for IT is almost as hot as during the .com bubble. On the other hand I hear from scores of people saying that the job market is so tough and they can't find a job in IT. Then I skim the open jobs and I frequently see the combination of skills that they are looking for and sometimes it makes me queasy. Many companies have clearly painted themselves into a corner with the skills that they need to maintain their current operations and move them forward. This situation is a a result of prior architectural decisions.
I've worked with key frameworks and managed people learning new frameworks. Even with people from top schools, learning a new framework and using it well can take 6-12 months in some cases. Then there is the issue of maintenance. Frameworks seem to regularly be pushing the bleeding edge, which can be a problem. It feels sometimes like the incentive system for framework developers is different than the incentive system for developers at a given business. Many businesses are looking to get the software job done as quickly, securely, in as organized a manner as possible, in a way that is easy to maintain going forward. Grabbing a tool like a framework seems like a perfect solution. But the thing is, a software framework may be trying to stuff in every new buzzword and feature that comes out as fast as it comes out. This means that you are constantly forced to upgrade your OS, your programming language, your 3rd party support libraries, etc. in order to run the newest version of that software. Your application's code base may be very stable and maintainable at first, but the things it relies on as a foundation are migrating underneath you.
One case in which this worked out badly was at one of the nation's biggest hospital networks. They adopted a language and a framework for their platform. But the new versions of the language and the framework weren't compatible with the older versions of the framework and language, even though both the language developers and framework developers fully intended them to be and had worked to that end. Tens, hundreds of thousands of dollars were spent trying to get the upgrades to happen but in the end the hospital had to stay stuck in the past. Nearly a decade goes by and who are they looking to hire? Developers who can use a framework that was the flavor of the week X number of years ago, but not the most recent version of the framework for which there is documentation, but an older one for which there isn't much around any more. All the modern features of that language you learned in school, sorry, that won't run in the old environment. The whole environment feels like a house of cards that you hope won't fall down.
One thing my mind tends to consider when I see very specific skills listed in job postings is how many people get winnowed out as a result of that list of features. If you just need a Java developer, or a php developer, or .Net then maybe 10-20% of all developers know one of those things and can operate at a proficient level in whatever you need them to do. You have hundreds, thousands, maybe even 10,000 developers in any given city that are ready and willing to do that work for you. But what if you decided to use a (flavor of the week) framework that only 1% or 5% of developers with that skillset know how to use? And then you add in one or two similar limiting factors that only 1 to 5% of people in that language would ever use? You're trying to find a needle in a haystack person to support a set of tools that modern minds wouldn't choose to use. And there you are.
That being said, I think the worst-case scenario a company could find itself in is to have a legacy environment that is falling apart at the seams that never had anything but cowboy coders with no architectural thoughts putting together the architecture. So I admit, there is an even worse case scenario. On the other hand, it is also possible to just stick to the core programming language and have as few 3rd party libraries as possible, along with some good design patterns, and you have a maintainable application with a readily available labor pool to apply to it.
In the end I'm stuck where I started. I think anyone who suggests using a framework is using sound, professional judgement. At the same time, they may strategically be painting your company into a corner that it may not want to be in 10 years later. What's your take on this?
Thursday, July 07, 2011
Apple is Cool. Apple is Lame.
It has been interesting to witness first hand the rise and fall and then rise again of Apple. Well, first hand from the perspective of a consumer (not an insider perspective). It is also interesting to reflect on my own changing feelings about this company and its products.
As a kid going through elementary school, the Apple 2E was as much a staple of public education as were the little white cartons of milk. At home people used Commodores and IBM PCs, but Apples ruled the academic environment. Apple was never really cool to me as a kid. Maybe it was because they offered so many educational games, and I just wanted regular games. Man, I played educational games on the Apple in elementary school, then I played similar games on the Apple in Jr. High. In high school I remember the weird kids started to own "Macs" that had graphical interfaces, but for some reason the kids who had them were the same kids whose parents drove Volvos and that enough was reason to avoid them.
In the years after the Mac it seemed like Apple sort of went down a spiral of death. They didn't offer any compelling products and it seemed like you could have bought the whole company for the same price as a bag of chips and a soda pop. Yes, Steve Jobs was out at that time.
Eventually Apple came back. The iPod seemed to give them mind share in the consumer realm, but for me the Nano is what sealed it. That was seriously the coolest thing since the Sony Walkman or the portable compact disk player. I still use my same 1st edition Nano every week. Steve Jobs was back, Apple was relevant, and I felt happy for them and genuinely rooted for them to be successful. This was probably the pinnacle of my appreciation for Apple.
In recent years I've tried to play in the garden that is Apple, and as of today I'm getting really sick of getting stuck with all the thorns. After hearing how cool the iPhone was for years, I bought an iPod touch a year or two ago. Seemed like an ideal video and gaming device. The problem was, I bought a first generation touch. The first time I updated it's software, all of the old software that was on it was no longer available in a compatible version online. I had a bunch of money ready to spend in their app market, but every time an app maker made any change to their app, they had to re-release it in only the latest software compatibility. This meant that every day all the good apps were being changed from compatible to non-compatible. My only real choice would be to spend several hundred dollars to have the exact same device that I already have, something that I'm not very fond of. It smacks of a way to squeeze me for money, and I don't like that. On a side note, I have found the conversion process from regular videos to Apple device video format to be cumbersome and annoying.
In recent years the iPad has become all the rage, and admittedly it is a very cool device. As a contract software developer and as a college instructor, I have felt some motivation to brush up on my skills. A few months ago I jumped online figuring I could just download a free software development kit for a Windows computer. Nope. And so I waited until the opportunity came up for me to acquire a Mac, something I had never owned before. Everybody and their dog has one, so it seemed kind of cool to join the crowd. Also, I love the fact that Unix underlies their current system and I've long been a user of Unix-based systems as a software developer.
At this point, let me remind you that all I want to do is make a little sample application to see how it works. For almost any platform on earth, this is usually about an hour or two of time invested. Well, I got a Mac from my sister with a dead hard drive. The system is about 5 years old. Replacing a hard drive in a PowerBook is nothing like replacing a hard drive in Windows laptops. In a windows laptop, I pop two screws, pop in a new drive as if it were a VHS tape and I'm done. The PowerBook process was a pain. Had to disassemble the entire thing, as if I were needing to work on the motherboard itself. One thing I will say is I like how they have everything packed in in there to keep things quiet when the system runs and is moved around. On the downside, I had to get a special hard drive.
So once the hard drive was in, I used the system restore disk. No matter how many times I went through the menu to format the hard drive, the installation software said the drive wasn't usable. Thankfully I saw a post online that says that once you format the drive and see that the drive isn't usable, reboot the computer and start again (oh man, after all my years as a developer I should have seen that one coming). Sure enough, after nearly freaking out it worked.
So then I go online to get the software that I expect to be free and it says "join the developer program for $100 for the year and get access to the developer tools." Fortunately I found another option that said for $5.00 or something I can get just the development kit.
Before plunking down the dough, however, I decide to check out the tutorials. Except, I can't see the tutorials. In fact, I can't see most of the relevant content in the developer website. I can see it from my Windows PC, but not from my Mac running Safari. So I do some digging and it turns out my operating system won't run a newer version of Safari (which I'm guessing will solve my page view problems). It also turns out that I can't use the iPod/iPad software with my current version of OS X. What this means is that I have to spend 30 dollars, so they can send me a box in the mail, so I can install a never version of OS X, and then I can see if I can view pages on their website with a new version of their web browser and then I can download and install the mobile development kit. One thing that makes me uneasy is that their next version of their operating system is already being advertised but isn't available yet. I already feel like I'm up against that outdated device/software issue that I ran into with the iPod touch.
If I go outside of my desire to just write a test application for me to play with, and consider how I could ever teach this in a computer lab at school, I don't know what I'd do. I mean, I'm at one of the largest universities in the United States and there are only three published places on campus that you can even get access to Macs. Add to that the fact that Objective-C (which nobody teaches) is the language of choice for their platform, and I feel that they really aren't doing anything to help fans develop for their platforms.
In contrast, I did a Google search and within a minute saw that Android apps can be developed by using Eclipse. So basically, I can be up and running within 20 minutes on all major operating systems. Add to that the fact that the development language is Java (and everyone learns Java or its child C#) and you have something really easy to get into. Add to that the fact that more phones run Android than anything else, and I think I see a vision of the future starting to unfold. We shall see.
Thursday, May 26, 2011
The coming changes in operating systems and computers
I saw this ad today on drudgereport. Awesome, it makes you want to strap up and go take down some bad guys--and make 65K! I love living in a country where there are so many good options for work. Looking at the guy in this ad, he looks like an athlete. This ad also reminds me of a Beevis and Butthead episode in which the military recruiter plays a video with a voice over that sounds like it came from a monster truck rally and the scenes show soldiers driving tanks and blowing stuff up. The guy asks Beevis and Butthead if they are in....as if he had to ask.On another topic, I'm pretty amazed at what is unfolding in the software market related to operating systems. You wouldn't think that anything could take down Microsoft, but they seem to have fumbled away their cash cows, or are in the midst of doing so. Think about it, what stinks about computers? Key issues include the following: they take more than 5 seconds to boot (unacceptable), they progressively download patches and over time become so slow they are unusable (unacceptable), and they store data locally and your hard drive--which is the most likely component on any computer to fail when something does eventually fail. Despite these obvious areas for improvement, the big guns out there have overlooked these issues for years.
Now I see two interesting things happening. I see Google making an operating system that boots in seconds. Doesn't that make sense? I mean, my computer is practically just a television set anyway. I basically type up Word documents and browse on the internet for text-data and sometimes watch something streaming like Netflix or Youtube. Why shouldn't a device that handles those tasks 99% of the time boot fast? Second, I'm surprised at how good the Chrome browser is becoming. I tested out some game on it called Ultima, and it performed better than many of the best PC games over the last 10 years, suggesting that browser-based programming could be ready to do a lot of what we expect out of our PC-based applications. I also played a free version of angry birds, suggesting that this browser could be used instead of Apple app store products in the near future. The latest version of Google Docs has a word processor that now looks and feels like Word. Awesome. Here is my last thought. The other day I was at someone's house and their kids were relaxing on the couch, watching a netflix movie on their ipad. The next day I thought: what if that were a chrome-pad? Can you imagine that, a 5 second boot device that handles all of your computing tasks and saves your info on the web, and which is very handy to carry around? Wow. With the likelihood of chrome apps becoming like the Apple app store, man, the future is exciting. Meanwhile, my Windows-based computers boot about a half-second slower and run a little slower every day I use them.
Saturday, May 07, 2011
Trying out Ubuntu Linux to Replace Windows
I have a love/hate relationship with computers. I love all of the entertainment and productivity benefits they bring to me. I love the creative outlet they are in terms of what I can do with programming languages. I hate them, however, for all the ways they can be lame: slow boot times, degrading performance over time, susceptibility to viruses, endless updates, etc. Despite the fact that I have passed many computer-related certifications, have spent the majority of my career running computers in data centers and at home, I still find that there are nearly unsolvable and annoying problems that crop up constantly.
One thing that really drove me nuts recently was licensing issues with Microsoft Windows. My sister in law had a computer that had a virus problem and so I wiped her computer and re-installed windows. Because she had moved she had lost her original Windows system disks. No worries, I have stacks of those things for every operating system they've ever had. I also have stacks of license keys for computers that all had died previously. In one case I had a laptop I bought off ebay that I purchased a new operating system for, and the laptop died after using it once. Not that it should matter, this computer that I was re-installing had its own license key taped to it, like most computers do. Well, to make a long story short, I tried installing every unused Windows XP license I had with this computer, including the one on the computer itself, and none of them worked. I tried calling the number it said to call and it wouldn't go through. So basically I was high and dry.
A couple months later it occurred to me I could try Linux. I'd always used and managed computers for work the were Linux, but never tried it on a home desktop. For whatever reason I opted to try Ubuntu because I heard that it was good for home use. I don't like the name much, it sounds like it would be the African name for a banana or something. Regardless of that minor qualm, I downloaded the install file, created an install DVD, and then booted the computer with the disk in and everything went smoothly from there on out. I let my kids use it to browse the internet for a couple of months.
Then my wife needed a replacement computer one day as her Windows computer was just dog slow. I decided to try and see if the Ubuntu Linux computer I set up for the kids would do the trick. I plugged in my HP Laserjet printer, and up popped a message asking if I'd like to install the driver for it. Flawless. I used a usb stick to copy over some Word files I had been using. They opened up flawlessly in OpenOffice Word that came with Ubuntu, and they printed out just fine. Then I checked and saw that dropbox was available for Ubuntu linux, so installed that too without a hitch and now all the same files that are on my Windows computers are also on this one, and all the updates are backed up and distributed to all computers automatically. Of course, my wife still complained "where is my chrome browser?" I said, can't you just use Firefox? Well, I lost that battle like every other but no worries, there was a quick and easy install available for Chrome.
One thing I like about this current set up is that everything runs fast, even though this computer is older than father time. I love that. The office applications all open up much faster than they do on Windows.
Well, gotta run, just got asked to help my wife again, this time in the kitchen.
Thursday, April 21, 2011
Got to hear The Woz speak
Steve Wozniak stopped by ASU yesterday because of a connection between he and the mentor of the ASU entrepreneurs club.
Even though there were several hundred people in attendance, I liked the relaxed nature of the event as everyone filed in. You almost felt like it was a high school group of students, by the way they dressed, and Steve seemed like some nice teacher guy hanging out in the room and was very approachable. Very non-pretentious. I love that about techie-people in general.
He told the brief story of his life from his youth through his present time, with lots of inspirational milestones. I wondered how many times he had told that same story. As an instructor at a university, I get bored doing the same lecture twice in a row for two sections, I can't imagine telling the same story hundreds upon hundreds of times, maybe even thousands of times, and still be cheery and enthusiastic about it.
Some of the things that stood out were these:
-At 9 years old he goofed around with basic electronics. He explained that his first stuff was so simple, anyone could do it, and although I don't recall the exact details, I remember that it really was simple stuff that all of us can do and he was right in presenting it that way. He used that knowledge to have fun with his friends. The key thing was that by always having fun with things and trying to make the next cool thing in a very incremental way, he went from very ordinary knowledge to extraordinary, but the way he explained it made it seem achievable by anyone--just be curious and work on projects for yourself and not for some boss.
-He had a high IQ, but his parents never told him, never had him skip classes or anything. He said he was grateful that he never knew and got to grow up like any other kid. How many parents would do that today? I think this is an interesting choice, because top schools these days push so hard to have students learn as much as possible as fast as possible about things everyone else has already learned, and it takes away the intellectual breathing space to have fun and explore new knowledge. For example, if you have an Internet development course that is so rigorous that the student has no free time (along with other disciplines that take themselves very seriously), there is no chance for students to build stuff that interests them on the side. You have to have some slack time for goofing off and having fun.
-He only applied to one school. He went to Colorado on a trip, liked the snow, and only applied there. But he only attended one year, because his parents didn't have enough money. So he returned home to work for a year. Saved up, went to another year of school. Then worked for a year, and went to another year of school (each time at more local, less expensive schools). It blew me away to read in his bio that he actually started Apple, invented the personal computer, and then stopped working and went back to school a number of years later to finish the final year of his degree. Who does that?
-After making it big, he saw that people working under him hadn't been offered stock options, so he gave them millions from his own funds because he thought it was the fair and decent thing to do.
-He is a joker, and throughout his life pulled a lot of pranks on people, all in good nature. He used his technology skills in particular to mess with people, such as making tv interference broadcasters that he would use to make people repeatedly bang on televisions to make the reception come back in and have it appear that it was doing the trick to bang on the tv.
If I were to sum up what I think would be applicable to my life from what he said, it would be that we should have fun with what we do, compete with ourselves to do better than our last task and not compete with others, not be afraid to read anything that will help us do better with our hobbies, be passionate about our own personal projects, be true to ourselves and be willing to do things like give 10 years to teaching in grade schools and high schools, and live with a clear conscience because we are always honest in our dealings with others. Better to be broke and smiling than wealthy and have regrets.
Wednesday, February 24, 2010
Video Games in Education
I caught this article recently on my school's website and it really grabbed my attention and imagination. Despite being a video game fan, I am generally skeptical of claims that video games can add value in ways that educate. However, I am familiar with the immersive concept of "flow", and understand how that phenomenon helps people bury days, weeks, and months into a game and not really know where all the time has gone.
The question is, can that experience be combined with education. After reading over this article, I am tempted to say yes. Let me think first about some of the games that try to educate. I think Oregon Trail provides some history education. I also remember as a kid playing stock trading games. My kids recently downloaded some free math-solving business games that were really well done. So I have seen many attempts at this kind of thing in the past. To a limited extent, I think they succeed, but they tend to lack the immersive quality that many games offer, such as the original legend of Zelda or many of the online games right now such as World of Warcraft (although I haven't played that personally). This article refers to a law game that regularly provides new challenges as a way to make it a more lasting experience. There was also discussion of problem solving ahead of memorization, and constantly escalating the difficulty level. This got me thinking about the challenges I have faced in education at a high level. I often find it difficult to find the right starting point for some things (perhaps years of mathematics or statistics are required to understand something I would like to know more about). Also, mentorships are often needed to truly understand things well. But what if games allowed a person to legitimately work by themselves and yet grow from a novice to an expert in a given area, by providing virtual worlds in which people advance from one learning challenge to another, and perhaps even interacting with others? For example, what if you were playing a stats game that felt more like a spy movie, in which terrorists were using computer networks to send messages and you had to solve increasingly difficult applied tasks that required you to learn incrementally some skill that the game's static resources (virtual libraries, etc.) as well as community members could provide. Or another example, what if the topic were physics, and the game is based on ancient Greece and you are fighting different groups and your success or failure is based on learning basic skills, and the tasks got harder and harder.
Here would be my thoughts on essential components for these types of games:
-Incremental in challenges
-Social Media enabled (virtual community like Second Life)
-You can go places (wander around like Second Life or World of Warcraft)
-The game is modifiable (everyone in the world can contribute content--challenges, graphics, game maps)
Subscribe to:
Posts (Atom)