<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
<channel>
<title>the_codist()</title>
<link>http://thecodist.com/</link>
<description><![CDATA[Thinking About Programming]]></description>
<language>en-us</language>
<pubDate>Thu, 20 Jun 2013 05:45:37 +0000</pubDate>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/thecodist" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="thecodist" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>32.659277</geo:lat><geo:long>-97.164351</geo:long><item>
<title>WWDC Coolness Is Back In Fashion</title>
<link>http://thecodist.com/article/wwdc_coolness_is_back_in_fashion</link>
<description>&lt;p&gt;Though I can't comment on anything outside of the keynote, I can say one thing for sure, this WWDC has a lot of meat on its bones.&lt;/p&gt;

&lt;p&gt;Having not been here for 20 years I can't comment on the prior few but just getting the vibe from the other developers I think people are genuinely excited about what was announced and I think it will spur a lot of new and cool products.&lt;/p&gt;

&lt;h2&gt;The Borg Trashcan&lt;/h2&gt;

&lt;p&gt;Yes it does bear an odd resemblance to a futuristic receptacle, but having seen one up close it certainly intends to assimilate everyone who comes near it. You just want one; resistance is futile. Today we saw a demo that left no doubt as to what the new MacPro performance is like, there is nothing like it, period. No clue what it will cost, but saving my pennies has begun.&lt;/p&gt;

&lt;h2&gt;iOS 7 Coolness&lt;/h2&gt;

&lt;p&gt;The new UI that everyone has by now seen is pretty and clean. Sure you've seen part of this before but never as a unified whole. Beyond the keynote I can see a whole truckload of new and amazing stuff under the hood that seems to make people here download it and start coding during the sessions. It's pretty crazy. At work we have begun to completely revise what we intend to do with our complete redesign. At home I will be writing something as soon as I get home. The new SDK features are beyond just a pretty face. Too bad we can't say anything more.&lt;/p&gt;

&lt;h2&gt;XCode&lt;/h2&gt;

&lt;p&gt;Now I see why the changes have been so minimal for so long. They spent a long time making this sucker so much better to work with.&lt;/p&gt;

&lt;h2&gt;Mavericks&lt;/h2&gt;

&lt;p&gt;No one I talked with likes the name, it's also clearly more evolutionary that radical like iOS7. But they seem to have considered a lot of features in tandem while still keeping each one distinct. If I do decide to write another game I will look to having it be on both platforms from the start. Why, I can't tell you, but why not.&lt;/p&gt;

&lt;h2&gt;Apple&lt;/h2&gt;

&lt;p&gt;I worked at Apple when it sucked and everyone said so. Today Apple is the biggest company on the planet and it's clear they still have plenty in the tank and can invent, build, design and update a staggering amount of stuff at the same time. It's clear they could have spent about 8 hours on the keynote but you can only talk about so much at once. I am sure the stuff they didn't even mention is much greater than even this who week's worth. It also clear people still love to bash Apple but I could care less today. What I am seeing is making me enthusiastic all over again. Even after 34 years of owning and coding on Apple computers (even through the period where it was just a little at home) it's still stuff that gets me excited.&lt;/p&gt;

&lt;p&gt;On seeing the Mac Pro up close I was reminded of a quote from the movie Wolverine "Ooh, Shiny". Call me assimilated, but it's fine by me.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thecodist/~4/5DXv43NhzeY" height="1" width="1"/&gt;</description>
</item>
<item>
<title>The US Government Is Spying On You - But Are They Any Good At It? </title>
<link>http://thecodist.com/article/the_us_government_is_spying_on_you_but_are_they_any_good_at_it</link>
<description>&lt;p&gt;With the current news on the the NSA and FBI collecting meta data from cell phone companies, and that seven of the biggest internet companies provide data directly to them as well, I wonder if they really are able to process that much data.&lt;/p&gt;

&lt;p&gt;Given that the Boston bombers managed to be invisible despite a lot of suspicious activity you wonder if the ability to collect data is far in excess of the ability to make sense of it. Of course it could be possible that they did know, but don't want to advertise that fact. If they point out the freckle on your face from space, it might make "the enemy" know too much. If they point out the bombers before they strike, people might realize they need to be more careful.&lt;/p&gt;

&lt;p&gt;Thinking about the data that is being collected, if you could actually handle the volume and fuzziness of the information, there is a lot of amazing (and frightening) stuff you could do with it. Just knowing the identity, time, and location of each side of a phone call can tell you virtually everything you would ever want to know about an entire net of individuals. Even without any voice at all, associations could be a powerful way to know what everyone is doing.&lt;/p&gt;

&lt;p&gt;For example, watching people who call a political party office or candidate or a donation line could identify who supports a party. Assuming the political leadership wants to target the opposition, no need for any messy burglars. You get a fine list of people to screw or attack in some way. Any number of useful associations could uncover people involved in adultery or prostitution or drugs who could easily be swayed to your view.&lt;/p&gt;

&lt;p&gt;Imagine using this kind of information and collections of people and handing them over to a supporting business or organization for political benefit or even profit. They couldn't use the information directly but if they knew a bunch of people were doing something bad it could be massively useful for blackmail. Information wouldn't have to be used by a government itself; unscrupulous individuals could take advantage just by working in the right agency. Bradley Manning was just a private who worked in an office with access to years of secret cables and no security.&lt;/p&gt;

&lt;p&gt;At no time in history has a government had such a massive ability to collect and process information on its citizens and others. Of course at no time has anyone had to crunch this much information either. The thing about this is even if you can't do it now, eventually you will figure it out. Even delayed intelligence of this quality has a lot of value.&lt;/p&gt;

&lt;p&gt;Assuming you can process the data and make actual valuable information from it, someone has to decide what to do with it. Ultimately whoever has access to this and can figure it out has unimaginable power over everyone: everything people do is tracked, categorized and saved forever just in case it becomes useful. I can't even comprehend how frightening this is. 1984 might be far too tame as a comparison.&lt;/p&gt;

&lt;p&gt;I hope it's too complicated and large to make sense of it as a whole otherwise we are all screwed. Maybe in the coming days people will start to estimate the magnitude of the data and what it might take process it. All we can hope for is that the government really was incapable of identifying the Boston bombers because the data is still too massive to use effectively.&lt;/p&gt;

&lt;p&gt;I can for a fact say I have received no NSL requesting accessing to my blog; of course I would have to lie so you there is no way to know, like with all of the companies giving access.&lt;/p&gt;

&lt;p&gt;At least we still can keep our thoughts private. So far...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thecodist/~4/08Enm657dKI" height="1" width="1"/&gt;</description>
</item>
<item>
<title>Interview Programmers Like Your Pants Were On Fire</title>
<link>http://thecodist.com/article/interview_programmers_like_your_pants_were_on_fire</link>
<description>&lt;p&gt;Reading about the layoffs at Zynga, people pointed out how great the laid off workers would be to hire, because they had a very rigorous hiring process.&lt;/p&gt;

&lt;p&gt;I had to laugh. What a waste of time and energy to spend long hours interviewing people trying to find "rock stars" and then getting rid of them not long afterwards. The longer you take to interview your programming team members the less useful it becomes.&lt;/p&gt;

&lt;p&gt;Yet I know a lot of companies seem to revel in full day or even multi-day interview processes, trying to eliminate even the tiniest chance that the person won't be Nobel material. A programmer I know was interviewed at Microsoft so many times, all of them long distance travel, he virtually lived there. I was interviewed with travel for a contract position of all things: 8 serial interviews with different people.&lt;/p&gt;

&lt;p&gt;It's ludicrous to imagine that so much energy, especially on the part of the interviewers themselves, could possibly be worth it. As I've written many times before if you can't discover everything you need to know about a candidate in the first hour, then you aren't do it right.&lt;/p&gt;

&lt;p&gt;Why do I think that's sufficient? Contract-to-hire. You cannot discern how someone will fit in, contribute and be a valuable addition to your team under some artificial circumstance. The only way you can really know is to have them work with you and next to you, sitting at their desk and using whatever computer, tools and language you use. Not in some test but doing real work like everyone else on the team does for long enough that their skill and ability becomes discernible.&lt;/p&gt;

&lt;p&gt;I hate when people bring out the old saw (yes, it's a pun) that "you wouldn't hire a carpenter without seeing if they can hammer a nail?" Programmers are not carpenters. We work in teams on projects, interacting with designers and QA, under some kind of management or development process, and dealing with tight schedules and maybe even tough decision making. Thinking you can figure out how someone will do this by making them reverse a linked list or distribute gold to pirates is nuts. I don't do that all day; in fact I never do that (if I had gold I'd keep it all and go home).&lt;/p&gt;

&lt;p&gt;The big down side to doing long interview processes is that the poor programmers who have to do the interviews wind up wasting valuable time sitting in rooms talking all day instead of doing programmer things. I've been in places where I had to interview so many people I felt like making the next interview my own at some other employer. Most programmers rank interviewing slightly above 8 hour meetings.&lt;/p&gt;

&lt;p&gt;When I had the 8 serial interviews, one guy went home and another simply refused to do his slot leaving me talking with some HR guy for an hour. None of the programmers read my resume and none of them knew much about the need (Java Swing) so mostly we chatted about random stuff. They had done several of these that week and were simply tired of the whole process. I didn't get the contract which was just as well as two months later the whole division was shut down having lost a billion dollars or something. I think one guy could have asked a couple of questions on what I knew about Swing and that would have nailed it (not much). They could have done it on the phone.&lt;/p&gt;

&lt;p&gt;Obviously you need some reasonable phone screen system to weed out the completely pointless, but in-person should be as minimal as possible. A mid or senior level programmer should be able to talk like one, being able to expound in detail about anything on their resume. As along as they can talk the talk, the whole point of contract-to-hire is you can see what they can do, and if they can't you can generally drop them on the fly. At my present job we had six months contract-to-hire for programmers, and after 4 months I was hired full time, as everyone knew I could not only do the work but do things they didn't know I could do. It's not rocket science. I had one interview of about an hour and spent most of it explain how ARC worked in Objective-C.&lt;/p&gt;

&lt;p&gt;I've said this before as well, if you measured the quality of the ultimate work between a long interview process versus a short one followed by contract-to-hire, the latter would be a far better measure of any candidate. Plus, your existing team would be much happier as well!&lt;/p&gt;

&lt;p&gt;Sometimes I wonder why Zynga spent a lot of effort hiring people who would then write yet another clone of Farmville. Maybe it's tougher than it sounds, but having worked on a physically modeled MMO FPS type game I have a hard time imagining it. I almost interviewed there once but it didn't appeal to me as they were still doing mostly Facebook games at the time.&lt;/p&gt;

&lt;p&gt;If I ever have to be in such a ridiculously long interview process I'd probably decline or just point out my many blog posts on the subject. Sadly only one time did anyone actually take the time to read this blog, and they offered me the job basically on the phone; the one in-person interview consisted the two other architects taking turns trying to scare me with horror stories about the job. These days you can tell a lot of about people by what they do online like blogs or open source projects. It's worth it to check this kind of stuff out up front.&lt;/p&gt;

&lt;p&gt;It's even good to read a resume before you meet the person, another thing that happens rarely because the interviewer is sick and tired of interviewing. Why waste everyone's time with days of torture. Rarely if ever is any programming job going to involve rocket science or death rays where you need an Einstein Von Braun. Most of the time you need a good team member who can contribute.&lt;/p&gt;

&lt;p&gt;So go ahead and keep it short and let them prove themselves in real work. Like going to that 8 hour long meeting!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thecodist/~4/PTFZHaQXJfE" height="1" width="1"/&gt;</description>
</item>
<item>
<title>Hacker Monthly Published One of My Posts</title>
<link>http://thecodist.com/article/hacker_monthly_published_one_of_my_posts</link>
<description>&lt;p&gt;They published my post on how hotel reservations work.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hackermonthly.com/issue-37.html"&gt;Hacker Monthly Issue 37&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thecodist/~4/33TQX7gA-8w" height="1" width="1"/&gt;</description>
</item>
<item>
<title>The Programming Steamroller Waits For No One </title>
<link>http://thecodist.com/article/the_programming_steamroller_waits_for_no_one</link>
<description>&lt;p&gt;Of all the things I do or use today, the only thing I have in common with &lt;a href="http://thecodist.com/article/my_first_programming_job_in_1981_and_how_it_shaped_my_career"&gt;my first job&lt;/a&gt; is that I still write code.&lt;/p&gt;

&lt;p&gt;Everything else has changed and changed and changed again.&lt;/p&gt;

&lt;p&gt;If you don't keep learning, keep reading, keep improving your skills eventually that nasty steamroller behind you will flatten you permanently. Then your career is likely over.&lt;/p&gt;

&lt;p&gt;When I started in my first job I had no idea what was going to happen. In 1981 it didn't appear as if things changed at any giant pace. People were still writing batch applications on mainframes, there were minicomputers with terminals, and personal computers were not much more than toys. Few people had a computer at home, there was no email outside of big companies and even that was barely used. Of course there was no internet or web. There were only a handful of programming languages and most of them were originally created in the 1950's.&lt;/p&gt;

&lt;p&gt;There were few magazines that covered programming and hardly anything resembled a trade show. Even the friends I had who got a CS degree didn't really get exposed to anything recently developed. People could even get a programming job with no experience or education, as I did. You either learned by doing it yourself, or maybe on the job.&lt;/p&gt;

&lt;p&gt;Little did I realize on my first day that behind all of this was a lumbering monster that was just getting started.&lt;/p&gt;

&lt;p&gt;My first two years were mostly writing Fortran with a little assembly worked in. I did keep working with Basic and various other assembly languages and even played with Pascal at home. I read anything I could find just because it was interesting.&lt;/p&gt;

&lt;p&gt;Once I got into the microcomputer group life suddenly began to accelerate. After my foray into writing an Apple ][ app the IBM PC appeared and I got to write for that in Pascal. I was asked to evaluate a set of "portable" Unix boxes that were to be sent to prospective customers so that they could check out the F-16's specs. This was my first exposure to C and led me to order a C compiler at work. No one at work had heard of it. At the same time I played briefly with a Lisa but had no idea what Object Pascal was. I saw the Mac commercial but we didn't have one though it seemed like something I wanted to work with.&lt;/p&gt;

&lt;p&gt;Once I left and did my startup (story to come eventually) and build a spreadsheet program for the Mac (Trapeze) we decided to build it in C even though Apple still seemed to prefer Pascal. It proved a good choice for the future, as C would rule for a long time (and still does on Linux).&lt;/p&gt;

&lt;p&gt;Around the same time I read the famous Byte magazine issue about Smalltalk and immediately I knew that Objects were in the future and I needed to understand that.&lt;/p&gt;

&lt;p&gt;By now I really began to realize that the pace of change in programming would never slow down again. Even during this time in  the late 80's, without internet or email, the speed at which new things appeared started to be much more obvious.&lt;/p&gt;

&lt;p&gt;After selling the startup and starting a Mac programming consultancy we eventually started Deltagraph (another story coming) and I built some object extensions to C. There was no C++ yet, at least usable, but I wanted the benefits so I built some cheesy extensions that let me build multiple output drivers but still keep only a single internal output generator.&lt;/p&gt;

&lt;p&gt;Finally in the early 90's C++ appeared and I already understood how to design from an OO perspective. Of course I still worked in C as well sometimes.&lt;/p&gt;

&lt;p&gt;I read about something called the web at one point and tried a little text based browser and was puzzled where this was going to lead. Eventually I worked in the Bay Area for a year in the mid-90's and remember the day Netscape went public. Yet even seeing that I still didn't quite see the massive change that was about to come.&lt;/p&gt;

&lt;p&gt;Back home after my year I remember reading of a new language called Java and played around with it. By now the web had begun but it was still so primitive I wasn't sure where it would lead but by now I knew enough to get involved. When a huge change appears in the world you might not know where it leads but you have to get your foot in.&lt;/p&gt;

&lt;p&gt;I got a job at a web consulting firm that specialized in NeXT WebObjects which was developed in some bizarro language called Objective-C. Apparently some folks in the early 80's had been enamored with both C and Smalltalk, just like I was, except they built a real language out of it. Not only did I learn this new language but found another oddball called Javascript, which had little to with Java. Add to that HTML and suddenly I had a whole new platform to write for.&lt;/p&gt;

&lt;p&gt;Around the same time I started seeing people talk about other languages as well. Compared to my first job I realized that I no longer could know about everything that people were doing in programming. I had to learn how to focus on a few things, and keep enough contact in other stuff to not miss something.&lt;/p&gt;

&lt;p&gt;That big steamroller was starting to move.&lt;/p&gt;

&lt;p&gt;During this first wave of web programming a number of my friends that had gotten CS degrees back when I started working suddenly found themselves unemployable as people began to give up on mainframes and Cobol and they had not learned anything in the interim. Unlike me, they were only focused on what they learned and work on for almost two decades and all of it suddenly vanished.&lt;/p&gt;

&lt;p&gt;Flattened, they were.&lt;/p&gt;

&lt;p&gt;Once Java and J2EE (now JEE) appeared I actually played around with it and then wound up introducing it to the rest of the company. I called it "Alien Technology". Pretty soon we switched to building web apps using Java J2EE, as primitive as it was at first.&lt;/p&gt;

&lt;p&gt;At a job in the mid 00's I read about something called AJAX and decided to use it in a couple of internal apps I was building. When I mentioned this to the rest of the architecture team they accused me of buying some new technology! I had to explain it was just Javascript. People told me Javascript was dying, why would anyone spend any time doing something new with it. People are funny.&lt;/p&gt;

&lt;p&gt;Now that the internet was fully baked and open source became a popular concept all hell broke loose. I couldn't even peripherally keep up with everything anymore. Now you had to pick something to be good in, a few things to play with, and hope you at least knew the name of the latest thing. This has accelerated to the present day and is sometimes frightening today.&lt;/p&gt;

&lt;p&gt;Every week there is yet another new language. Add to that all the frameworks. HTML5, CSS3 and more acronyms than anyone can remember. Today's world of programming is a maelstrom of new ideas. Some of them are powerful, some have enormous potential, many wind up meaningless. But out of all of this programming soup you have to pick the right direction!&lt;/p&gt;

&lt;p&gt;That freaking steamroller is on nitro now and programmers are running like mad to stay ahead. Do I do ROR, or build pure Javascript apps? Do I learn Python or Scala? SQL or NOSQL? iOS or Android? Cloud or not? Insane or crazy, pick your poison.&lt;/p&gt;

&lt;p&gt;Thinking back over my three decades in this keep-in-front-of-the-roller business I can't believe how much has changed from my first few days where I wrote Fortran on paper because we had 7 people sharing a terminal. Over that time a lot of change has happened and a lot of people have been run over and became managers or managed networks or flipped burgers.&lt;/p&gt;

&lt;p&gt;What the hell will the next 30 years be like? Will there still be programmers or will we all wind up flat? I can't imagine a period in history where so much has changed at such an enormous pace in a single industry. There is no time to breathe without learning something new just in case what you know today will make you roadkill tomorrow.&lt;/p&gt;

&lt;p&gt;It doesn't matter if you are 20 or 55 nothing you know or do today will likely exist 10 or 20 years in the future. I've seen it happen over and over. One of my favorite sayings is "The only thing that never changes is change itself". Except I think I would add just a little change: change keeps going faster. &lt;/p&gt;

&lt;p&gt;And that clanky monster breathing down your neck has an endless supply of fuel.&lt;/p&gt;

&lt;p&gt;Note: A reader pointed me to this article from 2001: &lt;a href="http://www.kurzweilai.net/the-law-of-accelerating-returns"&gt;The Law of Accelerating Returns&lt;/a&gt; by Ray Kurzweil. It will take you about 12 years to finish it though!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thecodist/~4/X6uzxUE4xGU" height="1" width="1"/&gt;</description>
</item>
</channel>
</rss>
