Tag Archives: Journal

The Dream Tool

Here are the features we decided would make up the perfect Research Assistant Tool

Wouldn’t it be great if…:

It would find related sources

  • Universal, cross-platform access
  • Easy add/modify/remove citations from paper
  • Organize sources more clearly
  • List citations alphabetically
  • Proper indents/formatting  — up to date
  • Automatically add the inline citation
  • Automatically grab citation information — web –books too?
  • Multiple platform
  • Integrated with Word and Integrated with other platforms
  • Recognize that there are two authors with same last name and make appropriate adjustments
  • Ties research notes to sources
  • Makes research notes searchable


Notes on Google Maps API — create map, set to location, add pins

Maps with Javascript

Google Maps API is at:



  1. Get the key from Google – you are looking for the Javascript API key.
    1. Do not enable billing unless you want to go bankrupt
  2. HTML
    1. Need a div that will be the container for the map
      1. <div id=”mapContainer”>
    2. Your Javascript
      1. Function that will initialize the map after the Google API has loaded

Notice that the map variable is global. That way you can access and change the map object from other functions and in response to user input or geolocation inputs

var map;

function initMap(){

   map = new google.maps.Map(document.getElementById(“mapContainer`”),{

       center: {lat: 44.461458, lng: -110.830992},

       zoom: 14





  1. Script to load the Google Maps API
    1. Goes at the bottom of the body in your html so that it will load only after your other HTML has loaded.
    2. There are ways to do this in an onload function that involve creating a script element and adding it to the body.
    3. <script src=”https://maps.googleapis.com/maps/api/js?key=YourKeyc&callback=initMap”

   async defer></script>


Notice that the callback function is the same as the function Name in step 3. Yours don’t have to be named the same as mine, but they do need to match between the Google API script tag and your own function


Getting the actual position of the person using this page

Check and see if geolocation is available:

If it is, then run the getCurrentPosition method

      That takes an argument that is looking for the function to run once it has received the current position.





alert(“Geolocation is disabled”);



Then, in the setMap function, you can use the map.panTo method to move the map to the specificed position. Note: the panTo method will do a smooth animation if the new location is in the bounds of the displayed map. Otherwise, it will jump to that location.


The position object that will be sent my navigator.geolocation.getCurrentPosition has two things that really matter to you for this:




So setMap might look like this:


function setMap(position){


   map.panTo({lat: position.coords.latitude, lng: position.coords.longitude});






To add a marker to a map, you create a new google.maps.Marker object. It needs at least these properties:

position (a latlng object – google maps style)

map (the map variable you used when you created your original map – remember, this should be a global variable)




title – what the pin will say when you hover over it.


For this example, we’re going to add a click listener to the map which will add a marker wherever the user clicks on the map. It will say “Hello World” and it will enter with a Drop animation effect.


map.addListener(‘click’, function(e){

       var marker = new google.maps.Marker({

           position: e.latLng,

           map: map,

           animation: google.maps.Animation.DROP,

           title: ‘Hello World’



Beginning Mail Merge

Today we started Mail merge.  One of the key lessons of working with Mail Merge is that it is important how you name , create sheet names and file names that are meaningful to what the content is about.

In Word, write up a letter.  Then you go to Tools -> Mail Merge Manager.  That will create a window with six (?) steps. The first is to choose the document type–I almost always select Form Letters.  Then you choose the data source.  open Data source, and then find the Excel Workbook that contains the information you want.  It will ask you which sheet to use, and then, after you’ve chosen it, will bring up a list in step 3 of all the columns for that sheet.  The next step is to drag placeholders into the right places in your document. We will do more with that tomorrow.


Word Basics

Today we got started wtih Microsoft Word.

The first thing we talked about was using Word to effectively apply the four elements of style (Contrast, Repetition, Alignment, and Proximity). Most importantly, instead of selecting formats for each thing individually, use the Styles feature.  By applying a kind of style (Like Title, Heading 1, Normal) when it is appropriate, you can then modify that style and have it applied throughout your document consistently.  The sooner you get in the habit of using styles, the more likely you will use it when it is important (like on a Senior Ex Paper or a Doctoral Dissertation).

To Modify a  style, you can either make some text look the way you want and then right click on the style button that want to change, then select “Change to Match Selection” (or something like that, or you can right click on the style and choose “modify” to select the format from there.


Then we played with pictures. The most importnat thing about working with pictures in Word is…Text Wrap selection. Once you’ve selected a picture, you will find this in the Format Picture Ribbon.



Javascript Knowledge So far

Here are the things we know so far. Things IN BLUE we have agreed to review. Items IN GREEN we have reviewed.

  • creating variables
  • declaring functions
  • Document Object Model (DOM)
  • Getting elements from a page
  • Working with classes (change/add/remove)
  • Working with attributes
  • Changing styles
  • dataset
  • Creating elements (Click for explanatory post)
  • Adding attributes to new elements
  • Adding classes to new elements
  • Adding ID to new element
  • Adding new elements to existing elements (appendchild)
  • For Loops
  • For…in Loops
  • if then statements
  • Connecting up events
  • Objects
    • Creating
    • Creating with constructors
    • Creating methods within
  • Drag/Drop (Click here for an explanatory post)
  • Arrays
  • JSON
  • Local Storage

The magic of Vlookup!

Today we learned the magic of Vlookup.  With Vlookup, you can take a value from one sheet, look it on another sheet, and return some information on the same row. For instance, you can use the student ID on a test-results report, look it up on a class list report, and return an advisory teacher..

The Vlookup lookup formula looks like this:

=vlookup(–the value you’re trying to match–, –where you’ll find it {this is a rectangle of information with the matching column on the left, and the value to return somewhere to the right of it}–, –the number of the row to return–, –true for range lookup or false for exact match–)


=vlookup(C2, studentInfo!A:B,2,false)

a range lookup could be used to return a letter grade from a grading scale. The lookup table has to be sorted smallest-to-largest by the lookup column, and the last option in the formula needs to be true.

We also started our menu assignment. Find a restaurant menu, and create a sheet with the details for three categories of food

Columns should be:

  • Main dish
  • price
  • Side
  • price
  • Beverage
  • price



Today we reviewed our work from Friday (Error checking, data validation, and the magic of pivot tables), and we started working with Vlookups.

The parts of a vlookup are:

=vlookup(What am I looking for?–come from somewhere near this formula, Where will I find it?, which column should I return –a number, is this a range lookup — true/false)

e.g. =vlookup(A2, GradingScale!A:B, 2, true)

That might lookup a percentage in cell A2 to find its letter grade on the Grading Scale sheet from column B.

Error Checking, Data Validation, and Pivot Tables

Today we worked on three ways to improve and simplify your data entry and reporting.

  1.  Error checking.
    1. In the case of averages, we found that sometimes you run into errors (#div/0 or divide-by-zero errors). This can cause a lot of problems down the road, especially in more complex spreadsheets.  To handle it, wrap your function in an iferror function.  e.g. =iferror(averageif(b:b, a2, c:c),0) will give you a 0 instead of an error if there are no entries that fit the criteria for the averageif function.
    2. You can also use the if statement to check a custom condition:  =if(c3>0, averageif(b:b,a2,c:c), 0)
  2. Data validation
    1. You can prevent errors by limiting data entry to a list.  Select the area you’d like to control, then go to the data tab and click “validation”.  If you want it to be a dropdown list, choose list, and then go find the list somewhere in your sheet of valid entries.
  3. Pivot tables
    1. Are awesome!  Select your source data, then go to the ‘data’ tab, and click “pivot table”. Then play.

Don’t forget, the research project is due on 4/25, but you probably want to finish it before conferences as other classes may well give you homework for that conference weekend.


Countif, AverageIf, and Charts

We talked today about how to use countif and average if. We also talked about skewing charts by changing the Y-Axis — double click on it and click scale. Finally, we talked about why it’s important to use summary information rather than line-item detail for this type of chart, as well as avoiding misrepresentation by using averages rather than total sums since the numbers of entries might not match bewtween categories.

Tomorrow: error checking and data validation.