Social Enterprise

Inside TechRepublic with Justin James

This Inside TechRepublic podcast focuses on the Host of the Programming and Development blog: Justin James, commonly referred to on the site as J.Ja. Find out how J.Ja answers some pointed questions about programming and much more.

Podcast

This Inside TechRepublic podcast focuses on the Host of the Programming and Development blog: Justin James, commonly referred to on the site as J.Ja.

Find out about J.Ja's introduction to TechRepublic, the IT roles he's enjoyed the most and the least over the years, which programming language he prefers, the best-kept programming secret, and much more. Listen to the podcast.

About

Sonja Thompson has worked for TechRepublic since October of 1999. She is currently a Senior Editor and the host of the Smartphones and Tablets blogs.

18 comments
Mark Miller
Mark Miller

I really liked the part where you said that IT has been stuck in a rut doing accounting for 60 years or so, and that you'd like to see it evolve into more of an Alan Kay model. I couldn't agree more. I've removed myself from the IT industry for a while partly for this reason. It's been good for me to get away from the prevailing IT culture and steep myself in what Alan Kay's talked about for years. I haven't had a lot of time to do that the last several months, but I intend to get back into it when I can. I keyed in on the question about your least favorite language. I might've thought of Java if I had worked with it more. The last time I touched Java was 11 years ago. It hadn't turned into a beast yet. :) In fact it was doing Flash's job (now) of putting up cute animations inside applets. That at least seemed fun at the time. The language I thought of as my least favorite was C++, but then I had been exposed to it more. That doesn't mean I don't like the C++ derivatives, like C#. I think of them as a "cut above". Hmm. Actually, come to think of it, THE worst (meta) programming language I can think of is XML. Yuck!

atoms
atoms

I can't download the MP3 with either Chrome or Firefox. I was hoping to listen to it during the upcoming public radio pledge drive...

w2ktechman
w2ktechman

Wow, I would have thought that this would have triggered more discussions.. Kudos to JJ! Even though I am not a developer, I have read a few of his articles and found them useful. Also, I would agree that JJ is pretty active in his threads -- this is a boon for TR in my opinion! Great to hear you JJ, keep up the good work

OnTheRopes
OnTheRopes

Sounds like you've got a great job and great life Justin. It's good to hear from someone that really enjoys what they do. I couldn't get the radio player to work but the download played through just fine.

Sonja Thompson
Sonja Thompson

It was a real pleasure to catch up with Justin James, the Host of TechRepublic's Programming and Development blog. J.Ja is an all-purpose IT guy, extremely engaged in the discussions when he blogs, and very quick to answer any programming questions that come his way. Take a listen to the podcast, and then chime in the discussion.

Justin James
Justin James

Mark - Glad that you liked it! A lot of what I said on there, by the way, was influenced quite heavily by you. You introduced me to the idea of Alan Kay and made me re-evaluate and re-examine my Scheme experience. :) I worked professionally in Java for about a year, in 2001 - 2002. My problem with it was that it was clumsy. The tools were clumsy (setting up an Apache/Tomcat test environment on Windows took a day). The language had (I hear it's been resolved) this really obnoxious issue where primitives were not analogues to the object versions, and there was no consistency, so you were always casting between string and String, for example. The debugging just was not there. Granted, this was a long time ago, and I know that the situation has changed dramatically. But at the same time, it was 2001, and even then, many other commerical grade languages were much more advanced and much better supported. I never had the "pleasure" of working with C++, and I only used C briefly in school, which is probably why I don't despise it. :) J.Ja

Mark Miller
Mark Miller

There's a link at the bottom of the article. If you right-click on it and select "Save target as..." you'll get it. It worked for me, anyway.

Justin James
Justin James

Thank you so much for the kind words! J.Ja

Justin James
Justin James

Yes, I do have a good job and a good life, for which I am really grateful! The flip side of it, is that I also put in a ton of hours, and I always have, and TechRepublic takes a good amount of time. Unfortunately, time is the one resource that were are all given equal amounts of, no matter who we are or how hard we work. It's a juggling act between work, writing, private leisure time, and time with the family, but I'm still young enough that a "good night sleep" doesn't need to take 8 hours. :) J.Ja

tuomo
tuomo

It's great to hear people sometimes and not just read what they think. J.J. sounds as good as his writing! Same track I had a long time ago, once a programmer, always a programmer. I still love coding when there is a chance, the more difficult technical problem the better. As J.J. says application / customer programming is not so much fun today unfortunately, earlier in IT the developer collected the requirements / negotiated with customer of the features and capabilities, today a programmer is so far separated from the real life that it's not much fun and makes it sometimes very frustrating. You get something done just to find that the requirements have changed, again, and I'm not talking of next version or phase! And the same experience with "help desks" as J.J. except maybe even worse - because the systems I have designed are 24x7 I have volunteered in help desk until they get to the speed. Now, try to help a frustrated customer when you know that the problem is really on your side but can't say it - a management decision to skimp / break a system and now you have to find a way to keep the customers satisfied! A very good advice from J.J. - even if programming is not your main task, learn new languages. But one warning, OO can not be learned from languages - it is an abstract, not code. And yes, Java is not fun!

Mark Miller
Mark Miller

I wondered whether your comment about the "Alan Kay model" was influenced by me, since it sounded like something I'd say. Anyway it's good to hear the message getting out so others can hear it. My main objection to Java when I worked with it (1997) was Sun's promise that Java was "Write Once Run Anywhere" wasn't working out. Applets didn't work the same across browsers. They didn't work the same on the same browsers on different platforms. From what I heard this had to do with Java's early use of "peer controls", a problem that was supposed to be solved a couple years later by Swing. I've heard from others since then that they still had problems with GUI portability. Java was buggy too, at the time. I saw it literally freeze up my machine, which Sun said was impossible with Java. Your program could crash with a nullReferenceException or something, but it wasn't supposed to crash the machine. From my experience debugging was good. Early on I got to work with JBuilder (1.0) from Borland. It was a decent IDE. Everything worked well, except for the deployment wizard. The wizard would work once, but if you wanted to use it again you had to quit the IDE and restart it! A major design flaw on Borland's part. I read about the whole integer vs. Integer issue, and such, but I didn't run into it. I had stopped using Java by the time that "feature" was added. I remember asking how parameter passing worked. What I was told was primitives were passed by value, and classes were passed by reference. I wondered, "How do I pass an integer by reference?" I was told, "Wrap it inside a class." I was surprised the language designers hadn't thought of this sort of use. Wrapping an integer in a class sounded like a kludge. I still had a positive view of Java, because it was easier to work with as a language than C or C++, and it opened up more possibilities for development, but I was disappointed that it didn't work as advertised. C was not bad in terms of its design when I used it. I think it was a good system implementation language. I don't think it works well for applications. I liked C++ for about a year, but quickly tired of it.

OnTheRopes
OnTheRopes

Enjoy it while you can. At my age, without a job, they call it insomnia. On a side note: I did get your podcast to play with both Firefox and Opera. I guess I was just being too impatient using Opera. It wasn't a fault with TR, it was me.

Justin James
Justin James

Glad you liked it! I know what you mean about the help desk... today I was speaking with a help desk person who begged me to send a nastygram about the product, because they know that the only way it will ever be improved is if enough customers complain. This was a product that cost us around $50,000 to purchase, and we were one of their *smallest* sales. But they can't be bothered to make it install on a 64 bit OS (even though it is server software) or on Windows 2008, or even to provide a useful and accurate manual! J.Ja

Justin James
Justin James

Yeah, it is a real "Java thing" to create all of these "almost DSL's" or "metalanguages" using XML. I suspect it is due to a lack of good text parsing tools in Java other than XML parsers. It's the only possible explanation. The development seemed to have gone from config files, to config files with a bit of logic in them, to metalanguages written in XML. XML is not fun to deal with beyond using it as a really expensive replacement for CSV, I cannot imagine trying to do "real work" while working within the limits of XML. J.Ja

Mark Miller
Mark Miller

I've heard that Java has changed a lot from the days when I used it. I'm sure it has. I've looked at "the edges" of Java off and on for several years now, and I'm only a little impressed. Several years ago, back when .Net was about a year old, I was hearing about how Java web developers were tearing their hair out because they were trying to use different frameworks, each of which only worked with specific versions of an XML parser, and the fact that Java had no version "sensing" at the time was driving them nuts. They were trying to load two different versions of the same parser at the same time. They had to "play around" with the classpath, essentially fooling the JVM, to make it work. I looked at Spring and Hibernate a little bit a few years ago, and at the time they sounded neat. Imagine just writing up some configuration code in XML to generate the bulk of the "plumbing" code, and then just coding the important business logic in Java. The more I looked at the XML code, though, the more I winced. It was just ugly. I said to myself "I can't imagine working with this a lot." I have since heard that you don't have to use XML with these two frameworks. They have APIs, too. The thing is, then you're back to using Java. The idea, I think, of the XML configuration files was to get away from having the templated stuff mixed in with your application code. You could think of them more as configuration tasks. The problem IMO was the choice of XML as the language for this. It wasn't until I got into studying Lisp and Smalltalk that I realized that the designers of Spring and Hibernate were using XML as a meta-language. This idea is all fine and good. In fact I love it. The problem was the language they chose was terrible. I found an article several months later by Slava Akhmechet that really made things click together in my mind. He said that XML is basically S-expressions with angle brackets (and wordy tags). It was like a revelation. I thought, "My goodness! Why didn't the designers of these frameworks just use Lisp or Scheme?" I wrote a blog post about this. It was one of the most popular I've written, though the feedback I got was all negative. They basically said, "I HATE XML! Saying Lisp is like it doesn't make me want to try it." Oh well... To me this just proves what Alan Kay said, that if an idea is not presented with "its best clothes" it discourages people from even looking at it. Another aspect, I'm sure, is project managers and VPs of engineering would be wary of such a setup because, "We can't find enough Lisp or Scheme developers. We can find plenty who know XML," totally missing the point. Even if they were to get that idea they'd probably follow it with, "It would give developers more power than they can handle." Such is the reality of the situation. The kicker for me was earlier this year I watched a presentation on BGGA closures, a beta implementation for Java (I also blogged about this). I thought it was the ugliest thing I'd ever seen. Not to mention the anonymous class implementation of the fork-join pattern. Ugh!! On the other hand, there was a meta-language I heard about I think a year ago. I can't remember the name. It was written in Java. It was supposed to allow you to create your own DSL which felt more like a programming language (not just an embedded DSL inside Java's conventions), while still having access to Java's rich set of libraries, being JVM-compatible, etc. There were some languages written in it already. One looked Lisp-like. It actually looks like a neat idea.

Justin James
Justin James

I have a suspicion that if either of us tried Java as it stands today, knowing what we do now about its reality (things like knowing "write once, run anyways" isn't true), that we would probably like it more. For me, it was simply unfriendly and unapproachable. It was also my first usage of OOP, and all of the "Factories" in the system were driving me insane, I could never figure out if I needed to instantiate a class or instantiate a "factory" to give me the instance that I needed to work with. On the other hand, everything that I've been seeing over the last few years leads me to beleive that C# started off much more consistent and approachable, and at the same time, has added a lot of advanced functionality faster than Java did. To be honest, the real reason why I haven't given Java another shot is simply that its ecosystem is downright confusing! A year or two ago I made a commitment to re-try Java, and I spent a week trying to decipher what "Struts" and "Sping" and "Hibernate" and so on were. It felt like these were modular frameworks that did much of what the .Net Framework has in it, but that I would need to pick one for each piece of functionality and learn it. It was VERY difficult figuring out which one was which, what they did, and so on, since they used a very specific lingo to describe themselves. J.Ja

Editor's Picks