Tech Trends and Netbooks

by Admin 20. February 2009 01:24

I had the opportunity to attend Keith Brophy's 10th Annual "Tech Trends" Wednesday last night.  It is great to have regular events like this to bring people together and stimulate conversation and ideas - which is exactly what it did.  Talks like this are inspirational and thought-provoking, but are really meant to start the conversation, not be the entire conversation.  So this is my brief addition to what Kieth started last night.

Before, I thought of creating a Lingo Bingo card for the talk as has been a fun trend (http://bingo.keynote.se/ ).  So I scanned headlines for a large group of tech Blogs for common themes.  You need 24 items for a complete Bingo card (middle is Free) so this is what I came up with:

Nanobots, Netbook/OLPC, WiFi/3G/WiMAX, Wii, RFID, ePaper, Twitter/Facebook, Mobile/iPhone/Android, Robots, Cloud/Grid/Mesh Computing, Vision/Camera, Electric Cars / Car Tech, "Hybrid", Home Servers, Google/Chrome, Hulu, Surface / Multi-touch, XBox Live, SSD, Netflix, 3D Entertainment, Electronic Marketplace, Green, Security/Privacy, GPS, SaS/SOA, Voice

 If you were at the event you know what was discussed, if not check out http://www.mlive.com/business/west-michigan/index.ssf/2009/02/cyborgs_robotic_pets_on_the_ho.html for the high-level overview and the predictions.

Keith's predictions that seem to have missed the mainstream ideas were the "New Energy Source" and the "Role of the Elderly".  The items from the "lingo list" that I was surprised missed the top 10 were anything Car/Automotive related, Home Servers, Green Tech, and 3D Entertainment.

Two main themes or ideas have stuck with me that I think are actionable and could lead to new products or even businesses.  They do not come out of any one of the trends but are rather a result of three or more all spun together.

The first is the market that will be created when a majority of peoples' personal computers are netbooks.  Software running on netbooks is of a different character than many traditional mainline applications.  First, it is not necessarily locally installed.  netbooks have very limited local storage, less memory and potentially a bit smaller screen than a desktop or full laptop computer. Also, there is not typically a CD/DVD drive to load software onto the device - software is loaded and run from the network/Internet.  That is, the software comes out of the Cloud, runs on the computer, and can then "go away".  Even data for the application can be stored in the Cloud.  In theory, I could use one netbook one day and run all of my applications off of it.  The next day I could run off of a completely different netbook (or computer or laptop) and the software and files would come out of the Cloud for me to use and run seamlessly.

So first, what will not run in this environment?  First, any big "bloatware" like Office 2007 where you need a big disk and a lot of memory just to write a Word document.  Plus a retail version is 100s of dollars and out of the reach of most people.  Cutting edge 3D games will not have the local power and speed to run in this environment.  Video-authoring and editing software will have issues with local storage and resources.  Anything that runs off of a CD/DVD, like most current Educational software.

What will be useful and popular on netbooks? First, web applications.  Google has a huge lead on this area and will benefit greatly from that.  From e-mail, to documents, to calendars, to news readers, Google has applications that will work today on netbooks.  Beyond this they have a way to make money from the applications through advertising and eCommerce solutions.

Beyond web applications is a layer of Rich Internet Applications (RIAs) which have traditionally run on Adobe Flash and are also now arriving via Adobe AIR for out-of-browser applications and via Silverlight for rich media and line-of-business applications.  A market for small and targeted applications is already here.  Stores like Apples iTunes App store or the new Dell Downloads service can enable authors of software to have a marketplace for their new portable applications.  These applications come right from the store, run on the device, and can "go away" just as quickly when their usefulness is done.  The ability for a company to quickly develop, test, and distribute small targeted applications will become a very valuable skill set.

Combining the netbook technologies with the reviving Educational Technology craze could open an even bigger market with built-in funding through economic stimulus funds and local taxation.  Imagine a "ruggedized" version of a netbook with built-in GPS tracking (don't want to have these get lost or "walk away").  A $300 ruggedized netbook could see the one-child per computer (OLPC) vision of many educationalists become a reality.  Some textbook providers will (and are) provide a digital equivalent of their current offerings.  But a market for niche software that extends and broadens the possible offerings for different students will be huge.  Imagine a modern physics lesson and simulator or Spanish language tutor or even a MindMapping solution.  Even if all an author got was $.99 per student, this could amount to millions of dollars very quickly (and would still be cheaper than textbooks cost now).

Once we have an education-optimized netbook it doesn't take long to consider a business-optimized or health-care optimized netbook/tablet.  These devices will have the same benefits and restrictions. This is all to say that people who start thinking now about developing solutions for the netbook platform will be in very good shape to respond to the exploding need.

Another theme that came out of the Tech Trends talk is the skills that will be needed in the near future and the impact robots/recorders will have on these skills.  But that is another post entirely.

Marie Catrib's Restaurant Review

by Admin 17. February 2009 03:15

For Valentine's Day this year, Laura wanted to have a lunchdate at someplace new.  After a littlesearching she found a place in East Grand Rapids called Marie Catrib's  - http://www.mariecatribs.com/. I checked it out online and figured out how to get there and we were off.

I can't begin to tell you how much we were impressed by theplace (didn't bring a camera - should have). First thing that really struck me was the "local" flavor ofthe place.  Not only is it locally ownedand operated (like to promote the local economy) but most of their ingredientscome from local farms within a "scooter trip" from therestaurant.  This means they use localfarms (and greenhouses in the winter) to get veggies, meat and cheeses.  They even name the farms and offer summertours so you can buy food for home from local places too.  The building itself was eco-friendly - likethe downtown YMCA and new Art Museum it is a LEED-certified building whichincludes a "live roof", passive solar, zero-rain-water shed,etc.  They have a wide variety of foodand offer a lot of vegetarian and even vegan options, but also have home-madesausage (which I had in my Baker's Omelet).

There were probably 4-5 groups ahead of us when we gotthere, so the wait was about 20-25 minutes. During this time they had a cool coffee bar (I had organic vanilla hazelnut)and they came by three times with cinnamon rolls and seasoned pita chips.  During the wait we looked over the Saturday menu(http://www.mariecatribs.com/images/uploads/891Brunch0508.pdf)and the amazing amount of take-home food they had ready-to-go (we took home somerice, hummus, and a monster cookie - all vegan, all good).

We are already planning a return visit - this time with thechildren (looked quite kid-friendly and good options for them).  I had never heard of the place before Lauramentioned it, but can't figure out how we missed it.

Outliers by Malcom Gladwell

by Admin 11. February 2009 08:59

I just got done reading Malcom Gladwell's "Outliers: The Story of Success" and I want to make this as little like a middle school book report as possible. So ...

For my ADD readers:

  • Recommended? Yes, Absolutely
  • Audience? Amazingly wide - not "geek"
    Surprising/Thoughtful?  Anyone who can reasonably link the success of The Beatles, Bill Gates, Hockey Pros, Oppenheimer and others while explaining Korean plane crashes, Asian math scores, and much more is quite talented and thought-provoking.
  • Style? Writes chapters almost like stand-alone stories - I love storytelling rather than just raw facts.  It really draws you in.
  • If you were really ADD you'd either be looking up the book on Amazon or on some other post by now.  How much does Amazon pay to be the top Google match on books?

For everyone else:

I do recommend this book for nearly everyone to read.  Agree with it or not, it will certainly make you think.  If you ever wonder why some people seem to "have it all" or "get a lucky break" or "are in the right place at the right time", then you will love this book.  It is hard to categorize as a book of non-fiction.  It could easily be a business book with many huge business success stories from early clothing peddlers, to lawyers to Bill Gates.  It could be a risk management book with stories of why ignoring one's culture can crash planes.  It could be an evaluation of the educational system and how it sometimes breeds success in spite of the structures in place that make being different very difficult.  It could be an inspirational or self-help book as it shows how high-IQs and Ivy League educations pale in comparison the culture and surrounding environment as factors for success.   One of the items that is reinforced several times is the 10,000 hours number of the time it really takes to be an expert or an outlier in a particular area - better start practicing.

A good book by a good author and storyteller - who also has a good TED talk that is worth viewing.  Check it out if any of this sounds interesting to you.  I actually "read" the audiobook version that the Kent District Library has several copies of.  One interesting note there is that Gladwell reads his own book, and his storytelling voice is actually quite good as well.  There is also an interview at the end that you will not get in the "dead trees" version of the book.

2009 Reading List – Already out of control

by Admin 14. January 2009 06:23

I don’t know how it happened that all of the books that I requested from the library, and pre-ordered from Amazon, all seemed to show up in the same 7 day period.  It doesn’t help that that was the same period of time I was at the CodeMash 2009 conference, and that only lead to more recommended reading. So I physically have all but one of the eleven books below in-hand, and six of them are due within three weeks back to the library.

My purpose for blogging this is to see if anyone else is considering (or already) reading any of these and might be interested in a dialogue or virtual “book club” of sorts this year.  It is always good to discuss new ideas, especially if they are kind of “heady”.  I want to be through this list before summer, and will write more detailed reviews of the best of them.  But if you are interested in “reading along” let me know.

Fiction

  • Ender in Exile – Orson Scott Card. I really loved Ender’s Game (1985) when I was younger and I am always a sucker for a new Ender book. Many/most/all? have been disappointing compared to the original, but I hold out hope for each new effort from OSC.  This book comes sequentially right after Ender’s Game and supposedly gives details and ties up some loose ends from the entire series.

Technical / Design

Faith / Motivational

Strategic / General

  • Outliers: The Story of Success – Malcom Gladwell.  I really wanted to read this book after watching the author’s TED video called “What can we learn from spaghetti sauce”.  I am actually listening to the audiobook of this now (well not right now, but you understand).  It is a book that looks for statistical “outliers” (people that operate well out of the norm (in good ways) than other people in their area – whether it be athletes, scholars, musicians, healthy people, business folks, etc.).  I am really blown away by some of the ideas and information already.  I will review in a week or so when I am done with it.
  • Five Minds for the Future – Howard Gardner. Just shipped from Amazon “©2009” (still in the mail) - from the man who brought us Multiple Intelligences, comes a book to help “delineate the kinds of mental abilities ("minds") that will be critical to success in a 21st century landscape of accelerating change and information overload.” The five minds are “disciplined”, “synthesizing”, “creating”, “respectful” and “ethical” – and I have no idea what to expect beyond that.
  • Made to Stick: Why Some Ideas Survive and Others Die – Chip and Dan Heath. A book related to Gladwell’s previous book called The Tipping Point, it is a study of “memory, emotion, and motivation” to see why some ideas, phrases, products or ideas are very memorable, and why others “go in one ear and out the other”.
  • The Black Swan: The Impact of the Highly Improbable – Nassim Nicholas Teleb. This book flowed out of a discussion on planning and prediction of projects and technology and realizing that so much of what happens in projects (and life) is completely unpredictable.
  • Selling Blue Elephants: How to make great products that people want BEFORE they even know they want them – Howard R. Moskowitz and Alex Gofman.  This book details Moskowitz’s concept of Rule Developing Experimentation (RDE) which lead to the “spaghetti” example in Gladwell’s TED Video.  Basically, how to help people find out what they really want even if they don’t know what they really want.  Wild ideas.

Tags:

What is CodeMash?

by Admin 6. January 2009 00:31

I get regularly chided by some friends on Twitter and Facebook when my updates and messages seem to include things that are quite foreign to many people – and in reviewing a few of the more egregious posts, they are absolutely correct.  So, to head off what will be a small barrage of posts the rest of the week, I wanted to put a quick post together on the CodeMash conference that I’ll be attending Wednesday through Friday.

What is CodeMash?  It is a regional/local conference (Sandusky, Ohio) for software developers (i.e. the “Code” in CodeMash).  But is is quite different in that it offers, allows, and even encourages programmers of all different “flavors” (e.g. Microsoft (.NET), Java, Ruby, PHP, iPhone, etc.) to present – this is the “Mash” or mashup.  A “mashup” is typically an application that takes functionality from different sources and puts them together in new and exciting ways – even if the different pieces were never really designed to work together.  So this, in my opinion, is the genius of this conference – you can have a main focus on one set of technologies (and my “bread and butter” is Microsoft) but still get a great taste and experience of what the rest of the industry has to offer, and come out better because of it.

January has many different conferences and meet-ups like the Consumer Electronics Show (CES) with all the new gadgets for the year, MacWorld with typically new computers, iPods, software, and even the Detroit Auto Show with all the new cars (we need some real excitement there).  But if I could be at any of them in January I would pick something like CodeMash because is the one that really only works well when attended in person.  I can read the press releases from CES and MacWorld and get 90+% of the information that I need. CodeMash is about learning from others, interacting with others, and really following the personal flow of what is important and interesting to an individual. 

There is also the opportunity to attend and even present in the Open Spaces area of the conference.  This is where impromptu presentations and discussions happen around topics that are of interest to the people that are there at the moment, and the content and timing of these sessions can not be predicted in advance.  It is a weird idea if someone is used to just being a “consumer” at a conference, but when you start to see the conference as “collaboration” and “community” then you really start to be fully a part of the group.

Finally, there is the whole “Twitter Tribe” and “Facebook Folks” aspect of the conference.  That is, there are some people that I’ve met only briefly (or never met in person at all) but follow and lightly interact with online. CodeMash is a chance to really put faces together with people and have the richer personal interaction that builds relationships with other people who share the same “craft” and many of the same interests.

So if I stray into “geek speak” over the next few days oblige me a little bit and I can explain more when I get back and see you face to face.

2008 Retrospective

by Admin 2. January 2009 03:08

I wanted to write a 2008 post for a couple of reasons: 1) for “historical” reasons to look back on later, and 2) to let new (and old) people who actually read this blog know a little bit more about me.  So without further ado….

2008 Milestones

  • Space Shuttle Launch at Kennedy Space Center – Saw a live launch of something that actually left Earth.  It’s been a life-long dream and was well worth it.
  • Two new puppies – Kirby and Bella, our little 2-3lb Yorkie-poos.  Bella is sitting at my feet even while writing this.  Very loyal, but tiny.
  • Laura’s ankle-fusion surgery – after years of pain from bone-on-bone rubbing in her feet and ankle, we decided to have the surgery this summer.  Months of no weight-bearing and still in recovery, but should lead to many more options for us this next summer.

Favorite New Gadget - Remote Car Starter

  • Probably the least “hi-tech” of any new technology, but this winter it has really been awesome.   A “must-have” gadget, to me, is one you really didn’t know much about, then you got it, used it, and now can’t figure out what you would do without it.  This definitely fits here.
  • Runner Up - iPod Touch – also a birthday present, and probably the gadget with the most potential.  I’m going to learn a bit about how to program software for the iPhone and Touch next week, and really like the device (far beyond music and videos).
  • Runner Up - Craftsman Snowblower – an early Christmas present saved us from 50+ inches of snow in December, and made it easy enough to help others on our street and help move cars that were stuck in the snow.
  • Runner Up - Wii / Wii-Fit – Really an amazing achievement from both a technical and programming standpoint – you really have to see it or try it to understand.
  • Runner Up - HP Tablet PC – small (12”) portable machine that’s been with me to work, robotics, quizzing, church and really anywhere I’ve needed something.  Looking at the possibility of getting “netbooks” for the kids this year.

Favorite New Technology - Silverlight 2.0

  • I have to pick Silverlight because I’ve been programming in it non-stop for the last 7-8 months.  In short, Silverlight is an environment for programming really interactive applications that can be contained in web pages (much like Flash or Java Applets).  The advantages of Silverlight are technical and would require another post, but I really believe that it will make a big impact on how web and mobile applications are written going forward.
  • Runner Up - ASP.NET MVC – better way to write web applications.
  • Runner Up – Twitter/Facebook – got to meet and interact with several hundred new and long-time friends on an informal basis and keep track of all that is going on with them.  Great way to keep track of people so you can really catch up quickly when you see each other face-to-face.
  • Runner Up – iPhone apps and web apps – I really want to be able to program for people that are “not at their computer” and iPhone and Touch applications may be a very important way of doing so.

Best Movie - WALL-E

  • So I don’t get out much to watch movies – five or less all year (see more on DVD, but not that many more).  I really liked WALL-E for a number of reasons.  A robot “star” (love robot stuff), amazingly limited dialog (movie “says” so much just through “body language”, context and situations.  And the movie actually had some pretty “deep” things to say about relationships, personal responsibility, consumerism, and appropriate use of technology.

Best New Activity - Family Swim Night at the YMCA

  • We’ve been going swimming as a family on Friday nights and Sunday afternoon since Laura started her rehab after surgery.  This has been great as a family activity and for getting some good activity during the winter months.  The YMCA had a promotion where we could start up again at no charge (we’d been members a while ago), so it was a deal we couldn’t pass up.
  • Runner Up - Bots on the Rock -  We wanted to get an informal group going who liked creating, inventing, programming and playing with LEGO robots, so we started a group with some friends to do just that.  We’ve been going for a year now and have even more plans going forward.  Fun and learning all in one.

Most Interesting Book - The Shack

  • Unfortunately I read for pleasure lately even less that I see movies, but I did squeeze in a couple books this year (and have a booklist already started for 2009 to remedy this issue). The Shack was a book that I missed in the “first pass” and heard a lot of people talking about at church, work and on Twitter/Facebook. And when I say people talking is was really a lot more like debating or dialoguing about the book and everyone seemed to have an opinion or idea about it.  So much so that folks wanted to get together and discuss it.  So I picked it up and read it and had a similar response.  In short it is a fictional account of a man who has had some significant loss and tragedy in his life, who through a series of events has an experience, dream, vision, or something where he ends up having a dialog with characters who represent God, Jesus and the Holy Spirit.  Sound strange?  It is.  Worth reading and discussing? It was.
  • Runner Up - The AppealI do like John Grisham, and my mom and grandma both recommended reading it.  It is another book that evokes an emotional response – mostly anger that this is really probably the way things happen in “real life”.
  • Sad note on the book front, we lost Michael Crichton this year – one of my favorite authors growing up.  I’ve read his books like: Andromeda Strain, The Great Train Robbery, Congo, Sphere, Jurassic Park, Disclosure, State of Fear and at least 5 more less popular titles.  He had a great imagination and perspective on technology and issues surrounding technology, and great suspense and action.  He will be missed.

Biggest Bummer - Michigan Economy

  • The down economy seems to have impacted every part of our lives.  From friends losing their jobs, to houses losing value and not selling, to retirement plans dissolving, travel plans changing, and just a general gloomy feeling.  We’ve all adapted and changed and perhaps grown closer because of it.  But a positive change in 2009 would be very helpful.
  • Runner Up - Seeming demise of the Grand Rapids / West Michigan User Group – This is related to the economy as well as many programming jobs have gone away, and many companies don’t have discretionary money to donate to such causes.  So individuals stop attending and can’t support the group and companies stop supporting the group.  Even the leadership of the group is impacted.  Hopefully the new year and new jobs will encourage people to get interested and involved again.  I’ve seen these things go in cycles and soon the should be a void that the group can fill again.
  • Runner Up - Car died – enough said.
  • Runner Up - Detroit Lions – too much has already been said.

I am sure I missed something major or noteworthy in 2008 that failed my mental recall attempt this morning, so I’ll update this post as needed.  E-mail me (bruce@abernethy.com) if you think of something.  Blog comments are “unworking” – yes a blog software update is high on the list for 2009.

What would make a good/great Netbook?

by Admin 24. December 2008 05:26

 PowerBook 100I’ve been hoping and watching for a great portable computer that would be ideal for students (and others) for many years – at least since we tested some PowerBook 100s with teachers in 1991 (only to have some returned to us as almost “unusable” – imagine giving back technology to someone, it was a pretty “underwhelming”).  The PowerBook 170 was much better but cost $5,000 each (in 1991 money) and only lasted a year in production as well.

Come forward 16 years and there is the ambitious “One Laptop per Child” vision of Nicholas Negroponte that brings some of the best minds together to figure out how to build a cheap and rugged laptop to enable students world-wide to gain access to a wealth of information and functionality.  olpcBut this vision misses on several important points, but creates a wonderful market for smaller form factor and lesser functionality devices for students and really anybody that is mobile and wants to stay connected and productive.

In 2009 I would really like to buy 3 Netbooks (one for each of my children) to use daily as part of their educational (and other) pursuits.  This is a non-trivial purchase so I am considering it very carefully.  The market for Netbooks is coming together quickly, though there is even a new challenge this week over whether the term “netbook” is trademarked.  But the issue for this post is a recap of what I would really like to see in a Netbook, and why.

 

The first few things would be related to the “Net” part of “Netbook”

  • The device should be able to operate when not connected to the Internet, but should achieve full potential and functionality when connected to a network.  There should be options for achieving this connectivity including network cable, Wi-Fi, and mobile networks (3G, EDGE, WiMAX, etc.).  For the later, the ability to integrate the connectivity within the main case is ideal (don’t want a “dongle” for each type of connectivity).
  • Bluetooth – not required.  If it is “on the chip” with the other wireless features, then go for it.  But if it adds even $20 to the cost (and/or measurably reduces battery life) then leave it out.
  • Needs to run OS-independent software from “the cloud”.  I don’t care if the Netbook itself runs XP, OSX, Vista, Ubuntu, Android, etc. as its base OS, as long as there is a platform that software can be developed on to run across devices.  This could be Flash/Flex, Silverlight, JavaFX, AIR, etc.  The ability to develop, market, and sell/distribute apps to the different Netbooks is really important.
  • An optical drive should not be required, but could be connected as an external USB/eSATA device.  Installing “full-blown” applications from a CD/DVD should be possible, but limited.  Limiting local storage should be a goal to enable apps running from the “cloud” and saving data back to the network as well.
  • Basic CPU – no quad-core x64 3D gaming rig here.  A nice low-power CPU, optimized for wireless applications would be nice.  Atom processors are the rage right now but VIA and AMD have processors that would work too.

 

The next few things would be related to the “Book” part of “Netbook”

  • First, it should be roughly the size of a book – could be a hardcover, paperback or in between.  This puts it somewhere between an iPhone and a traditional laptop computer.  A target would be 8-10” screen size.  It seems that some are now at the WSVGA screen size (1024x600), better than SVGA (800x600) but full XGA would be nicer (1024x768) (see cost discussion later).
  • It should provide many of the same functions of a book (reading, reference, easy access to information).
  • It should be “dockable” to use a larger display (keyboard, mouse, etc.) if available at a desk or lab.
  • Fairly ruggedized and should not weigh very much (think carry in backpacks) – 2 pounds would be ideal.  This device will share backpack space with other books, be banged around a bit, and will inevitably be dropped or otherwise abused. Netbooks that are engineered well in this area (e.g. rubber, plastics, where appropriate, SSD drives instead of spinning media, etc.) will have a definite upper-hand.

 

Finally things that really have nothing to do with “Net” or “Book” but are things I think of being part of this device.

  • Webcam and microphone input – I really think that multi-media and multi-modal input for so many things is really important that I hesitate to leave this for just those that add external devices.
  • Basic speakers – nothing special.  Headphone jack.
  • Touch/Tablet screen – torn on this one.  There is a lot going on with multi-touch on the iPhone and Windows 7, but nothing really “proven” yet.  I think the expense that this would add would not be worth the money
  • Battery life – probably the biggest hurdle Netbooks face.  Ideally it would last a full work/school day, say 6 hours of use.  Ideally the device could “sleep/hibernate” easily and have it easy to swap in a fully charged battery.  Kind of like batteries for cordless drills and other tools – yes the Netbook is a tool.
  • Now that we are talking money.  The device should be $400 +/-$100.  Under $300 would probably be made so cheaply that it would violate the “ruggedness” need or some of the features.  More than $500 and it is getting too expensive.  I know this is a tight margin for prices.

 

I’ll update this post if/when I decide to commit on which ones to buy.  I’d appreciate any feedback or ideas that others have in this area as well.

Update 1: Added some details, fixed some weird formatting

Another reason I love Woot.

by Admin 4. December 2008 23:35

You may or may not know about the www.woot.com site where they sell one item per day until it is gone at really good prices.  That’s cool, and there are great deals, but they also have a sense of humor which is lacking in most retail situations.  The latest example of this is a status note I got yesterday on a product that was a few weeks late in shipping.  I don’t know if any of it is true, but it is kind of funny, and the order did ship a few hours later …

Dear Bruce,

Our records indicate you purchased the Star Wars Vault 30 years of Treasures item from us on Nov. 21. To better secure the collectible inside the box, we are taking extra precaution. The packaging has under gone several drop tests and throws to make sure that these will hold up during transit with FedEx.


We apologize for the delay and your patience. Tomorrow you will be receiving the tracking email.


Woot Member Services

 

Keeping the internet a little less serious – nice.  Hope the wrong person doesn’t read this post before Christmas … hmm.

Tags:

ImplicitStyleManager – Hidden Gem in the Silverlight Toolkit November 2008

by Admin 28. October 2008 08:05

Sure the AutoCompleteBox, Expander, TreeView, Charts, etc. from the new Silverlight Toolkit (http://www.codeplex.com/Silverlight ) are cool – and will make some Silverlight apps look even better.  But the ImplicitStyleManager (and related Theme classes) will now allow designers to encapsulate their design work into an assembly and xaml resource dictionary, and easily apply the theme to an entire page (or part of a page).

On the surface this is “duh” you could do that before – but not so.  You had to “touch” every control and add a Style and/or Template to it and have that StaticResource appear in a generic.xaml or App.xaml somewhere in your app.  Now you should be able to “style-up” and entire Page/App in a few declarative steps.

This means that there could be a market for professional looking themes for Silverlight apps that developers could apply for a really polished look in their applications.  It also means that custom themes can be created for a company or project that can be easily and consistently applied to many different controls and/or applications.

I am eager to try this out on a larger scale in the next week or so – will report back.

Check it out (with some nifty pre-packaged themes for your use) at http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%203&referringTitle=Home&ANCHOR#ImplicitStyleManager

Tags:

Development

MVC Beta – Non-GAC implementation

by Admin 22. October 2008 00:21

Another “geek post”, sorry.

We’ve been updating some of our MVC apps to the beta and were relying on the non-GAC implementation of MVC (i.e. we didn’t want to have to physically install the MVC .dlls on the shared dev and live servers – we’ll do this for RTW but not the betas).

However, even when we copied the DLLs locally and referenced those .dlls we were still getting a “yellow screen” error that the assemblies could not be found.

It turns out that there is a little-known property on the References themselves that is needed to accomplish the task of copying and referencing these .DLLs.  Select one of the References to the .dlls (say System.Web.Routing) and look at the properties.  You must set the “Copy Local” property to “True” in order to reference the local copy.

Took a little while to find this – hope to save others a little time.

Tags:

Development

World Animal Day – boston.com

by Admin 19. October 2008 08:41

This was such an amazing and surprising picture – Narwhals in Arctic Bay, Canada - that I had to share it.  I honestly didn’t know if it was real or not and that made me feel a little stupid.  Many of the rest of the pictures in this article are also awe inspiring.

http://www.boston.com/bigpicture/2008/10/world_animal_day.html

boston_narwhals

Tags:

Silverlight IRL #2 – Fast Data Access w/ NHibernate

by Admin 18. October 2008 11:54

This wasn’t specifically Silverlight-related, but you really can’t have much of a Silverlight application without some kind of data access.  We chose WCF services and built up some quick models with NHibernate, in 5 easy steps

I’ll use the example of the “Flashcard” object in the quizzing application which had a front, back, competition information, etc.

Step 1) Interfaces

For the Flashcard object first we built the interfaces that would define the main data parts of the object, both on the model side and on the Silverlight side.

   1:  namespace TBC.Interfaces
   2:  {
   3:      public interface IFlashcard
   4:      {
   5:          int PKID { get; set; }
   6:          int? TBCCompetition { get; set; }
   7:          int? TBCYear { get; set; }
   8:          int? KBCCompetition { get; set; }
   9:          int? KBCYear { get; set; }
  10:          string Front { get; set; }
  11:          string Back { get; set; }
  12:          int? DeckID { get; set; }
  13:          IQuestionType QuizQuestionType { get; set; }
  14:      }
  15:  }

A pretty simple object by most standards – a primary key, competition information, strings for the front of the card and back of the card, a “deck id” to allow for multiple flashcard decks to be prepared, and an IQuestionType.  This is the only custom type and interface in this object. The question type is a complex object that is basically like “multiple choice question”, “fill in the blank question”, etc.

Step 2) Build the Objects

Nothing fancy here either – just implement the interface into an object, but with a little twist.

   1:  using System.Runtime.Serialization;
   2:  using TBC.Interfaces;
   3:   
   4:  namespace TBC.Models
   5:  {
   6:      [DataContract]
   7:      public class FlashcardEntity : IFlashcard
   8:      {
   9:          [DataMember]
  10:          public QuestionTypeEntity QuizQuestionType { get; set; }
  11:   
  12:          #region IFlashcard Members
  13:          [DataMember]
  14:          public int PKID { get; set; }
  15:          [DataMember]
  16:          public int? TBCCompetition { get; set; }
  17:          [DataMember]
  18:          public int? TBCYear { get; set; }
  19:          [DataMember]
  20:          public int? KBCCompetition { get; set; }
  21:          [DataMember]
  22:          public int? KBCYear { get; set; }
  23:          [DataMember]
  24:          public string Front { get; set; }
  25:          [DataMember]
  26:          public string Back { get; set; }
  27:          [DataMember]
  28:          public int? DeckID { get; set; }
  29:   
  30:          IQuestionType IFlashcard.QuizQuestionType
  31:          {
  32:              get { return QuizQuestionType; }
  33:              set { QuizQuestionType = (QuestionTypeEntity) value; }
  34:          }
  35:   
  36:          #endregion
  37:      }
  38:  }

 

Nothing different here, except maybe the [DataContract] and [DataMember] tags. These are added via the System.Runtime.Serialization namespace and will be used to enable the WCF services to expose these objects to Silverlight.

So now we have an object with an interface that is ready to be served up by our WCF service.  Now all we need is to get it in and out of the database.  This leads us to NHibernate 2.0 and the Fluent NHibernate library, whcih leads to …

Step 3) The NHibernate Mapping File

Here is the basic mapping file for this object – and yes it is just another class.  It is important to recognize that it is completely separate from the object itself.

   1:  using FluentNHibernate.Mapping;
   2:   
   3:  namespace TBC.Models.Flashcard
   4:  {
   5:      public class FlashcardMap : ClassMap<FlashcardEntity>
   6:      {
   7:          public FlashcardMap()
   8:          {
   9:              TableName = "quiz_flashcards";
  10:              Id(f => f.PKID);
  11:              Map(f => f.TBCCompetition);
  12:              Map(f => f.TBCYear);
  13:              Map(f => f.KBCCompetition);
  14:              Map(f => f.KBCYear);
  15:              Map(f => f.Front);
  16:              Map(f => f.Back);
  17:              Map(f => f.DeckID);
  18:              References(f => f.QuizQuestionType);
  19:          }
  20:      }

 

This is a little confusing at first, but if you go through it step-by-step then you can understand what it does, even if not how it is actually implemented.  It is a brand new class inheriting from ClassMap<T> and we pass in the FlashcardEntity as the generic type.  Then, in the constructor, we simply define which table in the database contains the Flashcard data, and which element is the primary key.  Since we named the columns in the database the same as the property names we don’t need to use the overload with the column names.  Because of that all we need to do is to add all the Mappings with a simple lambda expression.  The References call is cool.  It “says” that “there is a column called QuizQuestionTypeID that references a single QuizQuestionType object, please go get it for me.”

Step 4) Initialize the Connection and Mapping.

So how do we initialize the connection and mappings we’ve defined?  Once they are all entered and mapped we do this …

   1:      IPersistenceConfigurer persistenceConfigurer =
   2:          MsSqlConfiguration
   3:              .MsSql2000
   4:              .ConnectionString.Is(MainController.GetInstance().Settings.ConnectionString);
   5:   
   6:      _cfg = persistenceConfigurer.ConfigureProperties(new Configuration());
   7:   
   8:      var persistenceModel = new PersistenceModel();
   9:      persistenceModel.Conventions.GetForeignKeyName = (prop => prop.Name + "ID");
  10:      persistenceModel.Conventions.GetForeignKeyNameOfParent = (prop => prop.Name + "ID");
  11:      persistenceModel.addMappingsFromAssembly(Assembly.Load("TBC.Models"));
  12:      persistenceModel.Configure(_cfg);

These are more Fluent NHibernate calls that handle implementing the configuration of NHibernate.  Yes this can all be done with configuration files, but now it can be done in code as well – fairly easily.

Step 5) The basic CRUD code

So now that this is all done, what would the code look like to get all the Flashcards from the database …

   1:  public List<T> GetAll<T>()
   2:  {
   3:        ISession session = NHSessionHelper.GetInstance().GetNewSession();
   4:        List<T> e = default(List<T>);
   5:        e = new List<T>(session.CreateCriteria(typeof (T)).List<T>());
   6:        session.Close();
   7:        return e;
   8:  }

or maybe just get one of the cards by ID and Save/Update …

   1:  public T GetByID<T>(object id)
   2:  {
   3:      ISession session = NHSessionHelper.GetInstance().GetNewSession();
   4:      T e = default(T);
   5:      e = session.Load<T>(id);
   6:      session.Close();
   7:      return e;
   8:  }
   9:   
  10:  public T SaveOrUpdate<T>(T saveEntity)
  11:  {
  12:      ITransaction transaction;
  13:      ISession session = NHSessionHelper.GetInstance().GetNewSession(out transaction);
  14:      session.SaveOrUpdate(saveEntity);
  15:      transaction.Commit();
  16:      session.Close();
  17:      return saveEntity;
  18:  }

Even with the error handling removed for brevity, this is pretty simple code.  In fact, you will notice that there is no mention in any of these methods of the FlashcardEntity classes.  This is because these generic methods can be used for any object that is created and mapped in this way.

Looking back at this there is really only 30 lines of code for the objects (interface, object, and mapping) and the rest of this code is reusable for all objects in the solution.  While these 30 lines could be easily generated, it is a nice number of lines of code to continue crafting code “by hand” and knowing as much as possible about what is going on in your objects.

It is also important to keep your objects “thin” when doing a lot of serialization and deserialization – more on that in post #3.

Tags:

Silverlight IRL - Requests

by Admin 15. October 2008 23:00

This is the first in a series of posts that I promised to do after my presentation to the User Group on Tuesday.  These will be details, link and some sample code.  I am in the process of making sure my code samples are functional under the release version of Silverlight 2.0 RTW - this should be done by Monday (getting the paying/work projects moved over first, and it is going really well).

Since the Microsoft Professional Developers Conference is getting underway in about 10 days, and Silverlight released well in advance of that, I figured it would be a good time to get some requests in for the next version(s) of Silverlight.  To put this in context for those not in attendance, most of the work I've been doing in Silverlight is in the health care and medical fields, with a side project of some Bible quiz games, a jukebox and flashcards.

#1) Microphone and WebCam Support: Doctors don't like to type, and while this is a generalization, dictation services are still doing very well in the market.  To support "digital dictation" I really need an ability to record and transfer digital audio files from Silverlight down to the server.  Add in web cam support as well and the kids can upload an avatar picture to personalize their account a bit as well.

#2) Cross-device as well as cross-browser: several of the doctors and company owners that we deal with regularly are proud iPhone owners.  Kids have their iPods, Zunes, and XBOXes.  Doctors are moving to pen-based tablet-based devices (sometimes PCs, sometimes not) to carry from room to room.  Less and less people are sitting down at a computer to do their work or entertainment.  We need to be able to target portable devices and game consoles with Silverlight applications.

#3) Full keyboard support for full-screen applications: Come on! Do you really have to disable all but a handful of "popular gaming keys" when the application goes to full-screen mode.  Isn't there another way to keep people "safe" from deceptive Silverlight apps?  This takes away the ability for data-entry and full-screen apps for educational purposes.

#4) Improve the tools and error messages: This is evolutionary, but to develop now you really need both Blend and Visual Studio 2008 (neither has critical features of the other (e.g. Intellisense, template support)).  And some of the error messages are so cryptic, and can mean so many different things, that they mine as well just be "Syntax Error"  (actually that is even more useful in some cases).  I am sure these are things that will come with time, but they do point to an immature system.

#5) More native controls: But I hear that there may be announcements to this effect even in the next few weeks.  The native (i.e. available in the plug-in or Microsoft-supplied .dll) controls for Silverlight have gone from literally nothing (i.e. make your own textbox) up to a respectable starter set of common controls (better than ASP.NET at launch).  But I always want more.  Some of my top requests (e.g. autocomplete, tree, expander, etc.) have already been announced as controls to be released  coming weeks.  These will allow for some really great user experiences without a lot of expensive and lengthy time being spent on low-level user-interface work.

[Updated - forgot one] #6) Offline and/or out-of-browser execution: This goes away from the traditional use of a "browser plug-in", but it would be great if the Silverlight code could be used while offline (yes there are places without wireless connectivity).  Also, the ability to (optionally) "install" the application so it can run in its own window with a shortcut, icon, etc. would be really useful- ala Chrome application settings and Adobe AIR.  I guess you could get this functionality today by using Chrome to view the Silverlight page and saving it as an application with settings, but it would be best if Silverlight could do this natively without a particular browser.

More coming soon, and I'll post the PowerPoint stack as well - here is a link to the pptPlex site with downloads for those who were interested in trying out that cool PowerPoint plug-in.

Tags:

Someone had to do it!

by Admin 9. October 2008 07:01

Tags:

General

Reason #458 People Don&rsquo;t Like Computers

by Admin 16. September 2008 02:17

After a really busy summer I am making an effort to get back into a routine which includes posting about some interesting things going on personally, professionally, and otherwise.

 

I thought a “soft-launch” back into it would be sharing one of my pet-peeves of the day.

 

search_results_oops

 

The “insult to injury” here is the “Did you find what you wanted?” phrase – because apparently the little doggy did find a lot of things I probably wanted to see, but refused to show them to me.

 

From a Test-Driven Development perspective wouldn’t you do a simple count of the items on the right and match to the “found” number on the left?

Silverlight Proof-of-Concept &ndash; Top 10 Questions to Be Answered

by Admin 7. July 2008 07:27

I am getting a chance to do something I’ve wanted to do for a while – that is, get paid to do some Silverlight development.

That being said there is a lot to prove to our customer and ourselves that Silverlight is the right choice, and is at the right level of development, to be used as the platform for running day-to-day operations for a multi-million dollar business.  So we are undertaking a process to evaluate Silverlight and prove out some of the “unknowns” of Silverlight.

Other options are out there for the User Interface for this application:

(1) A “fat” installed app (WPF or WinForm) – the current app is a fat Windows 3.11/95-looking application with decent performance (especially when it was designed on PC’s with 1/10 the power of today’s applications).  But this app will be widely deployed (50+ sites) and tech support is limited and costly to overhead.  Web applications, or at least web-deployed applications, are preferred.

(2) An Ajax-enabled Web Site.  There is a lot of “magic” you can do with a little Ajax and some custom Javascript coding.  But, having done several of these sites, you end up feeling that you are making a web page do something “unnatural” (i.e. something it wasn’t designed to do).  And supporting and debugging these applications can be complicated.  Plus there is an inherent performance issue with even the best designed web application.  This is especially true when coming from a very performant Windows application to a new browser-based application.

(3) Flash/Flex. In addition to this Silverlight POC, at CQL we are working on a Flash and a Flex-based application from two other companies.  We’re updating a Flash-based application that gets a lot of XML-based data from simple web services, and we’re writing the services to support a modern site-wide Flex-based application.  There are other RIA options out there, and the two different design firms have much more experience with the Adobe products than Silverlight.  To their credit they have heard of and have used the basic Silverlight tools already, but never anything “production.”  So we need to prove to our clients and our design partners that this is a good idea.

So, what needs to be proven and how are we going to go about proving it out.

Here is the start of the list – this will build over the next few weeks.

1) Automated testing – how to test the front-end Silverlight controls using automated testing tools

2) Web Service calls / Databinding – using secure web service calls for data routines.  Pull-type calls for common actions/methods.  Also Publish/Subscribe type services that could push important data to subscribed controls.  How to handle disconnected concurrency issues?

3) Security / Roles – encrypted traffic.  Working in the same security context as the containing web application (i.e. login, roles, etc.)

4) Dynamic Control Loading – app needs to perform very well and should only load the components that are needed at any one time.

5) Keyboard/Keystroke/Hot-Keys – many of the current functions of the system have assigned key shortcuts than enable staff members to quickly access common features.  Can this be reproduced in Silverlight?

6) Stress/Load Testing – How does the load of an application that is mainly web service based differ from that of a get/post HTML web application?  Many small messages vs. less frequent bigger messages.

7) Real-world ability to work with designers – We’ve all seen the PowerPoint slides showing how easy it is to work with XAML between developers and designers.  Is it true?  Does it work in real life?

8) Uploading a file – can it be done in Silverlight or will we need some Ajax/Web Page interaction?

9) Drag-and-Drop – part of the app is a scheduling calendar – can appointments be rescheduled via drag-and-drop?

10) Controls – are there enough now for what we need in beta 2?  Are any third-party controls worth using/buying?  Can we do common data-entry validation (e.g. masked-edit textbox)?

Lessons from Keynote #2 &ndash; Steve Jobs

by Admin 11. June 2008 00:47

If you ask most of the world about Steve Job’s keynote this week, they will basically tell you that it was the iPhone 3G announcement (new cheaper, faster, stronger, iPhone for the world) – which is true, but it was more than that.  This was at the WWDC (world-wide developers conference) for Apple Computer. 

iPhone as a Primary Platform

There were 5200 (sold out) developers at the WWDC for 147 different sessions (85 on Mac, 62 on iPhone). 62 on iPhone – 42% of the developer sessions were on the iPhone and new iPhone SDK 2.0.  You see, Apple doesn’t sell that many Macs, as their competitors will tell you.  Macs are only 5-10% of the total number of personal computers out there.  When Apple came out with the iPod and iTunes, they found a market they could dominate.  One of the other slides in this part of the keynote said there were “Three parts to Apple now Mac, Music, and iPhone”.  Apple makes as much, or more, on their iPods and Music as they do their Macintosh computers. 

Now they are looking to dominate the cell phone market as well – specifically the Internet-enabled “smart-phone” market.  And much of the rest of the keynote showed how seriously they are taking this market.  There has been talk of this trend away from personal computers and toward “intra-personal communicators”.  People don’t want to be “tethered” to a desktop PC, but mobile with their laptops and cell phones.

Mobile devices are a first-class development platform for 2008+

Partnership and Perception

So what does Apple need to dominate the phone business that they don’t already have? (1) the Enterprise user (i.e. the Blackberry crowd), (2) the College / GenX crowd, and (3) the Techy crowd (i.e. the ones who timed every download on the “old” EDGE network), (4) Loyal Mac/iPhone fans, (5) Education users (very loyal to Apple) and (6) everyone else.

When announcing all their new features, Apple did some important things.  For the Enterprise announcements they teamed up with top Fortune 500 companies to add credibility.  They dropped key technology names like Exchange and Cisco to gain points with the corporate IT crowd. SEGA was first off with a motion-sensitive Super Monkey Ball application to appeal to fun/gamers with an app done in “2 weeks” that beats all/most N-Gage games 3 or more years into development.  Then for “everyone else” there is eBay, TypePad, AP, MLB.com, etc.  For the Techys/Mac folks there are demos of “Cow Music” and games from Pangea Software.  For Education there are Medical content/training demonstrations.

In short it shows that Apple understands the market and their customers and has something to say to all of them.

Microsoft is doing a similar thing with Silverlight and the Olympics, MLB, NetFlix, and others.

It doesn’t matter how cool your technology is, if key players are not developing for it, then users won’t have any reason to move to it.

Leveraging the “2.0” Trend

Everything “cool” right now is “2.0” – whether it is Web 2.0, Learning 2.0, etc.  Now there is the iPhone SDK 2.0.  Most developers who wanted apps on the iPhone had to create Safari/Web based apps that fit well on the iPhone browser (and this will continue). But now what is touted as an “entirely new platform” enables full APIs (down to 3D graphics, and “presence”) for developing applications.

“2.0” isn’t coming, it is here – BTW, stop calling everything “2.0”

Internationalization

It has been largely possible to develop good web sites, and have them be very successful, using only American English.  Some/few sites have worked to become multi-lingual in other primary languages. Apple made it clear that the iPhone will have support world-wide with versions and cell phone carriers in 70 different countries. 

Developers need to think about multi-language support from the very beginning of applications.

Lessons from Keynote #1: Bill Gates

by Admin 10. June 2008 06:04

There have been two interesting keynote speeches in recent memory: Bill Gates at TechEd, and Steve Jobs at WWDC.  They both reflected on the current state of technology, made predictions, and made announcements.  So what of lasting value came out of what they had to say, and how might this impact choices being made for the future?  I’ll give you my $.02 worth on both of them, and see what you think as well (and I’ll try to fix the Blog comments to get some feedback too).

Let’s start with Bill Gates (transcript).  Perhaps the most notable thing coming out of Bill’s keynote is that it will be his last as chairman of Microsoft.  I’m sure he’ll be talking in the future, but not in the same capacity.  What effect might this have on the future of Microsoft?  How much impact has he had in the last few years as chairman, and in what areas of the company?

Continued Increases in Performance

The new trend for increased performance is no longer increases in chip speed (i.e. number of instructions per second).  Now the increases will largely come from having many different cores and processors doing work together in a single machine or on a single chip.  Also, there are systems working together across different machines, even out across the Internet.  Today’s programs aren’t written to take advantage of this Parallel processing and Cloud computing.  New techniques, tools and frameworks will need to be built in order to take advantage of these new resources, or else fall behind.  Sun’s John Gage quote, and Sun’s motto, “The Network is the Computer” is turning into “The Network is the CPU”.  Programmers who don’t learn how to segment and separate their code for distributed processing will soon find themselves at the same disadvantage as those that couldn’t move from procedural programming to event-based and object-oriented techniques.

Changes in Interaction

A big theme in this talk was the future of human-computer interaction.  Now our input devices are basically keyboard and mouse and to a certain extent pen.  The future is all about “natural interfaces” like touch (and multi-touch), voice, and vision. Star Trek, especially The Next Generation, seemed to me to have a nice balance in their technology user interfaces.  There was voice interaction, tactile/touch LCARS screens, and pen-based PADDs.  The Microsoft Surface touch technology, now being demoed for Microsoft Windows 7, could easily implement LCARS.  iPhones have done PADDs even one better by including the communicator.  Really the only illusive technology is the voice-recognition, which is still very hit-or-miss with today’s technology.  The vision systems have a lot to offer.  The Wii implements vision and 3D motion in their controller to great success.  The main lesson here is that developers who do not spend some time looking beyond simple point-and-click and keyboard input may also find themselves falling behind.

Robotics

The last thing that struck me was a seemingly larger commitment to robotics than I have seen from Microsoft before. In a sense robotics is extending the range and type of outputs in much the way the “natural interfaces” were extending the inputs.  They made the interesting comparison between the robotics development environments today and the computer programming environments 30 years ago.  Developing for robots means developing for a mobile system.  It means being able to process a wide variety of sensors and inputs and make decisions quickly.  It also means programming routines that are constantly running (e.g. keeping the robot balanced, monitoring the environment, etc.) and that run independent from one another.  On interesting component in the Microsoft Robotics Studio is the very sophisticated simulation environment.  What it means is that people can create programs for very expensive or dangerous robots and run a variety of tests and actions without ever needing to test on the actual hardware.  In fact Microsoft has started a Robochamp competition to see how well people can do at programming robots in large-scale scenarios (e.g. DARPA urban challenge, Mars rover, etc.) without needing the hardware (or getting to Mars).  In a sense this is disappointing because you don’t get to do the engineering and inventing of the robot (which LEGO Robotics folks will tell you is more than half the battle).  But in another sense it means the people with a simple download can get a flavor of what this type of programming is like without a huge investment.

Creating programs that talk to a wide variety of peripherals and take input from many sensors is an important trend here.  And learning to program and test in a simulated or virtual environment is also a good thing to learn.  All-in-all I think this was a very good breakdown of some of the challenges facing developers today.

Next we’ll look at Steve Job’s perspective …..

How I Got Started in Software Development

by Admin 6. June 2008 07:34

Continuing the How I Got Started Meme… cool idea, get to know the TwitterTribe better (and others)

How old were you when you started programming?

Wrote first program at 11 - BASIC 1.0 on Commodore PET

How did you get started in programming?

In grade school I was most likely ADD, so when I got done with my school work early I was a bit "high-maintenance".  The teacher's solution was to send me to the library and let me be someone else's problem.  Fortunately the librarian was great and always had stuff to do, books, filmstrips, etc.  Then one day the Commodore PET arrived and I lost 2-3 hours a day for the rest of 6th grade.  The sample apps were fun to play, but I wanted to see how they worked.  Some apps were "protected" but many others you could see the BASIC code.  A few books and a text-editor later, we were on our way.  Wrote several semi-complex apps, but they were pretty juvenile.

What was your first language?

BASIC 1.0

What was the first real program you wrote?

First of any length was a "Lord of the Rings Adventure" game, modeled loosely on some of the Scott Adams Adventures that were poplular at the time (e.g. Adventureland, Pirate Adventure, etc.).  It was text-only (i.e. a "console app" for younglings) even had a basic parser (bunch of nested if/thens) - AppleSoft Basic.  Even made up some disks of it to sell as "shareware".  Never sold any - gave a couple away.

First program I ever got anything for was a simulation of a beam of light bouncing off a parabolic mirror for the Cranbrook Institute of Science.  They had a huge (4-5 foot diameter) parabolic mirror in one of the exhibits and wanted to simulate how the beams of light went into the mirror and back out.  The program used Apple ][ "hi-res" graphics and a game paddle (PEEK/POKE) so you could move the beams of light around and watch how they moved across the screen, off the mirror, and all went through the focal point.  Hardest part was drawing the parabola.  All I got for it was free admission and access to some of the "backroom" areas of the museum - it was worth it.  Funny thing was when I went back years later the mirror was gone but the Apple ][ was still there (as an exhibit - sigh).

What languages have you used since you started programming?

I'll define "used" as writing 2 or more programs, over 1000 lines of code.
BASIC (many variants), 6502/68000 Assembly, Pascal (several), PAL, Fortran 77, Modula-2, C, Objective C, RPL, AppleScript, HyperTalk, Mathematica, Javascript, LOGO, Iptscrae, Perl, SQL, Java, ActionScript, VBScript, VB.NET, C#, NXT-G

In the "hello world, up and coming" list are: F#, VPL, PHP

What was your first professional programming gig?

The first full-time (summer) job where I got a paycheck was at the Masonry Institute of Michigan.  They needed a Novell 2.11 server installed, Baseband wiring for a network, and mostly a shared database server application.  This was a Paradox database, which meant I spent a few months learning and programming some pretty complex apps in "PAL".  There are still some nice things you could do with PAL that are much more complex to do today.

The next summer I got paid as a research assistant programming quantum-mechanical wave functions in Fortran 77 on a Cray YMP Supercomputer.  The Cray was in California and we connected first via 300 baud modems, and later over this new "Internet" thing.

First full-time professional web programming job was using SuiteSpot with LiveWire Pro from Netscape Communications Corp to code in server-side Javascript.  You got to use Navigator Gold to edit source files which it actually compiled up to the server.  There were objects to maintain state and the suite included Informix to contain application data.  We used Oracle for some data from customers as well.  We used both Solaris and Windows NT 3.51 (with Netscape's HTTPD server, not IIS 1.0).

If you knew then what you know now, would you have started programming?

Yes. No regrets.  I might have taken computer programming "seriously" a bit sooner (I guess implying I take it seriously now).  It was always more of a hobby.

If there is one thing you learned along the way that you would tell new developers, what would it be?

Code a little every day, and use a new language or framework whenever you get a chance.  But, take a day off a week and unplug and go off the grid for a while with real live people, friends, family, nature, etc. and do things.  If it needs batteries or a plug, let it go for 24 hours.  Even just in practical terms, completely letting go of tech regularly tends to "free up your local cache" and "defrag your life".  You might need to drag some others with you, kicking and screaming from their wired "life support", but they will thank you for it, in the end (you know I don't mean literal "life support" right - a metaphor).

What's the most fun you've ever had ... programming?

It's all fun, really, just different kinds of fun.

There is "Puzzle Solving" fun, learning something new, rendering a 3D Fractal for the first time, creating something that wasn't there before.

There is "I have Power" fun, typing in a command and having the computer "obey" you for the first time.  Even now programming a LEGO robot to "do my bidding" is oddly fun.

There is "Gaming" fun, writing a basic game that someone actually has fun/laughs using, playing games (Wii Mario Kart, is fun).

There is "Helping Others" fun, seeing a start-up or inventor/entrepreneur get their site up and running and start bringing in customers, fixing a family computer (again) so they can get back to whatever they were doing (fun for the first few times)

There is "Hacking Fun" taking things apart, putting them back together (sometimes), tracking a Wii controller via Bluetooth, making a touch screen, etc.

Any and all of these could justify an "all-nighter", and be a lot of fun.  There is a lot of "un-fun" things in our business, but most of the actual coding is really fun.

Tags:

Development

Community Clips

by Admin 19. May 2008 05:26

I've been committing to get back to occasional blogging, in addition to following Twitter, so I wanted to see if I really could get out a 10 minute idea-to-blog post.

Here it goes.

I found this really handy utility on the "Office Labs" site called "Community Clips".  On the surface it is "just another screen capture utility" but I found it really handy.

Once installed it will capture the screen (or specified window) and record the input on the microphone.  So you can start recording, do a task you want to help someone with, and save the screen capture and audio down to disk.  The nice thing then is you can just upload that video and you are basically done.  The software will even automatically upload your video to the Community Clips site if you are demonstrating some Microsoft software.  Then your tips will join many others for the same product.  Since I didn't have a real worthy example, I just uploaded mine to Silverlight Streaming and YouTube.

This seems like a great way to do basic tech support or short instructional videos.  There are certainly much higher-end software for longer sessions, special features, editing, etc. - but for the quick one-off videos of this type I think a simple tool like this is ideal.

Below should be the samples - you'll need Silverlight for the top one and Flash for the bottom one.

And yes, this post, plus the video and uploads, fit in the 10 minute post goal!

p.s. The video is really boring - don't have a microphone set up right now.  Just me loading the Community Clips web page.  Just a technical test - but it works.

p.s.s. It is an interesting comparison of Silverlight Streaming vs. YouTube.  If you double-click the Silverlight version it will go full screen - at which point it is quite usable.

Community Clips

RecentComments

Comment RSS
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010 Bruce's Blog