C#


.. ( and some pretty crappy advice probably)

My ex-G/F’s son recently called me, asking if I could suggest a first language to learn. He’s 13 and he’s pretty sure this is the field he wants to enter.

The conversation went mostly something like this.

Me: I think that applications more and more are going to be web-based applications. Have you heard of Ruby?

Andy: <started to say something>

Me: <Interrupting him> It’s object oriented, but I’m not sure if you want to just start with something that is just strictly procedural so that you can learn basic concepts.

Andy: Yeah, I’ve written something in Perl and I’ve already looked at Ruby.

Me: <realizing that I shouldn’t have interrupted>. Oh, okay, I think Ruby is a great language to learn then. More and more hosting providers are supporting this, and many corporations are adopting it <then realizing, why the hell would he care about hosting providers, and the business case for it, he’s 13 for gdssake, and do i know the facts on this?>

<continuing..> However, have you heard of C?

Andy:

Me: <not even waiting for the answer, unfortunately> It might be a good idea to learn a lower level language such as this, so that you could learn the concepts of memory management, pointers, etc.

< Really? Will this be a necessary requirement for him to just have fun, enjoy his career and provide value later? How do I know that he won’t be another Jason Fried (37Signals founder), but skip the college. I think I should shut up and just change the subject. I think, though, that he’ll probably go to college and take these classes anyway, on data structures and memory management, and architecture. >

Andy: Are you there?

Me: Have you heard of Python?

Andy: <silence …> No

Me: Okay, well I saw a book at the store and the title was Learn How To Program with Python, and since I’ve written in Python before, I could see why this particular language could be a good starting point. It has even been ported to the .NET Framework, with the name of IronPython, and Python was written originally as an OO language.

Andy:Is C# a good language?

Me:Yes, definitely. I’d recommend it as a good language to learn, since you can use to write WinForms applications …

<tempting to mention “WPF” which transcends WinForms, but this kid is just asking for a simple opinion, not information on some new future GUI technology from MS!>

.. as well as ASP Web Pages.

For the rest of the phone call, I think I steered away from languages, and just simply suggested that he think about a program he wants to write, and that he would actually use.

And then recommended that he use a language that he thinks might be the best one for this particular program that he would write. Though I obviously like PHP myself, I think I steered away from it in indirect ways, because I don’t know how valuable it would be in the learning stages.
Then I mentioned that he find an Internet Discussion Forum, and even suggested Sitepoint and Devshed, where he could search for “first language to learn”, etc.. to get better, much better insights from others, including those of his age.

I also made it a point to seek someone who I could actually give valuable advice to, so that I could reverse the negative “advice-karma” I set in motion with this call, before something happens.

But what language do you start with, anyway, these days?

I’ve given up on .NET becuase I realized I was trying to pick up the basics just to qualify for a position here in Seattle. My interest is just not in .NET
I’m much more into php and python. I had this paranoia that there would not be near as much LAMP type jobs, but I was completely wrong

But I sort of watch the developments that come from that whole area, for an unknown reason. Soo…

WPF, Windows Presentation Foundation is the new way to write Windows applications, and even on the browser, eventually replaces ASP.NET (but the ASP replacement is even further down the road, I’d say 3 years, but what do I know). And WPF requires video performance that you just don’t see on most of today’s business machines.

Here is a good Video by Bill Hollis, a speaker on .NET subjects. He begins by sort of chronicling the history of GUI’s, and why WPF is eventually very necessary because of the wide range of resolutions and the need to avoid basing anything on bitmap-based graphics.

http://www.infoq.com/presentations/Hollis-WPF-Presentation

p.s.
The best checkbox that I’ve clicked off this year:

turn off visual editor wordpress

(This is what turns off the GUI editor for Wordpress, what a bleepin relief!)

This doesn’t bode well. This Dotnet thing is snowballing for me. Now Microsoft has come up with the next generation of the command line shell, called: PowerShell Batch.

Now I have to spend time picking this up. Being a command line person, it’s kind of a given. It’s a huge, kind of complicated, but very powerful replacement of DOS and CMD.exe .

The link above is an excellent introduction to what it can do for you , and it gives you the most important command examples, so that you can at least start using it for the primary usages of the command line that are common among many users.

Where this ties in with DOTNET:

Everything is based on objects with this PowerShell. You can iterate through a structure, for example, that was in itself returned from a previous command, and save results into objects, and then read a value via object properties. In fact, some or all of the commands return .Net objects, such as the DateTime type. So the more you know about the dotnet framework, the more power you can get out of it.

A quote from the article, and my last sentence in this entry, since I need some java right about now.

The .NET framework is the foundation on which PowerShell runs. The more you know about .NET, the better your PowerShell experience will be.

So far, my experience with dotnet is pretty much what I expected.

I knew I’d have to do a lot of Google searches for tips/insider tricks, existing .net framework bugs, etc.. which is fine.

I knew I’d have to start organizing a Firefox bookmark folder with all of the subtopics like DataBinding, XML, the GC, etc. so that I could have a permanent pointer to stuff I’ve found helpful on the net.
It’s all good, actually. I’d have to say my favorite thing about it, is OO-ness of the whole thing, everything being created from objects.

Read the rest of this entry »

I knew that the guys who wrote Pragmatic Programmer had an important point regarding having a source control system.

I mean, the number of times I can remember launching into a needless “treasure” hunt on why something suddenly stops working, or compiles, and it was because I left just one statement, just barely outside of a while loop, and it slipped right underneath it, so it was always being called. (and most of these times, was with Python, where I accidentally un-indented something :/ )
With source control (as you know), it’s “1,2,3″ — you just diff your current version with the last commit, and you see what you did. And you find it immediately

I finally got subversion installed today at home. (yes, my world is exciting)
Read the rest of this entry »

I’m on the major hunt for good information on the internet that I feel I need to add along with the collection of .NET books I already have.

I think there’s 3 main categories of information that I’ll regret later if I don’t organize now, and keep straight now, so I might as well as do it now.

1.) The first type of resource, are articles from experts in .NET, and those who write about other software topics concerning success in following a certain paradigm or process
I’ve bookmarked a bunch of quality articles, such as on CodeBetter.com, two among them are:

http://codebetter.com/blogs/jeremy.miller/archive/2006/08/13/148258.aspx

http://codebetter.com/blogs/jeremy.miller/archive/2006/06/20/146601.aspx

A little bit unrelated maybe, but the sooner also I get underway with installing and knowing how to use NUnit, Log4Net, and some kind of source control that works well with Visual C# Express Edition, the more troublefree and smooth my development and debugging experience will be.

Read the rest of this entry »

It seems like the .NET Framework is gaining momentum for me, as far as number of reasons to pursue and learn this.
I don’t know how long it will be until there are only Web-based applications out there, and a lot less Windows native apps, nonetheless, it seems like learning WinForms now exposes me to learning a lot about what .NET WEB Development is like (due to ability to use C# for ASP.net development ).

I think that my main focus in this blog will be moreso what is covered in books such as Pragmatic Programmer and Coder to Developer, and in general, Processes. But then again, I don’t know.
And the Design stage: How to go about with coming up with your classes.. I currently use Smartdraw currently to plan out things like what objects I need, and which ones send what objects events.
Yet another reason for .NET, and the last I’ll mention here, is the multi-language factor. I’m a fan of Python, and even though I’m really impressed with C#, it’s good to know I can still use Python if I chose.