JavaOne – Disrupting Engineering Education

“Disprupting Engineering Education; Hello from 42”

Speaker: Tony Hendrick, Oleksandra Fedorova & Giacomo Guiulfo

For more blog posts from JavaOne, see the table of contents


https://www.42.us.org

42 Silicon Valley

  • tuition free coding school
  • no teachers
  • no classes
  • when start – can only communicate by Slack
  • the application process starts with two logic games with no instructions. The first test involves memory. If you pass, you get an email with the next steps
  • Then comes the piscine a 4 week crash course in C with daily peer reviewed exercises. Each weekend get an individual and group project. 10-15 hours a day for 28 days. Then whatever want; most students choose 8-10 hour days
  • Staff doesn’t answer questions. They tell you to ask other students. 250-300 students
  • 3-5 year program. Twenty one levels to go through. Self paced
  • Start with writing a C library then can choose branch working with 4 other people
  • high school diploma required only if under 18
  • Supplement with other resources. ex: coursera
  • Buiding open 24×7 so can work when want. Must be in person for tests, grading, etc. Want to build face to face skils for office
  • Learn many languages
  • Must do coding internship after a year. Can pause account if get offer or contract job (or family suitation)
  • Funded by philanthropist
  • Grading is pass/fail. If a tiny bit wrong, still fail
  • Paris campus opened in 2013 and US campus opened in 2016. Also have satelitte campuses in a few countries

Branch choices

  • unix – to become systems programmer – make unix commands, shell
  • graphics – math heavy, fractals
  • algorithms – rebuild common algorithms from scratch and then projects

Example Projects

  • Reimplment printf
  • C++ crash course (in a crash course a project is due every 2 days for 2 weeks
  • Mock interviews – algorithms on whiteboard

Staff
10 full time staff
600 students
1024 computers
staff create opportunities – ex: book room for club

Learning Techniques

  • Active learning – few instructions so figure it out
  • Learning through explaining to others
  • Ability to adapt, research ability, speed
  • Randomized team vs choose a team depending on project

42 Embassadors
Volunteer – demos, registration desk at this conference, etc

My take: Interesting approach to learning and building a community of learners. This sounds way better than what the coding bootcamps are trying to do.

JavaOne – 10 challenges and eliminate stressful bugs

“Learn the Concepts between these 10 Java Challenges and Eliminate Stressful Bugs”

Speaker: Barry Evans & Rafael Chinelato Del Nero

For more blog posts from JavaOne, see the table of contents


Generics
Missed this one. I was late while chatting in the hallway. (and dithering about whether to go to this session of a Jigsaw one)

Threads
JVM exits if only daemon threads left. Instance variable not thredsafe. [also don’t know that last thread executes last but didn’t comment on that]

Strings
new String() and trim() create objects. == vs equals
[I fell for this. I missed == vs equals]

hashcode and equals
if hashcode always he same, doesn’t help for hashmap. Then only equals matter. Also tricky implementation for hash code to return 7

Crazy Syntax
Fun random syntax. How to obsfucate code.

Sorting and Comparables
TreeSet uses compareTo, not equals or hashcode

Lambda
default methods don’t count towards single abstract method. Also, interfaces can be private

Streams
iterate() is infinite terminal operation so can’t use with forEach. Also, a good reminder to use Comparator.natural order instead of reimplementing when need.

Method Overloading
Widening then autoboxing then varargs.
int and long can “widen” to float.
wrapper class Double goes to Object before double
[I only got this one right because “does not compile” was not a choice”.]
Interesting explanation of about “taking more effort” to use autoboxing/varargs.

Polymorphism
Virtual method invocation means doesn’t matter what store variable reference in. Overloading vs overriding

nobugsproject.com #Javachallenge

My take: This was fun! Being a cert book author gave me an advantage but some were still tricky and tough! And using The Simpsons as examples was fun. He did show of hands for each option; most people didn’t raise their hand for any of the choices.

JavaOne – you got your browser in my virual machine

“You got your Browser in my virtual mchine! Leveraging sophisticated browser programming modes in your Java applicaion”

Speaker: Ean Schuseller

For more blog posts from JavaOne, see the table of contents


He started by showing a video of the Sophia (and Einstein) robots. They look surpisingly humanoid. Not the video but this is the robot. Relevant in that we need better interfaces than have now. Future: “that was the best customer service person; very patient and immune to me getting angry”

Web Extensions

  • Plugin for browser
  • Needed to use C in the past
  • Browser agnostic APIs
  • Write in JavaScript
  • Have access to browser components like history and open pages
  • Works on Firefox, Chrome, Opera and Edge. Works a bit different on Edge” [not safari yet]
  • Contains manifest.json, html and javascript code for UI, background js (runs when browser opens and state stays until close browser) and content js (what see)

Isomorphic Apps

  • Code that can run on both client and server
  • Ex: Validation logic, business logic

JavaScript in your server
Nashorn is faster in Java 9
[glad I wrote the “throwaway” chapter on Nashorn for our book. Learned a lot]

APIs

  • WebWorkers –
    Don’t want intensive logic in main UI thread. WebWorker runs message/task in background.
  • indexedDB transactional persistent data store

It takes a lot to get users to install an app because of trust. Web/online mobile “apps” continue to grow as get more powerful. Will need to have reall good reason to have an app. [irony wih the JavaOne conference app?]

Evolution in JavaScript
Frameworks, immutables reactive, functional programming, etc. Lots of ibraries. Now that more mature, Java can cherry pick from JavaScript.

Libraries

    React – UI model from Facebook. Very data intensive programming
  • Reducers – Virtual DOM is rerendered based on state change and then diffed against real DOM
  • Redux – extends to single immmutable state. reducer functions “modify” state
  • Helps debugging/testing because can replay actions from older state. Also helps with undo because can just go back a few states

Filter Bubble

  • Cognitive bias from friends, reading, etc. Disagreeable facts never reach us
  • Social networks and search enginges feed us information they think we will like. Not even concious of the bias. Disparity – they know more than you about what you see
  • You trust your spam filter – it controls whether you see a message
  • Filter Bubble web extension – determines where you spend time so you know too. Uses word frequency analysis

My take: Nice to see Oracle is open minded about having JavaScript content at JavaOne. There was even a bit of Java in this talk. Good first session. A mix of things that I didn’t know, things that I knew at one point and forgot. Plus some things I know. Happy to start the day with learning!