200 Girl Geeks in a room
05 February 10 01:02 AM | llangit | 3 Comments   

And what happens then?  I attended the annual She’s Geeky unConference at the Computer History Museum in San Jose Feb 29-31, 2010 and had a great time.  Because, literally, no men are allowed (conference organizer’s rules – not mine), I thought I might share some of the highlights for the general developer population (my assumed blog audience).

Kaliya Hamlin (Identity standards expert and uber-geek) and her group of volunteers facilitate the 3-day unConference in a distinctive style.  The style of this conference is based on ‘Open Space’, that is a dynamic agenda, i.e. created on the beginning of each day.The twist is, of course, this is all [and only] technical women.   Shown below is Kaliya and the whiteboard at her session ‘The Future of Social Networks’.

Kaliya's whiteboard on Future Social Networks

First of all, simply to have 200-300 technical women together is relatively rare (at least in my experience).  The only other large gathering of technical women that I’ve attended is the annual Grace Hopper Conference.  While that conference is equally geeky, the most noticeable difference between these two conferences is that She’s Geeky attendees are from industry (most are already working), while GHC attendees are from academia (most are studying or teaching).

So, to the question then…’what do geek women want?’  Because She’s Geeky uses extensive and simple methods of capturing info, I can actually show you via photos I took while at the conference.

First, take a look at a part of the one day’s session wall (shown below).  Topics varied widely – from uber-geeky, such as ‘Command-line tricks’, to practical ‘Debugging for non-programmers’, to commercial ‘Pitching your startup – do’s and don’t’s’, to much more.  You’ll note the session I presented below ‘Teaching Girls to Program’.

session wall from She's Geeky

Here’s a picture of me teaching two attending girls to code in Small Basic (they are pair programming) as part of my presentation.  I am happy to report that the older girl’s mom blogged after the event that ”After that session, (my daughter) went home and spent all weekend, head-down, running through recipes in Small Basic.”

Girls Learning to Code

There were, in fact, a number of sessions about getting more women and/or girls into programming.  I spent some time talking with Sara Mei from San Francisco who has had success getting women started in programming teaching Ruby workshops.  Sara was inspired by my presentation to attempt to write a Logo-like IDE (i.e. Turtle-graphics) in a graphical-version of the Ruby language.  She and I made a plan to continue to share information about what we are learning when we teach.

So, besides sessions and talks, what else happens here?  Massive networking that’s what.  Information literally covers all of the walls.  Looking for a job?  Well, there’s a wall for that (shown below)

Job Board

In addition to that, there are walls for networking and women’s events to be held in the future (one part shown below).  It is always great to find out about new groups and/or events which are working to support Women in Technology.

Women and Tech Groups

One ‘trend’ in this year’s conference that I was particularly happy to see was the outreach to younger women (high school and college students) and even more attendees bringing their daughters to the conference.  Below is just one mom and her geeky (and stylish!) daughter.

Geek mom and geek daughter

All in all, it was another great She’s Geeky event and I caught up with women geeks I already knew as well as made many new connections.  I really don’t know where else I could find sessions on ‘Bee Keeping’, ‘Windows 7’, and  ‘Personal Genome Citizen Science’ in the same room (see picture of topics below)!

Friday's topics

Happy Programming!

Lessons Learned – Teaching Kids Programming
28 January 10 12:06 AM | llangit | 1 Comments   

**updated** check out the NEW sample SmallBasic program in the window at the bottom of this blog post

On Saturday, I worked with a group to teach more kids to program.  We had around 20 kids and 5 adults in our session.  QuickStart was kind enough to provide a training room and to preload SmallBasic and our extensions onto the computers for the kids.  Because this was our largest and longest session to date (5 hours of coding vs. a maximum of 2 hours sessions previously), we learned lots and want to share here.

Overall, based on written surveys, the event was rated 3.9 out of 4.0 and 100% of the participants said they would like to attend another session.  Also the event was held on Saturday, so kids enjoyed coding in our unClassroom-style even on their weekend.

Pair Programming

Not only did the kids have fun, but also they wrote code around the all of the following concepts on their first day of programming:

1) objects, methods, properties
2) variables
3) for loops
4) if statements
5) sub routines
6) arrays
7) events

We (again) validated many of the methods we’ve used previously, such as code first, pair programming, intentional coding, recipe translation, recipe variations, iterations, and constant visual feedback.

What worked (new or reinforced in this session)

Turtle graphics recipes and variations – the recipe, recap and variation method we’ve created fits well into one-hour blocks of learning.  We used 2 turtle graphics recipes (Simple Square and Pentagon Crazy)in a two-hour block and this flowed well.  

We also noted that the SmallBasic extensions we've written facilitated faster intuitive coding.  For more detail see CodePlex documentation on them.

unClassroom (unTeaching) – well, if you are going to teach kids then you should have / be:

1) Energetic – I did the limbo in the hall at second break with the kids
2) Fun – we raise our hands for quiet and yell to get attention (teachers and kids)
3) Unexpected – LLewellyn juggled* water bottles to demonstrate the concept of Arrays; we ‘mixed up’ the pairs after each recipe 
*he is a trained (juggling) professional
4) Action-oriented – coding starts 3 minutes into class, kids get up and move (switch between typing or directing [talking]) every 5 minutes (pair programming switches)
5) Helping – we were lucky enough to have 2 volunteer from DigiGirlz Fargo, ND (Beth and Billie) helping out as proctors.

Llewellyn and Lynn unTeaching

What we are still working on

1. refining / improving core recipes – make appropriate length and chunks (2 min verifications)

2. variations for game recipes

3. physical activities in between coding– for example, live spirograph, etc…

4. quizzes as checkpoints, preferably test-driven, that is write code and verify results in the IDE

5. setup verifier – check our example (If you can import and run the program id RZZ532-0) you have everything working with SmallBasic and our extensions – we will also create an install .msi and will post it on CodePlex

6. writing a small app to capture the state of each student’s work from the instructor computer so that can we better monitor how fast or slowly to teach

7. generating program results as certificates after passing quizzes

What’s next

Next Live Events 
DigiGirlz Denmark – mid Feb 2010,
Dare2BDigital SVC – Feb 27

Next Online Materials
Adding to our existing screencast library
Recording train-the-trainer screencasts for teachers & parents

The author of Small Basic, Vijaye Raji, has been making some improvements too.  Take a look at the new Silverlight viewer for published programs.

Read about our previous events here.

Happy Programming!

Windows Azure for Java Developers - Resources
20 January 10 07:24 AM | llangit | 0 Comments   

 eclipse-image

Tonight I visited the San Diego Java User Group and took part in a coding dojo (more about that later).  While there, I mentioned to the attendees that we do have some resources for Java developers to use if they want to try out using Windows Azure or SQL Azure in their applications.

To that end, I’ll list what I know here and ask that any Java developers who do try out these tools or samples to let me know how this stuff works (or doesn’t work) for your applications.

Of course Windows Azure consists really of three big buckets: compute, storage and more services (such as Service Bus and Access Control). On the compute services side, developers pick from web or worker roles.  Oversimplified a web role is similar to a web site and worker role is similar to an OS service (i.e. no UI).  This blog post has more detail.

Azure Product Group lead Steve Marx writes in his blog about which compute roles are available for Java developers and basically explains why you’d generally only use a WORKER role below:

“You could invoke java.exe (via copy-deployment of the JRE) from a web role, but I would caution against using it as a way of responding to web requests, because starting a process on each web request is pretty inefficient.  However, in the worker role, invoking an executable is perfectly reasonable.

The worker role in Windows Azure is a very simple pattern.  You write a .NET assembly with a Start method, which never returns.  To run Java code instead, you just need to write a .NET assembly which invokes java.exe from that Start method.

From that Java code, you can do whatever you want, but typically you’ll want to poll a Windows Azure queue and maybe write results back to storage.  Because Windows Azure storage is based on HTTP and XML, it’s not too hard to write Java code to interact with storage.”

Below is a picture of the architecture as well.

Java interop with Windows Azure

Assuming you’d want to try this out, your first step is to grab the Windows Azure SDK for Eclipse / Java.    This SDK includes the following:

  • Java classes for Windows Azure Blobs, Tables & Queues (for CRUD operations)
  • Helper Classes for HTTP transport, AuthN/AuthZ, REST & Error Management
  • Manageability, Instrumentation & Logging support
  • Support for storing Java sessions in Azure Table Storage
  • After you download and install these tools, then you’ll also see some additions to Eclipse.

    The samples are written with a PHP web role and Java worker role.  The web role really can be written in any language, we just wrote them with PHP to show interoperability in two non-Microsoft languages in our samples.

    What you’ll see in Eclipse after you install the tools is a new View, called the “Windows Azure Storage Explorer” (shown below).  Using this View, you can see your application’s contents of the three Windows Azure storage types, blobs, queues or tables.

    Windows Azure Storage Explorer

    For even more information, check out a session from PDC09 (called ‘Building Java Apps on Azure’ ), which is based on coding up a sample application.  In this session, Steve Marx reviews an application that follows the pattern described above, i.e. uses Java for a Windows Azure worker role with Windows Azure queued storage.

    SQL Azure

    If, rather than Windows Azure storage, you’d prefer to use SQL Azure (more RDMS-like storage than Windows Azure storage [tables, blob or queues]) as storage for a Java application, there is NOTHING that you need to install in Eclipse.  You may wish to download the CTP of SQL Server 2008 R2, so that you can use SQL Server Management Studio to connect to your SQL Azure instance for convenience.  This is not required however.

    Happy Programming!

    Teaching Kids Programming – next session Saturday, Jan 27 in Irvine, CA
    18 January 10 04:09 AM | llangit | 0 Comments   

    See the blog post before this one for details.  Kids 10-17 welcome.  Please email me via this blog with child’s name and age to confirm enrollment.

    Here’s a short video we made about what it is we are doing in these sessions – enjoy!

    Filed under: ,
    Lessons Learned – Teaching Kids to Program in San Diego
    14 January 10 11:58 PM | llangit | 1 Comments   

    **updated** 01/15/10

    Yesterday at Wintriss Technical School 14 kids aged 10-17 joined us for a 2 hour session. During  these 2 hours we introduced the kids to programming using the exact same recipes we developed for Small Basic.

    This time we used a different language (which will remain nameless) and a different IDE (also nameless). We were delighted to discover that the recipes and techniques worked in different languages!

    Pair Progamming is fun!

    We re-validated many of the methods we’ve used previously, such as code first, pair programming, intentional coding, recipe translation, recipe variations, iterations, and constant visual feedback.

    Here’s why:

    • Code First – action (i.e. write code based on intent first), output (see it run, or visual output), then explanation (reviews and quizzes).  ‘Just do it’ absolutely works with kids.  It’s engaging and amazingly fast, and, importantly, results in accelerated learning, interest AND retention. 
    • Pairing – For teachers, keeps the kids together; For kids makes coding social and fun.
    • Intentional Coding – Allows for understanding, not just regurgitation when translating business requirements into code
    • Recipes – Separates out the What & the How of programming. Allowing for small bite sized steps.
    • Variations – For teachers, reinforces concepts & speeds up learning; For kids, brings joy! This is where they start to own the code, and want to explore.
    • Iterations – We switch which kid is at the keyboard every 5 minutes, and pairs after every recipe. This prevents possible negative effects of pairing (i.e. one person just watching) and is especially good with kids because it keeps them moving.
    • Constant Visual Feedback – When you can immediately see the results of your code, the intention shines clearer, and mistakes stay minor. It’s also much more fun, and encourages exploration.

    Square Recipe

    Simple Square

    Variation of Square
    (can you see how this shape comes from the same steps as the simple square with different parameter values?)

    Variation of Square Recipe

    We also learned some new things in this session. Logistics are extremely important, respect the kid’s energy more than the clock, don’t start a project you can’t finish. I know you are thinking these are obvious things, but remember we are new teachers.

    Our next session will be Saturday, January 23rd from 10am – 4pm. It will be a day-long session, where we are aiming to teach a lot more. It will be held at QuickStart in Irvine, California to attend send me an email via this blog with your child’s name and age. Teachers are also welcome to participate.

    For more information please see my previous blog posts (all tagged with ‘helping’). 

    Happy Programming!

    Teaching Kids to Code – FREE classes in Jan 2010
    07 January 10 10:28 PM | llangit | 3 Comments   

    We will have two sessions this month.  Kids 10 to 17 years old are welcome to attend.  Please email me via this blog to confirm with kid’s name and age and which session (date / location).

    If you attended last month, you are welcome to return and learn more.

    First the San Diego information – event on Wed, Jan 13 from 4pm to 6pm.

    learn_to_program_san_diego_wintriss

    Next the Irvine information – event on Sat, Jan 23 from 10am to 4pm.

    learn_to_program_quickstart

    Looking forward to seeing you there.  Also, if you are an adult and would like to join our class, if there is space, you are welcome to try out learning to program – but, watch out, the kids learn really quickly and you’ll have to keep up! ;)

    Where’s SoCalDevGal in January 2010?
    29 December 09 06:20 PM | llangit | 0 Comments   

    Yes, I am a ‘calendar girl’, planning, planning, planning for 2010 already.  Lots has been filled in to my January 2010 calendar already, so I thought I’d share here.

    Week 1 – Jan 3 to Jan 9

    Sat, Jan 9 -  9am to 5pm – ENVISION high school girls tech con at UCSD (opening speaker)

    Week 2 – Jan 10 to Jan 16

    Mon, Jan 11 -  9am to 5pm – Client Visits (Azure prototyping) in LA
    Wed, Jan 13 -  5pm to 9pm – guest teaching at Wintress Technical School in San Diego
    Thurs, Jan 14 - 6pm to 9pm – attending PHP UG in San Diego
    Sat, Jan 16 - 1pm to late – hosting SuperHappyDevHouse in San Jose

    Week 3 – Jan 17 to 23

    Fri, Jan 22 - 9am to 5pm – custom Azure class for enterprise client in LA
    Sat, Jan 23 – 10am to 3pm - ‘Teaching Kids to Code’ session, at QuickStart in Irvine – if you are interested in having your 10 to 17 year old child attend, PING me ASAP via this blog!

    Week 4 – Jan 24 to Jan 30

    Tues, Jan 26 – 9am to 6pm – speaker for Catalyst conference in SFO
    Wed, Jan 27 – 6pm to late – TwiistUp showoff in LA
    Thurs, Jan 28 – 9am to 5pm – TwiistUp con in LA
    Thurs, Jan 28 – 8pm to late – New Media Vault tech social in LA
    Fri/Sat/Sun, Jan 29-31 – She’s Geeky unConference in San Jose
    Sat/Sun, Jan 30-31 – SoCalCodeCamp in Fullerton (I’ll be in NorCal, but if you are in SoCal, YOU should go to this one!)

    Of course, things change, so I’ll revise here as more events show up.

    Developing Windows Azure applications - Setup
    24 December 09 04:40 AM | llangit | 1 Comments   

    Windows Azure logo

    I’ve been working with Windows Azure (post PDC09 build) to take a look at the basic mechanics of coding and deploying applications.  To that end, I wanted to share what I’ve learned so far in this post.

    First, I’ll talk about what you need to download and install to get started.  There are several categories of items to get in order for you to start developing.  Of course what you’ll need is dependent on what you intend to build.

    I initially wanted to build ASP.NET C# applications that either used Windows Azure storage (i.e. table, blob or queue) or that used SQL Azure storage (i.e. RDMS-like tables).  I’ll remind you that other application development languages are supported, such as PHP.  Also if you were simply using SQL Azure as storage, there is no requirement that the front-end application actually be a Window Azure application.

    Now to the tools. 

    First you’ll need an OS and a version of Visual Studio.  VS2008 SP1 is the minimum version.  I used Windows 7 and VS2010 Nov 2009 CTP.  Using the latter reduces the configuration steps for the IDE.  Steps needs for VS2008 SP1 are as follows:

    •Windows Vista SP1 (when installing on Windows Vista)
    •IIS 7.0 (with ASP.NET, WCF HTTP Activation and optionally CGI)
    •Microsoft Visual Studio 2008 SP1, Microsoft Visual Studio 2010 Beta 2 or Microsoft Visual Web Developer 2008 Express Edition with SP1
    •SQL Server 2005 Express Edition (or above)
    •Hotfix: Native Debugging Improvements (not required for Visual Studio 2010)
    •Hotfix: Improve Visual Studio Stability (not required for Windows 7 RC or later)
    •Hotfix: Support for FastCGI on the Development Fabric (not required for Windows 7 RC or later, or Windows Server 2008 SP2 or later)

    If you plan to work with SQL Azure, then you’ll want to use SQL Server 2008 standard or better RC2 CTP (released at PDC09).  The reason for this is that this build allows SSMS management of SQL Azure and greatly simplifies working with your cloud database.

    Again, if working with SQL Azure, you may want to pull down the SQL Server Sync Framework, as the latest version can integrate with SQL Azure as well.  There are also downloadable power pack tools for the SQL Azure sync framework.

    Next you’ll need the Windows Azure SDK.  This will give you tools, such as the Development Fabric and the Development Storage which will help you to work with local instances of your Windows Azure applications.  It also includes important documentation about Windows Azure.

    You may also want to download the Windows Azure AppFabric SDK if you are planning to create applications that make use of AppFabric features, such as the Service Bus or Access Control.

    AFTER you’ve downloaded and installed the Windows Azure SDK AND configured your particular setup of Visual Studio, you’ll then want to download and install the Windows Azure add-in for your particular version of Visual Studio, so that you’ll have project templates to start with.

    Then you may want to grab some working sample applications to play around with.  I recommend the Windows Azure Platform Training Kit.  It contains presentations, labs and more.  It’s a great place to start learning to write Windows Azure applications.

    Next, I’ll talk about the current account (token) acquisition process.

    There are two types of tokens that you currently (as of Dec 23, 2009) need to deploy Windows Azure applications.  The first is an application token.  Redeeming a valid token (here) allows you to set up a compute and a storage account.  The storage account includes endpoints for the three types of Windows Azure storage – tables, blobs or queues. 

    The second type of token is for SQL Azure storage. Redeem your token here. This allows you to create RDMS-like databases with relational tables and other familiar RDMS objects, i.e. view and stored procedures.  Be aware that there is NOT 100% parity between SQL Server features available locally and in the cloud.  In a future blog post, I will detail the differences.

    Currently you do NOT need a token to develop using the Windows Azure AppFabric.

    The token acquisition process will change as we move from CTP to GA (general availability or live) in 2010.

    To request tokens, you go here, register with a Windows Live ID and then you’ll get and email with a key, which you will redeem on the Windows Azure portal for a token.

    Sign in to redeem your Windows Azure token

    *Tip – Currently the Developer site CodeProject has a system which allows you to request and to receive tokens immediately.

    After you get your token via email, then sign in and then click on the Account tab of the Windows Azure portal, then on the ‘Manage My Tokens’ link as shown in the screenshot below.

    Managing Windows Azure tokens

    Next copy and paste your token into the text box and then click ‘Claim Token’ as shown in the screenshot below.  Of course, I’ve ‘scratched out’ the actual token values here.

    Redeeming a Windows Azure token

    After you’ve successfully redeemed your token, then you’ll have a number of service instances, either Windows Azure compute, Windows Azure storage or SQL Azure server to allocate.  To allocate one of those instances, then click on the ‘New Service’ button on the left side of the Windows Azure portal and you’ll see the page which lists your existing services.  On that page click the ‘New Service’ button on the upper right and then you’ll see the number of services remaining unallocated as shown below (for example for Storage, I have 4 services to allocate, for Hosted Services [or Compute] I have 0 unallocated.)

    allocating a new service instance in Windows Azure

    In the case of Windows Azure, when allocating a service instance, you’ll be asked for a service name and description and then you’ll be shown the upload service page.  This page has two upload areas – Staging or Deployment.  I am showing my first test application, (which has already been deployed to production) in the screenshot below.  You will use the name of the service as well as the physical storage endpoint in your configuration files (for tables, blobs or queues) when you move from development to staging and then to production.

    Deployment Portal for Windows Azure 

    Then I’ll describe the deployment process and the three sample applications that I’ve deployed to date.

    Deploying the First Sample Windows Azure Application – ToDo List

    I worked with three of the sample applications in the Windows Azure Platform Training Kit. I started with the simplest possible application, the ‘ToDo’ List.  The deployed application is at this location.  Working with this application was a pretty straight-forward process. 

    my first deployed Windows Azure application

    The only complexity I ran into when working with the first sample was the dependency on .NET 3.5 (rather than the default of .NET 4.0 in Visual Studio 2010).  After I changed that setting in the VS IDE, it was simply a matter of publish, to create the two required files for deployment (*.csdef and *.cscfg) and then upload the files to staging and then push them to production via with Windows Azure portal.

    The screenshot below shows where you change the version of the .NET framework from 4.0 to 3.5 in VS2010.  Also you must run VS2010 ‘as administrator’ to use the Windows Azure tools (Development Fabric and Development Storage visualizers).

    Changing the version of .NET in VS2010 

    The other thing I did when deploying this first test application was to test out the ability to configure multiple Windows Azure compute instances via the portal.  I did this by clicking on the ‘Configure’ button and then by setting the number of compute instances to ‘2’ in the XML configuration file (show in the screenshot below).

    Configuring the number of instances to 2

    Coding and Deploying the Second Application – Windows Azure Guest Book

    The next application is a an ASP.NET application which uses both a web and worker role.  It is a guest book application and I’ve deployed it at this location.

    Windows Azure Guest Book Application

    What is interesting about this application is that it uses both a Windows Azure web (for UX) and worker (for uploaded picture re-size) role.  The main application is written in C#, the worker role is written in VB.NET.  It is also interesting to see how Windows Azure queue storage is used here, i.e. notify on item [picture] upload, then resize the image.  The screenshot below shows part of the sample code.

    Windows Azure queue storage

    Of course when you move from development to production you will want to change your Windows Azure storage settings from using the default (using the local storage) to using the cloud-based storage.  You can do this either before you deploy (called ‘publish’ in Visual Studio) of after, using the ‘Configure’ button in the portal, and then manually editing the XML file.  You’ll need both the Windows Azure storage endpoint URLs (different ones for tables or blob or queues) and also the primary access key.  I’ve shown where this information is displayed in the portal (with the keys blacked out) in the screenshot below.

    Windows Azure storage endpoint

    Working with SQL Azure storage.

    The next application is a ASP.NET application which uses SQL Azure storage.  It simply returns the result of a query and displays it on a web page.  I’ve deployed it at this location.

    SQL Azure application sample

    One of the interesting things about working with SQL Azure was creating the database on the cloud instance and populating that database with sample data.   You will probably use a combination of the SQL Azure portal (website), to create the database and to configure the firewall rules and other tools.  The screenshot below shows the SQL Azure portal.

    SQL Azure portal

    I also used SQL Server 2008 R2 CTP to create and populate my cloud database as the process was significantly easier, using SQL Server Management Studio, as shown in the screenshot below.

    Connecting to SQL Azure with SSMS

    It is interesting to note that you can execute some, but not all, T-SQL statements via SSMS while connected to SQL Azure.  As previously mentioned, in a subsequent blog post, I’ll detail differences between local and cloud-based SQL databases.  I used the simplest possible method to populate my cloud-based SQL Azure database with sample data –that is via a series of INSERT statements.  You may also note that we’ve added support for bcp in this release as well.

    What’s next?

    As I continue to explore the Windows Azure developer platform, I’ll work through the samples, including working with the AppFabric.  Next I’ll be writing some applications from scratch.  These will include applications that use non-.NET languages, such as PHP and Java.  I’ll continue to blog about my experiences and will be happy to hear from you about yours as you start coding for Windows Azure.

    Teaching Kids to Program with SmallBasic - Screencasts
    22 December 09 05:40 AM | llangit | 0 Comments   

    I’ve been working on developing more and better material to use to teach kids to program with SmallBasic.  To that end, LLewellyn Falco and I have recorded the first few sessions in a series of screencasts about these methods.

    These screencasts include the following:

    1) How to get set up, i.e. install SmallBasic and SmallBasic Extensions
    2) How to code your first SmallBasic recipe from the SmallBasic wiki
    3) How to code your first SmallBasic recipe variations

    Enjoy!  We welcome feedback on this methodology (i.e. recipes and variations) as we are intending to create courseware for much more than one hour introductory events in 2010 (such as Digigirlz and TeachCamp).  We envision creating this courseware for a one-year introductory program  ‘Introduction to Programming’ for kids ages 10 to 17.  Let us know how you think we are doing!

    Screencast – How to get setup

    Screencast – Coding your first recipe in SmallBasic

    Screencast – Coding recipe variations

    Happy holidays and happy coding!

    Filed under:
    Teaching Kids to Program at Microsoft in Irvine, CA on Mon, Dec 21
    21 December 09 12:26 AM | llangit | 0 Comments   

    If your kids are joining us at Microsoft Irvine tomorrow for the testing of 'Teaching Kids to Program Session', please be on time (either 9am OR noon OR 3pm), bring a PC laptop if possible. The address is 3 Irvine Plaza, Suite 1600, Irvine (bldg next to Hyatt). You may drop off your children for one session (you may also stay with them during the class), if dropping off, then please provide us with your (parent’s) cell phone number when you sign in.

    We are looking forward to seeing you there.

    Filed under:
    Teaching Kids to Program – Today’s Lessons Learned
    15 December 09 05:54 AM | llangit | 2 Comments   

    image

    In preparation for some larger scale events in 2010, I am working with a team of volunteers to develop new teaching methods and extensions to SmallBasic  to teach children to code.  Today we had our first live test (with 12 kids aged 9 to 16 – both girls and boys), here’s some of the things we found:

    1) The recipe method works – We’ve written lessons using recipes (requirements in English) which the kids then translate into SmallBasic line by line.

    SmallBasic Recipe Wiki

    2) Pair programming works – So long as the pairs are NOT siblings and so long as the one typing and the one talking SWITCH at regular intervals, we found this method to work very well.

    3) The environment matters – We created wall posters using the wiki recipe graphics (for inspiration) – these piqued the kids’ curiosity and served as inspiration.  The poster below shows the code where we saved the recipe, which can be imported directly into SmallBasic (via the import button). 
    Of course also food, movement – snacks and frequent physical movement are a must to keep the attention span high and to keep all of the kids engaged.
    DigiGirlzFlower Recipe
    4) Variations work – after we got all the kids completely through a recipe, we verbally introduced variations, to get them thinking about the possibilities.  We’ll probably make a screencast of these variations as we haven’t written them down anywhere yet.

    5) Extensions work – we’ve written several new objects for SmallBasic, based on previous testing with kids (on the phone), such as creating a replacement for the built-in Turtle object with our Tortoise object.  We’ve done this to make the objects and methods more intuitive and discoverable and to add documentation.  We’ll continue to write more extensions as time allows.  We’ve posted our extensions on CodePlex
    SmallBasic Extensions on CodePlex

    Here’s a sample of the Tortoise object and some new methods and documentation we wrote via extensions.
    Tortoise.GetPenColor()

    Here are some areas that we are still working on (and hope to learn more about in our next live test, scheduled for Microsoft Irvine next Monday, Dec 21).

    If you’d like to have your child (ages 10 to 17, boys or girls) join us in Irvine for a two hour test session, please send me mail via this blog with the following info:

    Name, age, time (9am OR Noon OR 3pm) and whether your child can bring a PC laptop with SmallBasic installed on it.

    Areas of focus for next test:
    1) Amount of conceptual explanation vs. time coding
    2) Best method(s) to present conceptual information, i.e. in the SmallBasic IDE or verbally or in the wiki (example below)
    3) Which recipes (pick two or three of all in the wiki) we should try to teach during a one-hour long event
    4) Most effective ways to follow up / continue the learning after the initial introductory class.

    Example lesson from the SmallBasic wiki, explaining Subroutines
    SmallBasic Wiki SubRoutines 

    If you are working with SmallBasic in any way, we’d love to hear from you.  What has worked when you are teaching kids and what has not. 

    Happy coding!

    Windows Azure information for Architects (includes #PDC09 announcements)
    01 December 09 10:20 PM | llangit | 0 Comments   

    I’m attending the Microsoft Architect Council Presentations today in At the Microsoft office in Irvine, CA.  Our local Architect Evangelist, David Chou is presenting.  Several attendees have asked for his decks so I’ll post them here.  The first deck is an overview of the capabilities of the Windows Azure platform (which includes the announcements from PDC09).

    The next deck is on SOA and Cloud Computing

    Check out David’s blog as well.

    Also watch my blog for the schedule of the next round of local MSDN Developer events.  The content will be all about implementing Windows Azure, SQL Azure and .NET Services for developers.  I will publish the schedule and outline here as soon as it is finalized.

    Filed under:
    Windows Azure ROI Calculator
    01 December 09 08:02 PM | llangit | 0 Comments   

    Why Azure?  Well, how about saving money?  Need to figure it out – try out the new Windows Azure ROI / TCO calculator

    Windows Azure ROI TCO calculator

    After you agree to the terms, then you have to fill in a one page questionnaire.  I put in some sample data to illustrate.  The most interesting question is about the expected ‘growth profile’ of your application, i.e. steady, predictable or spiked growth, etc…

    sample data for Windows Azure TCO

    You are then presented with a detailed cost estimate, which includes estimated costs for Windows Azure, SQL Azure, .NET Services and bandwidth costs.

    Azure cost estimate

    The next tab breaks down the Windows Azure costs.  This includes platform application migration and setup cost estimates (shown below) and more.

    Windows Azure costs

    It also includes estimates for Platform IT Administration and Support and then a Windows Azure Platform TCO rollup for your application.

    Windows Azure pricing second screen

    The last tab shows a detailed ROI comparison including the important ‘cost-savings’ estimated value.

    ROI Windows Azure roll up

    I’d be really interested in hearing the usefulness of this tool.

    Happy programming!

    Filed under:
    Teaching Kids Programming – Extending SmallBasic
    29 November 09 01:36 AM | llangit | 0 Comments   

    image

    I’ve been pair programming with Llewellyn Falco and wanted to share a bit of what we’ve been working on.  We’ve written and published some extensions to SmallBasic on CodePlex and would love your feedback.

    image

    To use these extensions, you’ll need

    1) Small Basic – download it here
    2) Small Basic Extensions – download here and then upzip
    3) Create a folder named ‘lib’ in the Small Basic directory and copy the two unzipped filed into in ‘SmallBasicFun.dll’ and ‘SmallBasicFun.xml’

    image

    We’re also continuing with our new ‘recipe’ method of teaching. To use it, just click the link(s) on the wiki page, then import the requirement and then start coding!

    image

    Take a look at our wiki page and try out some recipes with the built-in objects, such as the Turtle, and then the object we’ve added, such as the ‘Tortoise’

     image

    We’ll start conducting formal testing with kids (boys or girls, ages 12 to 17) on the dates / times / locations below.  If you’d like your child to be a tester, email me via this blog. You do NOT have to bring anything, we’ll have laptops set up, you CAN bring your own laptop if set up per instructions above.  It is important to BE ON TIME for the session, if late, you can join the next session.  Each session is only two hours.  Parents are responsible for transportation and parking.  Parents are welcome to stay with their children.

    1) Monday, Dec 14 – Microsoft office San Diego pick any one of three 2-hour sessions (starting at 9am, noon or 3pm)

    2) Monday, Dec 21 – Microsoft office Irvine, same time slots as above

    We intend to use this courseware / extensions at DigiGirlz events and at TeachCamps in California in 2010.  We’ll also be making our work broadly available, including screencasts to train-the-teachers in 2010.  If you’d like to work with us on this project (or on other kid’s courseware, including Kodu, XNA, Robotics and more, please contact me via this blog).

    Happy coding!

    Filed under:
    Teaching Kids to Code – Graduating from SmallBasic
    29 October 09 09:34 PM | llangit | 2 Comments   

    Regular blog readers may know of my work with Microsoft’s free kid’s coding IDE, SmallBasic as a tool to introduce the fun of coding to DigiGirlz.  As I work with my volunteer developer teams on improving the way we work SmallBasic (more on that later in this post), I am thrilled to see a major enhancement in SmallBasic itself.

    Kudos to the incredible Vijaye Raji (a developer on our Visual Studio team).  He’s not only created SmallBasic alone and on his own time, but he continues to improve it.  He’s recently released version 0.7, which includes the new ‘Graduate’ Feature.  This allows SmallBasic applications to be seamlessly migrated to VB.NET.

    To see this in action, download SmallBasic (it’s FREE) and install it.  Open the IDE and write a simple program (sample screen below).

    SmallBasic

    After writing your program, simply click on the new ‘Graduate’ button on the toolbar and the magic happens.  Just fill in the destination on the pop-up dialog, and you’re done!

    Graduate SmallBasic dialog

    Just for fun, I’ve installed the Visual Basic Express 2010 beta 2 on my machine and am using it to open the newly created VB project.  All of the Express editions of Visual Studio are also free – you could also use Visual Basic Express 2008.   Because I did use 2010, there is a ‘update project’ wizard that pops up – just click through those dialogs and enjoy the results (shown below).

    VB 2010 Express Beta 2

    Of course, this being Visual Studio Express, you can enjoy all the features included in the Express Editions of Visual Studio, such as the Object Browser (shown below), debugging, etc… I am so excited about these capabilities as we are  teaching kids over the long term!

    VS Express 2010 Object Browser

    In addition to the new ‘Graduate’ feature, my team of community technical volunteers and I are continuing to work with Vijaye to prioritize requests for improvements to the SmallBasic IDE, based our our work teaching with it. 

    Along with these improvements in tools, I have been working with community developer and technical instructor Llewellyn Falco on improvements in teaching methods and he’s come up with a great idea to ‘give legs’ to SmallBasic after the live classes we teach.  His concept is to use ‘recipes’ for further exploration.  We are quite interested in your feedback on this approach.  Here’s a link to the wiki where we are posting recipes (partial screenshot shown below as well).

    SmallBasic 'recipe'

    What do you think?  Let us know.  We are particularly interested in hearing feedback from middle and high-school technology classroom teachers on our new approach, so if you are reading this blog and know a teacher – please pass along the link – thanks!

    Filed under: ,
    More Posts Next page »

    Search

    This Blog

    Syndication

    Page view tracker