The document describes a KittyCam project that uses a Raspberry Pi, camera, and PIR motion sensor to detect when a cat is in view of the camera and take a photo. It uses Node.js and several frameworks like Johnny-Five and KittyDar. When motion is detected, it takes a photo using Raspistill, detects if a cat face is present using KittyDar, and if so uploads the photo to Cloudinary and sends a text with the image link. It provides details on the hardware components, software stack including Node.js, and implementation of the various functions.
2014 yılının sonunda sonlandırılması beklenen HTML standardının 5. sürümü çoktandır tarayıcılar tarafından destekleniyor. HTML5 ile gelen Canvas, Websockets ve diğer özelliklerle nasıl daha canlı, daha Flash uygulamalarına benzer, web uygulamaları geliştirebileceğimizi inceledik.
Praktik Pengembangan Konten E-Learning HTML5 SederhanaMuhammad Yusuf
Praktik sederhana pengembangan konten E-Learning yang menggunakan HTML5 sebagai dasar pengembangannya. Pada akhir pengembangan dilakukan penyesuaian konten untuk memenuhi standar SCORM sehingga hasil akhir kontennya adalah sebuah konten yang mendukung standar SCORM dan siap dikonsumsi oleh LMS. Library yang digunakan adalah CreateJS.
Invited to introduce Docker to the Dept. for Information and Communication Services (Informations- und Kommunikationsdienste - IuK) at the University of Rostock.
2014 yılının sonunda sonlandırılması beklenen HTML standardının 5. sürümü çoktandır tarayıcılar tarafından destekleniyor. HTML5 ile gelen Canvas, Websockets ve diğer özelliklerle nasıl daha canlı, daha Flash uygulamalarına benzer, web uygulamaları geliştirebileceğimizi inceledik.
Praktik Pengembangan Konten E-Learning HTML5 SederhanaMuhammad Yusuf
Praktik sederhana pengembangan konten E-Learning yang menggunakan HTML5 sebagai dasar pengembangannya. Pada akhir pengembangan dilakukan penyesuaian konten untuk memenuhi standar SCORM sehingga hasil akhir kontennya adalah sebuah konten yang mendukung standar SCORM dan siap dikonsumsi oleh LMS. Library yang digunakan adalah CreateJS.
Invited to introduce Docker to the Dept. for Information and Communication Services (Informations- und Kommunikationsdienste - IuK) at the University of Rostock.
Big query - Command line tools and Tips - (MOSG)Soshi Nemoto
BigQuery =Command line tools and Tips for business use=
Mulodo Open Study Group (MOSG) @Ho chi minh, Vietnam
http://www.meetup.com/Open-Study-Group-Saigon/events/231504491/
Backend, app e internet das coisas com NodeJS no Google Cloud PlatformAlvaro Viebrantz
Como desenvolver uma aplicação completa, desde o backend, passando por um app com push notifications e um pouquinho de internet das coisas com a Amazon Alexa. Tudo isso utilizando NodeJS e rodando de forma fácil e escalável no Google Cloud Platform
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsJeff Prestes
More mobile technologies are empowering people and machines to become more autonomous. In the same way as people, machines need ways to be identified to other sources in a connected environment. This begs the question, why not give a URL to objects? With Eddystone, a new Google specification for Beacon data, this is possible, and it works with both Android and iOS based devices.
With it you can implement what physical-web.org stands
User-Experience (UX) focuses on understanding what users' needs and value, and provide practical products or services. This human-computer interaction acts the same when the users are developers. This talk focuses on Developer-Experience (DX), to establish a good relationship between developers and platform or API providers.
Startupfest 2016: JONATHAN BIXBY (Stanley Park Ventures) - How toStartupfest
How to create and measure passion in your company -
Every startup has the potential for world-changing impact. Your role as a leader is to foster passion that impacts anyone who touches your business and to keep that passion alive by reinforcing it every day.
Today the challenge for leaders is that there is no formal management theory for how to build, leverage, and measure the level of passion in your employees. It essentially falls into that ambiguous category of “you’ll know it when you see it.”
This session will take a deep analytical look at creating and measuring your corporate passion. Passion is contagious and this session will discuss effective ways to bottle it, infect your employees/customers/investors and ultimately how to use passion as a sustainable corporate differentiator.
The design secrets behind Slack’s amazing successUserTesting
Tina Chen, Design Lead at Slack, takes us behind the scenes to share the design processes at Slack. She’ll talk about what it's like to design at a company that’s growing rapidly, and walk us through a recent project that gave apps and bots the ability to interact more closely with users. We’ll also have a Q&A session with Tina after her presentation.
Apache Cordova is one of the most popular frameworks for cross-platform mobile development. Web developers can build apps for iOS, Android, and Windows based on the same frameworks they use for the Web by using a shared codebase. However, the methods for improving mobile app performance can be different from those web developers use for web apps. Doris Chen outlines what impacts “native performance” and explains how the startup time, as well as the overhead of resume, memory, communication, and the Web, can all contribute to the performance of Cordova apps. To build Cordova apps that perform well, it’s important to understand how to avoid common pitfalls and how to use the technologies in the most efficient ways. Doris introduces tools for performance tests and demonstrates how to measure mobile app performance by using diagnostic tools for different platforms. Doris also shares practical tips for building faster Cordova apps by exploring Document Object Model (DOM) complexity, animation techniques, and memory management.
How Autodesk creates better digital experiences with UserTestingUserTesting
Lisa Seaman, User Experience Manager at Autodesk, shares how she tests and optimizes Autodesk’s websites with UserTesting. She’ll discuss how her team uses UserTesting and why it has become such a crucial tool for their agile approach.
Building Realtime Javascript Apps with PubNubTomomi Imura
A talk for KTH Royal Institute of Technology students for DM2518 Mobile Development with Web Technologies.
This talk covers high-level overview of PubNub, and JavaScript APIs focusing on location-aware services and prototyping IoT. It also covers EON.js for mapping, and PubNub's new service, BLOCKS sneak preview.
a idea about raspberry pi and some project to, manipulate this micro pc, i like the presentation so that's why i make this slide on order to share this tuto, it can helps you and change your life :p
[Longer ver] From Software to Hardware: How Do I Track My Cat with JavaScriptTomomi Imura
About my Raspberry Pi + Node.js project called KittyCam
Presented at:
- NodePDX in Portland, OR
- Forward 5 in San Francisco, CA
- Nordic.js in Stockholm, Sweden
Big query - Command line tools and Tips - (MOSG)Soshi Nemoto
BigQuery =Command line tools and Tips for business use=
Mulodo Open Study Group (MOSG) @Ho chi minh, Vietnam
http://www.meetup.com/Open-Study-Group-Saigon/events/231504491/
Backend, app e internet das coisas com NodeJS no Google Cloud PlatformAlvaro Viebrantz
Como desenvolver uma aplicação completa, desde o backend, passando por um app com push notifications e um pouquinho de internet das coisas com a Amazon Alexa. Tudo isso utilizando NodeJS e rodando de forma fácil e escalável no Google Cloud Platform
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsJeff Prestes
More mobile technologies are empowering people and machines to become more autonomous. In the same way as people, machines need ways to be identified to other sources in a connected environment. This begs the question, why not give a URL to objects? With Eddystone, a new Google specification for Beacon data, this is possible, and it works with both Android and iOS based devices.
With it you can implement what physical-web.org stands
User-Experience (UX) focuses on understanding what users' needs and value, and provide practical products or services. This human-computer interaction acts the same when the users are developers. This talk focuses on Developer-Experience (DX), to establish a good relationship between developers and platform or API providers.
Startupfest 2016: JONATHAN BIXBY (Stanley Park Ventures) - How toStartupfest
How to create and measure passion in your company -
Every startup has the potential for world-changing impact. Your role as a leader is to foster passion that impacts anyone who touches your business and to keep that passion alive by reinforcing it every day.
Today the challenge for leaders is that there is no formal management theory for how to build, leverage, and measure the level of passion in your employees. It essentially falls into that ambiguous category of “you’ll know it when you see it.”
This session will take a deep analytical look at creating and measuring your corporate passion. Passion is contagious and this session will discuss effective ways to bottle it, infect your employees/customers/investors and ultimately how to use passion as a sustainable corporate differentiator.
The design secrets behind Slack’s amazing successUserTesting
Tina Chen, Design Lead at Slack, takes us behind the scenes to share the design processes at Slack. She’ll talk about what it's like to design at a company that’s growing rapidly, and walk us through a recent project that gave apps and bots the ability to interact more closely with users. We’ll also have a Q&A session with Tina after her presentation.
Apache Cordova is one of the most popular frameworks for cross-platform mobile development. Web developers can build apps for iOS, Android, and Windows based on the same frameworks they use for the Web by using a shared codebase. However, the methods for improving mobile app performance can be different from those web developers use for web apps. Doris Chen outlines what impacts “native performance” and explains how the startup time, as well as the overhead of resume, memory, communication, and the Web, can all contribute to the performance of Cordova apps. To build Cordova apps that perform well, it’s important to understand how to avoid common pitfalls and how to use the technologies in the most efficient ways. Doris introduces tools for performance tests and demonstrates how to measure mobile app performance by using diagnostic tools for different platforms. Doris also shares practical tips for building faster Cordova apps by exploring Document Object Model (DOM) complexity, animation techniques, and memory management.
How Autodesk creates better digital experiences with UserTestingUserTesting
Lisa Seaman, User Experience Manager at Autodesk, shares how she tests and optimizes Autodesk’s websites with UserTesting. She’ll discuss how her team uses UserTesting and why it has become such a crucial tool for their agile approach.
Building Realtime Javascript Apps with PubNubTomomi Imura
A talk for KTH Royal Institute of Technology students for DM2518 Mobile Development with Web Technologies.
This talk covers high-level overview of PubNub, and JavaScript APIs focusing on location-aware services and prototyping IoT. It also covers EON.js for mapping, and PubNub's new service, BLOCKS sneak preview.
a idea about raspberry pi and some project to, manipulate this micro pc, i like the presentation so that's why i make this slide on order to share this tuto, it can helps you and change your life :p
[Longer ver] From Software to Hardware: How Do I Track My Cat with JavaScriptTomomi Imura
About my Raspberry Pi + Node.js project called KittyCam
Presented at:
- NodePDX in Portland, OR
- Forward 5 in San Francisco, CA
- Nordic.js in Stockholm, Sweden
[HTML5DevConf SF] Hardware Hacking for Javascript DevelopersTomomi Imura
In the era of Internet of Things, connecting things to the mobile devices and web is becoming ubiquitous. You can control room light using your mobile phone. You can monitor your heart rate and weight on browser. Front-end developers like you already have skills to prototype software ideas, so why not prototyping the Internet of Everything?
- Arduino
- Raspberry Pi
- Johnny-Five JS robotics framework
- PubNub Data Stream
Flash over the years, has been used to prop up the regular browser like a sad old man drinking alone in a pub.
Today browsers come shipped with technology designed to rival flash and aim to shut it squarely out of the game.
Are browser ready to rock without Flash?
Python tools to deploy your machine learning models fasterJeff Hale
Comparing Gradio, Streamlit, and FastAPI (with a little discussion of flask)
Jeff Hale's presentation for Data Science DC March 8, 2022
Repository with code at https://github.com/discdiver/dsdc-deploy-models
“Mobile is eating the world,” but few developers realize that mobile software is written very differently from desktop software. This leads to lots of mobile apps that simply don’t work well, suck up battery power, or can’t recover from being put into the background. I’ll discuss a few such apps on the Android platform, and explain how they should have been written to improve user experience, illustrating general mobile development principles by example.
In this talk, Chris Mills discusses the historic problems with web apps and which technologies are stepping up to fill the holes. This includes device APIs such as Web Activities, Camera, device orientation and nfc, offline apps (which are finally looking realistic thanks to service workers), installable apps, and high quality games and other immersive high performance experiences using such features as Web audio API, Pointer lock, asm.js and Emscripten.
Augmented Reality and WebRTC .
WebGL in browsers
threejs for 3D graphics
code and steps of making cube , sphere , torusknot
wecam texture to 3D plane
motion detection using differential analysis
more samples of AR applications
Non Conventional Android Programming Enguest9bcef2f
Learn as you can developing software for mobile devices using only html, css and javascript and how you can use Spring Framework in software for mobile devices
Similar to [JS Kongress 2016] KittyCam.js - Raspberry Pi Camera w/ Cat Facial Detection (20)
ECMeowScript - What's New in JavaScript Explained with Cats (August 14th, 2020)Tomomi Imura
That's what the title says! I am explaining ECMAScript 6 (ES 2015) to ES2020 with cats.
This talk was given at Web Directions Code://Remote conference in 2020 in Sydney, but I presented remotely from San Francisco. Damn you, COVID!
Visual Studio Code はエンジニアのみなさんでしたら、とても馴染み深い印象をもたれているのではないでしょうか?現在、私はマイクロソフト社で Developer Advocate として VS Code 開発チームとも一緒に働いています。今回は Developer Experience の観点から、マイクロソフトの開発者たちと試みた取り組みに関してご紹介します。今回の試みでは、開発者の体験をより良いものにし、モチベーションを上げるために、開発者ならば誰もが好きな VS Code のエクステンションを使ったアイデアを実施しました。また、技術的な観点から VS Code の新機能や、これからの取り組みについてもお話ししたいと思っています。
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!Tomomi Imura
Teams アプリ制作ツールである Visual Studio Code エクステンション、Teams Toolkit が バージョン4 をもってついに GA (正規版) リリースとなりました🎉 ですので今回は Teams Toolkit の紹介と新機能の使い方を説明したいと思います。
- Teams プラットフォームの基本
- Teams Toolkit for VS Code の紹介
- Teams Toolkit for VS Code 使い方ステップ・バイ・ステップ
[#DevRelAsia Keynote 2020] Developer Centric Design for Better ExperienceTomomi Imura
Tomomi Imura talks about improving the developer experience of technical content & docs and her own experiences from the most recent project at Microsoft and her previous work at Slack.
#TinySpec2019 Slack Dev Meetup in Osaka & Tokyo (in Japanese)Tomomi Imura
Slack 開発者向け meetup スライド(このPDF 版は大阪と東京で使われたスライドを編集してアップしています)
Slack platform features recap & new features (This is a combined / modified version of the slide deck used in both Osaka and Tokyo)
[2019 south bay meetup] Building more contextual message with Block KitTomomi Imura
South Bay Meetup talk about Block Kit, a UI framework that enables you to build rich and interactive experiences in Slack, also how to build a slash command using Block Kit & its demo.
[TechWorldSummit Stockholm 2019] Building Bots for Human with Conversational ...Tomomi Imura
Using voice commands has been pretty ubiquitous nowadays, as more mobile phone users use voice assistants like Siri and Cortana, as well as devices like Amazon Echo and Google Home have been invading our living rooms. You can interact with the intelligent assistant without leaving your couch. At the same time, chatbots have been insanely popular, and services like Slack and Facebook Messenger let you achieve multiple tasks without leaving the client- you can schedule a meeting, order some pizza, call a taxi, etc.
Historically in web development, we have been relying on various UI elements to interact with your users. Now with the new technologies, you can develop rich applications with natural user interactions with a minimal visual interface. This enables countless use cases for richer and more accessible web applications.
In this talk, Tomomi Imura will talk about the examples of the conversational interface, and what and how you can build with JavaScript in a browser using the Speech API, the open web standard, also with Node.js to work with the 3rd party platforms!
Building a Bot with Slack Platform and IBM WatsonTomomi Imura
[IBM Watson Online Meetup - April 17, 2019]
In this interactive workshop, Tomomi Imura from Slack and David Nugent from IBM Developer SF City Team will walk you through building a bot using Slack's API and Block Kit, and making it smarter using IBM Watson.
Tomomi will walk you through how to build a Slack bot with Slack API using Node SDK, and improve the bot with Slack’s new Block Kit Builder. She will also cover how to make the bot smarter using IBM Watson.
This session uses Node.js, however, you should be able to follow if you have a general understanding in any programming language. All you need is a Chrome browser to try out the sample code.
[DevRel Summit 2018] Because we all learn things differentlyTomomi Imura
My talk at DevRel Summit Singapore 2018, about supporting true developer diversity-
1. Supporting different learning styles
2. Supporting a diverse developer community - diversity is not only about gender!
Future of the Web with Conversational InterfaceTomomi Imura
Using voice commands has been ubiquitous nowadays, as more mobile phone users use voice assistants like Siri, as well as devices like Amazon Echo and Google Home have been invading our living rooms. You can interact with the intelligent assistant without leaving your couch. At the same time, chatbots have gained popularity, and services like Slack and Facebook Messenger let you achieve tasks without leaving the client- you can schedule a meeting, order some pizza, call a taxi, etc.
Historically in web development, we have been relying on various UI elements to interact with users. Now with the new technologies, you can develop rich applications with the natural user interactions with a minimal visual interface. This enables countless use cases for richer and more accessible web applications.
In this talk, Tomomi Imura talks about the trend of the conversational interface, and what and how you can build with JavaScript.
The talk is given at:
- TokyoJS (shorter ver) July 28, 2017
- ModernWeb Taiwan Aug 10, 2017
[DevRelCon Tokyo 2017] Creative Technical Content for Better Developer Experi...Tomomi Imura
Let’s say, you are searching certain frameworks, or APIs to satisfy your new project- what if you stumble on some awesome-sounding shiny website, but it comes with very poor documentations. Do you want to try it out, or keep searching something else? Or when you see a GitHub project with no README, how do you feel? I think this developer experience is one of big key factors for you to decide what technologies to use.
User-Experience (UX) focuses on understanding what users' need and value, and provide practical products or services. This human-computer interaction acts the same when the users are developers. The ideas of “Developer Experiences” is to establish a good relationship between developers and platform providers.
So, as a developer evangelist, what can we do to improve DX to get developers' interests?
In this talk, Tomomi Imura will talk about her experiences, and how I create developer-centric contents and docs to drive the community and acquired new developers and customers.
Building a Raspberry Pi Robot with Dot NET 8, Blazor and SignalR - Slides Onl...Peter Gallagher
In this session delivered at Leeds IoT, I talk about how you can control a 3D printed Robot Arm with a Raspberry Pi, .NET 8, Blazor and SignalR.
I also show how you can use a Unity app on an Meta Quest 3 to control the arm VR too.
You can find the GitHub repo and workshop instructions here;
https://bit.ly/dotnetrobotgithub
Google Calendar is a versatile tool that allows users to manage their schedules and events effectively. With Google Calendar, you can create and organize calendars, set reminders for important events, and share your calendars with others. It also provides features like creating events, inviting attendees, and accessing your calendar from mobile devices. Additionally, Google Calendar allows you to embed calendars in websites or platforms like SlideShare, making it easier for others to view and interact with your schedules.
6. girlie_mac@
Sketch
● Language for Arduino
● Loosely based on C
● Wut, C?
● HALP!!1!!!
#include <Servo.h>
#include <Wire.h>
#include <Firmata.h>
#define I2C_WRITE B00000000
#define I2C_READ B00001000
#define I2C_READ_CONTINUOUSLY B00010000
#define I2C_STOP_READING B00011000
#define I2C_READ_WRITE_MODE_MASK B00011000
#define I2C_10BIT_ADDRESS_MODE_MASK B00100000
#define I2C_MAX_QUERIES 8
#define I2C_REGISTER_NOT_SPECIFIED -1
#define MINIMUM_SAMPLING_INTERVAL 1
int analogInputsToReport = 0;
byte previousPINs[TOTAL_PORTS];
byte pinConfig[TOTAL_PINS];
byte portConfigInputs[TOTAL_PORTS];
int pinState[TOTAL_PINS];
unsigned long currentMillis;
7. girlie_mac@
Raspberry Pi
● $35 single-board computer
● Broadcom chip with
ARM-compatible CPU & GPU
● Runs Linux
● More language choices: C,
C++, Python...
12. girlie_mac@
KittyCam
Raspberry Pi camera with cat facial
detection!
● Hardware: Raspberry Pi, camera, and PIR
sensor
● Software: Node.js + J5 + More
open-source goodies
25. girlie_mac@
kittyCam.js Tech Stack
1. Detect motion w/ Johnny-Five IR.Motion obj
2. Take a photo w/ Raspistill, command line tool
3. Cat facial detection w/ KittyDar
4. Store the photo in Cloudinary
5. Publish & subscribe the url to display on web
via PubNub
6. Send a text message via Nexmo
27. girlie_mac@
Johnny-Five w/ Raspi-io
const five = require('johnny-five');
const raspi = require('raspi-io');
let board = new five.Board({io: new raspi()});
board.on('ready', () => {
console.log('board is ready');
...
});
28. girlie_mac@
Motion
const five = require('johnny-five');
const raspi = require('raspi-io');
const board = new five.Board({io: new raspi()});
board.on('ready', function() {
// Create a new `motion` hardware instance
const motion = new five.Motion('P1-7');
...
});
a PIR is wired on pin 7
(GPIO 4)
VCC
Ground
Data
30. girlie_mac@
PIR Sensor > Run Camera
const child_process = require('child_process');
board.on('ready', () => {
const motion = new five.Motion('P1-7');
motion.on('motionstart', () => { // Motion detected
let filename = 'photo/image_'+i+'.jpg';
let args = ['-w', '320', '-h', '240', '-o', filename, '-t', '1'];
let spawn = child_process.spawn('raspistill', args);
spawn.on('exit', function() {
console.log('A photo is saved as '+filename);
...
motion
detected!
Take a photo!
Spawns a new process w/ a given shell command
31. girlie_mac@
Processing Image
spawn.on('exit', () => {
let imgPath = __dirname + '/' + filename;
// Child process: read the file and detect cats with KittyDar
let args = [imgPath];
let fork = child_process.fork(__dirname+'/detectCatsFromPhoto.js');
fork.send(args);
// the child process is completed
fork.on('message', (base64) => {
if(base64) {
uploadToCloud(base64); // Send to cloud storage
}
}); ...
Create another worker
by running a new
instance of V8 engine.
32. girlie_mac@
detectCatsFromPhoto.js
const kittydar = require('kittydar');
const Canvas = require('canvas');
process.on('message', (m) => {
fs.readFile(m[0], (err, data) => {
...
let canvas = new Canvas(w, h);
let ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, w, h, 0, 0, w, h);
let cats = kittydar.detectCats(canvas);
console.log('There are', cats.length, 'cats in this photo');
if(cats.length > 0) {base64Img = canvas.toDataURL();}
process.send(base64Img);
process.exit(0);
});
Running in an another process
a cat detected!
KittyDar
33. girlie_mac@
KittyDar
● Open-source JavaScript cat facial
detection written by Heather Arthur
● Takes a canvas obj & calculate the
locations of cats in the image
let cats = kittydar.detectCats(canvas);
34. girlie_mac@
KittyDar: Behind the Scene
1. Chops up the image up into many “windows”
2. Extracts data by measuring a set of gradients,
from light & dark in order to find edges
3. Compares the direction of these edges to the
edges found in known cat images
Neural network (JSON w/ vector data) is
pre-trained w/ thousands pics of cats & non-cats
41. girlie_mac@
Send the Pic w/ Kitty to Cloud
const cloudinary = require('cloudinary');
// the child process is completed
fork.on('message', (base64) => {
if(base64) {
cloudinary.uploader.upload(base64, (result) => {
// Done! - Get the URL and do more stuff
});
} else deletePhoto(imgPath);
});
48. girlie_mac@
Next Steps
● Upgrade Hardware
○ Raspberry Pi 3
○ NoIR Night Vision Camera
● Upgrade Node (was 0.12) & all dependencies
● ES5 to ES6
● More features (Maybe)
○ Cat Identification w/ RFID
○ Photo Booth w/ Filter effects & props
52. @girlie_mac
Next Project?
● Selfie bot
(à la Mannie the Selfie
Cat)
Mannie the Selfie Cat by
@yoremahm on Instagram
https://www.instagram.com/yoremahm/