Monday, August 17, 2009

Q&A open thread

After a two month spell without posting, I'd like to get more out of this blog again, but I don't have any pressing topics that I feel I need to write about. So I'd like to invite questions in the comments section of this post in order to inspire new topics that we could explore. Any pressing questions about software development that need some discussion? Have I posted anything in the past that I ought to expand on? Is anyone anxiously awaiting a continuation of the chess series of posts?

I haven't spoken at all about my current position, which is a lot different from past jobs I've had. I'm currently doing contract work on a product that helps people to automatically activate and configure their high speed internet connections. The work is all done through customized web pages that use ActiveX to deal with low level PC operations. As you may have already noticed if you've been following either my Twitter or Facebook feeds, I spend a lot of time in a computer lab working with custom configurations for a like DSL modem on various configurations, including released candidates of Windows 7. I've never really been a fan of hardware, but this involves a lot of interesting network puzzles and some really advanced ways to use JavaScript.

Anyway, if you've got any questions, other commenters may answer you before I get to it, at least it will help me feel out some directions to take potential upcoming posts.

8 comments:

  1. Russell,

    Since you mentioned ActiveX, I thought I might pose the following question: What are your thoughts on the lack of OS agnostic development? With the profusion of netbooks out there running Linux 'under the hood' as well as those of us who run it on purpose, and with distributions like Ubuntu becoming viable (if not superior) alternatives to Windows, it seems to me that this is going to be a challenge for folks like you in the years to come.

    Netflix viewing, online banking, etc., many times require IE or ActiveX. This is quite frustrating for non-standard OS users, especially when there are standards-based ways to accomodate those users.

    Do you have any thoughts on the matter?

    Thanks!
    Leigh

    ReplyDelete
  2. Any advice for a struggler? In the name of diversifying my skillset, I have tried on three different occasions and in three different languages to "teach myself programming." Usually that means buying a "X Language for Beginners" type book and working through the chapters one by one.

    Before long, however, all I'm doing is copying the example code word for word and seeing if it works, but I'm not learning very much. So much of it depends on memorizing syntax, and the older I get the harder it is for me to memorize datadumps.

    Kazim, I really enjoy your stories of problem-solving, like how to find the shortest number of steps to work through a large list of numbers, etc. That seems like high-level planning, though, not nuts-and-bolts coding/debugging.

    At this point, I strongly suspect I need to be pointed toward one of two directions. First, someone says, "Dude, that's the hard way to learn; try this." Or Second, someone says, "If you're getting bogged down this early, then you're not cut out to be a programmer, so find something else."

    ReplyDelete
  3. I have an ActiveX issue here at work. I got a new laptop with a corporate image, and suddenly my team's DB website lost functionality. The solution is to set the ActiveX settings from "Disabled" to "Prompt," but my company's security has locked down that portion of IE Properties. ActiveX has to stay disabled, and Firefox won't touch it either.

    I now have to log onto an old computer with an outdated image to access my team's DB, a pointless extra step, all because a developer opted to use ActiveX to open a new browser window.

    ReplyDelete
  4. Lexsrt:

    Up to this point in my career, I have mostly avoided getting into the details of ActiveX controls. I started out early on programming in Visual Basic and Visual C++, but after moving to Austin I started working mainly with web server technology and avoided messing around with client machines.

    This project needs ActiveX because it is a tool to actually configure your computer. Until now, my impression of JavaScript was that it was basically a toy language that can't do any heavy lifting. My boss disillusioned me of that idea quickly, saying that when combined with ActiveX controls to deal with the registry and other programs, it can trigger any real programming task -- through a browser -- that a full featured language does.

    Personally, I'm kind of a software purist and prefer to write code that is platform agnostic. That's one reason I gravitated toward Java. I want the software to do what the software is supposed to do, and leave the messy tinkering with physical stuff and operating systems to somebody else. That's just my personal opinion though.

    As a fan of Firefox, I feel that a company like NetFlix has no business limiting your browser options by requiring ActiveX. Other browsers can emulate IE and run AX components, but I think this still limits the app to a Windows platform. And I think the direction software will move in the future is my way, towards universal reusability and away from platform-specific stuff. Just my two cents.

    ReplyDelete
  5. James:

    "X Language for Beginners" is usually aimed at people who have never touched a programming language before. What you'll find is that the different languages you're looking at are all capable of doing mostly the same things. They might have a different emphasis, certain features may be easier than others because that's what the language was designed for. Many languages have a particular domain where they are "supposed" to be used.

    However, after you get through a few chapters, you will probably understand enough of the basics to move on by yourself. At that point, I like to make up my own projects and use the book only as a reference guide. Do what you can, and when you know what you want to do but can't figure out how, look it up in the books or check online forums.

    What kind of projects do you want to work on? Well, it depends on what you've learned about the language domain. Personally I would work on something that I would find fun. For example, I recently saw this mention of the Knight's Tour on Daily WTF, and decided to write it graphically, because I like doing graphics and don't get to very often at my job.

    If you're not a graphics person, try modeling a puzzle with words. In my programming classes long ago, I used to ask students to implement the puzzle where you have to get a wolf, a goat, and some hay across a river in a very small boat, without anything getting eaten. If you're writing a web page, think about a domain you'd like to model, and how it would be made easier by a nice web form interface.

    What language are you working on now? Do you have any idea what kinds of personal projects would be fun for you?

    ReplyDelete
  6. Regarding James' second comment:

    Yes, a lot of people don't trust ActiveX. Of course a lot of people don't trust JavaScript either, and disable that. If your site security locks down either one it can be an annoyance. That's part of the reason why I try to make the server do most of the work, and I avoid relying on JavaScript unless it becomes necessary, and I still don't like ActiveX.

    It's incredibly easy to pop up a window with JS. But since you're not rewriting the page, you really ought to take it up with security and see if they will make the policies a little more sane.

    ReplyDelete
  7. What kind of projects do you want to work on?

    Not sure, probably because I'm not certain about what kind of projects there are. If I follow my interests, then it would be something like game programming, although I don't play a lot of games but due to lack of time rather than lack of interest. I'd also enjoy space/astronomy projects.

    I'm not sure what you mean by 'language domain.' I can gin up a webpage in HTML no problem, with a smattering of CSS. On my own I've tried to teach myself Python, Perl, and most recently JavaScript. I can see the similarities among the languages, the principles I first picked up in shell scripting during a Unix training class.

    One idea I've had is a program that accepts inputs on your credit card balances, minimum payments, etc, and calculates the most efficient payment plan to snowball. I've got a spreadsheet I downloaded from somewhere that I'd model, but the spreadsheet can't jigger your payments to determine the best way to pay off the balances the soonest, or with the least amount of interest. I envision it as an Iphone App, although I learned that without a Mac I can't write it that way.

    ReplyDelete
  8. I'd also enjoy space/astronomy projects.

    That sounds promising. What about, like, a star chart application? Or more simply, maybe you could write a program that scans in names and positions of stars, and uses trigonometry to determine how far any two stars that you input are from one another?

    I'm not sure what you mean by 'language domain.'

    By "domain," I mean what can the language do. As I mentioned in an earlier post, all programs have three central components: a method for input, a method for input and output, a method for storage, and internal logic. Sometimes one or more of those components is steered by the choice of language. For instance, Perl is really good at handling string analysis as a built-in feature. Ruby was built to handle database easily and naturally.

    The input and output is also determined to a large extent by what you're using. You can have a simple text interface, or you can use CGI to write a program that operates via a series of web pages and forms. Or you can write a fancy-schmancy graphical application, with or without the use of pre-rendered widgets like buttons and text inputs.

    I can gin up a webpage in HTML no problem, with a smattering of CSS. On my own I've tried to teach myself Python, Perl, and most recently JavaScript. I can see the similarities among the languages, the principles I first picked up in shell scripting during a Unix training class.

    I recommend learning one thing at a time and getting good at that. If you want to go beyond JavaScript for making a web page functional, I strongly encourage you to go to the next level and try out CGI programming. Basically, a CGI program lives on your web server and can print out HTML that creates a web page in real time, rather than just reading it from a text file.

    The way you get started is to check what your web server can do, because most hosting providers have their mechanism that lets you write your scripts and stick them somewhere from which you can run them. Do you have your own home page somewhere? If not, it's not too expensive to get one. At minimum, you find a cheap service with the capabilities you want, and pay them somewhere in the neighborhood of $10 a month.

    One idea I've had is a program that accepts inputs on your credit card balances, minimum payments, etc, and calculates the most efficient payment plan to snowball. I've got a spreadsheet I downloaded from somewhere that I'd model, but the spreadsheet can't jigger your payments to determine the best way to pay off the balances the soonest, or with the least amount of interest. I envision it as an Iphone App, although I learned that without a Mac I can't write it that way.

    That sounds like a fine idea. The only really tricky part is writing a storage mechanism. That's one reason why I didn't recommend that you just write something in JavaScript, which you already know. Ordinarily, JS won't store things on the client computer. If you use a different language, you could make it store to a text file on your server.

    ReplyDelete