Link Blog

I spent a few hours syncing my BlogRoll with GoogleReader and did a little feed maintancence. So my BlogRoll is pretty much uptodate.

I also started adding items to my linkblog, provided by GoogleReader. The RSS Feed is at the top of the right hand column. It’ll contain a few items that I think are worth sharing.

Isn’t Technolgy Wonderful? ):

Programming Languages: Thinking in Code

What precicely do we need out of a programming language? Steve Yegge has a list:

Here’s a short list of programming-language features that have become ad-hoc standards that everyone expects:

  1. Object-literal syntax for arrays and hashes
  2. Array slicing and other intelligent collection operators
  3. Perl 5 compatible regular expression literals
  4. Destructuring bind (e.g. x, y = returnTwoValues())
  5. Function literals and first-class, non-broken closures
  6. Standard OOP with classes, instances, interfaces, polymorphism, etc.
  7. Visibility quantifiers (public/private/protected)
  8. Iterators and generators
  9. List comprehensions
  10. Namespaces and packages
  11. Cross-platform GUI
  12. Operator overloading
  13. Keyword and rest parameters
  14. First-class parser and AST support
  15. Static typing and duck typing
  16. Type expressions and statically checkable semantics
  17. Solid string and collection libraries
  18. Strings and streams act like collections

Visual Studio missed the cross platform bit (Unless there’s a way for writing Linux readable C++ that no one has told me about). 

A language is not simply a series of sematic rules that work together to produce meaningful output ( written or spoken), but also the way we think. When I speak english, I think english. When I’m speaking itallian, I think itallian.

A programming language is the same. Progammers need to be able to think in a given language and also anticipate the reaction of the complier. A well thought out subroutine, is far better than one riddled with badly, though workable, code.

Thinking in code is important. (Its also a valid reason to say your’re working). When one thinks in code, the output becomes automatic. The trick is learning your chosen language(s) thoughly enough.

 Which brings me to the subject of switching languages. Do we want a new porgamming language to learn every 18-24 months? Can we even sustain that sort of learning curve?

At the end of the day, the Next Big Language (NBL as steve says) will have to be worth the effort to switch. BEcuase choosing the right programming language is crucial to programmers – if you can’t think it….

A wonderful, related, podcast here from OpenSource Conversations on Scott Rosenburg’s new book, Dreaming in Code:

Native UI

I happen to completely agree with Jeff Atwood.

I find my self tending towards using IE7 fro preciclythat reason: A native UI.  While the ability to re-skin Firefox with any one of hundreds, if not thousands, 0f skins is attractive on paper, I find Firefox a bit “strange” after an extended IE7 session.

They are both the same, with near enough the same abilities and the UI differences show up for that reason. I agree with Jeff:

When two applications with rough feature parity compete, the application with the native UI will win. Every time. If you truly want to win the hearts and minds of your users, you go to the metal and take full advantage of the native UI.

But when it comes to day-to-day browsing, I’ll always pick native speed and native look and feel over the ability to install a dozen user extensions, or the ability to run on umpteen different platforms. Every single time.

Time to get The Mozilla Foundation to adopt the .Net Framework.

Vista

Now over the past few days, I’ve seen a huge amount of people finding my blog posts on Windows Vista. Truth be told, I’ve still got the beta 2 installed, though don’t use it very much. The reason is simple. I never got round to it.

With the launch of Vista and Office 2007 i got a nastly surprise – Office 2007 Beta 2 stopped working. In the most literal sense of the Word. i had to re-install Office 2003. I’m insensed at this as it didn’t even give me the opportinutity of convert all my 2007 format documents and spreadsheets back to 2003 format. Wake up guys. So what on earth am i supposed to do now?

On to Vista.

I think its nothing less that pure brilliance. Stolen Mac OSX features or not, its great. The central question that Vista begs us to ask is “What do we want out of an OS?”. Seems Microsoft/Apple ( Depending who stole what from who) have asked themselves that and come out with an asnswer.

The times that i’ve used vista, I’ve never once failed to be impressed by some small but incredibly useful feature.  the integrated search in the start menu is amazing. The new layout of the programs is even better, avoising huge cascading menus that can end up taking up the whole screen.

The Network Centre is extremely useful for allowing you to instantly deduce the problem. It interfaces well with my router (XP tells me the Internet gateway is on, even when it isn’t).

The huge array of options to personalize your computer is extremly important.  The need to create somthing that’s distinctivly you is found everywhere, from the organisation of your desk to the decoration of your room.

The sidebar is extremely useful, as is the option to cconfigure which monitor it appears in in a multi-monitor setup (Microsoft is acknowledging the increasing populoarity of multi-monitor setups in a bid to boost productivity) . I’ve heard that developing Widgets is not every progrmmers cup of tea or coffee.

The way the file system is displayed is imortant. The new look and feel is extremly diferent to Xp, mainly being more userfriendly( while displaying more info) and givingthe user a great number of choices.

The parental controls are included out-of-the-box and are integrated with the accounts and games aspects of Vista. While i have not actually tested this, it seems pretty good. this is essentially Microsoft serving notice of its intention to expand into this tradtitionally third party domain.

The Account profiles are interesting. The new range of restrictions that can be leveled on an account is extremly extensive. This should  life easier on pleantly is network administrators.

The integrated Windows Defender is an inutive idea. The main question is about what advantages it offers over a third party product (ie Norton or McAffee).If Microsoft say greater OS integration, then Microoft open themselves up to a repeat of the EU Competition Commission debacle (only this time from those third-party developers as well). Microsoft need to ensure that all third-party developers have the opportunity to achive the same OS integration as Micorosofts own offerings.

The Aero Glass interface needs no explaination as it speaks for itself.

The irritating security popups become less irritating as time goes on and seem to appear less frequently as well ( did microsoft allow it to remember preferences?) .

Vista is a real RAM hog. On my machine  while doing nothing, it takes up a full 200MB more then XP running  a full set of services ( i.e nortons firewall, Ghost etc) and Visual Web Desingner. I can’t even get a DVD to play properly on  Vista. microsoft seems to have spotted this problem and allowd the use of memory keys as  RAM (“ReadyBoost”).

Vista is so large I’m probably missing a few things. Vista brings an entirely new .Net Framework for developers to work with ( formally Windows Presentation Foundation). I’ve yet to get round to using it since I’m only now getting to the height of my .Net version two programming powers.  I should give it a try.

Finally, I think the number of Vista Versions gives people more choices for their wallets. Coupled with the  ability to upgrade when you need to, its a huge plus for business procurement departments and people on a limited budget ( half with this months budget, half with next month’s) . The only thing missing here is the ability to download Vista from Microsoft ( saves shipping time and cost).

The only question left here is when to buy Vista. Now with all the bugs that are sure to be found.Of after the first Service Pack. It s a choice between too evils. Contend witht he bugs, or contend with the now obselete Windows XP. Which is the lesser of two evils ?

GoogleReader

I’ve head alot about Google Reader, mainly from a certain Rboert Scoble. And boy is it good. I’ve still not gotten round to using the actual Reader exrensively. And the reason is that I use the Googel Reader Widget for the Google Personalised homepage.

Its brialliant. The widget allows you to read all of your blogs right there on the page without ever being send tot he originating URL. Almost briliantly enought  to get me to learn how to use PHP ( or what ever they use) .

In the few times I’ve actually gone to the Reader page, I’ve never once failed to be impressed and say ” I wonder if theres away to do that in ASP.Net”.

If the “Network is the Computer”as Sun CEO Schwartz says, then google have a monopoly.

Dial-Up

Dial -up is driving me insane.  Or to drink, which ever you prefer.  It takes an absolute age to get anything done. Once you get your hands on 8 MB per second yo’ll never ever want to got back to a poor 50.6k per second.

I’m trying my level best to do web deveopment here, but sheer size of a ASP.Net app is more suited to broadband than Dial-Up.

Hopefully I’ll get broadband back soon.  

Free Will

I just read an interesting post from Scott Adams on Free Will. Its interesting enough reading the post, but the 800 odd comments are even more interesting.

I personally belive in free will. Why? Becuase i see it every day. My decisions have repercussions that i can see and mesure. And i know that those repercussions would have been different if i chose differently.

But besides that, my point is this. If we say that there is no free will, that effectivly relives us of any responsibility. That means that we can go around do what ever we want and put the blame on pre-destination. It effectlvly invalidates the centuries old belief of law and order ( but this I mean that law and order is the manifestation of the public’s social concience).  So if Scott says, i didn’t really mean to do that, it was the cemical mixture in his brain, what are we suppost to do? Sentance his brain? Or what if George bush said that in his trial? What are we supposed to do? Can you see what i mean. the question of free will is really tha question of the fabric of society. If nobody takes responsibility for their actions, then we’re really in deep crap.

If we say, “Yes, i take responsibility for X, Y and Z” we have the logical structure of a society. This means that we take responisbility for out actions and we remember that in our decision making procces. The onus is on ourselves to make our bit of society work. If eveyone does thier bit, we shouldn’t have a problem. The best way I can describe it is that we have the opposite of Ancrchy.  

In addition to denying free will, scott does not belive in God. Again, haveing a higher sourse of right and wrong is essential to man. Thousands of years of human history prove that man in incapable of making the right decisions. Yes, we have free will. And yes we can choose to implemet His wisdom in our desicions.

And we can also choose not to belive in free will. The choice is ours.

Software Engineering

My lecture this morning was on project management. Specifically how it applies within the games industry. So I was pleasntly surprised to find an almost identical post over at Coding Horror.

The name “software engineering” is apt enough. Computer Science is about creating pretty little algorthims ( don’t get me wrong, I use BubbleSort all the time).

Software engineering is about getting a given piece of software to work, no matter what the code looks like. 

Jeff says:

But software projects truly aren’t like other engineering projects. I don’t say this out of a sense of entitlement, or out of some misguided attempt to obtain special treatment for software developers. I say it because the only kind of software we ever build is unproven, experimental software. Sam Guckenheimer explains:

To overcome the gap, you must recognize that software engineering is not like other engineering. When you build a bridge, road, or house, for example, you can safely study hundreds of very similar examples. Indeed, most of the time, economics dictate that you build the current one almost exactly like the last to take the risk out of the project.  

I agree. Let me explain.

It has “engineering” in the title for a reason. You don’t need a fully qualified engineer to fix the gas boiler ( though thats what they’re called in the UK). You do need an engineer to build the world’s longest rail tunnel. Thats why its engineering. Thats the semantics

Also, like engineers, we tweak things constantly. My lecturer gave the example of the motorway just down the road. They built it in a marsh. But the thing is that you can’t build in a marsh. So they froze, yes froze, the ground with freon and built on top of that. Thats engineering.  

Thats why its like real, civil enginering. 

As far as unproven, experimental software goes, I’d like to give an example. I get project management software, a trial version. I test it to see if i’d be willing to shell out for the full version. I don’t like the program. So i take the basic idea ( “keeping track of development schedules”) and build a better project mangment software tool, with the all the cluncky bits stripped out. Both programs will work and do the job of keeping track of development schdules. One will be better than the other becuase end user input has been taken into account.  

My point is that. Most of what we as software developers do comes from the real work. Surely Pharaoh must have had project management in his time? The challenge is create something better than the previous iteration. So we port proven tasks, in this case project mangement, to the computer, while still being ready to improve on the product. Engineers build a bridge once and have to wait till the next bridge comes along to apply what they learnt on the last one. We write software that evolves, yes evolves. Snapshots of the  same bit of software take in the middle and the end, will be completely unrecodnizable. So in this sense, we do write experimental programs.

So, in response Jeff, it depends on your point of view.