First time here? Check out the site's "greatest hits" or read a post from the archives. Feel free to leave a comment or ask a question, and consider subscribing to the latest posts via RSS or e-mail. Thanks for visiting!
Do you Tweet? Follow me on Twitter @shanselman or learn how to use Twitter!

Theres A Story About Me And M

Posted 2002-10-09 02:22 PM in Diabetes | TechEd | Speaking.

There's a story about me and my diabetes in the New Straits Times!  The NST is a newspaper in South Asia, primarily Malaysia.  This story is significant since I live in Portland, Oregon!  I did this interview while I was at TechEd 2002 Malaysia this summer.  Thanks to Umah Papachan for the story!



I've ported my "Tiny Abstract OS and CPU in C#" project from GotDotNet over to VB.NET.  I've also put up the PowerPoint deck from my presentation on this project at TechEd 2002 Malaysia.  The Tiny OS VB.NET version is up here.  (no warranty express or implied).  I had a little trouble with the conversion initially, but it went smoothly in other places.

Next step will be to see if I can get it running on my Linux Mono machine...





Top subtle (as a brick in the face) issues when converting my Tiny OS from C# to VB.NET:

  1. Array Lengths...I knew we were warned, and there were all those arguments from Beta1 to Beta2 to RTM, but still...

         byte[] bytes = new byte[4];

    has length 4, from 0 to 3

         Dim bytes(4) As Byte

    has length 5, from 0 to 4

  2. Integer Divison... "/" and "\" are different operators in VB.NET than C#.  "/" doesn't round, while "\" does...

         (uint)(boundary * ((number / boundary) + ((number % boundary > 0) ? 1: 0)))

    where boundary is 16 and number is 82 returns 96.  While "equivalent (not)" VB.NET

         CType(boundary * ((number / boundary) + IIf(number Mod boundary > 0, 1, 0)), Integer)

    where boundary is 16 and number is 82 returns 98 because (number / boundary) returns 5.25, not 5.  This was fixed by using a backslash.

         CType(boundary * ((number \ (BACKSLASH) boundary) + IIf(number Mod boundary > 0, 1, 0)), Integer)

    This is one of these obvious, silly things you've known since VB3, but you don't think about it when converting from C# to VB.NET. 

  3. UInt32 isn't supported in VB, so I had to wimp out and switch to Integers.



And the answer shall come...this is it.  This is why I love the hell out of .NET.  I tell this to my students when I teach .NET, but each day I use the Framework I start to live it even more.  Sure, there are things you fight with, there are things you hate, but really when it comes down to it: A LOT of good thought was put into the Framework.  There are Utility Classes galore.  (Of course, there's no HashMap, but that's another day)

What I did in a cheesy moment (a 3am moment) of frustration:

public unsafe static byte[] UIntToBytes(uint UIntIn)
{
    //turn a uint32 into 4 bytes
    byte[] fourBytes = new byte[4];
    uint* pt = &UIntIn;
    byte* bt = (byte*)&pt[0];
    fourBytes[0] = *bt++;
    fourBytes[1] = *bt++;
    fourBytes[2] = *bt++;
    fourBytes[3] = *bt++;
    return fourBytes;
}

Here's what it looks like now (in VB.NET):

Public Shared Function IntToBytes(ByVal IntIn As Integer) As Byte()
   
Return BitConverter.GetBytes(IntIn)
End Function

I can't believe I stooped to writing unsafe :) code to do something as simple as getting the Bytes out of an Integer.  Fool me once, shame on you.  Fool me twice, shame on me.




Contact

Sponsors

Hosting By

Hot Topics

Tags

Calendar

<October 2002>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

Archives

February, 2010 (8)
January, 2010 (13)
December, 2009 (13)
November, 2009 (7)
October, 2009 (19)
September, 2009 (11)
August, 2009 (12)
July, 2009 (21)
June, 2009 (26)
May, 2009 (16)
April, 2009 (13)
March, 2009 (17)
February, 2009 (17)
January, 2009 (18)
December, 2008 (32)
November, 2008 (17)
October, 2008 (22)
September, 2008 (16)
August, 2008 (14)
July, 2008 (25)
June, 2008 (19)
May, 2008 (17)
April, 2008 (17)
March, 2008 (26)
February, 2008 (21)
January, 2008 (28)
December, 2007 (19)
November, 2007 (17)
October, 2007 (31)
September, 2007 (39)
August, 2007 (37)
July, 2007 (43)
June, 2007 (37)
May, 2007 (32)
April, 2007 (38)
March, 2007 (29)
February, 2007 (46)
January, 2007 (31)
December, 2006 (27)
November, 2006 (31)
October, 2006 (32)
September, 2006 (39)
August, 2006 (34)
July, 2006 (40)
June, 2006 (18)
May, 2006 (31)
April, 2006 (34)
March, 2006 (30)
February, 2006 (38)
January, 2006 (44)
December, 2005 (19)
November, 2005 (34)
October, 2005 (24)
September, 2005 (37)
August, 2005 (20)
July, 2005 (24)
June, 2005 (33)
May, 2005 (16)
April, 2005 (22)
March, 2005 (34)
February, 2005 (15)
January, 2005 (37)
December, 2004 (28)
November, 2004 (30)
October, 2004 (34)
September, 2004 (22)
August, 2004 (34)
July, 2004 (18)
June, 2004 (64)
May, 2004 (49)
April, 2004 (21)
March, 2004 (29)
February, 2004 (29)
January, 2004 (36)
December, 2003 (25)
November, 2003 (24)
October, 2003 (59)
September, 2003 (42)
August, 2003 (24)
July, 2003 (44)
June, 2003 (29)
May, 2003 (21)
April, 2003 (30)
March, 2003 (27)
February, 2003 (47)
January, 2003 (50)
December, 2002 (31)
November, 2002 (38)
October, 2002 (44)
September, 2002 (15)
May, 2002 (2)
April, 2002 (4)

Google Ads