WITNESS LIST
Education
February 1, 2011 10:00 AM
Panel 1: School Organizations
ON:
Ellis, Karen Board of Trustees, Board of Directors (also providing written testimony)
(Richardson ISD, Texas Association of School Boards), TX
Mehl, Cheryl Chair (also providing written testimony) (Council of School Attorneys), TX
Middleton, Dr. Richard Superintendent (Texas Association of School Administrators), TX
Schroder, Rod Superintendent, President (also providing written testimony) (Amarillo
Independent School District, The School Alliance), TX
Smisko, Dr. Ann Associate Commissioner for School Support and Improvement (Texas
Education Agency), TX
Panel 2: School District Leaders
FOR:
Anthony, David Superintendent (Cypress-Fairbanks ISD), Houston, TX
Bamberg, Wanda Superintendent (Aldine ISD), Houston, TX
Hinojosa, Superetendent, Dr. Michael Superintendent (also providing written testimony)
(Dallas ISD), Dallas, TX
Thompson, David Attorney (Houston ISD), Houston, TX
Williams, Mark President, Board of Trustees (also providing written testimony) (Austin
ISD), Austin, TX
Wright, Howell Superintendent (also providing written testimony) (Rockdale ISD, Texas
Association of Midsize school), Rockdale, TX
ON:
Barnhart, Linda Kay Superintendent (also providing written testimony) (Anahuac ISD,
Texas Association of Community Schools), Anahuac, TX
Chambers, H D School Supt. (Stafford Municipal School District), Stafford, TX
Folks, John Supt. (Northside ISD), San Antonio, TX
Hunkapiller, Jerry Superintendent (Millsap ISD, TARS, Equity Center), TX
Killian, Dr. Douglas Superintendent of Schools Hutto ISD (also providing written
testimony) (Hutto I.S.D.), Hutto, TX
Motheral, Mike Superintendent - Sundown ISD (Sundown ISD, Texas Association of
Community Schools), Sundown, TX
Whiteker, Mary Ann Superintendent - Hudson ISD (also providing written testimony)
(Self, Community Schools, Mid-size Rural, South Texas), Lufkin, TX
Registering, but not testifying:
For:
Adair, Arnold Superintendent (Deer Park ISD), Deer Park, TX
Ahmadian Ed.D., Max Asst. Superintendent (Duncanville ISD), Ducanville, TX
Beck, Wes Superintendent ISD (Shamrock ISD), Shamrock, TX
Bell, Sam Supt (Brenham ISD), Brenham, TX
Blincoe, Dr. Reece Superintendent (Brownwood ISD), Brownwood, TX
Boyd, Bill Superintendent (Kermit ISD), Kermit, TX
Brewer, Will Superintendent (Ballinger ISD), Ballinger, TX
1
WITNESS LIST
Education
February 1, 2011 10:00 AM
Camarillo, Charles Superintendent (Somerville ISD), Somerville, TX
Cooper, Blake Superintendent (Commerce ISD), Commerce, TX
Darilek, Paul Superintendent (Stockdale I.S.D.), Stockdale, TX
Floyd, Dr. Darrell G. Superintendent of Schools (Stephenville ISD and Texas Assoc. of
Mid-Size Schools (TAMS)), Stephenville, TX
Ford, Buck Superintendent Blanco ISD (self/org), Blanco, TX
French, Micheal Superintendent (also providing written testimony) (Quinlan ISD),
Quinlan, TX
Garcia, Lorenzo Supt. (El Paso ISD), El Paso, TX
Garcia, Miguel E. Superintendent (San Isidro I.S.D), San Isidro, TX
Giles, Johnny Asst. Supt. (LISD), Lufkin, TX
Goehring, Ronald Superintendent (Round Top - Carmine ISD), Round Top, TX
Goffney, LaTonya McGowen Superintendent (Texas Children), Coldspring, TX
Grigsby, John Asst. Supt - Operations (Joshua ISD), Joshua, TX
Head, Sherry Superintendent (City Center Health Careers), San Antonio, TX
Hughes, Patricia L. President, El paso ISD Board of Trustees (EPISD), El Paso, TX
Kolb, Steve Superintendent (Whitesboro ISD), Whitesboro, TX
Lankford, Jill Superintendent (Midland Academy), Midland, TX
Lehnen, Gary E. Superintendent (Ropes ISD), Ropesville, TX
McDowell, Randy Assistant Superintendent of Business and Operations (Canyon ISD),
Canyon, TX
McKinney, Lynn Assistant Superintendent (Aledo ISD), Weatherford, TX
McLaren, Steve Superintendent (Klondike ISD), Lamesa, TX
Miholorich, Marsha Deputy Superintendent (Aledo ISD), Aledo, TX
Miksch, Randy Superintendent (Sweeny ISD), Sweeny, TX
Miller, Charles L. Superintendent (Dimmitt ISD), Dimmitt, TX
Mircovich, Troy Superintendent (Ingleside ISD), Ingleside, TX
Moyer, Karla Superintendent (Florence ISD), Florence, TX
Myers, Steven Asst. Supt. (Webb CISD), Bruni, TX
Nauyokas, Bud Supt. (Community ISD), Nevada, TX
Nightingale, Gary Superintendent (Electra ISD), Electra, TX
Oliver, Joe Superintendent (Wills Point ISD), Wills Point, TX
Page, Sue W. Area Superintendent (Alief ISD), Houston, TX
Parra, José Supt. of schools (Self and Lockhart ISD), Lockhart, TX
Payne, Vicki Superintendent (Caddo Mills ISD), Caddo Mills, TX
Powers, Tim Assistant Supt (Wichita Falls ISD), Wichita Falls, TX
Quinn, Greg Asst. Supt. HR (Alvin ISD 301 E house Alvin TX 77511), Friendswood, TX
Ripple, Joe K. Superintendent (also providing written testimony) (Brazosport I.S.D), Lake
Jackson, TX
Rosenbaum, Clay Superintendent (Self), Hondo, TX
Ross, Dr. Sharon Superintendent (Jefferson ISD, Marion County very poor county.),
Jefferson, TX
2
WITNESS LIST
Education
February 1, 2011 10:00 AM
Sanchez, Jesus Supt. of Schools (Eagle Pass I.S.D), Eagle Pass, TX
Sconzo, Guy Superintendent of Schools (Humble ISD), Houston, TX
Seeger, Debbie Director for Strategic Initiatives (Corpus Christi ISD), Corpus Christi, TX
Sheets, Dr. Gene Superintendent (also providing written testimony) (Texas Association of
Rural Schools (President)), Muleshoe, TX
Tomas, Gina Interim Superintendent (Alief Independent School District), Fulshear, TX
Waddell, Stephen F. Supt. (Birdville ISD), Haltom City, TX
Wall, Leigh Superintendent of Schools (Santa Fe ISD), Santa Fe, TX
Webb, Clay Superintendent (New Waverly ISD), New Waverly, TX
Weis, Kathy Asst. Superintendent, Caddo Mills ISD (Caddo Mills ISD), Greenville, TX
Welch, Philip Superintendent (Orangefield ISD), Bridge City, TX
Wellman, Nola Superintendent (Eanes ISD), Austin, TX
Wheeley, Bobby Supt (Redwater ISD), Redwater, TX
Williams, Todd Superintendent (Kaufman ISD), Kaufman, TX
Wolfenbarger, Orlie Superintendent of Schools (Comstock ISD), Comstock, TX
York, Toby Superintendent (Goose Creek Consolidated Independent School District),
Baytown, TX
York, Vicki Asst. Superintendent (Brownsboro ISD), Athens, TX
Against:
Haenisch, Barry Superintendent Pampa ISD (Texas Association of Community Schools),
Pampa, TX
Padgett, Walter Superintendent (also providing written testimony) (Schulenburg ISD),
Schulenburg, TX
On:
Brown, Nicholas Superintendent Blum ISD (also providing written testimony) (Blum
ISD, Texas Rural Education Assoc.), Blum, TX
Brundrett, Bob Superintendent of Schools (also providing written testimony) (Texas City
ISD), Texas City, TX
Frailey, Alton Superintendent (Self), Katy, TX
Hopper, James Superintendent (Texas Rural Education Association (TREA) &
Bosqueville ISD), Waco, TX
Howard, Mr. James Board President (also providing written testimony) (San Antonio
ISD), San Antonio, TX
Innis, Diane Superintendent (Covington ISD), Covington, TX
Johnson, Melody Superintendent (also providing written testimony) (Ft. Worth ISD), Ft
Worth, TX
Pollan, Judy School Superintendent (Pittsburg ISD), Pittsburg, TX
Randle, Thomas Superintendent (Lamar CISD), Rosenberg, TX
Rue, Karen Superintendent (Northwest ISD), Fort Worth, TX
Schoppe, Allen E. Executive Director for Business (Sweeny ISD), Sweeny, TX
Soileau, Benny Asst. Superintendent (also providing written testimony) (Splendora ISD -
Chapter 21 Coalition), Porter, TX
3
WITNESS LIST
Education
February 1, 2011 10:00 AM
Speer, Brenda Superintendent (Bynum ISD), Bynum, TX
Tarleton, Bill Superintendent, Hico ISD (also providing written testimony) (TREA (Texas
Rural Educators Assn.)), Hico, TX
Wilson on behalf of Dr. Alfred Ray, Jennifer CFO on behalf of Superintendent
(Duncanville ISD), Duncanville, TX
Panel 3: Educator Associations
ON:
Gregg, Brock Governmental Relations Director (also providing written testimony)
(Association of Texas Professional Educators), Austin, TX
Hartman, Eric Director of Government Relations (also providing written testimony)
(Texas AFT), Austin, TX
Hollingsworth, Jr., Lonnie F. Director of Legal Services/Governmental Relations (also
providing written testimony) (Texas Classroom Teachers Association), Austin, TX
Kouri, Richard Director of Public Affairs (TSTA), Austin, TX
Public Testimony
ON:
Arnold, Ellen Gov't Affairs Consultant (Texas PTA), Austin, TX
Dewey, Andrew Teacher/Executive Vice-president Houston Fed. of Teachers (self/HFT),
Houston, TX
Hamerly, Debbie Elementary Reading Specialist (Self and Education Austin), Austin, TX
Killion - Procida, Belinda Teacher, Lanier HS, Austin ISD Information Technology
Courses (also providing written testimony) (TSTA), Austin, TX
Owen, Martha Partner, Deats Durst Owen and Levy (also providing written testimony)
(Self and Texas AFT), Austin, TX
Zarifis, Ken Co President Education Austin (Education Austin), Austin, TX
Registering, but not testifying:
For:
Aguirre, Martha Chief Financial Officer (Canutillo ISD), Canutillo, TX
Ballard, Kathy (Carthage ISD), TX
Bradley, Megan CFO (Killeen ISD), Harker Heights, TX
Brigham, Annette R. Exec Dir School Resources (Canutillo ISD), Canutillo, TX
Dodds, Delbert Business Manager (Dalhart ISD), Dalhart, TX
Frauenberger, Kevin Principal (Wortham ISD), Wortham, TX
Gardzina, Margaret Director (Liberty ISD), Liberty, TX
George, Abraham Chief Financial Officer (Sheldon ISD), Houston, TX
Hearne, Callie Asst. Supt. Human Resources (Hurst - Euless - Bedford ISD), Arlington,
TX
Lee, CPA, RTSBA, Margaret Chief Financial Officer (Liberty ISD, Liberty, Tx), Liberty,
TX
Marshall, Don CFO (Pearland ISD), Pearland, TX
Neal, G. W. Assist Supt HR (Nacogdoches ISD), Nacog, TX
Parker, Beth At-Risk/Testing Coordinator (Brownsboro ISD), Brownsboro, TX
4
WITNESS LIST
Education
February 1, 2011 10:00 AM
Pena, Martin Executive Director (South Tx Assoc of Schools), Laguna Vista, TX
Rawlings, Linda Principal, Westlake High School (Self), Austin, TX
Rose, Martha Campus Administrator (Aransas Pass ISD), Aransas Pass, TX
Rutledge, Cindy Executive Assistant (Hurst - Euless - Bedford ISD), Bedford, TX
Terry, James Executive Director of Finance and Accounting Services (Self), San Antonio,
TX
Wallace, Tracey Executive Director of Human Resources (Self), Coppell, TX
Whitaker, Lynn Administrator (Union Grove ISD), Longview, TX
Williams, Helen Communications Director (Highland park ISD), Keller, TX
Wright, Richard Principal (Self), Edna, TX
On:
Jordan, Terri Chief of Staff, EPISD (EPISD), El Paso, TX
Kershner, Rick Principal Splendora High School (also providing written testimony)
(Splendora ISD Chapter 21 Coalition), Sealy, TX
Price, Thomas Ch. 21 See Attached (also providing written testimony) (Splendora ISD),
Cleveland, TX
Williams, Holly Director Dept. of Program Evaluation (Self), Austin, TX
5


Ocala events
-
pace arrow 35 rv 2002
Houses for Rent in Santa Maria and Single Family Homes ... - Zillow
Search homes for rent in Santa Maria. Find single family houses, townhouses, townhomes and more on Zillow.
http://www.zillow.com/santa-maria-ca/rent-houses/Santa Maria Apartments for Rent - Yahoo! Homes
Yahoo! Homes - Find Santa Maria, CA 93454 apartments for rent. Map apartments and houses for rent in Santa Maria 93454, browse rentals by Santa Maria .
http://homes.yahoo.com/search/California/Santa_Maria/apartments-for-rentsanta maria apts/housing for rent classifieds - craigslist
466 Doverlee Dr./House For Rent - $1995 / 4br - (Santa Maria, Ca 93455) pic map. Newly Refurbished 3 Bedroom House - $1600 (903 W. Williams, Santa Maria .
http://santamaria.craigslist.org/apa/Plus Property Management - The #1 property management service ...
PLUS Property Management, formerly Prudential Hunter Property . the number one property management service on the California Central Coast. . Santa Maria WARNING: Error Detected . She is totally efficient in handling our home rental.
http://www.plusmanagement.net/
john spence m d Upcoming events in Ocala
- Sponsored event
the cliffs in princville hawaii
Apr 6 - Dance It Studio
free dota 6.49cai 1.52 download download festival castle donnington
- Sponsored event
computer doesnt find external hard drive
Apr 6 - Downtown Disney
uv decomposition of iron oxalate tricoci university beauty culture
teacher's safety in the work place Hottest Tickets
-
Apr 11bible verses with hills
Amway Center -
Apr 28notre dame basketball summer camps
Amway Center -
Jun 25kentucky public records outstanding warrants
Bob Carr Performing Arts Center -
Mar 30my last yee haw
Amway Center -
Aug 27motorcycleing in myrtle beach
Amway Center -
Jun 21pieceful gatherings quilt shop
Amway Center -
Sep 13busch gardens and orlando and florida
Francis Field -
Mar 17how long for antibiotic to work
St Augustine Amphitheatre -
Oct 8my last yee haw
Amway Center -
May 4adjusting 2005 dodge caravan headlights
Bob Carr Performing Arts Center
Ocala's best venues
-
Santa Maria Apartments for Rent | Santa Maria, CA Rentals ...
Find a great apartment in Santa Maria, California on Apartments.com! . Send rentals to your phone and get driving directions while on the go. . The apartment homes at La Vista feature an array of modern amenities and many extras for your .
http://www.apartments.com/California/Santa-Maria -
Santa Maria Apartments for Rent - PadMapper Map-Based ...
PadMapper searches through thousands of Santa Maria, California apartments and . Use the filters to select for sublets, apartments and houses for rent, price, .
http://www.padmapper.com/search/apartments/California/Santa-Maria/ -
Santa Maria, CA (California) Houses, Apartments, Cars, Mortgage ...
Santa Maria, CA (California) Houses and Residents . Santa Maria,CA index of house prices. Houses: . Santa Maria rent paid by renters for apartments graph .
http://www.city-data.com/housing/houses-Santa-Maria-California.htmlvirginia brand vadalia onion vinigret recipies
98 people's favorite
-
Santa Maria Business Park: Truck Rental
Whether you are moving a smaller apartment or a large 4 bedroom house; U- Haul truck rentals in Santa Maria, CA will provide you with FREE truck rental rate .
http://www.uhaul.com/Locations/Truck-Rentals-near-Santa-Maria-CA-93455/043544 -
Santa Maria, CA Apartments and Houses for Rent, Local Apartment ...
Santa Maria, CA Apartments and Houses for Rent, Local Apartment and Home Rentals, House, Townhome, and Condo Rentals, Vacation Rentals, Roommate .
http://www.santamariarent.com/


I've added a voltage (Vrms) reading to the emonTx_continuous_watthours sketch for the emonTxV2.
What I'm not sure of is the voltage calibration starting at line 115. It was originally set to 276.9 but that gives wildly inaccurate voltage readings. Using the value for the mascot adapter (http://openenergymonitor.org/emon/buildingblocks/calibration) of 234.26 the voltage seems spot on. All values on the calibration page are around this value so can anyone explain the 276.9 and will my changes affect the accuracy of the current readings?
Cheers,
Matthew
Re: emonTx_continuous_watthours - Add Voltage reading
The voltage calibration (in most sketches, but not that one) affects only the voltage reading.
The current calibration (in most sketches, but not that one) affects only the current reading.
Again, in most sketches but not that one, both affect the power calculation.
In the 'continuous' sketch, because voltage and current are not reported separately, only a combined power calibration is needed. It is however, derived from the separate voltage and current calibration constants.
The value of the voltage calibration constant in that sketch is most likely a carry-over from previous adapters and/or voltage divider component values (that's without checking back). The whole purpose of calibration is to remove the uncertainty introduced by component tolerances, therefore it should be the norm if you want accurate measurements. There's more about that, and the derivation of the calibration constants, elsewhere in Building Blocks.
Re: emonTx_continuous_watthours - Add Voltage reading
Thanks Robert. I'm aware of the purpose of calibration hence my link and question since the value in this sketch is so wildly different to what I expected.
Upon further investigation I think the value (276.9) was selected based on assumptions for emonTxV3 and is therefore wrong:
From http://openenergymonitor.org/emon/buildingblocks/ct-and-ac-power-adaptor... the EmonTx PCB, the voltage is further reduced by the potential divider formed by R13 and R14, the ratio being 1/11 in the emonTx V2 but 1/13 in the emonTx V3. This voltage is then measured by the analog input of the processor relative to the processor supply voltage (in this case 3.3 V), which is used as the reference, and scaled so that the reference voltage would give the maximum count of 210 ( = 1024)."
From the comments in the sketch muliplying 21.3 x 11 instead of 13 gives 234.3 which is roughly what I expected and would give a fairly accurate reading "out-of-the-box".
Matthew
Re: emonTx_continuous_watthours - Add Voltage reading
I have now also added temperature reading and changed the Wh totals so they give import/export totals allowing me to calculate house consumption, total export, total import, total generated etc.
See https://github.com/mattwire/emonTxFirmware/tree/master/emonTxV2/emonTx_continuous_importexport_watthours_V_temp
Thanks to Robin Emley's mk2pvrouter (Mk2_RFdatalog_4) for the temperature/Vrms code.
Thanks to Dave Dixon for the import/export totals (http://openenergymonitor.org/emon/node/5309)
Re: emonTx_continuous_watthours - Add Voltage reading
The way that temperature is being measured in this code will unfortunately cause some data from the ADC to be lost (for roughly 10 ms on each occasion). This happens because the OneWire protocol for the Dallas temperature sensor is much slower that the ADC's sampling scheme. This loss of data may not be much in percentage terms, but is not ideal.
In the Mk2_RFdatalog_4 sketch on my website, this problem has been overcome by a complete restructuring of the code. In that sketch, all of the logic for calculating and controlling the flow of energy is contained within the ISR, not just the ADC's operation.
Re: emonTx_continuous_watthours - Add Voltage reading
Hi, I have a simple question.
What are the differences between emonTxV3_continuous_kwhtotals_noeeprom and emonTxV3_RFM12B_DiscreteSampling.
Obviously, I know the different output. Which is the best? The most accurate?
Now, I'm using the last one and then I compute the Kwh in emoncms' feed.
Thanks.
Re: emonTx_continuous_watthours - Add Voltage reading
Discrete sampling is the practice of only sampling for a fraction of each period and assuming the rest of the period is the same, it's done to reduce power requirements for battery use. So any continuous sampling sketch should be an improvement in accuracy.
As for the ...kwhtotals part, it can also be more accurate to do the calcs "continuously" on board the emonTx, There can also be a marked improvement in accuracy if the rfm network is subject to interference or poor signal etc that can result in dropped packets before they can be included in the emoncms derived totaling. However the on-board totals get reset at each restart of the device so it requires a whaccumulator "ratchet mechanism" at emoncms. It could be prone to a greater inaccuracy if the emonTx gets reset ( ie power supply issues etc) whilst holding totals that haven't reached emoncms yet ie one big loss rather than a occasional inaccuracy.
So "kwhtotals" can be better depending on your set up, but "continuous" is definitely better than "discrete" if you are running on a power supply (not batts).
Paul
Re: emonTx_continuous_watthours - Add Voltage reading
Thaks Paul,
So I'm going to modify the firmware in order to use emonTx via serial (there are a lots of info on the serial). How can I add the voltage? In the standard there is no voltage. Moreover, I'll use emonTx with AC/AC adapter.
Sorry, I've forgot to say that I use emonTx V3
Re: emonTx_continuous_watthours - Add Voltage reading
My recently posted Mk2 Router code for use with the emonTx V3.2 should do exactly what you want. It monitors "real power" continuously on all four CT channels and also measures the RMS voltage and temperature. Data is routinely transmitted by RF and is also presented to the serial interface. Equivalent code for the emonTx V3.4 is here.
If you have PV on-site, this code can also identify and divert any surplus power for some useful purpose. But it can function just as well as a monitor only.
As posted, cumulated energy is calculated for just one of the channels, this being CT3 which is intended for "diverted power". This logic could be easily extended to cover the other three channels if "kwhtotals" were required for all of them.
Re: emonTx_continuous_watthours - Add Voltage reading
Hi Robin, just curious, I don't currently have a need but for future reference. Is there enough processor time and memory to do all 4? and how easy would it be to also implement "directional subtotals" ie total exported and total imported rather than (or as well as) a nett total?
My arduino coding isn't strong so I would need to study the code for some time to get to grips with it, but I would also assume there isn't likely to be an issue using longs rather than ints for the totals, correct?
Paul
Re: emonTx_continuous_watthours - Add Voltage reading
Hi Paul, there should be no problem with memory. My sketches generally display how much free RAM is available; less that half of the RAM is being used for this sketch.
Floating-point maths is relatively slow, but most of the Mk2's code uses integers and longs. If you carefully replicate the logic which accumulates energy for CT3, I sure you won't have any difficulty to get similar results for the other channels. I think the accumulaors are all 'long', with the transmitted datafields being 'int'.
Take it carefully, one stage at a time, and keep checking and saving. While developing any new code, I keep frequent copies in an adjacent folder called archive. The various copies are simply dev_1, dev_2 etc. I also keep a log file into which results and ramblings can be copied. This record can be really useful for later reference, and is much easier than writing notes on paper.
I'm not sure about "directional subtotals". The whole point about the Mk2's design is that the flow of energy changes direction so quickly that it is ignored by the meter. To record such minor flows would not seem useful if they are not seen by the meter. But if this requirement can be adequately specified, I see no reason why it could not be implemented by additional Mk2's logic.
Within each datalog period, the minimum number of sample sets per mains cycle is recorded. This number provides a good indication that the processor is not being overloaded. With my latest code, as released for the emonTx V3.2 and V3.4, measurements of temperature do not affect the underlying sampling process, as confirmed by this number. If temperature measurements were to be performed in older versions, the sampling process would be disrupted but there is no easy way to detect this (albeit small) loss of data.
Re: emonTx_continuous_watthours - Add Voltage reading
Indeed, it's a bit of a no mans land as the net total's usefulness can also be questioned when the main reason for monitoring (for most users) is to know how much energy they are buying and how much PV is exporting (or escaping) and since we don't have net metering in the uk, import and export ideally need to be sub-totaled but without the sweetzone modulation included..
Is there a way that the diverter code can indicate when it's operating in the "sweet zone" ? to prevent the movement being added to the running total. I recall reading about a related solution using the meters led to confirm operation in the "sweet zone".
My current system does count the to'ing and fro'ing but since most of the year there is no actual export, the recorded export can actually be used to correct the import value (assumming any to'ing has corresponding fro'ing) however that goes out the window at the height of summer if I fail to use all PV.
Would having a virtual 1w "sweetzone" in the code be a solution? I understand a fixed point may not align with the meters "sweetzone" but is it feasible to recognize when modulating rapidly within a small range and only count values straying outside of a 1w zone centered on rolling short term mean average instead?
As I said just curiosity at this point, I'm not suggesting I would attempt to tackle something like this myself,
Paul
Re: emonTx_continuous_watthours - Add Voltage reading
Would having a virtual 1w "sweetzone" in the code be a solution? I understand a fixed point may not align with the meters "sweetzone" but is it feasible to recognize when modulating rapidly within a small range and only count values straying outside of a 1w zone centered on rolling short term mean average instead?
Yes, this kind of arrangement should be entirely possible. Not all meters have the same penalty-free range, so that would complicate matters. Getting the spec nailed down is likely to be the difficult part. The coding itself should be relatively straightforward.
Unless a positive export rate has been deliberately included, the Mk2's design will not allow any energy to "escape". Unless the amount of surplus power exceeds the ability of the loads to consume it, the Mk2's processor will always believe that a correct balance is being maintained. If a small amount of "escaped"energy is recorded by the meter, that will be because the two systems are measuring the flow of energy differently. This effect can be minimised by ensuring that the Router has been properly set up, in particular so that the current and voltage sensors are using most of the available range of the ADC. When operating in AF mode, the energy thresholds and calibration become important too.
In some parts of the world, the rate for exported power is tiered. For the first X hours per month, it is relatively beneficial to export, but then the rate drops. Without a real-time clock on board, it does not seem practical to include this level of complexity in the Router itself. Maybe it could be implemented in some associated controller and then communicated to the Router via one or more of the IO pins. Polling IO pins is a very simple and effective way of communicating with the processor, so a "diversion enabled/disabled" flag protocol could be easy implemented.
Once the tank is up to temperature and surplus power is being exported, the average power at the supply point will go from approximately zero to negative. EmonCMS should be able to spot this and increment its export register rather than decrementing its import register. Having an extra field in the RF payload so that the Router can convey something useful to emonCMS may be a useful addition.
These days, I tend to be driven by what my potential customers are asking for. Since starting my own business, all new developments of mine have been customer-led. But if there are spin-offs, I'm generally happy to post them here on the forum for others to use, and to peer-review.
Re: emonTx_continuous_watthours - Add Voltage reading
I agree a "1w" sweetzone probably wouldn't be the best way to go, using the existing sweetzone settings used by the diverter would make far more sense.
My use of the term "escaping" was referring to energy escaping the grasp of the user and exporting back to grid unused rather than suggesting a "leakage" due to error or accuracy. There is no disputing the accuracy and it's only because of that accuracy that it would be worth considering such a level of fine-tuning through further development .
Indeed there are tiered export rates in parts of the globe that may reduce the "out of the box" usefulness of the added accuracy, but those same users and many many more besides are already currently unable to get an acceptably accurate export total, Plus that same philosophy would also apply to the usefulness of any form of watt hour totaling for many users, if they buy their energy at a multi-tariff rates, including UK's own off-peak economy7.
These tariffed and tiered calculations could be done quite accurately outside the sketch IF there was an accurate import/export value to work from, or indeed as the control side of OEM gets a footing the sketches totals could be reset as each new tier/tariff commences. but my own opinion is that these calculations involving time, money and tiers etc should be done in emoncms as tariff rates and T&Cs can change quite frequently.
The use of the flag is interesting and would work well for on-board inclusion/exclusion logic for totaling, the reason I say "on-board" is the emonTx to emonCMS reporting interval would introduce heavy inaccuracies if the flag's state is only updated once per reporting interval.
Surely he best place to reduce the additional import and export reported due to modulating in the sweetzone has to be at source, the diversion codes "flag" would just indicate if the movement should be included in an import/export total. Almost all the inaccuracy could be eliminated, if the Router is using for example 90% of the sweetzone to avoid straying into "chargeable territory" then 90% of the sub-totaling inaccuracy would be eliminated.
Maybe even that can be improved if the router is working to a defined safe area. ie if your best guess or the meters tech spec says the sweetzone is X and you run the router at 90% of X maybe it's possible to use X in the sub-totaling calcs.
As a side note, the way I can currently "see" the unmetered amount accumulating is an excellent indicator of how well (hard) the diverter is working as opposed to how effective it is. The amount diverted and the absence of any export tells me the diverter is effective, but on a high PV day the inaccuracy is far less than a cloudy day, effectively because the diverter can just switch to divert and remain there. Whilst on the cloudy day it has to work harder and the amount that is reported as export but not metered is actually a direct indication of how much energy was saved by modulating the diverter rather than just "diverting".
None of this is considered or intended to be criticism, I am already totally sold on the diversion concept, however the act of diverting introduces an inaccuracy (which I consider to be a small price to pay) that wouldn't previously of been noticeable if present. It would be a valuable addition to the diverters code to be able to remove as much of that as it can, especially as it is the most efficient method. In fact it has occurred to me whilst writing this that the diverter effectively imposes it's own sweetzone within the meters sweetzone and since that defines the boundaries of the diverting my previous 90% example isn't totally true as the diverter is capable of removing 100% of the inaccuracy derived from utilizing 90% of the sweetzone for diversion. wouldn't it??
Nor was it intended to be a feature request, more as an interesting discussion about future development in the area of energy monitoring, Although "These days, I tend to be driven by what my potential customers are asking for. " I would expect accurate monitoring and reporting of separate export and import in non-net-metering countries to be high on the users wish list, especially here on an energy monitoring forum. Advances in this area would also negate the need for any explanation of "why is my system exporting?" when it's not, when the subtotaling is done off-board.
Either way it's fantastic kit, :-)
Paul


| Interface | Description |
|---|---|
| CodeGenUtils.EmissionCallback |
A class that emits source code of some time when activated.
|
| CommentEmitter | |
| GlueEmitter |
Specifies the interface by which GlueGen requests glue code to be
generated.
|
| GlueEmitterControls |
Specifies the interface by which a GlueEmitter can request
additional information from the glue generator.
|
| SymbolFilter |
Provides a mechanism by which the GlueEmitter can look at all of
the #defines, enum values and function symbols and perform certain
filtering and processing which requires all of them to be visible
simultaneously.
|
| Class | Description |
|---|---|
| ArrayTypes |
Convenience class containing the Class objects corresponding to arrays of
various types (e.g.,
ArrayTypes.booleanArrayClass is the Class of Java type
"boolean[]"). |
| CMethodBindingEmitter |
Emits the C-side component of the Java<->C JNI binding.
|
| CMethodBindingEmitter.DefaultCommentEmitter |
Class that emits a generic comment for CMethodBindingEmitters; the comment
includes the C signature of the native method that is being bound by the
emitter java method.
|
| CodeGenUtils | |
| ConstantDefinition |
Represents the definition of a constant which was provided either
via a #define statement or through an enum definition.
|
| DebugEmitter |
Debug emitter which prints the parsing results to standard output.
|
| FunctionEmitter | |
| FunctionEmitter.EmissionModifier | |
| GlueGen |
Glue code generator for C functions and data structures.
|
| JavaConfiguration |
Parses and provides access to the contents of .cfg files for the
JavaEmitter.
|
| JavaEmitter | |
| JavaMethodBindingEmitter |
An emitter that emits only the interface for a Java<->C JNI binding.
|
| JavaType |
Describes a java-side representation of a type that is used to represent
the same data on both the Java-side and C-side during a JNI operation.
|
| Logging | |
| MethodBinding |
Represents the binding of a C function to a Java method.
|
| ReferencedStructs | |
| TypeInfo |
Utility class for handling Opaque directives for JavaEmitter.
|
| Enum | Description |
|---|---|
| JavaEmitter.EmissionStyle |
Style of code emission.
|
| JavaEmitter.MethodAccess |
Access control for emitted Java methods.
|
| type | java bits | native bits | type | signed | origin | |
|---|---|---|---|---|---|---|
| x32 | x64 | |||||
| void | 0 | 0 | 0 | void | void | ANSI-C |
| char | 8 | 8 | 8 | integer | any | ANSI-C |
| short | 16 | 16 | 16 | integer | any | ANSI-C |
| int | 32 | 32 | 32 | integer | any | ANSI-C |
| long | 64 | 32 | 321 | integer | any | ANSI-C - Windows |
| long | 64 | 32 | 64 | integer | any | ANSI-C - Unix |
| float | 32 | 32 | 32 | float | signed | ANSI-C |
| double | 64 | 64 | 64 | double | signed | ANSI-C |
| __int32 | 32 | 32 | 32 | integer | any | windows |
| __int64 | 64 | 64 | 64 | integer | any | windows |
| int8_t | 8 | 8 | 8 | integer | signed | stdint.h |
| uint8_t | 8 | 8 | 8 | integer | unsigned | stdint.h |
| int16_t | 16 | 16 | 16 | integer | signed | stdint.h |
| uint16_t | 16 | 16 | 16 | integer | unsigned | stdint.h |
| int32_t | 32 | 32 | 32 | integer | signed | stdint.h |
| uint32_t | 32 | 32 | 32 | integer | unsigned | stdint.h |
| int64_t | 64 | 64 | 64 | integer | signed | stdint.h |
| uint64_t | 64 | 64 | 64 | integer | unsigned | stdint.h |
| intptr_t | 64 | 32 | 64 | integer | signed | stdint.h |
| uintptr_t | 64 | 32 | 64 | integer | unsigned | stdint.h |
| ptrdiff_t | 64 | 32 | 64 | integer | signed | stddef.h |
| size_t | 64 | 32 | 64 | integer | unsigned | stddef.h |
| wchar_t | 32 | 32 | 32 | integer | signed | stddef.h |
Warning: Try to avoid unspecified bit sized types, especially long, since it differs on Unix and Windows!
Notes:
Compounds (structures) are aligned naturally, i.e. their inner components are aligned
and are itself aligned to it's largest element.
remainder = offset % alignmentsince alignment is a multiple of 2
-> x % 2n == x & (2n - 1)
remainder = offset & ( alignment - 1 )
padding = (remainder > 0) ? alignment - remainder : 0 ;
aligned_offset = offset + padding ;
typedef struct { char fill; // nibble one byte // padding to align s1: padding_0 type_t s1; // } test_struct_type_t; padding_0 = sizeof(test_struct_type_t) - sizeof(type_t) - sizeof(char) ; alignmentOf(type_t) = sizeof(test_struct_type_t) - sizeof(type_t) ;
| type | 32 bits | 64 bits | ||
|---|---|---|---|---|
| size | alignment | size | alignment | |
| char | 1 | 1 | 1 | 1 |
| short | 2 | 2 | 2 | 2 |
| int | 4 | 4 | 4 | 4 |
| float | 4 | 4 | 4 | 4 |
| long | 4 | 4 | 8†,4∗ | 8†,4∗ |
| pointer | 4 | 4 | 8 | 8 |
| long long | 8 | 4†,8∗+ | 8 | 8 |
| double | 8 | 4†,8∗+ | 8 | 8 |
| long double | 12†∗,8+,16- | 4†∗,8+,16- | 16 | 16 |
#include <gluegen_stdint.h> #include <gluegen_stddef.h> uint64_t test64; size_t size1; ptrdiff_t ptr1;
-I
:gluegen/make/stub_includes/platform
includeRefid
element:gluegen/make/stub_includes/gluegen
#define __GLUEGEN__ 2


Cocos2d is an open source software framework. It can be used to build games, apps and other cross platform GUI based interactive programs. It has a lot of branches, but this tutorial series will focus on C++ and Cocos2d-x.
Installation process is more or less described in the official documentation so there should not be any problems. Also there are good instructions in this blog for Linux or here for Windows, or here for iOS.
Now there are two versions of framework: 3.17 and 4.0. Both are good, and differences are not so significant.
On Linux you’ll have to perform two steps:
Finally you should be able to enter cocos
command in command line
::>cocos -v
cocos2d-x-4.0
Cocos Console 2.3
On Windows it’s more or less the same. First you install cmake and python and then Visual Studio Community.
In order to check that everynting was installed properly you’ll have to create and build the first project.
Projects are created with cocos new
command:
::>cocos new -d ./ -l cpp SmokeTest
> Copy template into /home/username/proj/cocos2d/SmokeTest
> Copying Cocos2d-x files...
> Rename project name from 'HelloCpp' to 'SmokeTest'
> Replace the project name from 'HelloCpp' to 'SmokeTest'
> Replace the project package name from 'org.cocos2dx.hellocpp' to 'org.cocos2dx.SmokeTest'
> Replace the Mac bundle id from 'org.cocos2dx.hellocpp' to 'org.cocos2dx.SmokeTest'
> Replace the iOS bundle id from 'org.cocos2dx.hellocpp' to 'org.cocos2dx.SmokeTest'
Obviously -l cpp
specifies that we’ll use C++. The cocos new --help
will print help on all available options.
Here “SmokeTest” is the name of the project. The cocos script will create a folder with this name and will generate all initial files there.
Things ill be a way simpler on Linux. To compile you’ll have to enter command cocos compile -p linux
and it will show you a typical cmake output
Windows compilation depends on framework version. For 3.17.2 it will create a SmokeTest\proj.win32\SmokeTest.sln
file and you’ll just open it with Visual Studio.
However it’s more complicated with 4.0 framework. First you’ll have to create build directory and get there like
mkdir build_win && cd build_win
Now perform following
cmake .. -G"Visual Studio 16 2019" -A Win32
This command asks cmake to use Visual Studio to generate it’s project file. This particula command tries to call VS 2019. There are other strings for older VS versions. “Win32 is the architecture and as for not it’s the only option available for cocos.
Anyway you can launch your progma with cocos run
command:


Left+drag move pieces
Right+drag rotate pieces
Left+drag on ground to rotate camera
Right+drag on ground to translate camera
Project page


开源中国iPhone客户端在开发过程中使用了下列第三方开源类库、组件，感谢开源社区的贡献。
Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com/)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2014 AFNetworking (http://afnetworking.com)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2012, Brad Larson, Ben Cochran, Hugues Lismonde, Keitaroh Kobayashi, Alaric Cole, Matthew Clark, Jacob Gundersen, Chris Williams.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the GPUImage framework nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Copyright (c) 2013 Matej Bukovinski
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2014 Mattt Thompson (http://mattt.me/)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2011-2013, Tony Million.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Copyright (c) 2012 - 2015, GitHub, Inc. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2013 Roman Efimov (https://github.com/romaonthego).
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2009 Olivier Poitrey
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2010-2014 Sam Soffes, http://soff.es
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (c) 2011 Mattt Thompson (http://mattt.me/)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The MIT License (MIT)
Copyright (c)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Blocks
Transactions
Accounts
Nodes
Supernodes Reward
Namespace & Mosaic
×
warning：
Block Detail
#
Timestamp
Amount
Fees
Sender
Recipent
×
Transaction Detail


We visualize users!
- visualize global technologies
- mesh visionary e-business
- recontextualize efficient action-items
- deploy cutting-edge e-business
- embrace killer experiences
- architect clicks-and-mortar markets
- implement revolutionary niches
- disintermediate wireless convergence
- morph real-time e-markets
- reintermediate integrated experiences


This map represents a snapshot of daily-averaged ocean surface current from the USGS COAWST coupled circulation, wave and sediment transport modeling system for the US East and Gulf coasts.
The surface current data is extracted from the USGS THREDDS Data Server via OPeNDAP and averaged over 24 hours. The streaks are created dynamically by JavaScript running in the browser.
Please send feedback and inquiries to:
John Warner.
This map uses copyrighted technology developed by Fernanda Viegas and Martin Wattenberg (
hint.fm) for their stunning
wind map application. They have graciously allowed us to show visualization of ocean currents here until license issues are resolved.


This package provides a solution path for L1-penalized angle-based classification. Three loss functions are implemented in smac, including the deviance loss in logistic regression, the exponential loss in boosting, and the proximal support vector machine loss.
| Version: | 1.0 |
| Published: | 2014-11-01 |
| Author: | Chong Zhang, Guo Xian Yau, Yufeng Liu |
| Maintainer: | Chong Zhang <chong.zhang at uwaterloo.ca> |
| License: | GPL-2 |
| NeedsCompilation: | yes |
| CRAN checks: | smac results |
| Reference manual: | smac.pdf |
| Package source: | smac_1.0.tar.gz |
| Windows binaries: | r-devel: smac_1.0.zip, r-release: smac_1.0.zip, r-oldrel: smac_1.0.zip |
| OS X binaries: | r-release: smac_1.0.tgz, r-oldrel: smac_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=smac to link to this page.


Suzawa Games is an up-and-coming Indie Game Studio heavily inspired by the Japanese style of storytelling seemingly unique to its media. Suzawa is made up of a group of college friends
that shared an interest and created something from it. Now we want to give back and create something for the community. We are also available for contract work.
suzawaHellogamesHow@AregmailYou?.com
*the following languages to English:
Japanese, Chinese, and Spanish


Organising Chairperson
Treasurer
Scientific Committee
Workshop Committee
Reception Committee
Organising Secretary
Hall managementn
Venue
Jt Secrataries
and stalls
Audio - Visual Committee
Catering Committee


You get free prescriptions for your accepted disablement
Because you have a War Pension you get free:
-
NHS prescriptions for your accepted disablement
What you'll need as proof
You need a War Pension Exemption Certificate.
Contact The Veterans Agency to apply:
Telephone
0800 169 2277Post
The Veterans Agency
Norcross
Blackpool
FY5 3WP


Spanning three columns.
Spanning one column.
Spanning two columns.
Spanning one column.
Spanning one column.
Spanning one column.


validation for too many marked squares past a square that is "blank" (and therefore true)
validation for not enough empty+marked squares past a square that is "blank"
Legend
Completed puzzle validation
Letters
Make the puzzle bigger, have the body size be set and put some auto borders on the sides
Add validation for a single trapped "blank" node
Nice-to-haves
Enter multiple alternative conjectures and switch between them to (1) see common implications, and (2) accept the successful one (which might not be the last one).
right-click to mark as filled
History back-and-forth and maybe slider
user can customize solving colors
server-side validation for the answer (with appropriate measures to prevent a brute-force)
click-and-drag to select multiple in a direction
Report issues beyond what's above
Please send an email to<EMAIL_ADDRESS>about any issues, bugs, or feature requests that come up.


Cnerator module¶
This is the entry point to the Cnerator source code generation tool.
The main function runs Cnerator.
To see the different arguments provided, run Cnerator with either -h
or --help
command line arguments.
This is the entry point to the Cnerator source code generation tool.
The main function runs Cnerator.
To see the different arguments provided, run Cnerator with either -h
or --help
command line arguments.


LEPRECHAUN uses deep learning neural networks and twitter
analysis of various coins to predict the future. Leprechaun is smart. So you should Ask LEPRECHAUN
We are in association with Ridge Private Limited. It is a consultancy based firm in Karachi which consults its customers in tradings
Beautiful Gallery
Spend your time generating new ideas. You don't have to think of implementing.
Teamwork is so important that it is virtually impossible for you to reach the heights of your capabilities or make the money that you want without becoming very good at it.
A group becomes a team when each member is sure enough of himself and his contribution to praise the skill of the others. No one can whistle a symphony. It takes an orchestra to play it.
The strength of the team is each individual member. The strength of each member is the team. If you can laugh together, you can work together, silence isn’t golden, it’s deadly.


|
Elektra
0.8.18
|
The private trie structure. More...
| Backend * | elektraTrieLookup (Trie *trie, const Key *key) |
| Internal Datastructure for mountpoints. More... | |
| int | elektraTrieClose (Trie *trie, Key *errorKey) |
| Closes the trie and all opened backends within. More... | |
The private trie structure.
A trie is a data structure which can handle the longest prefix matching very fast. This is exactly what needs to be done when using kdbGet() and kdbSet() in a hierarchy where backends are mounted - you need the backend mounted closest to the parentKey.
| int elektraTrieClose | ( | Trie * | trie, |
| Key * | errorKey | ||
| ) |
Closes the trie and all opened backends within.
| trie | the trie to close |
| errorKey | the key used to report warnings |
| 0 | on success |
| Backend* elektraTrieLookup | ( | Trie * | trie, |
| const Key * | key | ||
| ) |
Internal Datastructure for mountpoints.
Lookups a backend inside the trie.
| trie | the trie object to work with |
| key | the name of this key will be looked up |


--- title: "MATLAB Final Project" author: "Pooya Shirazi" date: 2018-12-25T00:00:00-08:30 output: html_document ---
Download MATLAB Final Project.


I really want to begin documenting my life, goals, work, and memories through YouTube and blogging. I’ve been wanting to make a tech blog for quite some time, but never really made a conscious effort to. That, or I would try to pick up web development, read a bit into something like Ruby on Rails, get lost, and stop caring or get busy doing something else. This blog is my attempt to rectify that, and what better a place to do it than Github pages?! I can host my own site, store my code/PCBs with version control, and pay absolutely nothing all in one place? Its the perfect solution to my needs, and Jekyll is a joy to use.
I’m an electrical engineer and techie at heart. I love designing hardware and PCBs, and dabbling in software to bring things to life. I am always trying to learn something new to build cool hardware and software applications.
My areas of interest, and thus the focus of this blog, are:
- Hardware/electronics design engineering
- Power electronics
- Embedded systems
- PCB design
- Low voltage systems
- Hacks with Arduino/Raspberry Pi
- Software engineering
- Python
- Algorithms
- Interfacing with hardware
- Data science
- Tutorials (with Github!!)
- Collaboration (start ups etc.)
- Whatever I feel like
But first, a little bit about myself. I’m an electrical engineer in the San Francisco Bay Area working for Tesla Motors. Having moved recently, I’m loving life out in the Bay. The weather is a significant improvement over Texas, and the fact that I can go hiking, surfing, AND skiing in the same day blows my mind.  The views are unlike anything I’ve ever seen, and to be able to walk around in Facebook/Google/Apple headquarters is awesome and inspiring. There’s an entrepreneurial energy here that is definitely absent from Houston. It feels like if you have an idea, you can find people to help you work on it and maybe make it come to fruition.
That’s not to say the Bay Area isn’t without its faults. Here are a few things that I’ve noticed:
- Rent is outrageous.  You wonder why everywhere here makes >$100,000? Its because of the cost of living.
- Having a car if you’re in the city or Oakland is an expensive pain, and parking is a nightmare. If you’re lucky enough to have a complex that comes with a parking spot, you’ll pay between $100-300/mo for it, or you’re gonna have to find street parking. Speaking of parking…
- The San Francisco Municipal Transportation Agency is evil. Deciphering the plethora of signage in some areas of the city is unnecessarily complicated. Coming from a city that never had street sweeping, it is a huge pain. Where I am in Oakland, the streets are offset so that streets in one direction only allow parking Mon/Weds/Fri and the perpendicular streets are Tues/Thurs with street sweeping between the hours of 3-5am. What this means is if you don’t have a parking spot, you need to move your car every single day to a different spot, or be ticket $66.
- State tax. Enough said.
All in all, I’m really liking this huge change in my life. California is ‘hella’ cool.


Elder Brain
Large aberration, lawful evil
Armor Class 10
Hit Points 210 (20d10+100)
Speed 5ft., swim 10 ft.
| STR | DEX | CON | INT | WIS | CHA |
|---|---|---|---|---|---|
| 15 (+2) | 10 (0) | 20 (+5) | 21 (+5) | 19 (+4) | 24 (+7) |
Saving Throws Int +10, Wis +9, Cha +12
Skills Arcana +10, Deception +12, Insight +14, Intimidation +12, Persuasion +12
Senses blindsight 120 ft.
Languages understands Common, Deep Speech, and Undercommon but can’t speak, telepathy 5 miles
Challenge 14 (11,500 XP)
Creature Sense. The elder brain is aware of the presence of creatures within 5 miles of it that have an Intelligence score of 4 or higher. It knows the distance and direction to each creature. as well as each one’s intelligence score, but can’t sense anything else about it.
Innate Spellcasting (Psionics). The elder brain’s innate spellcasting ability is Intelligence (spell save DC 18). It can innately cast the following spells, requiring no components:
At will: detect thoughts, levitate
1/day each: dominate monster, plane shift (self only)
Legendary Resistance (3/Day). If the elder brain fails a saving throw, it can choose to succeed instead.
Magic Resistance. The elder brain has advantage on saving throws against spells and other magical effects.
Telepathic Hub. The elder brain can use its telepathy to initiate and maintain telepathic conversations with up to ten creatures at a time. The elder brain can let those creatures telepathically hear each other while connected in this way.
Actions
Tentacle. Melee Weapon Attack: +7 to hit, reach 30 ft., one target. Hit: 20 (4d8+2) bludgeoning damage. If the target is a Huge or smaller creature, it is grappled (escape DC 15) and takes 9 (1d8+5) psychic damage at the start of each of its turns until the grapple ends. The elder brain can have up to four targets grappled at a time.
Mind Blast (Recharge 5-6). The elder brain magically emits psychic energy. Creatures of the elder brain’s choice within 60 feet of it must succeed on a DC 18 Intelligence saving throw or take 32 (5d10+5) psychic damage and be stunned for 1 minute. A target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.
Psychic Link. The elder brain targets one incapacitated creature it can perceive with its Creature Sense trait and establishes a psychic link with that creature. Until the psychic link ends, the elder brain can perceive everything the target senses. The target becomes aware that something is linked to its mind once it is no longer incapacitated, and the elder brain can terminate the link at any time (no action required). The target can use an action on its turn to attempt to break the psychic link, doing so with a successful DC 18 Charisma saving throw. On a successful save, the target takes 10 (3d6) psychic damage. The psychic link also ends if the target and the elder brain are more than 5 miles apart, with no consequences to the target. The elder brain can form psychic links with up to ten creatures at a time.
Sense Thoughts. The elder brain targets a creature with which it has a psychic link. The elder brain gains insight into the target’s reasoning, its emotional state, and thoughts that loom large in its mind (including things the target worries about, loves, or hates). The elder brain can also make a Charisma (Deception) check with advantage to deceive the target’s mind into thinking it believes one idea or feels a particular emotion. The target contests this attempt with a Wisdom (Insight) check. If the elder brain succeeds, the mind believes the deception for 1 hour or until evidence of the lie is presented to the target.
Legendary Actions
The elder brain can take 3 legendary actions, choosing from the options below. It can take only one legendary action at a time and only at the end of another creature’s turn. The elder brain regains spent legendary actions at the start of its turn.
Tentacle. The elder brain makes a tentacle attack.
Break Concentration. The elder brain targets a creature within 120 feet of it with which it has a psychic link. The elder brain breaks the creature’s concentration on a spell it has cast. The creature also takes 1d4 psychic damage per level of the spell.
Psychic Pulse. The elder brain targets a creature within 120 feet of it with which it has a psychic link. Enemies of the elder brain within 10 feet of that creature take 10 (3d6) psychic damage.
Sever Psychic Link. The elder brain targets a creature within 120 feet of it with which it has a psychic link. The elder brain ends the link, causing the creature to have disadvantage on all ability checks, attack rolls, and saving throws until the end of the creature’s next turn.


import { reduceRight as arrayReduceRight } from './array';
Lists are one of the most common data structures in functional programming. They are recursive tree structures. Each node wraps some value, known as the head, and has a reference to the next node in the list, known as the tail.
Operating on lists requires recursive functions. As with recursive array functions, we need some base case. With arrays it was the empty array. Likewise with lists the base case is the empty list, also known as nil.
import { reduceRight as arrayReduceRight } from './array';
As mentioned, nil
is the empty list and needed for the base case. Without
nil
, our recursive functions would never know when they reach the end of
the list.
nil
is a singleton, so we will just create an empty object. We use
Object.create(null)
to avoid adding an unnecessary prototype to nil
.
Object.getPrototypeOf(nil); // null
const nil = Object.create(null);
The cons cell represents a node in a list. It wraps over some value, the
head
, and references the next node in the list, which may be another
cons cell or nil
, signalling the end of the list.
Implementing a cons cell is straightfoward. The cons
function just returns
an object literal with a head
and tail
property. Remember that head
is
the value inside the node (e.g. a number like 42), and tail
is the next
node in the list (e.g. another cons cell or nil
).
Building lists is accomplished by calls to cons
with the last call passing
in nil
as the tail
.
const list = cons(1, cons(2, cons(3, nil)));
function cons(head, tail) {
return { head, tail };
}
Helper function to create a list from an array. We utilize the reduceRight
function for arrays to fold over each value in the array to produce
subsequent cons cells.
Notice we have to go a right-to-left direction and start with nil
as the
initial memo value. We want to build the tree from the bottom with nil
.
const list = fromArray([1, 2, 3]);
function fromArray(values) {
return arrayReduceRight((list, value) => cons(value, list), nil, values);
}
Unnecessary function, but allows us to use an “array-less” syntax for creating lists.
const list = create(1, 2, 3);
function create(...values) {
return fromArray(values);
}
Helper function to abstract out the notion of an empty list by just checking
if the supplied list
argument is nil
.
isEmpty(create(1, 2, 3)); // false
isEmpty(nil); // true
function isEmpty(list) {
return list === nil;
}
Convert a list to an array. Uses the list reduce
function (explained
further down the page) to build up an array from each value in the list.
toArray(create(1, 2, 3)); // [1, 2, 3]
toArray(nil); // []
function toArray(list) {
return reduce((array, value) => {
return array.concat(value);
}, [], list);
}
Serialize the list into a string. toString
uses the list reduce
function
like toArray
, except it builds up a string. Notice we account for the
empty list and return 'nil'
in that case. Also notice that we grab the
head
and tail
of the list, using head
as the memo for the reduce
call on tail
. This allows us to take into account the case where there is
only one item in the list as well as preventing a trailing comma for lists
with length greater than 1.
toString(create(1, 2, 3)); // 'list(1, 2, 3)'
toString(nil); // 'nil'
toString(create(42)); // 'list(42)'
function toString(list) {
if (isEmpty(list)) {
return 'nil';
}
const { head, tail } = list;
const contents = reduce((current, value) => {
return `${current}, ${value}`;
}, head, tail);
return `list(${contents})`;
}
map
is arguably one of the most famous functions in functional
programming. It allows us to transform the values in a list by applying
fn
to each value and returning a new list of the mapped values.
For example, we could use map
to double every number in a list of
numbers.
map(n => n * 2, create(1, 2, 3)); // create(2, 4, 6)
Notice for our base case we check for the empty list and then return that.
This ends the chain of recursive map
calls and gives a value upon which
the new list will be built. Remember nil
has to be the last node in a
list!
With our recursive calls, we build up a new list with calls to cons
. We
use the provided mapping callback fn
to transform the current head
to
produce a new head
for this new cons cell. The new tail
is formed by
making a recursive call to map
, which we know will also return another
cons cell or nil
.
function map(fn, list) {
if (isEmpty(list)) {
return list;
}
const { head, tail } = list;
return cons(fn(head), map(fn, tail));
}
filter
, as its name suggests, allows you to filter the values in an
list. A great example is selecting all the numbers greater than 3 in
a list of numbers.
const list = create(1, 2, 3, 4, 5);
filter(n => n > 3, list); // create(4, 5)
Again the base case is the empty list, so return it. Instead of building
up a new list of new values, we build up a list of existing values. We will
only create new cons cells if a value passes the filter function. If the
value does not pass the filter function, then we return whatever the result
of filter
on the tail is equal to.
function filter(fn, list) {
if (isEmpty(list)) {
return list;
}
const { head, tail } = list;
if (fn(head)) {
return cons(head, filter(fn, tail));
}
return filter(fn, tail);
}
reduce
is another of the functional programming all-stars. reduce
is
also known as fold
, foldLeft
, and foldl
. The purpose of reduce
is to
“reduce”, or “fold over”, the values in a list to produce a new value.  As the name suggests,
memo
keeps a “memo” of the currently accumulated value that we are
reducing to. It is critical to supply the starting point for reduce by
providing an initial memo value.
The quintessential example is finding the sum of numbers in a list of numbers. The initial memo value would naturally be 0 then.
const add = (x, y) => x + y;
reduce(add, 0, create(1, 2, 3)); // 6
function reduce(fn, memo, list) {
if (isEmpty(list)) {
return memo;
}
const { head, tail } = list;
return reduce(fn, fn(memo, head), tail);
}
reduce2
is a special case of reduce
whereby the initial memo is set to
be the first value in the list. This translates to calling reduce
on the
tail of the list with the initial memo’s being the first value in the
original list.
reduce2(add, create(1, 2, 3)); // 6
function reduce2(fn, list) {
const { head, tail } = list;
return reduce(fn, head, tail);
}
reduceRight
is the same as reduce
except it operates in the opposite
direction. Instead of reducing the list from left to right, or from the
first value to the last, reduceRight
reduces the list from right to
left. This means the first call to fn
will be with the initial memo
and
the last value in the list. Therefore, reduceRight
traverses the
list in reverse. reduceRight
is also known as foldr
and foldRight
.
reduceRight(add, '', create('a', 'b', 'c'));
// 'cba' not 'abc'!
function reduceRight(fn, memo, list) {
if (isEmpty(list)) {
return memo;
}
const { head, tail } = list;
return fn(reduceRight(fn, memo, tail), head);
}
export {
nil,
cons,
fromArray,
create,
isEmpty,
toArray,
toString,
map,
filter,
reduce,
reduce2,
reduceRight
};


{% extends "base.html" %} {% load staticfiles compress require %} {% block navigation %} {% endblock %} {% block main %}
Sorry there is a server error, the system administrator has been notified


Search tabs allow Google Earth EC and Google Maps users to search external databases on Google Earth Enterprise Servers as well as non-Google servers. For example, if you have a database of San Francisco neighborhoods that contains specific information that your users need about each neighborhood, you can add a search tab called SF Neighborhoods and configure it to search for neighborhoods in your database, even if that database is stored on another server. Google distributes some sample databases with the Google Earth Enterprise Server.
The first thing you need to do is pre-configure search tabs using the Search Tab Manager. Then you can associate the search tabs with a particular database. The exercises in this lesson show you how to perform both steps.
The search tab name appears on the list on the left and is selected.
Starts with (e.g., Pac for Pacific Heights)
Note: You can use some basic HTML to format the Label text, if desired. Google Earth EC accepts only basic font styling HTML codes, such as font size, color, bold, italic, and superscript. It does not accept line breaks.
After you build and publish the database, the text value in the first Label field appears above the first search field in Google Earth EC.
When a Google Earth EC user specifies a search value, the Key value is associated with the value specified by the user and added to the URL GET
request submitted to the preconfigured plug-in. It does not necessarily correlate to a field in the search database.
You can enter Label and Key values for one or two fields on each search tab. In this exercise, you use the first Label and Key fields only.
This is the plug-in example supplied with Google Earth Enterprise Fusion. For more information about plug-ins for search tabs and the other fields in this dialog, see the Managing Search Tabs section in the Setting Up Your Workspace chapter of the Reference Guide.
The Asset Manager appears.
ASSET_ROOT/Databases
in the asset navigation tree, and double-click the SFHighways database that you built in Lesson 4.
The Database Editor appears with the imagery, terrain, and vector projects specified.
The Database Editor extends to include a Search Tabs definition area.
A pop-up list displays the search tab you created in the previous exercise.
The selected tab appears in the Search Tabs area.
Google Earth Enterprise Fusion saves the changes to the database with the same name.
Even though you built the database before, you must build it again to include the new search tabs. See Adding Search Tabs to a Database, in the Defining and Building Databases chapter of the Reference Guide.
Caution: If you have logged in to this server with Google Earth EC previously, log out, clear your cache, and log back in. For help with clearing your cache, refer to the Google Earth User Guide.
Google Earth EC displays your database with the search tabs you specified.


Repository / Git: Name: Numbers\Services Title: Services Repository Version: 3.0.4 Last Tag: 3.0.4 User Name: Volodymyr Volynets User Email<EMAIL_ADDRESS>Statistics: Addition: 1 Deletion: 1 Modules: S/S Service Management (Numbers\Services\Services, 1.0.27) | 1 1 1 1 | Services/Helper/ServiceScript/Helper.php


--- layout: post published: true title: "Dammit" permalink: /2013/03/dammit/ link: https://twitter.com/sup3rmark/status/312028126932779008 ---
Two weeks of no pope: baby cured of HIV, breath test for cancer, salt water found on moon of Jupiter. Day one with pope: Google Reader dies.
— sup3rmark (@sup3rmark) March 14, 2013


@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.FrontendAppConfig @import controllers.PlaLanguageController @import helpers.amends.amendSection @import play.api.Application @import uk.gov.hmrc.play.views.html.{helpers => govHelpers} @import config.FrontendAppConfig @(protectionType: String)(implicit request: Request[_], messages: Messages, application: Application, context: config.PlaContext, partialRetriever: uk.gov.hmrc.play.partials.FormPartialRetriever, templateRenderer: uk.gov.hmrc.renderer.TemplateRenderer, appConfig: FrontendAppConfig) @lc = @{ Application.instanceCache[PlaLanguageController].apply(application) } @views.html.main_template(title = Messages("pla.withdraw.confirmation.message", Messages(s"pla.withdraw.protection.${protectionType}.label"))) {
@Messages("pla.withdraw.confirmation.contact.you.if.needed")
@Html(Messages("pla.withdraw.confirmation.other.protections.link"))
@Messages("pla.resultSuccess.exitSurveyLinkText") @Messages("pla.resultSuccess.exitSurvey")


Year 3 Final Project
Bewdley Rowing Museum represents a diagrammed journey through a space of contrasts- fixed and movable,vertical and horizontal, old and new, temporary and permanent. The initial diagrams have imposed the triangular building section, which has then been subjectively sculpted.


What We Do
A Center For Grieving Children is a support center for children, teens, and their families who are grieving the loss of someone they love because of death, divorce, or separation. We also have support groups for children in foster care, and families with anticipatory grief (a loved one who is dying). There is no cost to the families that use our services. We are funded through foundations, organizations and private donations; we do not receive government funding.
A Center For Grieving Children was created to assist children and their families through the grief process by encouraging them to share their feelings with others who have experienced a similar loss.
Our groups provide an environment in which bereaved children can safely mourn, and where they are allowed to explore thoughts and feelings about their loss in a way that helps them be compassionate with themselves and others.
A Center For Grieving Children offers mutual support and acceptance through listening and sharing. We respect each individual family's belief system. In our program, we learn and heal ourselves by listening and sharing. Our goals are to support and nurture children and their families in a loving and understanding environment as they experience grief.
We hold workshops and give presentations to provide education and training on grief and the grief process for community agencies, schools and families. We provide crisis intervention and consultations to schools in Utah. We have a library with materials and books available to the public.
We offer support groups for children ages 3 through 19. Separate groups are available for those grieving due to the death of a loved one, divorce or separation, and children in foster care. A typical group includes up to 10 children and 5 trained volunteer facilitators and staff. An adult family member or care-giver must accompany a child and may participate in the adult support group which meets simultaneously.


Salmon King Seafood
File
Manage Customers
Manage Suppliers
Exit
Order
Create Order
View Orders
Create Invoice
Add Stock Order
Add Stock to Inventory
Inventory
Inventory Update
Inventory Adjust
Maintenance
Manage Products
Manage Users
Help
About
Company Name:
Contact First Name:
Contact Last Name:
Selected Company:
Selected Contact:
Sales Tax:
Shipping:
Sub Total:
Total:
Submit
×


{% extends "base.html" %} {% block breadcrumbs %}{% endblock %} {% block content %}
That page does not exist. It is possible that the page you are looking for may have been moved to a new location. It is also possible that you followed a link that contained a typo.
Please use the search form to help find the page you were looking for.
In the meantime, here is a cute picture of an animal.


WWU Home Registration Info ClassFinder Help
For more information or for registration assistance, Western's Academic Advising Center is open from 8:00 am to 5:00 pm daily. The Academic Advising Center is located in Old Main 380 and can be reached by phone at<PHONE_NUMBER> or e-mail advising@wwu.edu


• The government (local, national, agencies)
• Think tanks and research organizations
• NGOs and advocacy organizations
• Scientific research (ex 1 ex 2)
• Collect it yourself
• FOIA/FOIL
Opening up data:
• 2012 Olympic athletes — The Guardian
• The Military's Surplus Gear — New York Times (bonus link)
Linking to data:
Human v machine readable
Slides made using Reveal.js


This week we will be looking at a key component of the data science workflow: version control. More specifically we will create your first repo on Github and see how we can use it to keep a record of all the changes that were ever made to your code. This is an essential component of collaborative coding efforts, but can also be immensely beneficial to your own solo projects.
Today’s session will follow the exact recipe suggested in Simon’s lecture:
Before we get into the nitty-gritty of this week’s session, I would like to suggest you all download Github Desktop. It is a GUI that lets you interact with GitHub and might be an additional option if your do not want to rely on RStudio or the Command Line alone. Instructions to set it up and get it running can be found here.
There are a number of different GUIs that you can try out and play around with. Some are better than others. An additional free GUI like GitHub Desktop that I like is GitKraken.
Before getting to know Git(Hub) it is useful to have a look at R-projects and how you should structure them. Version Control is only useful if your projects can be understood by a wide range of collaborators.
First of all, you should always use RStudio projects. They allow you to keep all the files associated with a project together — input data, R scripts, analytical results, figures etc. When you open a Project you will find a .Rproj file. This file contains all the meta information relevant to your project: settings, working directory, open scripts, encoding etc. If you are curious what exactly lies within it, I suggest you open the .Rproj file with a text editor.
However, projects are only as useful as the organization within them. As we saw in the lecture a structure like the following one would be a good starting point.
.
+-- src
+-- output
| +-- figures
| +-- tables
+--data
| +-- raw
| +-- processed
|
+-- README.md
+-- run_analyses.R
+-- .gitignore
The overview can be adapted to requirements inherent to any given project. It might be interesting to spend a little more time looking into the different folders and what they should contains.
The data folder is, as the name suggests, where your data goes. The “raw” folder should contain the original data that will need to be wrangled and manipulated. It might be that your data is stored in an online relational database, or needs to be accessed through an API. In such cases the raw folder can be dispensed with.
Once you have shaped your data into a format that suits your analysis, the data should be stored in the “processed” folder. If you need to perform certain intermediate steps it might also be an idea to create a dedicated “temp” folder.
This is the folder that should contain your code. You should aim to emulate the workflow of standard data science project within this folder. It is best to separate different aspects of your project into separate scripts. The names of these scripts should be named so as to make it clear what step of the project they represent (i.e. “2-preprocess-data”, “3-descriptives” etc.). These scripts should sequentially be executed through a main runner script. This can be done calling the source()
function.
Within a given script you should always use relative paths. To access your processed data folder you can use the following file path "./data/processed.RDa"
. The “.” represents your current working directory, which is set automatically when you open a new R-project.
For more in depth guides and explanations you can look here. If you feel like you want to practice this you can find more material here. And there is even a package dedicated to file referencing here.
Most of you will already have completed this step (we hope). For future reference however, we included a small reminder on the necessary steps:
Register for a GitHub account.
Install Git (or update version) using the Command Line.
which git
git --version
## /usr/bin/git
## git version 2.30.1 (Apple Git-130)
brew install git
brew install gh
git config --global user.name 'its-me'
git config --global user.email<EMAIL_ADDRESS>The following section highlights the recommended workflow that you should employ when you work with Git. You can see it as a sort of recipe that you should follow under most circumstances. At each stage you can find the instructions for working through both the Command Line and through RStudio. Be aware however that these are separate processes that should not be mixed. Either you use the shell for version control or you use RStudio.
Go to your github page and make sure you are logged in.
Click green “New repository” button. Or, if you are on your own profile page, click on “Repositories”, then click the green “New” button.
How to fill this in:
Great, now that you created a new repo on Github, it is important to note that you should always create a repo prior to starting your work in RStudio.
Question:
There is a distinct advantage to employing the GitHub first, RStudio/Shell second approach, do you know which one?
Whatever way you plan on cloning this repo, you first need to copy the URL identifying it. Luckily there is another green button “Code” that allows you to do just that. Copy the HTTPS link for now. It will look something like this https://github.com/tom-arend/my_first_repo.git.
Open the Terminal on your laptop.
Be sure to check what directory you’re in. $ pwd
displays the working directory. $ cd
is the command to change directory.
Clone a repo into your chosen directory.
cd ~/phd_hertie/teaching/IDS_fall_21
git clone https://github.com/tom-arend/my_first_repo.git
Check whether it worked:
cd ~/phd_hertie/teaching/IDS_fall_21/my_first_repo
git log
git status
In RStudio, go to:
File > New Project > Version Control > Git.
In the “repository URL”-box paste the URL of your new GitHub repository.
Do not just create some random directory for the local copy. Instead think about how you organize your files and folders and make it coherent.
I always suggest that with any new R-project you “Open in new session”.
Finally, click the “Create Project” to create a new directory. What you get are three things in one:
In the absence of other constraints, I suggest that all of your R projects have exactly this set-up.
Here is a short gif on how to clone a repo with GitHub Desktop:
To showcase how useful Git can be, we first need to add some files to our repo. For now there should only be the .gitignore, the .Rproj and the README file. While we do this we might as well review some of the stuff we encountered last week.
So let’s create a new R script and save it in the directory that we just cloned.
First load/install necessary packages (the tidyverse suffices here)
# Set-up your script ------------------------------------------------------
# install.packages(c("tidyverse", "gapminder", "pacman")) # uncomment if already installed
::p_load(tidyverse, gapminder) pacman
# Load your Data into R ---------------------------------------------------
data(gapminder)
head(gapminder)
# Clean your Data ---------------------------------------------------------
<- gapminder %>%
gapminder_clean rename(life_exp = lifeExp, gdp_per_cap = gdpPercap) %>%
mutate(gdp = pop * gdp_per_cap)
Before we get on to the next step, it is a goo idea to save this newly created script and give it a name. Do the same thing for the README file. Now that your changes are saved locally we need to let Git know.
Stage (“add”) a file or group of files. This allows you to stage specific individual files such as the README file for example.
git add NAME-OF-FILE-OR-FOLDER
Alternatively you could stage all files (whether updated or not):
git add -A
Or you could stage updated files only (modified or deleted, but not new):
git add -u
Finally you can also only stage new files (not updated ones).
git add .
Having done so, you are now ready to commit these changes!
git commit -m "Helpful message"
As you can imagine, the command shell with its different options (and there are more beyond the staging phase), can be quicker and more flexible than your GUI interface, especially for experienced users.
In the Environment/History panel a new tab called “git” should have appeared.
This method has the clear advantage of being extremely intuitive. However you are limited to selecting and stageing individual files.
Changed or added files are automatically staged in Github Desktop. The GUI also displays (wehere possible) the changes that were done.
You only really need to commit the changes with a nice little summary or message.
This part of the version control workflow should be relatively easy. The most important thing to remember is that you should always pull before you push. The reason for this is that in collaborative projects someone else might have pushed changes to the same file you were working on. This can lead to conflicts that should be avoided.
There are only two commands you need to remember here and they are pretty intuitive:
To pull from the main repo:
git pull
And to push your commits:
git push
In RStudio you should see a change in the git tab. It should now read: “Your branch is ahead of ‘origin/main’ by 1 commit”
As long as this information is displayed, you know that you need to pull and push your commit.
To do this simply click on the blue arrow pointing down to pull from your main repo, before clicking on the green arrow pointing upwards to push your commits.
It is not really straightforward to pull before pushing with Github Desktop. Given that there is no prominent pull button, you need to actively remember to do so prior to pressing the blue push button.
At some point during either of these processes you will be prompted to enter your Github credentials and password. It might be that this works or it might be that you receiver the following error message:
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
Attention!
Github no longer supports simply using user-name and password as a way of authenticating yourself. You now have to identify yourself using Personal Access Tokens. You can cache these with HTTPS or you can use SSH keys.
The best way to get into the habit of using Git in your workflow is to practice! So let us get back to our working example with my_first_repo and the initial_script.
A really cool feature of version control with Git are Branches.
Branches allow you to take a snapshot of your existing repo and try out a whole new idea without affecting your main (i.e. “master”) branch.

Create a new branch on your local machine and switch to it:
git checkout -b NAME-OF-YOUR-NEW-BRANCH
Push the new branch to GitHub:
git push origin NAME-OF-YOUR-NEW-BRANCH
List all branches on your local machine:
git branch
Switch back to (e.g.) the master branch:
$ git checkout master
Delete a branch
$ git branch -d NAME-OF-YOUR-FAILED-BRANCH
$ git push origin :NAME-OF-YOUR-FAILED-BRANCH
Creating a new branch within RStudio is very easy.
Given the point-&-click nature of Github Desktop, it is very easy to open a new branch. Here is how it is done:
Once you are satisfied that the feature, analysis or whatever it was that you did in your branch, has been completed, you need to notify and ask your collaborators (or yourself) to approve the changes. This is done through Pull Requests.
Pull Requests are best managed directly on Github. As a reminder on how you open pull requests, here is the GIF from the lecture again:
Merge conflicts occur when Git cannot resolve differences in the code between two commits. It only affects commits that apply changes to the same line of code. These merge conflicts are part of Git and alert you to the fact that there is a problem that needs to be addressed before continuing. Helpfully, Git marks where the merge conflict occurred within your code, contrasting the conflicting contributions. Unfortunately, it might be more difficult to resolve in larger projects where the problem is not immediately obvious to the human coder. A better approach would be to make extensive use of branches.
For these exercises we will use the same repo created in the first part of the exercises, so be sure to finish them before moving on to this section!
mutate()
that qualifies whether a country is rich or poor! (Hint use the variable gdp_per_cap and ìf_else()
)Github recommends that you generate a Personal Access Token and cache it using HTTPS. Luckily for us this can be achieved in a few simple steps.
You need to go to your Github Account. Then select your logo in the top right > Settings > Developer Settings > Personal Access tokens
There you can create a new PAT. It is suggested that you select the following categories under scope: repo
, workflow
, gist
, admin::org
and user
.
Finally click the green button “Generate Token”. Make sure to save a copy of this Token somewhere secure. Once you leave the site you will lose the token!
Finally enter the following command:
gh auth login
In order select: GitHub.com > HTTPS > Yes > Paste an authentication token
Then you simply need to paste your PAT and you should no longer be challenged for your github credentials.
Luckily for R users there are two packages that essentially automate this process for us:
The usethis
package has a function that takes you immediately to the relevant GitHub page and preselects the recommended scopes (what github calls settings) for you.
::create_github_token() usethis
It should look like this:
Next you can use gitcreds
to cache your credentials.
::gitcreds_set() gitcreds
It will ask you for your PAT (or if you already cached credentials, whether you want to change them) and store it for you.
Now you should be able to pull and push to your origin/main repo.
If you ever misplace your token, but you need to use it to authenticate your command line operation for example, you can also call ´gitcreds::gitcreds_set()´ and select the 3. option to display your PAT.
A work by Lisa Oswald & Tom Arend
Some of the content was inspired by Jenny Bryan & Sian JM Brooke
Prepared for Intro to Data Science, taught by Simon Munzert


Juke-Jitsu is a modest attempt to bring the jukebox back into the party scene by allowing users to queue up and vote on songs -- all from the comfort of a web browser enabled device. Put the power of controlling the music atmosphere back into the hands of the crowd.


English Digit Recognizer
developed by
Nay Lin Aung
Go to Burmese Digit Recognizer
Result
Normalized Pixel Array Data