Slides at: https://jrjohnson.dev/talks/2017-08-microapps-uccsc.html
jrjohnson
jrjohnson-ucsf
jrjohnson_
Greater Complexity
Greater Complexity More People Engaged
Greater Complexity More People Engaged More Demands for Service
Greater Complexity More People Engaged More Demands for Service Higher Expectations
If google can do it, why cant you?
It isn't possible nor should it be necessary for everyone to understand the difference between proof of concept code and production code.
Get our ideas in front of people immediately
Before we invest too heavily in any one idea we must find and test our riskiest assumptions.
No user has ever thanked my for our top notch build pipeline ~ Jon Johnson
Simple === Small === Fast === Good
No user has ever thanked my for our top notch build pipeline ~ Jon Johnson
Simple === Small === Fast === Good
ember new <app-name>
ember serve
<div id="map"></div> <script> var map; function initMap() { map = new google.maps.Map(document.getElementById('map'), { center: {lat: 37.7749, lng: -122.4194}, zoom: 8 }); } </script> <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>
<div id="map"></div> <script> let map; function initMap() { let latLng = {lat: 37.7749, lng: -122.4194} map = new google.maps.Map(document.getElementById('map'), { center: latLng, zoom: 8 }); let marker = new google.maps.Marker({ position: latLng, map: map, title: 'UCSF!' }); } </script> <script src= "https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap" async defer></script>
$ ember new map $ cd map $ ember generate component schools-map $ ember add ember-g-map $ ember serve
{{#g-map as |context|}} {{#each (await codedLocations) as |obj|}} {{g-map-marker context lat=obj.lat lng=obj.lng}} {{/each}} {{/g-map}}
export default Component.extend({ locations: [ 'SF,ca', ], codedLocations: computed('locations.[]', function(){ return new Promise(resolve => { map(this.get('locations'), location => { return this.getLatLongForAddress(location); }).then(data => { resolve(data); }); }); }), getLatLongForAddress(address){ return new Promise(resolve => { let request = `${uri}/geocode/json?&key=${key}&address=${address}`; $.getJSON(request, (response) => resolve({ response.results[0].geometry.location.lat,response.results[0].geometry.location.lng})); }); }, });
export default Route.extend({ async model(){ let users = []; for (let i = 0; i < this.users.length; i++) { const username = this.users[i]; const repositoryNames = await this.getRepositoriesForUser(username); let user = Object.create({ username, repositoryNames }); users.push(user); } return users; },});
export default Component.extend({ tagName: 'svg', didReceiveAttrs() { run.scheduleOnce('render', this, this.draw); }, draw(){ const svg = select(this.element); // set the ranges const x = scaleBand().range([0, chartWidth]).padding(0.1); const y = scaleLinear().range([chartHeight, 0]); svg.append("g").attr("transform", "translate(" + 40 + "," + 20 + ")"); x.domain(dataOrArray.map(d => d.username)); y.domain([0, max(dataOrArray, d => d.repositoryNames.length)]); // append the rectangles for the bar chart svg.selectAll(".bar").data(dataOrArray) .enter().append("rect") .attr("class", "bar") .attr("x", d => x(d.username)) .attr("width", x.bandwidth()) .attr("y", d => y(d.repositoryNames.length)) .attr("height", d => chartHeight - y(d.repositoryNames.length)) .attr('fill', d => color(d.username)); svg.append("g").attr("transform", "translate(0," + chartHeight + ")").call(axisBottom(x)); svg.append("g").call(axisLeft(y)); },});
Credit: www.veryfunnypics.eu
Slides at: https://jrjohnson.dev/talks/2017-08-microapps-uccsc.html
jrjohnson
jrjohnson-ucsf
jrjohnson_
Keyboard shortcuts
↑, ←, Pg Up, k | Go to previous slide |
↓, →, Pg Dn, Space, j | Go to next slide |
Home | Go to first slide |
End | Go to last slide |
Number + Return | Go to specific slide |
b / m / f | Toggle blackout / mirrored / fullscreen mode |
c | Clone slideshow |
p | Toggle presenter mode |
t | Restart the presentation timer |
?, h | Toggle this help |
Esc | Back to slideshow |