I’ve gone on record saying that whilst the cloud won’t kill the IT admin there is a very real (and highly likely) possibility that the skills required to be a general IT administrator will change significantly over the next decade. Realistically this is no different from any other 10 year span in technology as you’d struggle to find many skills that were as relevant today as they were 10 years ago. Still the cloud does represent some fairly unique paradigm shifts and challenges to regular IT admins, some of which will require significant investment in re-skilling in order to stay relevant in a cloud augmented future.
The most important skill that IT admins will need to develop is their skills in programming. Now most IT admins have some level of experience with this already, usually with automation scripts based in VBScript, PowerShell or even (shudder) batch. Whilst these provide some of the necessary foundations for working in a cloud future they’re not the greatest for developing (or customizing) production level programs that will be used on a daily basis. The best option then is to learn some kind of formal programming language, preferably one that has reference libraries for all cloud platforms. My personal bias would be towards C# (and should be yours if your platform is Microsoft) as it’s a great language and you get the world’s best development environment to work in: Visual Studio.
IT admins should also look to gaining a deep understanding of virtualization concepts, principles and implementations as these are what underpins nearly all cloud services today. Failing to understand these concepts means that you won’t be able to take advantage of many of the benefits that a cloud platform can provide as they function very differently to the traditional 3 tier application model.
The best way to explain this is to use Microsoft’s Azure platform as an example. Whilst you can still get the 3 tier paradigm working in the Azure environment (using a Web Role, Worker Role and SQL Azure) this negates the benefits of using things like Azure Table Storage, Blob Storage and Azure Cache. The difference comes down to having to manually scale an application like you would do normally instead of enabling the application to scale itself in response to demand. In essence there’s another level of autonomy you take advantage of, one that makes capacity planning a thing of the past¹.
It’s also worth your time to develop a lot of product knowledge in the area of cloud services. As I mentioned in my previous blog cloud services are extremely good at some things and wildly inappropriate for others. However in my experience most cloud initiatives attempt to be too ambitious, looking to migrate as many services into the cloud as possible whether there are benefits to be had or not. It’s your job then to advise management as to where cloud services will be most appropriate and you can’t do this without a deep knowledge of the products on offer. A good rule of thumb is that cloud services are great at replacing commodity services (email, ERP, CRM etc.) but aren’t so great at replacing custom systems or commodity systems that have had heavy modifications to them. Still it’s worth researching the options out there to ensure you know how the cloud provider’s capabilities match up with your requirements, hopefully prior to attempting to implement them.
This is by no means an exhaustive list and realistically your strategy will have to be custom made to your company and your potential career path. However I do believe that investing in the skills I mentioned above will give you a good footing for transition from just a regular IT admin to a cloud admin. For me I find it exciting as whilst I don’t believe the cloud will overtake anything and everything in the corporate IT environment it will provide us with some amazing new capabilities.
¹Well technically it just moves the problem from you to the cloud service provider. There’s still some capacity planning to be done on your end although it comes down financial rather than computational, so that’s usually left to the finance department of your organisation. They’re traditionally much better at financial planning than IT admins are at capacity planning.
It’s no secret that I’m not a big fan of DLC. Whilst there are many games that I enjoy going back to it’s not usually because there’s a sliver more of content available for them, it’s because the games themselves warranted it. The trend now however is to continue to release bite sized chunks of additional game play after it’s been released rather than the more traditional model of expansion packs which delivered what amounted to a game in its own right. Still there have been some notable exceptions like the recent Deus Ex: Human Revolution Missing Link DLC which I’ve heard is quite lengthy and well worth the play through (I’ve still yet to play it, though). What irks me, and most gamers, is when a company releases DLC on the same day that they release the full game and an upcoming release has brought this issue to the table once again.
My first encounter with day one DLC wasn’t that long ago, it was with Dragon Age: Origins. I was a fair way through the game, not completely understanding the camp mechanic, when I saw a new character appear. Starting the conversation with them led to a quest (like it almost always does) but before he would accept it I was told that I’d need to pony up the cash to play it. Since the quest didn’t appear necessary and I had little interest in paying another $10 for a game I had just bought I left the optional DLC by the wayside and never looked back. Since then I’ve had several encounters with games that have had day one or close to it DLC and every time my reaction has been the same.
There is one exception though. Since my tendency is to buy the collector’s edition of games I’m usually treated to a free ride for most early DLC. This hasn’t changed my opinion on it though and in fact my experience with such DLC has reinforced my original stance that of if the game developers have time to develop early DLC then it should probably be included as part of the game. One of my all time favourite games will soon be releasing a sequel however and the outrage from the day one DLC has revealed that my current position might be somewhat ill informed.
The game in question is Mass Effect 3. Long time readers will know that my fanboyism for this game approaches near ridiculous levels: I bought a Xbox360 just to play it (I’ve bought other games for it, but make no mistake that Xbox360 was there for one reason only), I’ve got multiple characters and each time I’ve bought the collector’s edition. Had I done a Game of the Year post for 2010 it is quite likely that Mass Effect 2 would have come out on top. What I didn’t mention at the time was that there was some day one DLC included and whilst I did play it I didn’t feel like it added anything (nor distracted from) to the main core of the game. Indeed it could have been left out entirely and I wouldn’t have noticed a difference.
It has been revealed that Mass Effect 3 will have day one DLC, free to collectors and charged to everyone else. This put the community up in arms with many (myself included) wondering why this wasn’t part of the core game. Bioware came out and defended it fervently and revealed a point that I hadn’t really considered. The certification process for consoles is a long one, filled with all sorts of radical testing like clicking buttons thousands of times to ensure most of the bugs have been stamped out. This takes approximately 3 months and during that time many publishers elect to have the developers work on DLC rather than move them onto other projects (or do nothing at all). Since there’s less certification required to release DLC you then end up with a finished DLC product right on release day, much to the dismay of the fans.
That’s changed my view on day one DLC significantly, but it probably won’t change my purchasing patterns. Indeed I can understand why people are particularly frustrated about this particular DLC, it seems like a particular character (who’s previously appeared in the series) will only be available through it. That’s enough to put some people off it and I wouldn’t be too happy with somewhat plot critical elements being thrown into paid for DLC either. If it wasn’t included in the collector’s edition I certainly wouldn’t be bothered with it and my review later would reflect that.
For this case at least it looks like day one DLC didn’t come at the cost of the game itself but the gaming community is going to have a hard time swallowing that line from every publisher. It might then be worth delaying DLC to some time after the initial release in order to avoid this kind of negative publicity. Still I don’t have the numbers on this and if day one DLC works financially then you can bet on seeing more games with it in the future. I may not support it financially but so long as the core game isn’t affected by it I won’t say anything bad about it, but if said DLC does impact on the game you can rest assured I’ll give them a thorough panning on here.
The idea behind Kickstarter is a great one: you’ve got an idea and you’ve got the fixins of a potential business going but the financial barrier of bringing it to market are keeping you from seeing it through. So you whip up a project on there, promise people rewards or (more commonly) the actual product you’re intending to sell and then wait for backers to pledge some cash to you. For the backers as well its great as if the project doesn’t get fully funded then no one has to donate any money, so your potential risk exposure is limited. Of course Kickstarter take their slice of the action, to the tune of 5% (plus another 3~5% for the payment processing) so everyone comes out a winner.
It’s a disruptive service, there’s no denying that. There are many products that wouldn’t have made it through a traditional venture capital process that have become wild successes thanks to Kickstarter. This of course gets people thinking about how those traditional systems are no longer needed, I mean who needs venture capitalists when I can get my customers to fund my project? Well whilst I’d love to believe that all we need for funding is crowdsourcing tools like Kickstarter I can’t help but notice the pattern of most of the successful endeavours on there.
They’re all done by people who were already successful in the traditional business world.
Take for instance the latest poster child for the success of Kickstarter: The Double Fine Adventure. For gamers the Double Fine name (and the man behind it, Tim Schafer) is a recognizable one, having worked on such cult classics as The Secret of Monkey Island, Grim Fandango and releasing others such as Psychonauts and Brutal Legend. Needless to say he’s quite well known and made his name in the traditional game developer/publisher world. Kickstarter has allowed him to cut the publishers out of this particular project, putting more cash in his pocket and allowing him total control of it, but could someone without that kind of brand recognition pull off the same level of success?
The answer is no.
For all the successes that are seen through Kickstarter only 44 percent of them will ever actually get the funding they require. Indeed in the Video Games category the highest funded game (there are a lot of projects in there that aren’t exactly games) before the Double Fine Adventure managed about $72,000. Sure it’s nothing to sneeze at, it was almost 6 times what they needed, but it does show the disparity between relative nobodies attempting a to crowdfund a project and when a well known person attempts the same thing. Sure there are the few breakout successes, but for the majority of large funding successes you’ll usually see someone who’s already known in that area involved somehow.
Now I don’t believe this is a bad thing, it’s just the way the process works. Nothing has really changed here, except the judgement call is shifted from the venture capitalists to the wider public, and as such many of the same factors influence if, when and how you get funded. Name recognition is a massive part of that, I mean just take a look at things like Color that managed to pull in a massive $41 million in funding before it had even got a viable product off the ground just because of the team of people that were behind the idea. Kickstarter doesn’t change this process at all, it’s just made it more visible to everyone.
Does this mean I think you should keep away from Kickstarter? Hell no, if you’ve got a potential product idea and want to see if there’s some kind of market for it Kickstarter projects, even if they’re not successful, are a great way of seeing just how much demand is out there. If your idea resonates with the wider market then you’re guaranteed a whole bunch of free publicity, much more than what you’d get if you just approached a bank for a business loan. Just be aware of what Kickstarter does and does not do differently to traditional ways of doing business and don’t get caught up in the hype that so often surrounds it.
When I first started hearing about achievement systems I honestly thought they were a total waste of time. I usually play games just for the sake of playing them, not because I want to have some kind of meta-performance tracker that I can show off to my friends. I did start to warm to them when the encouraged novel or interesting kinds of game play like many of the achievements in Team Fortress 2 did. It wasn’t long after achievements caught on that the whole gamification movement took hold and all new start ups started adding game features to their products.
Now I wasn’t immune to this either. When I was working on Lobaco I thought it would be a great idea to add in some achievements in order to encourage people to participate in local discussions. Indeed I was going to take it a couple steps further and have things like local leader boards and titles based on your overall score in a particular area. All of these things were done in the name of increasing user engagement as many studies and successful start ups have shown that game like elements keep people coming back. Of course everyone then saw it as the panacea to their ills and game elements started appearing in places that they really shouldn’t.
I came across one such example this morning in my usual troll for blog fodder. Microsoft, for some strange reason, decided to code up an achievement system for Visual Studio, their flagship development environment. It looks to be an extension to Visual Studio itself and currently only works if you’re coding with Visual Basic or C# (arguably the most common languages though). There’s dozens of achievements already in there and even a leaderboard of the top 15 people who’ve gained the most achievements. Taken at face value I can see this being a good thing by encouraging good programming habits through achievements.
Microsoft’s implementation is anything but that.
Many of the achievements are either pointless, inane or actively encourage bad coding habits. 50 projects in a solution? A class that has every kind of scope in it? I can foresee situations where these things might happen (but they still shouldn’t) and it begs the question as to why these were added in. The flip side of this is people creating one shot projects in order to get these achievements (which everyone on the leaderboard has done) which makes the achievements even more meaningless. Indeed the whole idea just seems like a poorly thought out attempt at getting into the gamification scene, one that will be rightly ignored by most proper developers.
Just like in Lobaco where adding in game elements didn’t make complete sense (at least not at the great expense of other features, which it did) there are many times where the gamification of something just plain won’t work. If the core of your idea is based around a game idea then it probably makes sense to include achievements. If it does not then realistically you shouldn’t be adding them in until you’ve done everything else possible to deliver a good product/service to your end users. Attempting to keep people interested with cheap tricks like gamification won’t work if the underlying product has no redeeming value, nor if the core use of the product isn’t a game mechanic itself. The sooner people realise this the better as the spread of crappy, tacked on game mechanics is really not doing anyone any favours.
One of my most hotly anticipated games for this year, and I know I’m not alone in this, will be Blizzard’s Diablo III. I can remember the days of the original Diablo, forging my way down into the bowels of the abandoned church and almost leaping out of my chair when the butcher growled “Aaaahhh, fresh meat!” when I grew close to him. I then went online, firing up my 33K modem (yes, that’s all I had back then) and hitting up the then fledgling Battle.Net only to be overwhelmed by other players who gifted me with unimaginable loot. I even went as far as to buy the only official expansion, Hellfire, and play that to its fullest revelling in the extended Diablo universe.
Diablo II was a completely different experience, one that was far more social for me than its predecessor. I can remember many LANs dedicated to simply creating new characters and seeing how far we could get with them before we got bored. The captivation was turned up to a whole new level however with many of us running dungeons continuously in order to get that last set item or hoping for that extremely rare drop. The expansion pack served to keep us playing for many years after the games release and I still have friends telling me of how they’ve spun it back up again just for the sheer thrill of it.
Amongst all this is one constant: the torturous strain that we put on our poor computer mice. The Diablo series can be played almost entirely using the mouse thanks to the way the game was designed, although you do still need the keyboard especially at higher difficulties. In that regard it seemed like the Diablo series was destined to PC and PC only forever more. Indeed even though Blizzard had experimented with the wild idea of putting StarCraft on the Nintendo64 they did not attempt the same thing with the Diablo series. That is up until now.
Today there are multiple sources reporting that Diablo III will indeed be coming to consoles. As Kotaku points out the writing has been on the wall for quite some time about this but today is the day when everyone has started to pay attention to the idea. Now I don’t think there’s anything about the Diablo gameplay that would prevent it from being good on a console, as opposed to StarCraft (which would be unplayable, as is any RTS on a console). Indeed the simple interface of Diablo’s past would easily lend itself well to the limited input space of the controller with few UI changes needed. What concerns most people though is the possibility that Diablo III could become consolized, ruining the experience for PC gamers.
Considering that we’re already got a beta version of Diablo III on PC it’s a safe bet that the primary platform will be the PC. Blizzard also has a staunch commitment to not launching games until their done and you can bet that if there were any hints of consolization in one of their flagship titles it’d be picked up in beta testing long before it became a retail product. Diablo III coming to consoles is a sign of the times that PC gaming is still somewhat of a minority and even titles that have their roots firmly in the PC platform still need to consider a cross platform release.
Does this mean I’ll play Diablo III on one of my consoles? I must say that I’m definitely curious but I’ve already put in my pre-order for the collector’s edition of Diablo III on the PC. Due to the tie in with Battle.Net it’s entirely possible that buying it on one platform will gain you access to another via a digital download (something Blizzard has embraced wholeheartedly) and I can definitely see myself trying it out just for comparison. For me though the PC platform will always be my primary means by which I game and I can’t deny my mouse the torturous joy that comes from a good old fashioned Diablo session.
My post last week about the trials and tribulations of sorting ones media collection struck a chord with a lot of my friends. Like me they’d been doing this sort of thing for decades and the fact that none of us had any kind of sense to our sorting systems (apart from the common thread of “just leave it where it lies”) came at something of a surprise. I mean just taking the desk I’m sitting at right now for an example it’s clear of everything bar computer equipment and the stuff I bring in with me every day. The fact that this kind of organization doesn’t extend to our file systems means that we either simply don’t care enough or that it’s just too bothersome to get things sorted. Whilst I can’t change the former I decided I could do something about the latter.
So my quest last week proving fruitless I set about developing a program that could sort media based on a couple cues derived from the files themselves. Now for the most part media files have a few clues as to what they actually are. For the more organized of us the top level folder will contain the episode name but since mine was all over the place I figured it couldn’t be trusted. Instead I figured that the file name would be semi-reliable based on a cursory glance at my media folder and that most of them were single strings delimited with only a few characters. Additionally the identifier for season and episode number is usually pretty standard (S01E01, 2×01,1008, etc) so that pulling the season out of them would be relatively easy. What I was missing was something to verify that I was looking in the right place and that’s where I TheTVDB comes in.
The TV Database is like IMDB for TV shows except that it’s all community driven. Also unlike IMDB they have a really nice API that someone has wrapped up in a nice C# library that I could just import straight into my project. What I use this for is a kind of fuzzy matching filter for TV show names so that I can generate a folder with the correct name. At this point I could also probably rename the files with the right name (if I was so inclined) but for the point of making the tool simple I opted not to do this (at this point). With that under my belt I started on the really hard stuff: figuring out how to sort the damn files.
Now I could have cracked open the source of some other renaming programs to see how they did it but I figured out a half decent process after pondering the idea for a short while. It’s a multi-stage process that makes a few assumptions but seems to work well for my test data. First I take the file name and split it up based on common delimiters used in media files. Then I build up a search string using those broken up names stopping when I hit a string that matches a season/episode identifier. I then add that into a list of search terms to query for later, checking first to see if it’s already added. If it’s already in there I then add the file path into another list for that specific search term, so that I know that all files under that search term belong to the same series. Finally I create the new file location string and then present this all to the user, which ends up looking like this:
The view you see here is just a straight up data table of the list of files that Sortilio has found and identified as media (basically anything with the extension .avi or .mkv currently) and the confidence level it has in its ability to sort said media. Green means that in the search for the series name it only found one match, so it’s a pretty good assumption that it’s got it right. Yellow means that when I was doing a search for that particular title I got multiple responses back from TheTVDB so the confidence in the result is a little lower. Right now all I do is take the first response and use that for verification which has served me well with the test data, but I can easily see how that could go wrong. Red means I couldn’t find any match at all (you can see what terms I was searching for in the debug log) and everything marked like that will end up in one giant “Unsorted” folder for manual processing. Once you hit the sort button it will perform the move operations, and suffice to say, it works pretty darn well:
Of course it’s your standard hacked-together-over-the-weekend type deal with a lot of not quite necessary but really nice to have features left out. For starters there’s no way to tell it that a file belongs to a certain series (like if something is misspelled) or if it picks the wrong series to tell it to pick another. Eventually I’m planning to make it so you can click on the items and change the series, along with a nice dialog box to search for new ones should it not get it right. This means you might want to do this on a small subset of your media each time (another thing I can code in) as otherwise you might get files ending up in strange folders.
Also lacking is any kind of options page where you can specify things like other extensions, regex expressions for season/episode matching and a whole host of other preferences that are currently hard coded in. These things are nice to have but take forever to get right so they’ll eventually make their way into another revision but for now you’re stuck with the way I think things should be done. Granted I believe they’ll work for the majority of people out there, but I won’t blame you if you wait for the next release.
Finally the code will eventually be open sourced once I get it to a point where I’m not so embarrassed by it. If you really want to know what I did in the ~400 odd lines that constitute this program then shoot me an email/twitter and I’ll send the source code to you. Realistically any half decent programmer could come up with this in half the amount of time I did so I can’t imagine anyone will need it yet, unless you really need to save 3 hours
So without further ado, Sortilio can be had here. Download it, unleash it on your media files and let me know how it works for you. Comments, questions, bugs and feature requests can be left here as a comment, an @ message on Twitter or you can email me on email@example.com.
Cross platform development is one of those things that I’ve seen done dozens of times before but rarely do I see anyone get it right. I understand the allure of doing so, heck my most creative forms of procrastination came from experimenting with these ideas, but the fact remains that more often than not they’re going to be a total waste of your time. I do have one exception to this rule however and that comes in the form of the cross-platform game engine Unity. Where other libraries promise compatibility and a wide range of functions Unity actually delivers on these with little compromise. Couple that with their ridiculously good pricing model and awesome dev environment and it’s hard to fault the product. Indeed all the shortcomings I found were, as far as I could tell, limitations of my programming expertise.
For games developers Unity offers the chance to have one code base for all platforms with only minor tweaking required once you want to deploy the project to your chosen platform. This is great because initially you can focus on one platform and then once you’ve verified your product there it doesn’t take much to port it to the new platform. It’s no surprise then that you’ll find many Unity based games in both the Apple and Android app stores. Figuring that Unity was going for all round platform domination I thought it was only a matter of time before I saw that the library would support Windows Phone 7, even though it’s still in its nascent stages.
As it turns out however that won’t be happening:
The Unity engine does not support Windows Phone 7 because of restrictions placed on Microsoft’s mobile, the CEO of Unity Technologies has said.
“But we’re looking at Windows Phone 8 and hopefully it will be easier to work on that system,” he said.
In an interview with Develop, to be published soon, Helgason explained Windows Phone 7 “is a relatively closed system so you can’t run native content, which means we can’t really support it”.
The “closed” nature that David Helgason (CEO of Unity) is referring to is the fact that if you want to put a game on the Windows Phone 7 platform you need to have coded it in either Silverlight or Microsoft’s XNA framework. Unity then approached Microsoft to see if they could get an exemption from this rule (as well as access to some private APIs which would be required for their libraries to work) however Microsoft turned them down. This means that Unity and all the games built on top of it are banned from being released on this platform, save for a full rewrite of the code. In response Unity has turned their sites towards Windows 8 which will be a lot more friendly for them thanks to the WinRT framework.
This feels like a pretty big misstep from Microsoft. Windows Phone 7 hasn’t been gaining any momentum and it’s overall smart phone market share (that includes Windows Mobile devices) has been taking quite the battering dropping to a low of 1.6%. Whilst I won’t go as far to say that Unity would be its saving grace it definitely wouldn’t hurt to have that available as an option for games developers looking to develop for the Windows Phone 7 platform. Indeed since Unity supports coding in C# I’d hazard a guess that there would be quite a few who’d be willing to give it a shot just because it would be easy for them to learn. Heck I know I did.
In reality Windows Phone 7 has a lot of other hurdle to overcome before it can be considered a serious competitor in the market but Microsoft can’t afford to throw away any potential advantage it can get. Not working with Unity only serves to damage the Windows Phone 7 platform as it has demonstrated success on every platform it’s available on. Unity developers then may have to wait for Windows 8 and the corresponding Windows Phone release before they can think about coming across onto Microsoft’s platform but I feel that may be too far off, and the damage has already been done.
The computer (or whatever Internet capable device you happen to be viewing this on) is made up of various electronic components. For the most part these are semiconductors, devices which allow the flow of electricity but don’t do it readily, but there’s also a lot of supporting electronics that are what we call fundamental components of electronics. As almost any electrical enthusiast will tell you there are 3 such components: the resistor, capacitor and inductor each of them with their own set of properties that makes them useful in electronic circuits. There’s been speculation of a 4th fundamental component for about 40 years but before I talk about that I’ll need to give you a quick run down on what the current fundamentals properties are.
The resistor is the simplest of the lot, all it does is impede the flow of electricity. They’re quite simple devices, usually a small brown package banded by 4 or more colours which denotes just how resistive it actually is. Resistors are often used as current limiters as the amount of current that can pass through them is directly related to the voltage and level of resistance of said resistor. In essence you can think of them as narrow pathways in which electric current has to squeeze through.
Capacitors are intriguing little devices and can be best thought of as batteries. You’ve seen them if you’ve taken apart any modern device as they’re those little canister looking things attached to the main board of said device. They work by storing charge in an electrostatic field between two metal plates that’s separated by an insulating material called a dielectric. Modern day capacitors are essentially two metal plates and the dielectric rolled up into a cylinder, something which you could see if you cut one open. I’d only recommend doing this with a “solid” capacitor as the dielectrics used in other capacitors are liquids and tend to be rather toxic and/or corrosive.
Inductors are very similar to capacitors in the respect that they also store charge but instead of an electrostatic field they store it in a magnetic field. Again you’ve probably seen them if you’ve cracked open any modern device (or say looked inside your computer) as they look like little circles of metal with wire coiled around them. They’re often referred to as “chokes” as they tend to oppose the current that induces the magnetic field within them and at high frequencies they’ll appear as a break in the circuit, useful if you’re trying to keep alternating current out of your circuit.
For quite a long time these 3 components formed the basis of all electrical theory and nearly any component could be expressed in terms of them. However back in 1971 Leon Chua explored the symmetry between these fundamental components and inferred that there should be a 4th fundamental component, the Memristor. The name is a combination of memory and resistor and Chua stated that this component would not only have the ability to remember its resistance, but also have it changed by passing current through it. Passing current in one direction would increase the resistance and reversing it would decrease it. The implications of such a component would be huge but it wasn’t until 37 years later that the first memristor was created by researchers in HP’s lab division.
What’s really exciting about the memristor is its potential to replace other solid state storage technologies like Flash and DRAM. Due to memristor’s simplicity they are innately fast and, best of all, they can be integrated directly onto the chip of processors. If you look at the breakdown of a current generation processor you’ll notice that a good portion of the silicone used is dedicated to cache, or onboard memory. Memristors have the potential to boost the amount of onboard memory to extraordinary levels, and HP believes they’ll be doing that in just 18 months:
Williams compared HP’s resistive RAM technology against flash and claimed to meet or exceed the performance of flash memory in all categories. Read times are less than 10 nanoseconds and write/erase times are about 0.1-ns. HP is still accumulating endurance cycle data at 10^12 cycles and the retention times are measured in years, he said.
This creates the prospect of adding dense non-volatile memory as an extra layer on top of logic circuitry. “We could offer 2-Gbytes of memory per core on the processor chip. Putting non-volatile memory on top of the logic chip will buy us twenty years of Moore’s Law, said Williams.
To put this in perspective Intel’s current flagship CPU ships with a total of 8MB of cache on the CPU and that’s shared between 4 cores. A similar memristor based CPU would have a whopping 8GB of on board cache, effectively negating the need for external DRAM. Couple this with a memristor based external drive for storage and you’d have a computer that’s literally decades ahead of the curve in terms of what we thought was possible, and Moore’s Law can rest easy for a while.
This kind of technology isn’t you’re usual pie in the sky “it’ll be available in the next 10 years” malarkey, this is the real deal. HP isn’t the only one looking into this either, Samsung (one of the world’s largest flash manufacturers) has also been aggressively pursuing this technology and will likely début products around the same time. For someone like me it’s immensely exciting as it shows that there are still many great technological advances ahead of us, just waiting to be uncovered and put into practice. I can’t wait to see how the first memristor devices perform as it will truly be a generational leap ahead in technology.
Imagine a social gathering, you’re familiar with most of the people there but not all of them so you’ve been engaging with some small talk so you don’t spend the next 4 hours being that weird guy in the corner. Amongst the varying commentary about weather, local sports teams and what have you inevitably the conversation turns to what you all do for a living. Now for most people this is usually a one liner followed by a few back and forths over a few minor details and then it’s off to the other topic of conversation. There are some notable exceptions of course usually when your job is in an industry like IT, medical or (one of the more recent additions to this club) app development. If you dare mention you’re in one of these industries it’s highly likely that someone will launch into a description of their problems or start giving you ideas for their great iPhone app.
Being someone who fits into 2 of these categories (IT and a budding app developer) I get this kind of thing all the time, especially when I’m visiting a friend of a friend who I haven’t met before. Mostly it’s pretty harmless and I don’t mind taking some time out to help people as long as it doesn’t become a recurring theme. Of course IT problems don’t usually exist in isolation so more often than not I’ll be called upon again to come back at which point I usually tell people my going rate and watch the problem evaporate rather quickly. What a lot of people fail to realise is that whilst we might do something for a living we don’t necessarily enjoy doing it out of work, especially if we’ve just spent our whole day doing it.
It’s for that reason alone that I don’t bother people with questions about their professions in a social setting, kind of a common courtesy from someone who knows what they’re going through. I’ll admit it’s not easy sometimes, especially if I have an idea for a project that I want someone to work with me on, but there are much better ways to approach someone than accosting them the second you find out that they could be useful to you.
New app ideas are probably the worst out of the lot as many people are convinced their ideas are fantastic and all they need is you for a couple hours to just bang it out for them. Luckily for me I can tell them that the last app I tried to develop took about a year and barely lead anywhere but even that doesn’t deter some of the more enthusiastic punters. It’s even worse that I completely understand their motivations too as I tried hard to get other people excited about the idea but inevitably you can only talk about something for so long before people just don’t want to hear about it anymore.
It’s for that exact reason that I haven’t been talking at all about my most recent project, except in the most general terms. There’s also a multitude of other factors as well (like first mover advantage, which I believe I have in this case) but it also comes down to a the fact that talking about your goals triggers the same neurological response as actually completing them. Thus I feel those who are approaching me to develop an idea for them have already got what they needed (that feeling of completion) and attempting to follow the idea to its conclusion is usually an exercise in futility.
Even though we’re all familiar with the old adage of “Genius is: 1% inspiration, 99% perspiration” the opposite seems to hold true for commonly held opinions about ideas. The notion that all it takes is an amazing idea to realize your dreams (made worse by the fact that people think iPhone apps are just so damn easy to make) and so the second they get something they think is novel suddenly the hard part is over. Being someone who’s had 50+ of those “amazing” ideas and only been able to execute a couple of them I can tell you the easy part is getting an idea, the hard part is tuning out everything else and working solidly on that idea for months on end. So you should really ask yourself “Would I be willing to work on this day in day out in order for it to succeed?” and if you’re answer is anything but an unconditional yes then you should wonder why others would bother to work on it with you.
There’s an old saying that goes something along the lines of “The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man“. As someone who had lived much of his life trying to learn the rules of the world so I could work within them the notion that being unreasonable about something would be the catalyst for progress was initially met with harsh scepticism. However I began to notice that the ones who actually managed to enact change were in fact those who were making unreasonable demands, not just of others but also of themselves. They also seemed to flourish within boundaries, seeming to be far more capable working with some kind artificial constraint than they were with completely open ended problems.
I really started to believe in this whole progress comes from being unreasonable idea when I started working on my own projects and I started running up against things that people had never come across before. Now for us .NET developers it’s pretty much guaranteed that you’re not the first one to run up against a certain problem since there are so many people out there developing with it. However following on from that idea you’ll tend to find then that if people can’t find a solution to particular issue they’ll instead find some other way of achieving the same goal that’s been done before. This is the double edged sword of Microsoft’s black magic and it definitely traps the wise programmers in the loop of adapting themselves instead of trying to make changes to the world they’re operating in.
I had this recently when I was working on my latest project. I was working with an ASP.NET MVC 3 site and I had set up the web site to make multiple calls back to the server in order to retrieve the data it needed. Now this worked well to get it off the ground but anyone looking to optimize a website will tell you reducing the number of calls to your server will lead to much better performance, for both the client and your server. Eliminating all these calls and wrapping them up into the @Model of the view for this part of the website would do that, but I had no idea of how to get the same results as I had done with the multiple requests. After searching, hacking and testing several different things I eventually found myself with a very workable solution and I was left for many more ideas for improvements to the site.
Now had I been more reasonable with my expectations I would’ve instead just kept on doing what I had been doing (since it was functional) and wouldn’t have dared to consider changing. Indeed I sat on the whole idea for a day before pulling the trigger on it, precisely because of the amount of rework that was involved in doing so. However the changes I made will make it far more easier going forward since it allows me to work in the areas I’m much more comfortable with rather than fooling around with technologies I’m still in the process of understanding. Sure going the other way might have been a better learning experience but I’ve learnt quite a lot in the process of overcoming the goal I set myself, perhaps more than I would have should I have continued down the same path.
Having unreasonable expectations frees you from being constrained by perceived limitations, allowing you to push to the very limits of what is possible. Arbitrary boundaries help to limit the problem space considerably enabling you to focus more clearly on the ultimate goal rather than getting stuck in the multitude of minutia. Combining these two ideas has helped me push past my own limitations in many aspects of my life, from coding to fitness and even to unlocking my hidden creative self. So I put it to you to start being more unreasonable in your expectations and using arbitrary limitations as enablers rather than blockers to progress.