March 9, 2018 Meeting

Jellyvision Field Trip Debriefing

Last Friday, on a day off from school,  9 of our members enjoyed an amazing day at Jellyvision, getting an inside look at what it is like to work at this tech company in a very wide variety of different roles, technical, business, and creative. Many of the brilliant and talented people at Jellyvision gave their time to make this a very special event for all of us.  Kate from Jellyvision will be attending our meeting this Friday and we will have an open discussion about the experience and insights gained. How were you inspired?  What did you learn?

Continue Developing Web Service and Client

We will work in our Web Service and Swift teams to continue developing the Weather Wear Service and the Swift client app to send a request to the service and display results.

Some notes on what we have so far in our Swift Client:

Consuming a Web Service in Swift


February 23, 2018 Meeting

We will meet at our usual time and place: 5:45 PM at 25N Coworking

Finalize Plans for our Jellyvision Field trip!

Continue working on our multi-component Weather Wear software :

  • Review overall solution architecture: 

    • Lucid Chart diagram by Robin


  • C#/Swift Tutorial: Learn/review some object-oriented concepts

    • Classes and Objects: Properties (values) and Methods (behaviors defined in functions/procedures)
    • How are they defined and used in C#? In Swift?
    • Objects as Models for Data:
  • Web Service Team:

    • Merge Web API code with the GitHub Repo
    • Continue work on algorithm and implementation of the WeatherWear Web Service and the console app to test it
  • Swift Team:

    • MVC: Model/View/Controller design pattern
      • Model represents the data model defined in a class; we will create a model class for the Weather Forecast, and later for the WeatherWear API Response
      • View is the Presentation Layer, i.e, the screen the user sees
      • Controller: Code that handles the user input, talks to the model, handles interactions between Model and View. In Swift, we will define a Class for the controller; there will be a ViewController Class defined for each View
    • Review/Learn how to connect UI elements to code. Elements in the UI designed on the storyboard need to be connected to code in the appropriate controller:
      • @IBOutlet: in a code module, an Interface Builder Outlet is a variable that holds a reference to an element on the storyboard. Example:  our screen has a label to display a city name and we need our code to be able to access it. We add this to our view controller:

 @IBOutlet weak var cityLabel: UITextField!

      •  @IBAction: in a code module, an Interface Builder Action is a function that is connected to a user interaction with a UI element. Example: update the city label when the user clicks a button. We add a connection between the function named GetWeather and the button; then define the action inside the function

        @IBAction func GetWeather(_ sender: Any) { cityLabel.text = “Geneva”    }

    • Start setting up the code to send the Web API Request for WeatherWear
      • We will initially set up code to access the existing Weather Underground Forecast API

January 26, 2018 Meeting

Take a look at our updated “Why” Page

Check out the updated list of summer opportunities and more….

Planning Session for multi-faceted solution

Big Picture: At our last meeting we had an interesting discussion about the varied interests our Members have for experiencing different programming languages and types of development. So this week, as a group, we will create a “Grand Plan” for a larger scale solution to be composed of several small projects. These smaller projects may be built in different languages and/or platforms that will all tie together. The components can be developed by pair programming according to interest and experience: possibilities include C#, Java, JavaScript, Python, Swift, etc. Central to the solution will be a Web Service that can be called by multiple apps or Web Pages to return a result in JSON format (JavaScript Object Notation) that be used by the individual app or Web Page.

Tools: Depending on what components we decide to develop, we will identify which software tools are needed so that we can get everyone started on setting up their laptops as appropriate. Some of this configuration may need to be done later at home.

Setting up for iOS Development on a Mac with XCode/Swift:

Please bring your iPhones and/or iPads to the meeting along with their USB cables so we can connect it to the Mac to run Swift apps.

We will be coding in pairs or small groups so even if you don’t have your own Mac you will be able to do everything.

To Set Up a Mac:

  • You will need an Apple ID, which you probably have if you have ever downloaded anything from the App Store
  • You do not need a paid Apple Developer ID at this point; that will only be required if you want to put your apps in the store
  • From the App  Store download and install XCode

iOS Apps with Thunkable

We will take a deeper look at building apps with Thunkable, perhaps doing a simple prototype for part of the multi-project solution we are designing


January 12, 2018 Meeting

Mobile Application Development Starts this Month!

Join us as we learn to build applications for our phones and tablets. We will be taking a look at all this over the next couple of months:

Tonight we will build apps for iOS mobile using Thunkable!   So please bring your iPhone or iPad to the meeting.

First a little overview on Mobile App Building…

  • Programming Languages depend on whether you are building the app for an iOS device or an Android device
  • Native programming languages are the coding languages understood specifically by a target operating system
    • Swift or Objective-C for Native iOS apps: requires a Mac to build and test; Objective-C is very old and Swift is much more widely used now
    • Java for Native Android apps: can be developed on Windows or Mac
  • Cross-Platform programming builds apps that work on both Android and iOS devices and more
    • Xamarin provides developers with a full-featured IDE for building apps in C# that can run on Windows, iOS, and Android devices.  The coding can be done in Visual Studio for Windows or for Mac but the iOS apps do require connection to a Mac for building
  • Drag and Drop App Builders with coding blocks: Drag and drop UI components (buttons, images, text, etc.)  onto a mockup of the phone’s screen; then use the blocks editor to build your program’s code by drag and drop as well. Behind the scenes the blocks are compiled into the native code that is understood by the target device.
    • MIT App Inventor currently provides only Android builds but they are in the process of developing iOS capabilities too
    • Thunkable allows you to choose either iOS or Android coding environments and that is what we will use today to make our apps!

Now Let’s THUNK!

Install Thunkable Live on your iPhone or iPad: go to Apple’s App Store and get the Thunkable Live app. You will use this to test your Thunkable apps as you are developing them

Start up Thunkable:  Supported Browsers are Chrome, Firefox, and Safari. Go to Thunkable and get started by clicking the “Get your App Started” button; when prompted “I want to create apps for”  select iOS

Logging into Thunkable: use your Google account to register and sign in

We will do the five introductory tutorials together to get familiar with the interface and some of the functionality:

Thunkable Hour of Code Tutorials

Thunkable Documentation

Build and modify a Weather Forecast Application!

In the Thunkable Documentation click the Sample Apps link and find the Weather app. Click “Copy the app source code” to create a copy of the app in your own Thunkable iOS projects.

The weather app is an example of using a Web Service; we will look at this in more detail and together will figure out how to modify the app to show the weather in our own location and perhaps to display additional information.





December 1, 2017 Meeting

NOTE: Our December 1st meeting will be held at the St. Charles Public Library.  We will meet at the usual time 5:45PM to 7:45PM 


  • Fix the Jelly Wobbly Gravity game! With the book’s original code, the character won’t move…the jellies are all dropping in the same line and splattering before hitting the floor…the character isn’t able to get sick from the jellies because the “collisions” have no effect. Let’s help The Dude enjoy (or not) his fill of jellies!
  • Make your own changes to any part of the game and/or to your site’s home page
    • We can do some changes as a group if there are suggestions and desire to do that
    • We can help each other with updates to individual pages


To copy the JavaScript file with all the bug fixes:

  • Go to the file on GitHub: Wobbly Jelly Gravity Corrected JavaScript
  • Click the “Raw” button when viewing the file
  • Right-click and select “save as” to save it to your machine
  • Upload the saved file to your project in Cloud9 and swap it for the “bad” JavaScript. Detailed instructions for doing that are in the debugging document in the below link

Detailed notes for the debugging exercise and concepts:

A working version of the game: Jelly Gravity


November 17, 2017 Meeting

Tonight’s meeting will be a feast of engaging presentations by:

  • Our first tech talk of the year!: Erin Maresko, who designed our FVGCC branding, will give us her insights on technical design
  • Our very own Hackathon team: Our members who participated very successfully in the Huskie Hackathon at Northern Illinois University will share their experiences and demo the results of their all-night programming efforts
  • Our very own instructor: Robin will give us a mini-version of her presentation for Fox Valley Computing Professionals on Cross Platform Mobile Development with Xamarin

November 3, 2017 Meeting

Dissect the Typography Game

We are looking forward to tonight’s meeting at 25N where we will be taking a deeper dive into the inner workings of the typography game.

Explore the answers to these questions and more:

  • What happens when the user enters the URL into the Browser? How does the Browser process the request? How does it integrate the styles in the CSS file and the code in the JavaScript file with the HTML elements on the page? 
  • How does clicking a button or pressing a key cause something to happen on the Web page? The keydown and click events!  What is an event listener? What is an event handler? What is a keycode? Reference: Keycode lookup
  • How do we define a single object that can represent either the player or the “bad guy” in the game? Define a function that is used as an object constructor; within the function define methods such as “move” and “setSpeed”.  Use the keyword “new” to create named instances of the class – “hero” and “enemy”. Use those named instances to control the players. Examples: hero.move()  or enemy.setSpeed(speed * 23)

Document: Notes for today’s activities