This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Documentation

This is a placeholder page that shows you how to use this template site.

This section is where the user documentation for your project lives - all the information your users need to understand and successfully use your project.

For large documentation sets we recommend adding content under the headings in this section, though if some or all of them don’t apply to your project feel free to remove them or add your own. You can see an example of a smaller Docsy documentation site in the Docsy User Guide, which lives in the Docsy theme repo if you’d like to copy its docs section.

Other content such as marketing material, case studies, and community updates should live in the About and Community pages.

Find out how to use the Docsy theme in the Docsy User Guide. You can learn more about how to organize your documentation (and how we organized this site) in Organizing Your Content.

1 - About Me

About Me

1.1 - MS Word Add In

MS Word Add In

MS Word Add In

  • draw.io Diagrams
  • Power Thesaurus
  • Symbols and Characters
  • WriteBetter
  • Keenious Research
  • QuillBot
  • Translator
  • Writefull
  • Pexels
  • Smart Tagger
  • Wikipedia

1.3 - My Awesome Android Apps

My Awesome Android Apps

Security

Islam

1.4 - Services on rosyadi.com

Services on rosyadi.com and irosyadi Blog Networks

Public Services on rosyadi.com

Personal Services on rosyadi.com

Blogs on rosyadi.com

Internal Services

irosyadi Blog Networks

Host Management

i-yellow

1.5 - My Awesome Gadget

My Awesome Gadget

Everyday Carry

Audio

  • Onix Wired Headset SE-01
  • Onix Bluetooth Earphone EVOX : micro-usb port

Computer Appliance

  • Onix Alba S Wireless Mouse - Silent Click : 1 AA
  • USB Drives

Port Converter

  • HDMI Female to HDMI Female Converter
  • HDMI Male to VGA Female Converter : PC to VGA Projector
  • USB-Micro to USB-A Female : USB OTG (to smartphone connection)
  • USB-A Male to Micro-USB
  • Onix USB-C to USB-C
  • McDodo 10 in 1 USB-C to USB-C, HDMI, USB-A 2.0, USB-A 3.0, VGA, Gigabit LAN, SD/TF Micro

Wireless

  • AnyCast Wifi HDMI Dongle : wireless casting presentation
  • XL 4G Access Point
  • Onix Pointer

Charger and Battery

  • Onix Mobile Charger : 2 USB-A Out
  • Onix Baterry Bank : 2 USB-A Out, 1 Micro-USB In
  • Mi Plug : 3 PowerPlug, 3 USB-A Out
  • USB Led Lamp
  • AAA and AA battery

Home Appliances

Home Appliances

  • Onix Automatic Water Dispenser : microUSB port

Health

  • Finger Print Pulse Oximeter : 2 AAA
  • Electronic Blood Pressure Monitor : 4 AAA

Webcam

  • Onix Webcam

Measurement

  • KCX USB voltage-ampere meter

Storage

  • 500GB 2.5" External Drive

CCTV

  • Xiaofang 1080 Camera
  • V380 Camera

1.6 - My Workflow

My Workflow

Writing

I write the notes using VNote. After comparing some note taking apps (Obsidian, Zettlr, etc.), I choose it for some reasons:

  • markdown-it support
  • markdown with Mathjax plug-in
  • it can be hosted in Github Pages easily with Viki.

Hosting

My personal wiki is available in three static host:

  • at Netlify using Gatsby Starter Bee, because:
    • it supports markdown files and folder structures
    • it is integrated with GitHub
    • it has RSS feed
    • it is fast
  • at Gitbook Site using Gitbook, because:
    • it supports markdown files and folder structures
    • it is integrated with GitHub
    • it supports full text search
  • at GitHub Pages using Viki, because:
    • it supports markdown files and folder structures
    • it is integrated with GitHub
    • it supports VNote structure

Syncing

So, I need to sync the notes to Gitbook and Netlify repository, and I use SyncFolder for Windows 10.

Workflow

So, here are my workflow:

  • Write markdown notes using VNote
  • Sync all the files and folders with SyncFolder
  • Push to Github
  • Profit

Problems with Workflow

  • Ensure to make consistent format between Gitbook and Gatsby Starter Bee
  • index.md in Viki will be displayed as the first page, but it will be displayed as the last page in Gitbook
  • readme.md will be displayed as the first page of Gitbook
  • No first line texxt in Gitbook. We should start with Header to make Gitbook display the correct Header.
  • In Gitbook, you cannot have two Header 1’s or more.
  • In Gatsby, you need a title. So if you have both title and Header 1, both will be displayed in Gatsby site.

1.7 - List of Uninstalled Windows Apps

List of Uninstalled Windows Apps

Accesibility

  • Microsoft Learning Tools OneNote Addon : immersive reader
  • Immersive Reader Offline Extension

Browser

  • Brave : browser

Computing Programming

  • SAM (System Advisor Model) : PV System Planner (why: not used anymore)
  • Julia : numerical computation
  • Kite : program linting
  • Math Inspector : visual programming environment
  • Sourcetrail : code and program visualizer

Drawing Apps

  • Krita: open source vector graphic drawing and editor (digital painting and 2D animation)
  • OPenToonz : graphic drawing and editor

File Downloader

  • Persepolis : aria-based download manager (why: FireDM is better and faster)
  • PyIDM : download manager (portable, direct)
  • Libgen Desktop : e-book search and download manager
  • rga (Github Repo) : take huge database storage
  • DocFetcher : file content search (inferior to Agent Ranscak and Fileseek)

File Tools

  • FormatFactory : file converter (inferior to File Converter)
  • TreeSize : file, folder, drive mapper (inferior to Wiztree)
  • Advanced Renamer : file renamer (already provided in PowerToys)

Games

  • Steam : games platform (need more space than games)
    • Islanders
    • The Battle of Polytopia

Graphics

  • Opentoonz

Handwriting

  • livedraw : desktop handwriting (portable)

Islamic

  • OneQuran : complete Quran, hadith
  • Quran : simple Quran

Image and Photo Tools

  • Picpick

Laptop Tools

  • Lenovo Pen Settings
  • Lenovo Service Bridge
  • Lenovo System Update
  • Lenovo Utility

Latex Editor

  • Texmaker : LaTex editor

Music and Audio

  • Musicbee

Note Taking

  • MindForger : note taking, zettelkasten, markdown (why: too complex)
  • AsciidocFX : note taking, asciidoc (why: asciidoc is rarely used)
  • Zettlr : note taking, zettelkasten, markdown (inferior to VNote)

Remote Desktop and Tools

  • Teamviewer : remote desktop (native app)
  • Chrome Remote Desktop : chrome based remote desktop (browser based)

Video Conference

  • Cisco Webex : video conference

Video Editor

  • kdenlive : video editor (inferior to hitman express)

Windows and Desktop Tools

  • AquaSnap : windows tile manager

Writing Tools

  • Wincompose: text replacement (inferior to espanso)

Others

  • Screen Ruler : screen ruler (inferior to Picpick)

My Old Computer Specs

  • IdeaPad C340-14API 9AID
  • Serial : MP1PVV78
  • Product number : 81N6009AID
  • Bios version : AGCN25WWV1.08
  • Prosesor : AMD Ryzen3 3200U
  • RAM : 8GB DDR4 (2*4)
    • Only replace 1 RAM slot. The other RAM 4 GB is embedded. The maximum RAM is 16 GB so total will be 20 GB.
  • Hardisk : 256GB M.2 PCIE (SSD SAMSUNG MZNLN256HAJQ-000L2 Interface: M.2 SATA NGFF Form Factor: 2280)
    • M.2 SSD NVME
  • VGA : Radeon Vega 3
  • Youtube
  • Youtube
  • Crucial

1.8 - My Awesome List of Windows Apps

My Awesome List of Windows Apps

This is a list of awesome apps for Windows 10.

Browser

  • Google Chrome : browser from Google
  • Microsoft Edge : browser from Microsoft
  • Epic Privacy Browser : no history no tracking browser
  • Mozilla Firefox : privacy oriented browser
  • Opera : browser with VPN
  • FlashPeak Slimjet8 : lightweight chrome-based browser
  • Chrome Remote Dekstop : remote desktop

Built in Windows 10 Apps

  • Camera (Windows 10) : camera
  • Microsoft News

Citation Manager

  • Mendeley Desktop : citation manager
  • Zotero : open source citation manager

Collaboration

  • GitHub Dekstop
  • Github CLI* (gh)
  • Git

Command Line Interface

  • speedtest: speedtest
  • gping: gping example.com
  • is-up: is-up example.com
  • mtr: mtr example.com
  • Ubuntu : ubuntu on top Windows 10

Computing Programming

  • Anaconda3 : numerical computation, python
  • Arduino : Arduino programming
  • Microsoft Visual Studio Code : IDE
  • Octave : FOSS numerical computation
  • Matlab Polyspace : complete numerical computation
  • SpeedCrunch : simple numerical computation, calculator
  • Calculator : calculator (Windows 10)
  • Maxima computer algebra system
  • Fritzing : electronic design
  • Kalk : command-line calculator
  • Kalker : command-line scientific calculator
  • Qalc and Qalculate : command-line scientific calculator

Cloud Storage

  • Microsoft OneDrive

Drawing App

  • Inkscape: open source vector graphic drawing and editor
  • Fresh Paint*

Ebook and Document Converter

  • calibre : ebook manager
  • Pandoc : document converter engine (tex, latex, markdown, word, odt)
  • pandoc-crossref : reference plugin for pandoc
  • wkhtmltopdf : document converter
  • Panwriter : GUI for Pandoc (tex, latex, markdown, word, odt)
  • Listary : file search (embedded in Windows Explorer)
  • Wizfile : file search
  • fzf (Github Repo): file search CLI
  • Everything : file search
  • Everything Toolbar : Everything toolbar
  • Agent Ransack : file content search
  • Fileseek : file content search
  • dnGrep : file content search
  • ripgrep : file search
  • ripgrep-all : CLI file content search
  • Windows Czkawka : file duplicate finder

File Sync

  • SyncFolder : file folder sync
  • Syncthing : file cloud sync
  • rclone : file cloud sync (portable, direct)

File Downloader and Transfer

  • Youtube-DLG (youtube-dl-gui): video download manager
  • wget : file download (portable, direct, terminal)
  • croc : file transfer
  • curl
  • FireDM : download manager

File Tools

  • 7-Zip : file archiver, file compression
  • File Converter : file converter
  • FileMenu Tools : file menu tools
  • Wiztree : file, folder, drive mapper
  • QTTabbar : tab extension for file explorer
  • WinMerge : file folder comparison
  • Quicklook : file viewer
  • CSVed : csv viewer, editor, converter
  • Free Commander : alternative to Windows Explorer
  • TidyTabs : tab extension for any windows

Framework

  • Node.js
  • Ruby
  • Yarn
  • Dot Net, .Net
  • Java
  • NVM
  • Go
  • Golang
  • Hugo
  • Hugo Extended

Graphic Editor

  • Microsoft Visio: diagram and vector graphic drawing and editor from Microsoft
  • draw.io : graphic editor
  • Graphviz : graphics and drawing package (library)
  • OriginLab : scientific graphic editor
  • yed

Hand Writing

  • Microsoft Whiteboard
  • Xournal++ : note taking and PDF annotation tool
  • Microsoft Font Maker : convert handwriting to font
  • gInk : desktop handwriting (portable)

Image and Photo Tools

  • Microsoft Photos : photo manager and viewer
  • ShareX : screenshot tools (complete)
  • Snip & Sketch : screenshot tools (quick, simple, windows default)
  • Irfan View : photo viewer
  • Irfan View shell extension

Image Photo Editor Converter

  • paint.net : image editor (free, complete)
  • Paint 3D
  • Pixillion Image Converter : image converter
  • ImageMagick : image processing library
  • Picosmos Tools : image editor (quick and complete for simple editing)
  • XnConvert : image converter, batch editor

Latex Math Editor

  • MiKTex : LaTex engine
  • KLatexFormula : LaTex formula editor
  • TexStudio : LaTex editor
  • EqualX : Latex formula editor
  • Mathpix Snipping Tool : Latex OCR
  • Math Input Panel : Equation Editor

Laptop Tools

  • Lenovo Hotkeys
  • Lenovo Vantage
  • Lenovo Vantage Service

Map

  • Google Earth Pro
  • Maps (Windows 10)
  • JOSM: OSM map editor
  • SS Panet

Music and Audio

  • AIMP : music audio player
  • Groove Music : music audio player (Windows 10)
  • Audacity : audio editor
  • Voice Recorder : audio voice recorder (Windows 10)
  • Equalizer APO : audio equalizer/filter
  • Peace : GUI for Equalizer APO
  • Spobrify : Youtube listener
  • Virtual Audio Cable : virtual speaker, microphone
  • Eartrumpet : Speaker Mix, Setting

Network Tools

  • NetSetMan : network setting and manager
  • NETworkManager : network tools
  • WinMTR : ping and trace route (portable, direct)
  • WinMTRCmd : CLI ping and trace route (portable, direct, terminal)
  • gping : CLI graphic ping (portable, direct, terminal)
  • speedtest : CLI network speed test (portable, direct, terminal)
  • HostsMan (hm) : host file editor
  • Hosts File Editor : host file editor
  • Telerik Fiddler : web debug
  • IPFS Desktop* : decentralized file system
  • Librespeed: CLI network speed test
  • dnslookpu: CLI DNS lookup

Note Taking and Code Editor

  • Notepad++ : note taking, text editor
  • OneNote : note taking (Office Suite)
  • Sticky Notes : note taking (Windows 10)
  • Obsidian : note taking, zettelkasten, markdown
  • VNote : note taking, zettelkasten, markdown
  • Markdown Monsters : note taking, wordpress integration
  • Journal by Microsoft
  • Logseq : browser based notetaking
  • mdsilo : Lightweight plain-text knowledge silo and networked-writing tool.
  • VS Code : code editor

Office Suite

  • LibreOffice : open source office suite (Writer, Calc, Impress, Draw, Math, Base)
  • Microsoft Office : office suite from Microsoft (Word, Excel, Powerpoint, Access)
  • Scrivener : word processor

Others

  • Nimbletext : text batch manipulation
  • BabelMap : unicode character
  • V380 : Webcam monitoring
  • Glance by Mirametrix: object detection
  • BlueStacks : Android Emulator
  • BlueStacks X: Bluestack Gaming Platform
  • Anki : card repetition learning app
  • Picpick : screen shoot, desktop record, screen ruler, color picker

PDF Tool

  • CutePDF Writer: pdf writer, pdf printer
  • ByteScout PDF Multitool* : pdf editor (split, merge, rotate, remove), pdf extractor (table, image), pdf compressor, pdf OCR, pdf converter (image, html), pdf parser
  • PDFsam Basic: pdf editor (split, combine, merge, rotate)
  • MuPDF : very lightweight pdf, xps, epub, cbz viewer
  • Foxit Reader : pdf reader (reflow, rotate), pdf anotation (comment, type, draw, sign, stamp)
  • SumatraPDF : fast pdf reader
  • GPL Ghostscript : pdf rendering engine
  • Free PDF Compressor : pdf compressor
  • PDF Reader by Xodo : pdf reader (reflow, rotate), pdf compressor, pdf anotation (comment, type, draw, sign, stamp), pdf editor (split, rearrange)
  • PDF24 : the most complete pdf editor
  • Paperly : academic pdf
  • Poppler : pdf rendering engine

Phone Connection

  • KDE Connect
  • Your Phone (Windows 10)
  • Minimal ADB and Fastboot
  • Scrcpy: Android phone control on windows
  • adb: Android Debug Bridge (adb)

Productivity

  • Pomodoro Logger : kanban, pomodoro, timer

Portable Apps

  • duck
  • xournal
  • xsltproc
  • gInk
  • mtr
  • SAS Planet
  • Sioyek PDF
  • FireDM : download manager

Remote Desktop and Tools

  • WinSCP

Security

  • Authy Desktop : 2FA, two factor authentication
  • Malwarebytes : anti malware
  • ShutUP10 (OOSU10): Windows permission editor

Software Application Manager

  • Chocolatey : software application manager
  • Chocolatey GUI : GUI for chocolatey
  • Revo Uninstaller : software application uninstaller

Video Conference

  • Skype : messaging, video conference
  • Zoom : video conference
  • Microsoft Teams : video conference

Video Editor

  • FFmpeg : video processing library/engine
  • Handbrake : video converter
  • HitFilm Express* : video editor (complete editing)

Video Player and Streaming

  • OBS Studio : streaming, screen recording
  • OBS Virtual Cam : virtual cam add on for OBS
  • VLC Media Player : video player
  • SMPlayer: video player, GUI for mpv player

Visualization

  • Microsoft PowerBI Desktop

Windows and Desktop Tools

  • AutoHotkey : automation for Windows
  • CCEnhancer : enhancer for CCleaner
  • CCleaner : junk, storage cleaner
  • Bleachbit: junk, storage cleaner, security enhancement
  • Wise System Monitor : system monitoring
  • XMeters : system monitoring
  • Fluent Search: application launcher
  • WSCC (Windows System Control Center) : windows mini tools collection
  • HWiNFO64 : hardware information
  • CPUID CPU-Z : hardware information
  • DeskPins : pin windows on top
  • Window Top: pin windows app on top
  • PowerToys : windows enhancement
  • Windows Terminal : the best terminal for windows
  • Bing Wallpaper* : everyday wallpaper
  • Rainmeter : desktop visualization
  • TaskbarX : taskbar visualization
  • Bluegrams : windows ruler
  • UI Vision RP XModules : Windows Automation

Writing Tools

  • Grammarly for Windows : grammar checker
  • Grammarly for MS Office Suite : grammar checker
  • Languagetool Server
  • Languagetool MS Word Add in : grammar checker, open source
  • Writefull for Word : grammar checker
  • Lightkey : AI writing recommendation
  • Espanso : text expansion
  • Ditto : clipboard manager, copy-paste
  • Harzing’s Publish or Perish : scientific writing helper

Voice Command

  • Alexa
  • Cortana

VPN and Anonymity

  • ProtonVPN : VPN
  • Cloudflare WARP* : VPN
  • OpenVPN : VPN
  • Lantern : VPN
  • Green Tunnel
  • GoodbyeDPI
  • Powertunnel

My Computer Specs

1.9 - Book and Tutorial Plan

Book and Tutorial Plan

My upcoming planned books and tutorials.

Monographs

  • Rooftop Solar System
  • Soft sensor
  • Rice Classification
  • DevOps for Embedded Systems
  • Markdown
  • A book about flags

Tutorials

  • Instrumentation Lab with Arduino
  • Deep Learning with Android

Tutorial Translation

Machine Learning

Python

Books Translation

Python

Machine Learning

Data Science

Maths

Digital Signal Processing

Education

Computer Science

Electrical Engineering

Others

1.10 - Imron Rosyadi

Imron Rosyadi

Imron Rosyadi
Jurusan Teknik Elektro (Electrical Engineering Department)
Fakultas Teknik (College of Engineering)
Universitas Jenderal Soedirman
Jl. Mayjen Sungkono Km. 5, Blater, Kalimanah, Purbalingga, Jawa Tengah, Indonesia 53371
Telp/Fax: 0281-6596700
Email: imron.rosyadi@unsoed.ac.id
Email (for students): pak.imron@gmail.com
Page:
[1] http://elektro.ft.unsoed.ac.id/imron-rosyadi/
[2] https://irosyadi-lp.netlify.app/

Academic Profiles

Kuliah (Courses)

Kelompok Riset (Research Groups)

Penelitian (Research Projects)

Pengabdian kepada Masyarakat (Community Services)

  • Adaptive Solar Street Lamp for Villages
  • Historical Image Digitization
  • Open Map for Disaster Mitigation

Publikasi (Publications)

Seminar (Conferences)

Hak Kekayaan Intelektual (Intellectual Properties)

  • Imron Rosyadi, 2020, Metode Penamaan Warna (Color Naming) untuk Komunikasi Warna Bahasa Indonesia. Paten (No Pendaftaran P00202009614)
  • Imron Rosyadi, 2020, Metode Penyandian (Encoding) dan Pengawasandian (Decoding) Koordinat Lokasi dengan Sandi Suku Kata dan Angka. Paten (No Pendaftaran S00202005863)
  • Imron Rosyadi, 2020, Sistem Penyandi (Encode), Pengawasandi (Decode) dan Komunikasi Koordinat Lokasi dengan Sandi Suku Kata dan Angka. Paten (No Pendaftaran S00202005862, Berita Paten)
  • Imron Rosyadi, 2019, Perangkat Lunak Pewarnaan Citra Skala Abu-abu dengan Variasi Fungsi Afinitas. Hak Cipta (No Pencatatan: 000164119).
  • Mulki Indana Zulfa, Imron Rosyadi, Ari Fadli, Acep Taryana, 2019, Software Monitoring Tugas Akhir di Teknik Elektro Universitas Jenderal Soedirman. Hak Cipta (No Pencatatan: 000164521).
  • Winasis, Imron Rosyadi, Irfan Ahmad Faqih, 2019, Software Pemantauan Debit Air Saluran Terbuka dengan Sensor Ultrasonik dan Rotary Encoder Berbasis Web Menggunakan Arduino. Hak Cipta (No Pencatatan: 000163870).
  • Acep Taryana, Azis Wisnu Widhi Nugraha, Imron Rosyadi, Priswanto, 2019, Desain Platform DevOps sebagai Alat Bantu Pengembangan Skripsi Bidang Sistem Tertanam di Jurusan Teknik Elektro. Hak Cipta (No Pencatatan: 000163408).

Pemberitaan (News)

2 - App

App

2.2 - Awesome Markdown Apps

Awesome Markdown Apps

Markdown Tables

Markdown

Markdown

Markdown

Markdown

Markdown to Web

  • Noddity similar to Viki, but faster

Markdown Presentation

2.5 - PC to Android Connection

PC to Android Connection

PC - Android Connection

  • KDE Connect by KDE:
    • Android to PC:
      • Send files
      • Send clipboard
      • Slideshow remote
      • Multimedia control
      • Remote input (as wireless mouse)
      • Run (Windows) command
      • Notification Sync
      • Telephony Notifier (call)
    • PC to Android:
      • Send SMS
      • Media Player Control
      • Remote keypresses from keyboard (as wireless keyboard to Android)
      • Mouse receiver (as mouse for Android)
      • Run (Windows) command
      • Find device
      • Send files
    • Cons:
      • should be in same local networks
      • bug in find phone
  • Join by JoaoApps:
    • Android to PC:
      • Send note
      • Locate
      • Send files
      • Send local app
      • Speak
      • Send Notiications
      • Notification Sync
      • Telephony Notifier (call)
    • PC to Android:
      • Send SMS
      • Send tab
      • Paste clipboard
      • Send file
      • Take screenshoot
      • Toggle screen capture
      • Locate device
      • Ring device
      • Open app
      • Speak text
      • Note to self
      • Make phone call
    • Cons:
  • Your Phone (Linked Phone, Link to Windows) by Microsoft:
    • Android to PC:
    • PC to Android:
      • Send SMS
      • Read photos
    • Cons:
      • limited features

Push Notification

2.6 - Deepfake - This Thing Does Not Exist

Deepfake - This Thing Does Not Exist

This Thing Does Not Exist

Text to Image Generation

Deepfake Face Photo Generator

Image Generator

Generative Art

Generative Patterns

Image Generation Detector

2.7 - Awesome Writing Assistant Tools

Awesome Writing Assistant Tools

Related links:
🔗 Paper and Article Search Tools
🔗 Awesome Writing Assistant Tools
🔗 Awesome Research and Academic Writing Assistant Tools
🔗 Awesome Science Blogs and Forums
🔗 Awesome Scientific Journal Tools
🔗 Awesome Conferences Tools
🔗 Awesome Latex Apps

Grammar Checkers

Web-based Grammar Checkers

Browser Extension Grammar Checkers

MS Word Add In Grammar Checkers

Visual Studio Code Add In Grammar Checkers

Plagiarism Checkers

Dictionaries

Thesaurus

Title Generator

Paraphraser

Text Summarizer

Publication Assistant

Phrase Bank

Readability Score Checkers

Writing Assistant Suites

Writing Tips

Language Editing Service

Research

Writing

LanguageTools

LanguageTools Server

  • Obsidian http://localhost:8081/v2/check?
  • MS Word http://localhost:8081/v2
  • Chrome Extension http://localhost:8081/v2/ Test : http://localhost:8081/v2/check?language=en-US&text=my+text

Zotero

Self-publishing Book

💡 : Writing programming books tips

Comparison of Free

  • Compose.ai (extension: Chrome, features: autocomplete)
  • Writer.com (extension: Chrome, Word, features: autocorrect, grammar, spelling, punctuation)
  • Linguix.com (extension: Chrome, features: grammar, paraphrase, web editor)
  • Quilbot (features: paraphrase)
  • hyperwriteai.com (extension: Chrome, features: text generation)
  • longshot.ai (extension: chrome, features: paraphrase)

2.8 - Speech to Text Apps

Speech to Text Apps

Related links:
🔗 Speech to Text Apps
🔗 Text to Speech Apps
🔗 Speech to Speech (Fake Voice Generator)

Speech to Text

Speech to Text Indonesian Support

2.10 - Text to Speech Apps

Text to Speech Apps

Related links:
🔗 Speech to Text Apps
🔗 Text to Speech Apps
🔗 Speech to Speech (Fake Voice Generator)

Text to Speech Apps

Research

2.11 - Learning and Education Resources

Learning and Education Resources

Moodle

Quick Polling

Learning Tools

Education

How to Learn

Online Learning

Learning

  • Blended Learning vs Hybrid Learning
  • Rapid Production vs Well-prepared Production
  • Teknik Fasilitasi Mahasiswa Aktif vs Pasif
    • media belajar yang melimpah
    • interaktif jika mungkin
  • Disparitas Mahasiswa (literasi, koneksi, device)
    • kemerdekaan metode, kurangi tuntutan
    • self-regulated learning
  • Disparitas Usia Dosen vs Mahasiswa
    • team teaching
    • ekspresi kepakaran dalam bentuk presentasi
  • Assigment vs Assessment yang Efektif
  • Strategi Mencapai Tujuan Pembelajaran (Keterampilan)
  • Persiapan Skenario Belajar untuk Siswa Multidisplin
    • ditempatkan sebagai partner
    • encouraging

Learning

Bloom Taxonomy

E-learning Gamification

  1. Challenges
    These map to the learning objectives or learning goals.
  2. Levels
    These map to the learning journey and as the learner goes through each level, it signifies a step up in proficiency for them.
  3. Instant feedback
    This helps learners know how they are faring against their learning goals and based on this, they can adopt the necessary measures to step up their performance.
  4. Scores
    They are indicators of their performance and are closely aligned to offering gratification as well as a sense of accomplishment.
  5. Badges
    As the learners go through the learning path and clear certain levels, they are given badges. These reflect affirmations for their significant achievements.
  6. Leaderboards
    They are dashboards that are used to provide a pictorial view of the overall progress—including against others. The analytics keeps learners connected to the learning journey and aligned to meeting their terminal objectives.
  7. Competition
    This can be leveraged effectively as it helps learners assess where they stand against other peers or competing teams.
  8. Collaboration
    This feature not only facilitates team-building but also enables learners to leverage the support of peers or guidance from experts to meet their goals.
  9. Points and currency Points are a variation on badges, and can also be used as currency within a program. For instance, you can offer learners a point for every comment the leave in the discussion forum, and then let them redeem a certain number of points for rewards and discounts.
  10. Progress bars and level up Progress bars can help by visualizing their advancements. You can even add a bit of interest by creating “level ups” that unlock new course features.

Anti-cheating Strategy in Testing

  • make questions brutal and unique (compared to previous year or current groups) if possible
  • mixing (randomizing) the order of questions,
  • not giving question titles,
  • having a pool of subtly different questions (a negation or a different constant slipped in)
  • make everything open-book, make the questions things that test understanding instead of just recall or design questions that require critical thinking, and allow everyone to use their computers/books/notes/whatever
  • A (simple) /B (reasoning and analysis) /C (problem with deeper understanding): with different weight for example 50/30/20.
  • project work
  • put a lot of emphasis on group work & home work
  • writing essays
  • set a tough time limit
  • curve the results to a desired grade distribution (that is often imposed from above anyway)
  • use software that can the catch most obvious frauds (i.e. 360 degree room scanning, ban use of phones/second computers etc.)
  • if the exam requires algorithms, use software analyzing AST of the code produced to catch possible “cooperation”, then decide on those cases individually (i.e. if an algorithm is common, then there is a high chance of very similar AST for non-cooperating people, but if it’s unique, the chance is low)

Studying

PBL with Real World Problems

Asesmen dan Prestasi Siswa

Wawancara

2.13 - Map Tools

Map Tools

Related links:
🔗 app/Awesome List of Maps
🔗 app/Map Tools
🔗 app/Earth Map and Tools

OSM OpenStreetMap Tools

OSM

Mapping Tools

Map Javascript

  • MapLibre - Open Maps SDKs The open-source fork of Mapbox GL JS: Interactive maps in the browser, powered by vector tiles and WebGL.

OSM Map

Google Map Tools

Location Encoding

Map Location Detection

City Map Generator

Map Knitter

  • Mapknitter : knit aerial map from drone, baloon etc

Map-based Estimator

Mapping

Map Games

2.14 - Awesome List of Video Editors

Awesome List of Video Editors

Video Download

Screen Recorder

WebAsm

Video

Free Video Editor

Online

Windows

Video Editor

Machine Learning Video Processing

Video Generation

Background Remover

Python

Video Synthesis

Video

Video

Video Editing

2.15 - Awesome List of OCR Apps

Awesome List of OCR Apps

OCR

PDF Table Parser

PDF OCR

OCR

2.17 - Phone Tools

Phone Tools

Rekening Checking

💡 : melaporkan rekening yang dipakai untuk penipuan

Lacak Nomor Telepon

NIK - Phone Number Checking

💡 : mengecek apakah NIK kita sudah terdaftar untuk nomor HP tertentu

Phone Security

Phone as Webcam

SMS Gateway

2.19 - Awesome Desktop Apps

Awesome Desktop Apps

OCR

  • EasyOCR Ready-to-use OCR with 70+ languages supported. Colab

Constraint Solver

  • Optaplanner GitHub: OptaPlanner is an AI constraint solver. It optimizes planning and scheduling problems, such as the Vehicle Routing Problem, Employee Rostering, Maintenance Scheduling, Task Assignment, School Timetabling, Cloud Optimization, Conference Scheduling, Job Shop Scheduling, etc.
  • Google OR-Tools

Harddisk SSD Cloning Software

Windows App

Windows Command

  • ipconfig ipconfig /all ipconfig /renew ipconfig /flushdns
  • ping 1.1.1.1 ping -t
  • tracert 1.1.1.1
  • nslookup google.com
  • netstat netstat -n
  • arp -a 192.168.1.1
  • route print
  • netsh
  • pathping 1.1.1.1
  • hostname
  • nbtstat
  • tasklist
  • taskkill
  • getmac
  • systeminfo
  • FOR /L %i IN (1,1,254) DO ping -n 1 192.168.10.%i - FIND /i "Reply">>c:\ipaddresses.txt

Windows Hotkey

Windows Automation

Windows App

2.20 - Self-hosted Applications

Self-hosted Applications

Full Browsing History

Selfhosted

Self Hosted VPN

Jupyter-like

Self-hosted File Manager

Awesome Selfhosted

Self-hosted

Self-hosted

Self Hosted Zero Data

Spartan Web Selfhosted

Selfhosted

Archive Web History

Bookmarks Tool

2.22 - Instagram App

Instagram Apps

Instagram Alternative Frontends

2.23 - Cloud Network Tools

Cloud Network Tools

Traceroute

Unix Time Checks

Proxy Checks

2.24 - IP Tools

IP Tools

Simple IP Address Checkers

Input: none
Output: IP Address

Complete IP Address Checkers

Input: none, or IP Address
Output: IP Address, Geolocation, other network informations

Reverse IP

Input: Domain Name Output: IP

Privacy Check

Input: - Output: List data gathered

IP Address Lookup

Input: IP Output: Geolocation, Ownership

Email IP Checker

Email IP Tracer

IPv6 Check

Internet IP Scanner

IP Catfishing and Locator

💡 : to catfish fraudsters (push them to click a link and get their location)

IP Tools

Web Tools

2.25 - Wikipedia App

Wikipedia Apps

Wikipedia Main Site

Wikipedia Lite

Wikipedia Alternative Frontends

2.26 - Free Audio and Music

Free Audio and Music

Free downloadable audio and music files.

Related links:
🔗 Audio, Music, Radio, and Podcast Streaming Apps
🔗 Audio and Music Tools
🔗 Free Audio and Music

Free Audio

Free Ambient Audio

Free Ambient Music

Free Birdsong

Creative Commons Licensed Music

Free Licensed Music

2.27 - Earth Map and Tools

Earth Map and Tools

Related links:
🔗 app/Awesome List of Maps
🔗 app/Map Tools
🔗 app/Earth Map and Tools

Earth Map

Earth Datasets

Earth Map Desktop Apps

Google Earth Tools

2.28 - Awesome Youtube Apps

Awesome Youtube Apps

Youtube Alternative Frontend

Yutube Downloader

Youtube Transcript

Youtube Subtitle

Youtube Segment

  • Mugle Free Audio Music Search Youtube
  • Captionz Browse youtube video by its captions

Youtube Desktop Player

Youtube List

Alternative to Youtube

Youtube-dl based

Youtube Alternatives

Youtube

Reddit

2.31 - Spreadshseet (Sheet) Apps and Tools

Spreadshseet (Sheet) Apps and Tools

Desktop Presentation Apps

  • Microsoft Excel
  • Libreoffice Calc

Sheet Alternatives

Cloud Spreadsheet

Spreadsheet Tools

2.35 - Open Source Apps

Open Source Apps

Contents

Front End

  • css
    • postcss - [POPULAR] Transforming styles with JS plugins
    • sass - [POPULAR] Sass makes CSS fun!
    • less.js - [POPULAR] Less. The dynamic stylesheet language.
    • normalize.css - A modern alternative to CSS resets
    • emotion - CSS-in-JS library designed for high performance style composition
    • stylelint - A mighty, modern style linter
    • aphrodite - Framework-agnostic CSS-in-JS with support for server-side rendering, browser prefixing, and minimum CSS generation
    • clean-css - Fast and efficient CSS optimizer for node.js and the Web
    • helium-css - Helium - javascript tool to scan your site and show unused CSS
    • jss - An authoring tool for CSS which uses JavaScript as a host language.
    • csscss - A CSS redundancy analyzer that analyzes redundancy.
  • react
    • react - [POPULAR] A declarative, efficient, and flexible JavaScript library for building user interfaces.
    • create-react-app - [POPULAR] Set up a modern web app by running one command.
    • next.js - [POPULAR] The React framework
    • react-boilerplate - A highly scalable, offline-first foundation with the best developer experience and a focus on performance and best practices.
    • react-router - Declarative routing for React
    • gatsby - Build blazing fast, modern apps and websites with React.
    • preact - Fast 3kB React alternative with the same modern API.
    • react-admin - A frontend Framework for building B2B applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Material Design
    • formik - Build forms in React, without the tears
    • radium - A toolchain for React component styling.
    • relay - Relay is a JavaScript framework for building data-driven React applications.
    • ink - React for interactive command-line apps
    • jest - Delightful JavaScript Testing
    • majestic - Zero config GUI for Jest
    • enzyme - JavaScript Testing utilities for React
    • react-testing-library - Simple and complete React DOM testing utilities that encourage good testing practices.
    • ant-design - A UI Design Language and React UI library
    • material-ui - React components for faster and easier web development. Build your own design system, or start with Material Design.
    • redux - Predictable state container for JavaScript apps
    • mobx - Simple, scalable state management.
    • react-bootstrap - Bootstrap components built with React
    • react-spring - A spring physics based React animation library
    • react-sketchapp - Render React components to Sketch
  • vue
    • vue - [POPULAR] A progressive, incrementally-adoptable JavaScript framework for building UI on the web.
    • nuxt - [POPULAR] The Intuitive Vue Framework
    • vuepress - [POPULAR] Minimalistic Vue-powered static site generator
    • vue-cli - Standard Tooling for Vue.js Development
    • vue-devtools - Browser devtools extension for debugging Vue.js applications.
    • vue-router - The official router for Vue.js.
    • vuex - Centralized State Management for Vue.js.
    • vuetify - Material Component Framework for Vue
    • vue-element-admin - A magical vue admin
    • vue-material - Material design for Vue.js
    • vux - Mobile UI Components based on Vue & WeUI
    • electron-vue - An Electron & Vue.js quick start boilerplate with vue-cli scaffolding
    • vue-resource - The HTTP client for Vue.js
    • gridsome - The Jamstack framework for Vue.js
    • vue-lazyload - A Vue.js plugin for lazyload your Image or Component in your application.
    • tiptap - A renderless rich-text editor for Vue.js
    • Vue.Draggable - Vue drag-and-drop component based on Sortable.js
    • vue-awesome-swiper - Swiper component for @vuejs
    • d2-admin - An elegant dashboard
    • v-charts - Chart components based on Vue2.x and Echarts
    • vue-apollo - Apollo/GraphQL integration for VueJS
    • vue-multiselect - Universal select/multiselect/tagging component for Vue.js
  • js-frameworks
    • meteor - Meteor, the JavaScript App Platform
    • ember.js - Ember.js - A JavaScript framework for creating ambitious web applications
    • electronc - Build cross-platform desktop apps with JavaScript, HTML, and CSS
    • cyclejs - A functional and reactive JavaScript framework for predictable code
    • svelte - Cybernetically enhanced web apps
    • backbone - Give your JS App some Backbone with Models, Views, Collections, and Events
    • aurelia - The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia.
    • cyclejs - A functional and reactive JavaScript framework for predictable code
    • inferno - An extremely fast, React-like JavaScript library for building modern user interfaces
    • mithril.js - A JavaScript Framework for Building Brilliant Applications
  • js-tools
    • webpack - [POPULAR] A bundler for javascript and friends. Packs many modules into a few bundled assets.
    • babel - [POPULAR] A compiler for writing next generation JavaScript.
    • TypeScript - [POPULAR] TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
    • lodash - A modern JavaScript utility library delivering modularity, performance, & extras.
    • underscore - JavaScript’s utility _ belt
    • d3 - Bring data to life with SVG, Canvas and HTML.
    • gulp - A toolkit to automate & enhance your workflow
    • bower - A package manager for the web
    • lerna - A tool for managing JavaScript projects with multiple packages.
    • parcel - Blazing fast, zero configuration web application bundler
    • yeoman - A set of tools for automating development workflow
    • jest - Delightful JavaScript Testing.
    • Modernizr - A JavaScript library that detects HTML5 and CSS3 features in the user’s browser.
    • moment - Parse, validate, manipulate, and display dates in javascript.
    • pdf.js - PDF Reader in JavaScript
    • video.js - Open source HTML5 & Flash video player
    • slick - the last carousel you’ll ever need
    • Leaflet - JavaScript library for mobile-friendly interactive maps
    • Sortable - a JavaScript library for reorderable drag-and-drop lists on modern browsers and touch devices.
    • acorn - A small, fast, JavaScript-based JavaScript parser
    • html-minifier - Javascript-based HTML compressor/minifier (with Node.js support)
  • angular
  • python
    • flask - The Python micro framework for building web applications
    • django - The Web framework for perfectionists with deadlines
    • scrapy - a fast high-level web crawling & scraping framework for Python
  • jquery
    • jquery - jQuery JavaScript Library
    • jquery-ui - The official jQuery user interface library
    • jQuery-File-Upload - File Upload widget for jQuery
    • select2 - A jQuery based replacement for select boxes
    • cheerio - Fast, flexible, and lean implementation of core jQuery designed specifically for the server.
    • jquery-pjax - pushState + ajax = pjax
  • java
    • spring-boot - Create Spring-powered, production-grade applications and services
    • spring-framework - Everything required beyond the Java programming language for creating enterprise applications
    • RxJava - Reactive extensions for the JVM
    • guava - Google core libraries for Java
  • websites
    • hugo - The world’s fastest framework for building websites.
    • html5-boilerplate - A professional front-end template for building fast, robust, and adaptable web apps or sites.
    • jekyll - A blog-aware static site generator in Ruby
    • hexo - A fast, simple & powerful blog framework, powered by Node.js

Back End

  • containers
    • kubernetes - Production-Grade Container Scheduling and Management
    • moby - a collaborative project for the container ecosystem to assemble container-based systems
    • compose - Define and run multi-container applications with Docker
  • databases
    • mongo - The MongoDB Database
    • postgres - Mirror of the official PostgreSQL GIT repository
    • mysql-server - the world’s most popular open source database
    • redis - an in-memory database that persists on disk
    • sqlite - Official Git mirror of the SQLite source tree
    • tidb - an open source distributed HTAP database compatible with the MySQL protocol
    • etcd - Distributed reliable key-value store for the most critical data of a distributed system
    • MariaDB - a community developed fork of MySQL server
  • rails
    • rails - Ruby on Rails
    • devise - Flexible authentication solution for Rails with Warden
    • spree - n open source E-commerce platform for Rails 6
    • activeadmin - The administration framework for Ruby on Rails applications.
    • kaminari - A Scope & Engine based, clean, powerful, customizable and sophisticated paginator for Ruby webapps
    • simple_form - Forms made easy for Rails. Tied to a simple DSL, with no opinion on markup.
    • factory_bot - A library for setting up Ruby objects as test data.
    • react-rails - Integrate React.js with Rails views and controllers, the asset pipeline, or webpacker.
    • paper_trail - Track changes to your rails models
  • cms
    • Ghost - The no 1 headless Node.js CMS for professional publishing
    • keystone-classic - Node.js CMS and web app framework
    • strapi - Open source Node.js Headless CMS to easily build customisable APIs
    • netlify-cms - A Git-based CMS for Static Site Generators
    • grav - Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS
    • october - Free, open-source, self-hosted CMS platform based on the Laravel PHP Framework
    • wagtail - A Django content management system focused on flexibility and user experience
    • django-cms - The easy-to-use and developer-friendly CMS
    • directus - Directus 8 Suite—Future-Proof Headless CMS & API for Custom Databases
  • serverless
    • serverless - Build web, mobile and IoT applications with serverless architectures
    • kong - The Cloud-Native API Gateway
    • localstack - A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!
    • openfaas - Serverless Functions Made Simple
    • Zappa - Serverless Python
    • firecracker - Secure and fast microVMs for serverless computing
    • kubeless - Kubernetes Native Serverless Framework
    • up - Deploy infinitely scalable serverless apps, apis, and sites in seconds to AWS
  • rest-api
    • elasticsearch - Open Source, Distributed, RESTful Search Engine
    • socket.io - Realtime application framework (Node.JS server)
    • json-server - Get a full fake REST API with zero coding in less than 30 seconds (seriously)
    • Faker.js - generate massive amounts of realistic fake data in Node.js and the browser
    • caddy - Fast, multi-platform web server with automatic HTTPS
  • node
    • express - Fast, unopinionated, minimalist web framework for node.
    • koa - Expressive middleware for node.js using ES2017 async functions
    • nest - A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications
    • hapi - The Simple, Secure Framework Developers Trust
    • node-restify - The future of Node.js REST development
  • monitoring
    • netdata - Real-time performance monitoring, done right
    • grafana - The tool for beautiful monitoring and metric analytics & dashboards for Graphite, InfluxDB & Prometheus & More
    • prometheus - The Prometheus monitoring system and time series database.
    • huginn - Create agents that monitor and act on your behalf. Your agents are standing by!
    • wrk - Modern HTTP benchmarking tool
    • sentry - Sentry is cross-platform application monitoring, with a focus on error reporting.
    • cube.js - Open Source Analytics Framework
  • http-client
    • axios - Promise based HTTP client for the browser and node.js
    • httpie - As easy as /aitch-tee-tee-pie/ Modern, user-friendly command-line HTTP client for the API era.
    • requests - A simple, yet elegant HTTP library.
    • request - Simplified HTTP request client.

Design

  • icons
    • Font-Awesome - The iconic SVG, font, and CSS toolkit
    • material-design-icons - Material Design icons by Google
    • feather - Simply beautiful open source icons
    • ionicons - The premium icon pack for Ionic Framework and web apps everywhere
    • simple-icons - SVG icons for popular brands
    • eva-icons - A pack of more than 480 beautifully crafted Open Source icons
    • octicons - A scalable set of icons handcrafted with <3 by GitHub
  • frameworks
    • bootstrap - [POPULAR] The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web
    • bulma - [POPULAR] Modern CSS framework based on Flexbox
    • tailwindcss - [POPULAR] A utility-first CSS framework for rapid UI development
    • ant-design - A UI Design Language and React UI library
    • material-ui - React components for faster and easier web development
    • element - A Vue.js 2.0 UI Toolkit for Web
    • Semantic-UI - Semantic is a UI component framework based around useful principles from natural language
  • design-tools
    • storybook - The UI component explorer. Develop, document, & test for React, Vue, Angular, Ember, Web Components, & more
    • prettier - an opinionated code formatter
    • pixi.js - Create beautiful digital content with the fastest, most flexible 2D WebGL renderer
  • charts
    • Chart.js - Simple HTML5 Charts using the <canvas> tag
    • incubator-echarts - A powerful, interactive charting and visualization library for browser
    • mermaid - Generation of diagram and flowchart from text in a similar manner as markdown
  • animations
    • animate.css - A cross-browser library of CSS animations. As easy to use as an easy thing.
    • three.js - JavaScript 3D library
    • reveal.js - The HTML Presentation Framework
    • anime - JavaScript animation engine
    • impress.js - a presentation framework based on the power of CSS3 transforms and transitions in modern browsers
  • admin
    • AdminLTE - Free admin dashboard template based on Bootstrap 4

Tools

  • editors
    • vscode - Visual Studio Code
    • atom - The hackable text editor
    • neovim - Vim-fork focused on extensibility and usability
    • code-server - VS Code in the browser
    • brackets - An open source code editor for the web, written in JavaScript, HTML and CSS.
    • quill - Quill is a modern WYSIWYG editor built for compatibility and extensibility.
    • vim - The official Vim repository
  • services
    • discourse - A platform for community discussion. Free, open, simple.
    • Rocket.Chat - The ultimate Free Open Source Solution for team communications
  • machine-learning
    • tensorflow - An Open Source Machine Learning Framework for Everyone
    • keras - Deep Learning for humans
    • opencv - Open Source Computer Vision Library
    • scikit-learn - machine learning in Python
    • pytorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration
    • face_recognition - The world’s simplest facial recognition api for Python and the command line
    • transformers - State-of-the-art Natural Language Processing for Pytorch and TensorFlow 2.0.
    • caffe - a fast open framework for deep learning
    • gym - A toolkit for developing and comparing reinforcement learning algorithms.
    • darknet - Convolutional Neural Networks
  • documentation
    • slate - Beautiful static documentation for your API
    • devdocs - API Documentation Browser
    • zeal - Offline documentation browser inspired by Dash
    • swagger-ui - a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API
  • command-line
    • ohmyzsh - an open source, community-driven framework for managing your zsh configuration
    • terminal - The new Windows Terminal and the original Windows console host, all in the same place
    • hyper - A terminal built on web technologies
    • fish-shell - The user-friendly command line shell
    • blessed - A high-level terminal interface library for node.js
  • headless
    • puppeteer - Headless Chrome Node.js API
    • scrapy - Scrapy, a fast high-level web crawling & scraping framework for Python
    • phantomjs - Scriptable Headless Browser
  • tools
    • FiraCode - Free monospaced font with programming ligatures
    • markdown-here - Google Chrome, Firefox, and Thunderbird extension that lets you write email in Markdown and render it before sending.
    • gogs - Gogs is a painless self-hosted Git service
    • clipboard.js - Modern copy to clipboard. No Flash. Just 3kb gzipped
  • automation
    • ansible - a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain
    • core - Open source home automation that puts local control and privacy first

Mobile

  • ios
    • swift - The Swift Programming Language
    • Alamofire - Elegant HTTP Networking in Swift
    • AFNetworking - A delightful networking framework for iOS, macOS, watchOS, and tvOS.
    • fastlane - The easiest way to automate building and releasing your iOS and Android apps
    • lottie-ios - An iOS library to natively render After Effects vector animations
    • RxSwift - Reactive Programming in Swift
    • Hero - Elegant transition library for iOS & tvOS
  • android
    • kotlin - The Kotlin Programming Language
    • okhttp - Square’s meticulous HTTP client for Java and Kotlin
    • retrofit - A type-safe HTTP client for Android and the JVM
    • scrcpy - Display and control your Android device
    • fastlane - The easiest way to automate building and releasing your iOS and Android apps
    • MPAndroidChart - A powerful Android chart view / graph view library
    • glide - An image loading and caching library for Android focused on smooth scrolling
    • lottie-android - Render After Effects animations natively on Android and iOS, Web, and React Native
    • ijkplayer - Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support
    • butterknife - Bind Android views and callbacks to fields and methods
    • leakcanary - A memory leak detection library for Android
  • cross-platform
    • flutter - Flutter makes it easy and fast to build beautiful apps for mobile and beyond
    • react-native - A framework for building native apps with React
    • ionic-framework - A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps

2.36 - News Agregator

News Agregator

News Aggregator

2.39 - Awesome List of Diagram Apps

Awesome List of Diagram Apps

List of Diagram Apps

Cloud-based Diagram App

Diagram as Code (Programmable Diagram)

Neural Network Diagram

  • NN-SVG : neural network and deep learning architecture diagram

Diagram

2.40 - Free Resources in Internet

Free Resources in Internet

Free Presentation Template

  • Slidesgo Free powerpoint and Google Slide template

Free Resources for Developer

2.41 - Github Apps

Github Apps and Tools

Github Tools

Github Alternatives

  • Radicle Peer to Peer Git System
  • Gitlab
  • Gitee

Github Action

Github

Github Project Structure

Awesome Github

Github

Github Profile

Awesome of Awesome

2.42 - Text and Markdown Editor

Text and Markdown Editor

Web based text editor

  • Texteditor : open from local and cloud, write, save, donwload to local and cloud, no grammar
  • Browserpad : read write local file, no grammar
  • Editpad : only write to local file, no import, grammar support
  • Textarea or Mytextarea at Outpan: in mytextarea read write local but .txt only, grammar support
  • Textarea.cc
  • Trix Editor, grammar support
  • Zen: write, save, download, grammar support
  • Note Rosyadi.com
  • data:text/html, <body contenteditable style="font: 2rem/1.5 monospace;max-width:60rem;margin:0 auto;padding:4rem;"> : work for LanguageTools
  • data:text/html, <body contenteditable style="font-size:2rem;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;>
  • data:text/html;charset=utf-8, <title>TextEditor</title><body contenteditable style="font-size:2rem;font-family:monaco;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;" spellcheck="false">
  • data:text/html,<html contentEditable> : work for Grammarly
  • data:text/html;charset=utf-8, <html contenteditable></code>
  • data:text/html, <textarea style="font-size: 1.5em; width: 100%; height: 100%; border: none; outline: none" autofocus>
  • data:text/html,<button onClick="SaveTextArea()">Save</button> <script language="javascript" type="text/javascript"> function SaveTextArea() { window.location = "data:application/octet-stream," + escape(txtBody.value); } </script> <textarea id="txtBody" style="font-size: 1.5em; width: 100%; height: 100%; boarder: none; outline: none" autofocus> </textarea>: with save button
  • data:text/html,<pre onkeyup="(function(d,t){d[t]('iframe')[0].contentDocument.body.innerHTML = d[t]('pre')[0].textContent;})(document,'getElementsByTagName')" style="width:100%;height:48%;white-space:pre-wrap;overflow:auto;" contenteditable></pre><iframe style="width:100%;height:48%"> : with live preview

In Browser Markdown Editor: Progressive Web App

Web based markdown editor

WASM markdown editor

Native markdown editor

  • Typora, a nicely polished Markdown editor – has the best support for math input I’ve seen
  • Obsidian, a split-pane Markdown editor focused on bidirectional linking
  • Zettlr a Markdown editor focused on publishing / academics
  • VNote

Markdown Converter

2.43 - Privacy, Security and Anonymity Apps

Privacy, Security and Anonymity Apps

Security Training

Book

Web Apps

Site Information

Window Apps

  • Malwarebytes : anti malware
  • ShutUP10 (OOSU10): Windows permission editor

Browser Apps

  • Javascript Switcher : Add a button in the url bar to block or enable javascript per-site.
  • ClearURLs : Remove tracking elements from URLs.
  • HTTPS Everywhere : Encrypt the Web! Automatically use HTTPS security on many sites.
  • uBlock Origin : Finally, an efficient blocker. Easy on CPU and memory.
  • Google Direct : Remove tracking links from Google Search results

Anonimity Security

Privacy

Windows Privacy

Privacy

Privacy

Browser Privacy

Password

Security

Security

Security

Security

Security

Security

Security

  • CRXcavator : Inspect Chrome Extension content for malicious code

Security

Umbrella Security Tips License: CC BY

Security

Security

solution : VPN, power tunnel (android), power tunnel pc, green tunnel, wireguard, webproxy, etc advantage of power tunnel and green tunnel : you will connect through local proxy which mean your quota internet usage would not exceed the disadvantage : sometimes it not work against DPI filter from ISP advantage of vpn, wireguard, webproxy : work smoothly against DPI filter or other gov censor the disadvantage : your internet quota will be exceed, since you connect through remote proxy. There will be extra data need to be carried openvpn personal recomendation is this, or this

2.44 - Awesome WASM App

Awesome WASM Apps

Related links:
🔗 Audio and Music Tools - WASM
🔗 PDF Tools - WASM

List of WASM Apps

Video Processing

Image Processing

Text and Document Processing

File Converter

Math

Search Engine

  • Stork WASM search engine for static web

Screen Recorder

Others

2.45 - Face and Pose Animation

Face and Pose Animation

Related links:
🔗 App/Awesome List of Animation Apps 🔗 App/Face and Pose Animation

Face and Pose Animator

Avatar Generation

2.46 - Audio and Music Tools

Audio and Music Tools

Audio and music processing tools.

Related links:
🔗 Audio, Music, Radio, and Podcast Streaming Apps
🔗 Audio and Music Tools
🔗 Free Audio and Music

AI Apps for Audio

AI Music Separation

AI Music Recognition

Audio Creation

Audio and Music Programming

AI Audio and Music Generator

Audio and Music Creation and Sharing

  • Beepbox : BeepBox is an online tool for sketching and sharing instrumental melodies.
  • Jummbox : Jummbox is Beepbox modification (online tool for sketching and sharing chip tune melodies).

WASM Audio Processing

Audio Player

Online Audio Player

Peer to Peer Audio

Audio Editor

Desktop Audio Editor

  • Audacity, #opensource

Online Audio Editor

Other Audio Tools

Working with Virtual Audio Tools

Audio Recording - Transcription

Benefits/drawbacks:

  • We cannot listen the audio output from playback apps

VAC Audio Recording

Use cases:

  • Record Zoom Webinar to Speechtexter, Google Docs etc.

Audio Input Mixing

Audio Input Mixing

Use cases:

  • Record with multiphttps://raw.githubusercontent.com/irosyadi/vnote.image/master/vnotebook/app/music-audio-tool.md/20211023055947660_4903.pngP) to Audacity
  • Broadcast with multiple input (our voice + music from AIMP) to Zoom, Youtube etc.

Audio Output Mixing

Audio Output Mixing

Setting:

  • OS Sound Setting
    • Outphttps://raw.githubusercontent.com/irosyadi/vnote.image/master/vnotebook/app/music-audio-tool.md/20211023060503358_26770.pngine 1 VAC Microphone
  • VAC Repeater Setting
    • Wave in: Line 1 VAC Microphone
    • Wave out: Speaker/Headphone
    • Start

Use cases:

  • Transcribe (and listen) Zoom Seminar to Speaker and Speechtexter, Google Docs
  • Translate Youtube Video using Google Translate

Zoom Audio Recording/Transcription

Zoom Recording Transcription

Google Meet Audio Transcription

  • Open Google Meet, usihttps://raw.githubusercontent.com/irosyadi/vnote.image/master/vnotebook/app/music-audio-tool.md/20211023061101034_12558.pngsing default Mic

But we cannot do both Speechtexter and Google Docs We cannot do both Speechtexter and Voice Note We can do both Google Meet and Speechtexter/VoiceNote/Dictanote We can do both Zoom and Speechtexter/VoiceNote/Dictanote

2.47 - File Sharing, File Transfer and File Sync

File Sharing, File Transfer and File Sync

List

Local Peer to Peer File Sharing - Transfer

Cloud based Peer to Peer File Sharing - Transfer

Web-RTC File Transfer

Decentralized File Transfer

File Send

Sync

2.49 - Spartan and Text Only Websites

Spartan and Text Only Websites

Text Only Newssites

Text Only Websites

Text Only Blogs

Lite and Fast Websites

List of Spartan Websites

2.50 - Free Cloud Compute Infrastructure

Free Cloud Compute Infrastructure

Cloud Computing Comparison

2.51 - Octave Online Server

Octave Online Server

2.52 - Jupyter Notebook Apps

Jupyter Notebook Apps

Related links:
🔗 note/Awesome Jupyter Notebooks
🔗 app/Jupyter Notebook Apps

Free Jupyter Notebook Server

Free JupyterLab Server

Jupyter Notebook Tools (Extensions)

  • Mito Mito is an editable spreadsheet in your Jupyter notebook. You can clean, filter, find/replace, and use standard spreadsheet functions in Mito, giving you the visibility and ease of a spreadsheet with the power of Python.
  • RISE : RISE allows you to instantly turn your Jupyter Notebooks into a slideshow. No out-of-band conversion is needed, switch from jupyter notebook to a live reveal.js-based slideshow in a single keystroke, and back.
  • GeoNotebook : A Jupyter notebook extension for geospatial visualization and analysis
  • nbinteract : Python package that provides a command-line tool to generate interactive web pages from Jupyter notebooks
  • Jupyterhub : Multi-user server for Jupyter notebooks
  • List Jupyter Extensions
  • IPyCanvas : draw over Jupyter Notebook
  • nir/jupylet: Python game programming in Jupyter notebooks.

Alternative to Jupyter Notebook (Reactive Notebook)

Other Data Science Tools

  • Streamlit The way to build and share data apps
  • Dash by Plotly a framework for building ML & data science web apps.

Jupyter Lab

Jupyter Colaboration

  • Voila Voilà allows you to convert a Jupyter Notebook into an interactive dashboard that allows you to share your work with others.
  • Streamlit similar to Voila

Jupyter

Python on Browser as WASM

Jupyter Tools

Blog with Jupyter

Jupyter Notebook How To

Jupyter

Jupyter Lite

2.53 - Hacker News Apps

Hacker News Apps

Hacker News Main Site

Hacker News Alternative Frontends

List of Hacker News Reader

Hacker News Search Engine

Hacker News RSS

Hacker News Tools

Hacker News Aggregator

  • Serializer : Hacker News, Reddit, Lobster Aggregator

Alternative to Hacker News

Hacker News Browser Extension/Add-on

  • Newsit : reddit and HN comment in any links

Hacker News Books

Hacker News

2.54 - Reddit Apps

Reddit Apps

Reddit Main Site

Reddit Alternative Frontends

Reddit Images Frontends

Reddit Videos Frontends

Reddit Music Frontends

Reddit Tools

Alternative to Reddit

Reddit

2.55 - Web Status Checker

Check Live Status of Website

2.56 - Network Speed Test

Network Speed Test Apps

2.57 - Awesome List of File Converter Apps

Awesome List of File Converter Apps

List File Converter

Cloud-based File Converter

WASM File Converter

Offline File Converter Apps

[[image-format-conversion]]

2.58 - Hosted Open Source Services

Hosted Open Source Services

Open Source Service Hosted

  • Fossdaily
  • Nixnet
    • Email
    • Jabber/XMPP
    • BigBlueButton
    • Mastodon
    • Gitea
    • DNS
    • Proxies
    • Tiny Tiny RSS
    • CodiMD
    • Etherpad
    • PrivateBin
    • Nitter
    • Bibliogram
    • Mumble
    • Searx
    • Wallabag
    • Polr
    • Plume
    • xBrowserSync
    • Framadate
    • RSS-Bridge
  • Disroot
    • Email
    • Next Cloud
    • Discourse: forum
    • XMPP Chat
    • Etherpad
    • Ethercalc
    • PasteBin
    • Lufi : file upload
    • Searx : search
    • Polls by Framadate
    • Taiga : Project Management Board
    • Jitsi Meet : calls
    • Gitea : git
    • Mumble : audio
    • Cryptpad
  • Synopta
    • Search
    • PrivateBin
    • E-mail
    • CodiMD
    • Etherpad
    • Ethercalc
    • Gitea
    • Jabber/XMPP
    • Mastodon
    • Mumble
    • WebXMPP
    • Jitsi Meet
    • WebIRC
    • Polls
    • CyberChef
    • Tiny Tiny RSS
    • Invidious
    • Nitter
    • Bibliogram
  • Tonibot
    • Searx
    • Librespeed
    • Element by Matrix

Instances

2.60 - Movie App

Movie App

Movie Subtitles

Movie Rating

  • IMD6B
  • Rotten Tomatoes

2.61 - Online Drawing Tools and Whiteboard Apps

Drawing Tools

Online Drawing Tools

Collaborative Online Whiteboard

2.62 - Free Apps for Developers

Free Apps for Developers

Tools for Developers

Free App for Developers

2.63 - Free Apps for Students

Free Apps for Students

Free Student Software List

Free Software for Student

2.64 - Awesome List of Animation Apps

Awesome List of Animation Apps

Related links:
🔗 App/Awesome List of Animation Apps 🔗 App/Face and Pose Animation

3D Animation

Stop Motion Animation

2D Animation

Animation Engine for Interactive Math

Online Animation Editor

Animation from Drawing

Animation

Review

Animation and Visualization

Animation

Animation in SVG

Online Animation and Visualization Apps

Animation Examples

2.65 - Browser Extension and Add-On

Browser Extension and Add-On

Firefox Browser Add-On

Download

  • DownThemAll! : The Mass Downloader for your browser

Github

  • Enhanced GitHub : Display repo size, size of each file, download link and option to copy file contents
  • Gitako - GitHub file tree : File tree for GitHub, and more than that.

Search Tools

  • Add custom search engine : Add a custom search engine to the list of available search engines in the search bar.
  • Selection Context Search : Right click on a selected text and choose the search website from the popup window or the context menu.
    • Swift Selection Search : Swiftly access your search engines in a popup panel when you select text in a webpage.

Tab Management

  • Auto Tab Discard : Increase browser speed and reduce memory load and when you have numerous open tabs.
  • Containerise : Firefox extension to automatically open websites in a container
  • Containers theme : Change theme color based on your container color
  • Facebook Container : Facebook Container isolates your Facebook activity from the rest of your web activity in order to prevent Facebook from tracking you outside the Facebook website via third party cookies.
  • Firefox Multi-Account Containers : Multi-Account Containers helps you keep all the parts of your online life contained in different tabs.
  • Sidebery : Add-on for managing tabs, containers (contextual identities) and bookmarks in sidebar.

RSS

  • Awesome RSS : Puts an RSS/Atom subscribe button back in URL bar
  • Feedbro : Advanced Feed Reader - Read news & blogs or any RSS/Atom/RDF source.

Password Management

  • Bitwarden - Free Password Manager : A secure and free password manager for all of your devices.

Blocking Tools

  • Javascript Switcher : Add a button in the url bar to block or enable javascript per-site.
  • ClearURLs : Remove tracking elements from URLs.
  • HTTPS Everywhere : Encrypt the Web! Automatically use HTTPS security on many sites.
  • uBlock Origin : Finally, an efficient blocker. Easy on CPU and memory.
  • Google Direct : Remove tracking links from Google Search results

Site Enhancement

  • Refined Hacker News : Add useful features and tweak a little stuff to make the HN experience better without changing the look and feel
  • Dark Reader : Dark mode for every website. Take care of your eyes, use dark theme for night and daily browsing.
  • Wikiwand: Wikipedia Modernized : Good old Wikipedia gets a great new look
  • Violentmonkey : An open source user script manager that supports a lot of browsers

Reddit

  • Epiverse : View Reddit and Hacker News comments on all webpages.
    • Thredd - Useful Advice from Reddit : Get reviews for the page you’re reading or recommendations for similar content - crowdsourced from Reddit!
  • Reddit Enhancement Suite : A suite of modules that enhance your Reddit browsing experience

Research

  • Find Code for Research Papers - CatalyzeX : Find code implementations for machine learning research papers with code directly on Google, Arxiv, Scholar, Twitter, Github, etc.

Page Information

  • What Hacker News Says : Easily find Hacker News threads about the page you’re currently browsing.

Browsing Tools

  • Copy Selection as Markdown : Copy title, URL, and selection as Markdown
  • markdown-clipper : This extension works like a web clipper, but it downloads articles in a Markdown format.
  • Open in Sumatra PDF and DJVU Reader : Adds a context menu item to send PDF links directly to Sumatra PDF
  • Open in VLC™ media player : Adds a context menu to send audio and video streams directly to the well-known VLC™ media player
  • SingleFile : Save a complete page into a single HTML file

Research

  • Mendeley Web Importer : Fast, convenient import of references and PDFs to your Mendeley Reference Manager library
  • NoteBook Buddy : Provides a helping hand when using Jupyter NoteBooks

Time Management

  • Mind the Time : Keep track of how much time you spend on the web, and where you spend it.
  • Pomodoro clock : A simple pomodoro clock in your browser to hack your productivity.

2.66 - QR Code and Barcode Apps

QR Code and Barcode Apps

QR Code Generator

QR Code Decoder

QR Code

Barcode Tools

2.67 - QR Code App

QR Code App

QR Code Generator

QR Code Decoder

2.68 - Jamstack

Jamstack and WebApps

What is Jamstack?

List JavaScript Frontend Frameworks

  • React
  • Vue
  • Angular
  • Svelte

List Static Site Generators

  • Next.js
  • Gatsby
  • Hugo
  • Jekyll
  • 11ty (Eleventy)
  • Nuxt
  • Docosaurus

List Headless CMS’s

  • Contentful
  • Strapi
  • Netlify CMS
  • Dato CMS
  • Ghost
  • Publii
  • Prose
  • Forestry
  • Sanity
  • Stackbit

List of Deployments (Static Hosting)

Comparison

Host Comparison

Third Party SaaS

  • Comments
    • Disqus
    • Staticman
  • Search
    • Algolia
    • List.js
  • Authorization
    • Auth0
  • Form Submission
    • Typeform
    • FormKeep
  • E-Commerce
    • Snipcart
    • Foxy.io

Learn Jamstack

Gatsby Starters

Jekyll Themes

2.69 - Sketch and Hand Draw Web App

Sketching, Hand Drawing, and Hand Writing Web App

Sketch to Latex and Diagram

Digital Drawing in Hand Draw Style

Draw Chart using XKCD Style

Draw Chart Hand Draw

Typing Text in Handwritten Style

Font from Handwritten

Mandala Simmetric Draw

Image Manipulation

  • PINTR Image to Plotter Drawing

2.70 - Search Engine App

Search Engine App

List

Map

Main Search Engines

Alternative Search Engines

Archive.org Search Engine

Code Search Engine

Specific Search Engine

Blog Search Engine

Powerpoint Search Engine

Programmable Search Engine

Web history Search Engine

2.71 - Online Documentation Tools

Online Documentation Tools

Jupyter Book

2.72 - Google Sheet Tools

Google Sheet Tools

Turn Google Sheet into a Website

Google Sheet into Services

2.74 - List of Static Web Generator

List of Static Web Generator

List of List

Fast Static Site Generator

Static Site Client Side Rendering

  • MDWiki : javascript
  • VNote : javascript
  • Grav : PHP
  • Bludit

Static Site with PHP

Jekyll Theme

2.75 - Notetaking Tools

Notetaking Tools

Web-based

Offline with Web Support

Offline

  • Roam
  • Notable
  • org-mode
  • vim-org
  • Trilium
  • Logseq, note taking web based local only and GitHub-hosted
  • Typora, a nicely polished Markdown editor – has the best support for math input I’ve seen
  • Obsidian, a split-pane Markdown editor focused on bidirectional linking
  • Zettlr a Markdown editor focused on publishing / academics
  • RemNote converts your notes into spaced-repetition flash cards, similar to Anki
  • foambubble, a family of VS Code extensions to help search + organize your notes
  • Neuron Notes a neat Zettelkasten system written in Haskell, based on GitHub repos
  • R Studio includes an awesome Markdown publishing experience, similar to Jupyter Notebooks
  • (coming soon) Athens Research, an open-source alternative to Roam
  • (coming soon, made by me) Noteworthy, which aims to be an extensible, open-source alternative to Obsidian and Typora, with a focus on wikilinks and excellent math support
  • Dendron, a hierarchical note-taking editor based on VS Code
  • kb, a minimal text-oriented command-line note manager
  • Notebag a minimal Markdown app with tag support
  • Joplin, multiplatform (mobile, PC, terminal) has more features than practically every other note-taking app out there.
  • Notion
  • Brick
  • novelWriter – A markdown-like editor for writing novels ideal for novel
  • Manuskript – Open-source tool for writers ideal for novel

Notetaking

Markdown Note

Zettelkasten

Notetaking HTML Generator

2.76 - Exobrain Blogs and Digital Gardens

Exobrain Blogs and Digital Gardens

list of interesting exobrain, second brain, zettelkasten or evergreen blogs

Second Brain

How to build a second brain as a software developer - Aseem Thakar

Digital Garden Platform

List of Blog with Exobrain (Second Brain) Method

List of Blog with Zettelkasten (Evergreen, Digital Garden) Method

List of Blog

  1. Paul Copplestone Platform: Vuepress
  2. The Blue Book Platform: MkDocs
  3. Krzysztof Kowalczyk the creator of SumatraPDF
  4. Ben Lynn
  5. Max Masnick
  6. Ioannis Kourouklides Stacks: Wikipedia
  7. Flavio Copes
  8. Buster Benson PIles Notes
  9. Leandro Ardissonne
  10. Wayan Jimmy
  11. Sanyam Kapoor Staks: GatsbyJS
  12. Alex Kehayias
  13. Yishou Zhan
  14. Rosie Campbell Stacks: Obsidian, Dropbox, blot.im
  15. Nat Eliason Stacks: Webflow
  16. Mike Tannenbaum
  17. David Seah Stacks: Gitbook
  18. Mental Nodes Stacks: Tiddlywiki
  19. Home · Scott Spence Stacks: Gatsby

List of Second Brain Blog

  1. Second Brain
  2. Meta Knowledge
  3. Wiki Workflow
  4. Google Sheet List

Apps for Second Brain Blog

  • Gitbook

Apps for Digital Garden Blog

Digital Garden Notetaking

2.77 - Awesome List of Interactive and Explorable Webs

Awesome List of Interactive and Explorable Webs

Related links:
🔗 Awesome List of Data Visualization
🔗 Awesome List of Machine Learning Visualization
🔗 Awesome List of Interactive and Explorable Webs
🔗 Interactive Books

Interactive Website

Interactive Web

Interactive

Markup

Interactive

Interactive Web

Interactive Tools

2.78 - Alternative to Popular Websites

Alternative to Popular Websites

Alternative to Wolframalpha

Alternative to Reddit

2.79 - Alternative Frontend of Popular Websites

Alternative Frontend of Popular Websites

💡 Alternative frontends offer ad-free and light browsing experiences.
💡 Alternative frontends also offer better user experiences than their original apps.

Collection

Tools

Twitter

Medium

List

Redirector

List Redirection

Twitter to nitter:

  1. Description is optional but I use Twitter to nitter for understandability of Redirect.
  2. Example URL can be any twitter URL.
  3. Include pattern: https://twitter.com/*
  4. Redirect to: https://nitter.net/$1
  5. Pattern type: Wildcard
  6. Pattern description is also optional.

YouTube to Invidious:

  1. Description is optional but I use YouTube to Invidious for understandability of Redirect.
  2. Example URL can be any youtube URL.
  3. Include pattern: https://www.youtube.com/*
  4. Use any Invidious public instances. For now I use invidious.snopyta.org. Redirect to: https://invidious.snopyta.org/$1
  5. Pattern type: Wildcard
  6. Pattern description is also optional.

Instagram to bibliogram:

  1. Description is optional but I use Instagram to bibliogram for understandability of Redirect.
  2. Example URL can be any instagram URL.
  3. Include pattern: https://www.instagram.com/*
  4. Redirect to: https://bibliogram.art/u/$1
  5. Pattern type: Wildcard
  6. Pattern description is also optional.

Reddit to old reddit:

  1. Description is optional but I use reddit to old reddit for understandability of Redirect.
  2. Example URL can be any reddit URL.
  3. Include pattern: https://www.reddit.com/*
  4. Redirect to: https://old.reddit.com/$1
  5. Pattern type: Wildcard
  6. Pattern description is also optional.

Bonus: Removal of annoying popup of signin/signup for viewing any question on Quora website

  1. Description is optional but I use quora without annoying popup for understandability of Redirect.
  2. Example URL can be any quora URL.
  3. Include pattern: https://www.quora.com/*
  4. Redirect to: https://www.quora.com/$1?share=1
  5. Pattern type: Wildcard
  6. Pattern description is also optional. Here we need to something extra because above rules will cause this issue. Thanks to einaregilsson for helping me to solve that issue.
  7. Click on Show advanced options.
  8. Exclude pattern: https://quora.com/*share=1

Redirect: en.wikipedia.org/ to: $1en.0wikipedia.org/$2 Pattern type: wildcard Example: en.wikipedia.org/* → en.0wikipedia.org/*

Reddit (2) Redirect: https://(?:www.)?reddit.com/(.*) to: https://teddit.net/$1 Example: https://reddit.com/https://teddit.net/ Applies to: Main window (address bar) Pattern type: Regex

Reddit (2) Redirect: https://reddit.com/* to: https://teddit.net/$1 Example: https://reddit.com/https://teddit.net/ Applies to: Main window (address bar) Pattern type: Wildcard

Reddit Redirect: https://.reddit.com/ to: https://teddit.net/$2 Example: https://www.reddit.com/https://teddit.net/ Applies to: Main window (address bar) Pattern type: Wildcard

2.80 - GIF Tools

GIF Tools

How to pronounce gif?'

jif (period).

GIF Editor

  • Ezgif Online gif editor and converter

GIF-Search Engine

  1. Giphy, owned by Facebook
  2. GIF Search via Google https://www.google.com/search?q=?&tbm=isch&tbs=itp:animated
  3. Open Gif Search, Github, #opensource, #selfhosted

Fun with Gif

  1. GIF Message, to convert text into gif
  2. Giftxt, change behind text= with your text

2.82 - DNS and Domain Tools

DNS and Domain Tools

Whois

DNS Query

Public DNS

DNS Tools

Domain History

DNS Leak Tester

Domain Tools

Pentest

DNS

Handshake DNS

Dynamic DNS

DNS

DNS over HTTPS

Port forwarding

  • A port forward is a way of making a computer on your home or business network accessible to computers on the internet, even though they are behind a router. (portforward)
  • Network Utilities
  • Duck DNS: provide a public DNS server that anyone can get a subdomain and use one of our provided scripts to update their record(s).

Domain Name Search

Domain Name Generator

2.83 - Awesome List of Maps

Awesome List of Maps

Related links:
🔗 app/Awesome List of Maps
🔗 app/Map Tools
🔗 app/Earth Map and Tools

General Purpose

Public Transport

Street View

Light Pollution

Mercator projection

Topography

Cycle

  • OpenCycleMap - Global cycling map for overview and planning.

Sea

Train

Airspace

Satellites

  • ISSTracker - Real-time location tracking of the international space station.
  • Satellite Map - Current position and trajectory of 16,000 manmade objects orbiting the earth.

Sights

  • OpenTripMap - Map service for sightseeing and travel planning.
  • Wikimapia - Editable map of marked places.

Accommodation

Food

  • mundraub - Edible plants and fruits worldwide.

Weather

Wind

Catastrophes

Historic

3D Earth

Social Humanity

Satellite

Solar Map

Hydrological Map

Geological Map

Extraterrestrial

Nightsky

Moon

Mars

Solar System

Milky Way

  • 100,000 Stars - Interactive visualization of the stellar neighborhood.

Universe

Indonesia

Geospatial Indonesia

2.84 - Awesome List of Image Editors, Converters, and Processors

Awesome List of Image Editors, Converters, and Processors

List of Image Editor

Cloud Image Editor

GIF Editor

Raw Processing

Offline

  • GIMP

Background Removal

Dithering

Image Forensic

Fast Converter

  • Vector Magic image to vector (convert JPG, PNG, BMP, and GIF bitmap images to true SVG, EPS, and PDF vector images)

Image Compressor

Background Removal

Image Generation

Image Super Resolution

Image Processing: Contect Aware Resizing

Image Cloaking

Social Media

Image Hosting

Photo Forensic

2.85 - PDF Tools

PDF Tools

Online

WASM PDF Tools

PDF Reader

Offline

  1. Inkscape
  2. Microsoft Word
  3. Libre Office
  4. Okular

PDF Table Extraction

Automatic Highlighting

PDF Applications

  • ByteScout PDF Multitool
    • Data Extraction
      • Extract as TXT, CSV, XLSX, XML, JSON
      • Find text
      • Detect tables
      • OCR analyzer
      • Embedded images
      • Attachments
      • XFA Form and Form data as XFDF
      • Embedded multimedia
    • Conversion
      • Convert PDF to bitmap (PNG, JPEG)
      • Convert PDF to vector image (EMF)
      • Convert PDF to HTML
    • Sensitive Data: Analyzer, Detector, Remover, Editor
    • Document Parser: Template Editor, Classifier
    • Utilities
      • Remove text, vectors, images
      • Document information
      • Split document
      • Merge document
      • Rotate document
      • Make PDF searchable and unsearchable
      • Add image (watermark) to PDF
      • Optimize (compress) document
  • PDF24 Toolbox
    • Data Extraction
      • Extract embedded images
    • Conversion
      • Convert to bitmap (PNG, JPEG)
      • Convert PDF to HTML
      • Convert PDF to Text
      • Convert PDF to Word
      • Convert PDF to Excel
      • Convert PDF to Powerpoint
      • Convert PDF to Other PDF Standards
      • Convert files (image, document) to PDF
    • Utilities
      • Split document
      • Remove selected page
      • Extract selected page
      • Merge document
      • Rotate document
      • Sort page (back to front, front to back)
      • Organize document (delete page, rotate page, add page, move page, print/fax/email selected page)
      • Protect and set PDF permission
      • Unlock (remove PDF protection and password)
      • Add image (watermark) to PDF
      • Add page numbers to PDF
      • Add text to PDF
      • Add drawing to PDF
      • Add shape to PDF
      • Add signature to PDF
      • Optimize (compress) document
      • Overlay two PDF documents
      • Compare two PDF documents
      • Capture screen
      • Import from scanner/camera
  • Okular
  • Foxit PDF
  • Sumatra PDF
  • PDF Reader by Xodo
  • PDFsam
  • Free PDF Compressor
  • CutePDF Writer
  • Xournal++
  • MuPDF

PDF to Excel

  • rga : Rga: Ripgrep, but also search for PDFs, E-Books, Office documents, zip, tar.gz

PDF Addon

Look Scanned PDF

PDF Tools

Diff PDF compare

By default, its only output is its return
code, which is 0 if there are no differences and 1 if the two PDFs differ. If
given the --output-diff option, it produces a PDF file with visually
highlighted differences:

$ diff-pdf --output-diff=diff.pdf a.pdf b.pdf

Copy

Another option is to compare the two files visually in a simple GUI, using
the --view argument:

$ diff-pdf --view a.pdf b.pdf

Copy

This opens a window that lets you view the files’ pages and zoom in on details.
It is also possible to shift the two pages relatively to each other using
Ctrl-arrows (Cmd-arrows on MacOS). This is useful for identifying translation-only differences.

See the output of $ diff-pdf --help for complete list of options.

2.89 - Cloud GPU

Cloud GPU

GPU Rental

Cloud Comparison

GPU Rent Price Comparison per hour

1xA100, 40GB, Vast, $0.828-$1.372
1xA100, 40GB, Jarvis, $1.29
1xA100, 40GB, Runpod, $0.89
1xA100, 40GB, Lambda, $1.1
1xA100, 40GB, Coreweave, $2.06
1xA100, 40GB, CrusoeCloud, $2.35

1xA100, 80GB, Vast, $0.852
1xA100, 80GB, Runpod, $2.04
2xA100, 80GB, Lambda, $2.2
1xA100, 80GB, Coreweave., $2.21
1xA100, 80GB, Datacrunch, $2.2
1xA100, 80GB, Fluidstack, $1.94
1xA100, 80GB, CrusoeCloud, $2.85

1xA6000, 48GB, Vast, $0.587-$1.001
1xA6000, 48GB, Jarivs, $0.99
1xA6000, 48GB, Runpod, $0.74
1xA6000, 48GB, Lambda, $0.80
1xA6000, 48GB, Coreweave, $1.28
1xA6000, 48GB, Datacrunch, $0.99

1xRTX3090, 24GB, Vast, $0.18-$0.353
1xRTX3090, 24GB, Runpod, $0.39
1xRTX3090, 24GB, Genesis, $1.30

1xV100, 16GB, Vast, $0.372
1xV100, 16GB, Runpod, $0.28
1xV100, 16GB, Coreweave, $0.80
1xV100, 16GB, Google, $0.74
1xV100, 16GB, Amazon, $0.918
1xV100, 16GB, Datacrunch, $0.89
1xV100, 16GB, Fluidstack. $0.8

Storage Price per month

Runpod $0.20/GB
Coreweave $0.04/GB

Best Bang to Bucks GPU for ML

GPU Benchmarks for Deep Learning - Lambda
AI-Benchmark
The Best GPUs for Deep Learning in 2023 — An In-depth Analysis
Razer Core X - Thunderbolt™ 3 eGPU External GPU

  • 12 GB RTX 3060 (recommended, cheap, low thermal, great memory) start from Rp6.000.000
  • 12 GB A2000 (slightly less powerful than 3060 but only 75w power)
  • 12 GB RTX 3060 Ti
  • 24 GB RTX 3090 (two times performances of 3060) start form Rp12.000.000
  • used Tesla V100 32GB

GPU Rank

RTX 3090 > Tesla V100 32GB > (RTX 3080 = RTX 6000)

  • 1.6: RTX A100 40GB > RTX 4090 > RTX A6000
  • 1: RTX 3090 Ti 24 GB = V100 32 GB
  • 0.8: RTX 3090 24GB = RTX 3080 Ti 12GB > RTX 3080
  • 0.75-0.8: A6000 48GB = RTX 6000 24 GB = A4000
  • 0.7 A40 = RTX 2080 Ti
  • 0.6: RTX 3070 Ti
  • 0.5: GTX 1080 Ti, RTX 2070, RTX 2080
  • Tesla P100 > P6000
  • 0.45-0.48: RTX 3070, RTX 3060 Ti
  • 0.35: GTX 1080, RTX 3060, RTX 3050
  • 0.25: GTX 1070

Machine Learning Deployment

2.91 - Electronics EDA Tools

Electronics EDA Tools

Electronics EDA Tools

Circuit Simulator

2.95 - Read Mode Tool

Read Mode Tool

Read without Clutter

Readability

2.96 - Remote Desktop

Remote Desktop

Remote Desktop

💡 : control other computer for troubleshooting or hacking.

Remote Desktop

2.97 - Secure Communications

Secure Communications

Secure Communications

2.98 - Symbolic Math Solver

Symbolic Math Solver

Online Math Solver

Offline Math Solver

2.99 - Terminal in Arduino

Terminal in Arduino

Discussion

2.100 - Text Manipulation and Expansion

Text Manipulation and Expansion

Text Manipulation

Text Expansion

2.103 - USB Tools

USB Tools

Bootable USB

Hacking Tools

2.106 - Windows Application Manager

Windows Application Manager

Windows Application Manager

2.108 - Windows Launcher

Windows Launcher

Windows Launcher

3 - Awesome

Awesome

3.1 - Awesome Microcontroller and Microcomputer

Awesome Microcontroller and Microcomputer

Arduino Android

Arduino

ESP

3.2 - Financial Tools

Financial Tools

Saham

3.4 - Awesome List of Data Visualization

Awesome List of Data Visualization

Related links:
🔗 Awesome List of Data Visualization
🔗 Awesome List of Machine Learning Visualization
🔗 Awesome List of Interactive and Explorable Webs
🔗 Interactive Books

Visualization eBook

Interesting Web Library

Text Visualization

Data Visualization Blog

Time Series Visualization

Web Visualization

Visualization Tools

Data Visualization

  • Superset Open source data visualization and business intelligence

Visualization Examples

Interactive Visualization

Visualization and Complexity

Visualization and Interactive

Visualization

Visualization

Visualization

Visualization

Visualization

Excel Visualization

Data Visualization

Math Visualization

Visualization

3.7 - Color Science and Tools

Color Science and Tools

Color Palette Tools

Color Format Converter

Note on LCH to RGB Conversion

LCH Color Picker

Color Naming

Colorimetry Notes

  • HSV/HSL are cylindrical representation of RGB
  • Problem of RGB: discontinuity of luminance, it is also not based on how the human eye perceive colors. See here or here or example of the effect here and the problem of rainbow color
  • Problem in HSV
  • Another explanation
  • CIELUV Ch (CIE LCh) or Polar Luv is cylindrical representation of CIELUV (and for CIELAB : Polar Lab)
  • HCL is implementation of CIELUV Ch
  • Problem of HCL: HCL tends to specify colors outside of the RGB gamut, which means that some sensible choices of HCL values will generate values outside the (0,0,0)-(1,1,1) RGB cube. More worryingly, the HCL->RGB transformation is discontinuous. Although it lies outside the RGB gamut, clamping the transform to the closest RGB point does not patch the seam in the color space. Example of Clamping
  • HCL to RGB need conversion chain : HCL->LUV->XYZ->RGB
  • Colorspace with HCL, its Python implmentation
  • HSLuv, other implementation of CIELUV Ch which fully maps to RGB. HSLuv is just like LCH except that it stretches the saturated colors for each hue so that any saturation coordinate represents a valid color, unlike LCHs chroma coordinate. The downside is that the colors chroma (colorfulness) can change when you drag the hue slider. HSLuv, is based on CIELCHuv, the cylindrical transformation of CIELUV; the LCH in David Johnstone’s colour picker is CIELCHab, the cylindrical transformation of CIELAB.
  • LCH Color in CSS
  • Colorblind and LCH

Learn Color

Article about Color

Ebook

Color

Colormap

Color Palette

Color

Color

3.8 - Unicode

Unicode

Unicode is an information technology (IT) standard for the consistent encoding, representation, and handling of text expressed in most of the world’s writing systems. Within Unicode encoding, there are subsets called emoji to represent pictorial expression in characters. While Unicode is an important piece of work, it has some kind of messy structure. That’s why we have puny code.

[[emoji]]

Unicode List

Unicode Font

  • Unifont, font for all existing Unicode

Unicode Recognition

Math Unicode Symbol

Unicode Tools

Unicode Art

__̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___ : home  
--------{---(@ : rose  
(♥_♥) : love in my eyes

Text Stylish

Unicode Hack

Punycode

  • Punycoder : make a puny code and beware of phising with it
    • <www.xn–c1yn36f.org>
    • xn–s28h.com
    • <www.xn–pple-43d.com> is not <www.apple.com>
    • xn–n9fjcxob2ae662e.com or xn–9h2hfacrhxbi6a.com is not tokopedia.com
    • xn–tokopdia-g8g.com is not tokopedia.com
    • xn–gmil-63d.com is not gmail.com
    • xn–yhoo-53d.com is not yahoo.com
  • Name.com
  • Mothereff
  • Homoglyph

Unicode Explained

Zalgo Text Generator

Babelcode Unicode Map

Unicode

Unicode Identify by Draw

Unicode Search by Name

3.9 - Google Hacking

Google Hacking

Google hacking, also named Google dorking or Google advanced search, is a hacker technique that uses Google Search and other Google applications to find security holes in the configuration and computer code that websites use. Basics. “Google hacking” involves using advanced operators in the Google search engine to locate specific strings of text within search results.

List of Google Dorking

“search term”

Force an exact-match search. Use this to refine results for ambiguous searches, or to exclude synonyms when searching for single words. Example: “steve jobs”

OR

Search for X or Y. This will return results related to X or Y, or both. Note: The pipe (|) operator can also be used in place of “OR.” Examples: jobs OR gates / jobs | gates

AND

Search for X and Y. This will return only results related to both X and Y. Note: It doesn’t really make much difference for regular searches, as Google defaults to “AND” anyway. But it’s very useful when paired with other operators. Example: jobs AND gates

-

Exclude a term or phrase. In our example, any pages returned will be related to jobs but not Apple (the company). Example: jobs ‑apple

*

Acts as a wildcard and will match any word or phrase. Example: steve * apple

( )

Group multiple terms or search operators to control how the search is executed. Example: (ipad OR iphone) apple

$

Search for prices. Also works for Euro (€), but not GBP (£) 🙁 Example: ipad $329

define:

A dictionary built into Google, basically. This will display the meaning of a word in a card-like result in the SERPs. Example: define:entrepreneur

cache:

Returns the most recent cached version of a web page (providing the page is indexed, of course). Example: cache:apple.com

filetype:

Restrict results to those of a certain filetype. E.g., PDF, DOCX, TXT, PPT, etc. Note: The “ext:” operator can also be used—the results are identical. Example: apple filetype:pdf / apple ext:pdf

site:

Limit results to those from a specific website. Example: site:apple.com

Find sites related to a given domain. Example: related:apple.com

intitle:

Find pages with a certain word (or words) in the title. In our example, any results containing the word “apple” in the title tag will be returned. Example: intitle:apple

allintitle:

Similar to “intitle,” but only results containing all of the specified words in the title tag will be returned. Example: allintitle:apple iphone

inurl:

Find pages with a certain word (or words) in the URL. For this example, any results containing the word “apple” in the URL will be returned. Example: inurl:apple

allinurl:

Similar to “inurl,” but only results containing all of the specified words in the URL will be returned. Example: allinurl:apple iphone

intext:

Find pages containing a certain word (or words) somewhere in the content. For this example, any results containing the word “apple” in the page content will be returned. Example: intext:apple

allintext:

Similar to “intext,” but only results containing all of the specified words somewhere on the page will be returned. Example: allintext:apple iphone

AROUND(X)

Proximity search. Find pages containing two words or phrases within X words of each other. For this example, the words “apple” and “iphone” must be present in the content and no further than four words apart. Example: apple AROUND(4) iphone

weather:

Find the weather for a specific location. This is displayed in a weather snippet, but it also returns results from other “weather” websites. Example: weather:san francisco

stocks:

See stock information (i.e., price, etc.) for a specific ticker. Example: stocks:aapl

map:

Force Google to show map results for a locational search. Example: map:silicon valley

movie:

Find information about a specific movie. Also finds movie show times if the movie is currently showing near you. Example: movie:steve jobs

in

Convert one unit to another. Works with currencies, weights, temperatures, etc. Example: $329 in GBP

source:

Find news results from a certain source in Google News. Example: apple source:the_verge

_

Not exactly a search operator, but acts as a wildcard for Google Autocomplete. Example: apple CEO _ jobs

3.12 - Awesome Free Stuffs from Internet

Awesome Free Stuffs from Internet

Awesome Free Services

Free Applications

  • Nimbletext
  • Lightworks - Video Editor
  • Shotcut - Video Editor
  • Audacity -A powerful audio editor, ideal for music and podcasts.
  • Autodesk Fusion 360 -CAD/CAM software.
  • Bit Warden -Open-source password management service.
  • Blender - Free and open source 3D creation suite.
  • Dark Table - Open-source photography workflow application and raw developer.
  • Dashlane -Cross-platform subscription-based password manager and digital wallet application.
  • DaVinci Resolve -Color correction and non-linear video editing application.
  • GIMP -A powerful open source photo and image editing tool.
  • Greenshot -A free screenshot tool optimized for productivity.
  • Hitfilm-Express -Video editing software with professional-grade VFX tools.
  • Inkscape - Free and open-source vector graphics editor.
  • Krita -Free and open-source raster graphics editor designed primarily for digital painting and 2D animation.
  • Open Broadcaster Software - open source software for video recording and live streaming.
  • LibreOffice -Open-source office suite.
  • LMMS -a digital audio workstation application program.
  • MagicaVoxel -A free lightweight GPU-based voxel art editor and interactive path tracing renderer.
  • MediBang Paint Pro -FREE digital painting and comic creation software.
  • Ocenaudio - Easy, fast, and powerful audio editor.
  • Photopea -Web-based raster and vector graphics editor.
  • Pixlr - Feature-packed online photo editor.
  • Pro-tools -A digital audio workstation.
  • QGIS -open-source cross-platform desktop geographic information system application
  • Reaper -Digital audio workstation and MIDI sequencer software
  • ShareX -Screen capture, file sharing and productivity tool.
  • Shotcut -A slick open source program for advanced video editing.
  • Switch -Convert and encode sound files quickly.
  • Unity -cross-platform game engine.
  • Unreal Engine -the most open and advanced real-time 3D creation tool.
  • VS Code -free source-code editor.
  • Wavepad -Audio and music editor for Windows and Mac.
  • Wcostream - anime and animated TV-show/movie site with dubs and subs.

Free Learning Materials

  • Codecademy - free sessions and exercises for any coding language.
  • FreeCodeCamp - Learn to code at home.
  • Khan Academy -non-profit educational organization.
  • Learn with Google - Courses and certifications from Google.
  • Learn with Microsoft on Edx (Free) - Courses from Microsoft.
  • MIT courses -MIT’s OpenCourseware.
  • Octave -software featuring a high-level programming language, primarily intended for numerical computations. Basically free MATLAB Alternative
  • Rprogramming language -free software environment for statistical computing and graphics
  • W3Schools - The world’s largest Web Development learning site.

3.14 - Awesome

Awesome

3.16 - Linux Resources

Linux Resources

Linux

Basic Linux

Note that these suggestions are off the top of my head and surely biased by my own needs.

  1. bash shell basics
    1. Navigating the shell.
    2. Using one of the common editors, such as vim, emacs, or nano. My personal favorite is vim, but that’s probably because I’ve been using it (or its predecessor, vi) longer than most redditors have been alive.
    3. Listing (ls) and deleting (rm) files.
    4. Changing file permissions (chmod).
  2. Using the find command.
  3. Using basic Linux tools in pipelines, such as tr, wc, basename, dirname, etc.
  4. Using awk/gawk. This tool is so incredibly powerful. I use it almost daily.
  5. Using apt. Note that apt-get is the older package manager, and although it’s largely compatible with apt, there are some differences.
  6. Programming
    1. Learn the basics of bash shell programming, including conditional statements, looping structures, variables, etc.
    2. Definitely learn python, with a focus on python3.
    3. php: see Web Dev below.
    4. Learning C and/or C++ are desirable too, but you don’t need this skill immediately. However, knowing these languages will give you better knowledge for compiling packages and eventually writing your own.
  7. Web servers
    1. You won’t go wrong with apache2, but these days, I’m using nginx more often.
    2. Installing SSL/TLS certs.
  8. Networking
    1. Using iptables to configure firewall rules.
    2. Using ip route to configure routes.

3.17 - Open Source Resources

Open Source Resources

Open Source Culture

4 - Book

Book

4.2 - Javascripts Books, Tutorials, and Courses

Javascripts Books, Tutorials, and Courses

Javascript Books

Javascript Course

Javascript Learning Resources

4.3 - Computer Graphics Books, Tutorials, and Courses

Computer Graphics Books, Tutorials, and Courses

Computer Graphics Books

4.4 - Statistics Books, Tutorials, and Courses

Statistics Books, Tutorials, and Courses

eBook

4.5 - Numerical Computing Resources

Numerical Computing Resources

List Numerical Computing Software

  • MATLAB
  • Octave
  • SageMath : open-source mathematics software system, builds on top of : NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more and using Python-based language or directly via interfaces or wrappers
  • Julia

Octave-based Course

Julia-based Course

Julia-based Books

Web-based Control Simulation

4.6 - E-book Search Engine Tools

E-book Search Engine Tools

E-book search engine (archive.org, openlibrary)

[[libgen]]
[[z-lib]]

Technical standard search engine

Alternative

4.8 - Libgen - Book Search Engine

Libgen - Book Search Engine

Libgen Working Links

Awesome Libgen

published in Mataroa and Bearblog

4.9 - z-lib - Book Search Engine

z-lib - Book Search Engine

Z-lib portal https://singlelogin.me/

published in Mataroa and Bearblog

z-lib in IPFS

4.10 - Open Glossary

Open Glossary

Tools

4.11 - Deep Learning Books, Tutorials, and Courses

Deep Learning Books, Tutorials, and Courses

Free Course in Deep Learning

Open Licensed Deep Learning Books and Tutorials

CC-BY-NC Deep Learning Books and Tutorials

Free Deep Learning Books and Tutorials

List of Deep Learning Books

Deep Learning Tutorial

Visualization

eBook

Machine Learning

Machine Learning Course

Learning NN

Machine Learning

Deep Learning References

Books

Courses

Guides to deep learning

Tutorials, blogs, demos

Deep Learning

Machine Learning: Blog

4.12 - Interactive Books

Interactive Books

Related links:
🔗 Awesome List of Data Visualization
🔗 Awesome List of Machine Learning Visualization
🔗 Awesome List of Interactive and Explorable Webs
🔗 Interactive Books

Interactive Books

Interactive Books

Interactive Books

Look Also

4.14 - Free and Open Books

Free and Open Books

CC0 Licensed Books

MIT Licensed Books

BSD Licensed Books

CC-BY Licensed Books

CC-BY-NC Licensed Books

CC-BY-NC-ND Licensed Books

Others

Open Course

Free eBook 2020

Free eBook 2021

eBook

Networking eBook

Control eBook

Tech Book for Kids

2021 eBook

CS eBooks

2022 eBook

4.15 - Math Books, Tutorials, and Courses

Math Books, Tutorials, and Courses

Free

GPL/GFDL

CC-BY

Open Math Coursenote

List of Free Math Book

4.16 - Awesome Open Source Documents

Awesome Open Source Documents

This is not a list of free programming books. This is a curated list of open source or open source licensed documents, guides, books which can read, use, modify, translate, redistribute and even rewrite under their license.

Document Template

[TITLE][repository-url] by AUTHOR ([SITE][site-url], LICENSE) - SHORT DESCRIPTION

Table of Contents

Subjects

Computer Science

  • Crypto 101 (Site, cc-nc) - the introductory book on cryptography
  • The little book about OS development (Site, cc-nc-sa) - This is the source code for the book “The little book about OS development”
  • How to Design Programs (Site, cc-nc-nd)
  • Structure and Interpretation of Computer Programs (Site, cc-sa)
  • Programming Languages: Application and Interpretation (Site, cc-nc-sa)
  • Practical Foundations for Programming Languages (Site, cc-nc-nd)
  • Open Data Structures (Site, cc) - To provide a high-quality open content data structures textbook that is both mathematically rigorous and provides complete implementation
  • Algorithms, Etc. (Site, cc-nc-sa) - This page contains lecture notes and other course materials for various algorithms classes Jeff Erickson have taught at the University of Illinois, Urbana-Champaign.
  • Introduction to Theory of Computation (Site, cc-sa) - This is a free textbook for an undergraduate course on the Theory of Computation, which we have been teaching at Carleton University since 2002
  • Discrete Structures for Computer Science: Counting, Recursion, and Probability (Site, cc-nc-sa) - This is a free textbook for an undergraduate course on Discrete Structures for Computer Science, which I have been teaching at Carleton University since 2013
  • graphbook (GNU-FDL) - A GNU-FDL book on algorithmic graph theory by David Joyner, Minh Van Nguyen, and David Phillips. This is an introductory book on algorithmic graph theory
  • Operating Systems and Middleware: Supporting Controlled Interaction (Site cc-sa) - free, modifiable textbook on operating systems principles
  • Programming on Parallel Machines (Site, cc-nd) - The purpose of this book is to help you program shared-memory parallel machines without risking your sanity
  • Is Parallel Programming Hard, And, If So, What Can You Do About It? (Site, cc-sa) - The purpose of this book is to teach new programmers and scientists about the basics of High Performance Computing
  • High Performance Computing (Site, cc)
  • Natural Language Processing for the Working Programmer (Site, cc) - We will go into many of the techniques that so-called computational linguists use to analyze the structure of human language, and transform it into a form that computers work with
  • Fundamentals of Programming: With Object Oriented Programming (Site, cc-nc-sa) - This book presents a balanced and flexible approach to the incorporation of object-oriented principles in introductory courses using Python
  • Introduction to Computing (Site, cc-nc-sa) - This book introduces the most important ideas in computing using the Scheme and Python programming languages. It focuses on how to describe information processes by defining procedures, how to analyze the costs required to carry out a procedure, and the fundamental limits of what can and cannot be computed mechanically
  • Computer Science from the Bottom Up (Site, cc-sa) - Computer Science from the Bottom Up—A free, online book designed to teach computer science from the bottom end up. Topics covered include binary and binary logic, operating systems internals, toolchain fundamentals and system library fundamentals
  • Problem Solving with Algorithms and Data Structures (Site, cc-nc-sa) - Examples and work from Problem Solving with Algorithms and Data Structures Using Python
  • Data Compression Explained (Site, custom liscense) - This book is for the reader who wants to understand how data compression works, or who wants to write data compression software.

Data Science and Statistics

  • LearnDataScience (BSD) - Open Content for self-directed learning in data science
  • Think Stats (Site, cc-sa) - Probability and Statistics for Programmers
  • A Brief Introduction to Neural Networks (Site, cc-nc-nd)
  • Data Mining for the Masses (PDF, cc)
  • Bayesian Methods for Hackers (Site, MIT) - An intro to Bayesian methods and probabilistic programming from a computation/understanding-first, mathematics-second point of view
  • Journal of Statistical Software (Site, cc-by)
  • The Book Of Jupyter (Site, cc) - This is some of the material that covers the advanced Jupyter/IPython SciPy tutorial that is/was/will be given in July 2015

Devops

Mathematics & Physics

Open Source

Programming

  • 500 Lines or Less (cc & mit) - This is the source for the book 500 Lines or Less, the fourth in the Architecture of Open Source Applications series.
  • Guides (cc) - Guides for getting things done, programming well, and programming in style.
  • An App Launch Guide (Site, Public Domain) - This guide goes through all of the necessary steps for validating, building, marketing, and launching your product, specifically focused on app dev.
  • Reverse Engineering for Beginners (Site, cc-nc-nd) - Topics discussed: x86/x64, ARM/ARM64, MIPS, Java/JVM.
  • Build Podcast (Site, Public Domain) - Build Podcast is a show about technology tools for design and development all in the fun spirit of hacking, creating and building stuff!
  • Mozilla Developer Network (Site, cc-by-sa) - Shared knowledge for the Open Web
  • The Little Introduction To Programming (Site, cc-nc) - This book will teach you the fundamentals of programming and act as a foundation for whatever your programming goals may be.
  • The Programming Historian (Site, cc) - The Programming Historian is an online, open-access, peer-reviewed suite of tutorials that help humanists learn a wide range of digital tools, techniques, and workflows to facilitate their research.
  • WHAT IS CODE? (Site, cc-nc-nd) - Paul Ford’s “What Is Code?”

Database

World Wide Web

  • https API Design Guide (cc) - https API design guide extracted from work on the Heroku Platform API
  • Dive Into HTML5 (Site, cc) - Dive Into HTML5 elaborates on a hand-picked selection of features from the HTML5 specification and other fine standards
  • Web Fundamentals (Site, Apache 2.0) - Best practices for modern web development
  • Code Guide (Site, MIT) - Standards for flexible, durable, and sustainable HTML and CSS
  • HTML Best Practices (cc0) - For writing maintainable and scalable HTML documents
  • WebComponents.org (Site, cc-sa) - A place to discuss and evolve Web Component best-practices
  • How to lose weight (in the browser) (Site, cc-sa, MIT) - The definitive front-end performance guide
  • North (Site, MIT) - MIT Design and development standards to align and guide your project.
  • RESTful Web APIs (Site, cc-nc-nd) - Restful Web APIs was the first book-length treatment of RESTful design, and the predecessor to RESTful Web APIs.
  • DOM Enlightenment (Site, cc-nc-nd) - Exploring the relationship between JavaScript and the modern HTML DOM
  • http2 explained (Site, cc-nc-nd) - http2 explained is a detailed document explaining and documenting https/2, the successor to the widely popular https/1.1 protocol

Writings and Documentation

  • Write the Doc (Site, cc) - A place for Sphinx documentation and general writing of things.
  • The Hitchhiker’s Guide to Documentation! (Site, cc-nc-sa) - This Guide exists to provide advices and a best-practice handbook about creating documentation
  • CommonMark Spec (Site, cc-sa) - CommonMark is a rationalized version of Markdown syntax, with a spec and BSD-licensed reference implementations in C and JavaScript.
  • reStructuredText Markup Specification (Site, Public Domain)
  • Prose for Programmers (cc-nc-nd) - A book to help software developers write better prose

Journalism and Visualization

  • Data Journalism Handbook (cc-sa) - The Data Journalism Handbook is a free, open source reference book for anyone interested in the emerging field of data journalism
  • Intro to D3.js (Site, Apache 2.0) - The tutorial provides a quick intro to D3.js, a Javascript library for creating data visualizations in the browser.
  • The Nature of Code (Site, cc-nc, LGPL) - This book focuses on the programming strategies and techniques behind computer simulations of natural systems using Processing
  • Data Science 45-min Intros (Public Domain) - Ipython notebook presentations for getting starting with basic programming, statistics and machine learning techniques
  • Data + Design (Site, cc-nc-sa) - A Simple Introduction to Preparing and Visualizing Information
  • D3 101 Screencasts (Site, MIT) - Curran Kelleher’s D3.js screencasts
  • Thematic Cartography Guide (Site, cc-nc) - A short, friendly guide to basic principles of thematic mapping.

Android Development

IOS Development

ETC

<a name=programming_languages’>

Programming Languages

C

  • C Style (cc-sa) - My favorite C programming practices

Cofeescript

CSS

  • Bootstrap (Site, cc) - Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web.
  • idiomatic CSS (cc) - Principles of writing consistent
  • Font Awesome (Site, cc) - The iconic font and CSS toolkit

Fortran

  • Introduction to Programming using Fortran 95 (Site, cc-nc-sa) - This text provides an introduction to programming and problem solving using the Fortran 95 programming language.

Ruby

Clojure

  • ClojureDocs (Site, Eclipse Public License) - community-powered documentation and examples repository for the Clojure programming language
  • Clojure Documentation (Site, cc) - community-driven documentation site for the Clojure programming language

Elixir

Forth

  • Thinking Forth Project Thinking Forth Project (PDF, cc-nc-sa)

Erlang

Go

Haskell

  • Learn You a Haskell for Great Good! (Site, cc-nc-sa) - Learn You a Haskell for Great Good! is a hilarious, illustrated guide to this complex functional language
  • How to learn Haskell (cc0) - This is a recommended path for learning Haskell based on experience helping others
  • Haskell By Example (Site, cc) - Haskell by Example is a port of Go by Example to Haskell

Javascript

  • Learning JavaScript Design Patterns (Site, cc-nc-nd) - In this book we will explore applying both classical and modern design patterns to the JavaScript programming language
  • JavaScript-Garden (Site, MIT) - A collection of documentation about the most quirky parts of the JavaScript language
  • ECMAScript 6 Features (MIT) - ECMAScript 6, also known as ECMAScript 2015, is the latest version of the ECMAScript standard
  • React Primer Draft (GNU) - A primer for building Single-Page Applications with React
  • Angular Style Guide (MIT) - Angular Style Guide: A starting point for Angular development teams to provide consistency through good practices
  • JavaScript : The Right Way (Site, cc-nc-sa) - This is a guide intended to introduce new developers to JavaScript and help experienced developers learn more about its best practices
  • Idiomatic JavaScript (cc) - Principles of Writing Consistent, Idiomatic JavaScript
  • Angular Test Patterns (MIT) - A High-Quality Guide for Testing Angular 1.x Applications
  • Airbnb JavaScript Style Guide (MIT) - A mostly reasonable approach to JavaScript
  • JavaScript Garden (Site, MIT) - A collection of documentation about the most quirky parts of the JavaScript language
  • Node.js Style Guide (cc-sa) - A guide for styling your node.js / JavaScript code. Fork & adjust to your taste
  • Node.js Best Practices (Site, MIT) - This is a list of best practices for writing robust Node.js code. It is inspired by other guilds such as Felix Geisendörfer’s Node Style Guide and what is popular within the community
  • function qualityGuide () { (MIT) - This style guide aims to provide the ground rules for an application’s JavaScript code, such that it’s highly readable and consistent across different developers on a team
  • The Node Beginner Book (Site, cc-nc-sa) - The Node Beginner Book is a comprehensive introduction to Node.js and some of the more advanced JavaScript topics like functional programming
  • Learn You The Node.js For Much Win! (MIT) - Learn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.
  • Understanding ECMAScript 6 (Site, cc-nc-nd) - ECMAScript 6 is coming, are you ready? There’s a lot of new concepts to learn and understand. Get a headstart with this book!
  • An introduction to Node.js (cc-sa) - a short introduction to node.js
  • stream-handbook (cc) - how to write node programs with streams
  • You Don’t Know JS (Site, cc-nc-nd) - A book series on JavaScript. @YDKJS on twitter.
  • CasperJS (Site, MIT) - Documentation for CasperJS
  • Ember.js Guide (Site, MIT) - Official Guide for Ember.js
  • React Document (Site, cc) - Documentation for React
  • Flux Application Architecture (Site, cc) - Documenatiton for Flux application architecture
  • Redux Document (Site, MIT) - Documentation for Redux

Lisp

  • DIY Lisp (BSD) - A hands-on, test driven guide to implementing a simple programming language
  • Build Your Own Lisp (Site, cc-nc-sa) - Learn C and build your own programming language in under 1000 lines of code!

Objective-C

Ocaml

  • Real World OCaml (Site, cc-nc-nd) - Real World OCaml is aimed at programmers who have some experience with conventional programming languages, but not specifically with statically typed functional programming

PHP

  • PHP: The Right Way (Site, by-nc-sa) - An easy-to-read, quick reference for PHP best practices, accepted coding standards, and links to authoritative tutorials around the Web

Python

  • Python Enhancement Proposals (Site, Open Publication License)
  • The Hitchhiker’s Guide to Python! (Site, cc-nc-sa) - Python best practices guidebook, written for Humans.
  • Django Documentation (Site, bsd) - Documenatiton for Django which is python web framework
  • Dive Into Python 3 (Site, cc-sa) - Dive Into Python is a free Python book for experienced programmers
  • Explore Flask (Site, Public Domain) - Explore Flask is a book about best practices and patterns for developing web applications with Flask
  • Full Stack Python (Site, MIT) - Full Stack Python source with Pelican, Bootstrap and Markdown
  • A Byte of Python (Site, cc-sa) - “A Byte of Python” is a free book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience
  • Learning to Program Using Python (Site, cc-sa)
  • A guide to Python’s magic methods (Site, cc-nc-sa) - This guide is the culmination of a few months’ worth of blog posts. The subject is magic methods
  • Think Python (Site, cc-nc) - How to Think Like a Computer Scientist
  • Google’s Python Class (Site, cc) - this is a free class for people with a little bit of programming experience who want to learn Python

Rust

R

  • Introduction to R (Site, cc-nc-sa & apache 2.0) - These are notes for an introductory R workshop I am teaching for Python Programmers
  • Cookbook for R (Site, cc-sa) - The goal of the cookbook is to provide solutions to common tasks and problems in analyzing data

Racket

  • Racket Documentation (Site, LGPL) - Documentation for Racket

Scala

Smalltalk

  • Deep into Pharo (Site, cc-sa) - Deep into Pharo is the second volume of a series of books covering Pharo
  • Pharo by example (Site, cc-sa) - Pharo by Example, intended for both students and developers, will guide you gently through the Pharo language and environment by means of a series of examples and exercises
  • Dynamic Web Development with Seaside (Site, cc-nc-sa) - Dynamic Web Development with Seaside, intended for developers, will present the core of Seaside as well as advanced features such as Web 2.0 support and deployment
  • Squeak by Example (Site, cc-sa) - Squeak by Example, intended for both students and developers, will guide you gently through the Squeak language and environment by means of a series of examples and exercises

Tools

Server

Editor

  • GNU Emacs manual (Site, GNU-FDL) - Emacs is the extensible, customizable, self-documenting real-time display editor. This manual describes how to edit with Emacs and some of the ways to customize it
  • GNU Emacs Lisp Reference Manual (Site, GNU-FDL) - Documentation for Emacs Lisp
  • Emacs is sexy! (Site, GNU) - Simple website to share the love for Emacs
  • Learn Vimscript the Hard Way (Site, custom license) - Learn Vimscript the Hard Way is a book for users of the Vim editor who want to learn how to customize Vim
  • The Emacs Lisp Style Guide (cc) - This Emacs Lisp style guide recommends best practices so that real-world Emacs Lisp programmers can write code that can be maintained by other real-world Emacs Lisp programmers
  • A Byte of Vim (Site, cc-sa) - “A Byte of Vim” is a book which aims to help you to learn how to use the Vim editor (version 7), even if all you know is how to use the computer keyboard

Git

  • Pro Git (Site, cc-nc-sa) - An open source book on Git by Scott Chacon and Ben Straub
  • A Git Style Guide (cc) - This is a Git Style Guide inspired by How to Get Your Change Into the Linux Kernel, the git man pages and various practices popular among the community.
  • Github Cheatsheet (MIT) - A list of cool features of Git and GitHub
  • Git Magic (Site, GPL) - A guide to using Git
  • Git it (Site, BSD) - A workshopper for learning Git and GitHub.

etc.

  • Gibber User Manual (Site, cc) - Gibber is a creative coding environment that runs in the browser. This book explains why Gibber was created, what its features are and how to use it
  • Upstart Intro, Cookbook and Best Practises (Site, cc-sa)

Library Documentation

Other Languages

Korean

  • 점프 투 파이썬 (Site, cc-nc-nd) - 이 책은 파이썬이란 언어를 처음 접해보는 독자들과 프로그래밍을 한 번도 해 본적이 없는 사람들을 대상으로 한다. 프로그래밍을 할 때 사용되는 전문적인 용어들을 알기 쉽게 풀어서 쓰려고 노력하였으며, 파이썬이란 언어의 개별적인 특성만을 강조하지 않고 프로그래밍 전반에 관한 사항을 파이썬이란 언어를 통해 알 수 있도록 알기 쉽게 설명하였다.
  • emacsbook (cc-nc)
  • 꾸준히, 자유롭게, 즐겁게 : 한국 오픈 소스 개발자들 이야기 (Site, cc-nc-nd)

Chinese

Japanese

Another Documents List / References

  • Beautiful Docs - Pointers to useful, well-written, and otherwise beautiful documentation
  • Papers We Love - Papers from the computer science community to read and discuss
  • Awesome Awesomeness - A curated list of amazingly awesome awesomeness
  • Awesome - A curated list of awesome lists
  • Readings in Databases - A list of papers essential to understanding databases and building new data systems
  • Python Reference - Useful functions, tutorials, and other Python-related things
  • Guides - Design and development guides
  • List of Free Learning Resources - Freely available programming books
  • Gitbook - A modern publishing toolchain. Simply taking you from ideas to finished, polished books
  • O’Reilly Open Books - O’Reilly has published a number of Open Books–books with various forms of “open” copyright–over the years. The reasons for “opening” copyright, as well as the specific license agreements under which they are opened, are as varied as our authors
  • OnlineProgrammingBooks.com - This site lists free eBooks and online books related to programming, computer science, software engineering, web design, mobile app development, networking, databases, information technology, AI, graphics and computer hardware which are provided by publishers or authors on their websites legally
  • Free Software Foundation - books/documentation
  • Green Tea Press - Free books by Allen Downey
  • Wikipedia books(community books)
  • Python Books - PythonBooks is a showcase of the best free ebooks about Python
  • JSbooks - The best free JavaScript resources

License

CC0

4.17 - Free and Open Electrical Engineering Books

Free and Open Electrical Engineering Books

Lists:

4.18 - Pretext Book

Pretext Book

Pretext Markup

  • Pretext
  • XML vocabulary for authors of research articles, textbooks, and monographs.
  • Like: DocBook + LaTeX + HTML.
  • Output: print, PDF, web, EPUB, Jupyter Notebooks
  • Also called “MathBook XML”
  • Example books and its gallery with Pretext
  • Possibly open book written in Pretext also this

Book with Pretext

GFDL Licensed

CC-BY License

CC-BY-NC License

Other License

4.19 - Image Processing Book and Tutorial

Image Processing Book and Tutorial

  1. Introduction to Graphics File Format License:CC

4.20 - Data Science Books, Tutorials, and Courses

Data Science Books, Tutorials, and Courses

Data Science Tutorials

Data Science Books

CC-BY Data Science Books

CC-BY-NC Data Science Books

CC-BY-ND Data Science Books

Free Data Science Books

List of Data Science Books

4.21 - Python Resources

Python Resources

Awesome Lists of Python

Python Online IDE

Python Interactive Learning

  • Kikodo Online python learning

Python Sympy

Python Interactive Learning

Python Library

4.22 - Free and Open Books Repository and Provider

Free and Open Books Repository and Provider

Repository of Open Books

Repository of Free Books

And some git repositories :

  1. https://github.com/EbookFoundation/free-programming-books
  2. https://github.com/ab-anand/programming-books

CC-BY Books Provider

CC-BY-NC Books Provider

List of Open Book

Free eBook

4.23 - Machine Learning Books and Tutorials

Machine Learning Books and Tutorials

Machine Learning Tutorials

Open Licensed Machine Learning Tutorials

Free Machine Learning Tutorials

Machine Learning Certification at Google

Machine Learning Books

CC-BY Machine Learning Books

CC-BY-NC Machine Learning Books

CC-BY-NC-ND Machine Learning Books

Free Machine Learning Books

Proprietary Machine Learning Books

List of Machine Learning Books

Machine Learning Notes

Machine Learning Seminar

About ML Books

If you’re strong in software engineering, I recommend Machine Learning Mastery with Python by Jason Brownlee as it’s very hands-on in Python and helps you run code to “see” how ML works.

If you’re weak in software engineering and Python, I recommend A Whirlwind Tour Of Python by Jake VanderPlas, and its companion book Python Data Science Handbook.

If you’re strong in architecting / product management, I recommend Building Machine Learning Powered Applications by Emmanuel Ameisen since it explains it more from an SDLC perspective, including things like scoping, design, development, testing, general software engineering best practices, collaboration, etc.

If you’re weak in architecting / product management, I typically recommend User Story Mapping by Jeff Patton and Making Things Happen by Scott Berkun, which are both excellent how-tos with great examples to build on.

If you’re strong in math, I recommend Understanding Machine Learning from Theory to Algorithm by Shalev-Shwartz and Ben-David, as it has all the mathematics for ML and actually has some pseudocode for implementation which helps bridge the gap into actual software development (the book’s title is very accurate!)

For someone who is weak in the math of ML, I recommend Introduction to Statistical Learning by Hastie et al (along with the Python port of the code https://github.com/emredjan/ISL-python ) which I think does just enough hand holding to move someone from “did high school math 20 years ago” to “I understand what these hyperparameters are optimizing for.”

Transformers

Machine Learning Tutorial

Learn Deep Learning

Machine Learning

Machine Learning

4.24 - Python Books, Tutorials, and Courses

Python Books, Tutorials, and Courses

Python Tutorials

Open Licensed Python Tutorials

Python Tutorials

Python Books

CC-BY Python Books

CC-BY-NC Python Books

CC-BY-NC-ND Python Books

Unknown License Python Books

List of Python Books

Python Documentation and Tools

4.26 - Ebook Reader

Ebook Reader

Web-based Ebook Reader

5 - Catatan

Catatan

5.1 - Bandung - Purwokerto

Bandung Purwokerto

Jarak

  • Estimasi: Purbalingga - Bandung 279 km, 7 jam 45 menit perjalanan
  • Rute: 6 hr 53 min (356 km), via Jl. Tol Cikopo - Palimanan
  • Rute: 7 hr 48 min (279 km), via Jl. Nasional III

Travel Bandung Purwokerto

  • Daltrans Travel
    • Armada: Toyota Hiace, Luxio, Elf Long, dan APV Elf
    • Kontak Agen: Bandung (022 – 87308578) (081220023869), Purwokerto (081220023869), Bandung 081220023869
    • Jadwal dari Bandung 17.00 WIB, dari Purwokerto 20.00 WIB
    • Tiket: 180.000
  • Rama Travel
    • Armada: Luxio Captain, Innova
    • Kontak Agen: Yogyakarta (08122352040 / 085863631450 / 087722309547), Bandung (022-7272262 / 081 2235 2040 / 0858 6363 1450 / 0877 2230 9547)
    • Jadwal dari Bandung 17.00-21.00 WIB, dari Purwokerto 17.00-21.00 WIB
    • Tiket: 180.000
  • Xtrans Travel
    • Kontak Agen: Kantor Pusat Bandung (022- 7316262), Kantor Cabang Shuttle Purwokerto (0281 - 635898)
    • Jadwal dari Bandung/Purwokerto 08.00, 14.00, dan 20.00 WIB
  • Pamitran Jaya Travel
    • Armada: Mitsubishi L300, ELF, ELF Long, Toyota Hiace
    • Kontak Agen: Bandung (081394480308 dan 081321116168), Purwokerto HP (081394480308 dan 081321116168) (0281)632473 Bandung (022)7316262 Purwokerto +62281632473
    • Jadwal Purwokerto 08.00 | 14.00 | 20.00
    • Website: Pamitran Jaya Travel – Travel Bandung – Purwokerto
  • Maju Jaya Travel
    • Armada: ELF
    • Kontak Agen: Purwokerto (0281-638444/ 642444 / 633475) Bandung (022)7502024
    • Harga Tiket: 130.000
    • Jadwal Purwokerto/Bandung pukul 08.00, 14.00 dan 20.00 WIB
    • Tarif Harga Tiket : Rp 130.000
    • Armada : Isuzu Elf
  • Hanny Jaya Travel
    • Armada: L300
    • Kontak Agen: Bandung (022-7205347), Purwokerto (0281-7650999) ( 0281 ) 636650 (0281)638444 Bandung (022)7000916
    • Jadwal: Purwokerto/Bandung 08.00, 14.00 dan 20.00 WIB
  • New Rizky Travel Sokaraja
    • Armada: L300
    • Harga Tiket: Rp 130.000
    • Kontak Agen: Purwokerto 085640001777 / 085100696777
    • Jadwal: Purwokerto 19.00
  • Karuna Travel
    • Armada: L300
    • Nomer Telepon / Whatsapp : (022)5400054 / +62281639234
    • Jadwal Bandung 08.00 WIb dan 20.00 WIB.
  • Mitra Travel
    • Armada: Preggio, Travello, Elf
    • Kotak Agen: Purwokerto (0281)641037,
    • Jadwal: Purwokerto 05.00 | 07.00 | 14.00 | 16.00 | 19.00
  • Urban’s Travel
    • Armada: Hiace
    • Tarif: Rp 100.000
    • Kontak Agen: Purwokerto 08122118210 Bandung +628122118221 Purwokerto 08122118210
    • Website: urbanstransport.co.id
    • Jadwal Purwokerto 07.00 | 14.00 | 19.00 WIB
    • Tarif Harga Tiket : Rp 110.000
    • Armada : Toyota Hiace
    • Urban Transport
  • Citra Trans (Purwokerto+Purbalingga)
  • Sanjaya Travel (Purwokerto+Purbalingga)
    • Kontak Agen Purwokerto: 08112784360
    • Armada: Avanza, Luxio, Kijang Innova, Isuzu Elf, Hino Dutro
    • Tarif: 230.000
    • Jadwal Purwokerto 08.00 20.00
    • Website: Travel Purwokerto Bandung Sanjaya Tour
  • Rama Trans
    • Website: RAMATRANS
    • Kontak Agen: 0877-2230-9547 atau 081-214-886-901, Bandung (022)7272262 / 08122352040
    • Tarif Harga Tiket : Rp 180.000
    • Armada : Toyota Kijang Innova, Mitsubishi L300, Daihatsu Luxio
    • Jadwal 17.00 21.00 WIB.
  • Mitra Trans
    • Web: Mitra Trans
    • Kontak Agen: 0811251191
    • Jadwal Purwokerto 19.00

Travel Bandung Purbalingga

Bus

  • Bus Budiman (Bisnis Seat 2-2)
    • Tarif Harga Tiket : Rp 75.000
    • Armada : Business Bus Seat 2-2
    • Nomer Telepon / Whatsapp : 08122329503
    • Jadwal Bandung jam 06.00 – 06.30 – 07.00, sore hari 17.00, malam hari 18.30 – 19.00 WIB
  • Bus Sinar Jaya (Bisnis Seat 2-2)
    • Jadwal
  • Bus Goodwill (Ekonomi Seat 3-2)
    • Tarif Harga Tiket : Rp 70.000
    • Armada : Bus Mercedes Benz Tipe OH1518 – OH1521
    • Nomer Telepon / Whatsapp : 081320507550
    • Jadwal Bandung 06.00 – 07.00 – 08.00 WIB, 17.00 – 18.00 – 20.00 WIB

Rental Motor Bandung

5.2 - Penulisan Naskah Ilmiah Bidang Teknik Elektro

Penulisan Naskah Ilmiah Bidang Teknik Elektro

Panduan penulisan naskah ilmiah di bidang Teknik Elektro.

Link terkait:
🔗 Istilah Baku di Bidang Teknik Elektro
🔗 Penulisan Naskah Ilmiah Bidang Teknik Elektro
🔗 Pedomaan Ejaan Naskah Bidang Teknik Elektro

Pedoman Dasar Penulisan Naskah Ilmiah

  • Awali dengan membaca pedoman penulisan dan patuhi seluruh pedoman. Untuk Teknik Elektro Unsoed, pedoman yang dipakai adalah podoterus.
  • Tulis naskah dengan mengaktifkan fitur pemeriksa ejaan (spell checker) bahasa Indonesia pada pengolah kata anda.
  • Periksa ejaan pada naskah berdasar Pedoman Umum Ejaan Bahasa Indonesia (PUEBI).
  • Periksa kosakata pada naskah dengan tahapan sebagai berikut.
    • Jika istilah yang dimaksud terdapat di KBBI, gunakan istilah dalam KBBI.
    • Jika istilah tersebut tidak ada di KBBI, cari dan gunakan istilah baku berdasarkan dokumen resmi.
    • Jika istilah baku tidak ada di dalam dokumen resmi atau tidak ada pedomannya, buat penyerapan istilahnya yang tepat.
    • Jika tidak ditemukan pula istilah dalam bahasa Indonesia yang menyatakan istilah tersebut, silakan tuliskan dengan istilah asing dan dituliskan secara miring. Cantumkan definisi atau maksud dari istilah asing tersebut dalam daftar istilah atau dalam paragraf.
  • Setiap gambar atau tabel harus dirujuk di dalam paragraf.
  • Cantumkan setiap sitasi (kutipan, rujukan) yang bersumber dari naskah lain. Cara menuliskan sitasi dengan gaya IEEE adalah seperti contoh berikut.
    • “Kalimat ini merupakan sitasi dari naskah [12] dan juga bersumber dari rujukan [13].

Teknologi untuk Penulisan Naskah dalam Bahasa Indonesia

  • Gunakan pengolah kata (word processor) seperti Microsoft Word, Libre Office, atau Google Docs dan maksimalkan semua fitur yang ada. Fitur yang sebaiknya anda kuasai adalah:
    • Style. Aturstyle seperti normal, heading 1, heading 2, heading 3, caption, dll. Atur penomoran otomatis secara bertingkat (multilevel list) pada heading.
    • Penomoran daftar. Atur penomoran secara otomatis khususnya dengan metode multilevel list.
    • Penomoran halaman. Atur penomoran halaman secara otomatis. Gunakan section break untuk mempertahankan urutan penomoran halaman meskipun mengubah format halaman.
    • Judul tabel dan gambar. Gunakan caption (klik kanan, caption ) untuk melabeli dan menomori tabel dan gambar secara otomatis. Jika diperlukan, atur penomoran tabel dan gambar secara bertingkat dengan memasukkan nomor bab.
    • Sitasi. Gunakan fitur sitasi (citations and bibliography) yang tersedia pada pengolah kata untuk memasukkan sitasi, mengolah sitasi, dan mengatur sitasi secara otomatis. Untuk menampilkan daftar pustaka dari sitasi secara otomatis, gunakan menu bibliography. Untuk manajemen sitasi lebih lanjut, perangkat lunak sitasi (seperti Zotero dan Mendeley) dapat digunakan.
    • Daftar isi, daftar tabel, dan daftar gambar. Gunakan fitur table of contents atau table of figures untuk membangkitkan daftar isi, daftar tabel, dan daftar gambar secara otomatis berikut halaman lokasinya.
    • Referensi silang (cross reference). Gunakan fitur referensi silang untuk mengutip judul gambar dan tabel (caption) secara otomatis.
    • Perbaruan sitasi, daftar isi, daftar tabel, daftar gambar dan referensi silang. Secara periodik perbarui seluruh referensi (update, pilih semua, klik kanan, update field) untuk menyesuaikan penambahan referensi, perubahan halaman, atau perubahan nomor.
    • Aktifkan pemeriksa ejaan (spelling checker). Aktifkan fitur pemeriksa ejaan untuk bahasa Indonesia. Mohon diperhatikan bahwa pemeriksa ejaan pada pengolah kata tidak selalu sesuai dengan PUEBI dan KBBI.
    • Find and Replace. Gunakan fitur find and replace untuk secara cepat memperbaiki kesalahan yang sifatnya massal.
  • Periksa ejaan bahasa Indonesia anda berdasarkan Pedoman Umum Ejaan Bahasa Indonesia (PUEBI). Silakan gunakan PUEBI Daring atau PUEBI.pdf. Sebagai pengaya, silakan gunakan pula Wikipedia:Pedoman penulisan tanda baca, Wikipedia:Pedoman gaya/Huruf kapital, Wikipedia:Pedoman gaya/Singkatan dan akronim, Wikipedia:Pedoman gaya/Tanggal dan angka, Wikipedia:Pedoman ejaan dan penulisan kata
  • Periksa kosakata dengan Kamus Besar Bahasa Indonesia (KBBI). Silakan gunakan KBBI Daring - Resmi, KBBI dengan fitur pelengkap, Kateglo dan Wikipedia:Daftar kosakata bahasa Indonesia yang sering salah dieja.
  • Periksa istilah baku pada dokumen yang tersedia, misalnya untuk bidang komputer pada Kiat Pembakuan Peristilahan Perkomputeran Bahasa Indonesia, atau bidang ketenagalistrikan pada bagian Glossary atau SNI Istilah Ketenagalistrikan, atau SPLN 70-1 s.d. SPLN 70-9 tentang Pembakuan Istilah Teknik bidang Ketenagalistrikan.
  • Periksa padanan kata yang tepat dengan menelusuri istilah asingnya pada Wikipedia lalu pada bilah kiri pada menu Languages pilih Bahasa Indonesia untuk mencari padanannya pada bahasa Indonesia.
  • Buat penyerapan istilah asing menjadi bahasa Indonesia dengan pedoman Buku Penyuluhan Tata Istilah, atau Wikipedia:Pedoman penyerapan istilah. Aplikasi penerjemah seperti Google Translate dapat pula dipakai untuk menyerap istilah asing.

Podoterus

Nama Diri di FT Unsoed

  • Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi
  • Universitas Jenderal Soedirman

Maksud Naskah

  • Disusun untuk untuk memenuhi salah satu persyaratan memperoleh gelar Sarjana Teknik pada Program Studi Teknik Elektro, Fakultas Teknik, Universitas Jenderal Soedirman
  • Diajukan untuk memenuhi salah satu persyaratan memperoleh gelar Sarjana Teknik pada Program Studi Teknik Elektro, Fakultas Teknik, Universitas Jenderal Soedirman

Gaya Penulisan

Gaya Menulis Istilah

  • Periksa istilah kosakata pada naskah dengan tahapan sebagai berikut.
    • Jika istilah yang dimaksud terdapat di KBBI, gunakan istilah dalam KBBI.
    • Jika istilah tersebut tidak ada di KBBI, cari dan gunakan istilah baku berdasarkan dokumen resmi.
    • Jika istilah baku tidak ada di dalam dokumen resmi atau tidak ada pedomannya, buat penyerapan istilahnya yang tepat.
    • Jika tidak ditemukan pula istilah dalam bahasa Indonesia yang menyatakan istilah tersebut, silakan tuliskan dengan istilah asing dan dituliskan secara miring.
  • Cantumkan definisi atau maksud dari istilah dalam suatu paragraf atau dalam daftar istilah.
  • Tuliskan definisi/maksud istilah saat istilah tersebut pertama kali dituliskan. Selanjutnya definisi/maksud tersebut tak perlu diulang lagi.

Gaya Menulis Naskah

  • Setiap kalimat harus sempurna (minimal memiliki Subyek dan Predikat).
  • Paragraf terdiri dari beberapa kalimat. Hindari paragraf hanya dengan satu kalimat.
  • Setiap paragraf harus memiliki suatu gagasan utama. Gagasan utama dapat diletakkan di awal (deduktif) atau di akhir (induktif) atau awal dan akhir paragraf.

Gaya Menulis Singkatan

  • Ketika singkatan/akronim sudah diterangkan kepanjangannya pada daftar istilah atau pada paragraf sebelumnya, maka tak perlu diulang kepanjangannya pada paragraf selanjutnya.

Gaya Menulis Gambar/Tabel

  • Gambar/tabel harus dirujuk dalam naskah dan memiliki posisi sedekat mungkin dengan naskah yang merujuknya.
  • Nomobr gambar/tabel berurut sesuai dengan urutan perujukannya dalam naskah.
  • Jika memungkinkan tampilkan gambar/grafik secara berwarna dan jelas dengan resolusi tinggi, jika tidak (hitam putih), pastikan gambar dapat dibedakan dengan jelas dan grafik variabel berbeda memiliki pola yang berbeda.
  • Usahakan gambar/tabel dalam bentuk landscape.
  • Pada grafik, semua sumbu harus memiliki label dan (jika ada) satuan.
  • Pada tabel, semua baris dan kolom membutuhkan judul (header).
  • Setiap gambar/tabel harus memiliki keterangan (caption)

Gaya Menulis Keterangan (Caption) Gambar/Tabel

  • Keterangan bersifat deskriptif dan memberikan informasi tambahan terhadap naskah
  • Ketika menerangkan tabel atau grafik, deskripsikan variabel terkait
  • Keterangan bersifat singkat dan padat
  • Kutip sumber dari gambar/tabel jika ada
  • Keterangan gambar/tabel harus dalam halaman yang sama dengan gambar/tabel-nya
  • Keterangan dapat berupa judul atau kalimat utuh.
  • Tips menulis keterangan adalah seperti ketika kita menceritakan ringkas suatu gambar/tabel pada orang lain

Daftar Persiapan Penulisan Naskah

  • Baca pedoman penulisan.
  • Pelajari fitur perangkat lunak pengolah kata.
  • Siapkan dan atur fitur style khususnya heading, normal, dan caption.

Daftar Pemeriksaan Naskah

  • Periksa penulisan nama dan gelar.
  • Periksa penulisan nama dan singkatan lembaga dan organisasi.
  • Periksa penulisan angka dan satuan.
  • Periksa penulisan huruf kapital dan huruf miring.
  • Periksa penulisan spasi dalam kalimat dan spasi antar baris.
  • Periksa penulisan titik (.) dan koma (,).
  • Periksa penulisan garis miring (/) tanda kurung ((…)) dan kurung siku ([…]).
  • Periksa penulisan kosakata dan kesesuaiannya dengan KBBI, istilah baku, dan padanan kata.
  • Periksa nomor halaman dan penulisan nomor dan judul bab, sub-bab, serta caption gambar, dan tabel.
  • Periksa apakah tabel dan gambar telah dirujuk di dalam naskah (paragraf).
  • Periksa penulisan sitasi dan daftar pustaka.
  • Periksa pembuatan daftar pustaka, daftar gambar, dan daftar tabel.

Naskah Laporan Kerja Praktik

  • Bab 1 : Latar belakang yang mengantarkan kepada judul
    • konteks (seperti: Indonesia, industri, dll.)
    • perusahaan (seperti: profil ringkas, kontribusi, dll.)
    • teknologi (yang menjadi topik laporan kerja praktik)
  • Bab 2 : Tinjauan perusahaan yang mengantarkan kepada deskripsi divisi/bagian lokasi kegiatan kerja praktik
    • tinjauan historis
    • tinjauan manajemen
    • tinjauan produk
    • deskripsi divisi/bagian
  • Bab 3 : Tinjauan pustaka secara generik (tidak spesifik lokasi kegiatan) yang relevan dengan topik laporan
  • Bab 4 : Pembahasan yang mendeskripsikan topik teknologi dan aktivitas kerja praktik
    • pembahasan sistem (dari makro ke mikro)
    • pembahasan teknologi
      • perangkat keras (piranti) (dari makro ke mikro)
      • perangkat lunak (dari back-end ke front-end)
      • metode (prosedur) (dari tahap ke tahap)
    • pembahasan aktivitas
  • Bab 5 : Kesimpulan yang menyimpulkan teknologi dan aktivitas kerja praktik, serta saran penulis untuk perbaikan sistem/teknologi pada perusahaan atau mekanisme kerja praktik

5.3 - Pedomaan Ejaan Naskah Bidang Teknik Elektro

Pedomaan Ejaan Naskah Bidang Teknik Elektro

Pedoman ejaan untuk naskah bidang teknik elektro berdasarkan PUEBI. Pedoman ejaan berikut tidak menyebutkan pedoman ejaan selengkap PUEBI, akan tetapi hanya menyebutkan sebagian yang terkait dengan penulisan naskah bidang teknik elektro. Apa yang disebutkan berikut dituliskan berdasarkan pengalaman membimbing penulisan naskah bidang teknik elektro.

Link terkait:
🔗 Istilah Baku di Bidang Teknik Elektro
🔗 Penulisan Naskah Ilmiah Bidang Teknik Elektro
🔗 Pedomaan Ejaan Naskah Bidang Teknik Elektro

Ringkasan Ejaan Benar dan Salah

Berikut adalah ringkasan ejaan yang benar dan yang salah berdasarkan PUEBI. Sebagai ringkasan, konteks ejaan tidak disampaikan secara lengkap. Untuk memahami pedoman ejaan yang lebih lengkap silakan lanjutkan baca pada sub-bab berikutnya, atau silakan merujuk kepada:

Penulisan Ejaan

  • ✅ 220 volt, ✅ 220 V, ✅ 10 kVA, ❌ 220 Volt
  • ✅ 1.000 meter, ✅ 1.000 m
  • ✅ Direktur PT PLN, ✅ para direktur berkumpul, ❌ para Direktur berkumpul
  • ✅ seluruh mahasiswa Teknik Elektro Unsoed, ❌ seluruh mahasiswa Teknik Elektro berkumpul
  • ✅ Kerja praktik di PLN Semarang, ❌ Kerja praktik di beri uang
  • ✅ Rp1.000, ❌ Rp.1.000, Rp. 1.000, ❌ Rp1000
  • ✅ Rp1.000,00, ❌ Rp.1,000.00, ❌ Rp1,000
  • ✅ S.T., ✅ M.T., ✅ Ph.D., ❌ ST , ❌ M. T, ❌ PhD.
  • alternating current (AC), ✅ direct current (DC)
  • ✅ PT, ✅ KTP, ✅ NIP, ✅ NIM, ❌ P.T. , ❌ PT., ❌ NIP., ❌ N.I.P, ❌ NIP:
  • ✅ SAW (ﷺ), ✅ SWT (ﷻ), ❌ S.A.W, ❌ S.W.T, ❌ SAW., ❌ SWT
  • ✅ PT PLN, ❌ PT. PLN , ❌ P.T. Telkom
  • ✅ Unsoed, ✅ LIPI, ✅ LAPAN, ✅ Bappenas, ✅ radar, ❌ UNSOED , ❌ Lapan, ❌ bappenas, ❌ Iptek, ❌ Lidar, ❌ RADAR
  • ✅ FT Unsoed, ✅ TE Unsoed, ✅ Faperta Unsoed, ❌ F.T. Unsoed
  • Dalam suatu daftar, ✅ I. Pendahuluan, ✅ I.1 Pendahuluan, ❌ I Pendahuluan, ❌ I.1. Pendahuluan
  • Sebagai sebuah judul, ✅ Bab 1 Pendahuluan, ✅ 1.1 Pendahuluan, ❌ Bab 1. Pendahuluan,❌ 1.1. Pendahuluan
  • ✅ Tabel 1, ✅ Gambar 2.2, ❌ Tabel 1., ❌ Gambar 2.3.
  • ✅ pukul 12.30, ✅ selama 12.30 jam, ❌ pukul 12:30, ❌selama 12:30 jam
  • ✅ pada halaman 1230, ✅ sebanyak 1.000 orang, ❌ pada halaman 1.230, ❌sebanyak 1000 orang
  • ✅ Imron Rosyadi, S.T., ❌ Imron Rosyadi S.T. , ❌ Imron Rosyadi ST, ❌ Imron Rosyadi, ST
  • ✅ abad XX, ✅ abad ke-20, ✅ abad kedua puluh, ❌ abad ke-XX, ❌ abad ke 20, ❌ abad ke-dua puluh
  • machine learning (ML), ✅ artificial intelligence (AI), ✅ internet of things (IoT), ✅ convolutional neural network (CNN), ❌ Machine Learning (ML), ❌ Artificial Intelligence (AI), ❌ Internet of Things (IoT), Convolutional Neural Network (CNN)
  • ✅ memiliki surat izin mengemudi (SIM), ✅ memiliki KTP (kartu tanda penduduk), ❌ memiliki Surat Izin Mengemudi (SIM).
  • ✅ Cable News Network (CNN), ✅ Institute of Electrical and Electronics Engineers (IEEE),❌Cable News Network (CNN), ❌ institute of electrical and electronics engineers (IEEE)
  • ✅ sebagaimana referensi [1], ❌ sebagaimana referensi[1]
  • ✅ tentang radar (radio detection and ranging) dan lidar (light detection and ranging), ❌ tentang radar(radio detection and ranging) dan lidar(light detection and ranging)
  • ✅ Tahun 2010—2013, ✅ Tanggal 5—10 April 2013, ✅ Jakarta—Bandung, ❌ Tahun 2010 - 2013, ❌ Tanggal 5- 10 April 2013, ❌ Jakarta - Bandung
  • ✅ D-3, ✅ S-1, ❌ D3, ❌ S1
  • ✅ di-back up, ✅ di-down-sampling, ❌ diback up, ❌ diback up, ❌ didown sampling
  • ✅ Nomor: 7/PK/II/2013, ✅ tahun ajaran 2012/2013, ❌ Nomor: 7 /PK /II /2013, ❌ tahun ajaran 2012 / 2013

Penulisan Pemerian

  • ✅ Komponen pasif pada rangkaian adalah resistor dan kapasitor.
  • ❌ Komponen pasif pada rangkaian adalah: resistor dan kapasitor.
  • ✅ Komponen pasif pada rangkaian ada dua: resistor dan kapasitor.
  • ✅ Komponen pasif pada rangkaian ada dua, yaitu resistor dan kapasitor.
  • ✅ Komponen pasif pada rangkaian adalah
    • resistor; dan
    • kapasitor.
  • ✅ Komponen pasif pada rangkaian adalah
    • resistor, dan
    • kapasitor.
  • ❌ Komponen pasif pada rangkaian adalah:
    • resistor, dan
    • kapasitor.
  • ✅ Komponen pasif pada rangkaian ada dua sebagai berikut.
    • resistor
    • kapasitor
  • ❌ Komponen pasif pada rangkaian sebagai berikut:
    • resistor
    • kapasitor
  • ✅ Komponen pasif pada rangkaian ada dua.
    • Yaitu:
      • resistor
      • kapasitor

Pedomaan Ejaan

Huruf Kapital

  • Huruf kapital dipakai sebagai huruf pertama unsur nama orang.
    • Misalnya:
      • André-Marie Ampère
      • Rudolf Diesel
      • Georg Ohm
    • Tetapi kapital tidak dipakai ketika menjadi nama orang menjadi nama jenis atau satuan ukuran. Misalnya:
      • 5 ampere
      • mesin diesel
      • 10 ohm
    • Huruf kapital dipakai jika satuan ukuran itu disingkat. Misalnya:
      • 5 A
      • 10 V
  • Huruf kapital dipakai sebagai huruf pertama unsur nama gelar kehormatan, akademik, atau jabatan yang diikuti nama orang, atau jabatan suatu institusi.
    • Misalnya:
      • Profesor Suroso
      • Presiden Joko Widodo
      • Presiden Indonesia
      • Direktur IEEE
    • Tetapi tidak dipakai ketika tidak diikuti nama orang. Misalnya:
      • para profesor
      • dua orang direktur
  • Huruf kapital dipakai sebagai huruf pertama nama bangsa, bahasa, bulan, hari, nama geografi, dan nama peristiwa sejarah
    • Misalnya:
      • hari Jumat
      • bangsa Indonesia
      • negara Inggris
      • Perang Dunia II
      • Danau Toba
      • Jalan Sungkono
    • Tetapi tidak kapital ketika menjadi kata turunan atau tidak menjadi kata nama diri. Misalnya:
      • pengindonesiaan
      • kejawa-jawaan
      • jangan sampai terjadi perang dunia
      • jeruk bali
      • gula jawa
  • Huruf pertama setiap kata dalam judul skripsi, judul artikel, nama lembaga, nama organisasi, dan nama dokumen ditulis dengan kapital kecuali kata tugas di, ke, dari, dan, yang, tentang, dan untuk, yang tidak terletak pada posisi awal.
    • Misalnya:
      • Pengenalan Isyarat Tangan Sistem Isyarat Bahasa Indonesia (SIBI) dengan Algoritme YOLO
      • Undang-Undang Dasar Republik Indonesia
      • Universitas Jenderal Soedirman di Purwokerto
  • Huruf kapital dipakai sebagai huruf pertama unsur singkatan nama gelar, pangkat, atau sapaan
    • Misalnya:
      • S.T.
      • M.T.
      • Prof.
      • Dr.

Huruf Miring

  • Huruf miring dipakai untuk menuliskan kata atau ungkapan dalam bahasa daerah atau bahasa asing.
    • Misalnya:
      • Klasifikasi wajah dilakukan dengan algoritme convolutional neural network (CNN) yang merupakan bagian dari algoritme deep learning
      • Merancang alat untuk mendeteksi kematangan buah manggis (Garcinia mangostana).
    • Tetapi nama diri, seperti nama orang, lembaga, atau organisasi, dalam bahasa asing atau bahasa daerah tidak ditulis dengan huruf miring. Misalnya:
      • Lembaga penyiaran Cable News Network (CNN) menyiarkan kegiatan Direktur Institute of Electrical and Electronics Engineers (IEEE) Stephen Welby yang menyampaikan perkembangan teknologi convolutional neural network (CNN).

Huruf Tebal

  • Huruf tebal dapat dipakai untuk menegaskan bagian-bagian karangan, seperti judul buku, bab, atau subbab.
    • Misalnya:
      • Pendahuluan
      • 1.1 Latar Belakang

Kata Berimbuhan

  • Bentuk terikat ditulis serangkai dengan kata yang mengikutinya.
    • Misalnya:
      • infrastruktur
      • inkonvensional
      • multimeter

Gabungan Kata

  • Unsur gabungan kata yang lazim disebut kata majemuk ditulis terpisah.
    • Misalnya:
      • model linear
      • persegi panjang
    • Tetapi jika sudah padu ditulis serangkai. Misalnya:
      • beasiswa
      • radioaktif
      • segitiga
  • Gabungan kata yang penulisannya terpisah tetap ditulis terpisah jika mendapat awalan atau akhiran.
    • Misalnya:
      • melipat ganda
    • Tetapi jika mendapatkan awalan dan akhiran ditulis serangkai. Misalnya:
      • dilipatgandakan

Kata Depan

  • Kata depan, seperti di, ke, dan dari, ditulis terpisah dari kata yang mengikutinya.
    • Misalnya:
      • Melaksanakan kegiatan kerja praktik di PLN Semarang.
    • Tetapi ketika di sebagai awalan, ditulis serangkai. Misalnya:
      • Minyak transformator selalu diperiksa setiap hari.

Singkatan dan Akronim

  • Singkatan nama orang, gelar, sapaan, jabatan, atau pangkat diikuti dengan tanda titik pada setiap unsur singkatan itu.
    • Misalnya:
      • S.T. = Sarjana Teknik
      • M.T. = Magister Teknik
      • Ph.D. = Philosophy Doctor
    • Sehingga penulisan singkatan berikut adalah salah:
      • ST
      • M. Si
      • PhD.
  • Singkatan yang terdiri atas huruf awal setiap kata yang bukan nama diri ditulis dengan huruf kapital tanpa tanda titik.
    • Misalnya:
      • PT = Perseroan Terbatas
      • KTP = Kartu Tanda Penduduk
      • NIP = Nomor Induk Pegawai
      • NIM = Nomor Induk Mahasiswa
      • AI = Artificial Intelligence
    • Sehingga penulisan singkatan berikut adalah salah:
      • P.T. atau PT.
      • NIP. atau N.I.P atau NIP:
    • Tetapi jika bukan nama diri tidak dituliskan dengan kapital di awal katanya. Misalnya:
      • Perseroan terbatas (PT) memiliki modal dari saham-saham.
      • Penelitian tentang artificial intelligence (AI) sekarang semakin populer.
  • Singkatan yang terdiri atas tiga huruf atau lebih (yang bukan huruf awal setiap kata) diikuti dengan tanda titik.
    • Misalnya:
      • sdr. = saudara
      • dll. = dan lain lain
    • Jika di akhir kalimat, cukup menggunakan satu titik.
      • Komponen yang dipakai adalah transistor, resistor, dll.
  • Singkatan yang terdiri atas dua huruf yang lazim dipakai dalam surat-menyurat masing-masing diikuti oleh tanda titik.
    • Misalnya:
      • a.n. = atas nama
      • s.d. = sampai dengan
  • Singkatan yang terdiri atas huruf awal setiap kata nama lembaga, organisasi, dan nama dokumen resmi termasuk yang berasal dari bahasa asing ditulis dengan huruf kapital tanpa tanda titik.
    • Misalnya:
      • IEEE = Institute of Electrical and Electronics Engineers
      • BPPT = Badan Pengkajian dan Penerapan Teknologi
      • FT = Fakultas Teknik
      • UI = Universitas Indonesia
  • Lambang kimia, singkatan satuan ukuran, takaran, timbangan, dan mata uang tidak diikuti tanda titik.
    • Misalnya:
      • Cu = kuprum
      • 5 cm = sentimeter
      • 10 kVA = kilovolt-ampere (VA ditulis dengan kapital karena singkatan dari nama orang)
      • 3 kg = kilogram
      • Rp1.000 (singkatan mata uang dituliskan tanpa titik dan bersambung dengan nilainya)
      • US$100
    • Sehingga penulisan berikut adalah salah:
      • 5 Km
      • Rp. 200.000
  • Akronim nama diri yang terdiri atas huruf awal setiap kata ditulis dengan huruf kapital tanpa tanda titik.
    • Misalnya:
      • LIPI = Lembaga Ilmu Pengetahuan Indonesia
  • Akronim nama diri yang berupa gabungan suku kata atau gabungan huruf dan suku kata dari deret kata ditulis dengan huruf awal kapital.
    • Misalnya:
      • Unsoed = Universitas Jenderal Soedirman
      • Bappenas = Badan Perencanaan Pembangunan Nasional
      • Faperta = Fakultas Pertanian
  • Akronim bukan nama diri yang berupa gabungan huruf awal dan suku kata atau gabungan suku kata ditulis dengan huruf kecil.
    • Misalnya:
      • iptek = ilmu pengetahuan dan teknologi
      • radar = radio detection and ranging

Angka dan Bilangan

  • Bilangan dalam teks yang dapat dinyatakan dengan satu atau dua kata ditulis dengan huruf.
    • Misalnya:
      • Pemeriksaan kabel tegangan tinggi dilakukan tiga kali hingga lima belas kali dalam satu tahun.
    • Kecuali jika dipakai secara berurutan seperti dalam perincian, ditulis dengan angka misalnya:
      • Pegawai di PT Telkom Purwokerto sebanyak 15 orang, meliputi 8 orang laki-laki, dan 7 orang perempuan.
  • Bilangan yang bisa dinyatakan dengan satu atau dua kata pada awal kalimat ditulis dengan huruf.
    • Misalnya:
      • Lima puluh mahasiswa Unsoed mendapat beasiswa dari PT PLN.
    • Sehingga dihindari penulisan seperti berikut
      • 50 mahasiswa Unsoed mendapat beasiswa dari PT PLN.
    • Apabila bilangan pada awal kalimat tidak dapat dinyatakan dengan satu atau dua kata, susunan kalimatnya diubah. Misalnya:
      • PT PLN memberikan beasiswa terhadap 250 orang mahasiswa Unsoed.
  • Angka dipakai untuk menyatakan (a) ukuran panjang, berat, luas, isi, dan waktu serta (b) nilai uang.
    • Misalnya:
      • 0,5 sentimeter
      • 5 kilogram
      • 4 ampere
      • Rp5.000,00
  • Penulisan bilangan tingkat dapat dilakukan dengan cara berikut.
    • Misalnya:
      • abad XX atau abad ke-20 atau abad kedua puluh
      • Perang Dunia II atau Perang Dunia Ke-2 atau Perang Dunia Kedua

Tanda Titik

  • Tanda titik dipakai di belakang angka atau huruf dalam suatu bagan, ikhtisar, atau daftar.
    • Misalnya:
      • I. Pendahuluan
        1. Metode Penelitian
    • Tetapi tanda titik tidak dipakai pada akhir penomoran digital yang lebih dari satu angka. Misalnya:
        1. Pendahuluan
      • 1.1 Latar Belakang
      • 1.2.1 Rumusan Masalah
      • III.A.2.b Langkah Penelitian
    • Tetapi tanda titik tidak dipakai di belakang angka atau angka terakhir dalam penomoran dalam judul tabel, atau gambar. Misalnya:
      • Tabel 1 Nilai Resistansi pada Komponen
      • Gambar 2.2 Diagram Topologi Mesh pada Sistem Internet of Things
      • Bab 1 Pendahuluan
  • Tanda titik dipakai untuk memisahkan angka jam, menit, dan detik yang menunjukkan waktu atau jangka waktu.
    • Misalnya:
      • Proses tersebut berjalan sampai pukul 01.35.20 (pukul 1 lewat 35 menit 20 detik atau pukul 1, 35 menit, 20 detik)
      • Proses tersebut berjalan selama 01.35.20 jam (1 jam, 35 menit, 20 detik)
    • Sehingga penulisan waktu dan jangka waktu berikut adalah salah:
      • Pukul 12:30
  • Tanda titik dipakai untuk memisahkan bilangan ribuan atau kelipatannya yang menunjukkan jumlah.
    • Misalnya:
      • Hambatan pada resistor tersebut adalah sebesar 13.000 ohm
    • Sehingga perlu berhati-hati ketika memindahkan bilangan yang berasal dari bahasa Inggris yang menggunakan koma (,) sebagai pemisah bilangan ribuan atau kelipatannya.
    • Tetapi tanda titik tidak dipakai untuk memisahkan bilangan ribuan atau kelipatannya yang tidak menunjukkan jumlah. Misalnya:
      • Hal ini merujuk kepada Handbook of Electrical Engineering halaman 1305 yang terbit pada tahun 2019.

Tanda Koma

  • Tanda koma dipakai di antara unsur-unsur dalam suatu pemerincian atau pembilangan.
    • Misalnya:
      • Komponen pasif dalam elektronika adalah resistor, kapasitor, dan induktor.
  • Tanda koma dipakai sebelum kata penghubung, seperti tetapi, melainkan, dan sedangkan, dalam kalimat majemuk (setara).
    • Misalnya:
      • Pengujian melalui simulasi pada perangkat lunak berhasil, tetapi pengujian pada perangkat keras gagal.
  • Tanda koma dipakai untuk memisahkan anak kalimat yang mendahului induk kalimatnya.
    • Misalnya:
      • Apabila diperlukan, pengujian dapat dilakukan hingga lima kali.
    • Tetapi tanda koma tidak dipakai jika induk kalimat mendahului anak kalimat. Misalnya:
      • Pengujian dapat dilakukan hingga lima kali apabila diperlukan.
  • Tanda koma dipakai di belakang kata atau ungkapan penghubung antarkalimat, seperti oleh karena itu, jadi, dengan demikian, sehubungan dengan itu, dan meskipun demikian.
    • Misalnya:
      • Pengujian yang kami lakukan dengan teknik tersebut gagal. Oleh karena itu, kami mencoba menggunakan teknik yang lain.
  • Tanda koma dipakai di antara nama orang dan singkatan gelar akademis yang mengikutinya.
    • Misalnya:
      • Eko Murdyantoro, M.A. menyandang gelar Master of Art dari UGM.
    • Tetapi tidak dipakai untuk singkatan nama diri, keluarga, atau marga.
      • Eko Murdyantoro M.A. memiliki nama lengkap Eko Murdyantoro Mangku Atmojo.
  • Tanda koma dipakai sebelum angka desimal atau di antara rupiah dan sen yang dinyatakan dengan angka.
    • Misalnya:
      • 12,5 m
      • Rp750,00
  • Tanda koma dipakai untuk mengapit keterangan tambahan atau keterangan aposisi.
    • Misalnya:
      • Semua mahasiswa FT Unsoed, baik Teknik Elektro maupun Teknik Sipil, harus mengikuti upacara penerimaan mahasiswa baru.
  • Tanda koma dapat dipakai di belakang keterangan yang terdapat pada awal kalimat untuk menghindari salah baca/salah pengertian.
    • Misalnya:
      • Dalam pengukuran nilai daya, kita harus memperhatikan posisi kabel powermeter.
    • Bandingkan dengan,
      • Dalam pengukuran nilai daya kita harus memperhatikan posisi kabel powermeter.

Tanda Titik Koma

  • Tanda titik koma dapat dipakai sebagai pengganti kata penghubung untuk memisahkan kalimat setara yang satu dari kalimat setara yang lain di dalam kalimat majemuk.
    • Misalnya:
      • Pengukuran secara otomatis gagal; pengukuran manual pun gagal.
  • Tanda titik koma dipakai pada akhir perincian yang berupa klausa.
    • Misalnya:
      • Syarat penerimaan pegawai di PT PLN adalah - (1) berkewarganegaraan Indonesia; - (2) berijazah sarjana S-1 Teknik Elektro; - (3) berbadan sehat; dan - (4) bersedia ditempatkan di seluruh wilayah Negara Kesatuan Republik Indonesia.

Tanda Titik Dua

  • Tanda titik dua serangkai dengan kata di depannya.
    • Misalnya:
      • Adikku ada dua: Adi dan Ani
    • Tetapi untuk pemerian, tanda titik dua dipisahkan dengan kata di depannya. Misalnya:
      • Ketua Jurusan : Farida Asriani, S.T., M.T.
  • Tanda titik dua dipakai pada akhir suatu pernyataan lengkap yang diikuti pemerincian atau penjelasan.
    • Misalnya:
      • Ada dua macam hukum Kirchoff: hukum Kirchoff arus, dan hukum Kirchoff tegangan.
    • Tetapi tanda titik dua tidak dipakai jika perincian atau penjelasan itu merupakan pelengkap yang mengakhiri pernyataan. Misalnya:
      • Mahasiswa harus memahami hukum Kirchoff arus dan hukum Kirchoff tegangan.
  • Tanda titik dua dipakai pada perbandingan.
    • Misalnya:
      • Zat kimia tersebut merupakan pencampuran air dan minyak dengan rasio 3:1.

Tanda Hubung (-)

  • Tanda hubung dipakai untuk merangkai kata sebagai berikut.
    • se- dengan kata berikutnya yang dimulai dengan huruf kapital. Misalnya:
      • se-Indonesia, se-Jawa Barat
    • ke- dengan angka. Misalnya:
      • peringkat ke-2
    • angka dengan –an. Misalnya:
      • tahun 1950-an
    • kata atau imbuhan dengan singkatan yang berupa huruf kapital. Misalnya:
      • hari-H, sinar-X, ber-KTP, di-SK-kan
    • kata dengan kata ganti Tuhan. Misalnya:
      • ciptaan-Nya, atas rahmat-Mu
    • huruf dan angka. Misalnya:
      • D-3, S-1, S-2
    • kata ganti -ku, -mu, dan -nya dengan singkatan yang berupa huruf kapital. Misalnya:
      • KTP-mu, SIM-nya, STNK-ku
  • Tanda hubung dipakai untuk merangkai unsur bahasa Indonesia dengan unsur bahasa daerah atau bahasa asing.
    • Misalnya:
      • di-back up
      • meng-inverse
  • Tanda hubung dapat dipakai untuk memperjelas hubungan bagian kata atau ungkapan.
    • Contohnya:
      • dua-puluh-lima ribuan (25 x 1.000)
      • 23/25 (dua-puluh-tiga perdua-puluh-lima)
      • papan-kunci plastik
      • kotak kayu-kalimantan
    • Bandingan dengan hal berikut.
      • dua-puluh lima-ribuan (20 x 5.000)
      • 20 3/25 (dua-puluh tiga perdua-puluh-lima)
      • papan kunci-plastik
      • kotak-kayu kalimantan

Tanda Pisah (—)

  • Tanda pisah dapat dipakai untuk membatasi penyisipan kata atau kalimat yang memberi penjelasan di luar bangun kalimat.
    • Misalnya:
      • Kemerdekaan bangsa itu—saya yakin akan tercapai—diperjuangkan oleh bangsa itu sendiri.
  • Tanda pisah dapat dipakai juga untuk menegaskan adanya keterangan aposisi atau keterangan yang lain.
    • Misalnya:
      • Rangkaian temuan ini—evolusi, teori kenisbian, dan pembelahan atom—telah mengubah konsepsi kita tentang alam semesta.
  • Tanda pisah dipakai di antara dua bilangan, tanggal, atau tempat yang berarti ‘sampai dengan’ atau ‘sampai ke’.
    • Misalnya:
      • Tahun 2010—2013
      • Tanggal 5—10 April 2013
      • Jakarta—Bandung

Tanda Kurung

  • Tanda kurung dipakai untuk mengapit tambahan keterangan atau penjelasan.
    • Misalnya:
      • Dia memperpanjang surat izin mengemudi (SIM).
      • Warga baru itu belum memiliki KTP (kartu tanda penduduk).
      • Lokakarya (workshop) itu diadakan di Manado.
  • Tanda kurung dipakai untuk mengapit keterangan atau penjelasan yang bukan bagian utama kalimat.
    • Misalnya:
      • Keterangan itu (lihat Tabel 10) menunjukkan arus perkembangan baru pasar dalam negeri.
  • Tanda kurung dipakai untuk mengapit huruf atau angka yang digunakan sebagai penanda pemerincian.
    • Misalnya:
      • Faktor produksi menyangkut (a) bahan baku, (b) biaya produksi, dan (c) tenaga kerja.
      • Dia harus melengkapi berkas lamarannya dengan melampirkan
        • (1) akta kelahiran,
        • (2) ijazah terakhir, dan
        • (3) surat keterangan kesehatan.
  • Tanda kurung dapat dipakai untuk menyatakan sitasi.
    • Misalnya:
      • Resistor adalah piranti yang memiliki nilai resistansi tertentu (Echols dan Pieters, 2011).

Tanda Kurung Siku

  • Tanda kurung siku dapat dipakai untuk menyatakan sitasi.
    • Misalnya:
      • Resistor adalah piranti yang memiliki nilai resistansi tertentu [1].

Tanda Garis Miring

  • Tanda garis miring dipakai dalam nomor surat, nomor pada alamat, dan penandaan masa satu tahun yang terbagi dalam dua tahun takwim.
    • Misalnya:
      • Nomor: 7/PK/II/2013
      • Jalan Kramat III/10
      • tahun ajaran 2012/2013
  • Tanda garis miring dipakai sebagai pengganti kata dan, atau, serta setiap.
    • Misalnya:
      • mahasiswa/mahasiswi = ‘mahasiswa dan mahasiswi’
      • dikirimkan lewat darat/laut = ‘dikirimkan lewat darat atau lewat laut’
      • buku dan/atau majalah = ‘buku dan majalah atau buku atau majalah’
      • harganya Rp1.500,00/lembar = ‘harganya Rp1.500,00 setiap lembar’

5.4 - Rangkaian Listrik

Rangkaian Listrik

Rangkaian AC (steady state)

$$ X_L=\omega L $$
$$ Z_L=jX_L=j\omega L=L\angle 90^{\circ} $$
$$ X_C= \frac{1}{\omega C} $$
$$ Z_C=-jX_C=\frac{-j}{\omega C}=\frac{1}{j\omega C}=C\angle -90^{\circ} $$

Rangkaian DC (steady state)

Pada DC, L adalah short circuit, C adalah open circuit. Bisa dicermati karena $\omega = 2 \pi f$ dengan $f=0$.

5.5 - Machine Learning untuk Siapa Saja

Pembelajaran Mesin (Machine Learning)

Translation of Machine Learning for Everyone in Indonesian.

Mengapa kita ingin mesin bisa belajar?

Ini Paijo. Paijo ingin membeli mobil. Paijo mencoba menghitung berapa rupiah yang harusi dia tabung per bulan untuk bisa membeli mobil. Paijo lalu bertanya kepada temannya, juga mencari informasi di internet: ternyata harga mobil baru berkisar Rp.200 juta, kalau mobil second usia setahunan jatuh di Rp.190 juta, yang usia dua tahunan jatuh di Rp.180 juta dan seterusnya.

Paijo, sang calon pemilik mobil yang cerdas ini, menemukan polanya: jadi, harga mobil itu tergantung dari usianya, dan diperkirakan turun Rp.10 juta per tahun. Tetapi harganya tak akan lebih rendah dari Rp.100 juta.

Dalam istilah pembelajara mesin, Paijo menemukan apa yang disebut regresi – bahwa dia bisa memperkirakan sebuah nilai (harga) berdasarkan data yang diketahui. Banyak orang yang terbiasa melakukan ini, misalnya saat membeli smartphone bekas (second), atau saat belanja beras untuk kepentingan kenduri (apakah per orang dijatah satu atau dua ons beras?).

Seandainya saja kita punya rumus sederhana untuk setiap hal di dunia tentu saja semua akan terasa mudah. Kita tak perlu pusing memperkirakan, atau bertanya, atau menawar. Tetapi sayangnya, hal tersebut tak mungkin.

Kembali ke urusan mobil yang mau dibeli Paijo. Masalahnya adalah saat membeli mobil, Paijo (dan kita juga) akan berhadapan dengan berbagai ragam perincian yang menentukan harga mobil: bulan dan tahun produksi, ragam variasi interior dan eksterior, kondisi mobil, jumlah kilometer, waktu pembelian (karena saat mendekati lebaran biasanya harga naik), dan lain sebagainya. Pada umumnya, kita dan Paijo tak mungkin mengingat dan memperhitungkan semua faktor harga tadi untuk menentukan tawaran harga mobil yang akan diajukan.

Nah karena kita manusia itu malas dan bodoh - apalaig urusannya matematika -, maka kita butuh mesin atau robot untuk membantu kita memperhitungkan harga buat kita, entah harga mobil, harga tanah, atau harga saham. Jadi, kita perkerjakan mesin untuk menghitung itu semua atau bahkan memperkirakan harganya. Maka, kita sediakan sejumlah data kepada si mesin, lalu meminta si mesin untuk mencari pola yang terkait dan menentukan harga sesuatu.

Dan, ternyata bisa. Hal yang paling menyenangkan adalah ternyata terbukti mesin bisa bekerja menghitung dan memperkirakan secara lebih baik daripada kebanyakan orang.

Itulah yang menjadi asal muasal lahirnya pembelajaran mesin (machine learning).

Tiga Komponen Pembelajaran Mesin

Tujuan sebenarnya dari pembelajaran mesin adalah untuk memprediksi hasil berdasarkan data yang disediakan. Semua pekerjaan pembelajaran mesin harus dapat dinyatakan dengan cara seperti ini. Kalau tidak seperti itu berarti sejak awal itu bukan merupakan pekerjaan dari pembelajaran mesin.

Semakin banyak variasi dari sampel yang kita punya, maka akan menjadi lebih mudah bagi mesin untuk mencari pola yang relevan dan memperkirakan hasilnya. Oleh karena itu, kita membutuhkan 3 komponen untuk mengajar mesin untuk bisa belajar.

Data

Kita ingin mesin mendeteksi spam? Maka carilah pesan atau email yang berisi spam. Kita ingin mesin bisa meramalkan harga saham? Maka carilah data harga saham sebanyak-banyaknya. Kita ingin mencari pola pengguna internet? Maka kumpulkan data aktivitas mereka di Facebook (eh Mark Zuckerberg, jangan terus mengumpulkan data kita terus dong!). Semakin banyak variasi dari data kita maka semakin baik hasil peramalannya. Sebagai patokan, puluhan ribu baris data adalah syarat minimum bagi yang menginginkan peramalan yang baik.

Maka ada dua cara utama untuk mendapatkan data: manual dan otomatis. Data yang dikumpulkan secara manual akan memiliki kesalahan yang lebih sedikit akan tetapi akan membutuhkan waktu yang lebih banyak untuk mengumpulkannya sehingga membuat biayanya secara umum lebih mahal. Pengumpulan data secara otomatis itu secara umum lebih murah, yaitu kita cukup mengumpulkan segala apapun yang kamu dapat kita temukan dan berharap itu data yang kita kumpulkan itu adalah yang terbaik.

Orang pintar seperti misalnya yang bekerja di Google bisa memberdayakan konsumen mereka sendiri untuk memberikan label data bagi mereka secara gratis. Anda ingat ‘ReCaptcha’? Itu loh yang kadang memaksa kita untuk memilih mana gambar lampu lalu lintas, mana gambar mobil dll.? Nah, itulah adalah yang mereka lakukan pada kita. Kita menjadi buruh yang gratis! Keren kan? Pada dasarnya untuk mengumpulkan data yang bagus (biasanya disebut sebagai dataset) itu sangat sulit. Maka mudah kita pahami, mengapa kita lebih banyak menemukan algoritme atau kode program untuk pembelajaran mesin, tetapi jarang menemukan dataset-nya..

Fitur

Atau dikenal juga dengan istilah parameter atau variabel. Fitur dapat berbentuk jenis kelamin pengguna, harga saham, atau frekuensi kata di dalam sebuah teks. Dengan kata lain, fitur adalah faktor-faktor yang perlu dilihat dan diperhatikan oleh mesin.

Saat data disimpan dalam tabel, fitur dapat dengan mudah diletakkan sebagai nama kolom. Akan tetapi, bagaimana jika kita memiliki koleksi dataset gambar kucing sebesar 100 GB? Kita tidak dapat secara sembrono menggunakan setiap pixel sebagai sebuah fitur. Itu mengapa memilih fitur yang tepat biasanya membutuhkan waktu yang lebih panjang daripada semua waktu yang dibutuhkan dalam berbagai tahapan dari pembelajaran mesin. Hal tersebut juga merupakan sumber kesalahan yang paling utama. Manusia itu selalu subjektif, mereka memilih fitur-fitur yang mereka sukai atau yang mereka anggap penting.

Algoritme

Ini adalah bagian yang paling jelas. Setiap masalah dapat diselesaikan dengan cara yang berbeda. Metode yang kita pilih akan berdampak kepada presisi, unjuk kerja, dan ukuran dari model (algoritme) yang akhirnya kita pakai. Akan tetapi ada ada hal yang penting untuk diperhatikan: jika data kita itu jelek, maka algoritme yang terbaik sekalipun tidak akan menolong. Hal itu disebut sebagai “sampah yang masuk - sampah yang keluar” (garbage in - garbage out). Jadi jangan terlalu memberikan perhatian yang yang terlalu besar kepada persentase akurasi, akan tetapi usahakan untuk mendapatkan data yang lebih banyak terlebih dahulu.

Once I saw an article titled “Will neural networks replace machine learning?” on some hipster media website. These media guys always call any shitty linear regression at least artificial intelligence, almost SkyNet. Here is a simple picture to show who is who.

Artificial intelligence is the name of a whole knowledge field, similar to biology or chemistry.

Machine Learning is a part of artificial intelligence. An important part, but not the only one.

Neural Networks are one of machine learning types. A popular one, but there are other good guys in the class.

Deep Learning is a modern method of building, training, and using neural networks. Basically, it’s a new architecture. Nowadays in practice, no one separates deep learning from the “ordinary networks”. We even use the same libraries for them. To not look like a dumbass, it’s better just name the type of network and avoid buzzwords.

The general rule is to compare things on the same level. That’s why the phrase “will neural nets replace machine learning” sounds like “will the wheels replace cars”. Dear media, it’s compromising your reputation a lot.

Machine can

Machine cannot

Forecast

Create something new

Memorize

Get smart really fast

Reproduce

Go beyond their task

Choose best item

Kill all humans

If you are too lazy for long reads, take a look at the picture below to get some understanding.

Always important to remember — there is never a sole way to solve a problem in the machine learning world. There are always several algorithms that fit, and you have to choose which one fits better. Everything can be solved with a neural network, of course, but who will pay for all these GeForces?

Let’s start with a basic overview. Nowadays there are four main directions in machine learning.

The first methods came from pure statistics in the ’50s. They solved formal math tasks — searching for patterns in numbers, evaluating the proximity of data points, and calculating vectors’ directions.

Nowadays, half of the Internet is working on these algorithms. When you see a list of articles to “read next” or your bank blocks your card at random gas station in the middle of nowhere, most likely it’s the work of one of those little guys.

Big tech companies are huge fans of neural networks. Obviously. For them, 2% accuracy is an additional 2 billion in revenue. But when you are small, it doesn’t make sense. I heard stories of the teams spending a year on a new recommendation algorithm for their e-commerce website, before discovering that 99% of traffic came from search engines. Their algorithms were useless. Most users didn’t even open the main page.

Despite the popularity, classical approaches are so natural that you could easily explain them to a toddler. They are like basic arithmetic — we use it every day, without even thinking.

Classical machine learning is often divided into two categories – Supervised and Unsupervised Learning.

In the first case, the machine has a “supervisor” or a “teacher” who gives the machine all the answers, like whether it’s a cat in the picture or a dog. The teacher has already divided (labeled) the data into cats and dogs, and the machine is using these examples to learn. One by one. Dog by cat.

Unsupervised learning means the machine is left on its own with a pile of animal photos and a task to find out who’s who. Data is not labeled, there’s no teacher, the machine is trying to find any patterns on its own. We’ll talk about these methods below.

Clearly, the machine will learn faster with a teacher, so it’s more commonly used in real-life tasks. There are two types of such tasks: classification – an object’s category prediction, and regression – prediction of a specific point on a numeric axis.

“Splits objects based at one of the attributes known beforehand. Separate socks by based on color, documents based on language, music by genre”

Today used for:
– Spam filtering
– Language detection
– A search of similar documents
– Sentiment analysis
– Recognition of handwritten characters and numbers
– Fraud detection

Popular algorithms: Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbours, Support Vector Machine

From here onward you can comment with additional information for these sections. Feel free to write your examples of tasks. Everything is written here based on my own subjective experience.

Machine learning is about classifying things, mostly. The machine here is like a baby learning to sort toys: here’s a robot, here’s a car, here’s a robo-car… Oh, wait. Error! Error!

In classification, you always need a teacher. The data should be labeled with features so the machine could assign the classes based on them. Everything could be classified — users based on interests (as algorithmic feeds do), articles based on language and topic (that’s important for search engines), music based on genre (Spotify playlists), and even your emails.

In spam filtering the Naive Bayes algorithm was widely used. The machine counts the number of “viagra” mentions in spam and normal mail, then it multiplies both probabilities using the Bayes equation, sums the results and yay, we have Machine Learning.

Later, spammers learned how to deal with Bayesian filters by adding lots of “good” words at the end of the email. Ironically, the method was called Bayesian poisoning. Naive Bayes went down in history as the most elegant and first practically useful one, but now other algorithms are used for spam filtering.

Here’s another practical example of classification. Let’s say you need some money on credit. How will the bank know if you’ll pay it back or not? There’s no way to know for sure. But the bank has lots of profiles of people who took money before. They have data about age, education, occupation and salary and – most importantly – the fact of paying the money back. Or not.

Using this data, we can teach the machine to find the patterns and get the answer. There’s no issue with getting an answer. The issue is that the bank can’t blindly trust the machine answer. What if there’s a system failure, hacker attack or a quick fix from a drunk senior.

To deal with it, we have Decision Trees. All the data automatically divided to yes/no questions. They could sound a bit weird from a human perspective, e.g., whether the creditor earns more than $128.12? Though, the machine comes up with such questions to split the data best at each step.

That’s how a tree is made. The higher the branch — the broader the question. Any analyst can take it and explain afterward. He may not understand it, but explain easily! (typical analyst)

Decision trees are widely used in high responsibility spheres: diagnostics, medicine, and finances.

The two most popular algorithms for forming the trees are CART and C4.5.

Pure decision trees are rarely used today. However, they often set the basis for large systems, and their ensembles even work better than neural networks. We’ll talk about that later.

When you google something, that’s precisely the bunch of dumb trees which are looking for a range of answers for you. Search engines love them because they’re fast.

Support Vector Machines (SVM) is rightfully the most popular method of classical classification. It was used to classify everything in existence: plants by appearance in photos, documents by categories, etc.

The idea behind SVM is simple – it’s trying to draw two lines between your data points with the largest margin between them. Look at the picture:

There’s one very useful side of the classification — anomaly detection. When a feature does not fit any of the classes, we highlight it. Now that’s used in medicine — on MRIs, computers highlight all the suspicious areas or deviations of the test. Stock markets use it to detect abnormal behaviour of traders to find the insiders. When teaching the computer the right things, we automatically teach it what things are wrong.

Today, neural networks are more frequently used for classification. Well, that’s what they were created for.

The rule of thumb is the more complex the data, the more complex the algorithm. For text, numbers, and tables, I’d choose the classical approach. The models are smaller there, they learn faster and work more clearly. For pictures, video and all other complicated big data things, I’d definitely look at neural networks.

Just five years ago you could find a face classifier built on SVM. Today it’s easier to choose from hundreds of pre-trained networks. Nothing has changed for spam filters, though. They are still written with SVM. And there’s no good reason to switch from it anywhere.

Even my website has SVM-based spam detection in comments ¯_(ツ)_/¯

“Draw a line through these dots. Yep, that’s the machine learning”

Today this is used for:

  • Stock price forecasts
  • Demand and sales volume analysis
  • Medical diagnosis
  • Any number-time correlations

Popular algorithms are Linear and Polynomial regressions.

Regression is basically classification where we forecast a number instead of category. Examples are car price by its mileage, traffic by time of the day, demand volume by growth of the company etc. Regression is perfect when something depends on time.

Everyone who works with finance and analysis loves regression. It’s even built-in to Excel. And it’s super smooth inside — the machine simply tries to draw a line that indicates average correlation. Though, unlike a person with a pen and a whiteboard, machine does so with mathematical accuracy, calculating the average interval to every dot.

When the line is straight — it’s a linear regression, when it’s curved – polynomial. These are two major types of regression. The other ones are more exotic. Logistic regression is a black sheep in the flock. Don’t let it trick you, as it’s a classification method, not regression.

It’s okay to mess with regression and classification, though. Many classifiers turn into regression after some tuning. We can not only define the class of the object but memorize how close it is. Here comes a regression.

If you want to get deeper into this, check these series: Machine Learning for Humans. I really love and recommend it!

Unsupervised was invented a bit later, in the ’90s. It is used less often, but sometimes we simply have no choice.

Labeled data is luxury. But what if I want to create, let’s say, a bus classifier? Should I manually take photos of million fucking buses on the streets and label each of them? No way, that will take a lifetime, and I still have so many games not played on my Steam account.

There’s a little hope for capitalism in this case. Thanks to social stratification, we have millions of cheap workers and services like Mechanical Turk who are ready to complete your task for $0.05. And that’s how things usually get done here.

Or you can try to use unsupervised learning. But I can’t remember any good practical application for it, though. It’s usually useful for exploratory data analysis but not as the main algorithm. Specially trained meatbag with Oxford degree feeds the machine with a ton of garbage and watches it. Are there any clusters? No. Any visible relations? No. Well, continue then. You wanted to work in data science, right?

“Divides objects based on unknown features. Machine chooses the best way”

Nowadays used:

  • For market segmentation (types of customers, loyalty)
  • To merge close points on a map
  • For image compression
  • To analyze and label new data
  • To detect abnormal behavior

Popular algorithms: K-means_clustering, Mean-Shift, DBSCAN

Clustering is a classification with no predefined classes. It’s like dividing socks by color when you don’t remember all the colors you have. Clustering algorithm trying to find similar (by some features) objects and merge them in a cluster. Those who have lots of similar features are joined in one class. With some algorithms, you even can specify the exact number of clusters you want.

An excellent example of clustering — markers on web maps. When you’re looking for all vegan restaurants around, the clustering engine groups them to blobs with a number. Otherwise, your browser would freeze, trying to draw all three million vegan restaurants in that hipster downtown.

Apple Photos and Google Photos use more complex clustering. They’re looking for faces in photos to create albums of your friends. The app doesn’t know how many friends you have and how they look, but it’s trying to find the common facial features. Typical clustering.

Another popular issue is image compression. When saving the image to PNG you can set the palette, let’s say, to 32 colors. It means clustering will find all the “reddish” pixels, calculate the “average red” and set it for all the red pixels. Fewer colors — lower file size — profit!

However, you may have problems with colors like Cyan◼︎-like colors. Is it green or blue? Here comes the K-Means algorithm.

It randomly sets 32 color dots in the palette. Now, those are centroids. The remaining points are marked as assigned to the nearest centroid. Thus, we get kind of galaxies around these 32 colors. Then we’re moving the centroid to the center of its galaxy and repeat that until centroids stop moving.

All done. Clusters defined, stable, and there are exactly 32 of them. Here is a more real-world explanation:

Searching for the centroids is convenient. Though, in real life clusters not always circles. Let’s imagine you’re a geologist. And you need to find some similar minerals on the map. In that case, the clusters can be weirdly shaped and even nested. Also, you don’t even know how many of them to expect. 10? 100?

K-means does not fit here, but DBSCAN can be helpful. Let’s say, our dots are people at the town square. Find any three people standing close to each other and ask them to hold hands. Then, tell them to start grabbing hands of those neighbors they can reach. And so on, and so on until no one else can take anyone’s hand. That’s our first cluster. Repeat the process until everyone is clustered. Done.

A nice bonus: a person who has no one to hold hands with — is an anomaly.

It all looks cool in motion:

Just like classification, clustering could be used to detect anomalies. User behaves abnormally after signing up? Let the machine ban him temporarily and create a ticket for the support to check it. Maybe it’s a bot. We don’t even need to know what “normal behavior” is, we just upload all user actions to our model and let the machine decide if it’s a “typical” user or not.

This approach doesn’t work that well compared to the classification one, but it never hurts to try.

“Assembles specific features into more high-level ones”

Nowadays is used for:

  • Recommender systems (★)
  • Beautiful visualizations
  • Topic modeling and similar document search
  • Fake image analysis
  • Risk management

Popular algorithms: Principal Component Analysis (PCA), Singular Value Decomposition (SVD), Latent Dirichlet allocation (LDA), Latent Semantic Analysis (LSA, pLSA, GLSA), t-SNE (for visualization)

Previously these methods were used by hardcore data scientists, who had to find “something interesting” in huge piles of numbers. When Excel charts didn’t help, they forced machines to do the pattern-finding. That’s how they got Dimension Reduction or Feature Learning methods.

Projecting 2D-data to a line (PCA)

It is always more convenient for people to use abstractions, not a bunch of fragmented features. For example, we can merge all dogs with triangle ears, long noses, and big tails to a nice abstraction — “shepherd”. Yes, we’re losing some information about the specific shepherds, but the new abstraction is much more useful for naming and explaining purposes. As a bonus, such “abstracted” models learn faster, overfit less and use a lower number of features.

These algorithms became an amazing tool for Topic Modeling. We can abstract from specific words to their meanings. This is what Latent semantic analysis (LSA) does. It is based on how frequently you see the word on the exact topic. Like, there are more tech terms in tech articles, for sure. The names of politicians are mostly found in political news, etc.

Yes, we can just make clusters from all the words at the articles, but we will lose all the important connections (for example the same meaning of battery and accumulator in different documents). LSA will handle it properly, that’s why its called “latent semantic”.

So we need to connect the words and documents into one feature to keep these latent connections — it turns out that Singular decomposition (SVD) nails this task, revealing useful topic clusters from seen-together words.

Recommender Systems and Collaborative Filtering is another super-popular use of the dimensionality reduction method. Seems like if you use it to abstract user ratings, you get a great system to recommend movies, music, games and whatever you want.

It’s barely possible to fully understand this machine abstraction, but it’s possible to see some correlations on a closer look. Some of them correlate with user’s age — kids play Minecraft and watch cartoons more; others correlate with movie genre or user hobbies.

Machines get these high-level concepts even without understanding them, based only on knowledge of user ratings. Nicely done, Mr.Computer. Now we can write a thesis on why bearded lumberjacks love My Little Pony.

“Look for patterns in the orders’ stream”

Nowadays is used:

  • To forecast sales and discounts
  • To analyze goods bought together
  • To place the products on the shelves
  • To analyze web surfing patterns

Popular algorithms: Apriori, Euclat, FP-growth

This includes all the methods to analyze shopping carts, automate marketing strategy, and other event-related tasks. When you have a sequence of something and want to find patterns in it — try these thingys.

Say, a customer takes a six-pack of beers and goes to the checkout. Should we place peanuts on the way? How often do people buy them together? Yes, it probably works for beer and peanuts, but what other sequences can we predict? Can a small change in the arrangement of goods lead to a significant increase in profits?

Same goes for e-commerce. The task is even more interesting there — what is the customer going to buy next time?

No idea why rule-learning seems to be the least elaborated upon category of machine learning. Classical methods are based on a head-on look through all the bought goods using trees or sets. Algorithms can only search for patterns, but cannot generalize or reproduce those on new examples.

In the real world, every big retailer builds their own proprietary solution, so nooo revolutions here for you. The highest level of tech here — recommender systems. Though, I may be not aware of a breakthrough in the area. Let me know in the comments if you have something to share.

“Throw a robot into a maze and let it find an exit”

Nowadays used for:

  • Self-driving cars
  • Robot vacuums
  • Games
  • Automating trading
  • Enterprise resource management

Popular algorithms: Q-Learning, SARSA, DQN, A3C, Genetic algorithm

Finally, we get to something looks like real artificial intelligence. In lots of articles reinforcement learning is placed somewhere in between of supervised and unsupervised learning. They have nothing in common! Is this because of the name?

Reinforcement learning is used in cases when your problem is not related to data at all, but you have an environment to live in. Like a video game world or a city for self-driving car.

Neural network plays Mario

Knowledge of all the road rules in the world will not teach the autopilot how to drive on the roads. Regardless of how much data we collect, we still can’t foresee all the possible situations. This is why its goal is to minimize error, not to predict all the moves.

Surviving in an environment is a core idea of reinforcement learning. Throw poor little robot into real life, punish it for errors and reward it for right deeds. Same way we teach our kids, right?

More effective way here — to build a virtual city and let self-driving car to learn all its tricks there first. That’s exactly how we train auto-pilots right now. Create a virtual city based on a real map, populate with pedestrians and let the car learn to kill as few people as possible. When the robot is reasonably confident in this artificial GTA, it’s freed to test in the real streets. Fun!

There may be two different approaches — Model-Based and Model-Free.

Model-Based means that car needs to memorize a map or its parts. That’s a pretty outdated approach since it’s impossible for the poor self-driving car to memorize the whole planet.

In Model-Free learning, the car doesn’t memorize every movement but tries to generalize situations and act rationally while obtaining a maximum reward.

Remember the news about AI beating a top player at the game of Go? Despite shortly before this it being proved that the number of combinations in this game is greater than the number of atoms in the universe.

This means the machine could not remember all the combinations and thereby win Go (as it did chess). At each turn, it simply chose the best move for each situation, and it did well enough to outplay a human meatbag.

This approach is a core concept behind Q-learning and its derivatives (SARSA & DQN). ‘Q’ in the name stands for “Quality” as a robot learns to perform the most “qualitative” action in each situation and all the situations are memorized as a simple markovian process.

Such a machine can test billions of situations in a virtual environment, remembering which solutions led to greater reward. But how can it distinguish previously seen situations from a completely new one? If a self-driving car is at a road crossing and the traffic light turns green — does it mean it can go now? What if there’s an ambulance rushing through a street nearby?

The answer today is “no one knows”. There’s no easy answer. Researchers are constantly searching for it but meanwhile only finding workarounds. Some would hardcode all the situations manually that let them solve exceptional cases, like the trolley problem. Others would go deep and let neural networks do the job of figuring it out. This led us to the evolution of Q-learning called Deep Q-Network (DQN). But they are not a silver bullet either.

Reinforcement Learning for an average person would look like a real artificial intelligence. Because it makes you think wow, this machine is making decisions in real life situations! This topic is hyped right now, it’s advancing with incredible pace and intersecting with a neural network to clean your floor more accurately. Amazing world of technologies!


Off-topic. When I was a student, genetic algorithms (link has cool visualization) were really popular. This is about throwing a bunch of robots into a single environment and making them try reaching the goal until they die. Then we pick the best ones, cross them, mutate some genes and rerun the simulation. After a few milliard years, we will get an intelligent creature. Probably. Evolution at its finest.

Genetic algorithms are considered as part of reinforcement learning and they have the most important feature proved by decade-long practice: no one gives a shit about them.

Humanity still couldn’t come up with a task where those would be more effective than other methods. But they are great for student experiments and let people get their university supervisors excited about “artificial intelligence” without too much labour. And youtube would love it as well.

“Bunch of stupid trees learning to correct errors of each other”

Nowadays is used for:

  • Everything that fits classical algorithm approaches (but works better)
  • Search systems (★)
  • Computer vision
  • Object detection

Popular algorithms: Random Forest, Gradient Boosting

It’s time for modern, grown-up methods. Ensembles and neural networks are two main fighters paving our path to a singularity. Today they are producing the most accurate results and are widely used in production.

However, the neural networks got all the hype today, while the words like “boosting” or “bagging” are scarce hipsters on TechCrunch.

Despite all the effectiveness the idea behind these is overly simple. If you take a bunch of inefficient algorithms and force them to correct each other’s mistakes, the overall quality of a system will be higher than even the best individual algorithms.

You’ll get even better results if you take the most unstable algorithms that are predicting completely different results on small noise in input data. Like Regression and Decision Trees. These algorithms are so sensitive to even a single outlier in input data to have models go mad.

In fact, this is what we need.

We can use any algorithm we know to create an ensemble. Just throw a bunch of classifiers, spice it up with regression and don’t forget to measure accuracy. From my experience: don’t even try a Bayes or kNN here. Although “dumb”, they are really stable. That’s boring and predictable. Like your ex.

Instead, there are three battle-tested methods to create ensembles.

Stacking Output of several parallel models is passed as input to the last one which makes a final decision. Like that girl who asks her girlfriends whether to meet with you in order to make the final decision herself.

Emphasis here on the word “different”. Mixing the same algorithms on the same data would make no sense. The choice of algorithms is completely up to you. However, for final decision-making model, regression is usually a good choice.

Based on my experience stacking is less popular in practice, because two other methods are giving better accuracy.

Bagging aka Bootstrap AGGregatING. Use the same algorithm but train it on different subsets of original data. In the end — just average answers.

Data in random subsets may repeat. For example, from a set like “1-2-3” we can get subsets like “2-2-3”, “1-2-2”, “3-1-2” and so on. We use these new datasets to teach the same algorithm several times and then predict the final answer via simple majority voting.

The most famous example of bagging is the Random Forest algorithm, which is simply bagging on the decision trees (which were illustrated above). When you open your phone’s camera app and see it drawing boxes around people’s faces — it’s probably the results of Random Forest work. Neural networks would be too slow to run real-time yet bagging is ideal given it can calculate trees on all the shaders of a video card or on these new fancy ML processors.

In some tasks, the ability of the Random Forest to run in parallel is more important than a small loss in accuracy to the boosting, for example. Especially in real-time processing. There is always a trade-off.

Boosting Algorithms are trained one by one sequentially. Each subsequent one paying most of its attention to data points that were mispredicted by the previous one. Repeat until you are happy.

Same as in bagging, we use subsets of our data but this time they are not randomly generated. Now, in each subsample we take a part of the data the previous algorithm failed to process. Thus, we make a new algorithm learn to fix the errors of the previous one.

The main advantage here — a very high, even illegal in some countries precision of classification that all cool kids can envy. The cons were already called out — it doesn’t parallelize. But it’s still faster than neural networks. It’s like a race between a dump truck and a racecar. The truck can do more, but if you want to go fast — take a car.

If you want a real example of boosting — open Facebook or Google and start typing in a search query. Can you hear an army of trees roaring and smashing together to sort results by relevancy? That’s because they are using boosting.

“We have a thousand-layer network, dozens of video cards, but still no idea where to use it. Let’s generate cat pics!”

Used today for:

  • Replacement of all algorithms above
  • Object identification on photos and videos
  • Speech recognition and synthesis
  • Image processing, style transfer
  • Machine translation

Popular architectures: Perceptron, Convolutional Network (CNN), Recurrent Networks (RNN), Autoencoders

If no one has ever tried to explain neural networks to you using “human brain” analogies, you’re happy. Tell me your secret. But first, let me explain it the way I like.

Any neural network is basically a collection of neurons and connections between them. Neuron is a function with a bunch of inputs and one output. Its task is to take all numbers from its input, perform a function on them and send the result to the output.

Here is an example of a simple but useful in real life neuron: sum up all numbers from the inputs and if that sum is bigger than N — give 1 as a result. Otherwise — zero.

Connections are like channels between neurons. They connect outputs of one neuron with the inputs of another so they can send digits to each other. Each connection has only one parameter — weight. It’s like a connection strength for a signal. When the number 10 passes through a connection with a weight 0.5 it turns into 5.

These weights tell the neuron to respond more to one input and less to another. Weights are adjusted when training — that’s how the network learns. Basically, that’s all there is to it.

To prevent the network from falling into anarchy, the neurons are linked by layers, not randomly. Within a layer neurons are not connected, but they are connected to neurons of the next and previous layers. Data in the network goes strictly in one direction — from the inputs of the first layer to the outputs of the last.

If you throw in a sufficient number of layers and put the weights correctly, you will get the following: by applying to the input, say, the image of handwritten digit 4, black pixels activate the associated neurons, they activate the next layers, and so on and on, until it finally lights up the exit in charge of the four. The result is achieved.

When doing real-life programming nobody is writing neurons and connections. Instead, everything is represented as matrices and calculated based on matrix multiplication for better performance. My favourite video on this and its sequel below describe the whole process in an easily digestible way using the example of recognizing hand-written digits. Watch them if you want to figure this out.

A network that has multiple layers that have connections between every neuron is called a perceptron (MLP) and considered the simplest architecture for a novice. I didn’t see it used for solving tasks in production.

After we constructed a network, our task is to assign proper ways so neurons will react correctly to incoming signals. Now is the time to remember that we have data that is samples of ‘inputs’ and proper ‘outputs’. We will be showing our network a drawing of the same digit 4 and tell it ‘adapt your weights so whenever you see this input your output would emit 4’.

To start with, all weights are assigned randomly. After we show it a digit it emits a random answer because the weights are not correct yet, and we compare how much this result differs from the right one. Then we start traversing network backward from outputs to inputs and tell every neuron ‘hey, you did activate here but you did a terrible job and everything went south from here downwards, let’s keep less attention to this connection and more of that one, mkay?’.

After hundreds of thousands of such cycles of ‘infer-check-punish’, there is a hope that the weights are corrected and act as intended. The science name for this approach is Backpropagation, or a ‘method of backpropagating an error’. Funny thing it took twenty years to come up with this method. Before this we still taught neural networks somehow.

My second favorite vid is describing this process in depth, but it’s still very accessible.

A well trained neural network can fake the work of any of the algorithms described in this chapter (and frequently works more precisely). This universality is what made them widely popular. Finally we have an architecture of human brain they said we just need to assemble lots of layers and teach them on any possible data they hoped. Then the first AI winter started, then it thawed, and then another wave of disappointment hit.

It turned out networks with a large number of layers required computation power unimaginable at that time. Nowadays any gamer PC with geforces outperforms the datacenters of that time. So people didn’t have any hope then to acquire computation power like that and neural networks were a huge bummer.

And then ten years ago deep learning rose.

In 2012 convolutional neural networks acquired an overwhelming victory in ImageNet competition that made the world suddenly remember about methods of deep learning described in the ancient 90s. Now we have video cards!

Differences of deep learning from classical neural networks were in new methods of training that could handle bigger networks. Nowadays only theoretics would try to divide which learning to consider deep and not so deep. And we, as practitioners are using popular ‘deep’ libraries like Keras, TensorFlow & PyTorch even when we build a mini-network with five layers. Just because it’s better suited than all the tools that came before. And we just call them neural networks.

I’ll tell about two main kinds nowadays.

Convolutional Neural Networks (CNN)

Convolutional neural networks are all the rage right now. They are used to search for objects on photos and in videos, face recognition, style transfer, generating and enhancing images, creating effects like slow-mo and improving image quality. Nowadays CNNs are used in all the cases that involve pictures and videos. Even in your iPhone several of these networks are going through your nudes to detect objects in those. If there is something to detect, heh.

Image above is a result produced by Detectron that was recently open-sourced by Facebook

A problem with images was always the difficulty of extracting features out of them. You can split text by sentences, lookup words’ attributes in specialized vocabularies, etc. But images had to be labeled manually to teach the machine where cat ears or tails were in this specific image. This approach got the name ‘handcrafting features’ and used to be used almost by everyone.

There are lots of issues with the handcrafting.

First of all, if a cat had its ears down or turned away from the camera: you are in trouble, the neural network won’t see a thing.

Secondly, try naming on the spot 10 different features that distinguish cats from other animals. I for one couldn’t do it, but when I see a black blob rushing past me at night — even if I only see it in the corner of my eye — I would definitely tell a cat from a rat. Because people don’t look only at ear form or leg count and account lots of different features they don’t even think about. And thus cannot explain it to the machine.

So it means the machine needs to learn such features on its own, building on top of basic lines. We’ll do the following: first, we divide the whole image into 8x8 pixel blocks and assign to each a type of dominant line – either horizontal [-], vertical [|] or one of the diagonals [/]. It can also be that several would be highly visible — this happens and we are not always absolutely confident.

Output would be several tables of sticks that are in fact the simplest features representing objects edges on the image. They are images on their own but built out of sticks. So we can once again take a block of 8x8 and see how they match together. And again and again…

This operation is called convolution, which gave the name for the method. Convolution can be represented as a layer of a neural network, because each neuron can act as any function.

When we feed our neural network with lots of photos of cats it automatically assigns bigger weights to those combinations of sticks it saw the most frequently. It doesn’t care whether it was a straight line of a cat’s back or a geometrically complicated object like a cat’s face, something will be highly activating.

As the output, we would put a simple perceptron which will look at the most activated combinations and based on that differentiate cats from dogs.

The beauty of this idea is that we have a neural net that searches for the most distinctive features of the objects on its own. We don’t need to pick them manually. We can feed it any amount of images of any object just by googling billions of images with it and our net will create feature maps from sticks and learn to differentiate any object on its own.

For this I even have a handy unfunny joke:

Give your neural net a fish and it will be able to detect fish for the rest of its life. Give your neural net a fishing rod and it will be able to detect fishing rods for the rest of its life…

Recurrent Neural Networks (RNN)

The second most popular architecture today. Recurrent networks gave us useful things like neural machine translation (here is my post about it), speech recognition and voice synthesis in smart assistants. RNNs are the best for sequential data like voice, text or music.

Remember Microsoft Sam, the old-school speech synthesizer from Windows XP? That funny guy builds words letter by letter, trying to glue them up together. Now, look at Amazon Alexa or Assistant from Google. They don’t only say the words clearly, they even place the right accents!

Neural Net is trying to speak

All because modern voice assistants are trained to speak not letter by letter, but on whole phrases at once. We can take a bunch of voiced texts and train a neural network to generate an audio-sequence closest to the original speech.

In other words, we use text as input and its audio as the desired output. We ask a neural network to generate some audio for the given text, then compare it with the original, correct errors and try to get as close as possible to ideal.

Sounds like a classical learning process. Even a perceptron is suitable for this. But how should we define its outputs? Firing one particular output for each possible phrase is not an option — obviously.

Here we’ll be helped by the fact that text, speech or music are sequences. They consist of consecutive units like syllables. They all sound unique but depend on previous ones. Lose this connection and you get dubstep.

We can train the perceptron to generate these unique sounds, but how will it remember previous answers? So the idea is to add memory to each neuron and use it as an additional input on the next run. A neuron could make a note for itself - hey, we had a vowel here, the next sound should sound higher (it’s a very simplified example).

That’s how recurrent networks appeared.

This approach had one huge problem - when all neurons remembered their past results, the number of connections in the network became so huge that it was technically impossible to adjust all the weights.

When a neural network can’t forget, it can’t learn new things (people have the same flaw).

The first decision was simple: limit the neuron memory. Let’s say, to memorize no more than 5 recent results. But it broke the whole idea.

A much better approach came later: to use special cells, similar to computer memory. Each cell can record a number, read it or reset it. They were called long and short-term memory (LSTM) cells.

Now, when a neuron needs to set a reminder, it puts a flag in that cell. Like “it was a consonant in a word, next time use different pronunciation rules”. When the flag is no longer needed, the cells are reset, leaving only the “long-term” connections of the classical perceptron. In other words, the network is trained not only to learn weights but also to set these reminders.

Simple, but it works!

CNN + RNN = Fake Obama

You can take speech samples from anywhere. BuzzFeed, for example, took Obama’s speeches and trained a neural network to imitate his voice. As you see, audio synthesis is already a simple task. Video still has issues, but it’s a question of time.


There are many more network architectures in the wild. I recommend a good article called Neural Network Zoo, where almost all types of neural networks are collected and briefly explained.

5.6 - Tips Menulis Essay

Tips Menulis Essay

Tips Menulis Essay (Julian)

Mengapa Menulis Essay?

  • Menulis adalah ekspresi dari gagasan yang lahir atas perenungan atau respon atas fenomena.
  • Menulis adalah leverage untuk mengubah seseorang bahkan mungkin peradaban.

Tahap I: Pendahuluan yang Menggigit

Topik yang Meyakinkan

  • Topik yang kuat lahir dari letupan pikiran yang memaksa kita untuk “tidak bisa tidak, ini harus dituliskan”.
  • Topik yang kuat bisa didorong dengan dua hal:
    • Menentukan tujuan tulisan kita:
      • Membuka mata orang, menunjukkan apa yang selama ini dipahami salah.
      • Menuliskan apa yang banyak orang pikirkan, tapi tak pernah tertuliskan.
      • Merangkaikan gejala yang muncul, meprediksikan apa yang akan terjadi.
      • Menguraikan gagasan raksasa menjadi hal-hal yang mudah dilakukan.
      • Memberikan solusi atas problem yang rumit.
      • Menceritakan kisah emosional menegangkan untuk memberikan makna dan pelajaran.
    • Memadukan tujuan tulisan dengan motivasi internal kita:
      • Apakah menuliskannya itu menjadi cara mengungkapkan dan meluapkan apa yang ada di dada kita?
      • Apakah menuliskannya itu membantu mengubah gerutuan kita menjadi sesuatu yang sistematis dan rasional?
      • Apakah menuliskannya itu akan mendorong orang lain melakukan hal yang kita anggap penting.
      • Apakah kita terobsesi dengan topik tulisan kita dan ingin orang lain juga bersemangat seperti kita?
  • Tujuan tulisan memperjelas apa yang mau kita raih, motivasi memastikan kita mencapainya.

Temukan Pancing yang Tepat

  • Pendahuluan adalah untuk memancing pembaca terus membaca. Ia membangun kepercayaan. Bukan sekadar gimmick.
  • Apa itu pancing? Pancing adalah tulisan setengah matang yang dapat berupa:
    • Pertanyaan - menanyakan sesuatu yang menarik, tapi tidak dijawab
    • Naratif - menuliskan suatu cerita, tapi tidak disimpulkan
    • Temuan - menyampaikan temuan baru, tetapi hanya secuil bagian saja yang disampaikan
    • Argumen - menyampaikan klaim yang besar, tapi tidak disebutkan alasannya.
  • Pancing berfungsi untuk:
    • mempertajam pendahuluan
    • membantu menemukan apa yang kita dan pembaca inginkan untuk diteruskan
  • Contoh pancing naratif:

Saat ini pukul 3 dini hari, dan tak seorang pun yang lain yang terlihat dalam jarang pandang kami. Dari lereng gunung ini kami bergantian berteriak, tapi yang terdengar hanya pantulan suara kami sendiri. Kami mencoba untuk bergerak, tetapi jari kami yang membeku membuat kami tak bisa ke manapun. Apa yang seperti akan menjadi akhir bagi kehidupan kami, ternyata akan menjadi titik awal hidup kami. Dan ini adalah apa yang terjadi kemudian.

  • Contoh pancing temuan

Peneliti menemukan bahwa ternyata 50% pasien Covid tak bisa merasakan bau dan rasa. 30% di antara mereka berakhir dengan kematian, tak bisa merasakan apapun. Yang tersisa menjadi sebuah pengetahuan baru, tentang apa yang menjadi kunci untuk bertahan hidup sebagai penderita Covid.

5.7 - Istilah Baku di Bidang Teknik Elektro

Istilah Baku di Bidang Teknik Elektro

Istilah baku di bidang teknik elektro berdasar KBBI dan Pedoman Pembentukan Istilah.

Link terkait:
🔗 Istilah Baku di Bidang Teknik Elektro
🔗 Penulisan Naskah Ilmiah Bidang Teknik Elektro
🔗 Pedomaan Ejaan Naskah Bidang Teknik Elektro

Contoh Kata Baku dan Tidak Baku

  • analisis bukan analisa
  • diode bukan dioda
  • foto bukan photo
  • furnitur bukan furniture
  • algoritme bukanalgoritma
  • pelat bukan plat
  • objek bukan obyek
  • nomor bukan nomer
  • saraf bukan syaraf
  • otomatis bukan otomatik atau automatis
  • video bukan vidio
  • klona bukan kloning
  • pengklonaan bukan pengkloningan
  • relai bukan relay
  • praktik bukan praktek
  • apotek bukan apotik

Penerapan Kata yang Salah

  • ganti:ubah, mengubah, bukan rubah, merubah
  • preposisi “di” adalah penanda tempat, sedangkan “pada” adalah penanda kata-kata yang menyatakan makhluk hidup (orang, binatang), benda abstrak (waktu, situasi).
  • preposisi “pada” berubah menjadi “kepada” dan preposisi “di” menjadi “ke” jika menandakan suatu arah atau tujuan.

Kata sinonim

  • linear dan linier

Kata berikut (ternyata) kosa kata bahasa Indonesia

  • plan : rencana

Kamus Istilah Keteknikelektroan

  • server : peladen
  • overview : ikhtisar, ijmal
  • diode : diode
  • transfer function : fungsi alih
  • time-invariant : waktu tak berubah
  • Cartesian : Cartesian
  • output : keluaran

Kamus Istilah Non elektro

  • Masuk angin: cold symptoms
  • Kerokan: coining

5.8 - Kategorisasi Buku untuk Dosen

Kategorisasi Buku untuk Dosen

Buku Referensi (Reference Book)

Menurut DIKTI:

  • Memiliki ISBN
  • Substansi : satu bidang ilmu
  • Karya ilmiah yang utuh (rumusan masalah dengan novelty, pemecahan masalah, dukungan teori mutakhir, kesimpulan dan daftar pustaka)
  • Merupakan hasil penelitian atau pemikiran yang original.
  • Minimal 60 halaman format UNESCO
  • Minimal ukuran standar, 15 x 23 cm, 1 spasi.
  • Diterbitkan oleh Badan Ilmiah/Organisasi/PT
  • Bidang Penelitian, Angka Kredit Maksimal : 40, Batas Kepatutan : 1 buku/tahun

Monograph

Menurut DIKTI:

  • Memiliki ISSN/ISBN
  • Substansi : satu topik/hal dalam suatu bidang ilmu
  • Memenuhi kaidah penulisan ilmiah yang utuh (rumusan masalah dengan novelty, pemecahan masalah, dukungan teori mutakhir, kesimpulan dan daftar pustaka)
  • Minimal 60 halaman format UNESCO
  • Minimal ukuran standar, 15 x 23 cm, 1 spasi.
  • Diterbitkan oleh Badan Ilmiah/Organisasi/PT
  • Bidang Penelitian, Angka Kredit Maksimal : 40, Batas Kepatutan : 1 buku/tahun

Catatan:

  • lazimnya adalah penulis tunggal
  • substansi perbedaan monograf dan buku referensi
    • esensi: monograf adalah peluasan dari penelitian
    • sifat: buku referensi adalah bersifat referensi menyeluruh pada suatu topik/bidang ilmu tertentu
    • halaman: biasanya halamannya lebih tebal (ratusan)

Buku Ajar

Menurut Dikti:

  • Buku pegangan untuk suatu mata kuliah
  • Memenuhi kaidah buku teks
  • Diterbitkan secara resmi dan disebarluaskan.
  • Bidang Pengajaran, Angka Kredit Maksimal : 20, Batas Kepatutan : 1 buku/tahun

Diktat

Menurut Dikti:

  • Bahan ajar untuk suatu mata kuliah
  • Ditulis oleh pengajar Mata Kuliah.
  • Mengikuti Kaidah Penulisan Ilmiah
  • Disebarluaskan Kepada Peserta Kuliah
  • Angka Kredit Maksimal : 5, Batas Kepatutan : 1 buku/tahun

Modul

Menurut Dikti:

  • Bagian dari bahan ajar untuk suatu mata kuliah
  • Ditulis oleh pengajar Mata Kuliah.
  • Mengikuti Kaidah Penulisan Ilmiah
  • Disebarluaskan kepada Peserta Kuliah
  • Angka Kredit Maksimal : 5, Batas Kepatutan : 1 produk/tahun

Petunjuk Praktikum

Menurut Dikti:

  • Pedoman pelaksanaan praktikum
  • Berisi tata cara, persiapan, pelaksanaan, analisis data pelaporan.
  • Disusun dan ditulis oleh kelompok dosen.
  • Mengikuti kaidah tulisan ilmiah
  • Angka Kredit Maksimal : 5, Batas Kepatutan : 1 produk/semester

Buku Terjemah

Menurut DIKTI:

  • Memiliki ISBN
  • Bidang Penelitian, Angka Kredit Maksimal : 15

Editor Buku

Menurut DIKTI:

  • Memiliki ISBN
  • Bidang Penelitian, Angka Kredit Maksimal : 10

Catatan tentang Buku

  • Ebook di PAK?
    • PAK belum mengakomodasi ebook
    • Strategi: buat versi fisik dan versi ebook
  • Royalti buku?
    • royalti ebook bisa 25%, royalti fisik 17,5%
  • Bagaimaan dengan buku yang tidak dalam PAK?
    • Misal buku ilmiah populer, akukan sebagai hak cipta
  • Bagaimana tentang hak cipta?
    • Kehati-hatian terkait hak cipta karena bisa diklaim dan berisiko finansial

5.9 - Paten

Paten

Apa itu Invensi?

Temuan vs Invensi Invensi melibatkan rekayasa manusia, bukan sekedar menemukan (temuan) sesuatu di alam.

Contoh: Insulin tidak bisa dipatenkan Penicillium Notatum itu tidak bisa dipatenkan

Penicillin menjadi Amoxicillin itu invensi

Kreasi estetika bukan invensi dan tidak bisa dipatenkan, tetapi bisa di-hakcipta-kan.

Tetapi ada hal yang bisa keduanya: Contoh alur ban:

  • bisa invensinya, jika ada fungsi dari alur ban
  • bisa hakciptakan, jika dia sekaligus sebagai kreasi estetika

Skema (gambar alur, flow chart) itu bukan invensi, akan tetapi proses merupakan invensi.

Aturan dan metode yang hanya berisi program komputer itu bukan invensi, tapi hak cipta. Tetapi gabungan melibatkan SW dan HW itu merupakan invensi.

Presentasi suatu informasi itu bukan invensi

Penggunaan baru itu bukan invensi.

Hal-hal yang Bisa dan Tidak Bisa Dipatenkan

Link to Header

Invensi yang Tak Bisa diberi Paten

  • Bertentangan dengan Agama
    • Bayi Tabung
    • Alat Sex
  • Metode Pengobatan Manusia dan Hewan
  • Makhluq Hidup
  • Proses Biologi

This is link to welcome_note.md

Dokumen Invensi

Judul

  • Singkat dan jelas menggambarkan invensi
  • Tidak boleh menggunakan merek dagang
  • Tidak boleh menggunakan kata ‘baru’
  • Tidak boleh menggunakan kata pujian
  • Judul klaim itu boleh sama dengan yang lain, yang penting klaimnya

Bidang Teknik Invensi

Invensi biasanya dua:

  • produk
  • proses
  • aplikasi/penggunaan
  • atau gabungannya

Bagian ini menyebutkan tentang invensi itu adalah produk, proses, atau keduanya

Latar Belakang Invensi

Penelusuran atas invensi terdahulu. Menunjukkan kekurangan invensi terdahulu. Menunjukkan kelebihan invensi sekarang.

Uraian Singkat Invensi

Menguraikan invensi secara umum Sebagai cermin atas klaim. Lebih rinci dari bidang teknik invensi dengan menyebutkan detil. Semua fitur esensial diuraikan di urain singkat: konsentrasi, suhu dll. Luas ke spesifik

Maka biasanya, dokumen invensi dibuat dari belakang (dari klaim)

Abstrak

200 kata atau 1 halaman

Uraian Singkat Gambar

Cukup menunjukkan Gambar ke Dibutuhkan agar saat di Pengadilan jadi jelas

Uraian Lengkap Invensi

Awali dengan Definisi Konsistensi Penulisan

Klaim

Klaim menentukan perlindungan Penggunaan

Elektro:

  • produk yang dicirikan oleh mekanisme
  • dicirikan lagi oleh fungsi

Drafter itu harus seluas-luasnya, pemeriksa sesempit-sempitnya

Dimulai dari fitur umum, baru ke fitur khusus.

6 - Course

Course

6.1 - CS231n Resources

CS231n Resources

How To

Student Notes

Student Forums

CS231 Assignment

Similar with CS231n

EECS498 Student Notes

CS294-129 Student Notes

CS498 DL Student Notes

6.2 - Standford CS231n 2017 Summary

Standford CS231n 2017 Summary

Table of contents

Course Info

  • Website: http://cs231n.stanford.edu/
  • Lectures link: https://www.youtube.com/playlist?list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk
  • Full syllabus link: http://cs231n.stanford.edu/syllabus.html
  • Assignments solutions: https://github.com/Burton2000/CS231n-2017
  • Number of lectures: 16
  • Course description:
    • Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection. Recent developments in neural network (aka “deep learning”) approaches have greatly advanced the performance of these state-of-the-art visual recognition systems. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision. The final assignment will involve training a multi-million parameter convolutional neural network and applying it on the largest image classification dataset (ImageNet). We will focus on teaching how to set up the problem of image recognition, the learning algorithms (e.g. backpropagation), practical engineering tricks for training and fine-tuning the networks and guide the students through hands-on assignments and a final course project. Much of the background and materials of this course will be drawn from the ImageNet Challenge.

01. Introduction to CNN for visual recognition

  • A brief history of Computer vision starting from the late 1960s to 2017.
  • Computer vision problems includes image classification, object localization, object detection, and scene understanding.
  • Imagenet is one of the biggest datasets in image classification available right now.
  • Starting 2012 in the Imagenet competition, CNN (Convolutional neural networks) is always winning.
  • CNN actually has been invented in 1997 by Yann Lecun.

02. Image classification

  • Image classification problem has a lot of challenges like illumination and viewpoints.

  • An image classification algorithm can be solved with K nearest neighborhood (KNN) but it can poorly solve the problem. The properties of KNN are:

    • Hyperparameters of KNN are: k and the distance measure
    • K is the number of neighbors we are comparing to.
    • Distance measures include:
      • L2 distance (Euclidean distance)
        • Best for non coordinate points
      • L1 distance (Manhattan distance)
        • Best for coordinate points
  • Hyperparameters can be optimized using Cross-validation as following (In our case we are trying tp predict K):

    1. Split your dataset into f folds.

    2. Given predicted hyperparameters:

      • Train your algorithm with f-1 folds and test it with the remain flood. and repeat this with every fold.
    3. Choose the hyperparameters that gives the best training values (Average over all folds)

  • Linear SVM classifier is an option for solving the image classification problem, but the curse of dimensions makes it stop improving at some point.

  • Logistic regression is a also a solution for image classification problem, but image classification problem is non linear!

  • Linear classifiers has to run the following equation: Y = wX + b

    • shape of w is the same as x and shape of b is 1.
  • We can add 1 to X vector and remove the bias so that: Y = wX

    • shape of x is oldX+1 and w is the same as x
  • We need to know how can we get w’s and b’s that makes the classifier runs at best.

03. Loss function and optimization

  • In the last section we talked about linear classifier but we didn’t discussed how we could train the parameters of that model to get best w’s and b’s.

  • We need a loss function to measure how good or bad our current parameters.

  • Loss = L[i] =(f(X[i],W),Y[i])
    Loss_for_all = 1/N * Sum(Li(f(X[i],W),Y[i]))      # Indicates the average
    
  • Then we find a way to minimize the loss function given some parameters. This is called optimization.

  • Loss function for a linear SVM classifier:

    • L[i] = Sum where all classes except the predicted class (max(0, s[j] - s[y[i]] + 1))
    • We call this the hinge loss.
    • Loss function means we are happy if the best prediction are the same as the true value other wise we give an error with 1 margin.
    • Example:
      • Given this example we want to compute the loss of this image.
      • L = max (0, 437.9 - (-96.8) + 1) + max(0, 61.95 - (-96.8) + 1) = max(0, 535.7) + max(0, 159.75) = 695.45
      • Final loss is 695.45 which is big and reflects that the cat score needs to be the best over all classes as its the lowest value now. We need to minimize that loss.
    • Its OK for the margin to be 1. But its a hyperparameter too.
  • If your loss function gives you zero, are this value is the same value for your parameter? No there are a lot of parameters that can give you best score.

  • You’ll sometimes hear about people instead using the squared hinge loss SVM (or L2-SVM). that penalizes violated margins more strongly (quadratically instead of linearly). The unsquared version is more standard, but in some datasets the squared hinge loss can work better.

  • We add regularization for the loss function so that the discovered model don’t overfit the data.

  • Loss = L = 1/N * Sum(Li(f(X[i],W),Y[i])) + lambda * R(W)
    
  • Where R is the regularizer, and lambda is the regularization term.

  • There are different regularizations techniques:

  • Regularizer Equation Comments
    L2 R(W) = Sum(W^2) Sum all the W squared
    L1 R(W) = Sum(lWl) Sum of all Ws with abs
    Elastic net (L1 + L2) R(W) = beta * Sum(W^2) + Sum(lWl)
    Dropout No Equation
  • Regularization prefers smaller Ws over big Ws.

  • Regularizations is called weight decay. biases should not included in regularization.

  • Softmax loss (Like linear regression but works for more than 2 classes):

    • Softmax function:

* ```python
  A[L] = e^(score[L]) / sum(e^(score[L]), NoOfClasses)
  ```
*
  • Sum of the vector should be 1.

  • Softmax loss:

* ```python
  Loss = -logP(Y = y[i]|X = x[i])
  ```
*



* Log of the probability of the good class. We want it to be near 1 thats why we added a minus.
* Softmax loss is called cross-entropy loss.
  • Consider this numerical problem when you are computing Softmax:

* ```python
  f = np.array([123, 456, 789]) # example with 3 classes and each having large scores
  p = np.exp(f) / np.sum(np.exp(f)) # Bad: Numeric problem, potential blowup

  # instead: first shift the values of f so that the highest number is 0:
  f -= np.max(f) # f becomes [-666, -333, 0]
  p = np.exp(f) / np.sum(np.exp(f)) # safe to do, gives the correct answer
  ```
*
  • Optimization:
    • How we can optimize loss functions we discussed?
    • Strategy one:
      • Get a random parameters and try all of them on the loss and get the best loss. But its a bad idea.
    • Strategy two:
      • Follow the slope.

      • Our goal is to compute the gradient of each parameter we have.

        • Numerical gradient: Approximate, slow, easy to write. (But its useful in debugging.)
        • Analytic gradient: Exact, Fast, Error-prone. (Always used in practice)
      • After we compute the gradient of our parameters, we compute the gradient descent:

  * ```python
    W = W - learning_rate * W_grad
    ```
  *



* learning_rate is so important hyper parameter you should get the best value of it first of all the hyperparameters.
* stochastic gradient descent:
  * Instead of using all the date, use a mini batch of examples (32/64/128 are commonly used) for faster results.

04. Introduction to Neural network

  • Computing the analytic gradient for arbitrary complex functions:
    • What is a Computational graphs?
      • Used to represent any function. with nodes.
      • Using Computational graphs can easy lead us to use a technique that called back-propagation. Even with complex models like CNN and RNN.
    • Back-propagation simple example:
      • Suppose we have f(x,y,z) = (x+y)z

      • Then graph can be represented this way:

* ```
  X         
    \
     (+)--> q ---(*)--> f
    /           /
  Y            /
              /
             /
  Z---------/
  ```
*



* We made an intermediate variable `q` to hold the values of `x+y`
* Then we have:

  *


  * ```python
    q = (x+y)              # dq/dx = 1 , dq/dy = 1
    f = qz                 # df/dq = z , df/dz = q
    ```
  *



* Then:

  *


  * ```python
    df/dq = z
    df/dz = q
    df/dx = df/dq * dq/dx = z * 1 = z       # Chain rule
    df/dy = df/dq * dq/dy = z * 1 = z       # Chain rule
    ```
  *
  • So in the Computational graphs, we call each operation f. For each f we calculate the local gradient before we go on back propagation and then we compute the gradients in respect of the loss function using the chain rule.

  • In the Computational graphs you can split each operation to as simple as you want but the nodes will be a lot. if you want the nodes to be smaller be sure that you can compute the gradient of this node.

  • A bigger example:

    • Hint: the back propagation of two nodes going to one node from the back is by adding the two derivatives.
  • Modularized implementation: forward/ backward API (example multiply code):

* ```python
  class MultuplyGate(object):
    """
    x,y are scalars
    """
    def forward(x,y):
      z = x*y
      self.x = x  # Cache
      self.y = y	# Cache
      # We cache x and y because we know that the derivatives contains them.
      return z
    def backward(dz):
      dx = self.y * dz         #self.y is dx
      dy = self.x * dz
      return [dx, dy]
  ```
*
  • If you look at a deep learning framework you will find it follow the Modularized implementation where each class has a definition for forward and backward. For example:
    • Multiplication
    • Max
    • Plus
    • Minus
    • Sigmoid
    • Convolution
  • So to define neural network as a function:
    • (Before) Linear score function: f = Wx
    • (Now) 2-layer neural network: f = W2*max(0,W1*x)
      • Where max is the RELU non linear function
    • (Now) 3-layer neural network: f = W3*max(0,W2*max(0,W1*x)
    • And so on..
  • Neural networks is a stack of some simple operation that forms complex operations.

05. Convolutional neural networks (CNNs)

  • Neural networks history:
    • First perceptron machine was developed by Frank Rosenblatt in 1957. It was used to recognize letters of the alphabet. Back propagation wasn’t developed yet.
    • Multilayer perceptron was developed in 1960 by Adaline/Madaline. Back propagation wasn’t developed yet.
    • Back propagation was developed in 1986 by Rumeelhart.
    • There was a period which nothing new was happening with NN. Cause of the limited computing resources and data.
    • In 2006 Hinton released a paper that shows that we can train a deep neural network using Restricted Boltzmann machines to initialize the weights then back propagation.
    • The first strong results was in 2012 by Hinton in speech recognition. And the Alexnet “Convolutional neural networks” that wins the image net in 2012 also by Hinton’s team.
    • After that NN is widely used in various applications.
  • Convolutional neural networks history:
    • Hubel & Wisel in 1959 to 1968 experiments on cats cortex found that there are a topographical mapping in the cortex and that the neurons has hireical organization from simple to complex.
    • In 1998, Yann Lecun gives the paper Gradient-based learning applied to document recognition that introduced the Convolutional neural networks. It was good for recognizing zip letters but couldn’t run on a more complex examples.
    • In 2012 AlexNet used the same Yan Lecun architecture and won the image net challenge. The difference from 1998 that now we have a large data sets that can be used also the power of the GPUs solved a lot of performance problems.
    • Starting from 2012 there are CNN that are used for various tasks (Here are some applications):
      • Image classification.
      • Image retrieval.
        • Extracting features using a NN and then do a similarity matching.
      • Object detection.
      • Segmentation.
        • Each pixel in an image takes a label.
      • Face recognition.
      • Pose recognition.
      • Medical images.
      • Playing Atari games with reinforcement learning.
      • Galaxies classification.
      • Street signs recognition.
      • Image captioning.
      • Deep dream.
  • ConvNet architectures make the explicit assumption that the inputs are images, which allows us to encode certain properties into the architecture.
  • There are a few distinct types of Layers in ConvNet (e.g. CONV/FC/RELU/POOL are by far the most popular)
  • Each Layer may or may not have parameters (e.g. CONV/FC do, RELU/POOL don’t)
  • Each Layer may or may not have additional hyperparameters (e.g. CONV/FC/POOL do, RELU doesn’t)
  • How Convolutional neural networks works?
    • A fully connected layer is a layer in which all the neurons is connected. Sometimes we call it a dense layer.
      • If input shape is (X, M) the weighs shape for this will be (NoOfHiddenNeurons, X)
    • Convolution layer is a layer in which we will keep the structure of the input by a filter that goes through all the image.
      • We do this with dot product: W.T*X + b. This equation uses the broadcasting technique.
      • So we need to get the values of W and b
      • We usually deal with the filter (W) as a vector not a matrix.
    • We call output of the convolution activation map. We need to have multiple activation map.
      • Example if we have 6 filters, here are the shapes:
        • Input image (32,32,3)
        • filter size (5,5,3)
          • We apply 6 filters. The depth must be three because the input map has depth of three.
        • Output of Conv. (28,28,6)
          • if one filter it will be (28,28,1)
        • After RELU (28,28,6)
        • Another filter (5,5,6)
        • Output of Conv. (24,24,10)
    • It turns out that convNets learns in the first layers the low features and then the mid-level features and then the high level features.
    • After the Convnets we can have a linear classifier for a classification task.
    • In Convolutional neural networks usually we have some (Conv ==> Relu)s and then we apply a pool operation to downsample the size of the activation.
  • What is stride when we are doing convolution:
    • While doing a conv layer we have many choices to make regarding the stride of which we will take. I will explain this by examples.
    • Stride is skipping while sliding. By default its 1.
    • Given a matrix with shape of (7,7) and a filter with shape (3,3):
      • If stride is 1 then the output shape will be (5,5) # 2 are dropped
      • If stride is 2 then the output shape will be (3,3) # 4 are dropped
      • If stride is 3 it doesn’t work.
    • A general formula would be ((N-F)/stride +1)
      • If stride is 1 then O = ((7-3)/1)+1 = 4 + 1 = 5
      • If stride is 2 then O = ((7-3)/2)+1 = 2 + 1 = 3
      • If stride is 3 then O = ((7-3)/3)+1 = 1.33 + 1 = 2.33 # doesn't work
  • In practice its common to zero pad the border. # Padding from both sides.
    • Give a stride of 1 its common to pad to this equation: (F-1)/2 where F is the filter size
      • Example F = 3 ==> Zero pad with 1
      • Example F = 5 ==> Zero pad with 2
    • If we pad this way we call this same convolution.
    • Adding zeros gives another features to the edges thats why there are different padding techniques like padding the corners not zeros but in practice zeros works!
    • We do this to maintain our full size of the input. If we didn’t do that the input will be shrinking too fast and we will lose a lot of data.
  • Example:
    • If we have input of shape (32,32,3) and ten filters with shape is (5,5) with stride 1 and pad 2
      • Output size will be (32,32,10) # We maintain the size.
    • Size of parameters per filter = 5*5*3 + 1 = 76
    • All parameters = 76 * 10 = 76
  • Number of filters is usually common to be to the power of 2. # To vectorize well.
  • So here are the parameters for the Conv layer:
    • Number of filters K.
      • Usually a power of 2.
    • Spatial content size F.
      • 3,5,7 ….
    • The stride S.
      • Usually 1 or 2 (If the stride is big there will be a downsampling but different of pooling)
    • Amount of Padding
      • If we want the input shape to be as the output shape, based on the F if 3 its 1, if F is 5 the 2 and so on.
  • Pooling makes the representation smaller and more manageable.
  • Pooling Operates over each activation map independently.
  • Example of pooling is the maxpooling.
    • Parameters of max pooling is the size of the filter and the stride"
      • Example 2x2 with stride 2 # Usually the two parameters are the same 2 , 2
  • Also example of pooling is average pooling.
    • In this case it might be learnable.

06. Training neural networks I

  • As a revision here are the Mini batch stochastic gradient descent algorithm steps:

    • Loop:

      1. Sample a batch of data.
      2. Forward prop it through the graph (network) and get loss.
      3. Backprop to calculate the gradients.
      4. Update the parameters using the gradients.
  • Activation functions:

    • Different choices for activation function includes Sigmoid, tanh, RELU, Leaky RELU, Maxout, and ELU.

    • Sigmoid:

      • Squashes the numbers between [0,1]
      • Used as a firing rate like human brains.
      • Sigmoid(x) = 1 / (1 + e^-x)
      • Problems with sigmoid:
        • big values neurons kill the gradients.
          • Gradients are in most cases near 0 (Big values/small values), that kills the updates if the graph/network are large.
        • Not Zero-centered.
          • Didn’t produce zero-mean data.
        • exp() is a bit compute expensive.
          • just to mention. We have a more complex operations in deep learning like convolution.
    • Tanh:

      • Squashes the numbers between [-1,1]
      • Zero centered.
      • Still big values neurons “kill” the gradients.
      • Tanh(x) is the equation.
      • Proposed by Yann Lecun in 1991.
    • RELU (Rectified linear unit):

      • RELU(x) = max(0,x)
      • Doesn’t kill the gradients.
        • Only small values that are killed. Killed the gradient in the half
      • Computationally efficient.
      • Converges much faster than Sigmoid and Tanh (6x)
      • More biologically plausible than sigmoid.
      • Proposed by Alex Krizhevsky in 2012 Toronto university. (AlexNet)
      • Problems:
        • Not zero centered.
      • If weights aren’t initialized good, maybe 75% of the neurons will be dead and thats a waste computation. But its still works. This is an active area of research to optimize this.
      • To solve the issue mentioned above, people might initialize all the biases by 0.01
    • Leaky RELU:

      • leaky_RELU(x) = max(0.01x,x)
      • Doesn’t kill the gradients from both sides.
      • Computationally efficient.
      • Converges much faster than Sigmoid and Tanh (6x)
      • Will not die.
      • PRELU is placing the 0.01 by a variable alpha which is learned as a parameter.
    • Exponential linear units (ELU):

* ```
  ELU(x) = { x                                           if x > 0
  		   alpah *(exp(x) -1)		                   if x <= 0
             # alpah are a learning parameter
  }
  ```
*



* It has all the benefits of RELU
* Closer to zero mean outputs and adds some robustness to noise.
* problems
  * `exp()` is a bit compute expensive.
  • Maxout activations:
    • maxout(x) = max(w1.T*x + b1, w2.T*x + b2)
    • Generalizes RELU and Leaky RELU
    • Doesn’t die!
    • Problems:
      • oubles the number of parameters per neuron
  • In practice:
    • Use RELU. Be careful for your learning rates.
    • Try out Leaky RELU/Maxout/ELU
    • Try out tanh but don’t expect much.
    • Don’t use sigmoid!
  • Data preprocessing:
    • Normalize the data:

  • # Zero centered data. (Calculate the mean for every input).
    # On of the reasons we do this is because we need data to be between positive and negative and not all the be negative or positive. 
    X -= np.mean(X, axis = 1)
    
    # Then apply the standard deviation. Hint: in images we don't do this.
    X /= np.std(X, axis = 1)
    
  • To normalize images:

    • Subtract the mean image (E.g. Alexnet)
      • Mean image shape is the same as the input images.
    • Or Subtract per-channel mean
      • Means calculate the mean for each channel of all images. Shape is 3 (3 channels)
  • Weight initialization:

    • What happened when initialize all Ws with zeros?

      • All the neurons will do exactly the same thing. They will have the same gradient and they will have the same update.
      • So if W’s of a specific layer is equal the thing described happened
    • First idea is to initialize the w’s with small random numbers:

* ```python
  W = 0.01 * np.random.rand(D, H)
  # Works OK for small networks but it makes problems with deeper networks!
  ```
*



* The standard deviations is going to zero in deeper networks. and the gradient will vanish sooner in deep networks.

*


* ```python
  W = 1 * np.random.rand(D, H) 
  # Works OK for small networks but it makes problems with deeper networks!
  ```
*



* The network will explode with big numbers!
  • Xavier initialization:

* ```python
  W = np.random.rand(in, out) / np.sqrt(in)
  ```
*



* It works because we want the variance of the input to be as the variance of the output.
* But it has an issue, It breaks when you are using RELU.
  • He initialization (Solution for the RELU issue):

* ```python
  W = np.random.rand(in, out) / np.sqrt(in/2)
  ```
*



* Solves the issue with RELU. Its recommended when you are using RELU
  • Proper initialization is an active area of research.

  • Batch normalization:

    • is a technique to provide any layer in a Neural Network with inputs that are zero mean/unit variance.

    • It speeds up the training. You want to do this a lot.

      • Made by Sergey Ioffe and Christian Szegedy at 2015.
    • We make a Gaussian activations in each layer. by calculating the mean and the variance.

    • Usually inserted after (fully connected or Convolutional layers) and (before nonlinearity).

    • Steps (For each output of a layer)
      5. First we compute the mean and variance^2 of the batch for each feature.
      6. We normalize by subtracting the mean and dividing by square root of (variance^2 + epsilon)

      • epsilon to not divide by zero
      1. Then we make a scale and shift variables: Result = gamma * normalizedX + beta

        • gamma and beta are learnable parameters.
        • it basically possible to say “Hey!! I don’t want zero mean/unit variance input, give me back the raw input - it’s better for me.”
        • Hey shift and scale by what you want not just the mean and variance!
    • The algorithm makes each layer flexible (It chooses which distribution it wants)

    • We initialize the BatchNorm Parameters to transform the input to zero mean/unit variance distributions but during training they can learn that any other distribution might be better.

    • During the running of the training we need to calculate the globalMean and globalVariance for each layer by using weighted average.

    • Benefits of Batch Normalization:

      • Networks train faster.
      • Allows higher learning rates.
      • helps reduce the sensitivity to the initial starting weights.
      • Makes more activation functions viable.
      • Provides some regularization.
        • Because we are calculating mean and variance for each batch that gives a slight regularization effect.
    • In conv layers, we will have one variance and one mean per activation map.

    • Batch normalization have worked best for CONV and regular deep NN, But for recurrent NN and reinforcement learning its still an active research area.

      • Its challengey in reinforcement learning because the batch is small.
  • Baby sitting the learning process

    1. Preprocessing of data.

    2. Choose the architecture.

    3. Make a forward pass and check the loss (Disable regularization). Check if the loss is reasonable.

    4. Add regularization, the loss should go up!

    5. Disable the regularization again and take a small number of data and try to train the loss and reach zero loss.

      • You should overfit perfectly for small datasets.
    6. Take your full training data, and small regularization then try some value of learning rate.

      • If loss is barely changing, then the learning rate is small.
      • If you got NAN then your NN exploded and your learning rate is high.
      • Get your learning rate range by trying the min value (That can change) and the max value that doesn’t explode the network.
    7. Do Hyperparameters optimization to get the best hyperparameters values.

  • Hyperparameter Optimization

    • Try Cross validation strategy.
      • Run with a few ephocs, and try to optimize the ranges.
    • Its best to optimize in log space.
    • Adjust your ranges and try again.
    • Its better to try random search instead of grid searches (In log space)

07. Training neural networks II

  • Optimization algorithms:
    • Problems with stochastic gradient descent:
      • if loss quickly in one direction and slowly in another (For only two variables), you will get very slow progress along shallow dimension, jitter along steep direction. Our NN will have a lot of parameters then the problem will be more.
      • Local minimum or saddle points
        • If SGD went into local minimum we will stuck at this point because the gradient is zero.
        • Also in saddle points the gradient will be zero so we will stuck.
        • Saddle points says that at some point:
          • Some gradients will get the loss up.
          • Some gradients will get the loss down.
          • And that happens more in high dimensional (100 million dimension for example)
        • The problem of deep NN is more about saddle points than about local minimum because deep NN has high dimensions (Parameters)
        • Mini batches are noisy because the gradient is not taken for the whole batch.
    • SGD + momentum:
      • Build up velocity as a running mean of gradients:

* ```python
  # Computing weighted average. rho best is in range [0.9 - 0.99]
  V[t+1] = rho * v[t] + dx
  x[t+1] = x[t] - learningRate * V[t+1]
  ```
*



* `V[0]` is zero.
* Solves the saddle point and local minimum problems.
* It overshoots the problem and returns to it back.
  • Nestrov momentum:

* ```python
  dx = compute_gradient(x)
  old_v = v
  v = rho * v - learning_rate * dx
  x+= -rho * old_v + (1+rho) * v
  ```
*



* Doesn't overshoot the problem but slower than SGD + momentum
  • AdaGrad

* ```python
  grad_squared = 0
  while(True):
    dx = compute_gradient(x)
    
    # here is a problem, the grad_squared isn't decayed (gets so large)
    grad_squared += dx * dx			
    
    x -= (learning_rate*dx) / (np.sqrt(grad_squared) + 1e-7)
  ```
*
  • RMSProp

* ```python
  grad_squared = 0
  while(True):
    dx = compute_gradient(x)
    
    #Solved ADAgra
    grad_squared = decay_rate * grad_squared + (1-grad_squared) * dx * dx  
    
    x -= (learning_rate*dx) / (np.sqrt(grad_squared) + 1e-7)
  ```
*



* People uses this instead of AdaGrad
  • Adam
    • Calculates the momentum and RMSProp as the gradients.
    • It need a Fixing bias to fix starts of gradients.
    • Is the best technique so far runs best on a lot of problems.
    • With beta1 = 0.9 and beta2 = 0.999 and learning_rate = 1e-3 or 5e-4 is a great starting point for many models!
  • Learning decay
    • Ex. decay learning rate by half every few epochs.
    • To help the learning rate not to bounce out.
    • Learning decay is common with SGD+momentum but not common with Adam.
    • Dont use learning decay from the start at choosing your hyperparameters. Try first and check if you need decay or not.
  • All the above algorithms we have discussed is a first order optimization.
  • Second order optimization
    • Use gradient and Hessian to from quadratic approximation.
    • Step to the minima of the approximation.
    • What is nice about this update?
      • It doesn’t has a learning rate in some of the versions.
    • But its unpractical for deep learning
      • Has O(N^2) elements.
      • Inverting takes O(N^3).
    • L-BFGS is a version of second order optimization
      • Works with batch optimization but not with mini-batches.
  • In practice first use ADAM and if it didn’t work try L-BFGS.
  • Some says all the famous deep architectures uses SGS + Nestrov momentum
  • Regularization
    • So far we have talked about reducing the training error, but we care about most is how our model will handle unseen data!
    • What if the gab of the error between training data and validation data are too large?
    • This error is called high variance.
    • Model Ensembles:
      • Algorithm:
        • Train multiple independent models of the same architecture with different initializations.
        • At test time average their results.
      • It can get you extra 2% performance.
      • It reduces the generalization error.
      • You can use some snapshots of your NN at the training ensembles them and take the results.
    • Regularization solves the high variance problem. We have talked about L1, L2 Regularization.
    • Some Regularization techniques are designed for only NN and can do better.
    • Drop out:
      • In each forward pass, randomly set some of the neurons to zero. Probability of dropping is a hyperparameter that are 0.5 for almost cases.
      • So you will chooses some activation and makes them zero.
      • It works because:
        • It forces the network to have redundant representation; prevent co-adaption of features!
        • If you think about this, It ensemble some of the models in the same model!
      • At test time we might multiply each dropout layer by the probability of the dropout.
      • Sometimes at test time we don’t multiply anything and leave it as it is.
      • With drop out it takes more time to train.
    • Data augmentation:
      • Another technique that makes Regularization.
      • Change the data!
      • For example flip the image, or rotate it.
      • Example in ResNet:
        • Training: Sample random crops and scales:

          1. Pick random L in range [256,480]
          2. Resize training image, short side = L
          3. Sample random 224x244 patch.
        • Testing: average a fixed set of crops
          4. Resize image at 5 scales: {224, 256, 384, 480, 640}
          5. For each size, use 10 224x224 crops: 4 corners + center + flips

        • Apply Color jitter or PCA

        • Translation, rotation, stretching.

    • Drop connect
      • Like drop out idea it makes a regularization.
      • Instead of dropping the activation, we randomly zeroing the weights.
    • Fractional Max Pooling
      • Cool regularization idea. Not commonly used.
      • Randomize the regions in which we pool.
    • Stochastic depth
      • New idea.
      • Eliminate layers, instead on neurons.
      • Has the similar effect of drop out but its a new idea.
  • Transfer learning:
    • Some times your data is overfitted by your model because the data is small not because of regularization.

    • You need a lot of data if you want to train/use CNNs.

    • Steps of transfer learning

      1. Train on a big dataset that has common features with your dataset. Called pretraining.
      2. Freeze the layers except the last layer and feed your small dataset to learn only the last layer.
      3. Not only the last layer maybe trained again, you can fine tune any number of layers you want based on the number of data you have
    • Guide to use transfer learning:

* |                         | Very Similar dataset               | very different dataset                   |
  | ----------------------- | ---------------------------------- | ---------------------------------------- |
  | **very little dataset** | Use Linear classifier on top layer | You're in trouble.. Try linear classifier from different stages |
  | **quite a lot of data** | Finetune a few layers              | Finetune a large layers                  |
*
  • Transfer learning is the normal not an exception.

08. Deep learning software

  • This section changes a lot every year in CS231n due to rabid changes in the deep learning softwares.
  • CPU vs GPU
    • GPU The graphics card was developed to render graphics to play games or make 3D media,. etc.
      • NVIDIA vs AMD
        • Deep learning choose NVIDIA over AMD GPU because NVIDIA is pushing research forward deep learning also makes it architecture more suitable for deep learning.
    • CPU has fewer cores but each core is much faster and much more capable; great at sequential tasks. While GPUs has more cores but each core is much slower “dumber”; great for parallel tasks.
    • GPU cores needs to work together. and has its own memory.
    • Matrix multiplication is from the operations that are suited for GPUs. It has MxN independent operations that can be done on parallel.
    • Convolution operation also can be paralyzed because it has independent operations.
    • Programming GPUs frameworks:
      • CUDA (NVIDIA only)
        • Write c-like code that runs directly on the GPU.
        • Its hard to build a good optimized code that runs on GPU. Thats why they provided high level APIs.
        • Higher level APIs: cuBLAS, cuDNN, etc
        • CuDNN has implemented back prop. , convolution, recurrent and a lot more for you!
        • In practice you won’t write a parallel code. You will use the code implemented and optimized by others!
      • OpenCl
        • Similar to CUDA, but runs on any GPU.
        • Usually Slower .
        • Haven’t much support yet from all deep learning softwares.
    • There are a lot of courses for learning parallel programming.
    • If you aren’t careful, training can bottleneck on reading dara and transferring to GPU. So the solutions are:
      • Read all the data into RAM. # If possible
      • Use SSD instead of HDD
      • Use multiple CPU threads to prefetch data!
        • While the GPU are computing, a CPU thread will fetch the data for you.
        • A lot of frameworks implemented that for you because its a little bit painful!
  • Deep learning Frameworks
    • Its super fast moving!
    • Currently available frameworks:
      • Tensorflow (Google)
      • Caffe (UC Berkeley)
      • Caffe2 (Facebook)
      • Torch (NYU / Facebook)
      • PyTorch (Facebook)
      • Theano (U monteral)
      • Paddle (Baidu)
      • CNTK (Microsoft)
      • MXNet (Amazon)
    • The instructor thinks that you should focus on Tensorflow and PyTorch.
    • The point of deep learning frameworks:
      • Easily build big computational graphs.
      • Easily compute gradients in computational graphs.
      • Run it efficiently on GPU (cuDNN - cuBLAS)
    • Numpy doesn’t run on GPU.
    • Most of the frameworks tries to be like NUMPY in the forward pass and then they compute the gradients for you.
  • Tensorflow (Google)
    • Code are two parts:

      1. Define computational graph.
      2. Run the graph and reuse it many times.
    • Tensorflow uses a static graph architecture.

    • Tensorflow variables live in the graph. while the placeholders are feed each run.

    • Global initializer function initializes the variables that lives in the graph.

    • Use predefined optimizers and losses.

    • You can make a full layers with layers.dense function.

    • Keras (High level wrapper):

      • Keras is a layer on top pf Tensorflow, makes common things easy to do.
      • So popular!
      • Trains a full deep NN in a few lines of codes.
    • There are a lot high level wrappers:

      • Keras
      • TFLearn
      • TensorLayer
      • tf.layers #Ships with tensorflow
      • tf-Slim #Ships with tensorflow
      • tf.contrib.learn #Ships with tensorflow
      • Sonnet # New from deep mind
    • Tensorflow has pretrained models that you can use while you are using transfer learning.

    • Tensorboard adds logging to record loss, stats. Run server and get pretty graphs!

    • It has distributed code if you want to split your graph on some nodes.

    • Tensorflow is actually inspired from Theano. It has the same inspirations and structure.

  • PyTorch (Facebook)
    • Has three layers of abstraction:
      • Tensor: ndarray but runs on GPU #Like numpy arrays in tensorflow
        • Variable: Node in a computational graphs; stores data and gradient #Like Tensor, Variable, Placeholders
      • Module: A NN layer; may store state or learnable weights#Like tf.layers in tensorflow
    • In PyTorch the graphs runs in the same loop you are executing which makes it easier for debugging. This is called a dynamic graph.
    • In PyTorch you can define your own autograd functions by writing forward and backward for tensors. Most of the times it will implemented for you.
    • Torch.nn is a high level api like keras in tensorflow. You can create the models and go on and on.
      • You can define your own nn module!
    • Also Pytorch contains optimizers like tensorflow.
    • It contains a data loader that wraps a Dataset and provides minbatches, shuffling and multithreading.
    • PyTorch contains the best and super easy to use pretrained models
    • PyTorch contains Visdom that are like tensorboard. but Tensorboard seems to be more powerful.
    • PyTorch is new and still evolving compared to Torch. Its still in beta state.
    • PyTorch is best for research.
  • Tensorflow builds the graph once, then run them many times (Called static graph)
  • In each PyTorch iteration we build a new graph (Called dynamic graph)
  • Static vs dynamic graphs:
    • Optimization:
      • With static graphs, framework can optimize the graph for you before it runs.
    • Serialization
      • Static: Once graph is built, can serialize it and run it without the code that built the graph. Ex use the graph in c++
      • Dynamic: Always need to keep the code around.
    • Conditional
      • Is easier in dynamic graphs. And more complicated in static graphs.
    • Loops:
      • Is easier in dynamic graphs. And more complicated in static graphs.
  • Tensorflow fold make dynamic graphs easier in Tensorflow through dynamic batching.
  • Dynamic graph applications include: recurrent networks and recursive networks.
  • Caffe2 uses static graphs and can train model in python also works on IOS and Android
  • Tensorflow/Caffe2 are used a lot in production especially on mobile.

09. CNN architectures

  • This section talks about the famous CNN architectures. Focuses on CNN architectures that won ImageNet competition since 2012.
  • These architectures includes: AlexNet, VGG, GoogLeNet, and ResNet.
  • Also we will discuss some interesting architectures as we go.
  • The first ConvNet that was made was LeNet-5 architectures are:by Yann Lecun at 1998.
    • Architecture are: CONV-POOL-CONV-POOL-FC-FC-FC
    • Each conv filters was 5x5 applied at stride 1
    • Each pool was 2x2 applied at stride 2
    • It was useful in Digit recognition.
    • In particular the insight that image features are distributed across the entire image, and convolutions with learnable parameters are an effective way to extract similar features at multiple location with few parameters.
    • It contains exactly 5 layers
  • In 2010 Dan Claudiu Ciresan and Jurgen Schmidhuber published one of the very fist implementations of GPU Neural nets. This implementation had both forward and backward implemented on a a NVIDIA GTX 280 graphic processor of an up to 9 layers neural network.
  • AlexNet (2012):
    • ConvNet that started the evolution and wins the ImageNet at 2012.
    • Architecture are: CONV1-MAXPOOL1-NORM1-CONV2-MAXPOOL2-NORM2-CONV3-CONV4-CONV5-MAXPOOL3-FC6-FC7-FC8
    • Contains exactly 8 layers the first 5 are Convolutional and the last 3 are fully connected layers.
    • AlexNet accuracy error was 16.4%
    • For example if the input is 227 x 227 x3 then these are the shapes of the of the outputs at each layer:
      • CONV1 (96 11 x 11 filters at stride 4, pad 0)
        • Output shape (55,55,96), Number of weights are (11*11*3*96)+96 = 34944
      • MAXPOOL1 (3 x 3 filters applied at stride 2)
        • Output shape (27,27,96), No Weights
      • NORM1
        • Output shape (27,27,96), We don’t do this any more
      • CONV2 (256 5 x 5 filters at stride 1, pad 2)
      • MAXPOOL2 (3 x 3 filters at stride 2)
      • NORM2
      • CONV3 (384 3 x 3 filters ar stride 1, pad 1)
      • CONV4 (384 3 x 3 filters ar stride 1, pad 1)
      • CONV5 (256 3 x 3 filters ar stride 1, pad 1)
      • MAXPOOL3 (3 x 3 filters at stride 2)
        • Output shape (6,6,256)
      • FC6 (4096)
      • FC7 (4096)
      • FC8 (1000 neurons for class score)
    • Some other details:
      • First use of RELU.
      • Norm layers but not used any more.
      • heavy data augmentation
      • Dropout 0.5
      • batch size 128
      • SGD momentum 0.9
      • Learning rate 1e-2 reduce by 10 at some iterations
      • 7 CNN ensembles!
    • AlexNet was trained on GTX 580 GPU with only 3 GB which wasn’t enough to train in one machine so they have spread the feature maps in half. The first AlexNet was distributed!
    • Its still used in transfer learning in a lot of tasks.
    • Total number of parameters are 60 million
  • ZFNet (2013)
    • Won in 2013 with error 11.7%
    • It has the same general structure but they changed a little in hyperparameters to get the best output.
    • Also contains 8 layers.
    • AlexNet but:
      • CONV1: change from (11 x 11 stride 4) to (7 x 7 stride 2)
      • CONV3,4,5: instead of 384, 384, 256 filters use 512, 1024, 512
  • OverFeat (2013)
    • Won the localization in imageNet in 2013
    • We show how a multiscale and sliding window approach can be efficiently implemented within a ConvNet. We also introduce a novel deep learning approach to localization by learning to predict object boundaries.
  • VGGNet (2014) (Oxford)
    • Deeper network with more layers.
    • Contains 19 layers.
    • Won on 2014 with GoogleNet with error 7.3%
    • Smaller filters with deeper layers.
    • The great advantage of VGG was the insight that multiple 3 × 3 convolution in sequence can emulate the effect of larger receptive fields, for examples 5 × 5 and 7 × 7.
    • Used the simple 3 x 3 Conv all through the network.
      • 3 (3 x 3) filters has the same effect as 7 x 7
    • The Architecture contains several CONV layers then POOL layer over 5 times and then the full connected layers.
    • It has a total memory of 96MB per image for only forward propagation!
      • Most memory are in the earlier layers
    • Total number of parameters are 138 million
      • Most of the parameters are in the fully connected layers
    • Has a similar details in training like AlexNet. Like using momentum and dropout.
    • VGG19 are an upgrade for VGG16 that are slightly better but with more memory
  • GoogleNet (2014)
    • Deeper network with more layers.
    • Contains 22 layers.
    • It has Efficient Inception module.
    • Only 5 million parameters! 12x less than AlexNet
    • Won on 2014 with VGGNet with error 6.7%
    • Inception module:
      • Design a good local network topology (network within a network (NiN)) and then stack these modules on top of each other.
      • It consists of:
        • Apply parallel filter operations on the input from previous layer
          • Multiple convs of sizes (1 x 1, 3 x 3, 5 x 5)
            • Adds padding to maintain the sizes.
          • Pooling operation. (Max Pooling)
            • Adds padding to maintain the sizes.
        • Concatenate all filter outputs together depth-wise.
      • For example:
        • Input for inception module is 28 x 28 x 256
        • Then the parallel filters applied:
          • (1 x 1), 128 filter # output shape (28,28,128)
          • (3 x 3), 192 filter # output shape (28,28,192)
          • (5 x 5), 96 filter # output shape (28,28,96)
          • (3 x 3) Max pooling # output shape (28,28,256)
        • After concatenation this will be (28,28,672)
      • By this design -We call Naiveit has a big computation complexity.
        • The last example will make:
          • [1 x 1 conv, 128] ==> 28 * 28 * 128 * 1 * 1 * 256 = 25 Million approx
          • [3 x 3 conv, 192] ==> 28 * 28 * 192 *3 *3 * 256 = 346 Million approx
          • [5 x 5 conv, 96] ==> 28 * 28 * 96 * 5 * 5 * 256 = 482 Million approx
          • In total around 854 Million operation!
      • Solution: bottleneck layers that use 1x1 convolutions to reduce feature depth.
      • The bottleneck solution will make a total operations of 358M on this example which is good compared with the naive implementation.
    • So GoogleNet stacks this Inception module multiple times to get a full architecture of a network that can solve a problem without the Fully connected layers.
    • Just to mention, it uses an average pooling layer at the end before the classification step.
    • Full architecture:
    • In February 2015 Batch-normalized Inception was introduced as Inception V2. Batch-normalization computes the mean and standard-deviation of all feature maps at the output of a layer, and normalizes their responses with these values.
    • In December 2015 they introduced a paper “Rethinking the Inception Architecture for Computer Vision” which explains the older inception models well also introducing a new version V3.
  • The first GoogleNet and VGG was before batch normalization invented so they had some hacks to train the NN and converge well.
  • ResNet (2015) (Microsoft Research)
    • 152-layer model for ImageNet. Winner by 3.57% which is more than human level error.
    • This is also the very first time that a network of > hundred, even 1000 layers was trained.
    • Swept all classification and detection competitions in ILSVRC’15 and COCO’15!
    • What happens when we continue stacking deeper layers on a “plain” Convolutional neural network?
      • The deeper model performs worse, but it’s not caused by overfitting!
      • The learning stops performs well somehow because deeper NN are harder to optimize!
    • The deeper model should be able to perform at least as well as the shallower model.
    • A solution by construction is copying the learned layers from the shallower model and setting additional layers to identity mapping.
    • Residual block:
      • Microsoft came with the Residual block which has this architecture:

* ```python
  # Instead of us trying To learn a new representation, We learn only Residual
  Y = (W2* RELU(W1x+b1) + b2) + X
  ```
*



* Say you have a network till a depth of N layers. You only want to add a new layer if you get something extra out of adding that layer.
* One way to ensure this new (N+1)th layer learns something new about your network is to also provide the input(x) without any transformation to the output of the (N+1)th layer. This essentially drives the new layer to learn something different from what the input has already encoded.
* The other advantage is such connections help in handling the Vanishing gradient problem in very deep networks.
  • With the Residual block we can now have a deep NN of any depth without the fearing that we can’t optimize the network.
  • ResNet with a large number of layers started to use a bottleneck layer similar to the Inception bottleneck to reduce the dimensions.
  • Full ResNet architecture:
    • Stack residual blocks.
    • Every residual block has two 3 x 3 conv layers.
    • Additional conv layer at the beginning.
    • No FC layers at the end (only FC 1000 to output classes)
    • Periodically, double number of filters and downsample spatially using stride 2 (/2 in each dimension)
    • Training ResNet in practice:
      • Batch Normalization after every CONV layer.
      • Xavier/2 initialization from He et al.
      • SGD + Momentum (0.9)
      • Learning rate: 0.1, divided by 10 when validation error plateaus
      • Mini-batch size 256
      • Weight decay of 1e-5
      • No dropout used.
  • Inception-v4: Resnet + Inception and was founded in 2016.
  • The complexity comparing over all the architectures:
    • VGG: Highest memory, most operations.
    • GoogLeNet: most efficient.
  • ResNets Improvements:
    • (2016) Identity Mappings in Deep Residual Networks
      • From the creators of ResNet.
      • Gives better performance.
    • (2016) Wide Residual Networks
      • Argues that residuals are the important factor, not depth
      • 50-layer wide ResNet outperforms 152-layer original ResNet
      • Increasing width instead of depth more computationally efficient (parallelizable)
    • (2016) Deep Networks with Stochastic Depth
      • Motivation: reduce vanishing gradients and training time through short networks during training.
      • Randomly drop a subset of layers during each training pass
      • Use full deep network at test time.
  • Beyond ResNets:
    • (2017) FractalNet: Ultra-Deep Neural Networks without Residuals
      • Argues that key is transitioning effectively from shallow to deep and residual representations are not necessary.
      • Trained with dropping out sub-paths
      • Full network at test time.
    • (2017) Densely Connected Convolutional Networks
    • (2017) SqueezeNet: AlexNet-level Accuracy With 50x Fewer Parameters and <0.5Mb Model Size
      • Good for production.
      • It is a re-hash of many concepts from ResNet and Inception, and show that after all, a better design of architecture will deliver small network sizes and parameters without needing complex compression algorithms.
  • Conclusion:
    • ResNet current best default.
    • Trend towards extremely deep networks
    • In the last couple of years, some models all using the shortcuts like “ResNet” to eaisly flow the gradients.

10. Recurrent Neural networks

  • Vanilla Neural Networks “Feed neural networks”, input of fixed size goes through some hidden units and then go to output. We call it a one to one network.
  • Recurrent Neural Networks RNN Models:
    • One to many
      • Example: Image Captioning
        • image ==> sequence of words
    • Many to One
      • Example: Sentiment Classification
        • sequence of words ==> sentiment
    • Many to many
      • Example: Machine Translation
        • seq of words in one language ==> seq of words in another language
      • Example: Video classification on frame level
  • RNNs can also work for Non-Sequence Data (One to One problems)
  • So what is a recurrent neural network?
    • Recurrent core cell that take an input x and that cell has an internal state that are updated each time it reads an input.

    • The RNN block should return a vector.

    • We can process a sequence of vectors x by applying a recurrence formula at every time step:

* ```python
  h[t] = fw (h[t-1], x[t])			# Where fw is some function with parameters W
  ```
*



* The same function and the same set of parameters are used at every time step.
  • (Vanilla) Recurrent Neural Network:

* ```
  h[t] = tanh (W[h,h]*h[t-1] + W[x,h]*x[t])    # Then we save h[t]
  y[t] = W[h,y]*h[t]
  ```
*



* This is the simplest example of a RNN.
  • RNN works on a sequence of related data.
  • Recurrent NN Computational graph:
    • h0 are initialized to zero.
    • Gradient of W is the sum of all the W gradients that has been calculated!
    • A many to many graph:
      • Also the last is the sum of all losses and the weights of Y is one and is updated through summing all the gradients!
    • A many to one graph:
    • A one to many graph:
    • sequence to sequence graph:
      • Encoder and decoder philosophy.
  • Examples:
    • Suppose we are building words using characters. We want a model to predict the next character of a sequence. Lets say that the characters are only [h, e, l, o] and the words are [hello]
      • Training:
        • Only the third prediction here is true. The loss needs to be optimized.
        • We can train the network by feeding the whole word(s).
      • Testing time:
        • At test time we work with a character by character. The output character will be the next input with the other saved hidden activations.
        • This link contains all the code but uses Truncated Backpropagation through time as we will discuss.
  • Backpropagation through time Forward through entire sequence to compute loss, then backward through entire sequence to compute gradient.
    • But if we choose the whole sequence it will be so slow and take so much memory and will never converge!
  • So in practice people are doing “Truncated Backpropagation through time” as we go on we Run forward and backward through chunks of the sequence instead of whole sequence
    • Then Carry hidden states forward in time forever, but only backpropagate for some smaller number of steps.
  • Example on image captioning:
    • They use token to finish running.
    • The biggest dataset for image captioning is Microsoft COCO.
  • Image Captioning with Attention is a project in which when the RNN is generating captions, it looks at a specific part of the image not the whole image.
    • Image Captioning with Attention technique is also used in “Visual Question Answering” problem
  • Multilayer RNNs is generally using some layers as the hidden layer that are feed into again. LSTM is a multilayer RNNs.
  • Backward flow of gradients in RNN can explode or vanish. Exploding is controlled with gradient clipping. Vanishing is controlled with additive interactions (LSTM)
  • LSTM stands for Long Short Term Memory. It was designed to help the vanishing gradient problem on RNNs.
    • It consists of:
      • f: Forget gate, Whether to erase cell
      • i: Input gate, whether to write to cell
      • g: Gate gate (?), How much to write to cell
      • o: Output gate, How much to reveal cell
    • The LSTM gradients are easily computed like ResNet
    • The LSTM is keeping data on the long or short memory as it trains means it can remember not just the things from last layer but layers.
  • Highway networks is something between ResNet and LSTM that is still in research.
  • Better/simpler architectures are a hot topic of current research
  • Better understanding (both theoretical and empirical) is needed.
  • RNN is used for problems that uses sequences of related inputs more. Like NLP and Speech recognition.

11. Detection and Segmentation

  • So far we are talking about image classification problem. In this section we will talk about Segmentation, Localization, Detection.
  • Semantic Segmentation
    • We want to Label each pixel in the image with a category label.
    • As you see the cows in the image, Semantic Segmentation Don’t differentiate instances, only care about pixels.
    • The first idea is to use a sliding window. We take a small window size and slide it all over the picture. For each window we want to label the center pixel.
      • It will work but its not a good idea because it will be computational expensive!
      • Very inefficient! Not reusing shared features between overlapping patches.
      • In practice nobody uses this.
    • The second idea is designing a network as a bunch of Convolutional layers to make predictions for pixels all at once!
      • Input is the whole image. Output is the image with each pixel labeled.
      • We need a lot of labeled data. And its very expensive data.
      • It needs a deep Conv. layers.
      • The loss is cross entropy between each pixel provided.
      • Data augmentation are good here.
      • The problem with this implementation that convolutions at original image resolution will be very expensive.
      • So in practice we don’t see something like this right now.
    • The third idea is based on the last idea. The difference is that we are downsampling and upsampling inside the network.
      • We downsample because using the whole image as it is very expensive. So we go on multiple layers downsampling and then upsampling in the end.
      • Downsampling is an operation like Pooling and strided convolution.
      • Upsampling is like “Nearest Neighbor” or “Bed of Nails” or “Max unpooling”
        • Nearest Neighbor example:
         Input:   1  2               Output:   1  1  2  2
                  3  4                         1  1  2  2
                                               3  3  4  4
                                               3  3  4  4
  - **Bed of Nails** example:
          Input:   1  2               Output:   1  0  2  0
                   3  4                         0  0  0  0
                                                3  0  4  0
                                                0  0  0  0
  * **Max unpooling** is depending on the earlier steps that was made by max pooling. You fill the pixel where max pooling took place and then fill other pixels by zero.
* Max unpooling seems to be the best idea for upsampling.
* There are an idea of Learnable Upsampling called "**Transpose Convolution**"
  * Rather than making a convolution we make the reverse.
  * Also called:
    * Upconvolution.
    * Fractionally strided convolution
    * Backward strided convolution
  * Learn the artimitic of the upsampling please refer to chapter 4 in this [paper](https://arxiv.org/abs/1603.07285).
  • Classification + Localization:
    • In this problem we want to classify the main object in the image and its location as a rectangle.
    • We assume there are one object.
    • We will create a multi task NN. The architecture are as following:
      • Convolution network layers connected to:
        • FC layers that classify the object. # The plain classification problem we know
        • FC layers that connects to a four numbers (x,y,w,h)
          • We treat Localization as a regression problem.
    • This problem will have two losses:
      • Softmax loss for classification
      • Regression (Linear loss) for the localization (L2 loss)
    • Loss = SoftmaxLoss + L2 loss
    • Often the first Conv layers are pretrained NNs like AlexNet!
    • This technique can be used in so many other problems like: Human Pose Estimation.
  • Object Detection
    • A core idea of computer vision. We will talk by details in this problem.
    • The difference between “Classification + Localization” and this problem is that here we want to detect one or mode different objects and its locations!
    • First idea is to use a sliding window
      • Worked well and long time.
      • The steps are:
        • Apply a CNN to many different crops of the image, CNN classifies each crop as object or background.
      • The problem is we need to apply CNN to huge number of locations and scales, very computationally expensive!
      • The brute force sliding window will make us take thousands of thousands of time.
    • Region Proposals will help us deciding which region we should run our NN at:
      • Find blobby image regions that are likely to contain objects.
      • Relatively fast to run; e.g. Selective Search gives 1000 region proposals in a few seconds on CPU
    • So now we can apply one of the Region proposals networks and then apply the first idea.
    • There is another idea which is called R-CNN
      • The idea is bad because its taking parts of the image -With Region Proposalsif different sizes and feed it to CNN after scaling them all to one size. Scaling is bad
      • Also its very slow.
    • Fast R-CNN is another idea that developed on R-CNN
      • It uses one CNN to do everything.
    • Faster R-CNN does its own region proposals by Inserting Region Proposal Network (RPN) to predict proposals from features.
      • The fastest of the R-CNNs.
    • Another idea is Detection without Proposals: YOLO / SSD
      • YOLO stands for you only look once.
      • YOLO/SDD is two separate algorithms.
      • Faster but not as accurate.
    • Takeaways
      • Faster R-CNN is slower but more accurate.
      • SSD/YOLO is much faster but not as accurate.
  • Denese Captioning
    • Denese Captioning is “Object Detection + Captioning”
    • Paper that covers this idea can be found here.
  • Instance Segmentation
    • This is like the full problem.
    • Rather than we want to predict the bounding box, we want to know which pixel label but also distinguish them.
    • There are a lot of ideas.
    • There are a new idea “Mask R-CNN”
      • Like R-CNN but inside it we apply the Semantic Segmentation
      • There are a lot of good results out of this paper.
      • It sums all the things that we have discussed in this lecture.
      • Performance of this seems good.

12. Visualizing and Understanding

  • We want to know what’s going on inside ConvNets?
  • People want to trust the black box (CNN) and know how it exactly works and give and good decisions.
  • A first approach is to visualize filters of the first layer.
    • Maybe the shape of the first layer filter is 5 x 5 x 3, and the number of filters are 16. Then we will have 16 different “colored” filter images.
    • It turns out that these filters learns primitive shapes and oriented edges like the human brain does.
    • These filters really looks the same on each Conv net you will train, Ex if you tried to get it out of AlexNet, VGG, GoogleNet, or ResNet.
    • This will tell you what is the first convolution layer is looking for in the image.
  • We can visualize filters from the next layers but they won’t tell us anything.
    • Maybe the shape of the first layer filter is 5 x 5 x 20, and the number of filters are 16. Then we will have 16*20 different “gray” filter images.
  • In AlexNet, there was some FC layers in the end. If we took the 4096-dimensional feature vector for an image, and collecting these feature vectors.
    • If we made a nearest neighbors between these feature vectors and get the real images of these features we will get something very good compared with running the KNN on the images directly!
    • This similarity tells us that these CNNs are really getting the semantic meaning of these images instead of on the pixels level!
    • We can make a dimensionality reduction on the 4096 dimensional feature and compress it to 2 dimensions.
      • This can be made by PCA, or t-SNE.
      • t-SNE are used more with deep learning to visualize the data. Example can be found here.
  • We can Visualize the activation maps.
    • For example if CONV5 feature map is 128 x 13 x 13, We can visualize it as 128 13 x 13 gray-scale images.
    • One of these features are activated corresponding to the input, so now we know that this particular map are looking for something.
    • Its done by Yosinski et. More info are here.
  • There are something called Maximally Activating Patches that can help us visualize the intermediate features in Convnets
    • The steps of doing this is as following:
      • We choose a layer then a neuron
        • Ex. We choose Conv5 in AlexNet which is 128 x 13 x 13 then pick channel (Neuron) 17/128
      • Run many images through the network, record values of chosen channel.
      • Visualize image patches that correspond to maximal activations.
        • We will find that each neuron is looking into a specific part of the image.
        • Extracted images are extracted using receptive field.
  • Another idea is Occlusion Experiments
    • We mask part of the image before feeding to CNN, draw heat-map of probability (Output is true) at each mask location
    • It will give you the most important parts of the image in which the Conv. Network has learned from.
  • Saliency Maps tells which pixels matter for classification
    • Like Occlusion Experiments but with a completely different approach
    • We Compute gradient of (unnormalized) class score with respect to image pixels, take absolute value and max over RGB channels. It will get us a gray image that represents the most important areas in the image.
    • This can be used for Semantic Segmentation sometimes.
  • (guided) backprop Makes something like Maximally Activating Patches but unlike it gets the pixels in which we are caring of.
    • In this technique choose a channel like Maximally Activating Patches and then compute gradient of neuron value with respect to image pixels
    • Images come out nicer if you only backprop positive gradients through each RELU (guided backprop)
  • Gradient Ascent
    • Generate a synthetic image that maximally activates a neuron.

    • Reverse of gradient decent. Instead of taking the minimum it takes the maximum.

    • We want to maximize the neuron with the input image. So here instead we are trying to learn the image that maximize the activation:

* ```python
  # R(I) is Natural image regularizer, f(I) is the neuron value.
  I *= argmax(f(I)) + R(I)
  ```
*
  • Steps of gradient ascent
    • Initialize image to zeros.
    • Forward image to compute current scores.
    • Backprop to get gradient of neuron value with respect to image pixels.
    • Make a small update to the image
  • R(I) may equal to L2 of generated image.
  • To get a better results we use a better regularizer:
    • penalize L2 norm of image; also during optimization periodically:
      • Gaussian blur image
      • Clip pixels with small values to 0
      • Clip pixels with small gradients to 0
  • A better regularizer makes out images cleaner!
  • The results in the latter layers seems to mean something more than the other layers.
  • We can fool CNN by using this procedure:
    • Start from an arbitrary image. # Random picture based on nothing.
    • Pick an arbitrary class. # Random class
    • Modify the image to maximize the class.
    • Repeat until network is fooled.
  • Results on fooling the network is pretty surprising!
    • For human eyes they are the same, but it fooled the network by adding just some noise!
  • DeepDream: Amplify existing features
    • Google released deep dream on their website.
    • What its actually doing is the same procedure as fooling the NN that we discussed, but rather than synthesizing an image to maximize a specific neuron, instead try to amplify the neuron activations at some layer in the network.
    • Steps:
      • Forward: compute activations at chosen layer. # form an input image (Any image)
      • Set gradient of chosen layer equal to its activation.
        • Equivalent to I* = arg max[I] sum(f(I)^2)
      • Backward: Compute gradient on image.
      • Update image.
    • The code of deep dream is online you can download and check it yourself.
  • Feature Inversion
    • Gives us to know what types of elements parts of the image are captured at different layers in the network.
    • Given a CNN feature vector for an image, find a new image that:
      • Matches the given feature vector.
      • looks natural (image prior regularization)
  • Texture Synthesis
    • Old problem in computer graphics.
    • Given a sample patch of some texture, can we generate a bigger image of the same texture?
    • There is an algorithm which doesn’t depend on NN:
      • Wei and Levoy, Fast Texture Synthesis using Tree-structured Vector Quantization, SIGGRAPH 2000
      • Its a really simple algorithm
    • The idea here is that this is an old problem and there are a lot of algorithms that has already solved it but simple algorithms doesn’t work well on complex textures!
    • An idea of using NN has been proposed on 2015 based on gradient ascent and called it “Neural Texture Synthesis”
      • It depends on something called Gram matrix.
  • Neural Style Transfer = Feature + Gram Reconstruction
    • Gatys, Ecker, and Bethge, Image style transfer using Convolutional neural networks, CVPR 2016
    • Implementation by pytorch here.
  • Style transfer requires many forward / backward passes through VGG; very slow!
    • Train another neural network to perform style transfer for us!
    • Fast Style Transfer is the solution.
    • Johnson, Alahi, and Fei-Fei, Perceptual Losses for Real-Time Style Transfer and Super-Resolution, ECCV 2016
    • https://github.com/jcjohnson/fast-neural-style
  • There are a lot of work on these style transfer and it continues till now!
  • Summary:
    • Activations: Nearest neighbors, Dimensionality reduction, maximal patches, occlusion
    • Gradients: Saliency maps, class visualization, fooling images, feature inversion
    • Fun: DeepDream, Style Transfer

13. Generative models

  • Generative models are type of Unsupervised learning.

  • Supervised vs Unsupervised Learning:

  • Supervised Learning Unsupervised Learning
    Data structure Data: (x, y), and x is data, y is label Data: x, Just data, no labels!
    Data price Training data is expensive in a lot of cases. Training data are cheap!
    Goal Learn a function to map x -> y Learn some underlying hidden structure of the data
    Examples Classification, regression, object detection, semantic segmentation, image captioning Clustering, dimensionality reduction, feature learning, density estimation
  • Autoencoders are a Feature learning technique.

    • It contains an encoder and a decoder. The encoder downsamples the image while the decoder upsamples the features.
    • The loss are L2 loss.
  • Density estimation is where we want to learn/estimate the underlaying distribution for the data!

  • There are a lot of research open problems in unsupervised learning compared with supervised learning!

  • Generative Models

    • Given training data, generate new samples from same distribution.
    • Addresses density estimation, a core problem in unsupervised learning.
    • We have different ways to do this:
      • Explicit density estimation: explicitly define and solve for the learning model.
      • Learn model that can sample from the learning model without explicitly defining it.
    • Why Generative Models?
      • Realistic samples for artwork, super-resolution, colorization, etc
      • Generative models of time-series data can be used for simulation and planning (reinforcement learning applications!)
      • Training generative models can also enable inference of latent representations that can be useful as general features
    • Taxonomy of Generative Models:
    • In this lecture we will discuss: PixelRNN/CNN, Variational Autoencoder, and GANs as they are the popular models in research now.
  • PixelRNN and PixelCNN

    • In a full visible belief network we use the chain rule to decompose likelihood of an image x into product of 1-d distributions
      • p(x) = sum(p(x[i]| x[1]x[2]....x[i-1]))
      • Where p(x) is the Likelihood of image x and x[i] is Probability of i’th pixel value given all previous pixels.
    • To solve the problem we need to maximize the likelihood of training data but the distribution is so complex over pixel values.
    • Also we will need to define ordering of previous pixels.
    • PixelRNN
      • Founded by [van der Oord et al. 2016]
      • Dependency on previous pixels modeled using an RNN (LSTM)
      • Generate image pixels starting from corner
      • Drawback: sequential generation is slow! because you have to generate pixel by pixel!
    • PixelCNN
      • Also Founded by [van der Oord et al. 2016]
      • Still generate image pixels starting from corner.
      • Dependency on previous pixels now modeled using a CNN over context region
      • Training is faster than PixelRNN (can parallelize convolutions since context region values known from training images)
      • Generation must still proceed sequentially still slow.
    • There are some tricks to improve PixelRNN & PixelCNN.
    • PixelRNN and PixelCNN can generate good samples and are still active area of research.
  • Autoencoders

    • Unsupervised approach for learning a lower-dimensional feature representation from unlabeled training data.
    • Consists of Encoder and decoder.
    • The encoder:
      • Converts the input x to the features z. z should be smaller than x to get only the important values out of the input. We can call this dimensionality reduction.
      • The encoder can be made with:
        • Linear or non linear layers (earlier days days)
        • Deep fully connected NN (Then)
        • RELU CNN (Currently we use this on images)
    • The decoder:
      • We want the encoder to map the features we have produced to output something similar to x or the same x.
      • The decoder can be made with the same techniques we made the encoder and currently it uses a RELU CNN.
    • The encoder is a conv layer while the decoder is deconv layer! Means Decreasing and then increasing.
    • The loss function is L2 loss function:
      • L[i] = |y[i] - y'[i]|^2
        • After training we though away the decoder.# Now we have the features we need
    • We can use this encoder we have to make a supervised model.
      • The value of this it can learn a good feature representation to the input you have.
      • A lot of times we will have a small amount of data to solve problem. One way to tackle this is to use an Autoencoder that learns how to get features from images and train your small dataset on top of that model.
    • The question is can we generate data (Images) from this Autoencoder?
  • Variational Autoencoders (VAE)

    • Probabilistic spin on Autoencoders - will let us sample from the model to generate data!
    • We have z as the features vector that has been formed using the encoder.
    • We then choose prior p(z) to be simple, e.g. Gaussian.
      • Reasonable for hidden attributes: e.g. pose, how much smile.
    • Conditional p(x|z) is complex (generates image) => represent with neural network
    • But we cant compute integral for P(z)p(x|z)dz as the following equation:
    • After resolving all the equations that solves the last equation we should get this:
    • Variational Autoencoder are an approach to generative models but Samples blurrier and lower quality compared to state-of-the-art (GANs)
    • Active areas of research:
      • More flexible approximations, e.g. richer approximate posterior instead of diagonal Gaussian
      • Incorporating structure in latent variables
  • Generative Adversarial Networks (GANs)

    • GANs don’t work with any explicit density function!
    • Instead, take game-theoretic approach: learn to generate from training distribution through 2-player game.
    • Yann LeCun, who oversees AI research at Facebook, has called GANs:
      • The coolest idea in deep learning in the last 20 years

    • Problem: Want to sample from complex, high-dimensional training distribution. No direct way to do this as we have discussed!
    • Solution: Sample from a simple distribution, e.g. random noise. Learn transformation to training distribution.
    • So we create a noise image which are drawn from simple distribution feed it to NN we will call it a generator network that should learn to transform this into the distribution we want.
    • Training GANs: Two-player game:
      • Generator network: try to fool the discriminator by generating real-looking images.
      • Discriminator network: try to distinguish between real and fake images.
    • If we are able to train the Discriminator well then we can train the generator to generate the right images.
    • The loss function of GANs as minimax game are here:
    • The label of the generator network will be 0 and the real images are 1.
    • To train the network we will do:
      • Gradient ascent on discriminator.
      • Gradient ascent on generator but with different loss.
    • You can read the full algorithm with the equations here:
    • Aside: Jointly training two networks is challenging, can be unstable. Choosing objectives with better loss landscapes helps training is an active area of research.
    • Convolutional Architectures:
      • Generator is an upsampling network with fractionally-strided convolutions Discriminator is a Convolutional network.
      • Guidelines for stable deep Conv GANs:
        • Replace any pooling layers with strided convs (discriminator) and fractional-strided convs with (Generator).
        • Use batch norm for both networks.
        • Remove fully connected hidden layers for deeper architectures.
        • Use RELU activation in generator for all layers except the output which uses Tanh
        • Use leaky RELU in discriminator for all the layers.
    • 2017 is the year of the GANs! it has exploded and there are some really good results.
    • Active areas of research also is GANs for all kinds of applications.
    • The GAN zoo can be found here: https://github.com/hindupuravinash/the-gan-zoo
    • Tips and tricks for using GANs: https://github.com/soumith/ganhacks
    • NIPS 2016 Tutorial GANs: https://www.youtube.com/watch?v=AJVyzd0rqdc

14. Deep reinforcement learning

  • This section contains a lot of math.
  • Reinforcement learning problems are involving an agent interacting with an environment, which provides numeric reward signals.
  • Steps are:
    • Environment –> State s[t] –> Agent –> Action a[t] –> Environment –> Reward r[t] + Next state s[t+1] –> Agent –> and so on..
  • Our goal is learn how to take actions in order to maximize reward.
  • An example is Robot Locomotion:
    • Objective: Make the robot move forward
    • State: Angle and position of the joints
    • Action: Torques applied on joints
    • 1 at each time step upright + forward movement
  • Another example is Atari Games:
    • Deep learning has a good state of art in this problem.
    • Objective: Complete the game with the highest score.
    • State: Raw pixel inputs of the game state.
    • Action: Game controls e.g. Left, Right, Up, Down
    • Reward: Score increase/decrease at each time step
  • Go game is another example which AlphaGo team won in the last year (2016) was a big achievement for AI and deep learning because the problem was so hard.
  • We can mathematically formulate the RL (reinforcement learning) by using Markov Decision Process
  • Markov Decision Process
    • Defined by (S, A, R, P, Y) where:
      • S: set of possible states.
      • A: set of possible actions
      • R: distribution of reward given (state, action) pair
      • P: transition probability i.e. distribution over next state given (state, action) pair
        • Y: discount factor # How much we value rewards coming up soon verses later on.
    • Algorithm:
      • At time step t=0, environment samples initial state s[0]
      • Then, for t=0 until done:
        • Agent selects action a[t]
        • Environment samples reward from R with (s[t], a[t])
        • Environment samples next state from P with (s[t], a[t])
        • Agent receives reward r[t] and next state s[t+1]
    • A policy pi is a function from S to A that specifies what action to take in each state.
    • Objective: find policy pi* that maximizes cumulative discounted reward: Sum(Y^t * r[t], t>0)
    • For example:
    • Solution would be:
  • The value function at state s, is the expected cumulative reward from following the policy from state s:
    • V[pi](s) = Sum(Y^t * r[t], t>0) given s0 = s, pi
  • The Q-value function at state s and action a, is the expected cumulative reward from taking action a in state s and then following the policy:
    • Q[pi](s,a) = Sum(Y^t * r[t], t>0) given s0 = s,a0 = a, pi
  • The optimal Q-value function Q* is the maximum expected cumulative reward achievable from a given (state, action) pair:
    • Q*[s,a] = Max(for all of pi on (Sum(Y^t * r[t], t>0) given s0 = s,a0 = a, pi))
  • Bellman equation
    • Important thing is RL.
    • Given any state action pair (s,a) the value of this pair is going to be the reward that you are going to get r plus the value of the state that you end in.
    • Q*[s,a] = r + Y * max Q*(s',a') given s,a # Hint there is no policy in the equation
    • The optimal policy pi* corresponds to taking the best action in any state as specified by Q*
  • We can get the optimal policy using the value iteration algorithm that uses the Bellman equation as an iterative update
  • Due to the huge space dimensions in real world applications we will use a function approximator to estimate Q(s,a). E.g. a neural network! this is called Q-learning
    • Any time we have a complex function that we cannot represent we use Neural networks!
  • Q-learning
    • The first deep learning algorithm that solves the RL.
    • Use a function approximator to estimate the action-value function
    • If the function approximator is a deep neural network => deep q-learning
    • The loss function:
  • Now lets consider the “Playing Atari Games” problem:
    • Our total reward are usually the reward we are seeing in the top of the screen.
    • Q-network Architecture:
    • Learning from batches of consecutive samples is a problem. If we recorded a training data and set the NN to work with it, if the data aren’t enough we will go to a high bias error. so we should use “experience replay” instead of consecutive samples where the NN will try the game again and again until it masters it.
    • Continually update a replay memory table of transitions (s[t] , a[t] , r[t] , s[t+1]) as game (experience) episodes are played.
    • Train Q-network on random minibatches of transitions from the replay memory, instead of consecutive samples.
    • The full algorithm:
    • A video that demonstrate the algorithm on Atari game can be found here: “https://www.youtube.com/watch?v=V1eYniJ0Rnk"
  • Policy Gradients
    • The second deep learning algorithm that solves the RL.
    • The problem with Q-function is that the Q-function can be very complicated.
      • Example: a robot grasping an object has a very high-dimensional state.
      • But the policy can be much simpler: just close your hand.
    • Can we learn a policy directly, e.g. finding the best policy from a collection of policies?
    • Policy Gradients equations:
    • Converges to a local minima of J(ceta), often good enough!
    • REINFORCE algorithm is the algorithm that will get/predict us the best policy
    • Equation and intuition of the Reinforce algorithm:
      • the problem was high variance with this equation can we solve this?
      • variance reduction is an active research area!
    • Recurrent Attention Model (RAM) is an algorithm that are based on REINFORCE algorithm and is used for image classification problems:
      • Take a sequence of “glimpses” selectively focusing on regions of the image, to predict class
        • Inspiration from human perception and eye movements.
        • Saves computational resources => scalability
          • If an image with high resolution you can save a lot of computations
        • Able to ignore clutter / irrelevant parts of image
      • RAM is used now in a lot of tasks: including fine-grained image recognition, image captioning, and visual question-answering
    • AlphaGo are using a mix of supervised learning and reinforcement learning, It also using policy gradients.
  • A good course from Standford on deep reinforcement learning
  • A good course on deep reinforcement learning (2017)
  • A good article

15. Efficient Methods and Hardware for Deep Learning

  • The original lecture was given by Song Han a PhD Candidate at standford.
  • Deep Conv nets, Recurrent nets, and deep reinforcement learning are shaping a lot of applications and changing a lot of our lives.
    • Like self driving cars, machine translations, alphaGo and so on.
  • But the trend now says that if we want a high accuracy we need a larger (Deeper) models.
    • The model size in ImageNet competation from 2012 to 2015 has increased 16x to achieve a high accurecy.
    • Deep speech 2 has 10x training operations than deep speech 1 and thats in only one year! # At Baidu
  • There are three challenges we got from this
    • Model Size
      • Its hard to deploy larger models on our PCs, mobiles, or cars.
    • Speed
      • ResNet152 took 1.5 weeks to train and give the 6.16% accurecy!
      • Long training time limits ML researcher’s productivity
    • Energy Efficiency
      • AlphaGo: 1920 CPUs and 280 GPUs. $3000 electric bill per game
      • If we use this on our mobile it will drain the battery.
      • Google mentioned in thier blog if all the users used google speech for 3 minutes, they have to double thier data-center!
      • Where is the Energy Consumed?
        • larger model => more memory reference => more energy
  • We can improve the Efficiency of Deep Learning by Algorithm-Hardware Co-Design.
    • From both the hardware and the algorithm perspectives.
  • Hardware 101: the Family
    • General Purpose # Used for any hardware
      • CPU # Latency oriented, Single strong threaded like a single elepahnt
        • GPU # Throughput oriented, So many small threads like a lot of ants
      • GPGPU
        • Specialized HW #Tuned for a domain of applications
          • FPGA# Programmable logic, Its cheaper but less effiecnet`
          • ASIC# Fixed logic, Designed for a certian applications (Can be designed for deep learning applications)
  • Hardware 101: Number Representation
    • Numbers in computer are represented with a discrete memory.
    • Its very good and energy efficent for hardware to go from 32 bit to 16 bit in float point operations.
  • Part 1: Algorithms for Efficient Inference
    • Pruning neural networks

      • Idea is can we remove some of the weights/neurons and the NN still behave the same?

      • In 2015 Han made AlexNet parameters from 60 million to 6 Million! by using the idea of Pruning.

      • Pruning can be applied to CNN and RNN, iteratively it will reach the same accurecy as the original.

      • Pruning actually happends to humans:

        • Newborn(50 Trillion Synapses) ==> 1 year old(1000 Trillion Synapses) ==> Adolescent(500 Trillion Synapses)
      • Algorithm:

        1. Get Trained network.
        2. Evaluate importance of neurons.
        3. Remove the least important neuron.
        4. Fine tune the network.
        5. If we need to continue Pruning we go to step 2 again else we stop.
    • Weight Sharing

      • The idea is that we want to make the numbers is our models less.
      • Trained Quantization:
        • Example: all weight values that are 2.09, 2.12, 1.92, 1.87 will be replaced by 2
        • To do that we can make k means clustering on a filter for example and reduce the numbers in it. By using this we can also reduce the number of operations that are used from calculating the gradients.
        • After Trained Quantization the Weights are Discrete.
        • Trained Quantization can reduce the number of bits we need for a number in each layer significantly.
      • Pruning + Trained Quantization can Work Together to reduce the size of the model.
      • Huffman Coding
        • We can use Huffman Coding to reduce/compress the number of bits of the weight.
        • In-frequent weights: use more bits to represent.
        • Frequent weights: use less bits to represent.
      • Using Pruning + Trained Quantization + Huffman Coding is called deep compression.
        • SqueezeNet
          • All the models we have talked about till now was using a pretrained models. Can we make a new arcitecutre that saves memory and computations?
          • SqueezeNet gets the alexnet accurecy with 50x fewer parameters and 0.5 model size.
        • SqueezeNet can even be further compressed by applying deep compression on them.
        • Models are now more energy efficient and has speed up a lot.
        • Deep compression was applied in Industry through facebook and Baidu.
    • Quantization

      • Algorithm (Quantizing the Weight and Activation):
        • Train with float.
        • Quantizing the weight and activation:
          • Gather the statistics for weight and activation.
          • Choose proper radix point position.
        • Fine-tune in float format.
        • Convert to fixed-point format.
    • Low Rank Approximation

      • Is another size reduction algorithm that are used for CNN.
      • Idea is decompose the conv layer and then try both of the composed layers.
    • Binary / Ternary Net

      • Can we only use three numbers to represent weights in NN?
      • The size will be much less with only -1, 0, 1.
      • This is a new idea that was published in 2017 “Zhu, Han, Mao, Dally. Trained Ternary Quantization, ICLR’17”
      • Works after training.
      • They have tried it on AlexNet and it has reached almost the same error as AlexNet.
      • Number of operation will increase per register: https://xnor.ai/
    • Winograd Transformation

      • Based on 3x3 WINOGRAD Convolutions which makes less operations than the ordiany convolution
      • cuDNN 5 uses the WINOGRAD Convolutions which has improved the speed.
  • Part 2: Hardware for Efficient Inference
    • There are a lot of ASICs that we developed for deep learning. All in which has the same goal of minimize memory access.
      • Eyeriss MIT
      • DaDiannao
      • TPU Google (Tensor processing unit)
        • It can be put to replace the disk in the server.
        • Up to 4 cards per server.
        • Power consumed by this hardware is a lot less than a GPU and the size of the chip is less.
      • EIE Standford
        • By Han at 2016 [et al. ISCA’16]
        • We don’t save zero weights and make quantization for the numbers from the hardware.
        • He says that EIE has a better Throughput and energy efficient.
  • Part 3: Algorithms for Efficient Training
    • Parallelization
      • Data Parallel–Run multiple inputs in parallel
        • Ex. Run two images in the same time!
        • Run multiple training examples in parallel.
        • Limited by batch size.
        • Gradients have to be applied by a master node.
      • Model Parallel
        • Split up the Model–i.e. the network
        • Split model over multiple processors By layer.
      • Hyper-Parameter Parallel
        • Try many alternative networks in parallel.
        • Easy to get 16-64 GPUs training one model in parallel.
    • Mixed Precision with FP16 and FP32
      • We have discussed that if we use 16 bit real numbers all over the model the energy cost will be less by x4.
      • Can we use a model entirely with 16 bit number? We can partially do this with mixed FP16 and FP32. We use 16 bit everywhere but at some points we need the FP32.
      • By example in multiplying FP16 by FP16 we will need FP32.
      • After you train the model you can be a near accuracy of the famous models like AlexNet and ResNet.
    • Model Distillation
      • The question is can we use a senior (Good) trained neural network(s) and make them guide a student (New) neural network?
      • For more information look at Hinton et al. Dark knowledge / Distilling the Knowledge in a Neural Network
    • DSD: Dense-Sparse-Dense Training
      • Han et al. “DSD: Dense-Sparse-Dense Training for Deep Neural Networks”, ICLR 2017
      • Has a better regularization.
      • The idea is Train the model lets call this the Dense, we then apply Pruning to it lets call this sparse.
      • DSD produces same model architecture but can find better optimization solution arrives at better local minima, and achieves higher prediction accuracy.
      • After the above two steps we go connect the remain connection and learn them again (To dense again).
      • This improves the performace a lot in many deep learning models.
  • Part 4: Hardware for Efficient Training
    • GPUs for training:
      • Nvidia PASCAL GP100 (2016)
      • Nvidia Volta GV100 (2017)
        • Can make mixed precision operations!
        • So powerful.
        • The new neclar bomb!
    • Google Announced “Google Cloud TPU” on May 2017!
      • Cloud TPU delivers up to 180 teraflops to train and run machine learning models.
      • One of our new large-scale translation models used to take a full day to train on 32 of the best commercially-available GPUs—now it trains to the same accuracy in an afternoon using just one eighth of a TPU pod.
  • We have moved from PC Era ==> Mobile-First Era ==> AI-First Era

16. Adversarial Examples and Adversarial Training

  • What are adversarial examples?
    • Since 2013, deep neural networks have matched human performance at..
      • Face recognition
      • Object recognition
      • Captcha recognition
        • Because its accuracy was higher than humans, Websites tried to find another solution than Captcha.
      • And other tasks..
    • Before 2013 no body was surprised if they saw a computer made a mistake! But now the deep learning exists and its so important to know the problems and the causes.
    • Adversarial are problems and unusual mistake that deep learning make.
    • This topic wasn’t hot until deep learning can now do better and better than human!
    • An adversarial is an example that has been carefully computed to to be misclassified.
    • In a lot of cases the adversarial image isn’t changed much compared to the original image from the human perspective.
    • History of recent papers:
      • Biggio 2013: fool neural nets.
      • Szegedy et al 2013: fool ImageNet classifiers imperceptibly
      • Goodfellow et al 2014: cheap, closed form attack.
    • So the first story was in 2013. When Szegedy had a CNN that can classify images very well.
      • He wanted to understand more about how CNN works to improve it.
      • He give an image of an object and by using gradient ascent he tried to update the images so that it can be another object.
      • Strangely he found that the result image hasn’t changed much from the human perspective!
      • If you tried it you won’t notify any change and you will think that this is a bug! but it isn’t if you go for the image you will notice that they are completely different!
    • These mistakes can be found in almost any deep learning algorithm we have studied!
      • It turns out that RBF (Radial Basis Network) can resist this.
      • Deep Models for Density Estimation can resist this.
    • Not just for neural nets can be fooled:
      • Linear models
        • Logistic regression
        • Softmax regression
        • SVMs
      • Decision trees
      • Nearest neighbors
  • Why do adversarial happen?
    • In the process in trying to understand what is happening, in 2016 they thought it was from overfitting models in the high dimensional data case.
      • Because in such high dimensions we could have some random errors which can be found.
      • So if we trained a model with another parameters it should not make the same mistake?
      • They found that not right. Models are reaching to the same mistakes so it doesn’t mean its overfitting.
    • In the previous mentioned experiment the found that the problem is caused by systematic thing not a random.
      • If they add some vector to an example it would misclassified to any model.
    • Maybe they are coming from underfitting not overfitting.
    • Modern deep nets are very piecewise linear
      • Rectified linear unit
      • Carefully tuned sigmoid # Most of the time we are inside the linear curve
      • Maxout
      • LSTM
    • Relation between the parameter and the output are non linear because it’s multiplied together thats what make training NN difficult, while mapping from linear from input and output are linear and much easier.
  • How can adversarial be used to compromise machine learning systems?
    • If we are experimenting how easy a NN to fool, We want to make sure we are actually fooling it not just changing the output class, and if we are attackers we want to make this behavior to the NN (Get hole).

    • When we build Adversarial example we use the max norm constrain to perturbation.

    • The fast gradient sign method:

      • This method comes from the fact that almost all NN are using a linear activations (Like RELU) the assumption we have told before.
      • No pixel can be changed more than some amount epsilon.
      • Fast way is to take the gradient of the cost you used to train the network with respect to the input and then take the sign of that gradient multiply this by epsilon.
      • Equation:
        • Xdash = x + epslion * (sign of the gradient)
        • Where Xdash is the adversarial example and x is the normal example
      • So it can be detected by just using the sign (direction) and some epsilon.
    • Some attacks are based on ADAM optimizer.

    • Adversarial examples are not random noises!

    • NN are trained on some distribution and behaves well in that distribution. But if you shift this distribution the NN won’t answer the right answers. They will be so easy to fool.

    • deep RL can also be fooled.

    • Attack of the weights:

      • In linear models, We can take the learned weights image, take the signs of the image and add it to any example to force the class of the weights to be true. Andrej Karpathy, “Breaking Linear Classifiers on ImageNet”
    • It turns out that some of the linaer models performs well (We cant get advertisal from them easily)

      • In particular Shallow RBFs network resist adversarial perturbation # By The fast gradient sign method
        • The problem is RBFs doesn’t get so much accuracy on the datasets because its just a shallow model and if you tried to get this model deeper the gradients will become zero in almost all the layers.
        • RBFs are so difficult to train even with batch norm. algorithm.
        • Ian thinks if we have a better hyper parameters or a better optimization algorithm that gradient decent we will be able to train RBFs and solve the adversarial problem!
    • We also can use another model to fool current model. Ex use an SVM to fool a deep NN.

      • For more details follow the paper: “Papernot 2016”
    • Transferability Attack

      1. Target model with unknown weights, machine learning algorithm, training set; maybe non differentiable
      2. Make your training set from this model using inputs from you, send them to the model and then get outputs from the model
      3. Train you own model. “Following some table from Papernot 2016”
      4. Create an Adversarial example on your model.
      5. Use these examples against the model you are targeting.
      6. You are almost likely to get good results and fool this target!
    • In Transferability Attack to increase your probability by 100% of fooling a network, You can make more than just one model may be five models and then apply them. “(Liu et al, 2016)”

    • Adversarial Examples are works for human brain also! for example images that tricks your eyes. They are a lot over the Internet.

    • In practice some researches have fooled real models from (MetaMind, Amazon, Google)

    • Someone has uploaded some perturbation into facebook and facebook was fooled :D

  • What are the defenses?
    • A lot of defenses Ian tried failed really bad! Including:
      • Ensembles
      • Weight decay
      • Dropout
      • Adding noise at train time or at test time
      • Removing perturbation with an autoencoder
      • Generative modeling
    • Universal approximator theorem
      • Whatever shape we would like our classification function to have a big enough NN can make it.
      • We could have train a NN that detects the Adversarial!
    • Linear models & KNN can be fooled easier than NN. Neural nets can actually become more secure than other models. Adversarial trained neural nets have the best empirical success rate on adversarial examples of any machine learning model.
      • Deep NNs can be trained with non linear functions but we will just need a good optimization technique or solve the problem with using such linear activator like “RELU”
  • How to use adversarial examples to improve machine learning, even when there is no adversary?
    • Universal engineering machine (model-based optimization) #Is called Universal engineering machine by Ian
      • For example:
        • Imagine that we want to design a car that are fast.
        • We trained a NN to look at the blueprints of a car and tell us if the blueprint will make us a fast car or not.
        • The idea here is to optimize the input to the network so that the output will max this could give us the best blueprint for a car!
      • Make new inventions by finding input that maximizes model’s predicted performance.
      • Right now by using adversarial examples we are just getting the results we don’t like but if we have solve this problem we can have the fastest car, the best GPU, the best chair, new drugs…..
    • The whole adversarial is an active area of research especially defending the network!
  • Conclusion
    • Attacking is easy
    • Defending is difficult
    • Adversarial training provides regularization and semi-supervised learning
    • The out-of-domain input problem is a bottleneck for model-based optimization generally
  • There are a Github code that can make you learn everything about adversarial by code (Built above tensorflow):





These Notes was made by Mahmoud Badry @2017

6.3 - MK Internet of Things

MK Internet of Things

  • Kode: TKE194945 Internet of Things
  • SKS: 3 SKS
  • Jadwal
    • Kelas A: Ruang E-205, Kamis 13.00, 12 mhs, 1 mhs MBKM

6.4 - MK Pengolahan Sinyal Digital

MK Pengolahan Sinyal Digital

  • Kode: TKE192227 Pengolahan Sinyal Digital
  • SKS : 3 SKS
  • Jadwal:
    • Kelas B: Ruang E-101, Rabu 07.00, 35 mhs
    • Kelas A: Ruang E-101, Rabu 09.45, 50 mhs

Identitas

  • Kode Mata Kuliah: TKE192227
  • SKS Mata Kuliah: 3 SKS
  • Semester Mata Kuliah: 4
  • Sifat Mata Kuliah: Teknik Elektro Inti (TEI)

Materi

  1. Pertemuan 1
  2. Pertemuan 2
  3. Pertemuan 3
  4. Pertemuan 4
  5. Pertemuan 5
  6. Pertemuan 6
  7. Pertemuan 7

Referensi

  • Li Tan, Digital Signal Processing

6.5 - MK Sistem Kendali Cerdas

MK Sistem Kendali Cerdas

Identitas

  • Kode : TKE194941 Sistem Kendali Cerdas
  • SKS : 3 SKS
  • Jadwal:
    • Kelas A : Ruang E-201, Jum’at 13.55, 3 mhs
  • Metode: Case-based dan Project-based Learning
  • Semester Mata Kuliah: 6
  • Sifat Mata Kuliah: Teknik Elektro Pendalaman (TED)

Materi

  1. Pendahuluan
  2. Dasar-dasar Logika Fuzzy
  3. Sistem Inferensi Fuzzy
  4. Sistem Inferensi Fuzzy untuk Sistem Kendali
  5. Proyek Sistem Inferensi Fuzzy untuk Sistem Kendali
  6. Proyek Sistem Inferensi Fuzzy untuk Sistem Kendali
  7. Pendahuluan Neural Network
  8. Neural Network dalam Sistem Kendali
  9. Neural Network dalam Sistem Kendali
  10. Neural Network dalam Sistem Kendali
  11. Sistem Neuro-Fuzzy
  12. Sistem Neuro-Fuzzy untuk Sistem Kendali
  13. Proyek Sistem Neuro-Fuzzy untuk Sistem Kendali
  14. Proyek Sistem Neuro-Fuzzy untuk Sistem Kendali

Referensi Utama

Referensi Tambahan

Neuro-fuzzy in Python

Libraries

  • numpy conda install -c conda-forge numpy, pip install numpy
  • scipy conda install -c conda-forge scipy, pip install scipy
  • scikit fuzzy conda install -c conda-forge scikit-fuzzy, pip install scikit-fuzzy
  • scikit learn conda install -c conda-forge scikit-learn, pip install scikit-learn
  • fuzzylite pip install pyfuzzylite
  • pandas conda install -c conda-forge pandas, pip install pandas
  • statsmodels conda install -c conda-forge statsmodels,pip install statsmodels
  • keras conda install -c conda-forge keras, pip install keras
  • anfis pip install anfis
  • bokeh conda install -c conda-forge bokeh, pip install bokeh
  • fuzzycmeans pip install fuzzycmeans

Downgrade Python for installing keras and tensorflow

  • python --version
  • conda search python : check installed version of python
  • conda install python=3.6.0: downgrade to your preferred python

6.6 - MK Sistem Kendali

MK Sistem Kendali

Identitas MK

  • Kode Mata Kuliah: TKE192221
  • SKS Mata Kuliah: 2 SKS
  • Semester Mata Kuliah: 4
  • Sifat Mata Kuliah: Teknik Elektro Inti (TEI)
  • Jadwal :
    • Kelas A : Ruang C-201, Selasa 07.55, 45 mhs
    • Kelas B : Ruang C-201, Selasa 10.40, 47 mhs

Referensi

Software

Interactive Learning

Video

Kuliah

01-Pendahuluan Sistem Kendali

Interactive Course for Control Theory

  • Akses situs Interactive Course for Control Theory
  • Buat akun ICCT, cek email untuk mendapatkan username dan password
  • Login ke Interactive Course for Control Theory
  • Selanjutnya anda akan berinteraksi dengan Jupyter Notebook di ICCT
  • Klik folder ICCT pada Jupyter Notebook, lalu klik Table-of-Contents-ICCT.ipynb
  • Klik salah satu link, misalnya 1.1.1 Complex Numbers in Cartesian Form di folder 1.1 Complex Numbers
  • Pada link tersebut, anda berada di Jupyter Notebook M-01_Complex_numbers_Cartesian_form.ipynb
  • Tidak perlu terlalu panik dengan kode Python yang muncul.
  • Pilih menu lalu
  • Silakan baca Notebook-nya, pahami penjelasan atau penugasannya.
  • Lalu anda secara interaktif melakukan pengubahan berbagai menu di dalam Notebook.
  • Anda dapat pula unduh atau screenshoot citranya.
  • Jika sudah cukup dan selesai, pilih menu lalu untuk mematikan Jupyter Notebook. Biasakan untuk melakukan hal ini setiap kali selesai bekerja dengan Jupyter Notebook.

Pertemuan 2

Pertemuan 3

Pertemuan 4

Pertemuan 5

Pertemuan 6

Pertemuan 7

UTS

Pertemuan 8

Pertemuan 9

Pertemuan 10

Pertemuan 11

Pertemuan 12

Pertemuan 13

Pertemuan 14

UAS

6.7 - Rangkaian Listrik

Rangkaian Listrik

Rangkaian AC (steady state)

$$ X_L=\omega L $$
$$ Z_L=jX_L=j\omega L=L\angle 90^{\circ} $$
$$ X_C= \frac{1}{\omega C} $$
$$ Z_C=-jX_C=\frac{-j}{\omega C}=\frac{1}{j\omega C}=C\angle -90^{\circ} $$

Rangkaian DC (steady state)

Pada DC, L adalah short circuit, C adalah open circuit. Bisa dicermati karena $\omega = 2 \pi f$ dengan $f=0$.

6.8 - Embedded Systems

Embedded Systems

Free Book

  • F(E) Foundations of Embedded Systems

Free Course

6.9 - Machine Learning Andrew Ng Quizzes

Machine Learning Andrew Ng Quizzes

Week 1

Introduction

  1. A computer program is said to learn from experience E with respect to some task T and some performance measure P if its performance on T, as measured by P, improves with experience E. Suppose we feed a learning algorithm a lot of historical weather data, and have it learn to predict weather. What would be a reasonable choice for P?
    • 🗹 The probability of it correctly predicting a future date’s weather.
    • ☐ The weather prediction task.
    • ☐ The process of the algorithm examining a large amount of historical weather data.
    • ☐ None of these.
  2. A computer program is said to learn from experience E with respect to some task T and some performance measure P if its performance on T, as measured by P, improves with experience E. Suppose we feed a learning algorithm a lot of historical weather data, and have it learn to predict weather. In this setting, what is T?
    • 🗹 The weather prediction task.
    • ☐ None of these.
    • ☐ The probability of it correctly predicting a future date’s weather.
    • ☐ The process of the algorithm examining a large amount of historical weather data.
  3. Suppose you are working on weather prediction, and use a learning algorithm to predict tomorrow’s temperature (in degrees Centigrade/Fahrenheit).
    Would you treat this as a classification or a regression problem?
    • 🗹 Regression
    • ☐ Classification
  4. Suppose you are working on weather prediction, and your weather station makes one of three predictions for each day’s weather: Sunny, Cloudy or Rainy. You’d like to use a learning algorithm to predict tomorrow’s weather.
    Would you treat this as a classification or a regression problem?
    • ☐ Regression
    • 🗹 Classification
  5. Suppose you are working on stock market prediction, and you would like to predict the price of a particular stock tomorrow (measured in dollars). You want to use a learning algorithm for this.
    Would you treat this as a classification or a regression problem?
    • 🗹 Regression
    • ☐ Classification
  6. Suppose you are working on stock market prediction. You would like to predict whether or not a certain company will declare bankruptcy within the next 7 days (by training on data of similar companies that had previously been at risk of bankruptcy).
    Would you treat this as a classification or a regression problem?
    • Regression
    • 🗹 Classification
  7. Suppose you are working on stock market prediction, Typically tens of millions of shares of Microsoft stock are traded (i.e., bought/sold) each day. You would like to predict the number of Microsoft shares that will be traded tomorrow.
    Would you treat this as a classification or a regression problem?
    • 🗹 Regression
    • Classification
  8. Some of the problems below are best addressed using a supervised learning algorithm, and the others with an unsupervised learning algorithm. Which of the following would you apply supervised learning to? (Select all that apply.) In each case, assume some appropriate dataset is available for your algorithm to learn from.
    • 🗹 Given historical data of children’s ages and heights, predict children’s height as a function of their age.
    • 🗹 Given 50 articles written by male authors, and 50 articles written by female authors, learn to predict the gender of a new manuscript’s author (when the identity of this author is unknown).
    • Take a collection of 1000 essays written on the US Economy, and find a way to automatically group these essays into a small number of groups of essays that are somehow “similar” or “related”.
    • Examine a large collection of emails that are known to be spam email, to discover if there are sub-types of spam mail.
  9. Some of the problems below are best addressed using a supervised learning algorithm, and the others with an unsupervised learning algorithm. Which of the following would you apply supervised learning to? (Select all that apply.) In each case, assume some appropriate dataset is available for your algorithm to learn from.
    • ☐ Given data on how 1000 medical patients respond to an experimental drug (such as effectiveness of the treatment, side effects, etc.), discover whether there are different categories or “types” of patients in terms of how they respond to the drug, and if so what these categories are.
    • ☐ Given a large dataset of medical records from patients suffering from heart disease, try to learn whether there might be different clusters of such patients for which we might tailor separate treatments.
    • 🗹 Have a computer examine an audio clip of a piece of music, and classify whether or not there are vocals (i.e., a human voice singing) in that audio clip, or if it is a clip of only musical instruments (and no vocals).
    • 🗹 Given genetic (DNA) data from a person, predict the odds of him/her developing diabetes over the next 10 years.
  10. Some of the problems below are best addressed using a supervised learning algorithm, and the others with an unsupervised learning algorithm. Which of the following would you apply supervised learning to? (Select all that apply.) In each case, assume some appropriate dataset is available for your algorithm to learn from.
    • ☐ Take a collection of 1000 essays written on the US Economy, and find a way to automatically group these essays into a small number of groups of essays that are somehow “similar” or “related”.
    • 🗹 Given genetic (DNA) data from a person, predict the odds of him/her developing diabetes over the next 10 years.
    • ☐ Examine a large collection of emails that are known to be spam email, to discover if there are sub-types of spam mail.
    • 🗹 Examine the statistics of two football teams, and predict which team will win tomorrow’s match (given historical data of teams’ wins/losses to learn from).
  11. Which of these is a reasonable definition of machine learning?
    • ☐ Machine learning is the science of programming computers.
    • ☐ Machine learning learns from labeled data.
    • ☐ Machine learning is the field of allowing robots to act intelligently.
    • 🗹 Machine learning is the field of study that gives computers the ability to learn without being explicitly programmed.

Linear Regression with One Variable :

  1. Consider the problem of predicting how well a student does in her second year of college/university, given how well she did in her first year. Specifically, let x be equal to the number of “A” grades (including A-. A and A+ grades) that a student receives in their first year of college (freshmen year). We would like to predict the value of y, which we define as the number of “A” grades they get in their second year (sophomore year).
    Here each row is one training example. Recall that in linear regression, our hypothesis is $h_\theta(x)=\theta_0+\theta_1x$ to denote the number of training examples.
    enter image description here
    For the training set given above (note that this training set may also be referenced in other questions in this $m$)? In the box below, please enter your answer (which should be a number between 0 and 10).

    4 
    
  2. Many substances that can burn (such as gasoline and alcohol) have a chemical structure based on carbon atoms; for this reason they are called hydrocarbons. A chemist wants to understand how the number of carbon atoms in a molecule affects how much energy is released when that molecule combusts (meaning that it is burned). The chemist obtains the dataset below. In the column on the right, “kJ/mol” is the unit measuring the amount of energy released.

    enter image description here

    You would like to use linear regression $h_\theta(x) = \theta_0 + \theta_1x$ to estimate the amount of energy released (y) as a function of the number of carbon atoms (x). Which of the following do you think will be the values you obtain for $\theta_0$ and $\theta_1$ ? You should be able to select the right answer without actually implementing linear regression.

    • ☐ $\theta_0$ = −569.6, $\theta_1$ = 530.9
    • ☐ $\theta_0$ = −1780.0, $\theta_1$ = −530.9
    • 🗹 $\theta_0$ = −569.6, $\theta_1$ = −530.9
    • ☐ $\theta_0$ = −1780.0, $\theta_1$ = 530.9
  3. For this question, assume that we are using the training set from Q1.
    Recall our definition of the cost function was $J(\theta_0, \theta_1 ) = \frac{1}{2m} \sum_{i=1}^{m} (h (x^{(i)} ) - y^{(i)})^2$
    What is $J(0,1)$? In the box below,
    please enter your answer (Simplify fractions to decimals when entering answer, and ‘.’ as the decimal delimiter e.g., 1.5).

    0.5
    
  4. Suppose we set $\theta_0 = 0, \theta_1 = 1.5$ in the linear regression hypothesis from Q1. What is $h_\theta(2)$ ?

    3
    
  5. Suppose we set $\theta_0 = -2, \theta_1 = 0.5$ in the linear regression hypothesis from Q1. What is $h_\theta(6)$?

    1
    
  6. Let $f$ be some function so that $f(\theta_0 , \theta_1 )$ outputs a number. For this problem, f is some arbitrary/unknown smooth function (not necessarily the cost function of linear regression, so f may have local optima).
    Suppose we use gradient descent to try to minimize $f(\theta_0 , \theta_1 )$ as a function of $\theta_0$ and $\theta_1$.
    Which of the following statements are true? (Check all that apply.)

    • 🗹 If $\theta_0$ and $\theta_1$ are initialized at the global minimum, then one iteration will not change their values.
    • ☐ Setting the learning rate $\alpha$ to be very small is not harmful, and can only speed up the convergence of gradient descent.
    • ☐ No matter how $\theta_0$ and $\theta_1$ are initialized, so long as $\alpha$ is sufficiently small, we can safely expect gradient descent to converge to the same solution.
    • 🗹 If the first few iterations of gradient descent cause $f(\theta_0 , \theta_1)$ to increase rather than decrease, then the most likely cause is that we have set the learning rate $\alpha$ to too large a value.
  7. In the given figure, the cost function $J(\theta_0, \theta_1)$ has been plotted against $\theta_0$ and $\theta_1$, as shown in ‘Plot 2’. The contour plot for the same cost function is given in ‘Plot 1’. Based on the figure, choose the correct options (check all that apply).
    Plots for Cost Function

    • ☐ If we start from point B, gradient descent with a well-chosen learning rate will eventually help us reach at or near point A, as the value of cost function $J(\theta_0, \theta_1)$ is maximum at point A.
    • ☐ If we start from point B, gradient descent with a well-chosen learning rate will eventually help us reach at or near point C, as the value of cost function $J(\theta_0, \theta_1)$ is minimum at point C.
    • 🗹 Point P (the global minimum of plot 2) corresponds to point A of Plot 1.
    • 🗹 If we start from point B, gradient descent with a well-chosen learning rate will eventually help us reach at or near point A, as the value of cost function $J(\theta_0, \theta_1)$ is minimum at A.
    • ☐ Point P (The global minimum of plot 2) corresponds to point C of Plot 1.
  8. Suppose that for some linear regression problem (say, predicting housing prices as in the lecture), we have some training set, and for our training set we managed to find some $\theta_0, \theta_1$, such that $J(\theta_0 , \theta_1) = 0$.
    Which of the statements below must then be true? (Check all that apply.)

    • ☐ Gradient descent is likely to get stuck at a local minimum and fail to find the global minimum.
    • ☐ For this to be true, we must have $\theta_0 = 0$ and $\theta_1 = 0$
      so that $h_{\theta}(x) = 0$
    • ☐ For this to be true, we must have $y^{(i)} = 0$ for every value of $i = 1, 2,…,m$.
    • 🗹 Our training set can be fit perfectly by a straight line, i.e., all of our training examples lie perfectly on some straight line.

Week 4

Logistic Regression :

  1. Suppose that you have trained a logistic regression classifier, and it outputs on a new example a prediction $h_\theta(x) = 0.2$. This means (check all that apply):
    • ☐ Our estimate for P(y = 1|x; θ) is 0.8.
    • 🗹 Our estimate for P(y = 0|x; θ) is 0.8.
    • 🗹 Our estimate for P(y = 1|x; θ) is 0.2.
    • ☐ Our estimate for P(y = 0|x; θ) is 0.2.
  2. Suppose you have the following training set, and fit a logistic regression classifier $h_\theta(x) = g(\theta_0 + \theta_1x_1 + \theta_2x_2)$.
    Which of the following are true? Check all that apply.

    • 🗹 Adding polynomial features (e.g., instead using $h_\theta(x) = g(\theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_1^2 + \theta_4 x_1 x_2 + \theta_5 x_2^2 ))$ could increase how well we can fit the training data.
    • 🗹 At the optimal value of θ (e.g., found by fminunc), we will have $J(θ) ≥ 0$.
    • ☐ Adding polynomial features (e.g., instead using $h_\theta(x) = g(\theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_1^2 + \theta_4 x_1 x_2 + \theta_5 x_2^2 ))$ would increase $J(θ)$ because we are now summing over more terms.
    • ☐ If we train gradient descent for enough iterations, for some examples $x^{(i)}$ in the training set it is possible to obtain $h_\theta(x^{(i)} ) > 1$.
  3. For logistic regression, the gradient is given by $\frac{\partial }{\partial \theta_j } J(\theta) = \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{i})x^{(i)}_j$. Which of these is a correct gradient descent update for logistic regression with a learning rate of $\alpha$ ? Check all that apply.
    • 🗹 $\theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)-y^i}) x^{(i)}_j$ (simultaneously update for all j).
    • ☐ $\theta := \theta - \alpha \frac{1}{m} \sum_{i=1}^m (\theta^Tx-y^{(i)}) x^{(i)}$.
    • 🗹 $\theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m \left(\frac{1}{1+e^{-\theta^Tx^{(i)}}}-y^{(i)}\right) x^{(i)}_j$ (simultaneously update for all j).
    • ☐ $\theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)-y^i}) x^{(i)}$ (simultaneously update for all j).
  4. Which of the following statements are true? Check all that apply.
    • 🗹 The one-vs-all technique allows you to use logistic regression for problems in which each $y^{(i)}$ comes from a fixed, discrete set of values.
    • ☐ For logistic regression, sometimes gradient descent will converge to a local minimum (and fail to find the global minimum). This is the reason we prefer more advanced optimization algorithms such as fminunc (conjugate gradient/BFGS/L-BFGS/etc).
    • 🗹 The cost function $J(\theta)$ for logistic regression trained with $m \geq 1$ examples is always greater than or equal to zero.
    • ☐ Since we train one classifier when there are two classes, we train two classifiers when there are three classes (and we do one-vs-all classification).
  5. Suppose you train a logistic classifier $h_\theta(x) = g(\theta_0 + \theta_1x_1 + \theta_2x_2)$. Suppose $\theta_0 = 6$, $\theta_1 = -1$, $\theta_2 = 0$. Which of the following figures represents the decision boundary found by your classifier?
    • 🗹 Figure:
    • ☐ Figure:
    • ☐ Figure:
    • ☐ Figure:

Regularization

  1. You are training a classification model with logistic regression. Which of the following statements are true? Check all that apply.
    • ☐ Introducing regularization to the model always results in equal or better performance on the training set.
    • ☐ Introducing regularization to the model always results in equal or better performance on examples not in the training set.
    • 🗹 Adding a new feature to the model always results in equal or better performance on the training set.
    • ☐ Adding many new features to the model helps prevent overfitting on the training set.
  2. Suppose you ran logistic regression twice, once with $\lambda = 0$, and once with $\lambda = 1$. One of the times, you got parameters $\theta = \begin{bmatrix} 74.81\ 45.05 \end{bmatrix}$, and the other time you got $\theta = \begin{bmatrix} 1.37\ 0.51 \end{bmatrix}$. However, you forgot which value of $\lambda$ corresponds to which value of $\theta$. Which one do you think corresponds to $\lambda = 1$?
    • 🗹 $\theta = \begin{bmatrix} 1.37\ 0.51 \end{bmatrix}$
    • ☐ $\theta = \begin{bmatrix} 74.81\ 45.05 \end{bmatrix}$
  3. Which of the following statements about regularization are true? Check all that apply.
    • ☐ Using a very large value of $\lambda$ hurt the performance of your hypothesis; the only reason we do not set $\lambda$ to be too large is to avoid numerical problems.
    • ☐ Because logistic regression outputs values $0 \leq h_\theta(x) \leq 1$, its range of output values can only be “shrunk” slightly by regularization anyway, so regularization is generally not helpful for it.
    • 🗹 Consider a classification problem. Adding regularization may cause your classifier to incorrectly classify some training examples (which it had correctly classified when not using regularization, i.e. when $\lambda = 0$).
    • ☐ Using too large a value of $\lambda$ can cause your hypothesis to overfit the data; this can be avoided by reducing $\lambda$.
  4. Which of the following statements about regularization are true? Check all that apply.
    • ☐ Using a very large value of $\lambda$ hurt the performance of your hypothesis; the only reason we do not set $\lambda$ to be too large is to avoid numerical problems.
    • ☐ Because logistic regression outputs values $0 \leq h_\theta(x) \leq 1$, its range of output values can only be “shrunk” slightly by regularization anyway, so regularization is generally not helpful for it.
    • ☐ Because regularization causes $J(\theta)$ to no longer be convex, gradient descent may not always converge to the global minimum (when $\lambda > 0$, and when using an appropriate learning rate $\alpha$).
    • 🗹 Using too large a value of $\lambda$ can cause your hypothesis to underfit the data; this can be avoided by reducing $\lambda$.
  5. In which one of the following figures do you think the hypothesis has overfit the training set?
    • 🗹 Figure:
      enter image description here
    • ☐ Figure:
      enter image description here
    • ☐ Figure:
      enter image description here
    • ☐ Figure:
      enter image description here
  6. In which one of the following figures do you think the hypothesis has underfit the training set?
    • 🗹 Figure:
      enter image description here
    • ☐ Figure:
      enter image description here
    • ☐ Figure:
      enter image description here
    • ☐ Figure:
      enter image description here

Week 5

Neural Networks - Representation :

  1. Which of the following statements are true? Check all that apply.
    • 🗹 Any logical function over binary-valued (0 or 1) inputs $x_1$ and $x_2$ can be (approximately) represented using some neural network.
    • ☐ Suppose you have a multi-class classification problem with three classes, trained with a 3 layer network. Let $a^{(3)}1 = (h\theta(x))_1$ be the activation of the first output unit, and similarly $a^{(3)}2 = (h\theta(x))_2$ and $a^{(3)}3 = (h\theta(x))_3$. Then for any input x, it must be the case that $a^{(3)}_1 + a^{(3)}_2 + a^{(3)}_3 = 1$.
    • ☐ A two layer (one input layer, one output layer; no hidden layer) neural network can represent the XOR function.
    • 🗹 The activation values of the hidden units in a neural network, with the sigmoid activation function applied at every layer, are always in the range (0, 1).
  2. Consider the following neural network which takes two binary-valued inputs
    $x_1,x_2 \ \epsilon \ {0,1}$ and outputs $h_\theta(x)$. Which of the following logical functions does it (approximately) compute?
    • 🗹 AND
    • ☐ NAND (meaning “NOT AND”)
    • ☐ OR
    • ☐ XOR (exclusive OR)
  3. Consider the following neural network which takes two binary-valued inputs
    $x_1,x_2 \ \epsilon \ {0,1}$ and outputs $h_\theta(x)$. Which of the following logical functions does it (approximately) compute?
    • ☐ AND
    • ☐ NAND (meaning “NOT AND”)
    • 🗹 OR
    • ☐ XOR (exclusive OR)
  4. Consider the neural network given below. Which of the following equations correctly computes the activation $a_1^{(3)}$? Note: $g(z)$ is the sigmoid activation function.
    • 🗹 $a_1^{(3)} = g(\theta_{1,0}^{(2)}a_0^{(2)}+\theta_{1,1}^{(2)}a_1^{(2)}+\theta_{1,2}^{(2)}a_2^{(2)})$
    • ☐ $a_1^{(3)} = g(\theta_{1,0}^{(2)}a_0^{(1)}+\theta_{1,1}^{(2)}a_1^{(1)}+\theta_{1,2}^{(2)}a_2^{(1)})$
    • ☐ $a_1^{(3)} = g(\theta_{1,0}^{(1)}a_0^{(2)}+\theta_{1,1}^{(1)}a_1^{(2)}+\theta_{1,2}^{(1)}a_2^{(2)})$
    • ☐ $a_1^{(3)} = g(\theta_{2,0}^{(2)}a_0^{(2)}+\theta_{2,1}^{(2)}a_1^{(2)}+\theta_{2,2}^{(2)}a_2^{(2)})$
  5. You have the following neural network:

    You’d like to compute the activations of the hidden layer $a^{(2)} \ \epsilon \ R^3$. One way to do
    so is the following Octave code:

    You want to have a vectorized implementation of this (i.e., one that does not use for loops). Which of the following implementations correctly compute ? Check all
    that apply.
    • 🗹 z = Theta1 * x; a2 = sigmoid (z);
    • a2 = sigmoid (x * Theta1);
    • a2 = sigmoid (Theta2 * x);
    • z = sigmoid(x); a2 = sigmoid (Theta1 * z);
  6. You are using the neural network pictured below and have learned the parameters $\theta^{(1)} = \begin{bmatrix} 1 & 1 & 2.4\ 1 & 1.7 & 3.2 \end{bmatrix}$ (used to compute $a^{(2)}$) and $\theta^{(2)} = \begin{bmatrix} 1 & 0.3 & -1.2 \end{bmatrix}$ (used to compute $a^{(3)}$ as a function of $a^{(2)}$). Suppose you swap the parameters for the first hidden layer between its two units so $\theta^{(1)} = \begin{bmatrix} 1 & 1.7 & 3.2 \ 1 & 1 & 2.4 \end{bmatrix}$ and also swap the output layer so $\theta^{(2)} = \begin{bmatrix} 1 & -1.2 & 0.3 \end{bmatrix}$. How will this change the value of the output $h_\theta(x)$?
    • 🗹 It will stay the same.
    • ☐ It will increase.
    • ☐ It will decrease
    • ☐ Insufficient information to tell: it may increase or decrease.

Neural Networks: Learning :

  1. You are training a three layer neural network and would like to use backpropagation to compute the gradient of the cost function. In the backpropagation algorithm, one of the steps is to update $\Delta_{ij}^{(2)} := \Delta_{ij}^{(2)} + \delta_i^{(3)} * (a^{(2)})_j$
    for every i,j. Which of the following is a correct vectorization of this step?
    • ☐ $\Delta^{(2)} := \Delta^{(2)} + \delta^{(2)} * (a^{(3)})^T$
    • ☐ $\Delta^{(2)} := \Delta^{(2)} + (a^{(2)})^T * \delta^{(3)}$
    • ☐ $\Delta^{(2)} := \Delta^{(2)} + (a^{(2)})^T * \delta^{(2)}$
    • 🗹 $\Delta^{(2)} := \Delta^{(2)} + \delta^{(3)} * (a^{(2)})^T$
  2. Suppose Theta1 is a 5x3 matrix, and Theta2 is a 4x6 matrix. You set thetaVec = [Theta1( : ), Theta2( : )]. Which of the following correctly recovers ?
    • 🗹 reshape(thetaVec(16 : 39), 4, 6)
    • ☐ reshape(thetaVec(15 : 38), 4, 6)
    • ☐ reshape(thetaVec(16 : 24), 4, 6)
    • ☐ reshape(thetaVec(15 : 39), 4, 6)
    • ☐ reshape(thetaVec(16 : 39), 6, 4)
  3. Let $J(\theta) = 2\theta^3 + 2$. Let $\theta = 1$, and $\epsilon = 0.01$. Use the formula $\frac{J{(\theta + \epsilon)}-J{(\theta - \epsilon)}}{2\epsilon}$ to numerically compute an approximation to the derivative at $\theta = 1$. What value do you get? (When $\theta = 1$, the true/exact derivative is $\frac{\mathrm{d} J(\theta)}{\mathrm{d} \theta} = 6$.)
    • ☐ 8
    • 🗹 6.0002
    • ☐ 6
    • ☐ 5.9998
  4. Which of the following statements are true? Check all that apply.
    • 🗹 For computational efficiency, after we have performed gradient checking to verify that our backpropagation code is correct, we usually disable gradient checking before using backpropagation to train the network.
    • ☐ Computing the gradient of the cost function in a neural network has the same efficiency when we use backpropagation or when we numerically compute it using the method of gradient checking.
    • 🗹 Using gradient checking can help verify if one’s implementation of backpropagation is bug-free.
    • ☐ Gradient checking is useful if we are using one of the advanced optimization methods (such as in fminunc) as our optimization algorithm. However, it serves little purpose if we are using gradient descent.
  5. Which of the following statements are true? Check all that apply.
    • 🗹 If we are training a neural network using gradient descent, one reasonable “debugging” step to make sure it is working is to plot $J(\theta)$ as a function of the number of iterations, and make sure it is decreasing (or at least non-increasing) after each iteration.
    • ☐ Suppose you have a three layer network with parameters $\theta^{(1)}$ (controlling the function mapping from the inputs to the hidden units) and $\theta^{(2)}$ (controlling the mapping from the hidden units to the outputs). If we set all the elements of $\theta^{(1)}$ to be 0, and all the elements of $\theta^{(2)}$ to be 1, then this suffices for symmetry breaking, since the neurons are no longer all computing the same function of the input.
    • 🗹 Suppose you are training a neural network using gradient descent. Depending on your random initialization, your algorithm may converge to different local optima (i.e., if you run the algorithm twice with different random initializations, gradient descent may converge to two different solutions).
    • ☐ If we initialize all the parameters of a neural network to ones instead of zeros, this will suffice for the purpose of “symmetry breaking” because the parameters are no longer symmetrically equal to zero.

Week 6

Advice for Applying Machine Learning :

  1. You train a learning algorithm, and find that it has unacceptably high error on the test set. You plot the learning curve, and obtain the figure below. Is the algorithm suffering from high bias, high variance, or neither?
    • ☐ High variance
    • ☐ Neither
    • 🗹 High bias
  2. You train a learning algorithm, and find that it has unacceptably high error on the test set. You plot the learning curve, and obtain the figure below. Is the algorithm suffering from high bias, high variance, or neither?
    • 🗹 High variance
    • ☐ Neither
    • ☐ High bias
  3. Suppose you have implemented regularized logistic regression to classify what object is in an image (i.e., to do object recognition). However, when you test your hypothesis on a new set of images, you find that it makes unacceptably large errors with its predictions on the new images. However, your hypothesis performs well (has low error) on the training set. Which of the following are promising steps to take? Check all that apply.
    NOTE: Since the hypothesis performs well (has low error) on the training set, it is suffering from high variance (overfitting)
    • ☐ Try adding polynomial features.
    • ☐ Use fewer training examples.
    • 🗹 Try using a smaller set of features.
    • 🗹 Get more training examples.
    • ☐ Try evaluating the hypothesis on a cross validation set rather than the test set.
    • ☐ Try decreasing the regularization parameter λ.
    • 🗹 Try increasing the regularization parameter λ.
  4. Suppose you have implemented regularized logistic regression to predict what items customers will purchase on a web shopping site. However, when you test your hypothesis on a new set of customers, you find that it makes unacceptably large errors in its predictions. Furthermore, the hypothesis performs poorly on the training set. Which of the following might be promising steps to take? Check all that apply.
    NOTE: Since the hypothesis performs poorly on the training set, it is suffering from high bias (underfitting)
    • ☐ Try increasing the regularization parameter λ.
    • 🗹 Try decreasing the regularization parameter λ.
    • ☐ Try evaluating the hypothesis on a cross validation set rather than the test set.
    • ☐ Use fewer training examples.
    • 🗹 Try adding polynomial features.
    • ☐ Try using a smaller set of features.
    • 🗹 Try to obtain and use additional features.
  5. Which of the following statements are true? Check all that apply.
    • ☐ Suppose you are training a regularized linear regression model. The recommended way to choose what value of regularization parameter to use is to choose the value of which gives the lowest test set error.
    • ☐ Suppose you are training a regularized linear regression model.The recommended way to choose what value of regularization parameter to use is to choose the value of which gives the lowest training set error.
    • 🗹 The performance of a learning algorithm on the training set will typically be better than its performance on the test set.
    • 🗹 Suppose you are training a regularized linear regression model. The recommended way to choose what value of regularization parameter to use is to choose the value of which gives the lowest cross validation error.
    • 🗹 A typical split of a dataset into training, validation and test sets might be 60% training set, 20% validation set, and 20% test set.
    • ☐ Suppose you are training a logistic regression classifier using polynomial features and want to select what degree polynomial (denoted in the lecture videos) to use. After training the classifier on the entire training set, you decide to use a subset of the training examples as a validation set. This will work just as well as having a validation set that is separate (disjoint) from the training set.
    • ☐ It is okay to use data from the test set to choose the regularization parameter λ, but not the model parameters (θ).
    • 🗹 Suppose you are using linear regression to predict housing prices, and your dataset comes sorted in order of increasing sizes of houses. It is then important to randomly shuffle the dataset before splitting it into training, validation and test sets, so that we don’t have all the smallest houses going into the training set, and all the largest houses going into the test set.
  6. Which of the following statements are true? Check all that apply.
    • 🗹 A model with more parameters is more prone to overfitting and typically has higher variance.
    • ☐ If the training and test errors are about the same, adding more features will not help improve the results.
    • 🗹 If a learning algorithm is suffering from high bias, only adding more training examples may not improve the test error significantly.
    • 🗹 If a learning algorithm is suffering from high variance, adding more training examples is likely to improve the test error.
    • 🗹 When debugging learning algorithms, it is useful to plot a learning curve to understand if there is a high bias or high variance problem.
    • ☐ If a neural network has much lower training error than test error, then adding more layers will help bring the test error down because we can fit the test set better.

6.11 - MK Machine Learning

MK Machine Learning

  • Kode: TKE194918
  • SKS: 3
  • Jadwal
    • TKE194918 Machine Learning A RABU 15:00 - 17:30 GEDUNG TEKNIK E 201 - 12 mhs

Sumber Referensi

Tools

Kuliah

Pekan 7-9

Pekan 10-12

Pekan 13

Visualizing Backpropagation

Pekan 14 : Deep Learning Introduction

6.13 - Free Online Course

Free Online Course

Online Course Platform

List of Free Online Course

Hacking Satellite Course

Machine Learning Course

Programming

Deep Learning Course

Time Series Course

Machine Learning Course

Linear Algebra

Electrical Circuit Course Notes

Machine Learning Course Notes

Course

Course

Machine Learning

Course

HTML Learn

Course

Course

Programming Course

Machine Learning Course

Machine Learning

Machine Learning Course

Machine Learning Course

Open Course

NLP Course

Course

Course

Course

Distributed Systems

Course

Fast.ai Online Course

Course

Computer Science

Full Stack Deep Learning

Course Self Taught

Course

Introduction to Reinforcement Learning with David Silver (deepmind.com)

6.14 - Machine Learning by Andrew Ng Resources

Machine Learning by Andrew Ng Resources

Main Course

More Machine Learning Courses

Suplementary Notes

Suplementary Codes

Week 1:

Week 2:

Week 3:

Week 4:

Week 5:

Week 6:

Week 7:

Week 8:

Week 9:

Week 10:

Week 11:

Extra Information

Machine Learning Online E Books

Machine Learning Tutorial

Machine Learning Youtube

6.15 - Instrumentation

Instrumentation

6.16 - Digital Signal Processing

Digital Signal Processing

Signal Processing Jupyter Notebooks

Tools

Filter Design Tools

Tutorial

Audio Programming

DSP Notes

DSP Tools

DSP Books

DSP Lectures

DSP Interactive

Software Defined Radio

Music Retrieval Course

Speech Recognition

  • Libre ASR: An On-Premises, Streaming Speech Recognition System

Signal Processing Notes

Signal Processing

Free Books on Signal Processing

DSP: THEORY

  1. The Scientist and Engineer’s Guide to Digital Signal Processing- Steven W. Smith
  2. Introduction to Signal Processing -Sophocles J. Orfanidis
  3. Astronomical Image and Data Analysis -JL Starck and F Murtagh
  4. The theory of linear prediction- Vaidyanathan, P. P.
  5. Introduction to Statistical Signal Processing - R.M. Gray
  6. Mixed Signal and DSP Design Techniques - edited by Walt Kester
  7. Modern Signal Processing - Edited by Edited by Daniel N. Rockmore and Dennis M. Healy
  8. Advances in Signal Transforms: Theory and Applications - Edited by: J. Astola, and L. Yaroslavsky
  9. Advances in Nonlinear Signal and Image Processing -Edited by: Stephen Marshall and Giovanni L. Sicuranza
  10. The Data Conversion Handbook - Walt Kester
  11. Mathematics Of The Discrete Fourier Transform (DFT) - Julius O. Smith III
  12. Principles of Sigma-Delta Modulation for A/D Converters - Sangil Park
  13. Using the ADSP-2100 Family Vol. 1 & Vol. 2 -Analog Devices Inc.
  14. A Technical Tutorial on Digital Signal Synthesis-Analog Devices Inc.

DSP: COMMUNICATIONS

  1. Signal Processing for Communications -Paolo Prandoni and Martin Vetterli
  2. Signals, Samples and Stuff: A DSP Tutorial: Part 1, Part 2, Part 3, Part 4 - Doug Smith
  3. FAQs on Digital Signal Processing-
  4. Wireless Communications: Signal Processing Perspectives-Poor and Wornell
  5. Signal Processing with Fractals: A Wavelet-Based Approach-G. W. Wornell
  6. Wireless Communications: Signal Processing Perspectives-Poor and Wornell
  7. Stochastic Processes, Detection and Estimation-A. S. Willsky and G. W. Wornell

DSP: IMAGE PROCESSING

  1. Fundamentals of Image Processing - Young, Gerbrands and Vliet
  2. Advances in Nonlinear Signal and Image Processing -Edited by: Stephen Marshall and Giovanni L. Sicuranza
  3. Image Processing and Data Analysis: The Multiscale Approach -JL Starck, F Murtagh and A Bijaoui
  4. Principles of Computerized Tomographic Imaging - Kak and Slaney
  5. IMAGE ESTIMATION BY EXAMPLE: Geophysical Soundings Image Construction - Jon Claerbout and Sergey Fomel
  6. BASIC EARTH IMAGING- Jon Claerbout
  7. EARTH SOUNDINGS ANALYSIS: Processing versus Inversion - Jon Claerbout
  8. IMAGING THE EARTH’S INTERIOR- Jon Claerbout
  9. FUNDAMENTALS OF GEOPHYSICAL DATA PROCESSING - Jon Claerbout
  10. Genetic and Evolutionary Computation for Image Processing and Analysis -Stefano Cagnoni, Evelyne Lutton, and Gustavo Olague
  11. Advances in Nonlinear Signal and Image Processing -Edited by: Stephen Marshall and Giovanni L. Sicuranza
  12. Image Processing in C: Analyzing and Enhancing Digital ImagesDwayne Phillips

DSP: AUDIO

  1. Introduction to Sound Processing -Davide Rocchesso
  2. Introduction To Digital Filters, With Audio Applications -Julius Smith
  3. Mathematics of the Discrete Fourier Transform (DFT), With Audio Applications -Julius Smith
  4. Physical Audio Signal Processing For Virtual Musical Instruments and Audio Effects -Julius Smith
  5. High-Fidelity Multichannel Audio Coding - Dai Tracy Yang, Chris Kyriakakis, and C.-C. Jay Kuo
  6. Physical Audio Signal Processing-Julius O. Smith III
  7. Spectral Audio Signal Processing -Julius O. Smith III

DSP: SPECTRAL ANALYSIS

  1. Bayesian Spectrum Analysis and Parameter Estimation -G. Larry Bretthorst
  2. Chebyshev and Fourier Spectral Methods - John Boyd
  3. The Temporal and Spectral Characteristics of Ultrawideband Signals -William Kissick

DSP: MISCELLANEOUS TOPICS

  1. Biomedical Digital Signal Processing -Willis J. Tompkins
  2. Stochastic Optimal Control: The Discrete-Time Case -Bertsekas
  3. Signal Processing with Fractals: A Wavelet-Based Approach - Gregory Wornell
  4. Nonlinear Systems Theory: The Volterra/Wiener Approach -Wilson Rugh
  5. Detection of Abrupt Changes - Theory and Application -Basseville and Nikiforov
  6. An Introduction to Signal Processing in Chemical Analysiy - T. OHaver
  7. Multimedia Fingerprinting Forensics for Traitor Tracing -K. J. Ray Liu, Wade Trappe, Z. Jane Wang, Min Wu, and Hong Zhao
  8. Genomic Signal Processing and Statistics -Edited by:Dougherty, Shmulevich, Chen, and Wang

DSP: IMPLEMENTATION

  1. Computer Aids for VLSI Design -Steven Rubin
  2. Application-Specific Integrated Circuits - Michael Smith
  3. The VHDL Cookbook -Peter Ashenden
  4. Controlling Noise and Radiation in Mixed-Signal and Digital Systems - Nicholas Gray

Free Books on Signal Processing II

  1. Introduction to Digital Signal Processing - Paolo Prandoni
  2. Efficient Digital Fiilters -Matthew Donadio
  3. Discrete-Time Signal Processing - MIT
  4. Modern Signal Processing- Edited by Daniel N. Rockmore and Dennis M. Healy, Jr.
  5. Signals and Systems - MIT

Signal Processing

6.17 - MK Sistem Kendali Lanjut

MK Sistem Kendali Lanjut

  • Kode: TKE193154
  • SKS: 3
  • Jadwal 2020
    • TKE193154 Sistem Kendali Lanjut A JUMAT 13:20 - 15:50 GEDUNG TEKNIK E 204 - 15 mhs

Referensi

  • Norman S. Nise, Control Systems Engineering [website]
  • Katsuhiko Ogata, Modern Control Engineering
  • Richard C. Dorf and Robert H. Bishop, Modern Control Systems [website]
  • Farid Golnaraghi and Benjamin C. Kuo, Automatic Control Systems [website]
  • Brian Douglas, The Fundamentals of Control Theory [website][ebook]
  • Pao C. Chau, Process Control: A First Course With MATLAB [website]
  • Karl J. Åström and Richard M. Murray, Feedback Systems: An Introduction for Scientists and Engineers [website]
  • R.V. Dukkipati, Analysis and Design of Control Systems using MATLAB
  • Ricone Website

Software

Online Course

Online Video Course

Kuliah

Pekan-1

Pekan-2

equ=[1 2 3] %characteristic equation polynomial
roots(equ)

Pekan-3

pkg load control
num=[1] %numerator
den=[1 2 3] %denumerator
sys=tf(num,den) %transfer function
rlocus(sys)

Pekan-4

Tugas

  • Persiapan
  • Latihan Jupyter Notebook di ICCT
    • Anda akan berinteraksi dengan Jupyter Notebook di ICCT
    • Klik folder ICCT pada Jupyter Notebook, lalu klik Table-of-Contents-ICCT.ipynb
    • Klik kanan, open di new tab file Link 1.1.1 Complex Numbers in Cartesian Form di folder 1.1 Complex Numbers
    • Anda berada di Jupyter Notebook M-01_Complex_numbers_Cartesian_form.ipynb
    • Pilih menu lalu
    • Silakan baca Notebook-nya, baca penjelasan atau penugasaannya.
    • Lalu anda ubah nilai bilangan kompleksnya, tekan atau
    • Lalu anda variasikan operasinya seperti , dll.
    • Anda bisa unduh atau screenshoot citranya.
    • Pilih menu lalu untuk mematikan Jupyter Notebook.
  • Tugas (dengan waktu 2 pekan)
    • Sesuai dengan distribusi (terlampir di Eldiru), lakukan hal sebagai berikut:
    • Jalankan berkas Jupyter Notebook sebagaimana yang didistribusikan kepada anda.
    • Untuk setiap berkas Jupyter Notebook buat laporan mini dalam berkas .docx atau .odt yang terdiri dari:
      • Judul, disertai penjelasan (dalam terjemah bahasa Indonesia) dari berkas Jupyter Notebook. (Kode Python pada Jupyter Notebook tak perlu disertakan.)
      • Pembahasan. Pembahasan ringkas dari aktivitas yang anda lakukan, jika perlu lengkapi unduhan gambar (screenshot).
    • Simpan setiap berkas dalam nama NIM-TugasXXX.docx misalnya H1A018091-Tugas385.odt. Gabungkan ketiga berkas penugasan dalam file .zip lalu unggah ke laman Assignment di Eldiru.

Istilah Sistem Kendali

  • Bandwidth and 3dB. The bandwidth of a band pass filter is the frequency range that is allowed to pass through with minimal attenuation. The frequency at which the power level of the signal decreases by 3 dB from its maximum value is called the 3 dB bandwidth. A 3 dB decrease in power means the signal power becomes half of its maximum value. This occurs when the output voltage has dropped to $1/{\sqrt{2}}$ (~0.707) of the maximum output voltage and the power has dropped by half (since $P=V^2/R$. Exact: $20\log _{10}\left({\tfrac {1}{\sqrt {2}}}\right)\approx -3.0103\ \mathrm {dB}$
  • Half-power point - Wikipedia

6.18 - Machine Learning CS299

Machine Learning CS299

Deep Learning Specialization by Andrew Ng

Machine Learning Course

Practical Deep Learning

Visualizing Backpropagation

Machine Learning Course

6.19 - MK Dasar Teknik Elektro

MK Dasar Teknik Elektro

  • Kode: TKE191113
  • SKS: 2
  • Jadwal
    • TKE191121 Dasar Teknik Elektro B RABU 10:20 - 12:00 GEDUNG TEKNIK E 104 - 46 mhs
    • TKE191121 Dasar Teknik Elektro A RABU 12:30 - 14:10 GEDUNG TEKNIK E 101 - 44 mhs

Capaian Pembelajaran Lulusan (CPL) Program Studi

  • Pengetahuan-PU03 : menguasai pengetahuan keteknikan dan ilmu komputasi untuk menganalisa dan merancang piranti listrik dan elektronik kompleks, perangkat lunak, dan sistem yang terdiri dari komponen perangkat keras dan perangkat lunak;
  • Pengetahuan-PU04 : menguasai pengetahuan inti (core knowledge) bidang teknik elektro meliputi: rangkaian elektrik, sistem dan sinyal, sistem digital, elektromagnetik, dan elektronika, beserta penerapan mereka;
  • Keterampilan Khusus-KK02 : mampu menerapkan pengetahuan matematika, sains dasar, dan topik keteknikan dalam bidang teknik elektro;

Capaian Pembelajaran Mata Kuliah (CPMK)

  • Memahami pengetahuan matematika dan sains dasar, dan topik keteknikan dalam bidang teknik elektro;
  • Memahami lingkup dasar-dasar keteknikan dan ilmu komputasi yang diperlukan untuk menganalisis dan merancang
    • piranti listrik,
    • piranti elektronik,
    • perangkat lunak, dan
    • sistem (perangkat lunak dan perangkat keras);
  • Memahami lingkup pengetahuan inti (core knowledge) bidang teknik elektro meliputi: rangkaian elektrik, sistem dan sinyal, sistem digital, elektromagnetik, dan elektronika, beserta penerapan mereka;

Bahan Kajian

  • Ikhtisar pengetahuan matematika dan sains dasar untuk bidang teknik elektro
  • Ikhtisar pengetahuan keteknikan untuk teknik elektro
  • Ikhtisar topik keteknikan (terkini) dalam bidang teknik elektro
  • Ikhtisar ilmu komputasi untuk teknik elektro
  • Ikhtisar metode analisis dan perancangan piranti listrik dan elektronik
  • Ikhtisar metode analisis dan perancangan perangkat lunak
  • Pengenalan rangkaian elektrik dan penerapannya di bidang teknik elektro
  • Pengenalan sistem dan sinyal dan penerapannya di bidang teknik elektro
  • Pengenalan sistem digital dan penerapannya di bidang teknik elektro
  • Pengenalan elektronika dan penerapannya di bidang teknik elektro

Referensi

Referensi Bebas dan Terbuka

Referensi Berbayar

Referensi Kuliah Online

Kuliah

Pekan-1

Pekan-2

  • Topik:
    • Ikhtisar Dasar-dasar Keteknikan untuk Teknik Elektro
  • Tugas:
    • Terjemah: Electrical Engineering: Know It All by Clive Maxfield et.al.

Pekan-3

  • Topik:
    • Pengenalan Sinyal dan Sistem

6.20 - Kuliah

Kuliah

202020212

  • TKE192221 Sistem Kendali A [FAR; IMR; ],[2019]; C 201 Selasa 07.55, 2
  • TKE192221 Sistem Kendali B [FAR; IMR; ],[2019]; C 201 Selasa 10.40, 2
  • TKE192227 Pengolahan Sinyal Digital B [AZS; IMR; ],[2019]; E 101 Rabu 07.00, 3
  • TKE192227 Pengolahan Sinyal Digital A [AZS; IMR; ],[2019]; E 101 Rabu 09.45, 3
  • TKE194945 Internet of Things A [AZS; IMR; ],[2018]; E 205 Kamis 13.00, 3
  • TKE194941 Sistem Kendali Cerdas A [IMR; AGU; ],[2018]; E 201 Jumat 13.55, 3

202020211

  • TKE194917 Sistem Adaptif A SELASA 09:30 - 12:00 GEDUNG TEKNIK E 202
  • TKE191121 Dasar Teknik Elektro B RABU 10:20 - 12:00 GEDUNG TEKNIK E 104
  • TKE191121 Dasar Teknik Elektro A RABU 12:30 - 14:10 GEDUNG TEKNIK E 101
  • TKE194918 Machine Learning A RABU 15:00 - 17:30 GEDUNG TEKNIK E 201 - 12 mhs
  • TKE191113 Matematika Teknik A KAMIS 07:00 - 09:30 GEDUNG TEKNIK C 101
  • TKE191113 Matematika Teknik B KAMIS 09:30 - 12:00 GEDUNG TEKNIK C 101
  • TKE194021 Proyek Keteknikan A JUMAT 07:50 - 09:30 GEDUNG TEKNIK C 103 - 1 mhs
  • TKE193154 Sistem Kendali Lanjut A JUMAT 13:20 - 15:50 GEDUNG TEKNIK E 204

201920202

  • TKE192227 Pengolahan Sinyal Digital
  • TKE192221 Sistem Kendali
  • TKE194941 Sistem Kendali Cerdas

201920201

  • TKE191121 Dasar Teknik Elektro
  • TKE193153 Sistem Kendali Digital

201820192

  • TKE132207 Pengolahan Sinyal Digita
  • TKE134103 Proyek Keteknikan
  • TKE132201 Sistem Kontrol

201820191

  • TKE131104 Dasar Teknik Elektro
  • TKE134026 Jaringan Sensor
  • TKE134103 Proyek Keteknikan
  • TKE134033 Sistem Adaptif

201720182

  • TKE133201 Instrumentasi
  • TKE131201 Metode Transformasi
  • TKE132207 Pengolahan Sinyal Digital
  • TKE132201 Sistem Kontrol

201720181

  • TKE131104 Dasar Teknik Elektro
  • TKE134026 Jaringan Sensor
  • TKE132102 Matematika Teknik
  • TKE134103 Proyek Keteknikan
  • TKE134033 Sistem Adaptif

6.21 - Linear Algebra

Linear Algebra

Software

PC

Android

MOOC

Youtube

List of Books

Proprietary Books

Free Books

Open Books

Book Recommendation

Video Recommendation

Table of Contents some of the Open Books

Interactive Linear Algebras by Dan Margalit

  1. Systems of Linear Equations: Algebra (pp 1-27)
  2. Systems of Linear Equations: Geometry (pp 29-112)
  3. Linear Transformations and Matrix Algebra (pp 113-185)
  4. Determinants (pp 187-235)
  5. Eigenvalues and Eigenvectors (pp 237-337)
  6. Orthogonality (pp 339-407)

Discover Linear Algebra by Jeremy Sylvestre

  1. Systems of Equations and Matrices (pp 7-169)
    • Systems of linear equations
    • Solving systems using matrices
    • Using systems of equations
    • Matrices and matrix operations
    • Matrix inverses
    • Elementary matrices
    • Special forms of square matrices
    • Determinants
    • Determinants versus row operations
    • Determinants, the adjoint, and inverses
  2. Vector Spaces (pp 170-374)
    • Introduction to vectors
    • Geometry of vectors
    • Orthogonal vectors
    • Geometry of linear systems
    • Abstract vector spaces
    • Subspaces
    • Linear independence
    • Basis and Coordinates
    • Dimension
    • Column, row, and null spaces
  3. Introduction to Matrix Forms (pp 375-413)
    • Eigenvalues and eigenvectors
    • Diagonalization

Linear Algebra by Jim Hefferon

  1. Linear Systems
    • Solving Linear Systems
    • Linear Geometry
    • Reduced Echelon Form
  2. Vector Spaces
    • Definition of Vector Space
    • Linear Independence
    • Basis and Dimension
  3. Maps Between Spaces
    • Isomorphisms
    • Homomorphisms
    • Computing Linear Maps
    • Matrix Operations
    • Change of Basis
    • Projection
  4. Determinants
    • Definition
    • Geometry of Determinants
    • Laplace’s Formula
  5. Similarity
    • Complex Vector Spaces
    • Similarity
    • Nilpotence
    • Jordan Form

A First Course in Linear Algebra by Robert A. Beezer

  1. Systems of Linear Equations
  2. Vectors
  3. Matrices
  4. Vector Spaces
  5. Determinants
  6. Eigenvalues
  7. Linear Transformations
  8. Representations

Linear Algebra, Theory And Applications by Kenneth Kuttler

  1. Preliminaries
  2. Matrices and Linear Transformations
  3. Determinants
  4. Row Operations
  5. Some Factorizations
  6. Linear Programming
  7. Spectral Theory
  8. Vector Spaces and Fields
  9. Linear Transformations
  10. Linear Transformations Canonical Forms
  11. Markov Chains and Migration Processes
  12. Inner Product Spaces
  13. Self Adjoint Operators
  14. Norms for Finite Dimensional Vector Spaces
  15. Numerical Methods for Finding Eigenvalues

MATH 1220 Linear Algebra 1 by Michael Doob

  1. Systems of Linear Equations
  2. Matrix theory
  3. The Determinant
  4. Vectors in Euclidean n-space
  5. Eigenvalues and eigenvectors
  6. Linear transformations

Markov Chains

6.22 - MK Matematika Teknik

MK Matematika Teknik

  • Kode: TKE191113
  • SKS: 3
  • Jadwal:
    • TKE191113 Matematika Teknik A KAMIS 07:00 - 09:30 GEDUNG TEKNIK C 101 - 65 mhs
    • TKE191113 Matematika Teknik B KAMIS 09:30 - 12:00 GEDUNG TEKNIK C 101 - 44 mhs

Capaian Pembelajaran Lulusan (CPL) Program Studi

  • Pengetahuan-PU01 : menguasai pengetahuan matematika lanjut meliputi kalkulus integral­diferensial, persamaan diferensial, aljabar linier, variable kompleks, probabilitas dan statistik, dan matematika diskret serta penerapan mereka di bidang teknik elektro;

Capaian Pembelajaran Mata Kuliah

  • Menguasai metode penyelesaian persamaan linear secara analitis dan numeris
  • Menguasai operasi terhadap matriks dan penerapannya
  • Menguasai konsep eigenvalue dan eigenvektor dan penerapannya
  • Menguasai konsep vektor dan ruang vektor serta penerapannya
  • Menguasai konsep transformasi linear dan penerapannya

Bahan Kajian

  • Sistem Persamaan Linear
  • Matriks dan Operasi Matriks
  • Eigenvalue dan Eigenvektor
  • Dekomposisi LU
  • Diagonalisasi dan Bentuk Kuadrat (tambahan)
  • Ruang Vektor Euklid
  • Ruang Vektor Umum
  • Transformasi Linear
  • Aplikasi Aljabar Linear di bidang Teknik Elektro

Referensi

Referensi Berbayar

Referensi Bebas Terbuka

Kuliah Online

Youtube

Software

PC

Android

Kuliah

Pekan-1

Pekan-2

  • Topik:
    • Matriks : Operasi

Pekan-3

  • Topik:
    • Matriks : Invers dan Dekomposisi LU
  • Catatan :
    • Mengapa ada dekomposisi LU? Karena dekomposisi LU lebih cepat dipakai untuk menyelesaikan linear persamaan dengan beragam vektor b, dibandingkan eliminasi Gauss yang harus mengulang langkah untuk setiap vektor b (Ref-1, Ref-2).

6.23 - Control Design with Frequency Method

Control Design with Frequency Method

Perbandingan Metode Root Locus (RL) dan Respon Frekuensi (RF)

  • Pada desain respon transien dan stabilitas dengan pengaturan gain (gain adjustment)
    • RF lebih mudah, gain dapat diperoleh dari Bode Plot
  • Pada desain respon transien dengan kompensasi seri (cascade compensation)
    • RF tidak se-intuitif RL
    • di RL titik tertentu diketahui memiliki karakteristik respon transien tertentu
    • di RF :
      • phase margin terkait dengan persen overshoot
      • bandwidth terkait dengan damping ration dan settling time serta peak time
  • Pada desain steady-state error dengan kompensasi seri
    • di RF dapat dirancang kompensasi yang memperbaiki respon transien dan steady state error secara bersamaan.
    • di RL ada banyak solusi yang memungkinkan untuk membuat kompensator (yang setiap solusinya akan memunculkan isu steady state error).

Desain Respon Frekuensi

  • Sistem yang open loop-nya stabil akan stabil di closed-loop jika magnitude respon frekuensi open loop memiliki gain kurang dari 0 dB pada frekuensi yang mana fase-nya adalah 180 derajat
  • Persen overshoot dikurangi dengan meningkatkan phase margin
  • Respon dipercepat dengan meningkatkan bandwidth
  • Steady state error diperbaiki dengan meningkatkan magnitude respon pada frekuensi rendah

Perbaikan Respon Transien dengan Pengaturan Gain (Gain Adjustment)

  • Damping ratio ($\zeta$) (dan persen overshoot) dan PM (phase margin)

Diagram Bode untuk Gain Adjusment

6.24 - Control Systems

Control Systems

Reference

  • Norman S. Nise, Control Systems Engineering [website]
  • Katsuhiko Ogata, Modern Control Engineering
  • Richard C. Dorf and Robert H. Bishop, Modern Control Systems [website]
  • Farid Golnaraghi and Benjamin C. Kuo, Automatic Control Systems [website]
  • Brian Douglas, The Fundamentals of Control Theory [website][ebook]
  • Pao C. Chau, Process Control: A First Course With MATLAB [website]
  • Karl J. Åström and Richard M. Murray, Feedback Systems: An Introduction for Scientists and Engineers [website]
  • R.V. Dukkipati, Analysis and Design of Control Systems using MATLAB

Online Book

Interactive Learning

Specific Topics

Control Theory Map

Control Theory Map

Software

Interactive Control Systems Learning

Online Video Course

Control Learning Videos

Control Theory Interactive

ICCT

Python Control

Intelligent Control

Control Systems Online Curriculum

Level 1:

  1. Math basics:

    1. Algebra 1: https://www.khanacademy.org/math/algebra and https://www.khanacademy.org/math/algebra2

    2. Trig: https://www.khanacademy.org/math/trigonometry

    3. Basic Calculus: https://www.khanacademy.org/math/ap-calculus-ab and https://www.khanacademy.org/math/ap-calculus-bc

  2. Physics Basics:

    1. General Physics: https://www.khanacademy.org/science/physics

    2. More “advanced” general physics: https://www.khanacademy.org/science/ap-physics-1 and https://www.khanacademy.org/science/ap-physics-2

  3. MATLAB Basics:

    1. https://ocw.mit.edu/courses/mathematics/18-s997-introduction-to-matlab-programming-fall-2011/index.htm

Level 2:

  1. Intermediate Math:

    1. Linear Algebra: https://www.khanacademy.org/math/linear-algebra

    2. Differential Equations: https://www.khanacademy.org/math/differential-equations

  2. Intermediate Physics:

    1. Calculus based Mechanics at the college level: https://ocw.mit.edu/courses/physics/8-012-physics-i-classical-mechanics-fall-2008/index.htm

    2. E&M: https://ocw.mit.edu/courses/physics/8-02-physics-ii-electricity-and-magnetism-spring-2007/index.htm

    3. Waves and vibrations: https://ocw.mit.edu/courses/physics/8-03-physics-iii-spring-2003/index.htm

  3. Intro to Simulink: https://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=SimulinkModeling

Level 3:

  1. More rigorous math courses:

    1. Multivariable Calculus: https://www.khanacademy.org/math/multivariable-calculus

    2. Higher level linear algebra: https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/index.htm

    3. Higher level differential equations: https://ocw.mit.edu/courses/mathematics/18-03-differential-equations-spring-2010/

  2. More rigorous physics:

    1. Mechanics 2: https://ocw.mit.edu/courses/physics/8-223-classical-mechanics-ii-january-iap-2017/

    2. Mechanics 3: https://ocw.mit.edu/courses/physics/8-09-classical-mechanics-iii-fall-2014/

  3. Beginning Engineering:

    1. Electrical:

      1. Circuits: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-002-circuits-and-electronics-spring-2007/

      2. Signals: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-003-signals-and-systems-fall-2011/

    2. Mechanical:

      1. Beginning dynamics: https://ocw.mit.edu/courses/mechanical-engineering/2-003sc-engineering-dynamics-fall-2011/syllabus/

      2. More Dynamics and intro to control: https://ocw.mit.edu/courses/mechanical-engineering/2-003j-dynamics-and-control-i-spring-2007/index.htm

Level 4:

  1. Helpful Math:

    1. Beginning Stats: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041sc-probabilistic-systems-analysis-and-applied-probability-fall-2013/
  2. Signal Processing:

    1. Signals and systems: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-011-signals-systems-and-inference-spring-2018/syllabus/
  3. Control:

    1. Dynamics and control 2: https://ocw.mit.edu/courses/mechanical-engineering/2-004-dynamics-and-control-ii-spring-2008/index.htm

    2. More systems and control: https://ocw.mit.edu/courses/mechanical-engineering/2-04a-systems-and-controls-spring-2013/index.htm

    3. Feedback Control: https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-30-feedback-control-systems-fall-2010/index.htm

    4. More intro control: https://www.edx.org/course/introduction-control-system-design-first-mitx-6-302-0x?utm_source=OCW&utm_medium=CHP&utm_campaign=OCW

    5. More state space intro: https://www.edx.org/course/introduction-state-space-control-mitx-6-302-1x?utm_source=OCW&utm_medium=CHP&utm_campaign=OCW

    6. Recommended Resources for this level in addition/ to help with the courses above, these will also help with some of the “higher” level stuff:

      1. katkimshow Intro to control: https://www.youtube.com/playlist?list=PLmK1EnKxphikZ4mmCz2NccSnHZb7v1wV-

      2. Brian Douglas Control System Lectures: https://www.youtube.com/playlist?list=PLUMWjy5jgHK3j74Z5Tq6Tso1fSfVWZC8L

      3. Steve Brunton Control Bootcamp: https://www.youtube.com/playlist?list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m

Level 5:

  1. Optional Math:

    1. Complex Variable: https://ocw.mit.edu/courses/mathematics/18-04-complex-variables-with-applications-fall-2003/

    2. A course designed to help intuition: https://ocw.mit.edu/courses/mathematics/18-098-street-fighting-mathematics-january-iap-2008/index.htm

  2. More rigorous practice in signals and systems:

    1. Graduate signals processing: https://ocw.mit.edu/courses/mechanical-engineering/2-161-signal-processing-continuous-and-discrete-fall-2008/lecture-notes/
  3. Control:

    1. Higher level dynamics and control: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-241j-dynamic-systems-and-control-spring-2011/index.htm

    2. Higher level feedback control: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-302-feedback-systems-spring-2007/calendar/

    3. Slightly higher level control: https://ocw.mit.edu/courses/mechanical-engineering/2-14-analysis-and-design-of-feedback-control-systems-spring-2014/index.htm

    4. Multi-variable control systems: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-245-multivariable-control-systems-spring-2004/index.htm

Level 6:

  1. Optional Nonlinear Dynamics:

    1. Chaos: https://ocw.mit.edu/courses/mathematics/18-353j-nonlinear-dynamics-i-chaos-fall-2012/index.htm

    2. Continuum: https://ocw.mit.edu/courses/mathematics/18-354j-nonlinear-dynamics-ii-continuum-systems-spring-2015/

  2. Non-Linear control:

    1. More theory based: https://web.mit.edu/nsl/www/videos/lectures.html

    2. More practice based: https://www.youtube.com/watch?v=9xDZy5mE-3I&list=PLrxYXaxBXgRoqgaBlitaAA_sgVZ8V6Teg (note, videos in english except introduction)

      1. Resources for these videos: https://sites.google.com/a/g2.nctu.edu.tw/nonlinear-control-systems-2017-fall/course-materials

Level 7:

  1. More advanced, but optional, non-linear dynamics:

    1. Chaos: https://ocw.mit.edu/courses/mathematics/18-385j-nonlinear-dynamics-and-chaos-fall-2014/index.htm

    2. Waves: https://ocw.mit.edu/courses/mechanical-engineering/2-034j-nonlinear-dynamics-and-waves-spring-2007/index.htm

  2. Control:

    1. Sliding mode: https://www.youtube.com/watch?v=x9WxwM6Ebvo (Note, this is the only videos or online materials I can find in a course-manner on sliding mode, please suggest more if you find them)

    2. Optimal and Robust control: https://www.youtube.com/watch?v=z64cXTZKw4I&list=PLMLojHoA_QPmRiPotD_TnfdUkglTexuqm\

Control eBook

6.26 - Course

Course

Kuliah Teknik Elektro Unsoed

  • [[kuliah|Kuliah]]
  • [[mk-dasar-teknik-elektro|MK Dasar Teknik Elektro]]
  • [[mk-internet-of-things|MK Internet of Things]]
  • [[mk-machine-learning|MK Machine Learning]]
  • [[mk-matematika-teknik|MK Matematika Teknik]]
  • [[mk-pengolahan-sinyal-digital|MK Pengolahan Sinyal Digital]]
  • [[mk-sistem-kendali|MK Sistem Kendali]]
  • [[mk-sistem-kendali-cerdas|MK Sistem Kendali Cerdas]]
  • [[mk-sistem-kendali-lanjut|MK Sistem Kendali Lanjut]]

Online Courses

Course Resources

6.27 - Computer Science

Computer Science

Computer Science

Computer Science

6.28 - Control Systems Resources

Control Systems Resources

Control

Control System

Control

7 - Development

Development

7.2 - Blog Resources

Blog Resources

Classless CSS - No Javascript

Gatsby Starter

Jekyll Theme

Hugo Theme

7.3 - Webdev Resources

Webdev Resources

Classless CSS - No Javascript

Gatsby Starter

Jekyll Theme

Hugo Theme

Development

Single HTML Web

Web Page Building

💡 : quick (drag and drop) web page building

Web Dev

Blogging

Web Development

Simple Server from Folder

Simple Web

Self-hosted PHP

Simple Blog

Web Test

Web Size Club

Simple Static Web

7.4 - CSS for the Blog

CSS for the Blog

Alert and Warning

<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/irosyadi/irosyadi@master/alert.min.css">
<div class="alert alert-success"><strong>🎯 SUCCESS!</strong> <br> Success text. </div>  
<div class="alert alert-info"><strong>📌 INFO</strong> <br> Info text. </div>  
<div class="alert alert-warning"><strong>⚠️ WARNING!</strong> <br> Warning text. </div>  
<div class="alert alert-danger"><strong>⛔ DANGER!</strong> <br> Danger text. </div>  
<p class="alert alert-danger"><strong>⛔ DANGER!</strong> <br> Danger text. </p>  
🎯 SUCCESS!
Success text.
📌 INFO
Info text.
⚠️ WARNING!
Warning text.
⛔ DANGER!
Danger text.

⛔ DANGER!
Danger text.

Inline Reference with <summary>

<link rel="stylesheet" type="text/css" href="https://rosyadi.com/file/css/inline3.css">
<div>
OK. This paper<details><summary>1</summary> Lowry, O. H., Rosebrough, et al. Biol. Chem. 193, 265–275 (1951).</details> describing an assay to determine the amount of protein in a solution.  
The sun is molten gold<details><summary>2</summary> it is not, actually</details> and a star.  
</div>

- The moon is a silver planet<details><summary>3</summary> according to nobody</details> and a star slave.
- This is another reference<details><summary>[4]</summary> something to refer</details>, thank you.
- Don't minify this css
- Put paragraph with `<div>` tag
OK. This paper
1 Lowry, O. H., Rosebrough, et al. Biol. Chem. 193, 265–275 (1951).
describing an assay to determine the amount of protein in a solution. The sun is molten gold
2 it is not, actually
and a star.
  • The moon is a silver planet
    3 according to nobody
    and a star slave.
  • This is another reference
    [4] something to refer
    , thank you.
  • Don’t minify this css
  • Put paragraph with <div> tag

Inline Reference with Tufte CSS

<link rel="stylesheet" type="text/css" href="https://rosyadi.com/file/css/tufte-im.css">
<p class="inline">(…) The lack of a clear definition
<input id="i1" type="checkbox"><label for="i1">1</label>
<small>Bautts, T. (2005) </small> is worrying.  The problem as said
<input id="i2" type="checkbox"><label for="i2">2</label>
<small> Raymond, Eric S. (1996) The New Hacker's Dictionary</small> should be addressed.
</p>

<p class="block">(…) The lack of a clear definition
<input id="b1" type="checkbox"><label for="b1">1</label>
<small>Bautts, T. (2005) </small> is worrying.  The problem as said
<input id="b2" type="checkbox"><label for="b2">2</label>
<small> Raymond, Eric S. (1996) The New Hacker's Dictionary</small> should be addressed.
</p>

<p class="hover">(…) The lack of a clear definition
<input id="h1" type="checkbox"><label for="h1">1</label>
<small>Bautts, T. (2005) </small> is worrying.  The problem as said
<input id="h2" type="checkbox"><label for="h2">2</label>
<small> Raymond, Eric S. (1996) The New Hacker's Dictionary</small> should be addressed.
</p>

(…) The lack of a clear definition Bautts, T. (2005) is worrying. The problem as said Raymond, Eric S. (1996) The New Hacker's Dictionary should be addressed.

(…) The lack of a clear definition Bautts, T. (2005) is worrying. The problem as said Raymond, Eric S. (1996) The New Hacker's Dictionary should be addressed.

(…) The lack of a clear definition Bautts, T. (2005) is worrying. The problem as said Raymond, Eric S. (1996) The New Hacker's Dictionary should be addressed.

Hover CSS

<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/irosyadi/irosyadi@master/hover-im.min.css">  

Text Transitions

<a href="#" class="hvr-grow">Grow</a>  
<a href="#" class="hvr-shrink">Shrink</a>  
<a href="#" class="hvr-pulse">Pulse</a>  
<a href="#" class="hvr-pulse-grow">Pulse Grow</a>  
<a href="#" class="hvr-pulse-shrink">Pulse Shrink</a>  
<a href="#" class="hvr-push">Push</a>  
<a href="#" class="hvr-pop">Pop</a>  
<a href="#" class="hvr-bounce-in">Bounce In</a>  
<a href="#" class="hvr-bounce-out">Bounce Out</a>  
<a href="#" class="hvr-rotate">Rotate</a>  
<a href="#" class="hvr-grow-rotate">Grow Rotate</a>  
<a href="#" class="hvr-float">Float</a>  
<a href="#" class="hvr-sink">Sink</a>  
<a href="#" class="hvr-bob">Bob</a>  
<a href="#" class="hvr-hang">Hang</a>  
<a href="#" class="hvr-skew">Skew</a>  
<a href="#" class="hvr-skew-forward">Skew Forward</a>  
<a href="#" class="hvr-skew-backward">Skew Backward</a>  
<a href="#" class="hvr-wobble-horizontal">Wobble Horizontal</a>  
<a href="#" class="hvr-wobble-vertical">Wobble Vertical</a>  
<a href="#" class="hvr-wobble-to-bottom-right">Wobble To Bottom Right</a>  
<a href="#" class="hvr-wobble-to-top-right">Wobble To Top Right</a>  
<a href="#" class="hvr-wobble-top">Wobble Top</a>  
<a href="#" class="hvr-wobble-bottom">Wobble Bottom</a>  
<a href="#" class="hvr-wobble-skew">Wobble Skew</a>  
<a href="#" class="hvr-buzz">Buzz</a>  
<a href="#" class="hvr-buzz-out">Buzz Out</a>  
<a href="#" class="hvr-forward">Forward</a>  
<a href="#" class="hvr-backward">Backward</a>  

Grow
Shrink
Pulse
Pulse Grow
Pulse Shrink
Push
Pop
Bounce In
Bounce Out
Rotate
Grow Rotate
Float
Sink
Bob
Hang
Skew
Skew Forward
Skew Backward
Wobble Horizontal
Wobble Vertical
Wobble To Bottom Right
Wobble To Top Right
Wobble Top
Wobble Bottom
Wobble Skew
Buzz
Buzz Out
Forward
Backward

Background Transitions

<a href="#" class="hvr-fade">Fade</a>  
<a href="#" class="hvr-back-pulse">Back Pulse</a>  
<a href="#" class="hvr-sweep-to-right">Sweep To Right</a>  
<a href="#" class="hvr-sweep-to-left">Sweep To Left</a>  
<a href="#" class="hvr-sweep-to-bottom">Sweep To Bottom</a>  
<a href="#" class="hvr-sweep-to-top">Sweep To Top</a>  
<a href="#" class="hvr-bounce-to-right">Bounce To Right</a>  
<a href="#" class="hvr-bounce-to-left">Bounce To Left</a>  
<a href="#" class="hvr-bounce-to-bottom">Bounce To Bottom</a>  
<a href="#" class="hvr-bounce-to-top">Bounce To Top</a>  
<a href="#" class="hvr-radial-out">Radial Out</a>  
<a href="#" class="hvr-radial-in">Radial In</a>  
<a href="#" class="hvr-rectangle-in">Rectangle In</a>  
<a href="#" class="hvr-rectangle-out">Rectangle Out</a>  
<a href="#" class="hvr-shutter-in-horizontal">Shutter In Horizontal</a>  
<a href="#" class="hvr-shutter-out-horizontal">Shutter Out Horizontal</a>  
<a href="#" class="hvr-shutter-in-vertical">Shutter In Vertical</a>  
<a href="#" class="hvr-shutter-out-vertical">Shutter Out Vertical</a>  

Fade
Back Pulse
Sweep To Right
Sweep To Left
Sweep To Bottom
Sweep To Top
Bounce To Right
Bounce To Left
Bounce To Bottom
Bounce To Top
Radial Out
Radial In
Rectangle In
Rectangle Out
Shutter In Horizontal
Shutter Out Horizontal
Shutter In Vertical
Shutter Out Vertical

Border Transitions

<a href="#" class="hvr-underline-from-left">Underline From Left</a>  
<a href="#" class="hvr-underline-from-center">Underline From Center</a>  
<a href="#" class="hvr-underline-from-right">Underline From Right</a>  
<a href="#" class="hvr-reveal">Reveal</a>  
<a href="#" class="hvr-underline-reveal">Underline Reveal</a>  
<a href="#" class="hvr-overline-reveal">Overline Reveal</a>  
<a href="#" class="hvr-overline-from-left">Overline From Left</a>  
<a href="#" class="hvr-overline-from-center">Overline From Center</a>  
<a href="#" class="hvr-overline-from-right">Overline From Right</a>  

Underline From Left
Underline From Center
Underline From Right
Reveal
Underline Reveal
Overline Reveal
Overline From Left
Overline From Center
Overline From Right

Border Transitions (better with button class)

<a href="#" class="button hvr-border-fade">Border Fade</a>  
<a href="#" class="button hvr-hollow">Hollow</a>  
<a href="#" class="button hvr-trim">Trim</a>  
<a href="#" class="button hvr-ripple-out">Ripple Out</a>  
<a href="#" class="button hvr-ripple-in">Ripple In</a>  
<a href="#" class="button hvr-outline-out">Outline Out</a>  
<a href="#" class="button hvr-outline-in">Outline In</a>  
<a href="#" class="button hvr-round-corners">Round Corners</a>  

Border Fade
Hollow
Trim
Ripple Out
Ripple In
Outline Out
Outline In
Round Corners

Shadow and Glow Transitions (better with button class)

<a href="#" class="button hvr-shadow">Shadow</a>  
<a href="#" class="button hvr-grow-shadow">Grow Shadow</a>  
<a href="#" class="button hvr-float-shadow">Float Shadow</a>  
<a href="#" class="button hvr-glow">Glow</a>  
<a href="#" class="button hvr-shadow-radial">Shadow Radial</a>  
<a href="#" class="button hvr-box-shadow-outset">Box Shadow Outset</a>  
<a href="#" class="button hvr-box-shadow-inset">Box Shadow Inset</a>  

Shadow
Grow Shadow
Float Shadow
Glow
Shadow Radial
Box Shadow Outset
Box Shadow Inset

Speech Bubbles (better with button class)

<a href="#" class="button hvr-bubble-top">Bubble Top</a>  
<a href="#" class="button hvr-bubble-right">Bubble Right</a>  
<a href="#" class="button hvr-bubble-bottom">Bubble Bottom</a>  
<a href="#" class="button hvr-bubble-left">Bubble Left</a>  
<a href="#" class="button hvr-bubble-float-top">Bubble Float Top</a>  
<a href="#" class="button hvr-bubble-float-right">Bubble Float Right</a>  
<a href="#" class="button hvr-bubble-float-bottom">Bubble Float Bottom</a>  
<a href="#" class="button hvr-bubble-float-left">Bubble Float Left</a>  

Bubble Top
Bubble Right
Bubble Bottom
Bubble Left
Bubble Float Top
Bubble Float Right
Bubble Float Bottom
Bubble Float Left

Curls (better with button class)

<a href="#" class="button hvr-curl-top-left">Curl Top Left</a>  
<a href="#" class="button hvr-curl-top-right">Curl Top Right</a>  
<a href="#" class="button hvr-curl-bottom-right">Curl Bottom Right</a>  
<a href="#" class="button hvr-curl-bottom-left">Curl Bottom Left</a>  

Curl Top Left
Curl Top Right
Curl Bottom Right
Curl Bottom Left

Working with <div> and <p> tag

Sweep to Right. We know it will be a long paragraph.
This new line indicates it is what will be happened.

Bounce to Right. We know it will be a long paragraph.
This new line indicates it is what will be happened.

Shutter in Vertical. We know it will be a long paragraph.
This new line indicates it is what will be happened.

Curl Bottom Left. We know it will be a long paragraph.
This new line indicates it is what will be happened.

Outline In. We know it will be a long paragraph.
This new line indicates it is what will be happened.

Float Shadow. We know it will be a long paragraph.
This new line indicates it is what will be happened.

Graph CSS

<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/rbitr/ChartS.css@master/ChartSS.css">
  • (15,12)
  • (0.25,6.78)
  • (-0.7,9)
  • (-4,-6)
    • Dogs: 20
    • Cats: 10
    • Lions: 30
    • Tigers: 15
    • Bears: 20
  • Animals: 95
  • Dogs : 20
  • Cats : 10
  • Lions : 30
  • Tigers : 15
  • Bears : 20
  • Chart CSS

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/charts.css/dist/charts.min.css">
    
    Front End Developer Salary
    Asia $20K $30K $40K $50K $75K
    Europe $40K $60K $75K $90K $100K
    • 1st year
    • 2nd year
    • 3rd year
    • 4th year
    • 5th year

    7.5 - HTML for the Blog

    HTML for the Blog

    Meter

    Wrapper

    Click me to see more details

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut eum perferendis eius. Adipisci velit et similique earum quas illo odio rerum optio, quis, expedita assumenda enim dicta aliquam porro maxime minima sed a ullam, aspernatur corporis.

    7.6 - JS for the Blog

    Java Script for the Blog

    7.7 - Experimental Markdown

    Experimental Markdown

    Experimental markdown to check markdown parser compatibility between Gatsby, Jekyll, Gitbook, and Hugo.

    Type 1

    Success in Gatsby. Success in Jekyll. Fail in Gitbook. Fail in Hugo.

    Type 2

    Fail in Gatsby. Success in Jekyll. Success in Gitbook. Fail in Hugo.

    Type 3

    Fail in Gatsby. Fail in Jekyll. Success in Gitbook. Fail in Hugo.

    Type 4

    Fail in Gatsby. Success in Jekyll. Success in Gitbook. Fail in Hugo.

    Number and Bullet

    1. One
    2. Two
    • Three
      • Three.a
      • Three.b
    1. Four
    2. Five
    • List A
    1. List B
    • List C

    Keyboard

    imron

    Comment

    <!-- Write your comments here -->

    Here is the comment:

    Symbol List

    💬 speech
    🌏️ globe
    ⭐️ star
    🚀 rocket
    👣 footprints
    ⚓️ anchor
    🔥 fire
    🎯 target
    📌 pin
    ⛔ stop
    ‼️ double warning
    ❗️ warning
    ⁉️ question
    ✔️☑️ check mark
    ❌ cross
    ℹ️ info
    📧 email
    🌐 web
    ▶▷ triangle
    ⚠️ warning
    💥 danger
    📝 note
    ☝️ remember
    ⚡️ flash

    Image Hosting in Github

    QR Code Image-small

    Tittle YAML

    • Cannot use : in tittle

    Content

    • Cannot use % { in github.io
    • Cannot use | in github.io

    SVG

    github.io and gitbook.io cannot render svg

    crocodile

    7.8 - Markdown for This Blog

    Markdown for This Blog

    Common markdown format for Gitbook, gatsby-starter-bee, and VNote.

    1. h2 Heading

    markdown

    # h1 Heading
    ## h2 Heading
    ### h3 Heading
    #### h4 Heading
    ##### h5 Heading
    ###### h6 Heading
    

    display

    h3 Heading

    h4 Heading

    h5 Heading
    h6 Heading

    2. Paragraphs

    markdown

    This is the first paragraph.
    
    This is the second paragraph
    

    display

    This is the first paragraph.

    This is the second paragraph

    3 Line Break

    markdown

    This is the first line.  
    And this is the second line.<br>
    And finally this is the last line.
    

    display

    This is the first line.
    And this is the second line.
    And finally this is the last line.

    4. Emphasis

    markdown

    **This is bold text**  
    __This is bold text__  
    *This is italic text*  
    _This is italic text_  
    This text is ___really important___  
    

    display

    This is bold text
    This is bold text
    This is italic text
    This is italic text
    This text is really important

    5. Blockquotes

    markdown

    > This is the first line of paragraph, followed by blank line
    > 
    > Blockquotes can also be nested...
    >> ...by using additional greater-than signs right next to each other...
    > > > ...or with spaces between arrows.
    >
    > ### with a heading
    > 
    > - and list
    > - list
    > - with **bold** and *italic* text
    

    display

    This is the first line of paragraph, followed by blank line

    Blockquotes can also be nested…

    …by using additional greater-than signs right next to each other…

    …or with spaces between arrows.

    with a heading

    • and list
    • list
    • with bold and italic text

    6. Lists

    6.1. Unordered

    markdown

    
    + To start a list, there should be an empty line above
    + Create a list by starting a line with `+`, `-`, or `*`
    - Changing the sign will add a linespace
    + Add text under an item  
    This is a text under an item. Notice that there are two spaces at the end above.
    - Sub-lists are made by indenting 2 spaces:
      * Item 2a
      * Item 2b
    * Item 3
    
    To end a list, there should be one empty line above.  
    

    display

    • To start a list, there should be an empty line above
    • Create a list by starting a line with +, -, or *
    • Changing the sign will add a linespace
    • Add text under an item
      This is a text under an item. Notice that there are two spaces at the end above.
    • Sub-lists are made by indenting 2 spaces:
      • Item 2a
      • Item 2b
    • Item 3

    To end a list, there should be one empty line above.

    6.2. Ordered

    markdown

    1. Item 1
    1. Item 2  
    Notice that the sequence number is irrelevant. 
    Markdown will change the sequence automatically when renderring. 
    Notice that there are two spaces at the end above to make a new text under item.
    3. Sub-lists are made by indenting 4 spaces
        1. Item 3a
        2. Item 3b
    8. Any number for item 4
    

    display

    1. Item 1
    2. Item 2
      Notice that the sequence number is irrelevant.
      Markdown will change the sequence automatically when renderring.
      Notice that there are two spaces at the end above to make a new text under item.
    3. Sub-lists are made by indenting 4 spaces
      1. Item 3a
      2. Item 3b
    4. Any number for item 4

    6.3. Offset in Oredered List

    • didn’t work in Gitbook

    markdown

    57. will started with offset 57
    1. so it will be 58
    2. this is 59
    

    display

    1. will started with offset 57
    2. so it will be 58
    3. this is 59

    7. Elements in Lists

    markdown

    * To add another element in a list while preserving the continuity of the list...
    * indent the element four spaces
         like this
    * ...or add blank lines in between
    
        I need to add another paragraph below the second list item.
    
    * the third list item.
    
        > A blockquote would look great below the second list item.
    
    * the fourth list item.
    

    display

    • To add another element in a list while preserving the continuity of the list…

    • add blank lines in between

      I need to add another paragraph below the second list item.

    • the third list item.

      A blockquote would look great below the second list item.

    • the fourth list item.

    markdown

    1. This image is inline ![wikquote](https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/35px-Wikiquote-logo.svg.png).
    2. Linux mascot is called Tux.
    
       ![Tux, the Linux mascot](https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Tux.png/220px-Tux.png)
    3. Tux is is really cool.
    4. For quote in ordered list, add five spaces.
         > A blockquote would look great below the second list item.
    5.  But, for code blocks in the lists, add eight spaces or two tabs:
    
            <html>
              <head>
                <title>Test</title>
              </head>
    
    6.  So okay for now
    

    display

    1. This image is inline wikquote.

    2. Linux mascot is called Tux.

      Tux, the Linux mascot

    3. Tux is really cool.

    4. For quote in ordered list, add five spaces.

      A blockquote would look great below the second list item.

    5. But, for code blocks in the lists, add eight spaces or two tabs:

       <html>
         <head>
           <title>Test</title>
         </head>
      
    6. So okay for now

    8. Code

    markdown

    This is inline `code`.
    

    display

    This is inline code.

    markdown

        // add four spaces before for code
        like this
    

    display

    // add four spaces before for code
    like this
    

    markdown

        <html>
          <head>
            <title>HTML code with four spaces</title>
          </head>
    

    display

    <html>
      <head>
        <title>HTML code with four spaces</title>
      </head>
    

    markdown

    This is [link](https://example.com/)  
    This is [link with title](https://example.com/ "title text!")
    https://example.com/  
    <https://www.markdownguide.org>  
    I love supporting the **[EFF](https://eff.org)**.  
    This is the *[Markdown Guide](https://www.markdownguide.org)*.  
    See the section on [`code`](#code).  
    But  `https://www.example.com`  
    but be careful with [%20 link](https://www.example.com/my%20great%20page)  
    example [without %20](https://www.example.com/my great page)
    

    display

    This is link
    This is link with title
    https://example.com/
    https://www.markdownguide.org
    I love supporting the EFF.
    This is the Markdown Guide.
    See the section on code.
    But https://www.example.com
    but be careful with %20 link
    example [without %20](https://www.example.com/my great page)

    9.1. Email Linkify

    • didn’t work in Gatsby and Gitbook

    markdown

    fake@example.com didn't work in Gatsby and Gitbook  
    <fake@example.com> is okay  
    

    display

    fake@example.com didn’t work in Gatsby and Gitbook
    fake@example.com is okay

    markdown

    I know [Indonesia][1]  
    I also know [etymology of Indonesia][2]  
    I knew [History of Indonesia][3]  
    It doesn't have [hobbit-hole][hh].
    
    [1]: <https://en.wikipedia.org/wiki/Indonesia>
    [2]: https://en.wikipedia.org/wiki/Indonesia#Etymology "Etymology of Indonesia"
    [3]: https://en.wikipedia.org/wiki/Indonesia#History 'History of Indonesia'
    [hh]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> "Hobbit lifestyles"
    

    display

    I know Indonesia
    I also know etymology of Indonesia
    I knew History of Indonesia
    It doesn’t have hobbit-hole.

    11. Images

    markdown

    ![Wikipedia with Optional Text](https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png "Optional Text")  
    ![Wikipedia with Alt Text, reference style][id1]  
    
    [id1]: https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png "Optional Text"
    

    display

    Wikipedia with Optional Text
    Wikipedia with Alt Text, reference style

    12. Escaping Characters

    markdown

    \* star  
    \\ backslash itself  
    \` backtick  
    \{ \} curly braces  
    \! exclamation mark
    

    display

    * star
    \ backslash itself
    ` backtick
    { } curly braces
    ! exclamation mark

    13. HTML Code

    • very restricted in Gitbook

    13.1. HTML: Bold, Italic, Strikethrough

    markdown

    This <em>word</em> is italic.  
    This <strong>word</strong> is bold.  
    This <del>word</del> is deleted with strikethorouugh.
    

    display

    This word is italic.
    This word is bold.
    This word is deleted with strikethorouugh.

    13.2. Others HTML Code

    • didn’t work in Gitbook

    markdown

    <font color=red>red color</font>  
    <mark>highlight</mark>  
    <ins>underline</ins>  
    <small>smaller text</small>  
    H<sub>2</sub>O  
    x<sup>2</sup>+y<sup>2</sup>=0  
    Variable of triangle area: 1/2 x <var>b</var> x <var>h</var>, where <var>b</var> is the base, and <var>h</var> is the vertical height.
    

    display

    red color
    highlight
    underline
    smaller text
    H2O
    x2+y2=0
    Variable of triangle area: 1/2 x b x h, where b is the base, and h is the vertical height.

    14. Horizontal Rules

    • didn’t work in Gitbook

    markdown

    ___
    
    ---
    
    ***
    
    but only didn't work for Gitbook
    

    display




    15. Heading ID

    • didn’t work for Gatsby

    markdown

    ### My Great Heading {#heading-ids}
    
    Link to [Heading IDs](#heading-ids)
    

    display

    My Great Heading

    Link to Heading IDs

    16. Code Fencing and Highlighting

    markdown

    ```
    This is a fenced code block.
    ```
    ~~~
    No language indicated, so no syntax highlighting.
    s = "There is no highlighting for this."
    ~~~
    
    ```python
    def function():
        #indenting works just fine in the fenced code block
        s = "Python syntax highlighting"
        print s
    ```
    
    ```javascript
    var s = "JavaScript syntax highlighting";
    alert(s);
    ```
    
    ```ruby
    require 'redcarpet'
    markdown = Redcarpet.new("ruby syntax highlighting")
    puts markdown.to_html
    ```
    

    display

    This is a fenced code block.
    
    No language indicated, so no syntax highlighting.
    s = "There is no highlighting for this."
    
    def function():
        #indenting works just fine in the fenced code block
        s = "Python syntax highlighting"
        print s
    
    var s = "JavaScript syntax highlighting";
    alert(s);
    
    require 'redcarpet'
    markdown = Redcarpet.new("ruby syntax highlighting")
    puts markdown.to_html
    

    17. Tables

    markdown

    | Syntax      | Description | Test Text is long    |
    | :---        |    :----:   |          ---: |
    | [Example](https://www.example.com/)      | **Title**       | `Here's this  is` |
    | Paragraph   | Text        | And more   |
    

    display

    Syntax Description Test Text is long
    Example Title Here's this is
    Paragraph Text And more

    18. Text Formatting

    18.1. Strikethrough

    markdown

    ~~strikethrough~~  
    

    display

    strikethrough

    18.2. Highlighting and Underline

    • didn’t work in Gitbook and Gatsby
    ==highlight, fail in Gitbook and Gatsby==  
    _underline, fail in Gitbook and Gatsby_  
    

    display

    ==highlight, fail in Gitbook and Gatsby==
    underline, fail in Gitbook and Gatsby

    19. Task Lists (Checkbox, Tick Mark)

    markdown

    - [x] Write the press release
    - [ ] Update the website
    - [ ] Contact the media
    

    display

    • Write the press release
    • Update the website
    • Contact the media

    20. Emojies

    20.1. Copy Pasted Emojies

    markdown

    Gone camping! ⛺ Be back soon.  
    That is so funny! 😂  
    

    display

    Gone camping! ⛺ Be back soon.
    That is so funny! 😂

    20.2. Shortcode Emoji

    • didn’t work in Gitbook
    • in Gatsby and VNote, use Github Emoji Shortcode

    markdown

    Shortcode emoji examples :grinning: :smiley: :smile: :grin: :laughing: :joy:
    

    display

    Shortcode emoji examples :grinning: :smiley: :smile: :grin: :laughing: :joy:

    21. Typographic Replacements, Superscript, Subscript

    • dind’t work in Gatsby and Gitbook

    markdown

    autoreplacement of (c) (C) (r) (R) (tm) (TM) (p) (P) +-  
    superscript x^2^ and subscript H~2~O
    

    display

    autoreplacement of (c) (C) (r) (R) (tm) (TM) (p) (P) +-
    superscript x^2^ and subscript H~2~O

    22. HTML Entities and Character Codes

    markdown

    &copy; &  &uml; &trade; &iexcl; &pound;  
    &amp; &lt; &gt; &yen; &euro; &reg; &plusmn; &para; &sect; &brvbar; &macr; &laquo; &middot;  
    x&sup2; y&sup3; &frac34; &frac14;  &times;  &divide;   &raquo; &#124;  
    18&ordm;C  &quot;  &apos;
    

    display

    © & ¨ ™ ¡ £
    & < > ¥ € ® ± ¶ § ¦ ¯ « ·
    x² y³ ¾ ¼ × ÷ » |
    18ºC " '


    23. Latex

    23.1. Inline Equation

    • Equation with one dollar sign $ works inline in VNote
    • Equation with two dollar signs $$ works inline in Jekyll and Gitbook, but not in VNote

    markdown

    Inline equation with one dollar sign: $E=mc^2$ (worked in VNote and Gatsby).  
    Inline equation with two dollar sign: $$E=mc^2$$ (worked in Gatsby, Jekyll and Gitbook).
    

    display

    Inline equation with one dollar sign: $E=mc^2$ (worked in VNote and Gatsby).
    Inline equation with two dollar sign: $$E=mc^2$$ (worked in Gatsby, Jekyll and Gitbook).

    23.2. Newline Equation

    markdown

    Newline equation with two dollar signs.
    
    $$\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))$$
    

    display

    Newline equation with two dollar signs.

    $$\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))$$

    24. Specific HTML Code

    • didn’t work in Gitbook

    24.1. Drop Down List

    markdown

    <details>
      <summary>Click this List ▶</summary>
      <p>
        <ul>
          <li>irosyadi: https://irosyadi.netlify.app</li>
          <li>irosyadi: https://irosyadi.gitbook.io</li>
          <li>irosyadi: https://irosyadi.github.io</li>
        </ul>
      </p>
    </details>
    

    display

    Click this List ▶

    • irosyadi:
    • irosyadi:
    • irosyadi:

    24.2. Summary

    markdown

    <details>
      <summary>Clik this Term ▶</summary>
      <p>Term is explanation of something</p>
    </details>
    

    display

    Clik this Term ▶

    Term is explanation of something

    24.3. Definition

    markdown

    <dl>
    <dt>First Term</dt>
    <dd>This is the definition of the first term.</dd>
    <dt>Second Term</dt>
    <dd>This is one definition of the second term. </dd>
    <dd>This is another definition of the second term.</dd>
    </dl>
    

    display

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    24.4. Abbreviation

    markdown

    The <abbr title="Hyper Text Markup Language">HTML</abbr> specification is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.
    

    display

    The HTML specification is maintained by the W3C.

    26. Admonition Styles

    26.1. Admonition with CSS

    markdown

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/irosyadi/irosyadi@master/alert.min.css">
    
    <div class="alert alert-success"><strong>🎯 SUCCESS!</strong> <br> Success text. </div>  
    <div class="alert alert-info"><strong>📌 INFO</strong> <br> Info text. </div>  
    <div class="alert alert-warning"><strong>⚠️ WARNING!</strong> <br> Warning text. </div>  
    <div class="alert alert-danger"><strong>⛔ DANGER!</strong> <br> Success text. </div>  
    

    display

    🎯 SUCCESS!
    Success text.
    📌 INFO
    Info text.
    ⚠️ WARNING!
    Warning text.
    ⛔ DANGER!
    Success text.

    26.2. Admonition with Quote

    • worked in everywhere

    markdown

    > **⚠️ WARNING!**
    > > This is a warning for you...
    

    display

    ⚠️ WARNING!

    This is a warning for you…

    26.3. Admonition with Table

    • worked in everywhere

    *** markdown***

    | **⚠️ WARNING!**                |
    | :--------------------------- |
    | This is a warning for you... |
    

    display

    ⚠️ WARNING!
    This is a warning for you…

    27. Footnote

    • didn’t work in Gitbook

    markdown

    Here's a simple footnote,[^1] and here's a longer one,[^bignote], and [^withcode].  
    
    [^1]: This is the first footnote, in Gitbook, there is no new line between.  
    [^bignote]: Here's another one.  
    [^withcode]: `code` or code in paragraphs  
    

    display

    Here’s a simple footnote,1 and here’s a longer one,2, and 3. But there is problem with Gitbook for footnote.


    1. This is the first footnote, in Gitbook, there some problems. ↩︎

    2. Here’s another one. ↩︎

    3. code or code in paragraphs ↩︎

    7.10 - Jamstack and WebApps

    Jamstack and WebApps

    What is Jamstack?

    List JavaScript Frontend Frameworks

    • React
    • Vue
    • Angular
    • Svelte

    List Static Site Generators

    • Next.js
    • Gatsby
    • Hugo
    • Jekyll
    • 11ty (Eleventy)
    • Nuxt
    • Docosaurus

    List Headless CMS’s

    • Contentful
    • Strapi
    • Netlify CMS
    • Dato CMS
    • Ghost
    • Publii
    • Prose
    • Forestry
    • Sanity
    • Stackbit

    List of Deployments (Static Hosting)

    Comparison

    Host Comparison

    Third Party SaaS

    • Comments
      • Disqus
      • Staticman
    • Search
      • Algolia
      • List.js
    • Authorization
      • Auth0
    • Form Submission
      • Typeform
      • FormKeep
    • E-Commerce
      • Snipcart
      • Foxy.io

    Learn Jamstack

    Gatsby Starters

    Jekyll Themes

    7.11 - List of Static Web Generator

    List of Static Web Generator

    List of List

    Fast Static Site Generator

    Static Site Client Side Rendering

    • MDWiki : javascript
    • VNote : javascript
    • Grav : PHP
    • Bludit

    Static Site with PHP

    Jekyll Theme

    Hugo Theme

    7.12 - Web Development

    Web Development

    {% include list.liquid all=true %}

    7.13 - Classless CSS

    Classless CSS

    Classless CSS

    List of Clasless CSS

    Simple CSS

    Minimal CSS

    CSS

    7.15 - Experimental iFrame

    Experimental iFrame

    Iframe Code

    <iframe src="https://wttr.in" frameborder="0" width="500" height="300" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
    
    <div style="border: 1px solid rgb(255, 255, 255); overflow: hidden; margin: 15px auto; max-width: 400px; max-height:400px;">
    <iframe scrolling="no" src="https://thisartworkdoesnotexist.com/" style="border: 0px none; width: 410px; margin-left: 0px; margin-right: 0px; height: 410px; margin-top: 0px; margin-bottom: 0px;">
    </iframe>
    </div>
    

    Iframe Test with Div

    Iframe Test

    7.16 - Web List

    Web List

    Knowledge Bases

    Digital Gardens

    Simple Blogs

    Landing Page

    Portals

    Performance Comparison

    site grade performance structure LCP TBT CLS Link
    irosyadi.netlify A 90 93 1200ms 12ms 0.23 GTmetrix
    irosyadi-wiki A 92 98 980ms 197ms 0.06 GTmetrix
    irosyadi-garden A 100 100 132ms 25ms 0 GTmetrix
    irosyadi-web A 100 100 623ms 9ms 0 GTmetrix
    irosyadi.gitbook C 70 96 3000ms 266ms 0.05 GTmetrix
    irosyadi.github A 100 100 301ms 3ms 0.03 GTmetrix
    irosyadi.mataroa A 100 100 596ms 0ms 0 GTmetrix
    irosyadi.bearblog A 100 100 338ms 0ms 0.02 GTmetrix

    8 - How To

    How To

    8.1 - How to Read Research Paper

    How to Read Research Paper

    Tips

    Simple Steps

    1. First steps: skip
      1. Read title and abstract
      2. Read introduction
      3. Read the methodology and or read conclusions
      4. If the content of the 3 previous steps makes sense, and the paper is relevant
    2. Second steps: going into understanding
      1. Read the body of the paper
    3. Third steps: going into deeper understanding
      1. Deeply analyze the paper
    4. Four steps: writing
      1. Archive it and write bibliographic record
      2. Write your comment or review.

    Three-Pass Approach

    • The first pass gives you a general idea about the paper.
    • The second pass lets you grasp the papers content, but not its details.
    • The third pass helps you understand the paper in depth.

    First Pass (5-10 minutes)

    What to do:
    The first pass is a quick scan to get a bird’s-eye view of the paper. You can also decide whether you need to do any more passes.

    1. Carefully read the title, abstract, and introduction
    2. Read the section and sub-section headings, but ignore everything else
    3. Read the conclusions
    4. Glance over the references, mentally ticking off the ones you’ve already read

    Goal of the pass:
    At the end of the first pass, you should be able to answer the five Cs:

    1. Category: What type of paper is this? A measurement paper? An analysis of an existing system? A description of a research prototype?
    2. Context: Which other papers is it related to? Which theoretical bases were used to analyze the problem?
    3. Correctness: Do the assumptions appear to be valid?
    4. Contributions: What are the papers main contributions?
    5. Clarity: Is the paper well written?

    Next steps:
    Using this information, you may choose not to read further. This could be because the paper (a) doesn’t interest you, or (b) you don’t know enough about the area to understand the paper, or (c) that the authors make invalid assumptions.

    The second pass (1 hour)

    What to do:
    In the second pass, read the paper with greater care, but ignore details such as proofs. Write the key points, or to make comments, as you read.

    1. Look carefully at the figures, diagrams and other illustrations in the paper. Pay special attention to graphs. Are the axes properly labeled? Are results shown with error bars, so that conclusions are statistically significant? Common mistakes like these will separate rushed, shoddy work from the truly excellent.
    2. Remember to mark relevant unread references for further reading (this is a good way to learn more about the background of the paper).

    Goal of the pass:
    After this pass, you should be able to grasp the content of the paper. You should be able to summarize the main thrust of the paper, with supporting evidence, to someone else. Sometimes you wont understand a paper even at the end of the second pass, because (a) the subject matter is new to you, (b) or the authors may use a proof or experimental technique that you don’t understand (c) the paper may be poorly written, (c) Or it could just you’re tired.

    Next steps:
    You can now choose to: (a) set the paper aside, hoping you don’t need to understand the material, (b) return to the paper later, perhaps after reading background material or (c) persevere and go on to the third pass.

    The third pass (1-5 hours)

    What to do:
    To fully understand a paper, particularly if you are reviewer. The key to the third pass is to attempt to virtually re-implement the paper: that is, making the same assumptions as the authors, re-create the work. By comparing this re-creation with the actual paper, you can easily identify not only a paper’s innovations, but also its hidden failings and assumptions.

    1. You should identify and challenge every assumption in every statement.
    2. You should think about how you yourself would present a particular idea.
    3. You should also jot down ideas for future work.

    Goal of the pass:
    At the end of this pass, you should (a) be able to reconstruct the entire structure of the paper from memory, as well as (b) be able to identify its strong and weak points. In particular, you should (c) be able to pinpoint implicit assumptions, missing citations to relevant work, and potential issues with experimental or analytical techniques.

    Three Passes Diagram

    Writing the Review

    • After the second pass:
      • Summarize the paper in one or two sentences
    • After the third pass:
      • A deeper, more extensive outline of the main points of the paper, including for example assumptions made, arguments presented, data analyzed, and conclusions drawn.
      • Any limitations or extensions you see for the ideas in the paper.
      • Your opinion of the paper; primarily, the quality of the ideas and its potential impact.

    How to write the review

    • Low-level notes
      • restate unclear points in your own words
      • fill in missing details (assumptions, algebraic steps, proofs, pseudocode)
      • annotate mathematical objects with their types
      • come up with examples that illustrate the author’s ideas, and examples that would be problematic for the author
      • draw connections to other methods and problems you know about
      • ask questions about things that aren’t stated or that don’t make sense
      • challenge the paper’s claims or methods
      • dream up follow up work that you (or someone) should do
    • High-level notes
      • Distill the paper down: summarize the things that interested you, contrast with other papers, and record your own questions and ideas for future work.
      • At a minimum, you should re-explain the ideas in your own words: produce some text that is aimed at your future self. You should be able to reread this later and quickly reconstruct your understanding of the paper.

    Resource

    8.2 - How to Write Research Paper

    How to Write Research Paper

    Tips

    Simple Steps

    Resource

    Academic Writing Tools

    Research Proposal Writing Tips

    Research Writing Tips

    Newspaper Writing

    8.3 - Google Sheet How To

    Google Sheet How To

    • https://docs.google.com/spreadsheets/d/1cccUdd1j0f0_CAD9j4vSyJWVVujBppJADmDDxxx5VaM/edit#gid=1111111111&fvid=222222222
      • fvid is filtered view ID
      • gid is document ID

    8.4 - Shortcut How To

    Shortcut How To

    Chrome

    • Incognito : Ctrl + Shift + N
    • Open Last Closed Tab : Ctrl + Shift + T
    • Close the Active Right Away : Ctrl + W
    • Jump Between Next & Previous Tabs : Ctrl + PgDn or Ctrl + PgUp
    • Minimize the Active Window : Ctrl + M
    • Open Your Downloads Page : Ctrl + J
    • Snap Your Cursor to the Search Bar : Ctrl + L
    • Clear Browsing Data : Ctrl + Shift + Delete

    Vimium

    • Help : ?
    • scroll up : j , scroll down : k
    • scroll up half page : u , scroll down hal page : d
    • open link in tab : f, open link in new tab : F
    • scroll to top : gg
    • reload : r
    • view source : gs
    • find mode : / , next find : n
    • open history/bookmark : o , open history/bookmark in new tab : O
    • open vomnibar : o
    • go one tab left : J, go one tab right : K
    • new tab : t, search tab : T
    • close tab : x, restore closed tab: X
    • ]], [[ : ’next’ or ‘>’ and ‘previous’ ‘<’
    • gu : go up one level in the URL hierarchy, gU : go up to root of the URL hierarchy
    • ge : edit the current URL
    • H : back history, L : forward history

    8.5 - Network How To

    Network How To

    Network Connection Test

    8.6 - Chrome How To

    Chrome How To

    DNS over HTTPS

    1. Open Settings: In your address bar, type the following and hit Enter chrome://flags/#dns-over-https or (in newest Chrome) chrome://flags/#dns-httpssvc. It takes you to Secure DNS lookups (Support for HTTPSSVC records in DNS)
    2. Click on Secure DNS lookups (Enable) radio button to enable DoH.
    3. Configure your Windows DNS:
      1. Cloudflare 1.1.1.1
      2. Google 8.8.8.8
      3. NextDNS
    4. How to check if my browser is configured correctly?
      1. Visit 1.1.1.1 help pageOpen external link
      2. Verify that Using DNS over HTTPS (DoH) is Yes
      3. Or visit Cloudflare Security Check

    Browser Action

    • Clear Browsing Data - type ‘delete history’, ‘clear cache ‘ or ‘wipe cookies’
    • Manage Payment Methods - type ‘edit credit card’ or ‘update card info’
    • Open Incognito Window - type ‘launch incognito mode‘ or ‘incognito’
    • Manage Passwords - type ‘edit passwords’ or ‘update credentials’
    • Translate Page - type ‘ translate this’ or ‘ translate this page’

    8.7 - Google Docs How To

    Google Docs How To

    Voice Typing

    • Punctuation command for bahasa Indonesia:
      • Titik
      • Koma
      • Tanda seru
      • Tanda tanya
      • Baris baru
      • Paragraf baru

    8.8 - Anaconda How To

    Anaconda How To

    Environment management

    • conda create --name myenv : create new myenv environement
    • conda env list : list all environment
    • conda activate myenv : activate myenv environment
    • conda list -n myenv : list packages

    Package management

    • conda search mypackage: search a packagein conda directory
    • conda install mypackage : install mypackage
    • conda update --all

    8.9 - Notepad++ How To

    Notepad++ How To

    Spell Checker in Notepad++

    8.10 - MATLAB How To

    MATLAB How To

    Uninstall Toolbox in MATLAB

    • Toolboxes are managed from the Add-On Manager. To open the Add-On Manager:
    • Open the “Add-Ons” menu in the Environment section of the MATLAB toolstrip
    • Click “Add-On Manager” in the Add-Ons menu
    • Each toolbox has an “Uninstall” button on it. Click the button to uninstall the toolbox.
    • Uninstall toolboxes via the uninstaller.
    • Open the Control Panel and open “Programs and Features.”
    • Locate MATLAB in the list of available programs, select it, and click uninstall.
    • The MATLAB uninstaller will then launch. In the uninstaller, check the boxes for products you wish to uninstall, and uncheck the boxes for products you wish to keep.
    • Finally, click the “Uninstall” button to uninstall the toolboxes.

    PID in Simulink: Native block vs Handmade PID

    PID Controller block has a parameter called Filter Coefficient, N. By default this parameter is set to 100. Based on your results, looks like you left this value unchanged. The transfer function of PID Controller block is: P+I/s+D*N/(1+N/s) N is the bandwidth of lowpass filter on the derivative. Pure derivative is not a good idea - it amplifies measurement noise, so a practical implementation should avoid pure derivatives and use a low pass filter, which is what PID Controller block does. If you look under the mask of native PID block, that’s how it does it: PID Block under Mask

    The main point is not to use the pure derivative in your simulation. If you want to approach the pure derivative as high as possible, set N high, say at 1,000 or 10,000.

    The derivative term of the PID controller is never implemented as a pure derivative because that would be extremely sensitive to noise. Hence, a cutoff frequency is added.

    So, the D term will act like almost a derivative up to a frequency via

              Ns
    s ---> --------
            s + N
    

    N being the filter coefficient. This also makes it possible to implement a D term using an integrator avoiding a noisy derivative operation.

    For N=100, its frequency response is:

    frequency response of N in PID Block

    Ideally, N will be as low as possible. The drawback of derivative action is ideal derivative has very high gain for high frequency signals. It means the high frequency measurement noise will generate large variations of the control signal. To prevent this situation, the value of filter coefficient ‘N’ is taken to be low (2 < N < 20)

    PID in MATLAB

    pid

    Create PID controller in parallel form, convert to parallel-form PID controller

    C = pid(Kp,Ki,Kd,Tf) creates a continuous-time PID controller with proportional, integral, and derivative gains Kp, Ki, and Kd and first-order derivative filter time constant Tf:

    $$ C=K_p+ \frac{K_i}{s}+ \frac{K_ds}{T_fs+1} $$

    This representation is in parallel form. When Tf = 0, the controller has no filter on the derivative action.

    pidstd

    Create a PID controller in standard form, convert to standard-form PID controller

    C = pidstd(Kp,Ti,Td,N) creates a continuous-time PIDF (PID with first-order derivative filter) controller object in standard form. The controller has proportional gain Kp, integral and derivative times Ti and Td, and first-order derivative filter divisor N:

    $$ C=K_p(1+\frac{1}{T_i} \frac{1}{s}+ \frac{T_ds}{ \frac{T_d}{N}s +1}) $$

    When Ti = Inf, the controller has no derivative action. When Td = 0, the controller has no derivative action. When N = Inf, the controller has no filter on the derivative action. $\frac{T_d}{N}= T_f$

    PID Tuner

    Tune PID controllers. Command: pidTuner Open PID Tuner for PID tuning. The PID Tuner app automatically tunes the gains of a PID controller for a SISO plant to achieve a balance between performance and robustness. Form — Controller form in PID Tuner: ‘Parallel’ | ‘Standard’. See pid and pidstd.

    pidtune

    PID tuning algorithm for linear plant model. C=pidtune(sys,type) designs a PID controller of type type for the plant sys. If type specifies a one-degree-of-freedom (1-DOF) PID controller, then the controller is designed for the unit feedback loop as illustrated:

    type:

    • P — Proportional only
    • I — Integral only
    • PI — Proportional and integral
    • PD — Proportional and derivative
    • PDF — Proportional and derivative with first-order filter on derivative term
    • PID — Proportional, integral, and derivative
    • PIDF — Proportional, integral, and derivative with first-order filter on derivative term

    PID Controller

    Continuous-time or discrete-time PID controller in Simulink. The PID Controller block implements a PID controller (PID, PI, PD, P only, or I only).

    Form — Controller structure: Parallel (default) | Ideal

    • Parallel. The controller output is the sum of the proportional, integral, and derivative actions, weighted independently by P, I, and D, respectively. For example, for a continuous-time parallel-form PID controller, the transfer function is:

    $$ C_{par}(s)=P+I(\frac{1}{s})+D(\frac{Ns}{s+N}) $$ $$ C_{par}(s)=P+I(\frac{1}{s})+D(\frac{s}{\frac{s}{N}+1}) $$

    Here N cannot = Inf. The block does not support N = Inf (ideal unfiltered derivative).

    Compare it with pidstd form:

    $$ C=K_p+ \frac{K_i}{s}+ \frac{K_ds}{T_fs+1} $$

    • Ideal. The proportional gain P acts on the sum of all actions. For example, for a continuous-time ideal-form PID controller, the transfer function is:

    $$ C_{id}=P[1+I(\frac{1}{s})+D(\frac{Ns}{s+N})] $$

    8.11 - Octave How To

    Octave How To

    Octave Packages

    Install, load, list package

    pkg install -forge package_name pkg load package_name pkg list

    Draw pole, zero, grid, sgrid

    sys=tf([1 1],[1 2])
    pzmap(sys)
    grid on
    sgrid on
    

    8.12 - Windows 10 How To

    Windows 10 How To

    Nuget (.Net Package Manager)

    • Clearing Nuget (.Net Package Manager) local cache
    • Install nuget command line choco install nuget.commandline
    • Delete nuget local cache nuget locals all -clear
    • But Chocolatey use the cache

    Squirrel Temporary in Windows 10

    • Squirrel is a framework used for installing/updating Windows apps. So, probably some of the apps, installed on your PC are using it, no need to worry.

    Access Point Change

    9 - Markdown

    Markdown

    9.1 - Awesome Bookmarklet

    Awesome Bookmarklet

    Add Selected Text to Google Calendar

    javascript:var s;if(window.getSelection){s=window.getSelection();}else{s=document.selection.createRange().text;}var t=prompt('Please enter a description for the event',s);if(t){void(window.open(encodeURI('https://www.google.com/calendar/event?ctext='+t+'&action=TEMPLATE&pprop=HowCreated%3AQUICKADD'),'gcal'));}else{void(s);}
    

    Google Definitions

    • Find definition of selected text in Google
    javascript:d=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);d=d.replace(/\r\n|\r|\n/g," ,");if(!d)d=prompt("Enter the words:", "");if(d!=null)location="https://www.google.com/search?q=define:"+escape(d).replace(/ /g,"+");void(0);
    

    Google Indexed

    • Check what Google indexed on a website
    • via Google
    javascript: location = "https://www.google.com/search?num=100&q=site:" + escape(location.hostname); void 0
    

    Select to Google Map

    javascript:d=""+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text);d=d.replace(/\r\n|\r|\n/g," ,");if(!d)d=prompt("Enter the address:", "");if(d!=null)location="https://maps.google.com?q="+escape(d).replace(/ /g,"+");void 0
    

    Select to Google Translate

    javascript:var t=((window.getSelection&&window.getSelection())||(document.getSelection&&document.getSelection())||(document.selection &&document.selection.createRange&&document.selection.createRange().text));var e=(document.charset||document.characterSet);if(t!=''){location.href='https://translate.google.com/translate_t?text='+t+'&hl=en&tbb=1&ie='+e;}else{location.href='https://translate.google.com/translate?u='+escape(location.href)+'&hl=en&tbb=1&ie='+e;};
    

    Google Bookmarks

    javascript:(function(){var a=window,b=document,c=encodeURIComponent,d=a.open("https://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk="+c(b.location)+"&title="+c(b.title),"bkmk_popup","left="+((a.screenX||a.screenLeft)+10)+",top="+((a.screenY||a.screenTop)+10)+",height=420px,width=550px,resizable=1,alwaysRaised=1");a.setTimeout(function(){d.focus()},300)})();
    
    • Search keyword in a site using Google
    javascript: q = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text); if (!q) q = prompt("You didn't select any text. Enter a search phrase:", ""); if (q != null) location = ("https://www.google.com/search?num=100&q=site:" + escape(location.hostname) + " \"" + escape(q.replace(/\"/g, "")) + "\"").replace(/ /g, "+"); void 0
    

    Google Cache

    • Check Google Cache of a webpage
    javascript:void((function(){var a=location.href.replace(/^http%5C:%5C/%5C/(.*)$/,"$1");location.href="http://www.google.com/search?q=cache:"+escape(a);})())
    

    Website Assets

    Check Web robot.txt

    • check robot.txt of any website
    javascript:void(location.href%3D%27http://%27%20%2B%20location.host%20%2B%20%27/robots.txt%27)
    

    Check Web sitemap.xml

    • check sitemap (sitemap.xml) of any website
    javascript:void(location.href%3D%27http://%27%20%2B%20location.host%20%2B%20%27/sitemap.xml%27)
    

    Enable Protection

    Enable Right Click

    javascript: void(document.oncontextmenu = null)
    

    Enable Select

    javascript: (function() { function R(a) { ona = "on" + a; if (window.addEventListener) window.addEventListener(a, function(e) { for (var n = e.originalTarget; n; n = n.parentNode) n[ona] = null; }, true); window[ona] = null; document[ona] = null; if (document.body) document.body[ona] = null; } R("click"); R("mousedown"); R("mouseup"); R("selectstart"); })()
    

    Edit a Website

    • Edit a website
    javascript:document.body.contentEditable%20=%20'true';%20document.designMode='on';%20void%200
    

    Show which Hidden

    Anchor to HREF

    • Show the http link of an anchor
    javascript:(function(){var i,c,x,h; for(i=0;x=document.links[i];++i) { h=x.getAttribute("href"); x.title+=" " + x.innerHTML; while(c=x.firstChild)x.removeChild(c); x.appendChild(document.createTextNode(h)); } })()
    
    • check internal or external link of a web page
    • red if internal, blue if external
    javascript: (function() { var i, x; for (i = 0; x = document.links[i]; ++i) x.style.color = ["blue", "red", "orange"][sim(x, location)];  function sim(a, b) { if (a.hostname != b.hostname) return 0; if (fixPath(a.pathname) != fixPath(b.pathname) || a.search != b.search) return 1; return 2; }  function fixPath(p) { p = (p.charAt(0) == "/" ? "" : "/") + p; /*many browsers*/ p = p.split("?")[0]; /*opera*/ return p; } })()
    

    Show Password

    • show password text in password form/field
    javascript: (function() { var s, F, j, f, i; s = ""; F = document.forms; for (j = 0; j < F.length; ++j) { f = F[j]; for (i = 0; i < f.length; ++i) { if (f[i].type.toLowerCase() == "password") s += f[i].value + "\n"; } } if (s) alert("Passwords in forms on this page:\n\n" + s); else alert("There are no passwords in forms on this page."); })();
    

    Show Source Code

    • show source code of a webpage
    javascript: function getSelSource() { x = document.createElement("div"); x.appendChild(window.getSelection().getRangeAt(0).cloneContents()); return x.innerHTML; }  function makeHR() { return nd.createElement("hr"); }  function makeParagraph(text) { p = nd.createElement("p"); p.appendChild(nd.createTextNode(text)); return p; }  function makePre(text) { p = nd.createElement("pre"); p.appendChild(nd.createTextNode(text)); return p; } nd = window.open().document; ndb = nd.body; if (!window.getSelection || !window.getSelection().rangeCount || window.getSelection().getRangeAt(0).collapsed) { nd.title = "Generated Source of: " + location.href; ndb.appendChild(makeParagraph("No selection, showing generated source of entire document.")); ndb.appendChild(makeHR()); ndb.appendChild(makePre("<html>\n" + document.documentElement.innerHTML + "\n</html>")); } else { nd.title = "Partial Source of: " + location.href; ndb.appendChild(makePre(getSelSource())); }; void 0
    
    • List all of outbound link from a webpage
    javascript:(function(){var url = document.location; var links = document.links;var output ='';var isExternal = function(url) {var domain = function(url) {return url.replace('http://','').replace('https://','').split('/')[0];};return domain(location.href) !== domain(url);};output ='\n\n#####%20External%20Links%20#####\n\n';for%20(i=0;%20i<links.length;%20i++)%20{var%20link%20=%20new%20String(links[i]);if(links[i].hostname%20!=%20window.location.hostname){var%20pat%20=%20/^https?:\/\//i;if(pat.test(links[i])){output%20+=%20links[i].href+'\n'}}}%20alert(output);})();
    

    Webstack Identification

    Identify Font

    javascript:void((function(d)%7Bvar%20e=d.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('charset','UTF-8');e.setAttribute('src','//www.typesample.com/assets/typesample.js?r='+Math.random()*99999999);d.body.appendChild(e)%7D)(document));
    

    Identify CSS

    • Check CSS on a website
    javascript: s = document.getElementsByTagName('STYLE'); ex = document.getElementsByTagName('LINK'); d = window.open().document; /*set base href*/ d.open(); d.close(); b = d.body;  function trim(s) { return s.replace(/^\s*\n/, '').replace(/\s*$/, ''); };  function iff(a, b, c) { return b ? a + b + c : ''; }  function add(h) { b.appendChild(h); }  function makeTag(t) { return d.createElement(t); }  function makeText(tag, text) { t = makeTag(tag); t.appendChild(d.createTextNode(text)); return t; } add(makeText('style', 'iframe{width:100%;height:18em;border:1px solid;')); add(makeText('h3', d.title = 'Style sheets in ' + location.href)); for (i = 0; i < s.length; ++i) { add(makeText('h4', 'Inline style sheet' + iff(' title="', s[i].title, '"'))); add(makeText('pre', trim(s[i].innerHTML))); } for (i = 0; i < ex.length; ++i) { rs = ex[i].rel.split(' '); for (j = 0; j < rs.length; ++j) if (rs[j].toLowerCase() == 'stylesheet') { add(makeText('h4', 'link rel="' + ex[i].rel + '" href="' + ex[i].href + '"' + iff(' title="', ex[i].title, '"'))); iframe = makeTag('iframe'); iframe.src = ex[i].href; add(iframe); break; } } void 0
    

    Identify Javascript

    • view javascript on a webpage
    javascript: s = document.getElementsByTagName('SCRIPT'); d = window.open().document; /*140681*/ d.open(); d.close(); b = d.body;  function trim(s) { return s.replace(/^\s*\n/, '').replace(/\s*$/, ''); };  function add(h) { b.appendChild(h); }  function makeTag(t) { return d.createElement(t); }  function makeText(tag, text) { t = makeTag(tag); t.appendChild(d.createTextNode(text)); return t; } add(makeText('style', 'iframe{width:100%;height:18em;border:1px solid;')); add(makeText('h3', d.title = 'Scripts in ' + location.href)); for (i = 0; i < s.length; ++i) { if (s[i].src) { add(makeText('h4', 'script src="' + s[i].src + '"')); iframe = makeTag('iframe'); iframe.src = s[i].src; add(iframe); } else { add(makeText('h4', 'Inline script')); add(makeText('pre', trim(s[i].innerHTML))); } } void 0
    

    Identify WebStack

    javascript: (function() { var d = document, e = d.getElementById('wappalyzer-container'); if (e !== null) { d.body.removeChild(e); } var u = 'https://www.wappalyzer.com/', t = new Date().getTime(), c = d.createElement('div'), p = d.createElement('div'), l = d.createElement('link'), s = d.createElement('script'); c.setAttribute('id', 'wappalyzer-container'); l.setAttribute('rel', 'stylesheet'); l.setAttribute('href', u + 'css/bookmarklet.css'); d.head.appendChild(l); p.setAttribute('id', 'wappalyzer-pending'); p.setAttribute('style', 'background-image: url(' + u + 'images/spinner.gif) !important'); c.appendChild(p); s.setAttribute('src', u + 'bookmarklet/wappalyzer.js'); s.onload = function() { window.wappalyzer = new Wappalyzer(); s = d.createElement('script'); s.setAttribute('src', u + 'bookmarklet/apps.js'); s.onload = function() { s = d.createElement('script'); s.setAttribute('src', u + 'bookmarklet/driver.js'); c.appendChild(s); }; c.appendChild(s); }; c.appendChild(s); d.body.appendChild(c); })();
    

    Check RSS

    javascript:(function(){document.body.appendChild(document.createElement('script')).src='http://savanttools.com/feedhelp-bookmarklet.js';})();
    

    Table and List Modifier

    Change Bullet List to Number List

    javascript: uls = document.getElementsByTagName("ul"); for (i = uls.length - 1; i >= 0; --i) { oldul = uls[i]; newol = document.createElement("ol"); for (j = 0; j < oldul.childNodes.length; ++j) newol.appendChild(oldul.childNodes[j].cloneNode(true)); oldul.parentNode.replaceChild(newol, oldul); } void 0
    

    Sort Tables

    javascript:function toArray (c){var a, k;a=new Array;for (k=0; k<c.length; ++k)a[k]=c[k];return a;}function insAtTop(par,child){if(par.childNodes.length) par.insertBefore(child, par.childNodes[0]);else par.appendChild(child);}function countCols(tab){var nCols, i;nCols=0;for(i=0;i<tab.rows.length;++i)if(tab.rows[i].cells.length>nCols)nCols=tab.rows[i].cells.length;return nCols;}function makeHeaderLink(tableNo, colNo, ord){var link;link=document.createElement('a');link.href='javascript:sortTable('+tableNo+','+colNo+','+ord+');';link.appendChild(document.createTextNode((ord>0)?'a':'d'));return link;}function makeHeader(tableNo,nCols){var header, headerCell, i;header=document.createElement('tr');for(i=0;i<nCols;++i){headerCell=document.createElement('td');headerCell.appendChild(makeHeaderLink(tableNo,i,1));headerCell.appendChild(document.createTextNode('/'));headerCell.appendChild(makeHeaderLink(tableNo,i,-1));header.appendChild(headerCell);}return header;}g_tables=toArray(document.getElementsByTagName('table'));if(!g_tables.length) alert("This page doesn't contain any tables.");(function(){var j, thead;for(j=0;j<g_tables.length;++j){thead=g_tables[j].createTHead();insAtTop(thead, makeHeader(j,countCols(g_tables[j])))}}) ();function compareRows(a,b){if(a.sortKey==b.sortKey)return 0;return (a.sortKey < b.sortKey) ? g_order : -g_order;}function sortTable(tableNo, colNo, ord){var table, rows, nR, bs, i, j, temp;g_order=ord;g_colNo=colNo;table=g_tables[tableNo];rows=new Array();nR=0;bs=table.tBodies;for(i=0; i<bs.length; ++i)for(j=0; j<bs[i].rows.length; ++j){rows[nR]=bs[i].rows[j];temp=rows[nR].cells[g_colNo];if(temp) rows[nR].sortKey=temp.innerHTML;else rows[nR].sortKey="";++nR;}rows.sort(compareRows);for (i=0; i < rows.length; ++i)insAtTop(table.tBodies[0], rows[i]);}
    

    Table Number

    • Add number colomn in a table
    javascript: (function() { function has(par, ctag) { for (var k = 0; k < par.childNodes.length; ++k) if (par.childNodes[k].tagName == ctag) return true; }  function add(par, ctag, text) { var c = document.createElement(ctag); c.appendChild(document.createTextNode(text)); par.insertBefore(c, par.childNodes[0]); } var i, ts = document.getElementsByTagName("TABLE"); for (i = 0; i < ts.length; ++i) { var n = 0, trs = ts[i].rows, j, tr; for (j = 0; j < trs.length; ++j) { tr = trs[j]; if (has(tr, "TD")) add(tr, "TD", ++n); else if (has(tr, "TH")) add(tr, "TH", "Row"); } } })()
    

    Table Transpose

    • Transpose Table
    javascript: (function() { var d = document, q = "table", i, j, k, y, r, c, t; for (i = 0; t = d.getElementsByTagName(q)[i]; ++i) { var w = 0, N = t.cloneNode(0); N.width = ""; N.height = ""; N.border = 1; for (j = 0; r = t.rows[j]; ++j) for (y = k = 0; c = r.cells[k]; ++k) { var z, a = c.rowSpan, b = c.colSpan, v = c.cloneNode(1); v.rowSpan = b; v.colSpan = a; v.width = ""; v.height = ""; if (!v.bgColor) v.bgColor = r.bgColor; while (w < y + b) N.insertRow(w++).p = 0; while (N.rows[y].p > j) ++y; N.rows[y].appendChild(v); for (z = 0; z < b; ++z) N.rows[y + z].p += a; y += b; } t.parentNode.replaceChild(N, t); } })()
    

    Zap Hide Elements

    Zap Hide Colors

    • Remove color of a website
    javascript:(function(){var newSS, styles='* { background: white ! important; color: black !important } :link, :link * { color: #0000EE%20!important%20 } %20:visited,%20:visited%20*%20 { %20color:%20#551A8B%20!important%20}';%20if(document.createStyleSheet)%20{%20document.createStyleSheet("javascript:'"+styles+"'");%20} %20else%20 { %20newSS=document.createElement('link');%20newSS.rel='stylesheet';%20newSS.href='data:text/css,'+escape(styles);%20document.getElementsByTagName("head")[0].appendChild(newSS);%20}%20})();
    

    Zap Hide Images

    • Hide Images
    javascript:(function(){function toArray (c){var a, k;a=new Array;for (k=0; k < c.length; ++k)a[k]=c[k];return a;}var images, img, altText;images=toArray(document.images);for (var i=0; i < images.length; ++i){img=images[i];altText=document.createTextNode(img.alt);img.parentNode.replaceChild(altText, img)}})();
    

    Hide Image Show Alt Text

    • Hide image of a website, change to its alt text
    javascript:(function(){function toArray (c){var a, k;a=new Array;for (k=0; k < c.length; ++k)a[k]=c[k];return a;}var images, img, altText;images=toArray(document.images);for (var i=0; i < images.length; ++i){img=images[i];altText=document.createTextNode(img.alt);img.parentNode.replaceChild(altText, img)}})();
    

    Page Zipper Auto Next Page

    • Automatically go to next page
    javascript:(function(){if(window['pgzp']){_pgzpToggleBookmarklet();}else{window._page_zipper_is_bookmarklet=true;window._page_zipper=document.createElement('script');window._page_zipper.type='text/javascript';window._page_zipper.src='//www.printwhatyoulike.com/static/pagezipper/pagezipper_10.js';document.getElementsByTagName('head')[0].appendChild(window._page_zipper);}})();
    
    • Select webpage elements to print
    javascript:(function(){if(window['ppw']&&ppw['bookmarklet']){ppw.bookmarklet.toggle();}else{window._pwyl_home='//www.printwhatyoulike.com/';window._pwyl_pro_id=null;window._pwyl_bmkl=document.createElement('script');window._pwyl_bmkl.setAttribute('type','text/javascript');window._pwyl_bmkl.setAttribute('src',window._pwyl_home+'static/compressed/pwyl_bookmarklet_10.js');window._pwyl_bmkl.setAttribute('pwyl','true');document.getElementsByTagName('head')[0].appendChild(window._pwyl_bmkl);}})();
    

    Select View Print

    • view selection ready to print, hide others
    javascript:(function(){ var d=open().document; d.title="Selection"; if (window.getSelection) { /*Moz*/ var s = getSelection(); for(i=0; i<s.rangeCount; ++i) { var a, r = s.getRangeAt(i); if (!r.collapsed) { var x = document.createElement("div"); x.appendChild(r.cloneContents()); if (d.importNode) x = d.importNode(x, true); d.body.appendChild(x); } } } else { /*IE*/ d.body.innerHTML = document.selection.createRange().htmlText; } })();
    

    Unclutter Youtube Video

    • Watch Youtube video without clutter
    • via Viewpure
    javascript:void(location.href='http://viewpure.com/process?bkmrk='+location.href)
    

    Read Outline

    javascript:(function()%7Bwindow.location.href %3D 'https%3A%2F%2Foutline.com%2F' %2B window.location.href%7D)()
    

    No CSS

    • Remove CSS for a Website
    javascript: (function() { var i, x; for (i = 0; x = document.styleSheets[i]; ++i) x.disabled = true; })();
    

    Rosyadi.com Info

    javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='https://rosyadi.com/info/wp-admin/edit.php?pf-nominate-this=2',l=d.location,e=encodeURIComponent,u=f+'&u='+e(l.href)+'&t='+e(d.title)+'&s='+e(s)+'&v=4';a=function(){if(!w.open(u,'t','toolbar=0,resizable=1,scrollbars=1,status=1,width=720px,height=620px'))l.href=u;};if (/Firefox/.test(navigator.userAgent)) setTimeout(a, 0); else a();void(0)
    

    Rosyadi.com Read

    javascript:(function(){var url=location.href||url;var wllbg=window.open('https://rosyadi.com/read/web/bookmarklet?url=' + encodeURIComponent(url),'_blank');})();
    

    Rosyadi.com Share

    javascript:(          function(){            var%20url%20=%20location.href;            var%20title%20=%20document.title%20||%20url;            var%20desc=document.getSelection().toString();            if(desc.length>4000){              desc=desc.substr(0,4000)+'...';              alert('The%20selected%20text%20is%20too%20long,%20it%20will%20be%20truncated.');            }            window.open(              'https://rosyadi.com/share/?post='%20+%20encodeURIComponent(url)+              '&title='%20+%20encodeURIComponent(title)+              '&description='%20+%20encodeURIComponent(desc)+              '&source=bookmarklet','_blank','menubar=no,height=800,width=600,toolbar=no,scrollbars=yes,status=no,dialog=1'            );          }        )();
    

    Rosyadi.com Short

    javascript:(function()%7B%20var%20d%3Ddocument%2C%20sc%3Dd.createElement(%27script%27)%2C%20l%3Dd.location.href%2C%20enc%3DencodeURIComponent%2C%20ups%3Dl.match(%2F%5E%5Ba-zA-Z0-9%5C%2B%5C.-%5D%2B%3A(%5C%2F%5C%2F)%3F%2F)%5B0%5D%2C%20ur%3Dl.split(new%20RegExp(ups))%5B1%5D%2C%20ups%3Dups.split(%2F%5C%3A%2F)%2C%20p%3D%27%3Fup%3D%27%2Benc(ups%5B0%5D%2B%27%3A%27)%2B%27%26us%3D%27%2Benc(ups%5B1%5D)%2B%27%26ur%3D%27%2Benc(ur)%2B%27%26t%3D%27%2Benc(d.title)%3B%20window.yourls_callback%3Dfunction(r)%7B%20if(r.short_url)%7B%20prompt(r.message%2Cr.short_url)%3B%7Delse%7B%20alert(%27An%20error%20occured%3A%20%27%2Br.message)%3B%7D%7D%3B%20sc.src%3D%27https%3A%2F%2Frosyadi.com%2Fs%2Fadmin%2Findex.php%27%2Bp%2B%27%26jsonp%3Dyourls%27%3B%20void(d.body.appendChild(sc))%3B%7D)()%3B
    

    Linkify

    javascript:(function () { if (!window.linkifyLoaded) { var doc = document; var scriptElem = document.createElement('script'); scriptElem.type = 'text/javascript'; scriptElem.src = 'http://www-static.linkify.mobi/api/linkify.js?key=c63dd5f8d0a50029038ecabd01e1ded8cfed5bee'; doc.getElementsByTagName('head')[0].appendChild(scriptElem); window.linkifyLoaded = true; } })();
    

    Long URLs

    javascript:void(function(){if(typeof%20jQuery%20==%20'undefined'){var%20s=document.createElement('script');s.src='http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js';document.getElementsByTagName('head')[0].appendChild(s);}var%20l=document.createElement('script');l.src='http://www.longurlplease.com/js/longurlplease.js';document.getElementsByTagName('head')[0].appendChild(l);function%20runIfReady(){try{if($.longurlplease){%20clearInterval(interval);%20$.longurlplease();}}catch(e){}};%20var%20interval%20=%20window.setInterval(runIfReady,100);}())
    

    Remove URL Parameters

    javascript:console.log('Original URL: '+window.location);window.history.replaceState('','',window.location.origin+window.location.pathname);
    
    javascript: (function() { var i, c, x, h; for (i = 0; x = document.links[i]; ++i) { h = x.href; x.title += " " + x.innerHTML; while (c = x.firstChild) x.removeChild(c); x.appendChild(document.createTextNode(h)); } })()
    

    Remove Redirect

    javascript:(function(){var k,x,t,i,j,p; for(k=0;x=document.links[k];k++){t=x.href.replace(/[%]3A/ig,':').replace(/[%]2f/ig,'/');i=t.lastIndexOf('http');if(i>0){ t=t.substring(i); j=t.indexOf('&'); if(j>0)t=t.substring(0,j); p=/https?\:\/\/[^\s]*[^.,;'">\s\)\]]/.exec(unescape(t)); if(p) x.href=p[0]; } else if (x.onmouseover&&x.onmouseout){x.onmouseover(); if (window.status && window.status.indexOf('://')!=-1)x.href=window.status; x.onmouseout(); } x.onmouseover=null; x.onmouseout=null; }})();
    

    Search Tool

    • Highlight text you want to search
    javascript:(function(){var%20count=0,%20text,%20dv;text=prompt("Search%20phrase:",%20"");if(text==null%20||%20text.length==0)return;dv=document.defaultView;function%20searchWithinNode(node,%20te,%20len){var%20pos,%20skip,%20spannode,%20middlebit,%20endbit,%20middleclone;skip=0;if(%20node.nodeType==3%20){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=document.createElement("SPAN");spannode.style.backgroundColor="yellow";middlebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else%20if(%20node.nodeType==1&&%20node.childNodes%20&&%20node.tagName.toUpperCase()!="SCRIPT"%20&&%20node.tagName.toUpperCase!="STYLE"){for%20(var%20child=0;%20child%20<%20node.childNodes.length;%20++child){child=child+searchWithinNode(node.childNodes[child],%20te,%20len);}}return%20skip;}window.status="Searching%20for%20'"+text+"'...";searchWithinNode(document.body,%20text.toUpperCase(),%20text.length);window.status="Found%20"+count+"%20occurrence"+(count==1?"":"s")+"%20of%20'"+text+"'.";})();
    
    javascript:void(window.open('http://tineye.com/search?pluginver=bookmark_1.0&url='+encodeURIComponent(document.URL)));
    

    Paper Search with Scihub

    javascript:(function(){location.href=%22https://sci-hub.ee/%22+location.href})();
    

    Image Tools

    javascript:(function(){function%20I(u){var%20t=u.split('.'),e=t[t.length-1].toLowerCase();return%20{gif:1,jpg:1,jpeg:1,png:1,mng:1}[e]}function%20hE(s){return%20s.replace(/&/g,'&amp;').replace(/>/g,'>').replace(/</g,'<').replace(/"/g,'&quot;');}var%20q,h,i,z=open().document;z.write('<p>Images%20linked%20to%20by%20'+hE(location.href)+':</p><hr>');for(i=0;q=document.links[i];++i){h=q.href;if(h&&I(h))z.write('<p>'+q.innerHTML+'%20('+hE(h)+')<br><img%20src="'+hE(h)+'">');}z.close();})()
    
    javascript:var%20sHTML=%22<html><head><title>gallery</title><body><center><table%20border=0>%22;var%20y=0;for(x=0;x<document.links.length;x++){a=document.links[x].href;%20if%20(a.match(/jpe|jpeg|jpg|bmp|tiff|tif|bmp|gif|png/i)){sHTML+='<td%20style=%22border-style:solid;border-width:1px%22><a%20target=%22_new%22%20href=%22'+a+'%22><img%20border=%220%22%20width=%22100%22%20src=%22'+a+'%22></a></td>';%20if%20(!((x+1)%5))%20sHTML+=%22</tr><tr>%22}};this.innerHTML=sHTML+%22</table></center></body></html>%22;
    

    Instagram View

    javascript:(function(){;!function(e)%7Bvar%20t=%7B%7D;function%20n(a)%7Bif(t%5Ba%5D)return%20t%5Ba%5D.exports;var%20r=t%5Ba%5D=%7Bi:a,l:!1,exports:%7B%7D%7D;return%20e%5Ba%5D.call(r.exports,r,r.exports,n),r.l=!0,r.exports%7Dn.m=e,n.c=t,n.d=function(e,t,a)%7Bn.o(e,t)%7C%7CObject.defineProperty(e,t,%7Benumerable:!0,get:a%7D)%7D,n.r=function(e)%7B%22undefined%22!=typeof%20Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,%7Bvalue:%22Module%22%7D),Object.defineProperty(e,%22__esModule%22,%7Bvalue:!0%7D)%7D,n.t=function(e,t)%7Bif(1&t&&(e=n(e)),8&t)return%20e;if(4&t&&%22object%22==typeof%20e&&e&&e.__esModule)return%20e;var%20a=Object.create(null);if(n.r(a),Object.defineProperty(a,%22default%22,%7Benumerable:!0,value:e%7D),2&t&&%22string%22!=typeof%20e)for(var%20r%20in%20e)n.d(a,r,function(t)%7Breturn%20e%5Bt%5D%7D.bind(null,r));return%20a%7D,n.n=function(e)%7Bvar%20t=e&&e.__esModule?function()%7Breturn%20e.default%7D:function()%7Breturn%20e%7D;return%20n.d(t,%22a%22,t),t%7D,n.o=function(e,t)%7Breturn%20Object.prototype.hasOwnProperty.call(e,t)%7D,n.p=%22%22,n(n.s=4)%7D(%5Bfunction(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Bvar%20t=%5B%5D;t.push(e);for(;e.parentNode;)t.unshift(e.parentNode),e=e.parentNode;return%20t%7D%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e,t)%7Bt=t%7C%7Cwindow%7C%7Cdocument.documentElement;var%20n=e.getBoundingClientRect();return%20n.bottom%3E0&&n.right%3E0&&n.left%3C(t.innerWidth%7C%7Ct.clientWidth)&&n.top%3C(t.innerHeight%7C%7Ct.clientHeight)%7D%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D);var%20a=function(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7D(n(5));var%20r=%7Bde:%22de-DE%22,pt:%22pt-BR%22,en:%22en-US%22,%22en-GB%22:%22en-US%22%7D%5Bnavigator.language%5D;function%20o(e)%7Bvar%20t=arguments.length%3E1&&void%200!==arguments%5B1%5D?arguments%5B1%5D:r;try%7Bif(a.default.langs.hasOwnProperty(t)%7C%7C(t=%22en-US%22),a.default.langs%5Bt%5D%5Be%5D)return%20a.default.langs%5Bt%5D%5Be%5D%7Dcatch(n)%7Breturn%20console.error(%22%5Binstantgram%5DLOC%20error:%22,n),%22ops,%20an%20error%20ocurred%20in%20localization%20system.%20Enter%20in%20https://github.com/theus/instantgram/issues/new%20and%20open%20an%20issue%20with%20this%20code:%20'LOC_dont_found_str_neither_default:%5B%22+t+%22-%3E%22+e+%22%5D'%5Cn%20%20%20%20for%20more%20information%20open%20the%20console%22%7D%7Dconsole.info(o(%22helpers.localize_defaultlang%22).replace(%22$%7BLANG_DEFAULT%7D%22,r)),t.default=o%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e,t,n)%7Bfor(var%20a=0;a%3Ce.length;a++)t.call(n,a,e%5Ba%5D)%7D%7D,function(e,t,n)%7B%22use%20strict%22;var%20a=g(n(2)),r=g(n(6)),o=g(n(3)),i=g(n(1)),s=g(n(7)),d=g(n(8)),u=g(n(9)),l=g(n(10)),c=g(n(13)),m=g(n(14));function%20g(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7Dvar%20f=%7BVERSION:%223.0.1%22,hostname:window.location.hostname,path:window.location.pathname,images:%5B%5D,imagesOnViewPort:%5B%5D,videos:document.querySelectorAll(%22video%22),regexOriginalImage:/%5C/%5Ba-z%5D+%5Cd+%5Ba-z%5D?x%5Cd+%5Ba-z%5D?/,regexMaxResImage:/%5C/%5Ba-z%5D+%5B1080%5D+%5Ba-z%5D?x%5B1080%5D+%5Ba-z%5D?/,regexPath:/%5E%5C/p%5C//,regexHostname:/instagram%5C.com/,regexStoriesURI:/stories%5C/(.*)+/,regexURL:/(%5B--:%5Cw?@%25&+~#=%5D*%5C.%5Ba-z%5D%7B2,4%7D%5C/%7B0,2%7D)((?:%5B?&%5D(?:%5Cw+)=(?:%5Cw+))+%7C%5B--:%5Cw?@%25&+~#=%5D+)?/,foundByModule:null,probablyHasAGallery:%7Bcheck:null,byModule:%22%22%7D,setImageLink:function(e)%7Bthis.imageLinkBeforeParse=e,this.regexMaxResImage.test(e)?this.imageLink=e:this.imageLink=this.regexOriginalImage.test(e)?e.replace(this.regexOriginalImage,%22%22):e%7D,foundVideo:!1,foundImage:!1,imageLink:!1,imageLinkBeforeParse:!1,alertNotInInstagramPost:!1,context:%7BhasMsg:!1,msg:%22%22%7D%7D,p=document.images;(0,o.default)(p,function(e,t)%7B((0,s.default)(t)%7C%7C2===p.length)&&(f.images.push(t),(0,i.default)(t)&&f.imagesOnViewPort.push(t))%7D),f.regexHostname.test(f.hostname)%7C%7Cwindow.alert((0,a.default)(%22index@alert_onlyWorks%22)),f.regexHostname.test(f.hostname)&&(!1===(0,m.default)(f)&&!1===(0,c.default)(f)&&!1===(0,u.default)(f)&&!1===(0,d.default)(f)&&!1===(0,l.default)(f)&&(f.context.hasMsg=!1),f.context.hasMsg&&window.alert((0,a.default)(f.context.msg)),!f.alertNotInInstagramPost%7C%7Cf.foundVideo%7C%7Cf.foundImage%7C%7Cwindow.alert((0,a.default)(%22index#program@alert_dontFound%22)),(0,r.default)(f.VERSION))%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=%7Blangs:%7B%22en-US%22:%7B%22helpers.localize_defaultlang%22:%22%5Binstantgram%5D%20set%20language:%20$%7BLANG_DEFAULT%7D%20%5Cn%20For%20more%20information%20about%20available%20languages%20please%20check%20http://theus.github.io/instantgram%22,%22modules.update@oudated_outdated%22:%22%5Binstantgram%5D%20is%20outdated.%20Please%20check%20http://theus.github.io/instantgram%20for%20available%20updates.%22,%22modules.update@oudated_localInfo%22:%22%5Binstantgram%5D%20Installed%20version:%20$%7Bdata.version%7D%20%7C%20New%20update:%20$%7Bdata.gitVersion%7D%22,%22modules.update@determineIfGetUpdateIsNecessary_contacting%22:%22%5Binstantgram%5D%20is%20looking%20for%20available%20updates%E2%80%A6%22,%22modules.update@determineIfGetUpdateIsNecessary_updated%22:%22%5Binstantgram%5D%20updated%20your%20current%20version.%22,%22modules.update@determineIfGetUpdateIsNecessary_@alert_found%22:'%5Binstantgram%5D%20found%20a%20new%20available%20update.%5CnPlease%20check%20%3Ca%20href=%22http://theus.github.io/instantgram%22%3Ehttp://theus.github.io/instantgram%3C/a%3E%20to%20install%20it.',%22index@alert_onlyWorks%22:%22%5Binstantgram%5D%20only%20works%20on%20instagram.com.%22,%22index#program#modal@alert_dontFound%22:%22%5Binstantgram%5D%20didn't%20find%20any%20image%20in%20this%20Instagram%20post.%20Please%20try%20to%20open%20the%20link%20in%20a%20new%20tab.%22,%22index#program#post@alert_dontFound%22:%22Ops,%20%5Binstantgram%5D%20couldn't%20find%20any%20image%20%20:-(%22,%22index#program#screen@alert_dontFound%22:%22%5Binstantgram%5D%20found%20more%20than%201%20image.%20Are%20you%20on%20a%20profile%20page?%20If%20yes,%20please%20open%20a%20single%20post%20first%20and%20open%20%5Binstantgram%5D%20again.%22,%22index#program@alert_dontFound%22:%22Ops,%20did%20you%20open%20any%20Instagram%20post?%20Like%20for%20example%20instagram.com/p/82jd828jd%22,%22index#program@alert_videoBlob%22:%22If%20you're%20trying%20open%20a%20video,%20try%20enter%20on%20Instagram%20post%20page.%20Like%20for%20example%20instagram.com/p/82jd828jd.%20If%20you're%20already%20in%20it,%20try%20refreshing%20the%20page%20before%20running%20%5Binstantgram%5D%20or%20open%20the%20post%20in%20a%20new%20tab.%20(this%20proccess%20is%20neccessary%20only%20for%20videos)%22%7D,%22pt-BR%22:%7B%22helpers.localize_defaultlang%22:%22%5Binstantgram%5D%20idioma%20configurado:%20$%7BLANG_DEFAULT%7D%20%5Cnpara%20mais%20informa%C3%A7%C3%B5es%20sobre%20os%20idiomas%20suportados,%20acesse%20http://theus.github.io/instantgram%22,%22modules.update@oudated_outdated%22:%22%5Binstantgram%5D%20est%C3%A1%20desatualizado.%20Acesse%20http://theus.github.io/instantgram%20para%20atualizar%22,%22modules.update@oudated_localInfo%22:%22%5Binstantgram%5D%20vers%C3%A3o%20local:%20$%7Bdata.version%7D%20%7C%20nova%20vers%C3%A3o:%20$%7Bdata.gitVersion%7D%22,%22modules.update@determineIfGetUpdateIsNecessary_contacting%22:%22%5Binstantgram%5D%20est%C3%A1%20procurando%20atualiza%C3%A7%C3%B5es...%22,%22modules.update@determineIfGetUpdateIsNecessary_updated%22:%22%5Binstantgram%5D%20informa%C3%A7%C3%B5es%20locais%20atualizadas%22,%22modules.update@determineIfGetUpdateIsNecessary_@alert_found%22:%22%5Binstantgram%5D%20encontrou%20uma%20atualiza%C3%A7%C3%A3o.%5Cn%20acesse%20theus.github.io/instantgram%20para%20atualizar%22,%22index@alert_onlyWorks%22:%22%5Binstantgram%5D%20somente%20funciona%20no%20instagram.com%22,%22index#program#modal@alert_dontFound%22:%22%5Binstantgram%5D%20n%C3%A3o%20encontrou%20uma%20imagem%20em%20um%20post.%20Tente%20abrir%20o%20link%20em%20uma%20nova%20aba.%22,%22index#program#post@alert_dontFound%22:%22ops,%20%5Binstantgram%5D%20n%C3%A3o%20encontrou%20a%20imagem%20:(%22,%22index#program#screen@alert_dontFound%22:%22%5Binstantgram%5D%20a%20procura%20por%20imagem%20na%20tela%20encontrou%20mais%20de%201%20imagem.%20Voc%C3%AA%20est%C3%A1%20em%20um%20perfil?%20Se%20sim,%20abra%20alguma%20imagem%20antes%20de%20rodar%20o%20%5Binstantgram%5D%22,%22index#program@alert_dontFound%22:%22ops,%20voc%C3%AA%20est%C3%A1%20em%20algum%20post%20do%20instagram?%20ex:%20instagram.com/p/82jd828jd%22,%22index#program@alert_videoBlob%22:%22Se%20voc%C3%AA%20est%C3%A1%20tentando%20abrir%20um%20v%C3%ADdeo,%20tente%20entrar%20na%20p%C3%A1gina%20do%20post%20do%20Instagram.%20ex:%20instagram.com/p/82jd828jd.%20Se%20voc%C3%AA%20j%C3%A1%20est%C3%A1%20na%20p%C3%A1gina,%20tente%20atualizar%20a%20p%C3%A1gina%20antes%20de%20executar%20o%20%5Binstantgram%5D%20ou%20abra%20o%20post%20em%20uma%20nova%20aba.%20(este%20processo%20s%C3%B3%20%C3%A9%20necess%C3%A1rio%20com%20v%C3%ADdeos)%22%7D,%22de-DE%22:%7B%22helpers.localize_defaultlang%22:%22Ausgew%C3%A4hlte%20Sprache:%20$%7BLANG_DEFAULT%7D%20%5Cn%20Weitere%20Informationen%20zu%20den%20unterst%C3%BCtzten%20Sprachen%20findest%20du%20auf%20http://theus.github.io/instantgram%22,%22modules.update@oudated_outdated%22:%22%5Binstantgram%5D%20ist%20veraltet.%20Bitte%20besuche%20die%20Seite%20http://theus.github.io/instantgram%20f%C3%BCr%20ein%20Update.%22,%22modules.update@oudated_localInfo%22:%22%5Binstantgram%5D%20Installierte%20Version%20$%7Bdata.version%7D%20%7C%20Neue%20Version:%20$%7Bdata.gitVersion%7D%22,%22modules.update@determineIfGetUpdateIsNecessary_contacting%22:%22%5Binstantgram%5D%20sucht%20nach%20neuen%20verf%C3%BCgbaren%20Updates%E2%80%A6%22,%22modules.update@determineIfGetUpdateIsNecessary_updated%22:%22%5Binstantgram%5D%20wurde%20aktualisiert.%22,%22modules.update@determineIfGetUpdateIsNecessary_@alert_found%22:%22%5Binstantgram%5D%20hat%20ein%20neues%20Update%20gefunden.%5CnBitte%20besuche%20die%20Seite%20http://theus.github.io/instantgram,%20um%20das%20Update%20zu%20installieren.%22,%22index@alert_onlyWorks%22:%22%5Binstantgram%5D%20funktioniert%20nur%20mit%20instagram.com.%22,%22index#program#modal@alert_dontFound%22:%22%5Binstantgram%5D%20konnte%20kein%20Bild%20in%20diesem%20Post%20finden.%20Bitte%20%C3%B6ffne%20den%20Link%20in%20einem%20neuen%20Tab.%22,%22index#program#post@alert_dontFound%22:%22Ops,%20%5Binstantgram%5D%20konnte%20leider%20kein%20Bild%20finden%20%20:-(%22,%22index#program#screen@alert_dontFound%22:%22%5Binstantgram%5D%20hat%20mehr%20als%201%20Bild%20gefunden.%20Bist%20du%20in%20der%20Profilansicht?%20Falls%20ja,%20%C3%B6ffne%20bitte%20zuerst%20einen%20einzelnen%20Post%20und%20f%C3%BChre%20%5Binstantgram%5D%20erneut%20aus.%22,%22index#program@alert_dontFound%22:%22Ops,%20hast%20du%20einen%20Instagram%20Post%20ge%C3%B6ffnet?%20Zum%20Beispiel%20instagram.com/p/82jd828jd%22,%22index#program@alert_videoBlob%22:%22If%20you're%20trying%20open%20a%20video,%20try%20enter%20on%20Instagram%20post%20page.%20Like%20for%20example%20instagram.com/p/82jd828jd.%20If%20you're%20already%20in%20it,%20try%20refreshing%20the%20page%20before%20running%20%5Binstantgram%5D%20or%20open%20the%20post%20in%20a%20new%20tab.%20(this%20proccess%20is%20neccessary%20only%20for%20videos)%20//%20we%20need%20translate%20this%20string%20to%20Deutsch,%20if%20you%20can%20help%20us%20enter%20in%20contact%20by%20Github%22%7D%7D%7D%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D);var%20a=function(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7D(n(2));function%20r(e)%7Bconsole.warn((0,a.default)(%22modules.update@oudated_outdated%22)),console.warn((0,a.default)(%22modules.update@oudated_localInfo%22).replace(%22$%7Bdata.version%7D%22,e.version).replace(%22$%7Bdata.gitVersion%7D%22,e.gitVersion))%7Dt.default=function(e)%7Bvar%20t=e.replace(/%5C./g,%22%22);if(t=parseInt(t),function()%7Bvar%20e=window.localStorage.getItem(%22instantgram%22);return!e%7C%7C((e=JSON.parse(e)).version!==e.gitVersion&&r(e),Date.now()%3Ee.dateExpiration)%7D())%7Bvar%20n=new%20window.XMLHttpRequest;n.addEventListener(%22readystatechange%22,function()%7Bif(console.info((0,a.default)(%22modules.update@determineIfGetUpdateIsNecessary_contacting%22)),4===this.readyState)%7Bvar%20n=new%20Date;n.setDate(n.getDate()+2),window.localStorage.setItem(%22instantgram%22,JSON.stringify(%7Bversion:e,gitVersion:JSON.parse(this.responseText).version,lastVerification:Date.now(),dateExpiration:n.valueOf()%7D));var%20o=JSON.parse(this.responseText).version;if(o=o.replace(/%5C./g,%22%22),o=parseInt(o),console.info((0,a.default)(%22modules.update@determineIfGetUpdateIsNecessary_updated%22)),t%3Co)%7Bvar%20i=JSON.parse(window.localStorage.getItem(%22instantgram%22));window.alert((0,a.default)(%22modules.update@determineIfGetUpdateIsNecessary_@alert_found%22)),r(i)%7Delse%20console.info(window.localStorage.getItem(%22instantgram%22))%7D%7D),n.open(%22GET%22,%22https://theus.github.io/instantgram/package.json%22),n.send()%7D%7D%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Breturn(0,a.default)(e).filter(function(e)%7Breturn%22ARTICLE%22===e.nodeName%7D).length%3E0%7D;var%20a=function(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7D(n(0))%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Bvar%20t=!1,n=e.images.length%3E2;n&&e.regexPath.test(e.path)&&(e.probablyHasAGallery.check=n,e.probablyHasAGallery.byModule=%22searchImage%22);if(e.regexPath.test(e.path)&&!e.imageLink&!1===n)%7Bif(!e.foundVideo&&!e.foundImage)%7Btry%7Bif(2===document.getElementsByTagName(%22article%22).length)%7Bvar%20a=document.getElementsByTagName(%22article%22)%5B1%5D,r=a.querySelector(%22header%20+%20div%20img%22).src;r?(e.setImageLink(r),window.open(e.imageLink),t=!0,e.foundByModule=%22searchImage%22):e.context=%7BhasMsg:!0,msg:%22index#program#modal@alert_dontFound%22%7D%7D%7Dcatch(t)%7Bconsole.error(%22searchImage()%22,%22%5Binstantgram%5D%20%22+e.VERSION,t)%7Dtry%7Bif(1===document.getElementsByTagName(%22article%22).length)%7Bvar%20o=document.querySelector(%22article%20%3E%20div%20img%22).src;e.setImageLink(o),e.imageLink?(window.open(e.imageLink),t=!0,e.foundByModule=%22searchImage%22):e.context=%7BhasMsg:!0,msg:%22index#program#post@alert_dontFound%22%7D%7D%7Dcatch(t)%7Bconsole.error(%22searchImage()%22,%22%5Binstantgram%5D%20%22+e.VERSION,t)%7D%7D%7Delse%20e.alertNotInInstagramPost=!0;return%20t%7D%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Bvar%20t=!1;try%7Be:%7Bvar%20n=!0,r=!1,o=void%200;try%7Bfor(var%20i,s=e.videos%5BSymbol.iterator%5D();!(n=(i=s.next()).done);n=!0)%7Bvar%20d=i.value;if((0,a.default)(d))%7Bvar%20u=d.src;if(u)%7Bif(-1!==u.indexOf(%22blob:%22))%7Be.context=%7BhasMsg:!0,msg:%22index#program@alert_videoBlob%22%7D;break%20e%7Dwindow.open(u),t=!0,e.foundVideo=!0,e.foundByModule=%22searchVideoOnScreen%22,e.alertNotInInstagramPost=!0%7Dbreak%20e%7D%7D%7Dcatch(e)%7Br=!0,o=e%7Dfinally%7Btry%7B!n&&s.return&&s.return()%7Dfinally%7Bif(r)throw%20o%7D%7D%7D%7Dcatch(t)%7Bconsole.error(%22searchVideoOnScreen()%22,%22%5Binstantgram%5D%20%22+e.VERSION,t)%7Dreturn%20t%7D;var%20a=function(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7D(n(1))%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Bvar%20t=!1;try%7Bif(!e.imageLink&&!e.foundVideo)e:%7Be.images.reverse();var%20n=!0,s=!1,d=void%200;try%7Bfor(var%20u,l=e.images%5BSymbol.iterator%5D();!(n=(u=l.next()).done);n=!0)%7Bvar%20c=u.value;if((0,a.default)(c)&&!(0,o.default)(c)&&!(0,i.default)(c))%7Bvar%20m=(0,r.default)(c).filter(function(e)%7Breturn%22UL%22===e.nodeName%7D),g=m.length%3E0;if(g)%7Be.probablyHasAGallery.check=g,e.probablyHasAGallery.byModule=%22searchImageOnScreen%22;var%20f=(0,r.default)(c).filter(function(e)%7Breturn%20e.style&&e.style.transform&&%22%22!==e.style.transform%7D)%5B0%5D,p=f.querySelector(%22ul%22),h=+f.style.transform.split(%22(%22)%5B1%5D.replace(%22px)%22,%22%22),y=h/c.width,v=y%3C0?-1*y:y,_=p.children%5Bv%5D.querySelector(%22img%22);e.setImageLink(_.src),!0%7Delse%20e.setImageLink(c.src);e.imageLink?(window.open(e.imageLink),e.foundImage=!0,t=!0,e.foundByModule=%22searchImageOnScreen%22):e.context=%7BhasMsg:!0,msg:%22index#program#screen@alert_dontFound%22%7D,e.alertNotInInstagramPost=!1;break%20e%7D%7D%7Dcatch(e)%7Bs=!0,d=e%7Dfinally%7Btry%7B!n&&l.return&&l.return()%7Dfinally%7Bif(s)throw%20d%7D%7D%7D%7Dcatch(t)%7Bconsole.error(%22searchImageOnScreen()%22,%22%5Binstantgram%5D%20%22+e.VERSION,t)%7Dreturn%20t%7D;var%20a=s(n(1)),r=s(n(0)),o=s(n(11)),i=s(n(12));function%20s(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7D%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Breturn%22a%22===e.parentElement.localName%7C%7C(0,a.default)(e).filter(function(e)%7Breturn%22HEADER%22===e.nodeName%7D).length%3E0%7D;var%20a=function(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7D(n(0))%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Breturn%22SPAN%22===e.parentElement.nodeName&&%22link%22===e.parentElement.getAttribute(%22role%22)%7D;!function(e)%7Be&&e.__esModule%7D(n(0))%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Bvar%20t=!1;try%7Bif(e.regexStoriesURI.test(e.path))%7Bvar%20n=document.getElementById(%22react-root%22),r=n.querySelectorAll(%22section%20section%20div%22),o=%22%22;if((0,a.default)(r,function(t,n)%7Bvar%20a=n.style.backgroundImage.match(e.regexURL);null!==a&&(o=a%5B0%5D)%7D),o.length%3E0&&(e.setImageLink(o),window.open(e.imageLink),t=!0,e.foundImage=!0,e.foundByModule=%22searchStories%22),!1===t&&e.videos.length%3E0)%7Bvar%20i=e.videos%5B0%5D.src;!i&&e.videos%5B0%5D.children&&(i=e.videos%5B0%5D.children%5B0%5D.src),i&&(window.open(i),t=!0,e.foundVideo=!0,e.alertNotInInstagramPost=!0,e.foundByModule=%22searchStories%22)%7D%7D%7Dcatch(t)%7Bconsole.error(%22searchStories()%22,%22%5Binstantgram%5D%20%22+e.VERSION,t)%7Dreturn%20t%7D;var%20a=function(e)%7Breturn%20e&&e.__esModule?e:%7B%22default%22:e%7D%7D(n(3))%7D,function(e,t,n)%7B%22use%20strict%22;Object.defineProperty(t,%22__esModule%22,%7Bvalue:!0%7D),t.default=function(e)%7Bvar%20t=!1;try%7Bif(!e.imageLink&&!e.foundVideo)%7Bvar%20n=document.querySelector('%5Bproperty=%22og:video%22%5D')?document.querySelector('%5Bproperty=%22og:video%22%5D'):document.querySelector('%5Bproperty=%22og:video:secure_url%22%5D')?document.querySelector('%5Bproperty=%22og:video:secure_url%22%5D'):null,a=!!n&&n.content;a&&(window.open(a),t=!0,e.foundVideo=!0,e.alertNotInInstagramPost=!0)%7D%7Dcatch(e)%7Bconsole.error(%22getVideoOnPage()%22,%22%5Binstantgram%5D%203.0.1%22,e)%7Dreturn%20t%7D%7D%5D);})()
    

    Others

    Reddit Stream

    • Show reddit comment as a stream via Reddit Stream
    • Tracking protection shoud be off
    javascript:(function%20stream()%20{var%20s%20=%20window.location.href.split('/');var%20id%20=%20s[s.indexOf('comments')+1];if(s.indexOf('comments')%20!=%20-1)%20{%20window.location.href%20=%20'http://reddit-stream.com/comments/'%20+%20id;%20}})();
    

    Wayback Machine

    • Access cached page on Wayback Machine
    javascript:location.href='https://web.archive.org/web/*/'+location.href
    

    Download All Selected Format

    • download all selected format from a web page
    javascript:!function(){var%20t=prompt("Enter%20filetype%20to%20download%20(format:%20.mp3)");if(null!==t)for(var%20e=document.querySelectorAll('[href$="'+t+'"]'),o=0;o<e.length;o++)e[o].setAttribute("download",""),e[o].click();else%20alert("No%20format")}();
    

    Hypothesis

    javascript:(function(){window.hypothesisConfig=function(){return{showHighlights:true,appType:'bookmarklet'};};var d=document,s=d.createElement('script');s.setAttribute('src','https://hypothes.is/embed.js');d.body.appendChild(s)})();
    

    Didn’t Work

    Read Text Only

    • Read text only of a website using Text Fish
    javascript:(function(){ window.location = 'https://text.fish/'+window.location })()
    

    Read Paywalled Page

    • Read paywalled webpage
    javascript:var%20currentsite%3Ddocument.querySelector(%22meta%5Bproperty%3D'al%3Aandroid%3Aapp_name'%5D%22)%3Fdocument.querySelector(%22meta%5Bproperty%3D'al%3Aandroid%3Aapp_name'%5D%22).content%3Awindow.location.href%3Bfunction%20isPage(b)%7Bconsole.log(b%2B%22%20%22%2Bcurrentsite.includes(b))%3Breturn%20currentsite.includes(b)%7Dfunction%20process(b)%7Bvar%20a%3Db%3BisPage(%22NYTimes%22)%26%26(document.querySelector(%22html%22).innerHTML%3Da)%3BisPage(%22Medium%22)%26%26(a%3Db.replace(%2F%3C%5C%2F%3Fnoscript%3E%2Fg%2C%22%22)%2Cdocument.querySelector(%22html%22).innerHTML%3Da)%3Bif(isPage(%22Bloomberg%22)%7C%7CisPage(%22businessinsider%22))a%3Ddocument.createElement(%22html%22)%2Ca.innerHTML%3Db%2Ca.querySelectorAll(%22script%22).forEach(function(a)%7Breturn%20a.outerHTML%3D%22%22%7D)%2Ca%3Da.outerHTML%2Cdocument.open()%2Cdocument.write(a)%2Cdocument.close()%3BisPage(%22businessinsider%22)%26%26(a%3Ddocument.createElement(%22html%22)%2Ca.innerHTML%3Db%2Ca.querySelectorAll(%22script%22).forEach(function(a)%7Breturn%20a.outerHTML%3D%22%22%7D)%2Ca.querySelectorAll(%22figure%22).forEach(function(a)%7Ba.innerHTML%3Da.querySelector(%22noscript%22).innerHTML%7D)%2Ca%3Da.outerHTML%2Cdocument.open()%2Cdocument.write(a)%2Cdocument.close())%7Dfetch(window.location.href%2C%7Bcredentials%3A%22omit%22%2Credirect%3A%22follow%22%2Cmode%3A%22no-cors%22%7D).then(function(b)%7Breturn%20b.text()%7D).then(function(b)%7Bprocess(b)%7D)%3Bvoid+0
    

    Switch CSS

    • Switch CSS to Minimal CSS according to Dohliam
    javascript:(function()%7Bvar%20body%20%3D%20document.getElementsByTagName('body')%5B0%5D%3Bscript%20%3D%20document.createElement('script')%3Bscript.type%3D%20'text%2Fjavascript'%3Bscript.src%3D%20'https%3A%2F%2Fdohliam.github.io%2Fdropin-minimal-css%2Fswitcher.js'%3Bbody.appendChild(script)%7D)()
    

    9.2 - Extended Markdown Cheatsheet

    Extended Markdown Cheatsheet

    1. Heading ID

    Markdown:

    ### My Great Heading {#heading-ids}
    

    Markdown

    My Great Heading

    In HTML:

    My Great Heading

    Link to Heading IDs


    2.2. Code Fencing and Highlighting

    Notes:

    • We can make block code fences without need to be idented
    • lang is optional to specify the language of the code; if not specified, the app won’t highlight the code;
    • We need one empty line before

    Syntaxes

        ```
        This is a fenced code block.
        ```
    

    Syntaxes

        ~~~
        This is another fenced code block.
        ~~~
    

    Showcases

    This is a fenced code block.
    
    No language indicated, so no syntax highlighting.
    s = "There is no highlighting for this."
    But let's throw in a <b>tag</b>.
    

    Showcases (javascript)

    var s = "JavaScript syntax highlighting";
    alert(s);
    

    Showcases (python)

    def function():
        #indenting works just fine in the fenced code block
        s = "Python syntax highlighting"
        print s
    

    Showcases (ruby)

    require 'redcarpet'
    markdown = Redcarpet.new("Hello World!")
    puts markdown.to_html
    

    2.3. Tables

    Notes:

    • we can set alignment in table with a colon (:)
    • we can add formatting text, links, code and HTML character code, but not: heading, headings, blockquotes, lists, horizontal rules, images, HTML tags, or fenced code

    Syntaxes

    | Option | Description |
    | ------ | ----------- |
    | data   | path to data files to supply the data that will be passed into templates. |
    | engine | engine to be used for processing templates. Handlebars is the default. |
    | ext    | extension to be used for dest files. |
    

    Showcases

    Option Description
    data path to data files to supply the data that will be passed into templates.
    engine engine to be used for processing templates. Handlebars is the default.
    ext extension to be used for dest files.

    Syntaxes

    | Syntax      | Description | Test Text is long    |
    | :---        |    :----:   |          ---: |
    | Header from      | Title       | Here's this  is |
    | Paragraph   | Text        | And more   |
    

    Showcases

    Syntax Description Test Text is long
    Header from Title Here’s this is
    Paragraph Text And more

    Syntaxes

    | Syntax      | Description | Test Text is long    |
    | :---        |    :----:   |          ---: |
    | [Example](https://www.example.com/)      | **Title**       | `Here's this  is` |
    | Paragraph   | Text        | And more   |
    

    Showcases

    Syntax Description Test Text is long
    Example Title Here's this is
    Paragraph Text And more

    2.4. Footnote

    Example: The First Part
    Here’s a simple footnote,1 and here’s a longer one,2, and 3

    Example: The Second Part

    Or add inline footnote
    Another example of footnote 1 link4 and footnote 2 link5.
    Or to add inline footnote^[Text of inline footnote] definition.

    Or duplictade reference
    This duplicated footnote reference5.


    2.4. Strikethrough, Highlighting, Underline

    Example of strikethrough
    strikethrough
    In HTML: strikethrough

    Example of mark/highlighting
    ==marked text==
    in HTML: marked text

    Example of underline
    underline
    in HTML: underline


    2.5. Task Lists

    Example

    • Write the press release
    • Update the website
    • Contact the media

    2.6. Definition Lists

    Example

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    In HTML:

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    *Or *

    Term 1
    Definition 1
    with lazy continuation.
    Term 2 with inline markup
    Definition 2
    { some code, part of Definition 2 }

    Third paragraph of definition 2.

    Or in compact style:

    Term 1
    ~ Definition 1

    Term 2
    ~ Definition 2a ~ Definition 2b


    2.7. Emojies

    Emoji can be copy pasted

    Gone camping! ⛺ Be back soon.
    That is so funny! 😂

    Or, use markdown

    Gone camping! :tent: Be back soon.
    That is so funny! :joy:

    Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum:

    Shortcuts (emoticons): :-) :-( 8-) ;)


    2.9. Typographic replacements

    Example

    (c) (C) (r) (R) (tm) (TM) (p) (P) +-
    test.. test… test….. test?….. test!….
    !!!!!! ???? ,, – —
    “Smartypants, double quotes” and ‘single quotes’


    2.10. Superscript and Subscript

    Example Superscript
    x^2^
    In HTML: x2

    Example Subscript
    H~2~O
    In HTML: H2O


    2.11. Inserted Text

    Example
    ++Inserted text++
    In HTML: This text has been inserted


    2.12. Abbreviations

    Example
    The “HTML” specification is maintained by the “W3C”.
    *[HTML]: Hyper Text Markup Language
    *[W3C]: World Wide Web Consortium

    In HTML:
    The HTML specification is maintained by the W3C.


    2.13. HTML Entities and Character Codes

    Example

    © & ¨ ™ ¡ £
    & < > ¥ € ® ± ¶ § ¦ ¯ « ·
    |

    Or

    X² Y³ ¾ ¼ × ÷ »

    Or

    18ºC " '


    2.14. Latex

    Note:

    • Sometimes with \( and \) brackets

    Example

    $E=mc^2$

    $$\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))$$

    Or, inline

    The Gamma function satisfying $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$ is via the Euler integral


    2.15. Mentions, Tag, Font Awesome

    Note:

    • with fa-something:

    Example

    This is @mentions
    This is #tags
    This is tags
    This is font awesome :fa-star:


    2.16. Diagram

    Notes:

    • Your app should support the specific library or engine to draw the diagram
    • You should specify particular language of the fenced code block and write the definition of your diagram within it.

    2.16.1 Mermaid

    Notes:

    • It’s implemented in showdown-mermaid.js
    • Rendering diagrams of Flowchart or Sequence or Gantt
    • Using mermaid
    • Check mermaid doc for more information.
    • Code inside { } is optional

    Syntaxes

    • Flowchart syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        graph TD;
        <code content>
        ```
      
    • Sequence diagram syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        sequenceDiagram
        <code content>
        ```
      
    • Gantt diagram syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        gantt
        <code content>
        ```
      

    Showcases

    • Flowchart
    graph TD;
               A-->B;
               A-->C;
               B-->D;
               C-->D;
    
    graph TD;
               A-->B;
               A-->C;
               B-->D;
               C-->D;
    
    • Sequence diagram
    sequenceDiagram
               participant Alice
               participant Bob
               Alice->>John: Hello John, how are you?
               loop Healthcheck
                   John->>John: Fight against hypochondria
               end
               Note right of John: Rational thoughts <br/>prevail!
               John-->>Alice: Great!
               John->>Bob: How about you?
               Bob-->>John: Jolly good!
    
    • Gantt diagram
           gantt
           dateFormat  YYYY-MM-DD
           title Adding GANTT diagram to mermaid
           excludes weekdays 2014-01-10
    
           section A section
           Completed task            :done,    des1, 2014-01-06,2014-01-08
           Active task               :active,  des2, 2014-01-09, 3d
           Future task               :         des3, after des2, 5d
           Future task2               :         des4, after des3, 5d
    

    2.16.2 Plantuml

    Notes:

    • It’s implemented in showdown-plantuml.js,
    • Render diagrams of uml,
    • Using plantuml,
    • Check plantuml website fpr more information.
    • Code inside { } is optional

    Syntaxes

    ```plantuml {"align": "left | center | right", "codeblock": true | false}
    @startuml
    <code content>
    @enduml
    ```
    

    Showcases

          @startuml
          participant User
    
          User -> A: DoWork
          activate A
    
          A -> B: << createRequest >>
          activate B
    
          B -> C: DoWork
          activate C
          C --> B: WorkDone
          destroy C
    
          B --> A: RequestCreated
          deactivate B
    
          A -> User: Done
          deactivate A
    
          @enduml
    

    2.16.3 Flowchart

    Notes:

    • It’s implemented in showdown-flowchart.js
    • Render diagrams of flowchart
    • Using flowchart.js
    • Check flowchart website for more information.
    • Code inside { } is optional

    Syntaxes

    ```flow {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Syntaxes

    ```flowchart {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    st=>start: Start:>https://www.google.com[blank]
    e=>end:>https://www.google.com
    op1=>operation: My Operation
    sub1=>subroutine: My Subroutine
    cond=>condition: Yes
    or No?:>https://www.google.com
    io=>inputoutput: catch something...
    para=>parallel: parallel tasks
    
    st->op1->cond
    cond(yes)->io->e
    cond(no)->para
    para(path1, bottom)->sub1(right)->op1
    para(path2, top)->op1
    

    Showcases

    st=>start: Start
    e=>end
    op1=>operation: My Operation
    sub1=>subroutine: My Subroutine
    cond=>condition: Yes
    or No?:>https://www.google.com
    io=>inputoutput: catch something
    st->op1->cond
    cond(yes)->io->e
    cond(no)->sub1(right)->op1
    

    2.16.4 Graphviz’s dot

    Notes:

    • It’s implemented in showdown-viz.js
    • Render diagrams of graphviz’s dot
    • Using viz.js.
    • Code inside { } is optional

    Syntaxes

    The <engine name> of json’s “engine” field value is ‘circo’, ‘dot’, ’neato’, ‘osage’, ’twopi’ in syntax language attribute.

    ```dot {"engine": "<engine name>", "align": "<align>"}
    <code content>
    ```
    

    Showcases

    • Dot example with dot engine:
    digraph G {
        main -> parse -> execute;
        main -> init;
        main -> cleanup;
        execute -> make_string;
        execute -> printf
        init -> make_string;
        main -> printf;
        execute -> compare;
    }
    

    • Dot example with circo engine:
    digraph G {
        main -> parse -> execute;
        main -> init;
        main -> cleanup;
        execute -> make_string;
        execute -> printf
        init -> make_string;
        main -> printf;
        execute -> compare;
    }
    

    2.16.5 Railroad diagrams

    Notes:

    • It’s implemented in showdown-viz.js
    • Render diagrams of railroad
    • Using railroad-diagrams.
    • Code inside { } is optional

    Syntaxes

    ```railroad {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    Diagram(
      Optional('+', 'skip'),
        Choice(0,
          NonTerminal('name-start char'),
          NonTerminal('escape')),
          ZeroOrMore(
            Choice(0,
              NonTerminal('name char'),
              NonTerminal('escape'))))
    

    2.16.6 WaveDrom

    Notes:

    • It’s implemented in showdown-viz.js
    • Render diagrams of wavedrom
    • Using wavedrom
    • Check wavedrom website for more information.
    • Code inside { } is optional

    Syntaxes

    ```wavedrom {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    {signal: [
      {name: 'clk', wave: 'p.....|...'},
      {name: 'dat', wave: 'x.345x|=.x', data: ['head', 'body', 'tail', 'data']},
      {name: 'req', wave: '0.1..0|1.0'},
      {},
      {name: 'ack', wave: '1.....|01.'}
    ]}
    

    Showcases

    { signal: [
      { name: "pclk", wave: 'p.......' },
      { name: "Pclk", wave: 'P.......' },
      { name: "nclk", wave: 'n.......' },
      { name: "Nclk", wave: 'N.......' },
      {},
      { name: 'clk0', wave: 'phnlPHNL' },
      { name: 'clk1', wave: 'xhlhLHl.' },
      { name: 'clk2', wave: 'hpHplnLn' },
      { name: 'clk3', wave: 'nhNhplPl' },
      { name: 'clk4', wave: 'xlh.L.Hx' },
    ]}
    

    2.16.7 Vega and Vega-Lite

    Notes:

    Syntaxes

    ```vega {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Syntaxes

    ```vega-lite {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    • Vega example:
    {
      "$schema": "https://vega.github.io/schema/vega/v5.json",
      "width": 200,
      "height": 200,
      "autosize": "none",
    
      "signals": [
        {
          "name": "startAngle", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
        },
        {
          "name": "endAngle", "value": 6.29,
          "bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
        },
        {
          "name": "padAngle", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 0.1}
        },
        {
          "name": "innerRadius", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 90, "step": 1}
        },
        {
          "name": "cornerRadius", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 10, "step": 0.5}
        },
        {
          "name": "sort", "value": false,
          "bind": {"input": "checkbox"}
        }
      ],
    
      "data": [
        {
          "name": "table",
          "values": [
            {"id": 1, "field": 4},
            {"id": 2, "field": 6},
            {"id": 3, "field": 10},
            {"id": 4, "field": 3},
            {"id": 5, "field": 7},
            {"id": 6, "field": 8}
          ],
          "transform": [
            {
              "type": "pie",
              "field": "field",
              "startAngle": {"signal": "startAngle"},
              "endAngle": {"signal": "endAngle"},
              "sort": {"signal": "sort"}
            }
          ]
        }
      ],
    
      "scales": [
        {
          "name": "color",
          "type": "ordinal",
          "domain": {"data": "table", "field": "id"},
          "range": {"scheme": "category20"}
        }
      ],
    
      "marks": [
        {
          "type": "arc",
          "from": {"data": "table"},
          "encode": {
            "enter": {
              "fill": {"scale": "color", "field": "id"},
              "x": {"signal": "width / 2"},
              "y": {"signal": "height / 2"}
            },
            "update": {
              "startAngle": {"field": "startAngle"},
              "endAngle": {"field": "endAngle"},
              "padAngle": {"signal": "padAngle"},
              "innerRadius": {"signal": "innerRadius"},
              "outerRadius": {"signal": "width / 2"},
              "cornerRadius": {"signal": "cornerRadius"}
            }
          }
        }
      ]
    }
    

    • Vega-Lite example:
    {
      "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
      "description": "Plots two functions using a generated sequence.",
      "width": 300,
      "height": 150,
      "data": {
        "sequence": {
          "start": 0,
          "stop": 12.7,
          "step": 0.1,
          "as": "x"
        }
      },
      "transform": [
        {
          "calculate": "sin(datum.x)",
          "as": "sin(x)"
        },
        {
          "calculate": "cos(datum.x)",
          "as": "cos(x)"
        },
        {
          "fold": ["sin(x)", "cos(x)"]
        }
      ],
      "mark": "line",
      "encoding": {
        "x": {
          "type": "quantitative",
          "field": "x"
        },
        "y": {
          "field": "value",
          "type": "quantitative"
        },
        "color": {
          "field": "key",
          "type": "nominal",
          "title": null
        }
      }
    }
    

    2.16.8 Network Sequence

    Notes:

    • It’s implemented in showdown-sequence.js,
    • Render diagrams of sequence
    • Using js-sequence-diagrams.
    • Code inside { } is optional

    Syntaxes

    The <theme name> of json’s “theme” field value is “hand” or “simple” in syntax language attribute;

    ```sequence {"theme": "<theme name>", "align": "<align>"}
    <code content>
    ```
    

    Showcases

    • Sequence example with hand theme:
    Alice->Bob: Hello Bob, how are you?
    Note right of Bob: Bob thinks
    Bob-->Alice: I am good thanks!
    

    • Sequence example with simple theme:
    Alice->Bob: Hello Bob, how are you?
    Note right of Bob: Bob thinks
    Bob-->Alice: I am good thanks!
    

    2.17. Table of Content Generation

    Example

    [TOC]

    Or

    [[TOC]]

    Or

    [[TOC]]


    2.18. Admonition

    Example

    !!! note

    This is the **note** admonition body
    
    !!! danger Danger Title
        This is the **danger** admonition body
    

    2.19. Attributes

    Example

    item bold red{style=“color:red”}

    in HTML: item bold red


    2.13. Custom Containers or Alerts

    Notes:

    • Some engine such as Markdown-it, you can add some alert text.
    • Available variants:
    alert-primary
    alert-secondary
    alert-success
    alert-info
    alert-warning
    alert-danger
    alert-light
    alert-dark
    

    Syntaxes

    ::: alert-info
    This is an info text.
    :::
    
    ::: alert-danger
    This is a danger text.
    :::
    

    Showcases

    ::: alert-primary alert-primary :::

    ::: alert-secondary alert-secondary :::

    ::: alert-success alert-success :::

    ::: alert-info alert-info :::

    ::: alert-warning alert-warning :::

    ::: alert-danger alert-danger :::

    ::: alert-light alert-light :::

    ::: alert-dark alert-dark :::

    in HTML

    alert-warning

    or

    alert-info

    or

    alert-warning

    2.14. Comments

    [//]: # (These are reference links used in the body of this note and get stripped out when the markdown processor does its job.


    1. This is the first footnote. ↩︎

    2. Here’s one with multiple paragraphs.
      For example like this ↩︎

    3. code or code in paragrahps
      code and codes ↩︎

    4. Footnote can have markup
      and multiple paragraphs. ↩︎

    5. Another footnote text. ↩︎ ↩︎

    9.3 - Basic Markdown Cheatsheet

    Basic Markdown Cheatsheet (example of Heading 1)

    1. Heading (example of Heading 2)

    Syntaxes

    # h1 Heading
    ## h2 Heading
    ### h3 Heading
    #### h4 Heading
    ##### h5 Heading
    ###### h6 Heading
    

    Showcases

    h3 Heading

    h4 Heading

    h5 Heading
    h6 Heading

    2. Paragraphs

    Notes:

    • To create paragraphs, use a blank line to separate one or more lines of text.
    • Don’t ident paragraphs with spaces or tabs

    Syntaxes

    This is the first paragraph.
    
    This is the second paragraph
    

    Showcases

    This is the first paragraph.

    This is the second paragraph


    3 Line Break

    Notes:

    • To create a line break, end a line with two or more spaces, and then type return
    • Or use the <br> HTML tag

    Syntaxes

    This is the first line. 
    And this is the second line.
    

    Showcases

    This is the first line.
    And this is the second line.

    Alternative Syntaxes

    First line with the HTML tag after.<br>
    And the next line.
    

    Showcases

    First line with the HTML tag after.
    And the next line.


    4. Emphasis

    Syntaxes

    **This is bold text**
    __This is bold text__
    *This is italic text*
    _This is italic text_
    We have **bold***italic*
    This text is ***really important***
    This text is ___really important___
    This text is __*really important*__
    This text is **_really important_**
    

    Showcases

    This is bold text
    This is bold text
    This is italic text
    This is italic text
    We have bolditalic
    This text is really important
    This text is really important
    This text is really important
    This text is really important


    5. Blockquotes

    Notes:

    • Space is needed after the marker >;
    • You could just add only one > at the first line;
    • Blockquotes can be nested
    • Blockquotes can contain multiple paragraphs. Add a > between the paragraphs.
    • Blockquotes can contain other Markdown formatted elements. But not all elements can be used.

    Syntaxes

    > Blockquotes can also be nested...
    >> ...by using additional greater-than signs right next to each other...
    > > > ...or with spaces between arrows.
    

    Showcases

    Blockquotes can also be nested…

    …by using additional greater-than signs right next to each other…

    …or with spaces between arrows.

    Syntaxes

    > Dorothy followed her through many of the beautiful rooms in her castle.
    >
    > The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
    

    Showcases

    Dorothy followed her through many of the beautiful rooms in her castle.

    The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.

    Syntaxes

    > #### The quarterly results look great!
    >
    > - Revenue was off the chart.
    > - Profits were higher than ever.
    >
    >  *Everything* is going according to **plan**.
    

    Showcases

    The quarterly results look great!

    • Revenue was off the chart.
    • Profits were higher than ever.

    Everything is going according to plan.


    6. Lists

    6.1. Unordered

    Syntaxes

    
    + To start a list, there should be an empty line above
    + Create a list by starting a line with `+`, `-`, or `*`
    - Changing the sign will add a linespace
    + Add text under an item  
    This is a text under an item. Notice that there are two spaces at the end above.
    - Sub-lists are made by indenting 2 spaces:
      * Item 2a
      * Item 2b
    * Item 3
    
    To end a list, there should be one empty line above.
    

    Showcases

    • To start a list, there should be an empty line above
    • Create a list by starting a line with +, -, or *
    • Changing the sign will add a linespace
    • Add text under an item
      This is a text under an item. Notice that there are two spaces at the end above.
    • Sub-lists are made by indenting 2 spaces:
      • Item 2a
      • Item 2b
    • Item 3

    To end a list, there should be one empty line above.

    6.2. Ordered

    Syntaxes

    1. Item 1
    1. Item 2  
    Notice that the sequence number is irrelevant. 
    Markdown will change the sequence automatically when renderring. 
    Notice that there are two spaces at the end above to make a new text under item.
    3. Sub-lists are made by indenting 4 spaces
        1. Item 3a
        2. Item 3b
    8. Any number for item 4
    

    Showcases

    1. Item 1
    2. Item 2
      Notice that the sequence number is irrelevant.
      Markdown will change the sequence automatically when renderring.
      Notice that there are two spaces at the end above to make a new text under item.
    3. Sub-lists are made by indenting 4 spaces
      1. Item 3a
      2. Item 3b
    4. Any number for item 4

    Syntaxes

    57. will started with offset 57
    1. so it will be 58
    

    Showcases

    1. will started with offset 57
    2. so it will be 58

    7. Elements in Lists

    Notes:

    • To add another element in a list while preserving the continuity of the list, indent the element four spaces or one tab

    Syntaxes

    * This is the first list item.
    * Here's the second list item.
        I need to add another paragraph below the second list item.
    * And here's the third list item.
    

    Showcases

    • This is the first list item.
    • Here’s the second list item. I need to add another paragraph below the second list item.
    • And here’s the third list item.

    Showcases

    • This is the first list item.

    • Here’s the second list item.

      I need to add another paragraph below the second list item.

    • And here’s the third list item.

    Showcases

    • This is the first list item.

    • Here’s the second list item.

      A blockquote would look great below the second list item.

    • And here’s the third list item.

    Syntaxes

    1.  Open the file containing the Linux mascot.
    2.  Linux mascot called Tux.
        ![Tux, the Linux mascot](https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Tux.png/220px-Tux.png)
    3.  Tux is cool.
    

    Showcases

    1. Open the file containing the Linux mascot.
    2. Linux mascot called Tux. Tux, the Linux mascot
    3. Tux is cool.

    But, for text element in ordered list, add five spaces

    1. This is the first list item.

    2. Here’s the second list item.

      I need to add another paragraph below the second list item.

    3. And here’s the third list item.

    But, for quote in ordered list, add five spaces

    1. This is the first list item.

    2. Here’s the second list item.

      A blockquote would look great below the second list item.

    3. And here’s the third list item.

    But, for code blocks in the lists, add eight spaces or two tabs.

    1. Open the file.

    2. Find the following code block on line 21:

      <html>
        <head>
          <title>Test</title>
        </head>
      
    3. Update the title to match the name of your website.


    8. Code

    Notes:

    • Inline codes is written inside ` `
    • or idented by add four spaces or one tab before

    Syntaxes

    This is inline `code`.
    

    Showcases

    This is inline code.

    Syntaxes

        // Some comments
        line 1 of code
        line 2 of code
        line 3 of code
    

    Showcases

    // Some comments
    line 1 of code
    line 2 of code
    line 3 of code
    

    Syntaxes

        <html>
          <head>
            <title>Test</title>
          </head>
    

    Showcases

    <html>
      <head>
        <title>Test</title>
      </head>
    

    Example

    This is link
    This is link with title

    Or, directly put the link

    https://example.com/
    fake@example.com

    Or with <>

    https://www.markdownguide.org
    fake@example.com

    But, to prevent automated linking

    https://www.example.com

    Or add emphasize

    I love supporting the EFF.
    This is the Markdown Guide.
    See the section on code.

    I know Indonesia
    I also know etymology of Indonesia
    I knew History of Indonesia

    Or, put reference in text

    It was a hobbit-hole, and that means comfort.

    But, be careful with spaces in the links, put %20 as space

    example %20 link
    [example without %20](https://www.example.com/my great page)


    11. Images

    Notes:

    • It is not recommended to use image links in reference format. Some apps will not preview those images.
    • Specifying size of image is supported only in some extended markdown (such as markdown-it).

    Syntaxes

    ![Image Alt Text](/url/to/image.png "Optional Text")
    ![Image Alt Text](/url/to/image.png "Image specified with width and height" =800x600)
    ![Image Alt Text](/url/to/image.png =800x600)
    ![Image Alt Text](/url/to/image.png "Image specified with width" =800x)
    ![Image Alt Text](/url/to/image.png "Image specified with height" =x600)
    

    Showcases

    Wikipedia
    ![Wikipedia](https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png “Wikipedia logo with specific size” =60x60)

    Syntaxes

    ![Image Alt Text][id1]  
    ![Image Alt Text][id2]
    
    [id1]: /url/to/image.png "Optional Text"
    [id2]: /url/to/image.png
    

    Showcases

    Wikipedia
    Wikipedia Logo


    12. Escaping Characters

    Note:

    • add a backslash \ in front of the character.

    Example

    * star
    \ backslash itself
    ` backtick
    { } curly braces
    ! exclamation mark


    13. HTML Code

    Example

    This word is bold. This word is italic.


    14. Horizontal Rules

    Example




    9.4 - Markdown Tools and Apps

    Markdown Tools and Apps

    Online Markdown Editor

    to Markdown Converter

    Markdown Linter

    Markdown References

    Markdown Parsing Comparisons

    Markdown Style Guide

    List Markdown Parser

    Discussion

    Alternative to Markdown (another Markup Languages)

    List at wiki

    Comparison

    Markdown Editor

    Markdown Tools

    9.6 - List of Library for Commonmark

    List of Library for Commonmark Extension

    2.16. Diagram

    Notes:

    • Your app should support the specific library or engine to draw the diagram
    • You should specify particular language of the fenced code block and write the definition of your diagram within it.

    2.16.1 Mermaid

    Notes:

    • It’s implemented in showdown-mermaid.js
    • Rendering diagrams of Flowchart or Sequence or Gantt
    • Using mermaid
    • Check mermaid doc for more information.
    • Code inside { } is optional

    Syntaxes

    • Flowchart syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        graph TD;
        <code content>
        ```
      
    • Sequence diagram syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        sequenceDiagram
        <code content>
        ```
      
    • Gantt diagram syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        gantt
        <code content>
        ```
      

    Showcases

    • Flowchart
    graph TD;
               A-->B;
               A-->C;
               B-->D;
               C-->D;
    
    graph TD;
               A-->B;
               A-->C;
               B-->D;
               C-->D;
    
    • Sequence diagram
    sequenceDiagram
               participant Alice
               participant Bob
               Alice->>John: Hello John, how are you?
               loop Healthcheck
                   John->>John: Fight against hypochondria
               end
               Note right of John: Rational thoughts <br/>prevail!
               John-->>Alice: Great!
               John->>Bob: How about you?
               Bob-->>John: Jolly good!
    
    • Gantt diagram
           gantt
           dateFormat  YYYY-MM-DD
           title Adding GANTT diagram to mermaid
           excludes weekdays 2014-01-10
    
           section A section
           Completed task            :done,    des1, 2014-01-06,2014-01-08
           Active task               :active,  des2, 2014-01-09, 3d
           Future task               :         des3, after des2, 5d
           Future task2               :         des4, after des3, 5d
    

    2.16.2 Plantuml

    Notes:

    • It’s implemented in showdown-plantuml.js,
    • Render diagrams of uml,
    • Using plantuml,
    • Check plantuml website fpr more information.
    • Code inside { } is optional

    Syntaxes

    ```plantuml {"align": "left | center | right", "codeblock": true | false}
    @startuml
    <code content>
    @enduml
    ```
    

    Showcases

          @startuml
          participant User
    
          User -> A: DoWork
          activate A
    
          A -> B: << createRequest >>
          activate B
    
          B -> C: DoWork
          activate C
          C --> B: WorkDone
          destroy C
    
          B --> A: RequestCreated
          deactivate B
    
          A -> User: Done
          deactivate A
    
          @enduml
    

    2.16.3 Flowchart

    Notes:

    • It’s implemented in showdown-flowchart.js
    • Render diagrams of flowchart
    • Using flowchart.js
    • Check flowchart website for more information.
    • Code inside { } is optional

    Syntaxes

    ```flow {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Syntaxes

    ```flowchart {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    st=>start: Start:>https://www.google.com[blank]
    e=>end:>https://www.google.com
    op1=>operation: My Operation
    sub1=>subroutine: My Subroutine
    cond=>condition: Yes
    or No?:>https://www.google.com
    io=>inputoutput: catch something...
    para=>parallel: parallel tasks
    
    st->op1->cond
    cond(yes)->io->e
    cond(no)->para
    para(path1, bottom)->sub1(right)->op1
    para(path2, top)->op1
    

    Showcases

    st=>start: Start
    e=>end
    op1=>operation: My Operation
    sub1=>subroutine: My Subroutine
    cond=>condition: Yes
    or No?:>https://www.google.com
    io=>inputoutput: catch something
    st->op1->cond
    cond(yes)->io->e
    cond(no)->sub1(right)->op1
    

    2.16.4 Graphviz’s dot

    Notes:

    • It’s implemented in showdown-viz.js
    • Render diagrams of graphviz’s dot
    • Using viz.js.
    • Code inside { } is optional

    Syntaxes

    The <engine name> of json’s “engine” field value is ‘circo’, ‘dot’, ’neato’, ‘osage’, ’twopi’ in syntax language attribute.

    ```dot {"engine": "<engine name>", "align": "<align>"}
    <code content>
    ```
    

    Showcases

    • Dot example with dot engine:
    digraph G {
        main -> parse -> execute;
        main -> init;
        main -> cleanup;
        execute -> make_string;
        execute -> printf
        init -> make_string;
        main -> printf;
        execute -> compare;
    }
    

    • Dot example with circo engine:
    digraph G {
        main -> parse -> execute;
        main -> init;
        main -> cleanup;
        execute -> make_string;
        execute -> printf
        init -> make_string;
        main -> printf;
        execute -> compare;
    }
    

    2.16.5 Railroad diagrams

    Notes:

    • It’s implemented in showdown-viz.js,
    • Render diagrams of railroad
    • Using railroad-diagrams.
    • Code inside { } is optional

    Syntaxes

    ```railroad {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    Diagram(
      Optional('+', 'skip'),
        Choice(0,
          NonTerminal('name-start char'),
          NonTerminal('escape')),
          ZeroOrMore(
            Choice(0,
              NonTerminal('name char'),
              NonTerminal('escape'))))
    

    2.16.6 WaveDrom

    Notes:

    • It’s implemented in showdown-viz.js,
    • Render diagrams of wavedrom
    • Using wavedrom
    • Check wavedrom website for more information.
    • Code inside { } is optional

    Syntaxes

    ```wavedrom {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    {signal: [
      {name: 'clk', wave: 'p.....|...'},
      {name: 'dat', wave: 'x.345x|=.x', data: ['head', 'body', 'tail', 'data']},
      {name: 'req', wave: '0.1..0|1.0'},
      {},
      {name: 'ack', wave: '1.....|01.'}
    ]}
    

    Showcases

    { signal: [
      { name: "pclk", wave: 'p.......' },
      { name: "Pclk", wave: 'P.......' },
      { name: "nclk", wave: 'n.......' },
      { name: "Nclk", wave: 'N.......' },
      {},
      { name: 'clk0', wave: 'phnlPHNL' },
      { name: 'clk1', wave: 'xhlhLHl.' },
      { name: 'clk2', wave: 'hpHplnLn' },
      { name: 'clk3', wave: 'nhNhplPl' },
      { name: 'clk4', wave: 'xlh.L.Hx' },
    ]}
    

    2.16.7 Vega and Vega-Lite

    Notes:

    Syntaxes

    ```vega {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Syntaxes

    ```vega-lite {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    • Vega example:
    {
      "$schema": "https://vega.github.io/schema/vega/v5.json",
      "width": 200,
      "height": 200,
      "autosize": "none",
    
      "signals": [
        {
          "name": "startAngle", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
        },
        {
          "name": "endAngle", "value": 6.29,
          "bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
        },
        {
          "name": "padAngle", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 0.1}
        },
        {
          "name": "innerRadius", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 90, "step": 1}
        },
        {
          "name": "cornerRadius", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 10, "step": 0.5}
        },
        {
          "name": "sort", "value": false,
          "bind": {"input": "checkbox"}
        }
      ],
    
      "data": [
        {
          "name": "table",
          "values": [
            {"id": 1, "field": 4},
            {"id": 2, "field": 6},
            {"id": 3, "field": 10},
            {"id": 4, "field": 3},
            {"id": 5, "field": 7},
            {"id": 6, "field": 8}
          ],
          "transform": [
            {
              "type": "pie",
              "field": "field",
              "startAngle": {"signal": "startAngle"},
              "endAngle": {"signal": "endAngle"},
              "sort": {"signal": "sort"}
            }
          ]
        }
      ],
    
      "scales": [
        {
          "name": "color",
          "type": "ordinal",
          "domain": {"data": "table", "field": "id"},
          "range": {"scheme": "category20"}
        }
      ],
    
      "marks": [
        {
          "type": "arc",
          "from": {"data": "table"},
          "encode": {
            "enter": {
              "fill": {"scale": "color", "field": "id"},
              "x": {"signal": "width / 2"},
              "y": {"signal": "height / 2"}
            },
            "update": {
              "startAngle": {"field": "startAngle"},
              "endAngle": {"field": "endAngle"},
              "padAngle": {"signal": "padAngle"},
              "innerRadius": {"signal": "innerRadius"},
              "outerRadius": {"signal": "width / 2"},
              "cornerRadius": {"signal": "cornerRadius"}
            }
          }
        }
      ]
    }
    

    • Vega-Lite example:
    {
      "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
      "description": "Plots two functions using a generated sequence.",
      "width": 300,
      "height": 150,
      "data": {
        "sequence": {
          "start": 0,
          "stop": 12.7,
          "step": 0.1,
          "as": "x"
        }
      },
      "transform": [
        {
          "calculate": "sin(datum.x)",
          "as": "sin(x)"
        },
        {
          "calculate": "cos(datum.x)",
          "as": "cos(x)"
        },
        {
          "fold": ["sin(x)", "cos(x)"]
        }
      ],
      "mark": "line",
      "encoding": {
        "x": {
          "type": "quantitative",
          "field": "x"
        },
        "y": {
          "field": "value",
          "type": "quantitative"
        },
        "color": {
          "field": "key",
          "type": "nominal",
          "title": null
        }
      }
    }
    

    2.16.8 Network Sequence

    Notes:

    • It’s implemented in showdown-sequence.js,
    • Render diagrams of sequence
    • Using js-sequence-diagrams.
    • Code inside { } is optional

    Syntaxes

    The <theme name> of json’s “theme” field value is “hand” or “simple” in syntax language attribute;

    ```sequence {"theme": "<theme name>", "align": "<align>"}
    <code content>
    ```
    

    Showcases

    • Sequence example with hand theme:
    Alice->Bob: Hello Bob, how are you?
    Note right of Bob: Bob thinks
    Bob-->Alice: I am good thanks!
    

    • Sequence example with simple theme:
    Alice->Bob: Hello Bob, how are you?
    Note right of Bob: Bob thinks
    Bob-->Alice: I am good thanks!
    

    9.7 - Extended Commonmark

    Extended Commonmark

    Markdown-it Extension

    Newline as hardbreak

    Linkify

    Direct Link is not common mark

    https://example.com/ fake@example.com

    2.12. Abbreviations

    Support: PHP Markdown Extra 1.9.0, Markdown-it

    Markdown Syntax: The "HTML" specification is maintained by the "W3C". *[HTML]: Hyper Text Markup Language *[W3C]: World Wide Web Consortium

    HTML Syntax: The <abbr title="Hyper Text Markup Language">HTML</abbr> specification is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.

    Markdown Display:

    The “HTML” specification is maintained by the “W3C”. *[HTML]: Hyper Text Markup Language *[W3C]: World Wide Web Consortium

    HTML Display:

    The HTML specification is maintained by the W3C.


    2.3. Tables

    Support: kramdown

    Notes:

    • we can set alignment in table with a colon (:)
    • we can add formatting text, links, code and HTML character code, but not: heading, headings, blockquotes, lists, horizontal rules, images, HTML tags, or fenced code

    Support: PHP Markdown Extra, GFM, Maruku, MultiMarkdown, kramdown, Parsedown markdown-it (plugin), showdown, marked

    Syntaxes

    | Syntax      | Description | Test Text is long    |
    | :---        |    :----:   |          ---: |
    | [Example](https://www.example.com/)      | **Title**       | `Here's this  is` |
    | Paragraph   | Text        | And more   |
    

    HTML:

    <table>
    <thead>
    <tr>
      <th align="left">Syntax</th>
      <th align="center">Description</th>
      <th align="right">Test Text is long</th>
    </tr>
    </thead>
    <tbody>
    <tr>
      <td align="left"><a href="https://www.example.com/">Example</a></td>
      <td align="center"><strong>Title</strong></td>
      <td align="right"><code>Here's this  is</code></td>
    </tr>
    <tr>
      <td align="left">Paragraph</td>
      <td align="center">Text</td>
      <td align="right">And more</td>
    </tr>
    </tbody>
    </table>
    

    Showcases

    Syntax Description Test Text is long
    Example Title Here's this is
    Paragraph Text And more

    HTML

    Syntax Description Test Text is long
    Example Title Here's this is
    Paragraph Text And more

    2.4. Footnote

    2.4.1. Outline Footnote

    Support: PHP Markdown Extra, Maruku , MultiMarkdown, Markdown-it

    Markdown Syntax:

    Here's a simple footnote[^1] and here's a longer one[^bignote], and [^withcode]
    
    [^1]: This is the first footnote.
    [^bignote]: Here's one with multiple paragraphs.
    For example like this
    [^withcode]: `code` or code in paragrahps
    `code and codes`
    

    HTML Syntax:

    <p>Here’s a simple footnote<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> and here’s a longer one<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup>, and <sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup></p>
    <div class="footnotes"><hr /><ol><li id="fn:1">
    <p>This is the first footnote. <a href="#fnref:1" rev="footnote">↩</a></p>
    </li><li id="fn:2">
    <p>Here’s one with multiple paragraphs. For example like this <a href="#fnref:2" rev="footnote">↩</a></p>
    </li><li id="fn:3">
    <p><code>code</code> or code in paragrahps <code>code and codes</code> <a href="#fnref:3" rev="footnote">↩</a></p>
    </li></ol></div>
    

    Markdown Display:

    Here’s a simple footnote1 and here’s a longer one2, and 3

    HTML Display:

    Here’s a simple footnote1 and here’s a longer one2, and 3


    1. This is the first footnote.

    2. Here’s one with multiple paragraphs. For example like this

    3. code or code in paragrahps code and codes

    2.4.2. Inline Footnote #1

    Support: MultiMarkdown,

    Markdown Syntax:

    Another example of footnote 1 link[^first] and footnote 2 link[^second].
    

    HTML Syntax:

    <p>Another example of footnote 1 link<a href="#fn:1" id="fnref:1" title="see footnote" class="footnote"><sup>1</sup></a> and footnote 2 link<a href="#fn:2" id="fnref:2" title="see footnote" class="footnote"><sup>2</sup></a>.</p>
    
    <div class="footnotes">
    <hr />
    <ol>
    
    <li id="fn:1">
    <p>first <a href="#fnref:1" title="return to body" class="reversefootnote">&#160;&#8617;</a></p>
    </li>
    
    <li id="fn:2">
    <p>second <a href="#fnref:2" title="return to body" class="reversefootnote">&#160;&#8617;</a></p>
    </li>
    
    </ol>
    </div>
    

    Markdown Display:

    Another example of footnote 1 link[^first] and footnote 2 link[^second].

    HTML Display:

    Another example of footnote 1 link1 and footnote 2 link2.


    1. first  ↩

    2. second  ↩

    2.4.2. Inline Footnote #2

    Support: Markdown-it

    Markdown Syntax:

    Or to add inline footnote^[Text of inline footnote] definition.
    

    HTML Syntax:

    <p>Or to add inline footnote<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> definition.</p>
    <hr class="footnotes-sep">
    <section class="footnotes">
    <ol class="footnotes-list">
    <li id="fn1" class="footnote-item"><p>Text of inline footnote <a href="#fnref1" class="footnote-backref">↩︎</a></p>
    </li>
    </ol>
    </section>
    

    Markdown Display:

    Or to add inline footnote^[Text of inline footnote] definition.

    HTML Display:

    Or to add inline footnote[1] definition.


    1. Text of inline footnote ↩︎

    2.4.4. Duplicate Reference

    Support: PHP Markdown Extra, kramdown , MultiMarkdown, Markdown-it

    Markdown Syntax:

    This is a duplicated footnote[^b].
    This duplicated footnote reference[^b].
    
    [^b]: Another footnote text.
    

    HTML Syntax Kramdown Style:

    <p>This is a duplicated footnote<sup id="fnref:b"><a href="#fn:b" class="footnote">1</a></sup>.
    This duplicated footnote reference<sup id="fnref:b:1"><a href="#fn:b" class="footnote">1</a></sup>.</p>
    
    <div class="footnotes">
      <ol>
        <li id="fn:b">
          <p>Another footnote text. <a href="#fnref:b" class="reversefootnote">&#8617;</a> <a href="#fnref:b:1" class="reversefootnote">&#8617;<sup>2</sup></a></p>
        </li>
      </ol>
    </div>
    

    HTML Syntax Markdown-it:

    <p>This is a duplicated footnote<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.
    This duplicated footnote reference<sup class="footnote-ref"><a href="#fn1" id="fnref1:1">[1:1]</a></sup>.</p>
    <hr class="footnotes-sep">
    <section class="footnotes">
    <ol class="footnotes-list">
    <li id="fn1" class="footnote-item"><p>Another footnote text. <a href="#fnref1" class="footnote-backref">↩︎</a> <a href="#fnref1:1" class="footnote-backref">↩︎</a></p>
    </li>
    </ol>
    </section>
    

    Markdown Display:

    This is a duplicated footnote4. This duplicated footnote reference4.

    HTML Display Style Kramdown:

    This is a duplicated footnote1. This duplicated footnote reference1.

    1. Another footnote text. 2

    HTML Display Style Markdown-it:

    This is a duplicated footnote[1]. This duplicated footnote reference[1:1].


    1. Another footnote text. ↩︎ ↩︎


    2.4. Strikethrough, Highlighting, Underline

    2.4.1 Strikethrough

    Support: marked, RDiscount, Fatdown, Parsedown, GFM, showdown, markdown-it Markdown Syntax

    ~~strikethrough~~
    

    HTML Syntax:

    <p><s>strikethrough</s></p>
    <p><del>strikethrough</del></p>
    

    Markdown Display:

    strikethrough

    HTML Display:

    strikethrough

    strikethrough

    2.4.2 Mark (Highlighting)

    Support: markdown-it Markdown Syntax:

    ==marked text==
    

    HTML Syntax:

    <p><mark>marked text</mark></p>
    

    Markdown Display:

    ==marked text==

    HTML Display:

    marked text

    2.4.3 Underline

    Support: - (no markdown)

    Markdown Syntax

    ++underline++
    

    HTML Syntax

    <u>underline</u>
    <ins>underline</ins>
    

    Markdown Display:

    ++underline++

    HTML Display:

    underline underline


    2.5. Task Lists

    Support: marked, showdown, markdown-it

    Markdown Syntax:

    - [x] Write the press release
    - [ ] Update the website
    - [ ] Contact the media
    

    HTML Display Style 1:

    <ul>
    <li><input checked="" disabled="" type="checkbox"> Write the press release</li>
    <li><input disabled="" type="checkbox"> Update the website</li>
    <li><input disabled="" type="checkbox"> Contact the media</li>
    </ul>
    

    HTML Display Style 1:

    <ul>
    <li class="task-list-item" style="list-style-type: none;"><input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;" checked> Write the press release</li>
    <li class="task-list-item" style="list-style-type: none;"><input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;"> Update the website</li>
    <li class="task-list-item" style="list-style-type: none;"><input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;"> Contact the media</li>
    </ul>
    

    Markdown Display:

    • Write the press release
    • Update the website
    • Contact the media

    HTML Display Style 1

    • Write the press release
    • Update the website
    • Contact the media

    HTML Display Style 2

    • Write the press release
    • Update the website
    • Contact the media

    2.6. Definition Lists

    Support: karmdown, banyak

    Markdown Syntax:

    First Term
    : This is the definition of the first term.
    
    Second Term
    : This is one definition of the second term.
    : This is another definition of the second term.
    

    HTML Syntax:

    <dl>
    <dt>First Term</dt>
    <dd>This is the definition of the first term.</dd>
    <dt>Second Term</dt>
    <dd>This is one definition of the second term. </dd>
    <dd>This is another definition of the second term.</dd>
    </dl>
    

    Markdown Display:

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    HTML Display:

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    2.7. Emojies

    2.7.1 Copy Paste of Emoji

    Markdown Syntax

    Gone camping! ⛺ Be back soon.
    That is so funny! 😂
    

    HTML Syntax

    <p>Gone camping! ⛺ Be back soon.
    That is so funny! 😂</p>
    

    Markdown Display

    Gone camping! ⛺ Be back soon. That is so funny! 😂

    HTML Display

    Gone camping! ⛺ Be back soon. That is so funny! 😂

    2.7.2 Markdown of Emoji

    Support: markdown-it

    Markdown Syntax:

    Gone camping! :tent: Be back soon.
    That is so funny! :joy:
    > Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum:
    >
    > Shortcuts (emoticons): :-) :-( 8-) ;)
    

    HTML Syntax:

    <p>Gone camping! ⛺️ Be back soon.
    That is so funny! 😂</p>
    <blockquote>
    <p>Classic markup: 😉 :crush: 😢 :tear: 😆 😋</p>
    <p>Shortcuts (emoticons): 😃 😦 😎 😉</p>
    </blockquote>
    

    Markdown Display

    Gone camping! :tent: Be back soon. That is so funny! :joy:

    Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum:

    Shortcuts (emoticons): :-) :-( 8-) ;)

    HTML Display

    Gone camping! ⛺️ Be back soon. That is so funny! 😂

    Classic markup: 😉 :crush: 😢 :tear: 😆 😋

    Shortcuts (emoticons): 😃 😦 😎 😉


    2.9. Typographic replacements

    Support: markdown-it, Fatdown

    Markdown Syntax

    (c) (C) (r) (R) (tm) (TM) (p) (P) +-
    test.. test... test..... test?..... test!....
    !!!!!! ???? ,,  -- ---
    "Smartypants, double quotes" and 'single quotes'
    

    HTML Syntax:

    <p>© © ® ® ™ ™ § § ±</p>
    <p>test… test… test… test?.. test!..</p>
    <p>!!! ??? ,  – —</p>
    <p>“Double quotes” and ‘single quotes’</p>
    

    Markdown Display (c) (C) (r) (R) (tm) (TM) (p) (P) +- test.. test… test….. test?….. test!…. !!!!!! ???? ,, – — “Smartypants, double quotes” and ‘single quotes’

    HTML Display

    © © ® ® ™ ™ § § ±

    test… test… test… test?.. test!..

    !!! ??? , – —

    “Double quotes” and ‘single quotes’


    2.10. Superscript and Subscript

    2.10.1 Superscript

    Support; MultiMarkdown, Fatdown, Markdown-it

    Markdown x^2^

    HTML:

    x2

    Example Subscript Markdwon H~2~O

    In HTML:

    H2O


    2.14. Math (Latex)

    Support: Maruku (math)

    Inline Einstein Equations $E=mc^2$ and Gamma Function $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$

    Outline equations

    $$\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))$$


    2.15 Linkify

    Support: Markdown-t, marked,Parsedown , GFM, Fatdown, showdown

    **Markdown;

    https://example.com/

    fake@example.com

    HTML:

    https://example.com/

    fake@example.com

    Image with specific size

    Support: Markdown-it, Maruku MultiMarkdown

    Wikipedia

    ![Wikipedia](https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png “Wikipedia logo with specific size” =60x60)

    2.2. Code Fencing and Highlighting

    Notes:

    • We can make block code fences without need to be idented
    • lang is optional to specify the language of the code; if not specified, the app won’t highlight the code;
    • We need one empty line before

    Syntaxes

        ```
        This is a fenced code block.
        ```
    

    Syntaxes

        ~~~
        This is another fenced code block.
        ~~~
    

    Showcases

    This is a fenced code block.
    
    No language indicated, so no syntax highlighting.
    s = "There is no highlighting for this."
    But let's throw in a <b>tag</b>.
    

    Code Highlighting

    No language indicated, so no syntax highlighting.
    s = "There is no highlighting for this."
    But let's throw in a <b>tag</b>.
    

    Showcases (javascript)

    var s = "JavaScript syntax highlighting";
    alert(s);
    

    Showcases (python)

    def function():
        #indenting works just fine in the fenced code block
        s = "Python syntax highlighting"
        print s
    

    Showcases (ruby)

    require 'redcarpet'
    markdown = Redcarpet.new("Hello World!")
    puts markdown.to_html
    

    2.1. Attributes

    2.1.1 Heading Attributes

    Support: Markdown Extra , Maruku, kramdown Pandoc

    Markdown:

    ### My Great Heading {#heading-ids}
    

    Markdown

    My Great Heading

    In HTML:

    My Great Heading

    Link to Heading IDs


    2.1.2 Block Attributes

    Support: kramdown, Markdown Extra

    > A nice blockquote
    {: #with-an-id}
    
    <blockquote id="with-an-id">
      <p>A nice blockquote</p>
    </blockquote>
    

    Markdown:

    A nice blockquote {: #with-an-id}

    HTML:

    A nice blockquote

    2.1.2 Inline Attributes

    This is *red*{: style="color: red"}.
    
    <p>This is <em style="color: red">red</em>.</p>
    

    Ignoring Text

    This is a paragraph
    {::comment}
    This is a comment which is
    completely ignored.
    {:/comment}
    ... paragraph continues here.
    
    Extensions can also be used
    inline {::nomarkdown}**see**{:/}!
    
    <p>This is a paragraph
    <!-- 
    This is a comment which is
    completely ignored.
     -->
    … paragraph continues here.</p>
    
    <p>Extensions can also be used
    inline **see**!</p>
    

    Implicit Header REferences

    Support : Pandoc

    So, to link to a heading

    # Heading identifiers in HTML

    you can simply write

    [Heading identifiers in HTML]

    or

    [Heading identifiers in HTML][]

    Line Blocks

    Support: pandocs

    | The limerick packs laughs anatomical
    | In space that is quite economical.
    |    But the good ones I've seen
    |    So seldom are clean
    | And the clean ones so seldom are comical
    
    Kramdown Markdown Extra Pandoc
    Definition Lists
    Table
    Attributes
    Footnote
    Abbreviation
    Code Fencing
    Task Lists
    Image Dimension
    Mention
    Strikethrough
    Emoji

    Image Sizing

    • Specifying size of image is supported only in some extended markdown (such as markdown-it).

    Syntaxes

    ![Image Alt Text](/url/to/image.png "Optional Text")
    ![Image Alt Text](/url/to/image.png "Image specified with width and height" =800x600)
    ![Image Alt Text](/url/to/image.png =800x600)
    ![Image Alt Text](/url/to/image.png "Image specified with width" =800x)
    ![Image Alt Text](/url/to/image.png "Image specified with height" =x600)
    

    Showcases

    Wikipedia ![Wikipedia](https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png “Wikipedia logo with specific size” =60x60)

    2.19. Attributes

    Support:

    Markdown item bold red{style=“color:red”} HTML:

    in HTML: item bold red



    1. This is the first footnote. ↩︎

    2. Here’s one with multiple paragraphs. For example like this ↩︎

    3. code or code in paragrahps code and codes ↩︎

    4. Another footnote text. ↩︎ ↩︎

    9.8 - List of Extension in Markdown

    List of Extension in Markdown

    Commonmark

    Tries to implement all possible elements, while being unambiguous. Notably, CommonMark not yet includes a specification for footnotes.

    1. GFM

    Github Flavored Markdown

    This is a variety of Markdown invented by the hosting platform GitHub and is today one of the most common dialects.

    Tables (extension)

    foo bar
    baz bim

    Markdown syntax:

    HTML code:

    <table>
    <thead>
    <tr>
    <th>foo</th>
    <th>bar</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>baz</td>
    <td>bim</td>
    </tr>
    </tbody>
    </table>
    

    Task list items (extension)

    • foo
      • bar
      • baz
    • bim

    Markdown syntax:

    HTML code:

    <ul>
    <li><input checked="" disabled="" type="checkbox"> foo
    <ul>
    <li><input disabled="" type="checkbox"> bar</li>
    <li><input checked="" disabled="" type="checkbox"> baz</li>
    </ul>
    </li>
    <li><input disabled="" type="checkbox"> bim</li>
    </ul>
    

    Strikethrough (extension)

    Hi Hello, world!

    Markdown syntax:

    HTML code:

    <p><del>Hi</del> Hello, world!</p>
    

    www.commonmark.org foo@bar.baz

    Markdown syntax:

    HTML code:

    <p><a href="https://www.commonmark.org">www.commonmark.org</a></p>
    <p><a href="mailto:foo@bar.baz">foo@bar.baz</a></p>
    

    Disallowed some Raw HTML (extension)

    • GFM enables the tagfilter extension, where the following HTML tags will be filtered when rendering HTML output: <title> <textarea> <style> <xmp> <iframe> <noembed> <noframes> <script> <plaintext>
    • All other HTML tags are left untouched

    2. Markdown-it

    Markdown-it Github

    Typographic replacements

    (c) (C) (r) (R) (tm) (TM) (p) (P) +-

    test.. test… test….. test?….. test!….

    !!!!!! ???? ,, – —

    “Smartypants, double quotes” and ‘single quotes’

    Strikethrough

    Strikethrough

    Syntax highlighting

    var foo = function (bar) {
      return bar++;
    };
    
    console.log(foo(5));
    

    Tables

    Option Description
    data path to data files to supply the data that will be passed into templates.
    engine engine to be used for processing templates. Handlebars is the default.
    ext extension to be used for dest files.

    Emojies (plugin)

    Emojies

    Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum:

    Shortcuts (emoticons): :-) :-( 8-) ;)

    see how to change output with twemoji.

    Superscript/Subscript (plugin)

    Subscript / Superscript

    • 19^th^
    • H~2~O

    Underscore/inserted text (plugin)

    <ins>

    ++Inserted text++

    Marked/highlight text (plugin)

    <mark>

    ==Marked text==

    Footnotes (plugin)

    Footnotes

    Footnote 1 link1.

    Footnote 2 link2.

    Inline footnote^[Text of inline footnote] definition.

    Duplicated footnote reference2.

    Definition Lists (Plugin)

    Definition lists

    Term 1

    Definition 1 with lazy continuation.

    Term 2 with inline markup

    Definition 2

    { some code, part of Definition 2 }
    

    Third paragraph of definition 2.

    Compact style:

    Term 1 ~ Definition 1

    Term 2 ~ Definition 2a ~ Definition 2b

    Abbreviations (plugin)

    Abbreviations

    This is HTML abbreviation example.

    It converts “HTML”, but keep intact partial entries like “xxxHTMLyyy” and so on.

    *[HTML]: Hyper Text Markup Language

    Custom Container/Warning (plugin)

    Custom containers

    ::: warning here be dragons :::

    Autolink/Linkify

    www.google.com

    mail@google.com

    3. MultiMarkdown

    MultiMarkdown Github

    Abbreviations (or Acronyms)

    Markdown syntax:

    [>MMD] is an abbreviation.  So is [>(MD) Markdown].
    
    [>MMD]: MultiMarkdown
    

    HTML code:

    Citations

    Markdown syntax:

    This is a statement that should be attributed to
    its source[p. 23][#Doe:2006].
    
    And following is the description of the reference to be
    used in the bibliography.
    
    [#Doe:2006]: John Doe. *Some Big Fancy Book*.  Vanity Press, 2006.
    

    HTML code:

    CriticMarkup

    CriticMarkup is a way for authors and editors to track changes to documents in plain text. As with Markdown, small groups of distinctive characters allow you to highlight insertions, deletions, substitutions and comments, all without the overhead of heavy, proprietary office suites. https://criticmarkup.com/

    Definition List

    Markdown syntax:

    Apple
    :	Pomaceous fruit of plants of the genus Malus in 
    	the family Rosaceae.
    :	An american computer company.
    
    Orange
    :	The fruit of an evergreen tree of the genus Citrus.
    

    HTML code:

    Cross-References

    Markdown syntax:

    I added the ability to interpret [Some Text][] as a cross-link, if a header named “Some Text” exists.
    

    HTML code:

    Escaped newlines

    Markdown syntax:

    This is a line.\
    This is a new line
    

    HTML code:

    Fenced Code Blocks

    Markdown syntax:

    ```perl
    # Demonstrate Syntax Highlighting if you link to highlight.js #
    # https://softwaremaniacs.org/soft/highlight/en/
    print "Hello, world!\n";
    $a = 0;
    while ($a < 10) {
    print "$a...\n";
    $a++;
    }
    
    HTML code:
    ```html
    

    File Transclusion

    File transclusion is the ability to tell MultiMarkdown to insert the contents of another file inside the current file being processed. Markdown syntax:

    This is some text.
    
    {{some_other_file.txt}}
    
    Another paragraph
    

    HTML code:

    Footnotes

    Markdown syntax:

    Here is some text containing a footnote.[^somesamplefootnote]
    
    [^somesamplefootnote]: Here is the text of the footnote itself.
    
    [somelink]:https://somelink.com
    

    HTML code:

    Glossaries

    Markdown syntax:

    [?(glossary) The glossary collects information about important
    terms used in your document] is a glossary term.
    
    [?glossary] is also a glossary term.
    
    [?glossary]: The glossary collects information about important
    terms used in your document
    

    HTML code:

    Images Extension

    MultiMarkdown also adds a few additional features. If an image is the only thing in a paragraph, it is treated as a block level element

    Markdown syntax:

    This image (![Alt text](/path/to/img.jpg))
    is different than the following image:
    
    ![Alt text](/path/to/img.jpg)
    

    HTML code:

    <p>This image (<img src="/path/to/img.jpg" alt="Alt text" />)
    is different than the following image:</p>
    
    <figure>
    <img src="/path/to/img.jpg" alt="Alt text" />
    <figcaption>Alt text</figcaption>
    </figure>
    

    Markdown syntax:

    This is a formatted ![image][] and a [link][] with attributes.
    
    [image]: https://path.to/image "Image title" width=40px height=400px
    [link]:  https://path.to/link.html "Some Link" class=external
             style="border: solid black 1px;"
    
    Colored [link](https://example.net "Title" style="color:red")
    

    HTML code:

    Math

    Subscript Superscript

    Markdown syntax:

    y^(a+b)^
    x~y,z~
    

    HTML code:

    Metadata

    It is possible to include special metadata at the top of a MultiMarkdown document, such as title, author, etc. This information can then be used to control how MultiMarkdown processes the document, or can be used in certain output formats in special ways.

    Raw Source

    Code spans and code blocks can be flagged as representing raw source Markdown syntax:

    foo `*bar*`{=html}
    
    ```{=latex}
    *foo*
    
    HTML code:
    ```html
    

    Smart Typography

    MultiMarkdown converts:

    • Straight quotes (" and ‘) into “curly” quotes
    • Backticks-style quotes (``this’’) into “curly” quotes
    • Dashes (– and —) into en- and em- dashes
    • Three dots (…) become an ellipsis

    Table of Contents

    Markdown syntax:

    {{TOC}}
    {{TOC:2-3}}
    

    HTML code:

    Tables

    Markdown syntax:

    |             |          Grouping           ||
    First Header  | Second Header | Third Header |
     ------------ | :-----------: | -----------: |
    Content       |          *Long Cell*        ||
    Content       |   **Cell**    |         Cell |
    
    New section   |     More      |         Data |
    And more      | With an escaped '\|'         ||  
    [Prototype table]
    

    HTML code:

    4. PHP Markdown

    PHP Markdown Extra

    5. Markdig

    Markdig Github

    6. Pandoc

    Pandoc Manual Pandoc Markdown is a superset of GitHub flavoured Markdown and adds support for even more elements.

    7. Kramdown

    Kramdown

    8. Showdown

    Showdown

    9. Taiga

    Taiga


    1. Footnote can have markup

      and multiple paragraphs. ↩︎

    2. Footnote text. ↩︎ ↩︎

    9.9 - Markdown with Commonmark

    Markdown with Commonmark

    Source: Commonmark

    1.1. Heading

    1.1.1. ATX Heading

    Notes:

    • Always put a space between # and the heading name
    • Maximum to </h6> heading
    • A leaf block, it cannot contain other block

    Markdown syntax:

    ## h2 Heading
    ### h3 Heading
    #### h4 Heading
    ##### h5 Heading
    ###### h6 Heading
    

    HTML code:

    <h2>h2 Heading</h2>
    <h3>h3 Heading</h3>
    <h4>h4 Heading</h4>
    <h5>h5 Heading</h5>
    <h6>h6 Heading</h6>
    

    Markdown display:

    h2 Heading

    h3 Heading

    h4 Heading

    h5 Heading
    h6 Heading

    HTML display:

    h1 Heading

    h2 Heading

    h3 Heading

    h4 Heading

    h5 Heading
    h6 Heading

    1.1.2. Setex Heading

    Notes:

    • Maximum to </h2> heading
    • Underlining --- or == can be any length:
    • A blank line is needed between a paragraph and a following setext heading
    • A leaf block, it cannot contain other block

    Markdown syntax:

    h1 Heading
    ===================
    h2 Heading
    -------------------
    

    HTML code:

    <h1>h1 Heading</h1>
    <h2>h2 Heading</h2>
    

    Markdown display:

    h1 Heading

    h2 Heading

    HTML display:

    h1 Heading

    h2 Heading


    1.2. Paragraphs

    Notes:

    • To create paragraphs, use a blank line to separate one or more lines of text.
    • Don’t ident paragraphs with spaces or tabs
    • A leaf block, it cannot contain other block

    Markdown syntax:

    This is the first paragraph.
    
    This is the second paragraph
    

    HTML code:

    <p>This is the first paragraph.</p>
    <p>This is the second paragraph</p>
    

    Markdown display:

    This is the first paragraph.

    This is the second paragraph

    HTML display:

    This is the first paragraph.

    This is the second paragraph


    1.3 Line Break

    1.3.1 Hard Line Break

    Notes:

    • To create a line break, end a line of text with two or more spaces, and then type return
    • Or by ended it with \
    • Or by use the <br> HTML tag

    Markdown syntax:

    This is the first line, ended with two spaces.  
    And this is the second line.
    
    This is the first line, ended with `\`.\
    And this is the second line.
    
    This is the first line, ended with `<br>`.<br>
    And this is the second line.
    

    HTML code:

    <p>This is the first line, ended with two spaces.<br />
    And this is the second line.</p>
    <p>This is the first line, ended with <code>\</code>.<br />
    And this is the second line.</p>
    <p>This is the first line, ended with <code>&lt;br&gt;</code>.<br>
    And this is the second line.</p>
    

    Markdown display:

    This is the first line, ended with two spaces.
    And this is the second line.

    This is the first line, ended with \.
    And this is the second line.

    This is the first line, ended with <br>.
    And this is the second line.

    HTML display:

    This is the first line, ended with two spaces.
    And this is the second line.

    This is the first line, ended with \.
    And this is the second line.

    This is the first line, ended with <br>.
    And this is the second line.

    1.3.2 Soft Line Break

    Note:

    • A regular line break (not in a code span or HTML tag) that is not preceded by two or more spaces or a backslash is parsed as a softbreak. (A softbreak may be rendered in HTML either as a line ending or as a space.

    Markdown syntax:

    This is the first line, without two spaces in the end. 
    And this is the second line.
    

    HTML code:

    <p>This is the first line, without two spaces in the end.
    And this is the second line.</p>
    

    Markdown display:

    This is the first line, without two spaces in the end. And this is the second line.

    HTML display:

    This is the first line, without two spaces in the end. And this is the second line.


    1.4. Emphasis

    • Between * or _ and text should be not any whitespace.
    • *italics* or _italics_will make italics
    • **bold** or __bold__will make bold

    Markdown syntax:

    **This is bold text**  
    __This is bold text__  
    *This is italic text*  
    _This is italic text_  
    We have **bold***italic*  
    This text is ***really important***  
    This text is ___really important___  
    This text is __*really important*__  
    This text is **_really important_**
    

    HTML code:

    <p><strong>This is bold text</strong><br />
    <strong>This is bold text</strong><br />
    <em>This is italic text</em><br />
    <em>This is italic text</em><br />
    We have <strong>bold</strong><em>italic</em><br />
    This text is <em><strong>really important</strong></em><br />
    This text is <em><strong>really important</strong></em><br />
    This text is <strong><em>really important</em></strong><br />
    This text is <strong><em>really important</em></strong></p>
    

    Markdown display:

    This is bold text
    This is bold text
    This is italic text
    This is italic text
    We have bolditalic
    This text is really important
    This text is really important
    This text is really important
    This text is really important

    HTML display:

    This is bold text
    This is bold text
    This is italic text
    This is italic text
    We have bolditalic
    This text is really important
    This text is really important
    This text is really important
    This text is really important


    1.5. Blockquotes

    Notes:

    • A container block, it can contain other block
    • You could just add only one > at the first line (lazy-continuation);
    • Blockquotes can contain other blockquotes (nested)
    • Blockquotes can contain other blocks: multiple paragraphs, heading, code, etc.
    • Blockquotes can contain other Markdown formatted elements. But not all elements can be used.

    Markdown syntax:

    > Blockquotes can also be nested...
    >> ...by using `>` right next to each other...
    > > > ...or with spaces between arrows.
    

    HTML code:

    <blockquote>
    <p>Blockquotes can also be nested...</p>
    <blockquote>
    <p>...by using <code>&gt;</code> right next to each other...</p>
    <blockquote>
    <p>...or with spaces between arrows.</p>
    </blockquote>
    </blockquote>
    </blockquote>
    

    Markdown display:

    Blockquotes can also be nested…

    …by using > right next to each other…

    …or with spaces between arrows.

    HTML display:

    Blockquotes can also be nested...

    ...by using > right next to each other...

    ...or with spaces between arrows.

    Markdown syntax:

    > ### A Heading 3
    >
    > - List
    > - of `code`.
    >
    >>  *Everything* is going according to **plan** in [example][ex].
    
    [ex]: https://example.com/ "an example link"
    

    HTML code:

    <blockquote>
    <h3>A Heading 3</h3>
    <ul>
    <li>List</li>
    <li>of <code>code</code>.</li>
    </ul>
    <blockquote>
    <p><em>Everything</em> is going according to <strong>plan</strong> in <a href="https://example.com/" title="an example link">example</a>.</p>
    </blockquote>
    </blockquote>
    

    Markdown display:

    A Heading 3

    • List
    • of code.

    Everything is going according to plan in example.

    HTML display:

    A Heading 3

    • List
    • of code.

    Everything is going according to plan in example.


    1.6. List Items

    Notes:

    • Bullet (unordered) list is a list with -, +, or * character marker.
    • Ordered list is a list with maximum length 9 arabic digits marker (from 0 to 9), followed by either a . character or a ) character.

    1.6.1 List with Indentation

    • add at least one whitespace more for indented paragraph but not listed
    • add a space between line

    Markdown syntax:

    1. a paragraph
    
       indented paragraph (not listed)
    2. next paragraph
    
    * a paragraph
    
      indented paragraph (not listed)
    * next paragraph
    

    HTML code:

    <ol>
    <li>
    <p>a paragraph</p>
    <p>indented paragraph (not listed)</p>
    </li>
    <li>
    <p>next paragraph</p>
    </li>
    </ol>
    <ul>
    <li>
    <p>a paragraph</p>
    <p>indented paragraph (not listed)</p>
    </li>
    <li>
    <p>next paragraph</p>
    </li>
    </ul>
    

    Markdown display:

    1. a paragraph

      indented paragraph (not listed)

    2. next paragraph

    • a paragraph

      indented paragraph (not listed)

    • next paragraph

    HTML display:

    1. a paragraph

      indented paragraph (not listed)

    2. next paragraph

    • a paragraph

      indented paragraph (not listed)

    • next paragraph

    1.6.2 List with Other Blocks

    Markdown syntax:

    1. List block can contain 
    

    code block

    
    paragraph
    
    > quote block
    2.     code
    3. #### Heading4
    4. >> quote
    

    HTML code:

    <ol>
    <li>
    <p>List block can contain</p>
    <pre><code>code block
    </code></pre>
    <p>paragraph</p>
    <blockquote>
    <p>quote block</p>
    </blockquote>
    </li>
    <li>
    <pre><code>code
    </code></pre>
    </li>
    <li>
    <h4>Heading4</h4>
    </li>
    <li>
    <blockquote>
    <blockquote>
    <p>quote</p>
    </blockquote>
    </blockquote>
    </li>
    </ol>
    

    Markdown display:

    1. List block can contain

      code block
      

      paragraph

      quote block

    2. code
      
    3. Heading4

    4. quote

    HTML display:

    1. List block can contain

      code block
      

      paragraph

      quote block

    2. code
      
    3. Heading4

    4. quote

    1.6.3 Maximum Digit for Ordered List is 9

    Notes:

    • To prevent buffer overflow in some browser

    Markdown syntax:

    0. list  
    123456789. continue  
    1. list  
    1234567890. buffer overflow
    

    HTML code:

    <ol start="0">
    <li>list</li>
    <li>continue</li>
    <li>list<br />
    1234567890. buffer overflow</li>
    </ol>
    

    Markdown display:

    1. list
    2. continue
    3. list
      1234567890. buffer overflow

    HTML display:

    1. list
    2. continue
    3. list
      1234567890. buffer overflow

    1.6.4 Indentitation

    Notes:

    • A sublist must be indented the same number of spaces a paragraph would need to be in order to be included in the list item.
    • Add some space so the next mark of the next item will be positioned under the first character of previous list item.

    Markdown syntax:

    - foo
      - add two spaces
        - add two spaces
          - add two spaces
    

    HTML code:

    <ul>
    <li>foo
    <ul>
    <li>add two spaces
    <ul>
    <li>add two spaces
    <ul>
    <li>add two spaces</li>
    </ul>
    </li>
    </ul>
    </li>
    </ul>
    </li>
    </ul>
    

    Markdown display:

    • foo
      • add two spaces
        • add two spaces
          • add two spaces

    HTML display:

    • foo
      • add two spaces
        • add two spaces
          • add two spaces

    1.7. Lists

    Notes:

    • A list is a sequence of one or more list items of the same type.
    • The list items may be separated by any number of blank lines.
    • Two list items are of the same type if they begin with a list marker of the same type.
    • Two list markers are of the same type if (a) they are bullet list markers using the same character (-, +, or *) or (b) they are ordered list numbers with the same delimiter (either . or )).
    • A list is an ordered list if its constituent list items begin with ordered list markers, and a bullet list if its constituent list items begin with bullet list markers.
    • A list is loose if any of its constituent list items are separated by blank lines (loose list are wrapped in <p> tags), or if any of its constituent list items directly contain two block-level elements with a blank line between them. Otherwise a list is tight.

    1.7.1 Paragraph and Starting New List

    Notes:

    • No blank line is needed to separate a paragraph from a following list
    • Changing the bullet or ordered list delimiter starts a new list

    Markdown syntax:

    I have:
    1. foo
    10. bar
    5) baz
    11) buzz
    + ouch
    + what
    - where
    

    HTML code:

    <p>I have:</p>
    <ol>
    <li>foo</li>
    <li>bar</li>
    </ol>
    <ol start="5">
    <li>baz</li>
    <li>buzz</li>
    </ol>
    <ul>
    <li>ouch</li>
    <li>what</li>
    </ul>
    <ul>
    <li>where</li>
    </ul>
    

    Markdown display:

    I have:

    1. foo
    2. bar
    1. baz
    2. buzz
    • ouch
    • what
    • where

    HTML display:

    I have:

    1. foo
    2. bar
    1. baz
    2. buzz
    • ouch
    • what
    • where

    1.7.2. Blank Lines and Blank HTML Comment

    Notes:

    • There can be any number of blank lines between items
    • To separate consecutive lists of the same type, or to separate a list from an indented code block, insert a blank HTML comment

    Markdown syntax:

    -   foo
    
        notcode
    
    -   foo
    
    <!-- -->
    
        code
    

    HTML code:

    <ul>
    <li>
    <p>foo</p>
    <p>notcode</p>
    </li>
    <li>
    <p>foo</p>
    </li>
    </ul>
    <!-- -->
    <pre><code>code
    </code></pre>
    

    Markdown display:

    • foo

      notcode

    • foo

    code
    

    HTML display:

    • foo

      notcode

    • foo

    code
    

    1.7.3. Bullet (Unordered) Lists

    Markdown syntax:

    + To start a list, there should be an empty line above
    + Create a list by starting a line with `+`, `-`, or `*`
    - Changing the sign will add a linespace (make new list)
    + Add text under an item  
    This is a text under an item. Notice that there are two spaces at the end above.
    - Sub-lists are made by indenting 2 spaces (to ensure the next mark is fallen under the first character of previous list item):
      * Item 2a
      * Item 2b
    * Item 3
    
    To end a list, there should be one empty line above.
    

    Markdown display:

    • To start a list, there should be an empty line above
    • Create a list by starting a line with +, -, or *
    • Changing the sign will add a linespace (make new list)
    • Add text under an item
      This is a text under an item. Notice that there are two spaces at the end above.
    • Sub-lists are made by indenting 2 spaces (to ensure the next mark is fallen under the first character of previous list item):
      • Item 2a
      • Item 2b
    • Item 3

    To end a list, there should be one empty line above.

    1.7.4. Ordered Lists

    Notes:

    • The start number of an ordered list is determined by the list number of its initial list item. The numbers of subsequent list items are disregarded.

    Markdown syntax:

    1. Notice that the sequence number is irrelevant.
    1. Notice that there are two spaces at the end.  
    To make a new text under item.
    3. Sub-lists are made by indenting 4 spaces (to ensure the next mark is fallen under the first character of previous list item)
       1. Item 3a
       2. Item 3b
    8. Any number for item 4
    

    Markdown display:

    1. Notice that the sequence number is irrelevant.
    2. Notice that there are two spaces at the end.
      To make a new text under item.
    3. Sub-lists are made by indenting 4 spaces (to ensure the next mark is fallen under the first character of previous list item)
      1. Item 3a
      2. Item 3b
    4. Any number for item 4

    1.7.5. Ordered List Continuation

    Markdown syntax:

    57. will started with offset 57
    1. so it will be 58
    

    HTML code:

    <ol start="57">
    <li>will started with offset 57</li>
    <li>so it will be 58</li>
    </ol>
    

    Markdown display:

    1. will started with offset 57
    2. so it will be 58

    HTML display:

    1. will started with offset 57
    2. so it will be 58

    1.7.6. Elements in Lists

    Notes:

    • To add another element in a list while preserving the continuity of the list, indent the element four spaces or one tab

    Markdown syntax:

    * This is the first list item.
      > A blockquote would look great below the second list item.
    * Here's the second list item.
      I need to add another paragraph below the second list item.
    * And here's the third list item.
      ![Tux, the Linux mascot](https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Tux.png/220px-Tux.png)
    * and the last list item
    

    Markdown display:

    • This is the first list item.

      A blockquote would look great below the second list item.

    • Here’s the second list item. I need to add another paragraph below the second list item.
    • And here’s the third list item. Tux, the Linux mascot
    • and the last list item

    But, for text element in ordered list, add five spaces

    1. This is the first list item.

      A blockquote would look great below the second list item.

    2. Here’s the second list item. I need to add another paragraph below the second list item.
    3. And here’s the third list item. Tux, the Linux mascot
    4. and the last list item

    But, for code blocks in the lists, add eight spaces or two tabs.

    1. Open the file.

    2. Find the following code block on line 21:

      <html>
        <head>
          <title>Test</title>
        </head>
      
    3. Update the title to match the name of your website.


    1.8. Code and Code Blocks

    1.8.1. Inline Code (Code Spans)

    Notes:

    • It is inline content
    • It is written between two backticks \'

    Markdown syntax:

    This is a `code`.
    

    HTML code:

    <p>This is a <code>code</code>.</p>
    

    Markdown display:

    This is a code.

    HTML display:

    This is a code.

    1.8.2. Indented Code Blocks

    Notes:

    • Idented by add at least four spaces or one tab before
    • A leaf block, it cannot contain other block

    Markdown syntax:

        <html>
          <head>
            <title>Test</title>
          </head>
    

    HTML code:

    <pre><code>&lt;html&gt;
      &lt;head&gt;
        &lt;title&gt;Test&lt;/title&gt;
      &lt;/head&gt;</code></pre>
    

    Markdown display:

    <html>
      <head>
        <title>Test</title>
      </head>
    

    HTML display:

    <html>
      <head>
        <title>Test</title>
      </head>

    1.8.3. Fenced Code Blocks

    Notes:

    • A code fence is a sequence of at least three consecutive backtick characters (`) or tildes (~)
    • An info string can be provided after the opening code fence lang is optional to help to specify the language of the code.
    • A leaf block, it cannot contain other block

    Markdown syntax:

    ~~~
    This is a fenced code block.
    ~~~
    
    ```
    This is also a fenced code block.
    ```
    

    HTML code:

    <pre><code>This is a fenced code block.
    </code></pre>
    
    <pre><code>This is also a fenced code block.
    </code></pre>
    

    Markdown display:

    This is a fenced code block.
    
    This is also a fenced code block.
    

    HTML display:

    This is a fenced code block.
    
    This is also a fenced code block.
    

    Notes:

    • A link contains link text (the visible text), a link destination (the URI that is the link destination), and optionally a link title.

    Markdown syntax:

    This is [link](https://example.com/)
    
    This is [*link with title and `code`*](https://example.com/ "title text!")
    
    This is [https://example.com/]()
    

    HTML code:

    <p>This is <a href="https://example.com/">link</a></p>
    <p>This is <a href="https://example.com/" title="title text!"><em>link with title and <code>code</code></em></a></p>
    <p>This is <a href="">https://example.com/</a></p>
    

    Markdown display:

    This is link

    This is link with title and code

    This is https://example.com/

    HTML display:

    This is link

    This is link with title and code

    This is https://example.com/

    Notes:

    • A full reference link consists of a link text immediately followed by a link label that matches a link reference definition elsewhere in the document

    Markdown syntax:

    This is a [foo][ex]
    
    [ex]: https://example.com/ "an example link"
    

    HTML code:

    <p>This is a <a href="https://example.com/" title="an example link">foo</a></p>
    

    Markdown display:

    This is a foo

    HTML display:

    This is a foo

    Notes:

    • A shortcut reference link consists of a link label that matches a link reference definition elsewhere in the document and is not followed by [] or a link label.

    Markdown syntax:

    This is a [foo]
    
    [foo]: https://example.com/ "an example link"
    

    HTML code:

    <p>This is a <a href="https://example.com/" title="an example link">foo</a></p>
    

    Markdown display:

    This is a foo

    HTML display:

    This is a foo

    • Autolinks are absolute URIs and email addresses inside < and >. They are parsed as links, with the URL or email address as the link label.
    • Spaces are not allowed in autolink change it to %20

    Markdown syntax:

    <https://example.com/>
    

    HTML code:

    <p><a href="https://example.com/">https://example.com/</a></p>
    

    Markdown display:

    https://example.com/

    HTML display:

    https://example.com/


    1.10. Images

    Notes:

    • Syntax for images is like the syntax for links, with one difference. Instead of link text, we have an image description.
    • The rules for this are the same as for link text, except that (a) an image description starts with ![ rather than [, and (b) an image description may contain links.
    • It is not recommended to use image links in reference format. Some apps will not preview those images.
    ![Wikipedia](https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png "Wikipedia Logo")
    
    ![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png)
    
    <p><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png" alt="Wikipedia" title="Wikipedia Logo"></p>
    <p><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png" alt=""></p>
    

    1.10.2 Full References Format

    This is a ![Wikipedia][ex]
    
    [ex]: https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png "Wikipedia Logo"
    
    <p>This is a <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png" alt="Wikipedia" title="Wikipedia Logo" /></p>
    

    1.10.3 Shorcut References Format

    This is a ![foo]
    
    [foo]: https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png "Wikipedia Logo"
    
    <p>This is a <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png" alt="foo" title="Wikipedia Logo" /></p>
    

    1.11. Escaping Characters

    Note:

    • add a backslash \ in front of the ASCII character.
    • Any ASCII punctuation character may be backslash-escaped

    Markdown syntax:

    \!\"\#\$\%\&\'\(\)\*\+\,  
    \-\.\/\:\;\<\=\>\?\@\[\\\]  
    \^\_\`\{\|\}\~
    
    \*not emphasized*  
    \<br/> not a tag  
    \[not a link](/foo)  
    \`not code`  
    1\. not a list  
    \* not a list  
    \# not a heading  
    \[foo]: /url "not a reference"  
    \&ouml; not a character entity  
    

    HTML code:

    <p>!&quot;#$%&amp;'()*+,<br />
    -./:;&lt;=&gt;?@[\]<br />
    ^_`{|}~</p>
    <p>*not emphasized*<br />
    &lt;br/&gt; not a tag<br />
    [not a link](/foo)<br />
    `not code`<br />
    1. not a list<br />
    * not a list<br />
    # not a heading<br />
    [foo]: /url &quot;not a reference&quot;<br />
    &amp;ouml; not a character entity</p>
    

    Markdown display:

    !"#$%&'()*+,
    -./:;<=>?@[\]
    ^_`{|}~

    *not emphasized*
    <br/> not a tag
    [not a link](/foo)
    `not code`
    1. not a list
    * not a list
    # not a heading
    [foo]: /url “not a reference”
    &ouml; not a character entity

    HTML display:

    !"#$%&'()*+,
    -./:;<=>?@[\]
    ^_`{|}~

    *not emphasized*
    <br/> not a tag
    [not a link](/foo)
    `not code`
    1. not a list
    * not a list
    # not a heading
    [foo]: /url "not a reference"
    &ouml; not a character entity


    1.12. Raw HTML and HTML Blocks

    1.12.1. Raw HTML

    Notes:

    • Text between < and > that looks like an HTML tag is parsed as a raw HTML tag and will be rendered in HTML without escaping.

    Markdown syntax:

    <strong style="color:red;">bold red</strong>
    <!-- This is a comment, will not shown -->
    

    HTML code:

    <p><strong style="color:red;">bold red</strong></p>
    <!-- This is a comment, will not shown -->
    

    Markdown display:

    bold red

    HTML display:

    bold red

    1.12.2. HTML Blocks

    Notes:

    • An HTML block is a group of lines that is treated as raw HTML
    • With start and end conditions are:
      • start with <script, <pre, or <style and end with </script>, </pre>, or </style>
      • start with <!-- and end with -->
      • start with <? and end with ?>
      • start with <! with uppercase ASCII letter inside and end with >
      • start wtih <![CDATA[ and end with ]]>
      • start with string < or </ followed by specific strings and end with >, or the string />
    • A leaf block, it cannot contain other block

    Markdown syntax:

    <table><tr><td>
    <pre>
    
    **Hello**,
    _world_.
    
    </pre>
    </td></tr></table>
    

    HTML code:

    <table><tr><td>
    <pre>
    <p><strong>Hello</strong>,<br />
    <em>world</em>.</p>
    </pre>
    </td></tr></table>
    

    Markdown display:

    Hello, world.

    HTML display:

    Hello,
    world.


    1.13. Entities and Character

    Note:

    • Valid HTML entity references and numeric character references can be used in place of the corresponding Unicode character, except
    • Entity references consist of & + any of the valid HTML5 entity names + ;
    • Decimal numeric character references consist of &# + a string of 1–7 arabic digits + ;
    • Hexadecimal numeric character references consist of &# + either X or x + a string of 1-6 hexadecimal digits + ;

    Markdown syntax:

    Entity: &nbsp; &amp; &copy; &AElig; &Dcaron; &frac34; &HilbertSpace; &DifferentialD; &ClockwiseContourIntegral; &ngE;
    
    Decimal: &#35; &#1234; &#992; &#0;
    
    Hexadecimal: &#X22; &#XD06; &#xcab;
    

    HTML code:

    <p>Entity:   &amp; © Æ Ď ¾ ℋ ⅆ
    ∲ ≧̸</p>
    <p>Decimal: # Ӓ Ϡ �</p>
    <p>Hexadecimal: &quot; ആ ಫ</p>
    

    Markdown display:

    Entity:   & © Æ Ď ¾ ℋ ⅆ ∲ ≧̸

    Decimal: # Ӓ Ϡ �

    Hexadecimal: " ആ ಫ

    HTML display:

    Entity: & © Æ Ď ¾ ℋ ⅆ ∲ ≧̸

    Decimal: # Ӓ Ϡ �

    Hexadecimal: " ആ ಫ


    1.14. Horizontal Rules (Thematic Break)

    Notes:

    • Sequence of three or more -, _, or * characters
    • A leaf block, it cannot contain other block

    Markdown syntax:

    ---
    ___
    ****
    

    HTML code:

    <hr />
    <hr />
    <hr />
    

    Markdown display:




    HTML display:




    9.10 - Style Guide for Markdown Writing

    Style Guide for Markdown Writing

    About

    The [source code is available on GitHub]({{ site.cirosantilli-github }}).

    Considers original specification, CommonMark and other extensions.

    This project is community driven, and tries to reach consensus. Maintainers will only step in if the community cannot reach a decision. Discussion will take place [on the issue tracker]({{ site.cirosantilli-github }}/issues).

    A Chinese translation can be found at: https://einverne.github.io/markdown-style-guide/zh.html

    Notable users

    Are you notable? Send a pull request.

    If you are a notable user:

    • you can opt to be contacted before any major changes happen to the standard. Please inform this on the pull request that adds you to the notable list.

    • your vote on decisions will have much greater weight

    You are more likely to be notable if your project:

    • uses Markdown heavily. E.g.: Markdown engines, text editors, lots of markdown documentation, etc.

    • is popular. Any popularity measure will be taken into account, e.g. GitHub stars, Google Rank, etc. 2K+ GitHub stars makes for a very strong case.

    Options system

    Disputed points will be given multiple alternative style options.

    Each feature and option will receive a lowercase hyphen separated identifier.

    Each option will have a header of form:

    # Option key:value
    

    The first option header that appears in this text is the default value.

    E.g., if line wrapping had 3 alternatives, we could give it the key wrap, and for each alternative create a header:

    # Option wrap:space
    # Option wrap:no
    # Option wrap:sentence
    

    When referring to this guide, specify all non-default options in a comma separated fashion:

    Use the Markdown Style Guide wrap:space, code:indented
    

    Design goals

    • readable

    • portable: produces the same output, or good output, across multiple implementations.

      Portability tests are carried out with the Markdown Test Suite.

    • easy to write and modify later

    • diff friendly

    • easy to remember and implement on editors

    • provide rationale behind difficult choices.

    Readability vs writability

    Many design choices come down to:

    • do you want to write fast
    • or do you want people to read fast

    There may be use cases in which either is preferred:

    • for source code, readability becomes more important, as programmers are going to open the files on their editors often.

      Editor features like syntax highlighting and line wrapping can greatly reduce problems, but it is of course better if people don’t need to change their editors at all.

    • for forums like Stack Overflow, people will very rarely read the source, only the rendered output. So it might be better to optimize writing speed.

    The current style is inconsistent with either of those optimizations. For now, we propose two sets of options (profiles) which optimize either one: readability and writability profiles.

    Readability profile
    • wrap:space
    • list-marker:asterisk
    • code:indented
    Writability profile
    • wrap:no
    • list-marker:hyphen
    • code:fenced

    Typographic conventions

    When this style guide needs to represent multiple adjacent spaces, or spaces at the beginning or ending of code blocks, this will be mentioned explicitly in prose, and a dot will be used to make the space visible.

    E.g.:

    a, space, b:

    a b
    

    a, 2 spaces, b:

    a..b
    

    space, ab:

    .ab
    

    ab, space:

    ab.
    

    Alternatives

    google/styleguide by Google.

    carwin/markdown-styleguide. This guide was originally forked from it. It has been extended considerably, some decisions were modified, and no original lines remain.

    https://tirania.org/blog/archive/2014/Sep-30.html by Miguel de Icaza (GNOME, Mono). Short.

    https://github.com/slang800/markdown-styleguide

    Lint tools

    Asked on Stack Exchange: https://softwarerecs.stackexchange.com/questions/7138/markdown-lint-tool/

    General rules

    File

    File extension

    Use .md.

    Rationale: why not .mkd or .markdown?

    • shorter
    • more popular
    • does not have important conflicts

    File name

    Prefer to base the file name on the top-header level:

    • replace upper case letters with lower case
    • strip articles the, a, an from the start
    • replace punctuation and white space characters by hyphens
    • replace consecutive hyphens by a single hyphen
    • strip surrounding hyphens

    Good:

    file-name.md
    

    Bad, multiple consecutive hyphens:

    file--name.md
    

    Bad, surrounding hyphens:

    -file-name-.md
    

    Rationale: why not underscore or camel case? Hyphens are the most popular URL separator today, and markdown files are most often used in contexts where:

    • there are hyphen separated HTML files in the same project, possibly the same directory as the markdown files.
    • filenames will be used directly on URLs. E.g.: GitHub blobs.

    Whitespaces

    Newlines

    Don’t use 2 or more consecutive empty lines, that is, more than two consecutive newline characters, except where they must appear literally such as in code blocks.

    End files with a newline character, and don’t leave empty lines at the end of the file.

    Don’t use trailing whitespace unless it has a function such as indicating a line break.

    Good:

    - list
    - list
    
    # Header
    

    Good, code block:

    The markup language X requires you to use triple newlines to separate paragraphs:
    
        p1
    
    
        p2
    

    Bad:

    - list
    - list
    
    
    # Header
    

    Rationale: multiple empty lines occupy more vertical screen space, and do not significantly improve readability.

    Spaces after sentences

    Option space-sentence:1

    Use a single space after sentences.

    Bad, 2 spaces:

    First sentence.  Second sentence.
    

    Good:

    First sentence. Second sentence.
    

    Rationale: advantages over space-sentence:2:

    • easier to edit

    • usually not necessary if you use wrap:inner-sentence or wrap:sentence

    • space-sentence:2 gives a false sense of readability as it is ignored on the HTML output

    • more popular

    Advantages of space-sentence:2:

    • easier to see where sentences end
    Option space-sentence:2

    Bad, single space:

    First sentence. Second sentence.
    

    Good:

    First sentence.  Second sentence.
    

    Line wrapping

    Option wrap:inner-sentence

    Try to keep lines under 80 characters by breaking large paragraphs logically at points such as:

    • sentences: after a period ., question ? or exclamation mark !

    • clauses: after words like and, which, if ... then, commas ,

    • large phrases

    It is acceptable to have a line longer than 80 characters, but keep in mind that long sentences are less readable and look worse in tools such as git diff.

    Set your editor to wrap lines visually for Markdown in case a large line is present.

    Good:

    This is a very very very very very very very very very very very very very long not wrapped sentence.
    Second sentence of of the paragraph,
    third sentence of a paragraph
    and the fourth one.
    

    Rationale:

    • Diffs look better, since a change to a clause shows up as a single diff line.

    • Occasional visual wrapping does not significantly reduce the readability of Markdown, since the only language feature that can be indented to indicate hierarchy are nested lists.

    • At some point GitHub translated single newlines to line breaks in READMEs, and still does so on comments. Currently there is no major engine which does it, so it is safe to use newlines.

    • Some tools are not well adapted for long lines, e.g. Vim and git diff will not wrap lines by default. This can be configured however via git config --global core.pager 'less -r' for Git and set wrap for Vim.

    Downsides:

    • requires considerable writer effort, specially when modifying code.

    • Markdown does not look like the rendered output, in which there are no line breaks.

      Manual line breaking can make the Markdown more readable than the rendered output, which is bad because it gives a false sense of readability encouraging less readable long paragraphs.

    • Requires users of programming text editors like Vim, which are usually configured to not wrap, to toggle visual wrapping on. This can be automated, but EditorConfig gave it WONTFIX

    • Breaks some email systems, which always break a line on a single newline, and
      make your email
      look
      something like this.

    Option wrap:no

    Don’t wrap lines.

    Rationale: very easy to edit. But diffs on huge lines are hard to read.

    Option wrap:space

    Always wrap at the end of the first word that exceeds 80 characters.

    Rationale: source code becomes is very readable and text editors support it automatically. But diffs will look bad, and changing lines will be hard.

    Option wrap:sentence

    Rationale: similar advantages as wrap:inner-sentence, but easier for people to follow since the rule is simple: break after the period. But may produce long lines with hard to read diffs.

    Notable occurrence: ProGit 2.

    Code

    Dollar signs in shell code

    Don’t prefix shell code with dollar signs $ unless you will be showing the command output on the same code block.

    If the goal is to clarify what the language is, do it on the preceding paragraph.

    Rationale: harder to copy paste, noisier to read.

    Good:

    echo a
    echo a > file
    

    Bad:

    $ echo a
    $ echo a > file
    

    Good, shows output:

    $ echo a
    a
    $ echo a > file
    

    Good, language specified on preceding paragraph:

    Use the following Bash code:
    
    echo a
    echo a > file
    

    What to mark as code

    Use code blocks or inline code for:

    • executables. E.g.:

      `gcc` is the best compiler available.
      

      Differentiate between tool and the name of related projects. E.g.: gcc vs GCC.

    • file paths

    • version numbers

    • capitalized explanation of abbreviations:

      xinetd stands for `eXtended Internet daemon`
      
    • other terms related to computers that you don’t want to add to your dictionary

    Don’t mark as code:

    • names of projects. E.g.: GCC
    • names of libraries. E.g.: libc, glibc

    Spelling and grammar

    Use correct spelling and grammar.

    Prefer writing in English, and in particular American English. Rationale: American English speakers have the largest GDP, specially in the computing industry.

    Use markup like URL or code on words which you do not want to add to your dictionary so that spell checkers can ignore them automatically.

    Beware of case sensitive spelling errors, in particular for project, brand names or abbreviations:

    • Good: URL, LinkedIn, DoS attack
    • Bad: url, Linkedin, dos attack

    When in doubt, prefer the same abbreviation as used on Wikipedia.

    Avoid informal contractions:

    • Good: biography, repository, directory
    • Bad: bio, repo, dir

    Block elements

    Line breaks

    Avoid line breaks, as they don’t have generally accepted semantic meaning.

    In the rare case you absolutely need them, end a lines with exactly two spaces.

    Headers

    Option header:atx

    Bad:

    Header 1
    ========
    
    Header 2
    --------
    
    ### Header 3
    

    Good:

    # Header 1
    
    ## Header 2
    
    ### Header 3
    
    • Rationale: advantages over Setex:

      • easier to write because in Setex you have to match the number of characters in both lines for it to look good

      • works for all levels, while Setex only goes up to level 2

      • occupy only one screen line, while Setex occupies 2

      Advantages of Setex

      • more visible. Not very important if you have syntax highlighting.
    • Include a single space between the # and the text of the header.

      Bad:

      #Header
      
      #..Header
      

      Good:

      # Header
      
    • Don’t use the closing # character.

      Bad:

      # Header #
      

      Good:

      # Header
      

      Rationale: easier to maintain.

    • Don’t add spaces before the number sign #.

      Bad:

      .# Header
      

      Good:

      # Header
      

    Option header:setex

    Bad:

    # Header 1
    
    ## Header 2
    
    ### Header 3
    

    Good:

    Header 1
    ========
    
    Header 2
    --------
    
    ### Header 3
    

    • Don’t skip header levels.

      Bad:

      # Header 1
      
      ### Header 3
      

      Good:

      # Header 1
      
      ## Header 2
      
    • Surround headers by a single empty line except at the beginning of the file.

      Bad:

      Before.
      # Header 1
      
      ## Header 2
      After.
      

      Good:

      Before.
      
      # Header 1
      
      ## Header 2
      
      After.
      

      Bad:

      Before.
      Header 1
      ========
      
      ## Header 2
      -----------
      After.
      

      Good:

      Before.
      
      Header 1
      ========
      
      ## Header 2
      -----------
      
      After.
      
    • Avoid using two headers with the same content in the same markdown file.

      Rationale: many markdown engines generate IDs for headers based on the header content.

      Bad:

      # Dogs
      
      ## Anatomy
      
      # Cats
      
      ## Anatomy
      

      Good:

      # Dogs
      
      ## Anatomy of the dog
      
      # Cats
      
      ## Anatomy of the cat
      

    Top-level header

    If you target HTML output, write your documents so that it will have one and only one h1 element as the first thing in it that serves as the title of the document. This is the HTML top-level header.

    How this h1 is produced may vary depending on your exact technology stack: some stacks may generate it from metadata, for example Jekyll through the front-matter.

    Storing the top-level header as metadata has the advantage that it can be reused elsewhere more easily, e.g. on a global index, but the downside of lower portability.

    If your target stack does not generate the top-level header in another way, include it in your markdown file. E.g., GitHub.

    Top-level headers on index-like files such as README.md or index.md should serve as a title for their parent directory.

    Downsides of top-level headers:

    • take up one header level. This means that there are only 5 header levels left, and each new header will have one extra #, which looks worse and is harder to write.

    • duplicate filename information, which most often can already be seen on a URL. In most cases, the filename can be trivially converted to a top-level, e.g.: some-filename.md to Some filename.

    Advantages of top-level headers:

    • more readable than URL’s, especially for non-technically inclined users.

    Header case

    • Use an upper case letter as the first letter of a header, unless it is a word that always starts with lowercase letters, e.g. computer code.

      Good:

      # Header
      

      Good, computer code that always starts with lower case:

      # int main
      

      Bad:

      # header
      
    • The other letters have the same case they would have in the middle of a sentence.

      Good:

      # The header of the example
      

      Bad:

      # The Header of the Example
      

      As an exception, title case may be optionally used for the top-level header. Use this exception sparingly, in cases where typographical perfection is important, e.g.: README of a project.

      Rationale: why not Title case for all headers? It requires too much effort to decide if edge-case words should be upper case or not.

    End of a header

    Indicate the end of a header’s content that is not followed by a new header by an horizontal rule:

    # Header
    
    Content
    
    ---
    
    Outside header.
    

    Header length

    Keep headers as short as possible.

    Instead of using a huge sentence, make the header a summary to the huge sentence, and write the huge sentence as the first paragraph beneath the header.

    Rationale: if automatic IDs are generated by the implementation, it is:

    • easier to refer to the header later while editing
    • less likely that the IDs will break due to rephrasing
    • easier to distinguish between different IDs

    Good:

    # Huge header
    
    Huge header that talks about a complex subject.
    

    Bad:

    # Huge header that talks about a complex subject
    

    Punctuation at the end of headers

    Don’t add a trailing colon : to headers.

    Rationale: every header is an introduction to what is about to come next, which is exactly the function of the colon.

    Don’t add a trailing period . to headers.

    Rationale: every header consists of a single short sentence, so there is not need to add a sentence separator to it.

    Good:

    # How to do make omelet
    

    Bad:

    # How to do make omelet:
    

    Bad:

    # How to do make omelet.
    

    Header synonyms

    Headers serve as an index for users searching for keywords.

    For this reason, you may want to give multiple keyword possibilities for a given header.

    To do so, simply create a synonym header with empty content just before its main header.

    E.g.:

    # Purchase
    
    # Buy
    
    You give money and get something in return.
    

    Every empty header with the same level as the following one is assumed to be a synonym. This is not the case if levels are different:

    # Animals
    
    ## Dog
    

    Blockquotes

    • Follow the greater than marker > by one space.

      Good:

      > a
      

      Bad:

      >a
      

      Bad, 2 spaces:

      >  a
      
    • Use a greater than sign for every line, including wrapped.

      Bad:

      > Long line
      that was wrapped.
      

      Good:

      > Long line
      > that was wrapped.
      
    • Don’t use empty lines inside a single block quote.

      Good:

      > a
      >
      > b
      

      Bad:

      > a
      
      > b
      

    Lists

    Marker

    Unordered
    Option list-marker:hyphen

    Use the hyphen marker.

    Good:

    - a
    - b
    

    Bad:

    * a
    * b
    
    + a
    + b
    

    Rationale:

    • asterisk * can be confused with bold or italic markers.
    • plus sign + is not popular

    Downsides:

    • * and + are more visible. * is more visible
    Option list-marker:asterisk

    Use *.

    Option list-marker:plus

    Use +.

    Ordered

    Prefer lists only with the marker 1. for ordered lists, unless you intend to refer to items by their number in the same markdown file or externally.

    Prefer unordered lists unless you intent to refer to items by their number.

    Best, we will never refer to the items of this list by their number:

    - a
    - c
    - b
    

    Better, only 1.:

    1. a
    1. c
    1. b
    

    Worse, we will never refer to the items of this list by their number:

    1. a
    2. c
    3. b
    

    Acceptable, refer to them in the text:

    The ouput of the `ls` command is of the form:
    
        drwx------  2 ciro ciro        4096 Jul  5  2013 dir0
        drwx------  4 ciro ciro        4096 Apr 27 08:00 dir1
        1           2
    
    Where:
    
    1. permissions
    2. number of files directory contains
    

    Acceptable, meant to be referred by number from outside of the markdown file:

    Terms of use.
    
    1. I will not do anything illegal.
    2. I will not do anything that can harm the website.
    

    Rationale:

    • If you want to change a list item in the middle of the list, you don’t have to modify all items that follow it.

      Diffs will show only the significant line which was modified.

    • Content stays aligned without extra effort if the numbers reach 2 digits. E.g.: the following is not aligned:

      9. a
      10. b
      
    • References break when a new list item is added. To reduce this problem:

      • keep references close to the list so authors are less likely to forget to update them
      • when referring from an external document, always refer to an specific version of the markdown file

    Spaces before list marker

    Do not add any space before list markers, except to obey the current level of indentation.

    Bad:

      - a
      - b
    

    Good:

    - a
    - b
    

    Good, c is just following the indentation of b:

    -   a
    -   b
        - c
    

    Bad, c modified the indentation of b:

    -   a
    -   b
          - c
    

    Rationale:

    • easier to type
    • easier to reason about levels

    Spaces after list marker

    Option list-space:mixed
    • If the content of every item of the list is fits in a single paragraph, use 1 space.

    • Otherwise, for every item of the list:

      • use 3 spaces for unordered lists.

      • use 2 spaces for ordered lists. One less than for unordered because the marker is 2 chars long.

    Bad, every item is one line long:

    -   a
    -   b
    

    Good:

    - a
    - b
    

    Bad, every item is one line long:

    1.  a
    1.  b
    

    Good:

    1. a
    1. b
    

    Bad: item is longer than one line:

    - item that
      is wrapped
    
    - item 2
    

    Good:

    -   item that
        is wrapped
    
    -   item 2
    

    Bad: item is longer than one line:

    - a
    
      par
    
    - b
    

    Good:

    -   a
    
        par
    
    -   b
    
    Option list-space:1

    Always add one space to the list marker.

    Bad, 3 spaces:

    -   a
    
        b
    
    -   c
    

    Good:

    - a
    
      b
    
    - c
    

    Bad, 2 spaces:

    1.  a
    
        b
    
    1.  c
    

    Good:

    1. a
    
       b
    
    1. c
    
    Rationale: list-space mixed vs 1

    The advantages of list-space:1 are that

    • it removes the decision of how many spaces you should put after the list marker: it is always one.

      We could choose to always have list content indented as:

      -   a
      -   b
      

      but that is ugly.

    • You never need to change the indentation of the entire list because of a new item.

      This may happen in list-space:mixed if you have:

      - a
      - b
      

      and will add a multi-line item:

      -   a
      
      -   b
      
      -   c
      
          d
      

      Note how a and b were changed because of c.

    The disadvantages of list-space:1

    • creates three indentation levels for the language:

      • 4 for indented code blocks
      • 3 for ordered lists
      • 2 for unordered lists

      That means that you cannot easily configure your editor indent level to deal with all cases when you want to change the indentation level of multiple list item lines.

    • Is not implemented consistently across editors.

      In particular what should happen at:

      - a
      
              code
      

      This (2 spaces):

      <pre><code>  code
      

      Or no spaces:

      <pre><code>code
      

      Likely the original markdown said no spaces:

      To put a code block within a list item, the code block needs to be indented twice — 8 spaces or two tabs

      But many implementations did otherwise.

      CommonMark adds the 2 spaces.

    Indentation of content inside lists

    The indentation level of what comes inside list and of further list items must be the same as the first list item.

    Bad:

    -   item that
      is wrapped
    
    -   item 2
    

    Good:

    -   item that
        is wrapped
    
    -   item 2
    

    Bad:

    -   item 1
    
      Content 1
    
    -   item 2
    
          Content 2
    

    Good (if it matches your spaces after list marker style):

    -   item 1
    
        Content 1
    
    -   item 2
    
        Content 2
    

    Bad:

    - item 1
    
        Content 1
    
    - item 2
    
        Content 2
    

    Good (if it matches your spaces after list marker style):

    - item 1
    
      Content 1
    
    - item 2
    
      Content 2
    

    Avoid starting a list item directly with indented code blocks because that is not consistently implemented. CommonMark states that a single space is assumed in that case:

    -     code
    
      a
    

    Empty lines inside lists

    If every item of a list is a single line long, don’t add empty lines between items. Otherwise, add empty lines between every item.

    Bad, single lines:

    - item 1
    
    - item 2
    
    - item 3
    

    Good:

    - item 1
    - item 2
    - item 3
    

    Bad, multiple lines:

    -   item that
        is wrapped
    -   item 2
    -   item 3
    

    Good:

    -   item that
        is wrapped
    
    -   item 2
    
    -   item 3
    

    Bad, multiple lines:

    -   item 1
    
        Paragraph.
    
    -   item 2
    -   item 3
    

    Good:

    -   item 1.
    
        Paragraph.
    
    -   item 2
    
    -   item 3
    

    Bad, multiple lines:

    -   item 1
    
        - item 11
        - item 12
        - item 13
    
    -   item 2
    -   item 3
    

    Good:

    -   item 1
    
        - item 11
        - item 12
        - item 13
    
    -   item 2
    
    -   item 3
    

    Rationale: it is hard to tell where multi-line list items start and end without empty lines.

    Empty lines around lists

    Surround lists by one empty line.

    Bad:

    Before.
    - item
    - item
    After.
    

    Good:

    Before.
    
    - list
    - list
    
    After.
    

    Case of first letter of list item

    Each list item has the same case as it would have if it were concatenated with the sentence that comes before the list.

    Good:

    I want to eat:
    
    - apples
    - bananas
    - grapes
    

    because it could be replaced with:

    I want to eat apples
    I want to eat babanas
    I want to eat grapes
    

    Good:

    To ride a bike you have to:
    
    - get on top of the bike. This step is easy.
    - put your foot on the pedal.
    - push the pedal. This is the most fun part.
    

    because it could be replaced with:

    To ride a bike you have to get on top of the bike. This step is easy.
    To ride a bike you have to put your foot on the pedal.
    To ride a bike you have to push the pedal. This is the most fun part.
    

    Good:

    # How to ride a bike
    
    - Get on top of the bike.
    - Put your feet on the pedal.
    - Make the pedal turn.
    

    because it could be replaced with:

    # How to ride a bike
    
    Get on top of the bike.
    Put your feet on the pedal.
    Push the the pedal.
    

    Punctuation at the end of list items

    Punctuate at the end of list items if either it:

    • contains multiple sentences or paragraphs
    • starts with an upper case letter

    Otherwise, omit the punctuation if it would be a period.

    Bad, single sentences:

    - apple.
    - banana.
    - orange.
    

    Good:

    - apple
    - banana
    - orange
    

    Idem:

    - go to the market
    - then buy some fruit
    - finally eat the fruit
    

    Good, not terminated by period but by other punctuation.

    - go to the marked
    - then buy fruit?
    - of course!
    

    Bad, multiple sentences:

    - go to the market
    - then buy some fruit. Bad for wallet
    - finally eat the fruit. Good for tummy
    

    Good:

    - go to the market
    - then buy some fruit. Bad for wallet.
    - finally eat the fruit. Good for tummy.
    

    Note: nothing forbids one list item from ending in period while another in the same list does not.

    Bad, multiple paragraphs:

    -   go to the market
    
    -   then buy some fruit
    
        Bad for wallet
    
    -   finally eat the fruit
    
        Good for tummy
    

    Good:

    -   go to the market
    
    -   then buy some fruit.
    
        Bad for wallet.
    
    -   finally eat the fruit.
    
        Good for tummy.
    

    Bad, starts with upper case:

    - Go to the market
    - Then buy some fruit
    - Finally eat the fruit
    

    Good:

    - Go to the market.
    - Then buy some fruit.
    - Finally eat the fruit.
    

    Definition lists

    Avoid the definition list extension since it is not present in many implementations nor in CommonMark.

    Instead, use either:

    • formated lists:

      • format the item be defined as either of bold, link or code
      • separate the item from the definition with a colon and a space :.
      • don’t align definitions as it is harder to maintain and does not show on the HTML output

      Good:

      - **apple**: red fruit
      - **dog**: noisy animal
      

      Good:

      -   **apple**: red fruit.
      
          Very tasty.
      
      -   **dog**: noisy animal.
      
          Not tasty.
      

      Good:

      - [apple](https://apple.com): red fruit
      - [dot](https://dog.com): red fruit
      

      Good:

      - `-f`: force
      - `-r`: recursive
      

      Bad, no colon:

      - **apple** red fruit
      - **dog** noisy animal
      

      Bad, space between term and colon:

      - **apple** : red fruit
      - **dog** : noisy animal
      

      Bad, definitions aligned:

      - **apple**: red fruit
      - **dog**:   noisy animal
      
    • headers.

      Good:

      # Apple
      
      Red fruit
      
      # Dog
      
      Noisy animal
      

    Code blocks

    Option code:fenced

    Only use fenced code blocks.

    Comparison to indented code blocks:

    • disadvantage: not part of the original markdown, thus less portable, but added to CommonMark.
    • advantage: many implementations, including GitHub’s, allow to specify the code language with it

    Don’t indent fenced code blocks.

    Always specify the language of the code is applicable.

    Good:

    ```ruby
    a = 1
    ```
    

    Bad:

    ```
    a = 1
    ```
    

    Option code:indented

    Only use indented code blocks.

    Indent indented code blocks with 4 spaces.


    Code blocks must be surrounded by one empty line.

    Prefer to end the phrase before a code block with a colon :.

    Good:

    Use this code to blow up your PC:
    
        sudo rm -rf /
    

    Bad, no colon

    Use this code to blow up your PC
    
        sudo rm -rf /
    

    Horizontal rules

    Don’t use horizontal rules except to indicate the End of a header.

    Rationale:

    • headers are better section separators since they say what a section is about.

    • horizontal rules don’t have a generally accepted semantic meaning. This guide gives them one.

    Use 3 hyphens without spaces:

    ---
    

    Tables

    Extension.

    • Surround tables by one empty line.

    • Don’t indent tables.

    • Surround every line of the table by pipes.

    • Align all border pipes vertically.

    • Separate header from body by hyphens except at the aligned pipes |.

    • Pipes | must be surrounded by a space, except for outer pipes which only get one space internally, and pipes of the hyphen separator line.

    • Column width is determined by the longest cell in the column.

    Good table:

    Before.
    
    | h    | Long header |
    |------|-------------|
    | abc  | def         |
    | abc2 | def2        |
    
    After.
    

    Rationale:

    • unaligned tables tables are easier to write, but aligned tables are more readable, and people read code much more often than they edit it.

    • preceding pipes make it easier to determine where a table starts and ends. Trailing pipes make it look better because of symmetry.

    • there exist tools which help keeping the table aligned. For example, Vim has the Tabular plugin which allows to align the entire table with :Tabular /|.

    • why no spaces around pipes of the hyphen separator line, i.e.: |---| instead of | - |? No spaces looks better, works on GitHub. Downside: harder to implement automatic alignment in editors, as it requires a special rule for the separator line.

    Separate consecutive elements

    Separate consecutive:

    • lists
    • indented code blocks
    • blockquotes
    • list followed by external code block

    with an empty HTML comment <!-- -->.

    - list 1
    - list 1
    
    <!-- -->
    
    - list 2
    - list 2
    
        code 1
        code 1
    
    <!-- -->
    
        code 2
        code 2
    
    > blockquote 1
    > blockquote 1
    
    <!-- -->
    
    > blockquote 2
    > blockquote 2
    
    - list
    - list
    
    <!-- -->
    
        code outside list
        code outside list
    

    Span elements

    Don’t use inner spaces.

    Good:

    **bold**
    `code`
    [link](https://a.com)
    [text][name]
    

    Bad:

    ** bold **
    ` code `
    [ link ]( https://a.com )
    [text] [name]
    

    For inline code in which the space is crucial:

    • explain in writing that the spaces must be there
    • add something after the space if possible

    Good:

    Use the hyphen marker followed by one space `- a`  for unordered lists.
    

    Rationale: most browsers don’t render the surrounding spaces nor add them to the clipboard on copy.

    Links:

    • use the trailing [] on implicit links.

      Good:

      [a][]
      

      Bad:

      [a]
      

      Rationale: while omitting [] works on most major implementations, it is not specified in the documentation not implemented in the original markdown.

    Definitions:

    • must be the last thing on the file
    • must be sorted alphabetically by the ID
    • don’t enclose URLs by angle brackets
    • align URLs and link names as in a table
    • link IDs use only lowercase letters. Rationale: they are case insensitive,
    • lowercase only is easier to write, and the readability gain of mixed case is not very big.

    Good:

    [id2]:     https://long-url.com
    [long id]: https://a.com        "name 1"
    

    Bad, not ordered by id:

    [b]: https://a.com
    [a]: https://b.com
    

    Bad, not aligned:

    [id]: https://id.com
    [long id]: https://long-id.com
    

    Single or double quote titles

    Use double quotes, not single quotes.

    Rationale: single quotes do not work in all major implementations, double quotes do.

    Emphasis

    Bold

    Use double asterisk format: **bold**.

    Rationale: more common and readable than the double underline __bold__ form.

    Italic

    Use single asterisk format: *italic*.

    Rationale:

    • more common and readable than the underscore form
    • consistent with the bold format, which also uses asterisks

    Uppercase for emphasis

    Don’t use uppercase for emphasis: use emphasis constructs like bold or italic instead.

    Rationale: CSS has text-transform:uppercase which can easily achieve the same effect consistently across the entire website if you really want uppercase letters.

    Emphasis vs headers

    Don’t use emphasis elements (bold or italics) to introduce a multi line named section: use headers instead.

    Rationale: that is exactly the semantic meaning of headers, and not necessarily that of emphasis elements. As a consequence, many implementations add useful behaviors to headers and not to emphasis elements, such as automatic id to make it easier to refer to the header later on.

    Good:

    # How to make omelets
    
    Break an egg.
    
    ...
    
    # How to bake bread
    
    Open the flour sack.
    
    ...
    

    Bad:

    **How to make omelets:**
    
    Break an egg.
    
    ...
    
    **How to bake bread:**
    
    Open the flour sack.
    
    ...
    
    • Don’t use automatic links without angle brackets.

      Good:

      <https://a.com>
      

      Bad:

      https://a.com
      

      Rationale: it is an extension, <> is easy to type and saner.

    • If you want literal links which are not autolinks, enclose them in code blocks. E.g.:

      `https://not-a-link.com`
      

      Rationale: many tools automatically interpret any word starting with https as a link.

    All automatic links must start with the string https.

    In particular, don’t use relative automatic links. Use bracket links instead for that purpose.

    Good:

    [file.html](file.html)
    

    Bad:

    <file.html>
    

    Good:

    <https://github.com>
    

    Bad:

    <github.com>
    

    Rationale: it is hard to differentiate automatic links from HTML tags. What if you want a relative link to a file called script?

    Don’t use email autolinks <address@example.com>. Use raw HTML instead.

    Rationale: the original markdown specification states it:

    “performs a bit of randomized decimal and hex entity-encoding to help obscure your address from address-harvesting spambots”.

    Therefore, the output is random, ugly, and as the spec itself mentions:

    but an address published in this way will probably eventually start receiving spam

    9.11 - Markdown Cheatsheet

    Markdown Cheatsheet

    Overview

    This Markdown cheat sheet provides a quick overview of all the Markdown syntax elements. It can’t cover every edge case, so if you need more information about any of these elements, refer to our reference guides for basic syntax and extended syntax.

    Basic Syntax

    These are the elements outlined in John Gruber’s original design document. All Markdown applications support these elements.

    Element Markdown Syntax
    Heading # H1
    ## H2
    ### H3
    Bold **bold text**
    Italic *italicized text*
    Blockquote > blockquote
    Ordered List 1. First item
    2. Second item
    3. Third item
    Unordered List - First item
    - Second item
    - Third item
    Code `code`
    Horizontal Rule ---
    Link [title](https://www.example.com)
    Image ![alt text](image.jpg)

    Extended Syntax

    These elements extend the basic syntax by adding additional features. Not all Markdown applications support these elements.

    Element Markdown Syntax
    Table | Syntax | Description |
    | ----------- | ----------- |
    | Header | Title |
    | Paragraph | Text |
    Fenced Code Block ```
    {
      "firstName": "John",
      "lastName": "Smith",
      "age": 25
    }
    ```
    Footnote Here's a sentence with a footnote. [^1]

        [^1]: This is the footnote.
      </code></td>
    </tr>
    <tr>
      <td><a href="/extended-syntax/#heading-ids">Heading ID</a></td>
      <td><code>### My Great Heading {#custom-id}</code></td>
    </tr>
    <tr>
      <td><a href="/extended-syntax/#definition-lists">Definition List</a></td>
      <td><code>
        term<br>
        : definition
      </code></td>
    </tr>
    <tr>
      <td><a href="/extended-syntax/#strikethrough">Strikethrough</a></td>
      <td><code>~~The world is flat.~~</code></td>
    </tr>
    <tr>
      <td><a href="/extended-syntax/#task-lists">Task List</a></td>
      <td><code>
        - [x] Write the press release<br>
        - [ ] Update the website<br>
        - [ ] Contact the media
      </code></td>
    </tr>
    

    Downloads

    You can download this cheat sheet as a Markdown file for use in your Markdown application.

    9.12 - Getting Started about Markdown

    Getting Started about Markdown

    Markdown is a lightweight markup language that you can use to add formatting elements to plaintext text documents. Created by John Gruber in 2004, Markdown is now one of the world’s most popular markup languages.

    What’s Markdown?

    Using Markdown is different than using a WYSIWYG editor. In an application like Microsoft Word, you click buttons to format words and phrases, and the changes are visible immediately. Markdown isn’t like that. When you create a Markdown-formatted file, you add Markdown syntax to the text to indicate which words and phrases should look different.

    For instance, to denote a heading, you add a number sign before it (e.g., # Heading One). Or to make a phrase bold, you add two asterisks before and after it (e.g., **this text is bold**). It may take a while to get used to seeing Markdown syntax in your text, especially if you’re accustomed to WYSIWYG applications. The screenshot below shows a Markdown file displayed in the Atom text editor.

    Markdown file in the Atom text editor

    You can add Markdown formatting elements to a plaintext file using a text editor application. Or you can use one of the many Markdown applications for macOS, Windows, Linux, iOS, and Android operating systems. There are also several web-based applications specifically designed for writing in Markdown.

    Depending on the application you use, you may not be able to preview the formatted document in real time. But that’s okay. According to Gruber, Markdown syntax is designed to be readable and unobtrusive, so the text in Markdown files can be read even if it isn’t rendered.

    The overriding design goal for Markdown’s formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.

    Why Use Markdown?

    You might be wondering why people use Markdown instead of a WYSIWYG editor. Why write with Markdown when you can press buttons in an interface to format your text? As it turns out, there are a couple different reasons why people use Markdown instead of WYSIWYG editors.

    • Markdown can be used for everything. People use it to create websites, documents, notes, books, presentations, email messages, and technical documentation.

    • Markdown is portable. Files containing Markdown-formatted text can be opened using virtually any application. If you decide you don’t like the Markdown application you’re currently using, you can import your Markdown files into another Markdown application. That’s in stark contrast to word processing applications like Microsoft Word that lock your content into a proprietary file format.

    • Markdown is platform independent. You can create Markdown-formatted text on any device running any operating system.

    • Markdown is future proof. Even if the application you’re using stops working at some point in the future, you’ll still be able to read your Markdown-formatted text using a text editing application. This is an important consideration when it comes to books, university theses, and other milestone documents that need to be preserved indefinitely.

    • Markdown is everywhere. Websites like Reddit and GitHub support Markdown, and lots of desktop and web-based applications support it.

    Kicking the Tires

    The best way to get started with Markdown is to use it. That’s easier than ever before thanks to a variety of free tools.

    You don’t even need to download anything. There are several online Markdown editors that you can use to try writing in Markdown. Dillinger is one of the best online Markdown editors. Just open the site and start typing in the left pane. A preview of the rendered document appears in the right pane.

    Dillinger Markdown editor

    You’ll probably want to keep the Dillinger website open as you read through this guide. That way you can try the syntax as you learn about it. After you’ve become familiar with Markdown, you may want to use a Markdown application that can be installed on your desktop computer or mobile device.

    How Does it Work?

    Dillinger makes writing in Markdown easy because it hides the stuff happening behind the scenes, but it’s worth exploring how the process works in general.

    When you write in Markdown, the text is stored in a plaintext file that has an .md or .markdown extension. But then what? How is your Markdown-formatted file converted into HTML or a print-ready document?

    The short answer is that you need a Markdown application capable of processing the Markdown file. There are lots of applications available — everything from simple scripts to desktop applications that look like Microsoft Word. Despite their visual differences, all of the applications do the same thing. Like Dillinger, they all convert Markdown-formatted text to HTML so it can be displayed in web browsers.

    Markdown applications use something called a Markdown processor (also commonly referred to as a “parser” or an “implementation”) to take the Markdown-formatted text and output it to HTML format. At that point, your document can be viewed in a web browser or combined with a style sheet and printed. You can see a visual representation of this process below.

    Note: The Markdown application and processor are two separate components. For the sake of brevity, I've combined them into one element ("Markdown App") in the figure below.
    The Markdown Process

    To summarize, this is a four-part process:

    1. Create a Markdown file using a text editor or a dedicated Markdown application. The file should have an .md or .markdown extension.
    2. Open the Markdown file in a Markdown application.
    3. Use the Markdown application to convert the Markdown file to an HTML document.
    4. View the HTML file in a web browser or use the Markdown application to convert it to another file format, like PDF.

    From your perspective, the process will vary somewhat depending on the application you use. For example, Dillinger essentially combines steps 1-3 into a single, seamless interface — all you have to do is type in the left pane and the rendered output magically appears in the right pane. But if you use other tools, like a text editor with a static website generator, you’ll find that the process is much more visible.

    What’s Markdown Good For?

    Markdown is a fast and easy way to take notes, create content for a website, and produce print-ready documents.

    It doesn’t take long to learn the Markdown syntax, and once you know how to use it, you can write using Markdown just about everywhere. Most people use Markdown to create content for the web, but Markdown is good for formatting everything from email messages to grocery lists.

    Here are some examples of what you can do with Markdown.

    Websites

    Markdown was designed for the web, so it should come as no surprise that there are plenty of applications specifically designed for creating website content.

    If you’re looking for the simplest possible way to create a website with Markdown files, check out blot.im and smallvictori.es. After you sign up for one of these services, they create a Dropbox folder on your computer. Just drag and drop your Markdown files into the folder and — poof! — they’re on your website. It couldn’t be easier.

    If you’re familiar with HTML, CSS, and version control, check out Jekyll, a popular static site generator that takes Markdown files and builds an HTML website. One advantage to this approach is that GitHub Pages provides free hosting for Jekyll-generated websites. If Jekyll isn’t your cup of tea, just pick one of the many other static site generators available.

    Note: I used Jekyll to create the Markdown Guide. You can view the source code on GitHub.

    If you’d like to use a content management system (CMS) to power your website, take a look at Ghost. It’s a free and open-source blogging platform with a nice Markdown editor. If you’re a WordPress user, you’ll be happy to know there’s Markdown support for websites hosted on WordPress.com. Self-hosted WordPress sites can use the Jetpack plugin.

    Documents

    Markdown doesn’t have all the bells and whistles of word processors like Microsoft Word, but it’s good enough for creating basic documents like assignments and letters. You can use a Markdown document authoring application to create and export Markdown-formatted documents to PDF or HTML file format. The PDF part is key, because once you have a PDF document, you can do anything with it — print it, email it, or upload it to a website.

    Here are some Markdown document authoring applications I recommend:

    Tip: iA Writer provides templates for previewing, printing, and exporting Markdown-formatted documents. For example, the "Academic – MLA Style" template indents paragraphs and adds double sentence spacing.

    Notes

    In nearly every way, Markdown is the ideal syntax for taking notes. Sadly, Evernote and OneNote, two of the most popular note applications, don’t currently support Markdown. The good news is that several other note applications do support Markdown:

    • Simplenote is a free, barebones note-taking application available for every platform.
    • Notable is a note-taking application that runs on a variety of platforms.
    • Bear is an Evernote-like application available for Mac and iOS devices. It doesn’t exclusively use Markdown by default, but you can enable Markdown compatibility mode.
    • Boostnote bills itself as an “open source note-taking app designed for programmers.”

    If you can’t part with Evernote, check out Marxico, a subscription-based Markdown editor for Evernote, or use Markdown Here with the Evernote website.

    Books

    Looking to self-publish a novel? Try Leanpub, a service that takes your Markdown-formatted files and turns them into an electronic book. Leanpub outputs your book in PDF, EPUB, and MOBI file format. If you’d like to create paperback copies of your book, you can upload the PDF file to another service such as Kindle Direct Publishing. To learn more about writing and self-publishing a book using Markdown, read this blog post.

    Presentations

    Believe it or not, you can generate presentations from Markdown-formatted files. Creating presentations in Markdown takes a little getting used to, but once you get the hang of it, it’s a lot faster and easier than using an application like PowerPoint or Keynote. Remark (GitHub project) is a popular browser-based Markdown slideshow tool, as is Cleaver (GitHub project). If you use a Mac and would prefer to use an application, check out Deckset or Marked.

    Email

    If you send a lot of email and you’re tired of the formatting controls available on most email provider websites, you’ll be happy to learn there’s an easy way to write email messages using Markdown. Markdown Here is a free and open-source browser extension that converts Markdown-formatted text into HTML that’s ready to send.

    Documentation

    Markdown is a natural fit for technical documentation. Companies like GitHub are increasingly switching to Markdown for their documentation — check out their blog post about how they migrated their Markdown-formatted documentation to Jekyll. If you write documentation for a product or service, take a look at these handy tools:

    • Read the Docs can generate a documentation website from your open source Markdown files. Just connect your GitHub repository to their service and push — Read the Docs does the rest. They also have a service for commercial entities.
    • MkDocs is a fast and simple static site generator that’s geared towards building project documentation. Documentation source files are written in Markdown and configured with a single YAML configuration file. MkDocs has several built in themes, including a port of the Read the Docs documentation theme for use with MkDocs. One of the newest themes is MkDocs Material.
    • Docusaurus is a static site generator designed exclusively for creating documentation websites. It supports translations, search, and versioning.
    • VuePress is a static site generator powered by Vue and optimized for writing technical documentation.
    • Jekyll was mentioned earlier in the section on websites, but it’s also a good option for generating a documentation website from Markdown files. If you go this route, be sure to check out the Jekyll documentation theme.

    Flavors of Markdown

    One of the most confusing aspects of using Markdown is that practically every Markdown application implements a slightly different version of Markdown. These variants of Markdown are commonly referred to as flavors. It’s your job to master whatever flavor of Markdown your application has implemented.

    To wrap your head around the concept of Markdown flavors, it might help to think of them as language dialects. People in Ciudad Juárez speak Spanish just like the people in Barcelona, but there are substantial differences between the dialects used in both cities. The same is true for people using different Markdown applications. Using Dillinger to write with Markdown is a vastly different experience than using Ulysses.

    Practically speaking, this means you never know exactly what a company means when they say they support “Markdown.” Are they talking about only the basic syntax elements, or all of the basic and extended syntax elements combined, or some arbitrary combination of syntax elements? You won’t know until you read the documentation or start using the application.

    If you’re just starting out, the best advice I can give you is to pick a Markdown application with good Markdown support. That’ll go a long way towards maintaining the portability of your Markdown files. You might want to store and use your Markdown files in other applications, and to do that you need to start with an application that provides good support. You can use the tool directory to find an application that fits the bill.

    Additional Resources

    There are lots of resources you can use to learn Markdown. Here are some other introductory resources:

    Markdown basics

    Just like many other apps, Zettlr makes use of Markdown, originally invented by John Gruber. Of course, over such a long period of time, a huge amount of developments have taken place, that have created the possibilities of modern Markdown applications. In this document the following topics are covered:

    1. A brief history of Markdown
    2. Dialects of Markdown

    A brief history

    Since the personal computer became widely available in the 1990s, there were two groups of formats existing side-by-side: word processor documents, such as .doc, or .odt and code documents, such as .js, .cpp or .py. Both groups of documents contain human-readable text, but there was one simple, yet huge difference: While JavaScript-files or C++-files contained plain text (i.e. only the text that you would see when you open such a file), word processor documents contained a lot more stuff. Word processor documents always hold information about the page size (e.g., A4 or letter), how different blocks should be formatted (e.g., the font of headings or how much blockquotes are indented). If you open a Word/Office-document on your PC right now, you can see what I mean: You immediately see what is a heading based on the font-size font-weight of its text.

    For a long time, both these groups of documents stayed as distinct as would their users. Most office-workers only know how to use Microsoft Word or Excel, maybe also LibreOffice-implementations, while close to nobody coming from a STEM-background would voluntarily use Word or similar software. Those scientists have chosen a different path: they developed a programming language called LaTeX, which allows them to create neatly formatted PDF-files from a bunch of code—they follow the same workflow as researchers from the arts and humanities or regular administrative officers, but use different documents for that.

    When Markdown was inaugurated by John Gruber in 2004, it was basically like saying: “Why not both?” Markdown combines both the clear reading experience from word processor documents with the benefits of software code documents, which is both versatile and easy to use—even for people that only know how to operate Word or Writer. One small example: While in word processors you would create a heading by typing “some text” and then selecting the Heading 1 format from some menu, in Markdown you would simply type # some text, where the hashtag-symbol tells you immediately: “This is a first level heading!”

    At first, Markdown was basically a small script John Gruber wrote for himself to yield these benefits, and it contained a lot of inconsistencies and didn’t support many different elements. But over the years, progress was made. Two dates are notable:

    • 2004: John Gruber initially launches Markdown
    • 2012: A group of developers form CommonMark to standardise Markdown into an internationally accepted norm.

    Markdown Dialects

    Today, several implementations of the Markdown syntax coexist. The most noteworthy are:

    • MultiMarkdown: Extends the initial syntax with footnotes, tables and some metadata.
    • Markdown Extra: Again some additions to the initial syntax.
    • GitHub Flavoured Markdown: This is a variety of Markdown invented by the hosting platform GitHub (which Zettlr is also hosted on!) and is today one of the most common dialects.
    • Pandoc Markdown: Pandoc Markdown is a superset of GitHub flavoured Markdown and adds support for even more elements.
    • CommonMark: Tries to implement all possible elements, while being unambiguous. Notably, CommonMark not yet includes a specification for footnotes.

    9.13 - Extended Syntax of Markdown

    Extended Syntax of Markdown

    Overview

    The basic syntax outlined in John Gruber’s original design document added many of the elements needed on a day-to-day basis, but it wasn’t enough for some people. That’s where extended syntax comes in.

    Several individuals and organizations took it upon themselves to extend the basic syntax by adding additional elements like tables, code blocks, syntax highlighting, URL auto-linking, and footnotes. These elements can be enabled by using a lightweight markup language that builds upon the basic Markdown syntax, or by adding an extension to a compatible Markdown processor.

    Availability

    Not all Markdown applications support extended syntax elements. You’ll need to check whether or not the lightweight markup language your application is using supports the extended syntax elements you want to use. If it doesn’t, it may still be possible to enable extensions in your Markdown processor.

    Lightweight Markup Languages

    There are several lightweight markup languages that are supersets of Markdown. They include Gruber’s basic syntax and build upon it by adding additional elements like tables, code blocks, syntax highlighting, URL auto-linking, and footnotes. Many of the most popular Markdown applications use one of the following lightweight markup languages:

    Markdown Processors

    There are dozens of Markdown processors available. Many of them allow you to add extensions that enable extended syntax elements. Check your processor’s documentation for more information.

    Tables

    To add a table, use three or more hyphens (---) to create each column’s header, and use pipes (|) to separate each column. You can optionally add pipes on either end of the table.

    | Syntax      | Description |
    | ----------- | ----------- |
    | Header      | Title       |
    | Paragraph   | Text        |
    

    The rendered output looks like this:

    Syntax Description
    Header Title
    Paragraph Text

    Cell widths can vary, as shown below. The rendered output will look the same.

    | Syntax | Description |
    | --- | ----------- |
    | Header | Title |
    | Paragraph | Text |
    
    Tip: Creating tables with hyphens and pipes can be tedious. To speed up the process, try using the Markdown Tables Generator. Build a table using the graphical interface, and then copy the generated Markdown-formatted text into your file.

    Alignment

    You can align text in the columns to the left, right, or center by adding a colon (:) to the left, right, or on both side of the hyphens within the header row.

    | Syntax      | Description | Test Text     |
    | :---        |    :----:   |          ---: |
    | Header      | Title       | Here's this   |
    | Paragraph   | Text        | And more      |
    

    The rendered output looks like this:

    Syntax Description Test Text
    Header Title Here’s this
    Paragraph Text And more

    Formatting Text in Tables

    You can format the text within tables. For example, you can add links, code (words or phrases in backticks (`) only, not code blocks), and emphasis.

    You can’t add headings, blockquotes, lists, horizontal rules, images, or HTML tags.

    Escaping Pipe Characters in Tables

    You can display a pipe (|) character in a table by using its HTML character code (&#124;).

    Fenced Code Blocks

    The basic Markdown syntax allows you to create code blocks by indenting lines by four spaces or one tab. If you find that inconvenient, try using fenced code blocks. Depending on your Markdown processor or editor, you’ll use three backticks (```) or three tildes (~~~) on the lines before and after the code block. The best part? You don’t have to indent any lines!

    ```
    {
      "firstName": "John",
      "lastName": "Smith",
      "age": 25
    }
    ```
    

    The rendered output looks like this:

    {
      "firstName": "John",
      "lastName": "Smith",
      "age": 25
    }
    
    Tip: Need to display backticks inside a code block? See this section to learn how to escape them.

    Syntax Highlighting

    Many Markdown processors support syntax highlighting for fenced code blocks. This feature allows you to add color highlighting for whatever language your code was written in. To add syntax highlighting, specify a language next to the backticks before the fenced code block.

    ```json
    {
      "firstName": "John",
      "lastName": "Smith",
      "age": 25
    }
    ```
    

    The rendered output looks like this:

    {
      "firstName": "John",
      "lastName": "Smith",
      "age": 25
    }
    

    Footnotes

    Footnotes allow you to add notes and references without cluttering the body of the document. When you create a footnote, a superscript number with a link appears where you added the footnote reference. Readers can click the link to jump to the content of the footnote at the bottom of the page.

    To create a footnote reference, add a caret and an identifier inside brackets ([^1]). Identifiers can be numbers or words, but they can’t contain spaces or tabs. Identifiers only correlate the footnote reference with the footnote itself — in the output, footnotes are numbered sequentially.

    Add the footnote using another caret and number inside brackets with a colon and text ([^1]: My footnote.). You don’t have to put footnotes at the end of the document. You can put them anywhere except inside other elements like lists, block quotes, and tables.

    Here's a simple footnote,[^1] and here's a longer one.[^bignote]
    
    [^1]: This is the first footnote.
    
    [^bignote]: Here's one with multiple paragraphs and code.
    
        Indent paragraphs to include them in the footnote.
    
        `{ my code }`
    
        Add as many paragraphs as you like.
    

    The rendered output looks like this:

    Here’s a simple footnote,1 and here’s a longer one.2

    Heading ID’s

    Many Markdown processors support custom IDs for headings — some Markdown processors automatically add them. Adding custom IDs allows you to link directly to headings and modify them with CSS. To add a custom heading ID, enclose the custom ID in curly braces on the same line as the heading.

    ### My Great Heading {#custom-id}
    

    The HTML looks like this:

    <h3 id="custom-id">My Great Heading</h3>
    

    Linking to Heading IDs

    You can link to headings with custom IDs in the file by creating a standard link with a number sign (#) followed by the custom heading ID.

    Markdown HTML Rendered Output
    [Heading IDs](#heading-ids) <a href="#heading-ids">Heading IDs</a> Heading IDs

    Other websites can link to the heading by adding the custom heading ID to the full URL of the webpage (e.g, [Heading IDs](https://www.markdownguide.org/extended-syntax#heading-ids)).

    Definition Lists

    Some Markdown processors allow you to create definition lists of terms and their corresponding definitions. To create a definition list, type the term on the first line. On the next line, type a colon followed by a space and the definition.

    First Term
    : This is the definition of the first term.
    
    Second Term
    : This is one definition of the second term.
    : This is another definition of the second term.
    

    The HTML looks like this:

    <dl>
      <dt>First Term</dt>
      <dd>This is the definition of the first term.</dd>
      <dt>Second Term</dt>
      <dd>This is one definition of the second term. </dd>
      <dd>This is another definition of the second term.</dd>
    </dl>
    

    The rendered output looks like this:

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    Strikethrough

    You can strikethrough words by putting a horizontal line through the center of them. The result looks like this. This feature allows you to indicate that certain words are a mistake not meant for inclusion in the document. To strikethrough words, use two tilde symbols (~~) before and after the words.

    ~~The world is flat.~~ We now know that the world is round.
    

    The rendered output looks like this:

    The world is flat. We now know that the world is round.

    Task Lists

    Task lists allow you to create a list of items with checkboxes. In Markdown applications that support task lists, checkboxes will be displayed next to the content. To create a task list, add dashes (-) and brackets with a space ([ ]) in front of task list items. To select a checkbox, add an x in between the brackets ([x]).

    - [x] Write the press release
    - [ ] Update the website
    - [ ] Contact the media
    

    The rendered output looks like this:

    Markdown task list

    Emoji

    There are two ways to add emoji to Markdown files: copy and paste the emoji into your Markdown-formatted text, or type emoji shortcodes.

    Copying and Pasting Emoji

    In most cases, you can simply copy an emoji from a source like Emojipedia and paste it into your document. Many Markdown applications will automatically display the emoji in the Markdown-formatted text. The HTML and PDF files you export from your Markdown application should display the emoji.

    Tip: If you're using a static site generator, make sure you encode HTML pages as UTF-8.

    Using Emoji Shortcodes

    Some Markdown applications allow you to insert emoji by typing emoji shortcodes. These begin and end with a colon and include the name of an emoji.

    Gone camping! :tent: Be back soon.
    
    That is so funny! :joy:
    

    The rendered output looks like this:

    Gone camping! ⛺ Be back soon.

    That is so funny! 😂

    Note: You can use this list of emoji shortcodes, but keep in mind that emoji shortcodes vary from application to application. Refer to your Markdown application's documentation for more information.

    Automatic URL Linking

    Many Markdown processors automatically turn URLs into links. That means if you type https://www.example.com, your Markdown processor will automatically turn it into a link even though you haven’t used brackets.

    https://www.example.com
    

    The rendered output looks like this:

    https://www.example.com

    Disabling Automatic URL Linking

    If you don’t want a URL to be automatically linked, you can remove the link by denoting the URL as code with backticks.

    `https://www.example.com`
    

    The rendered output looks like this:

    https://www.example.com


    1. This is the first footnote. ↩︎

    2. Here’s one with multiple paragraphs and code.

      Indent paragraphs to include them in the footnote.

      { my code }

      Add as many paragraphs as you like. ↩︎

    9.14 - Basic Syntax of Markdown

    Basic Syntax of Markdown

    Overview

    Nearly all Markdown applications support the basic syntax outlined in John Gruber’s original design document. There are minor variations and discrepancies between Markdown processors — those are noted inline wherever possible.

    Headings

    To create a heading, add number signs (#) in front of a word or phrase. The number of number signs you use should correspond to the heading level. For example, to create a heading level three (<h3>), use three number signs (e.g., ### My Header).

    Markdown HTML Rendered Output
    # Heading level 1 <h1>Heading level 1</h1>

    Heading level 1

    ## Heading level 2 <h2>Heading level 2</h2>

    Heading level 2

    ### Heading level 3 <h3>Heading level 3</h3>

    Heading level 3

    #### Heading level 4 <h4>Heading level 4</h4>

    Heading level 4

    ##### Heading level 5 <h5>Heading level 5</h5>
    Heading level 5
    ###### Heading level 6 <h6>Heading level 6</h6>
    Heading level 6

    Alternate Syntax

    Alternatively, on the line below the text, add any number of == characters for heading level 1 or -- characters for heading level 2.

    Markdown HTML Rendered Output
    Heading level 1
    ===============
    <h1>Heading level 1</h1>

    Heading level 1

    Heading level 2
    ---------------
    <h2>Heading level 2</h2>

    Heading level 2

    Heading Best Practices

    Markdown applications don’t agree on how to handle a missing space between the number signs (#) and the heading name. For compatibility, always put a space between the number signs and the heading name.

    ✅  Do this ❌  Don't do this
    # Here's a Heading

    #Here's a Heading

    Paragraphs

    To create paragraphs, use a blank line to separate one or more lines of text.

    Markdown HTML Rendered Output
    I really like using Markdown. <p>I really like using Markdown.</p>

    I really like using Markdown.

    I think I'll use it to format all of my documents from now on. <p>I think I'll use it to format all of my documents from now on.</p>

    I think I’ll use it to format all of my documents from now on.

    Paragraph Best Practices

    Unless the paragraph is in a list, don’t indent paragraphs with spaces or tabs.

    ✅ Do this ❌ Don’t do this
    Don't put tabs or spaces in front of your paragraphs. This can result in unexpected formatting problems.
    Keep lines left-aligned like this. Don't add tabs or spaces in front of paragraphs.

    Line Breaks

    To create a line break (<br>), end a line with two or more spaces, and then type return.

    In Markdown: This is the first line. And this is the second line.

    In HTML: <p>This is the first line.<br> And this is the second line.</p>

    Rendered

    This is the first line.
    And this is the second line.

    Line Break Best Practices

    You can use two or more spaces (commonly referred to as “trailing whitespace”) for line breaks in nearly every Markdown application, but it’s controversial. It’s hard to see trailing whitespace in an editor, and many people accidentally or intentionally put two spaces after every sentence. For this reason, you may want to use something other than trailing whitespace for line breaks. Fortunately, there is another option supported by nearly every Markdown application: the <br> HTML tag.

    For compatibility, use trailing white space or the <br> HTML tag at the end of the line.

    There are two other options I don’t recommend using. CommonMark and a few other lightweight markup languages let you type a backslash (\) at the end of the line, but not all Markdown applications support this, so it isn’t a great option from a compatibility perspective. And at least a couple lightweight markup languages don’t require anything at the end of the line — just type return and they’ll create a line break.

    ✅ Do this

    First line with two spaces after.  
    And the next line.
    
    First line with the HTML tag after.<br>
    And the next line.
    

    ❌ Don’t do this

    First line with a backslash after.\
    And the next line.
    
    First line with nothing after.
    And the next line.
    

    Emphasis

    Bold and Italic

    To emphasize text with bold and italics at the same time, add three asterisks or underscores before and after a word or phrase. To bold and italicize the middle of a word for emphasis, add three asterisks without spaces around the letters.

    Markdown HTML Rendered Output
    This text is ***really important***. This text is <strong><em>really important</em></strong>. This text is really important.
    This text is ___really important___. This text is <strong><em>really important</em></strong>. This text is really important.
    This text is __*really important*__. This text is <strong><em>really important</em></strong>. This text is really important.
    This text is **_really important_**. This text is <strong><em>really important</em></strong>. This text is really important.
    This is really***very***important text. This is really<strong><em>very</em></strong>important text. This is reallyveryimportant text.

    Bold and Italic Best Practices

    Markdown applications don’t agree on how to handle underscores in the middle of a word. For compatibility, use asterisks to bold and italicize the middle of a word for emphasis.

    ✅  Do this ❌  Don't do this
    This is really***very***important text. This is really___very___important text.

    Blockquotes

    To create a blockquote, add a > in front of a paragraph.

    > Dorothy followed her through many of the beautiful rooms in her castle.
    

    The rendered output looks like this:

    Dorothy followed her through many of the beautiful rooms in her castle.

    Blockquotes with Multiple Paragraphs

    Blockquotes can contain multiple paragraphs. Add a > on the blank lines between the paragraphs.

    > Dorothy followed her through many of the beautiful rooms in her castle.
    >
    > The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
    

    The rendered output looks like this:

    Dorothy followed her through many of the beautiful rooms in her castle.

    The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.

    Nested Blockquotes

    Blockquotes can be nested. Add a >> in front of the paragraph you want to nest.

    > Dorothy followed her through many of the beautiful rooms in her castle.
    >
    >> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
    

    The rendered output looks like this:

    Dorothy followed her through many of the beautiful rooms in her castle.

    The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.

    Blockquotes with Other Elements

    Blockquotes can contain other Markdown formatted elements. Not all elements can be used — you’ll need to experiment to see which ones work.

    > #### The quarterly results look great!
    >
    > - Revenue was off the chart.
    > - Profits were higher than ever.
    >
    >  *Everything* is going according to **plan**.
    

    The rendered output looks like this:

    The quarterly results look great!

    • Revenue was off the chart.
    • Profits were higher than ever.

    Everything is going according to plan.

    Lists

    You can organize items into ordered and unordered lists.

    Ordered Lists

    To create an ordered list, add line items with numbers followed by periods. The numbers don’t have to be in numerical order, but the list should start with the number one.

    Markdown HTML Rendered Output
    1. First item
    2. Second item
    3. Third item
    4. Fourth item
    <ol>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
    <li>Fourth item</li>
    </ol>
    1. First item
    2. Second item
    3. Third item
    4. Fourth item
    1. First item
    1. Second item
    1. Third item
    1. Fourth item
    <ol>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
    <li>Fourth item</li>
    </ol>
    1. First item
    2. Second item
    3. Third item
    4. Fourth item
    1. First item
    8. Second item
    3. Third item
    5. Fourth item
    <ol>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
    <li>Fourth item</li>
    </ol>
    1. First item
    2. Second item
    3. Third item
    4. Fourth item
    1. First item
    2. Second item
    3. Third item
        1. Indented item
        2. Indented item
    4. Fourth item
    <ol>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item
    <ol>
    <li>Indented item</li>
    <li>Indented item</li>
    </ol>
    </li>
    <li>Fourth item</li>
    </ol>
    1. First item
    2. Second item
    3. Third item
      1. Indented item
      2. Indented item
    4. Fourth item

    Unordered Lists

    To create an unordered list, add dashes (-), asterisks (*), or plus signs (+) in front of line items. Indent one or more items to create a nested list.

    Markdown HTML Rendered Output
    - First item
    - Second item
    - Third item
    - Fourth item
    <ul>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
    <li>Fourth item</li>
    </ul>
    • First item
    • Second item
    • Third item
    • Fourth item
    * First item
    * Second item
    * Third item
    * Fourth item
    <ul>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
    <li>Fourth item</li>
    </ul>
    • First item
    • Second item
    • Third item
    • Fourth item
    + First item
    * Second item
    - Third item
    + Fourth item
    <ul>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item</li>
    <li>Fourth item</li>
    </ul>
    • First item
    • Second item
    • Third item
    • Fourth item
    - First item
    - Second item
    - Third item
        - Indented item
        - Indented item
    - Fourth item
    <ul>
    <li>First item</li>
    <li>Second item</li>
    <li>Third item
    <ul>
    <li>Indented item</li>
    <li>Indented item</li>
    </ul>
    </li>
    <li>Fourth item</li>
    </ul>
    • First item
    • Second item
    • Third item
      • Indented item
      • Indented item
    • Fourth item

    Adding Elements in Lists

    To add another element in a list while preserving the continuity of the list, indent the element four spaces or one tab, as shown in the following examples.

    Paragraphs

    *   This is the first list item.
    *   Here's the second list item.
    
        I need to add another paragraph below the second list item.
    
    *   And here's the third list item.
    

    The rendered output looks like this:

    • This is the first list item.

    • Here’s the second list item.

      I need to add another paragraph below the second list item.

    • And here’s the third list item.

    Blockquotes

    *   This is the first list item.
    *   Here's the second list item.
    
        > A blockquote would look great below the second list item.
    
    *   And here's the third list item.
    

    The rendered output looks like this:

    • This is the first list item.

    • Here’s the second list item.

      A blockquote would look great below the second list item.

    • And here’s the third list item.

    Code Blocks

    Code blocks are normally indented four spaces or one tab. When they’re in a list, indent them eight spaces or two tabs.

    1.  Open the file.
    2.  Find the following code block on line 21:
    
            <html>
              <head>
                <title>Test</title>
              </head>
    
    3.  Update the title to match the name of your website.
    

    The rendered output looks like this:

    1. Open the file.

    2. Find the following code block on line 21:

      <html>
        <head>
          <title>Test</title>
        </head>
      
    3. Update the title to match the name of your website.

    Images

    1.  Open the file containing the Linux mascot.
    2.  Marvel at its beauty.
    
        ![Tux, the Linux mascot](/assets/images/tux.png)
    
    3.  Close the file.
    

    The rendered output looks like this:

    1. Open the file containing the Linux mascot.

    2. Marvel at its beauty.

      Tux, the Linux mascot

    3. Close the file.

    Code

    To denote a word or phrase as code, enclose it in backticks (`).

    Markdown HTML Rendered Output
    At the command prompt, type `nano`. At the command prompt, type <code>nano</code>. At the command prompt, type nano.

    Escaping Backticks

    If the word or phrase you want to denote as code includes one or more backticks, you can escape it by enclosing the word or phrase in double backticks (``).

    Markdown HTML Rendered Output
    ``Use `code` in your Markdown file.`` <code>Use `code` in your Markdown file.</code> Use `code` in your Markdown file.

    Code Blocks

    To create code blocks, indent every line of the block by at least four spaces or one tab.

        <html>
          <head>
          </head>
        </html>
    

    The rendered output looks like this:

    <html>
      <head>
      </head>
    </html>
    
    Note: To create code blocks without indenting lines, use fenced code blocks.

    To create a horizontal rule, use three or more asterisks (***), dashes (---), or underscores (___) on a line by themselves.

    ***
    
    ---
    
    _________________
    

    The rendered output of all three looks identical:


    Horizontal Rule Best Practices

    For compatibility, put blank lines before and after horizontal rules.

    ✅ Do this

    Try to put a blank line before...
    
    ---
    
    ...and after a horizontal rule. 
    

    ❌ Don’t do this

    Without blank lines, this would be a heading.
    ---
    Don't do this! 
    

    To create a link, enclose the link text in brackets (e.g., [Duck Duck Go]) and then follow it immediately with the URL in parentheses (e.g., (https://duckduckgo.com)).

    My favorite search engine is [Duck Duck Go](https://duckduckgo.com).
    

    The rendered output looks like this:

    My favorite search engine is Duck Duck Go.

    Adding Titles

    You can optionally add a title for a link. This will appear as a tooltip when the user hovers over the link. To add a title, enclose it in parentheses after the URL.

    My favorite search engine is [Duck Duck Go](https://duckduckgo.com "The best search engine for privacy").
    

    The rendered output looks like this:

    My favorite search engine is Duck Duck Go.

    URLs and Email Addresses

    To quickly turn a URL or email address into a link, enclose it in angle brackets.

    <https://www.markdownguide.org>
    <fake@example.com>
    

    The rendered output looks like this:

    https://www.markdownguide.org
    fake@example.com

    To emphasize links, add asterisks before and after the brackets and parentheses. To denote links as code, add backticks in the brackets.

    I love supporting the **[EFF](https://eff.org)**.
    This is the *[Markdown Guide](https://www.markdownguide.org)*.
    See the section on [`code`](#code).
    

    The rendered output looks like this:

    I love supporting the EFF.
    This is the Markdown Guide.
    See the section on code.

    Reference-style links are a special kind of link that make URLs easier to display and read in Markdown. Reference-style links are constructed in two parts: the part you keep inline with your text and the part you store somewhere else in the file to keep the text easy to read.

    The first part of a reference-style link is formatted with two sets of brackets. The first set of brackets surrounds the text that should appear linked. The second set of brackets displays a label used to point to the link you’re storing elsewhere in your document.

    Although not required, you can include a space between the first and second set of brackets. The label in the second set of brackets is not case sensitive and can include letters, numbers, spaces, or punctuation.

    This means the following example formats are roughly equivalent for the first part of the link:

    • [hobbit-hole][1]
    • [hobbit-hole] [1]

    The second part of a reference-style link is formatted with the following attributes:

    1. The label, in brackets, followed immediately by a colon and at least one space (e.g., [label]: ).
    2. The URL for the link, which you can optionally enclose in angle brackets.
    3. The optional title for the link, which you can enclose in double quotes, single quotes, or parentheses.

    This means the following example formats are all roughly equivalent for the second part of the link:

    • [1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle
    • [1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle "Hobbit lifestyles"
    • [1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle 'Hobbit lifestyles'
    • [1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle (Hobbit lifestyles)
    • [1]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> "Hobbit lifestyles"
    • [1]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> 'Hobbit lifestyles'
    • [1]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> (Hobbit lifestyles)

    You can place this second part of the link anywhere in your Markdown document. Some people place them immediately after the paragraph in which they appear while other people place them at the end of the document (like endnotes or footnotes).

    An Example Putting the Parts Together

    Say you add a URL as a standard URL link to a paragraph and it looks like this in Markdown:

    In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends
    of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to
    eat: it was a [hobbit-hole](https://en.wikipedia.org/wiki/Hobbit#Lifestyle "Hobbit lifestyles"), and that means comfort.
    

    Though it may point to interesting additional information, the URL as displayed really doesn’t add much to the existing raw text other than making it harder to read. To fix that, you could format the URL like this instead:

    In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends
    of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to
    eat: it was a [hobbit-hole][1], and that means comfort.
    
    [1]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> "Hobbit lifestyles"
    

    In both instances above, the rendered output would be identical:

    In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.

    and the HTML for the link would be:

    <a href="https://en.wikipedia.org/wiki/Hobbit#Lifestyle" title="Hobbit lifestyles">hobbit-hole</a>
    

    Markdown applications don’t agree on how to handle spaces in the middle of a URL. For compatibility, try to URL encode any spaces with %20.

    ✅  Do this ❌  Don't do this
    [link](https://www.example.com/my%20great%20page) [link](https://www.example.com/my great page)

    Images

    To add an image, add an exclamation mark (!), followed by alt text in brackets, and the path or URL to the image asset in parentheses. You can optionally add a title after the URL in the parentheses.

    ![Philadelphia's Magic Gardens. This place was so cool!](/assets/images/philly-magic-gardens.jpg "Philadelphia's Magic Gardens")
    

    The rendered output looks like this:

    Philadelphia's Magic Gardens. This place was so cool!

    Linking Images

    To add a link to an image, enclose the Markdown for the image in brackets, and then add the link in parentheses.

    [![An old rock in the desert](/assets/images/shiprock.jpg "Shiprock, New Mexico by Beau Rogers")](https://www.flickr.com/photos/beaurogers/31833779864/in/photolist-Qv3rFw-34mt9F-a9Cmfy-5Ha3Zi-9msKdv-o3hgjr-hWpUte-4WMsJ1-KUQ8N-deshUb-vssBD-6CQci6-8AFCiD-zsJWT-nNfsgB-dPDwZJ-bn9JGn-5HtSXY-6CUhAL-a4UTXB-ugPum-KUPSo-fBLNm-6CUmpy-4WMsc9-8a7D3T-83KJev-6CQ2bK-nNusHJ-a78rQH-nw3NvT-7aq2qf-8wwBso-3nNceh-ugSKP-4mh4kh-bbeeqH-a7biME-q3PtTf-brFpgb-cg38zw-bXMZc-nJPELD-f58Lmo-bXMYG-bz8AAi-bxNtNT-bXMYi-bXMY6-bXMYv)
    

    The rendered output looks like this:

    An old rock in the desert

    Escaping Characters

    To display a literal character that would otherwise be used to format text in a Markdown document, add a backslash (\) in front of the character.

    \* Without the backslash, this would be a bullet in an unordered list.
    

    The rendered output looks like this:

    * Without the backslash, this would be a bullet in an unordered list.

    Characters You Can Escape

    You can use a backslash to escape the following characters.

    Character Name
    \ backslash
    ` backtick (see also escaping backticks in code)
    * asterisk
    _ underscore
    { } curly braces
    [ ] brackets
    ( ) parentheses
    # pound sign
    + plus sign
    - minus sign (hyphen)
    . dot
    ! exclamation mark
    | pipe (see also escaping pipe in tables)

    HTML

    Many Markdown applications allow you to use HTML tags in Markdown-formatted text. This is helpful if you prefer certain HTML tags to Markdown syntax. For example, some people find it easier to use HTML tags for images. Using HTML is also helpful when you need to change the attributes of an element, like specifying the color of text or changing the width of an image.

    To use HTML, place the tags in the text of your Markdown-formatted file.

    This **word** is bold. This <em>word</em> is italic.
    

    The rendered output looks like this:

    This word is bold. This word is italic.

    HTML Best Practices

    For security reasons, not all Markdown applications support HTML in Markdown documents. When in doubt, check your Markdown application’s documentation. Some applications support only a subset of HTML tags.

    Use blank lines to separate block-level HTML elements like <div>, <table>, <pre>, and <p> from the surrounding content. Try not to indent the tags with tabs or spaces — that can interfere with the formatting.

    You can’t use Markdown syntax inside block-level HTML tags. For example, <p>italic and **bold**</p> won’t work.

    9.15 - Complete Markdown Cheatsheet

    Complete Markdown Cheatsheet

    Common Mark Implementation

    1. Basic Markdown


    1.1. Heading

    Support: all markdown flavour Syntaxes

    ## h2 Heading
    ### h3 Heading
    #### h4 Heading
    ##### h5 Heading
    ###### h6 Heading
    

    Showcases

    h2 Heading

    h3 Heading

    h4 Heading

    h5 Heading
    h6 Heading

    Syntaxes

    h1 Heading
    ===================
    h2 Heading
    -------------------
    

    Showcases

    h1 Heading

    h2 Heading

    Notes:

    • Always put a space between # and the heading name
    • Heading with === or --- are not recommended

    1.2. Paragraphs

    Notes:

    • To create paragraphs, use a blank line to separate one or more lines of text.
    • Don’t ident paragraphs with spaces or tabs

    Syntaxes

    This is the first paragraph.
    
    This is the second paragraph
    

    Showcases

    This is the first paragraph.

    This is the second paragraph


    1.3 Line Break

    Notes:

    • To create a line break, end a line with two or more spaces, and then type return
    • Or use the <br> HTML tag

    Syntaxes

    This is the first line.  
    And this is the second line.
    

    Showcases

    This is the first line.
    And this is the second line.

    Alternative Syntaxes

    First line with the HTML tag after.<br>
    And the next line.
    

    Showcases

    First line with the HTML tag after.
    And the next line.


    1.4. Emphasis

    Syntaxes

    **This is bold text**
    __This is bold text__
    *This is italic text*
    _This is italic text_
    We have **bold***italic*
    This text is ***really important***
    This text is ___really important___
    This text is __*really important*__
    This text is **_really important_**
    

    Showcases

    This is bold text This is bold text This is italic text This is italic text We have bolditalic This text is really important This text is really important This text is really important This text is really important


    1.5. Blockquotes

    Notes:

    • Space is needed after the marker >;
    • You could just add only one > at the first line;
    • Blockquotes can be nested
    • Blockquotes can contain multiple paragraphs. Add a > between the paragraphs.
    • Blockquotes can contain other Markdown formatted elements. But not all elements can be used.

    Syntaxes

    > Blockquotes can also be nested...
    >> ...by using additional greater-than signs right next to each other...
    > > > ...or with spaces between arrows.
    

    Showcases

    Blockquotes can also be nested…

    …by using additional greater-than signs right next to each other…

    …or with spaces between arrows.

    Syntaxes

    > Dorothy followed her through many of the beautiful rooms in her castle.
    >
    > The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
    

    Showcases

    Dorothy followed her through many of the beautiful rooms in her castle.

    The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.

    Syntaxes

    > #### The quarterly results look great!
    >
    > - Revenue was off the chart.
    > - Profits were higher than ever.
    >
    >  *Everything* is going according to **plan**.
    

    Showcases

    The quarterly results look great!

    • Revenue was off the chart.
    • Profits were higher than ever.

    Everything is going according to plan.


    1.6. Lists

    1.6.1. Unordered

    Syntaxes

    
    + To start a list, there should be an empty line above
    + Create a list by starting a line with `+`, `-`, or `*`
    - Changing the sign will add a linespace
    + Add text under an item  
    This is a text under an item. Notice that there are two spaces at the end above.
    - Sub-lists are made by indenting 2 spaces:
      * Item 2a
      * Item 2b
    * Item 3
    
    To end a list, there should be one empty line above.
    

    Showcases

    • To start a list, there should be an empty line above
    • Create a list by starting a line with +, -, or *
    • Changing the sign will add a linespace
    • Add text under an item
      This is a text under an item. Notice that there are two spaces at the end above.
    • Sub-lists are made by indenting 2 spaces:
      • Item 2a
      • Item 2b
    • Item 3

    To end a list, there should be one empty line above.

    1.6.2. Ordered

    Syntaxes

    1. Item 1
    1. Item 2  
    Notice that the sequence number is irrelevant. 
    Markdown will change the sequence automatically when renderring. 
    Notice that there are two spaces at the end above to make a new text under item.
    3. Sub-lists are made by indenting 4 spaces
        1. Item 3a
        2. Item 3b
    8. Any number for item 4
    

    Showcases

    1. Item 1
    2. Item 2
      Notice that the sequence number is irrelevant.
      Markdown will change the sequence automatically when renderring.
      Notice that there are two spaces at the end above to make a new text under item.
    3. Sub-lists are made by indenting 4 spaces
      1. Item 3a
      2. Item 3b
    4. Any number for item 4

    Syntaxes

    57. will started with offset 57
    1. so it will be 58
    

    Showcases

    1. will started with offset 57
    2. so it will be 58

    1.7. Elements in Lists

    Notes:

    • To add another element in a list while preserving the continuity of the list, indent the element four spaces or one tab

    Syntaxes

    * This is the first list item.
    * Here's the second list item.
        I need to add another paragraph below the second list item.
    * And here's the third list item.
    

    Showcases

    • This is the first list item.
    • Here’s the second list item. I need to add another paragraph below the second list item.
    • And here’s the third list item.

    Showcases

    • This is the first list item.

    • Here’s the second list item.

      I need to add another paragraph below the second list item.

    • And here’s the third list item.

    Showcases

    • This is the first list item.

    • Here’s the second list item.

      A blockquote would look great below the second list item.

    • And here’s the third list item.

    Syntaxes

    1.  Open the file containing the Linux mascot.
    2.  Linux mascot called Tux.
        ![Tux, the Linux mascot](https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Tux.png/220px-Tux.png)
    3.  Tux is cool.
    

    Showcases

    1. Open the file containing the Linux mascot.
    2. Linux mascot called Tux. Tux, the Linux mascot
    3. Tux is cool.

    But, for text element in ordered list, add five spaces

    1. This is the first list item.

    2. Here’s the second list item.

      I need to add another paragraph below the second list item.

    3. And here’s the third list item.

    But, for quote in ordered list, add five spaces

    1. This is the first list item.

    2. Here’s the second list item.

      A blockquote would look great below the second list item.

    3. And here’s the third list item.

    But, for code blocks in the lists, add eight spaces or two tabs.

    1. Open the file.

    2. Find the following code block on line 21:

      <html>
        <head>
          <title>Test</title>
        </head>
      
    3. Update the title to match the name of your website.


    1.8. Code

    Notes:

    • Inline codes is written inside ` `
    • or idented by add four spaces or one tab before

    Syntaxes

    This is inline `code`.
    

    Showcases

    This is inline code.

    Syntaxes

        // Some comments
        line 1 of code
        line 2 of code
        line 3 of code
    

    Showcases

    // Some comments
    line 1 of code
    line 2 of code
    line 3 of code
    

    Syntaxes

        <html>
          <head>
            <title>Test</title>
          </head>
    

    Showcases

    <html>
      <head>
        <title>Test</title>
      </head>
    

    Example

    This is link This is link with title

    Or, directly put the link

    https://example.com/ fake@example.com

    Or with <>

    https://www.markdownguide.org fake@example.com

    But, to prevent automated linking

    https://www.example.com

    Or add emphasize

    I love supporting the EFF. This is the Markdown Guide. See the section on code.

    I know Indonesia I also know etymology of Indonesia I knew History of Indonesia

    Or, put reference in text

    It was a hobbit-hole, and that means comfort.

    But, be careful with spaces in the links, put %20 as space

    example %20 link [example without %20](https://www.example.com/my great page)


    1.10. Images

    Notes:

    • It is not recommended to use image links in reference format. Some apps will not preview those images.
    • Specifying size of image is supported only in some extended markdown (such as markdown-it).

    Syntaxes

    ![Image Alt Text](/url/to/image.png "Optional Text")
    ![Image Alt Text](/url/to/image.png "Image specified with width and height" =800x600)
    ![Image Alt Text](/url/to/image.png =800x600)
    ![Image Alt Text](/url/to/image.png "Image specified with width" =800x)
    ![Image Alt Text](/url/to/image.png "Image specified with height" =x600)
    

    Showcases

    Wikipedia ![Wikipedia](https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Wikipedia_Logo_1.0.png/240px-Wikipedia_Logo_1.0.png “Wikipedia logo with specific size” =60x60)

    Syntaxes

    ![Image Alt Text][id1]
    ![Image Alt Text][id2]
    
    [id1]: /url/to/image.png "Optional Text"
    [id2]: /url/to/image.png
    

    Showcases

    Wikipedia Wikipedia Logo


    1.11. Escaping Characters

    Note:

    • add a backslash \ in front of the character.

    Example

    * star \ backslash itself ` backtick { } curly braces ! exclamation mark


    1.12. HTML Code

    Example

    This word is bold. This word is italic.


    1.13. Horizontal Rules

    Example




    2. Extended Markdown


    2.1. Heading ID

    Support: Markdown Extra , Maruku, kramdown

    Markdown:

    ### My Great Heading {#heading-ids}
    

    Markdown

    My Great Heading

    In HTML:

    My Great Heading

    Link to Heading IDs


    2.2. Code Fencing and Highlighting

    Notes:

    • We can make block code fences without need to be idented
    • lang is optional to specify the language of the code; if not specified, the app won’t highlight the code;
    • We need one empty line before

    Syntaxes

        ```
        This is a fenced code block.
        ```
    

    Syntaxes

        ~~~
        This is another fenced code block.
        ~~~
    

    Showcases

    This is a fenced code block.
    
    No language indicated, so no syntax highlighting.
    s = "There is no highlighting for this."
    But let's throw in a <b>tag</b>.
    

    Showcases (javascript)

    var s = "JavaScript syntax highlighting";
    alert(s);
    

    Showcases (python)

    def function():
        #indenting works just fine in the fenced code block
        s = "Python syntax highlighting"
        print s
    

    Showcases (ruby)

    require 'redcarpet'
    markdown = Redcarpet.new("Hello World!")
    puts markdown.to_html
    

    2.3. Tables

    Notes:

    • we can set alignment in table with a colon (:)
    • we can add formatting text, links, code and HTML character code, but not: heading, headings, blockquotes, lists, horizontal rules, images, HTML tags, or fenced code

    Syntaxes

    | Option | Description |
    | ------ | ----------- |
    | data   | path to data files to supply the data that will be passed into templates. |
    | engine | engine to be used for processing templates. Handlebars is the default. |
    | ext    | extension to be used for dest files. |
    

    Showcases

    Option Description
    data path to data files to supply the data that will be passed into templates.
    engine engine to be used for processing templates. Handlebars is the default.
    ext extension to be used for dest files.

    Syntaxes

    | Syntax      | Description | Test Text is long    |
    | :---        |    :----:   |          ---: |
    | Header from      | Title       | Here's this  is |
    | Paragraph   | Text        | And more   |
    

    Showcases

    Syntax Description Test Text is long
    Header from Title Here’s this is
    Paragraph Text And more

    Syntaxes

    | Syntax      | Description | Test Text is long    |
    | :---        |    :----:   |          ---: |
    | [Example](https://www.example.com/)      | **Title**       | `Here's this  is` |
    | Paragraph   | Text        | And more   |
    

    Showcases

    Syntax Description Test Text is long
    Example Title Here's this is
    Paragraph Text And more

    2.4. Footnote

    Example: The First Part Here’s a simple footnote,1 and here’s a longer one,2, and 3

    Example: The Second Part

    Or add inline footnote Another example of footnote 1 link4 and footnote 2 link5. Or to add inline footnote^[Text of inline footnote] definition.

    Or duplictade reference This duplicated footnote reference5.


    2.4. Strikethrough, Highlighting, Underline

    Example of strikethrough strikethrough In HTML: strikethrough

    Example of mark/highlighting ==marked text== in HTML: marked text

    Example of underline underline in HTML: underline


    2.5. Task Lists

    Example

    • Write the press release
    • Update the website
    • Contact the media

    2.6. Definition Lists

    Example

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    In HTML:

    First Term
    This is the definition of the first term.
    Second Term
    This is one definition of the second term.
    This is another definition of the second term.

    *Or *

    Term 1
    Definition 1 with lazy continuation.
    Term 2 with inline markup
    Definition 2 { some code, part of Definition 2 }

    Third paragraph of definition 2.

    Or in compact style:

    Term 1 ~ Definition 1

    Term 2 ~ Definition 2a ~ Definition 2b


    2.7. Emojies

    Emoji can be copy pasted

    Gone camping! ⛺ Be back soon. That is so funny! 😂

    Or, use markdown

    Gone camping! :tent: Be back soon. That is so funny! :joy:

    Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum:

    Shortcuts (emoticons): :-) :-( 8-) ;)


    2.9. Typographic replacements

    Example

    (c) (C) (r) (R) (tm) (TM) (p) (P) +- test.. test… test….. test?….. test!…. !!!!!! ???? ,, – — “Smartypants, double quotes” and ‘single quotes’


    2.10. Superscript and Subscript

    Example Superscript x^2^ In HTML: x2

    Example Subscript H~2~O In HTML: H2O


    2.11. Inserted Text

    Example ++Inserted text++ In HTML: This text has been inserted


    2.12. Abbreviations

    Example

    The “HTML” specification is maintained by the “W3C”. *[HTML]: Hyper Text Markup Language *[W3C]: World Wide Web Consortium

    In HTML: The HTML specification is maintained by the W3C.


    2.13. HTML Entities and Character Codes

    Example

    © & ¨ ™ ¡ £ & < > ¥ € ® ± ¶ § ¦ ¯ « · |

    Or

    X² Y³ ¾ ¼ × ÷ »

    Or

    18ºC " '


    2.14. Latex

    Note:

    • Sometimes with \( and \) brackets

    Example

    $E=mc^2$

    $$(\sqrt{3x-1}+(1+x)^2)$$

    $$\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))$$

    Or, inline

    The Gamma function satisfying $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$ is via the Euler integral


    2.15. Mentions, Tag, Font Awesome

    Note:

    • with fa-something:

    Example

    This is @mentions This is #tags This is tags This is font awesome :fa-star:


    2.16. Diagram

    Notes:

    • Your app should support the specific library or engine to draw the diagram
    • You should specify particular language of the fenced code block and write the definition of your diagram within it.

    2.16.1 Mermaid

    Notes:

    • It’s implemented in showdown-mermaid.js
    • Rendering diagrams of Flowchart or Sequence or Gantt
    • Using mermaid
    • Check mermaid doc for more information.
    • Code inside { } is optional

    Syntaxes

    • Flowchart syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        graph TD;
        <code content>
        ```
      
    • Sequence diagram syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        sequenceDiagram
        <code content>
        ```
      
    • Gantt diagram syntax:

        ```mermaid {"align": "left | center | right", "codeblock": true | false}
        gantt
        <code content>
        ```
      

    Showcases

    • Flowchart
    graph TD;
               A-->B;
               A-->C;
               B-->D;
               C-->D;
    
    graph TD;
               A-->B;
               A-->C;
               B-->D;
               C-->D;
    
    • Sequence diagram
    sequenceDiagram
               participant Alice
               participant Bob
               Alice->>John: Hello John, how are you?
               loop Healthcheck
                   John->>John: Fight against hypochondria
               end
               Note right of John: Rational thoughts <br/>prevail!
               John-->>Alice: Great!
               John->>Bob: How about you?
               Bob-->>John: Jolly good!
    
    • Gantt diagram
           gantt
           dateFormat  YYYY-MM-DD
           title Adding GANTT diagram to mermaid
           excludes weekdays 2014-01-10
    
           section A section
           Completed task            :done,    des1, 2014-01-06,2014-01-08
           Active task               :active,  des2, 2014-01-09, 3d
           Future task               :         des3, after des2, 5d
           Future task2               :         des4, after des3, 5d
    

    2.16.2 Plantuml

    Notes:

    • It’s implemented in showdown-plantuml.js,
    • Render diagrams of uml,
    • Using plantuml,
    • Check plantuml website fpr more information.
    • Code inside { } is optional

    Syntaxes

    ```plantuml {"align": "left | center | right", "codeblock": true | false}
    @startuml
    <code content>
    @enduml
    ```
    

    Showcases

          @startuml
          participant User
    
          User -> A: DoWork
          activate A
    
          A -> B: << createRequest >>
          activate B
    
          B -> C: DoWork
          activate C
          C --> B: WorkDone
          destroy C
    
          B --> A: RequestCreated
          deactivate B
    
          A -> User: Done
          deactivate A
    
          @enduml
    

    2.16.3 Flowchart

    Notes:

    • It’s implemented in showdown-flowchart.js
    • Render diagrams of flowchart
    • Using flowchart.js
    • Check flowchart website for more information.
    • Code inside { } is optional

    Syntaxes

    ```flow {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Syntaxes

    ```flowchart {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    st=>start: Start:>https://www.google.com[blank]
    e=>end:>https://www.google.com
    op1=>operation: My Operation
    sub1=>subroutine: My Subroutine
    cond=>condition: Yes
    or No?:>https://www.google.com
    io=>inputoutput: catch something...
    para=>parallel: parallel tasks
    
    st->op1->cond
    cond(yes)->io->e
    cond(no)->para
    para(path1, bottom)->sub1(right)->op1
    para(path2, top)->op1
    

    Showcases

    st=>start: Start
    e=>end
    op1=>operation: My Operation
    sub1=>subroutine: My Subroutine
    cond=>condition: Yes
    or No?:>https://www.google.com
    io=>inputoutput: catch something
    st->op1->cond
    cond(yes)->io->e
    cond(no)->sub1(right)->op1
    

    2.16.4 Graphviz’s dot

    Notes:

    • It’s implemented in showdown-viz.js
    • Render diagrams of graphviz’s dot
    • Using viz.js.
    • Code inside { } is optional

    Syntaxes

    The <engine name> of json’s “engine” field value is ‘circo’, ‘dot’, ’neato’, ‘osage’, ’twopi’ in syntax language attribute.

    ```dot {"engine": "<engine name>", "align": "<align>"}
    <code content>
    ```
    

    Showcases

    • Dot example with dot engine:
    digraph G {
        main -> parse -> execute;
        main -> init;
        main -> cleanup;
        execute -> make_string;
        execute -> printf
        init -> make_string;
        main -> printf;
        execute -> compare;
    }
    

    • Dot example with circo engine:
    digraph G {
        main -> parse -> execute;
        main -> init;
        main -> cleanup;
        execute -> make_string;
        execute -> printf
        init -> make_string;
        main -> printf;
        execute -> compare;
    }
    

    2.16.5 Railroad diagrams

    Notes:

    • It’s implemented in showdown-viz.js,
    • Render diagrams of railroad
    • Using railroad-diagrams.
    • Code inside { } is optional

    Syntaxes

    ```railroad {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    Diagram(
      Optional('+', 'skip'),
        Choice(0,
          NonTerminal('name-start char'),
          NonTerminal('escape')),
          ZeroOrMore(
            Choice(0,
              NonTerminal('name char'),
              NonTerminal('escape'))))
    

    2.16.6 WaveDrom

    Notes:

    • It’s implemented in showdown-viz.js,
    • Render diagrams of wavedrom
    • Using wavedrom
    • Check wavedrom website for more information.
    • Code inside { } is optional

    Syntaxes

    ```wavedrom {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    {signal: [
      {name: 'clk', wave: 'p.....|...'},
      {name: 'dat', wave: 'x.345x|=.x', data: ['head', 'body', 'tail', 'data']},
      {name: 'req', wave: '0.1..0|1.0'},
      {},
      {name: 'ack', wave: '1.....|01.'}
    ]}
    

    Showcases

    { signal: [
      { name: "pclk", wave: 'p.......' },
      { name: "Pclk", wave: 'P.......' },
      { name: "nclk", wave: 'n.......' },
      { name: "Nclk", wave: 'N.......' },
      {},
      { name: 'clk0', wave: 'phnlPHNL' },
      { name: 'clk1', wave: 'xhlhLHl.' },
      { name: 'clk2', wave: 'hpHplnLn' },
      { name: 'clk3', wave: 'nhNhplPl' },
      { name: 'clk4', wave: 'xlh.L.Hx' },
    ]}
    

    2.16.7 Vega and Vega-Lite

    Notes:

    Syntaxes

    ```vega {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Syntaxes

    ```vega-lite {"align": "left | center | right", "codeblock": true | false}
    <code content>
    ```
    

    Showcases

    • Vega example:
    {
      "$schema": "https://vega.github.io/schema/vega/v5.json",
      "width": 200,
      "height": 200,
      "autosize": "none",
    
      "signals": [
        {
          "name": "startAngle", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
        },
        {
          "name": "endAngle", "value": 6.29,
          "bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
        },
        {
          "name": "padAngle", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 0.1}
        },
        {
          "name": "innerRadius", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 90, "step": 1}
        },
        {
          "name": "cornerRadius", "value": 0,
          "bind": {"input": "range", "min": 0, "max": 10, "step": 0.5}
        },
        {
          "name": "sort", "value": false,
          "bind": {"input": "checkbox"}
        }
      ],
    
      "data": [
        {
          "name": "table",
          "values": [
            {"id": 1, "field": 4},
            {"id": 2, "field": 6},
            {"id": 3, "field": 10},
            {"id": 4, "field": 3},
            {"id": 5, "field": 7},
            {"id": 6, "field": 8}
          ],
          "transform": [
            {
              "type": "pie",
              "field": "field",
              "startAngle": {"signal": "startAngle"},
              "endAngle": {"signal": "endAngle"},
              "sort": {"signal": "sort"}
            }
          ]
        }
      ],
    
      "scales": [
        {
          "name": "color",
          "type": "ordinal",
          "domain": {"data": "table", "field": "id"},
          "range": {"scheme": "category20"}
        }
      ],
    
      "marks": [
        {
          "type": "arc",
          "from": {"data": "table"},
          "encode": {
            "enter": {
              "fill": {"scale": "color", "field": "id"},
              "x": {"signal": "width / 2"},
              "y": {"signal": "height / 2"}
            },
            "update": {
              "startAngle": {"field": "startAngle"},
              "endAngle": {"field": "endAngle"},
              "padAngle": {"signal": "padAngle"},
              "innerRadius": {"signal": "innerRadius"},
              "outerRadius": {"signal": "width / 2"},
              "cornerRadius": {"signal": "cornerRadius"}
            }
          }
        }
      ]
    }
    

    • Vega-Lite example:
    {
      "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
      "description": "Plots two functions using a generated sequence.",
      "width": 300,
      "height": 150,
      "data": {
        "sequence": {
          "start": 0,
          "stop": 12.7,
          "step": 0.1,
          "as": "x"
        }
      },
      "transform": [
        {
          "calculate": "sin(datum.x)",
          "as": "sin(x)"
        },
        {
          "calculate": "cos(datum.x)",
          "as": "cos(x)"
        },
        {
          "fold": ["sin(x)", "cos(x)"]
        }
      ],
      "mark": "line",
      "encoding": {
        "x": {
          "type": "quantitative",
          "field": "x"
        },
        "y": {
          "field": "value",
          "type": "quantitative"
        },
        "color": {
          "field": "key",
          "type": "nominal",
          "title": null
        }
      }
    }
    

    2.16.8 Network Sequence

    Notes:

    • It’s implemented in showdown-sequence.js,
    • Render diagrams of sequence
    • Using js-sequence-diagrams.
    • Code inside { } is optional

    Syntaxes

    The <theme name> of json’s “theme” field value is “hand” or “simple” in syntax language attribute;

    ```sequence {"theme": "<theme name>", "align": "<align>"}
    <code content>
    ```
    

    Showcases

    • Sequence example with hand theme:
    Alice->Bob: Hello Bob, how are you?
    Note right of Bob: Bob thinks
    Bob-->Alice: I am good thanks!
    

    • Sequence example with simple theme:
    Alice->Bob: Hello Bob, how are you?
    Note right of Bob: Bob thinks
    Bob-->Alice: I am good thanks!
    

    2.17. Table of Content Generation

    Example

    [TOC]

    Or

    [[TOC]]

    Or

    [[TOC]]


    2.18. Admonition

    Example

    !!! note

    This is the **note** admonition body
    
    !!! danger Danger Title
        This is the **danger** admonition body
    

    2.19. Attributes

    Example

    item bold red{style=“color:red”} in HTML: item bold red


    2.13. Custom Containers or Alerts

    Notes:

    • Some engine such as Markdown-it, you can add some alert text.
    • Available variants:
    alert-primary
    alert-secondary
    alert-success
    alert-info
    alert-warning
    alert-danger
    alert-light
    alert-dark
    

    Syntaxes

    ::: alert-info
    This is an info text.
    :::
    
    ::: alert-danger
    This is a danger text.
    :::
    

    Showcases

    ::: alert-primary alert-primary :::

    ::: alert-secondary alert-secondary :::

    ::: alert-success alert-success :::

    ::: alert-info alert-info :::

    ::: alert-warning alert-warning :::

    ::: alert-danger alert-danger :::

    ::: alert-light alert-light :::

    ::: alert-dark alert-dark :::

    in HTML

    alert-warning

    or

    alert-info

    or

    alert-warning

    2.14. Comments

    [//]: # (These are reference links used in the body of this note and get stripped out when the markdown processor does its job.


    1. This is the first footnote. ↩︎

    2. Here’s one with multiple paragraphs. For example like this ↩︎

    3. code or code in paragrahps code and codes ↩︎

    4. Footnote can have markup and multiple paragraphs. ↩︎

    5. Another footnote text. ↩︎ ↩︎

    9.16 - About Markdown

    About Markdown

    Planned book about markdown in Indonesian.

    10 - Note

    Note

    10.1 - Digital Well Being

    Digital Well Being

    Digital Well Being

    • Remove all notifications from non-message & calendar apps. Disable all notifications except for the calendar and clock. Disable notifications.
    • Move all non-essential apps off of the front page (perhaps even off of a “page” entirely).
    • Condition everyone around you that you might not reply messages in time
    • Get another device without ANY distraction what so ever. Having a dedicated device for our priority and minimizing adding more stuff to it.
    • Delete every recreational app on your phone. Also delete anything that gamifies passive consumption.
    • Do not open your web browser unless you have a specific search query in mind.
    • Treat your phone as if it had no online connectivity. When you open the phone, use it to organize your notes and structure your thinking. Begin thinking of it as an extension of your brain instead of a bottomless anti-boredom device. As a thought experiment, imagine you had a smart phone without internet access
    • Put some ebooks on your phone and read those. Stop mentally associating the phone with the infinite novelty generated by algorithmic social feeds.
    • Get rid of all the apps where you consume content, except for maybe an eBook reading app. Fill your devices only with apps that allow you to create content. Don’t even worry about sharing the content. Just get apps that let you create. Photography, video, code, drawing, writing, music, whatever.
    • Finding alternatives to screens is probably a good start. You don’t need to toss your phone, just put it farther away from you. Have books/magazines/newspapers with easy access as an alternative. Legos/brain teasers/puzzles/rubix cubes, etc are also great.
    • Get rid of the social media apps. You don’t need them. You’re lying to yourself if you think that you do. Nobody is going to miss your Instagram or Facebook posts. TikTok is a stupid waste of time.
    • Instead, fill your home screen with apps with positive goals.
    • The answer is simple: Stop using smartphone except for explicit reasons. If I want to dick around with tech - I’ll use my desktop/laptop.

    10.2 - Intermittent Fasting

    Intermittent Fasting

    Intermittent Fasting

    Intermittent Fasting Apps

    Intermittent Fasting

    • Level 1 (0h - 2h): Blood Sugar Rises. You’ll feel pretty normal during the first fast hours of fasting because your body is going through the regular process of breaking down glycogen. Your bloood sugar rises. Your pancreas releases insulin to break down glucose for energy and stores the extra glucose for later.
    • Level 2 (2h - 5h): Blood Sugar Falls. As a result of the effects of insulin, your blood sugar decreases to near normal after spiking. And it typically doesn’t continue climbing because insulin is immediately delivered into your circulatory system after eating.
    • Level 3 (5h - 8h): Blood Sugar Returns to Normal. At this stage, your blood sugar level returns to normal. Feeling hungry? Your stomach is reminding you that it’s been a while since your last meal; however, you’re not actually that hungry. Starve to death? Shrivel up and lose your muscle mass? None of this is going to happen. Actually, your glycogen reserves will begin to fall, and you might even lose a little body fat. Your body will continue to digest your last food intake. It starts to use stored glucose for energy, and continues to function as if you’ll eat again soon.
    • Level 4 (8h - 10h): Switch into Fasting Mode. 8 hours after your last meal, your liver will use up the last of its glucose reserves. Now your body goes into a state called gluconeogenesis, which indicates that your body has switched into the fasting mode. Studies show that gluconeogenesis, a metabolic pathway, results in the generation of glucose from body fat instead of carbohydrates. It increases your calorie burning.
    • Level 5 (10h - 12h): Little Glycogen Left. Your glycogen reserves are running out! As a result, you may become irritable or hangry. Just relax, it’s a sign that your body is burning fat! With little glycogen left, fat cells (adipocyte) will release fat into your bloodstream. They also go straight into your liver and are converted into energy for your body. Actually, you are cheating your body into burning fat in order to survive.
    • Level 6 (12h - 18h): You’re in the Ketosis State!. Now it’s the turn of fat to fuel your body. You’re in the metabolic state called ketosis. The glycogen is almost used up and your liver converts fat into ketone bodies - an alternative energy source for your body. Fat reserves are readily released and consumed. For this reason, ketosis is sometimes referred to as the body’s fat-burning" mode. Ketosis produces fewer inflammatory by-products, so it provides health benefits to your heart, metabolism and brain.
    • Level 7 (18h - 24h): Fat Burning Mode Starts!. The longer you fast, the deeper into ketosis you’ll go. By 18 hours, your body has switched into fat-burning mode. Research shows that after fasting for 12 to 24 hours, the energy supply from fat will increase by 60%, and it has a significant increase after 18 hours. Now (1) The level of ketone bodies rises, and (2) ketones act as signaling molecules to tell your body how to better regulate its metabolism in a stressful environment, and (3) your body’s anti-inflammatory and rejuvenation processes are ready to work.
    • Level 8 (24h - 48h): Autophagy Starts!. At this point, your body triggers autophagy (literally means “self-devouring”). Cells start to clean up their house. They remove unnecessary or dysfunctional components. It’s a good thing because it allows the orderly degradation and recycling of cellular components. During autophagy, cells break down viruses, bacteria and damaged components. In this process, you get the energy to make new cell parts. It’s significant for cell’s health, renewal, and survival. The main benefit of autophagy is best known as the body turning the clock back and creating younger cells.
    • Level 9 (48h - 56h): Growth Hormone Goes Up. Your growth hormone level is much higher than the level at which it was before fasting. This benefits from the ketone bodies production and hunger hormone secretion during fasting. Growth hormone helps increase your lean muscle mass and improve your cardiovascular health.
    • Level 10 (56h - 72h): Sensitive to Insulin. Your insulin is at its lowest level since fasting. It makes you more insulin sensitive, which is an especially good thing if you have a high risk of developing diabetes. Lowering your insulin levels has a range of health benefits both short term and long term, such as activating autophagy and reducing inflammation.
    • Level 11 (72h): Immune Cells Regenerate. “Survival of the fittest.” Your body turns down cellular survival pathways and recycles immune cells that are damaged when fighting viruses, bacteria, and germs. In order to fill “the vacancy of the guardians”, your body regenerates new immune cells at a rapid pace. It starts the immune system regeneration and shifts cells to a state of self-renewal. Your immune system becomes stronger and stronger.

    10.3 - Daily Wisdom

    Daily Wisdom

    • In Nature there are neither rewards nor punishments, there are consequences. – R.G. Ingersoll
    • Have constant reminders/cues (what’s important, dreams/expectations)
    • Use motivators (music, dreams/aspirations, good and bad)
    • Use structure/schedule
    • Maintain the same routine, regardless of schedule. Adjust only what is necessary.
    • Prioritize (short-term as well as long-term)
    • Maintain focus/single-tasking
    • Remove/prevent distractions
    • Track tasks done/accomplishments
    • Work vs ‘doing stuff’
    • Look ahead, look back
    • Tackle difficult tasks/situations
    • Appropriate assertiveness
    • Time-limit side treks (eating, news, exploration, entertainment, breaks)
    • Don’t worry about things, do things
    • Budget marketing (time, money)
    • Budget professional development (time, money)
    • Reduce discomfort through familiarity/repetition/exposure
    • Set goals to ‘good enough’/iterative development
    • Review lessons learned periodically to solidify/refresh them
    • Take small steps
    • Don’t get emotionally overloaded
    • Prioritize tasks that are sliding
    • Don’t pick apart a good idea, pursue it
    • Treat failures as false starts & learning experiences (training exercises)
    • Music on 5 minutes before up/downtime (music as motivator)
    • Use caffeine to maintain alertness and focus. If it’s too late in the day for caffeine, GO TO BED.
    • Just START WORKING
    • Maintain an appropriate sense of urgency (but avoid panic and burnout)
    • Take regular stretch breaks (1 minute per 15)
    • End work based on bedtime, not time of day
    • Use zazen (shikantaza) to overcome ‘scattered thoughts’ (too many thoughts or anxious thoughts)
    • Don’t focus on how little time you have, but on what you can get done in the time you have.
    • If you don’t want to do something, DO it and get it out of the way.
    • Start with the MOST IMPORTANT TASK of the day. Everything else can wait.
    • Risk and uncertainty are normal parts of life. Manage them effectively.
    • A life is built one thought, one choice, one action at a time.
    • Start the day with an unpleasant task, to get it out of the way (’eat the frog’).
    • #1 underlying principle: Be proactive (and thereby stay in control).
    • My primary motivator is: Responsibility (reactive)
    • Be yourself. Do your thing.
    • Program a ‘computer-free day’ per week.
    • Use habits to: Reduce processing overhead, Simplify things, Reduce chances for getting off-track, Reduce ability of subconscious to derail
    • Don’t allow a slipped schedule to be an excuse for avoiding things.
    • When projects are slipping, focus exclusively on blockers. Everything else can wait.
    • ‘Do very few things, but be awesome at them.’
    • ‘Do less shallow work — focus on the deep stuff.’
    • Create your own stability.
    • You can be successful without being happy (i.e., you don’t need to be happy in order to be successful; you can still be successful even if you aren’t able to be happy).
    • Focus on what you are responsible for.
    • To avoid binging something, limit yourself to one unit per day; if appropriate, follow it with something (anything) else
    • For video entertainment, set a goal of ‘saving’ before the end/climacs (preemptive pause); don’t get hooked to continue to the next unit (level, show, etc.)
    • You don’t need to feel good all the time (i.e., even if you don’t feel good, keep moving forward).
    • When you feel overwhelmed, pick ONE THING to focus on, ignore everything else; then when that’s done, pick ONE THING….
    • Don’t ‘chain’ tasks if it causes the whole chain to be put off; do what you can NOW and worry about the rest later
    • If you can’t do everything that needs to be done, do SOMETHING (could be a small piece of ’everything’, or just one more-manageable task)
    • I don’t need to feel good to do daily things.
    • You can’t make up for lost time; make the best of what you have (left).
    • Work is life (life requires work).
    • Don’t focus on what’s wrong, but on what can be done to make things better.
    • 3..2..1 (countdown, then just do it)
    • Eat the frog!

    10.4 - Habit

    Habit

    Mindfulness Habit

    Physical Wellness

    • Avoid Alcohol
    • Avoid Caffeine
    • Avoid Sugar
    • Dim the Lights
    • Eat Healthier Foods
    • Floss
    • Get Enough Sunlight
    • Go for a Run
    • Go for a Walk (20 mins)
    • Go to bed on time, enough sleep (7-9 hours)
    • Maintain Better Posture
    • Practice Deep Breathing
    • Stay Hydrated
    • Stretch it Out
    • Wake up Earlier

    Social Wellness

    • Step outside your comfort zone, get more experiences
    • Stick to personal boundaries
    • Write 3 things you are grateful for

    Mental Wellness

    • Spend Time in Nature (30 mins)
    • Stop Working after Work Hours
    • Watch the Sunset

    Intellectual Wellness

    • Listen to Podcasts
    • Practice a Hobby
    • Read More (30 mins)

    Spiritual Wellness

    • Form deeper connections
    • Meditate
    • Trust your instincts

    Habit Tracker Apps

    Behavior

    • habit: trigger, behavior, reward
    • see food, eat food, feel good

    Habit

    10.6 - Interesting Academia Articles

    Interesting Academia Articles

    Critical Notes about Academia’s Lives

    Academia

    Critic to Higher Education

    PhD Management

    • Advisor should express his expectations for student finishing and tailoring those expectations to student career goals clear up front
    • Each time, make evaluation of those expectations
    • Create a expectation document, for example, it will contain target like:
      • 1 journal paper as the first author, so that they learn how that process (often is a review or perspective paper on their field, which goes in their dissertation)
      • 2 first author papers in top-tier machine learning venues (goes in dissertation)
      • 1 first author paper in a top-tier or second tier venue (goes in dissertation)
      • 1 collaborative paper with another PhD student (have to learn how to collaborate)
    • PhD Guidelines
    • Lessons from my PhD - Austin Z. Henley
    • 10 reasons Ph.D. students fail

    10.7 - Interesting Technology Articles

    Interesting Technology Articles

    Interesting Reading

    Interesting Reading

    Article

    Interesting Article

    Article to Read

    Article

    Reading Tips

    ML Reading

    Working

    Interesting Reading

    10.8 - Productivity Tools and Tips

    Productivity Tools and Tips

    Productivity Tools

    Time Tracker and Productivity

    OKR

    Productivity

    1. At the beginning of the day, create one goal that I have to accomplish that day. The goal needs to be specific enough that I can definitively say when its done, and it needs to be completely realistic for me to finish it that day, so that I can say “Yes, I can definitely do this. No excuses”. It also needs to be significant enough that at the end of the week, even if I only did those goals, I would still feel like Im making some consistent progress. Typically the goals I choose are things that might take one to two hours of focused effort.
    2. Only do one thing at a time, and log what I’m doing as I go. Before I start a task, I write down what Im about to do. When I finish the task, I check it off and write the next bullet point. If something comes up while executing the task, like realizing I have a question I need to ask someone, instead of asking them right away, I will write down a “TODO” in-line in my log and box it to come back to later. So if the task is “Check email”, I write down “Check email”, open my email, read it and execute only small tangential tasks (so, e.g., I dont see an email about a code review and then get distracted and go do the code review), and when Im done, I quit my email and check off my task. I do the same for Slack, which means I dont leave it open in the background. If I take a break, I write “Break” and check it off when I’m done and come back to my desk. I write my big goal at the top of the page and when I finish it, I box it and check it off for some extra satisfaction. At the end of the day I write DONE and box it, to get some closure. Note: I find if I write down 5 tasks and cross them off one by one, I will gravitate to the short easy ones first for instant gratification.
    3. Leave my phone in the other room while I’m working. It seems that I really do have to be physically separated from it by a significant distance to keep from being distracted by it.

    10.9 - Digital Literacy

    Digital Literacy

    Digital literacy is

    • skill to live, learn, and work where communication and acces to information is through digital technologies (internet platforms, social media, mobile devices)
    • ability to find, evaluate, and clearly communicate information through typing and other media on various digital platforms
    • the ability to use information and communication technologies to find, evaluate, create, and communicate information, requiring both cognitive and technical skills

    Level:

    • Accesss
    • Use:
      • Techincal fluency
    • Understand
      • Recognize impact
      • Recognize potential
    • Create

    Skill:

    • Critical Thinking
    • Communication and Collaboration Skills
      • Clearly express ideas
      • ask relevant questions
      • maintain respect
    • Practical Technical Skills
      • how to access
      • how to manage
      • how to create information
    • Social and Cultural Skills

    Competency

    • Critical thinking
    • Online safety
    • Digital culture (social cultural understanding skill)
    • Collaboration
    • Creativity
    • Finding Information
    • Effective Communication and Netiquette
    • Functional skill

    Key points

    • Digital media are networked.
    • Digital media are persistent, searchable and shareable.
    • Digital media have unknown and unexpected audiences.
    • Digital media experiences are real, but don’t always feel real.
    • How we respond and behave when using digital media is influenced by the architecture of the platforms, which reflects the biases and assumptions of their creators.

    Digital Literacy Skills

    • Ethics and Empathy (ethical decisions : cyberbullying, sharing other people’s content).
    • Privacy and Security (online privacy, reputation and, how to share, understanding data collection, malware and phising, digital footprint awareness).
    • Community Engagement (citizen rights, positive influence, active, engaged citizens.
    • Digital Health (managing screen time, balancing online and offline lives, managing online identity; dealing with digital media; understanding unhealthy online relationships.
    • Consumer Awareness (digital world is commercialized online environments: recognizing and interpreting advertising, branding and consumerism; reading and understanding the implications of website Terms of Service and privacy policies; and being savvy consumers online).
    • Finding and Verifying (skills to effectively search the Internet, and then evaluate and authenticate the sources and information they find)
    • Making and Remixing (making and remixing skills to create digital content, understanding legal and ethical considerations, and to use digital platforms to collaborate with others.

    Goal of Digital Literacy

    • Critical/creative thinking
    • Constructive social action
    • ICT Innovation (in ICT or with ICT)

    Access:

    • Distribution, Infrastructure, Tools

    Use:

    • Navigation skills
    • Accessing skills
    • Tools related skills

    Understand

    • Right and Responsibility
    • Scial awareness and identity
    • Judgement
    • Safety and security
    • Decision making

    Create

    • Problem solving
    • Synthesizing
    • Culturel empowerment

    Critical Thinking

    Basic of Critical Thinking:

    • Analyse and evaluate information and arguments
    • See patterns and connections,
    • Identify and build meaningful information

    Strategy of Critical Thinking:

    • Who (siapa yang menulis, untuk siapa, siapa yang diuntungkan, siapa yang dipengaruhi, siapa sumbernya, siapa yang mensponsori?)
    • What (apa yang tidak disampaikan kepada kita, apa pendapat yang berbeda, apa yang lebih penting dari yang disampaikan, apa kekuatan dan kelemahannya, apa lagi detil yang harus kita ketahui)
    • Where (dari mana informasi ini datang, di mana itu terjadi, di mana bukti pendukungnya)
    • When (kapan terjadi, kapan dibuat, kapan diperbarui informasinya, kapan kejadian yang sama terjadi di masa lalu)
    • Why (mengapa ini dibuat, mengapa memilih pandangan semacam itu, mengapa ini penting dan relevan)
    • How (bagaimana aku bisa tahu ini benar, bagaimana meyakinkan, bagaimana ini akan bermanfaat)

    Online Safety

    Problem: cyber bullying, sexting, age-appropriate content, photo sharing and permission, Online extortion, Online exploitation, Plagiarism and copyright, Virus protection

    Quick guide for online safety

    • know risks
    • keep your personal information safe
    • Be kind online
    • don’t download unknown thing

    Digital culture Problems: transhumanism, AI, cyber ethics, security, privacy, hacking, social engineering, modern psychology

    Digital Collaboration including: digital team, digital discovery, digital content creation, digital communication, digital presentation

    Finding Information

    • think before begin
    • where are you searching?
    • dig deep of the search results
    • check the website/link
    • take closer look (credibility)
    • look beyond the headline
    • camera can lie, keyboard can lie
    • virality is not accuracy
    • check other sources, compare
    • check the fact
    • check your bias
    • is it a joke?
    • ask the experts

    Communication Skills

    Online shairng tips

    • share only what you fell comfortable with
    • avoid sharing your location/identity
    • be mindful of other people’s feelings
    • pay attention to your privacy settings
    • don’t share every photo/video

    Netiquette

    • behaviour : respect people, avouid cyberbullies
    • language: think before click, every character matters
    • timing: stay on topic
    • copyright: make sure you have permission
    • content: use your critical thinking

    Link:

    10 Langkah Aksi Literasi Digital [1] Jaga Privasi Digital [2] Amankan Data Digital [3] Waspadai Bahaya Digital [4] Kritis terhadap Informasi [5] Verifikasi setiap Informasi [6] Komunikasi Digital dengan Etis [7] Empati terhadap Warga Digital [8] Kolaborasi Positif secara Digital [9] Tepat dalam Mencari Informasi Digital [10] Buat Kreasi Inovasi Digital

    Proyek: Pelatihan Kecakapan Literasi Digital

    Apa itu Literasi Digital?

    Literasi Digital adalah

    • kemampuan dalam belajar, bekerja, dan hidup dengan menggunakan teknologi digital (internet, media sosial, perangkat mobile) sebagai sarana komunikasi dan akses informasi.
    • kemampuan menemukan, menilai, dan menyampaikan informasi dengan menggunakan perangkat digital
    • pengetahuan dan kemampuan teknis untuk menggunakan teknologi komunikasi dan informasi untuk mencari, menilai, membuat, dan menyampaikan informasi

    Apa tujuan dari Literasi Digital

    • Masyarakat dapat meningkatkan kemampuan berpikir kreatif dan kritis dengan/dalam menggunakan teknologi informasi dan komunikasi
    • Masyarakat dapat mengembangkan inovasi dan meningkatkan kesejahteraan dengan menggunakan teknologi informasi dan komunikasi
    • Masyarakat dapat mengubah keadaan sosial dengan teknologi informasi dan komunikasi

    Apa saja ukuran Literasi Digital suatu masyarakat?

    • Budaya Digital (digital culture)
    • Etika Digital (digital ethics)
    • Kecakapan Digital (digital skill)
    • Keamanan Digital (digital safety)

    Bagaimana cara meningkatkan kecakapan Literasi Digital masyarakat?

    • Pelatihan kecakapan literasi digital
    • Sosialisasi kesadaran dan kecakapan literasi digital

    Apa saja topik pelatihan dan sosialisasi Literasi Digital masyarakat?

    • Etika dan empati secara digital (termasuk anti cyberbullying, etika sharing).
    • Privasi dan keamanan digital (privasi online, keamanan data dan akses, malware dan phising, kesadaran jejak digital).
    • Hak dan kewajiban warga digital.
    • Kesehtan digital (pengaturan screen time, keseimbangan kehidupan online dan offline, mengatur identitas online, menjaga relasi online).
    • Kesadaran sebagai konsumen digital.
    • Menemukan dan memverifikasi informasi digital.
    • Membuat den mencampur konten digital.
    • Pedoman Berinternet Sehat
    • Kewirausahaan Digital
    • Dampak sosial media untuk anak dan remaja
    • Keamanan siber untuk bisnis online
    • Eksploitasi seksual pada internet

    10.11 - Derivative Works and Attribution

    Derivative Works and Attribution

    • Copyright protection is available for various types of original creative works, including: Literary works (both fiction and non-fiction), Sound recordings, Musical works (including the musical score and lyrics), Dramatic works (such as plays, including music), Motion pictures (including those shown at movie theaters, on television (regardless of whether broadcast over-the-air, by cable, or by satellite), or over the internet), Visual artworks (such as paintings, drawings, and sculptures)
    • A “derivative work” is a work based upon one or more preexisting works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be recast, transformed, or adapted. A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represent an original work of authorship, is a “derivative work.”
    • There must be major or substantial new material for a work to be considered copyrightable as a derivative work. The new material must be sufficiently original and creative to be copyrightable by itself.
    • Common examples of derivative works are: A new, updated or revised, edition of a book, A translation of a book into another language, A sequel to a novel or motion picture, A novel adapted to a screenplay, stage production, or motion picture, A new musical arrangement of a composition.
    • There are two ways that derivative rights are protected under copyright law.
      • First, the derivative work has protection under the copyright of the original work. Copyright protection for the owner of the original copyright extends to derivative works. This means that the copyright owner of the original work also owns the rights to derivative works. Therefore, the owner of the copyright to the original work may bring a copyright infringement lawsuit against someone who creates a derivative work without permission.
      • Second, the derivative work itself has copyright protection. The creator of the derivative work owns the copyright to the derivative work. This can either be the creator of the original work, or someone else who has obtained a derivative work license from the holder of the original copyright. The copyright of a derivative work is separate from the copyright to the original work. Therefore, if the copyright holder gives someone a license to create a derivative work, the holder retains the copyright to the original work. In other words, only the derivative rights are being licensed.
    • Derivative work as a “work based or derived from one or more already existing works.”
    • To be copyrightable, a derivative work must incorporate some or all of a preexisting work and add new original copyrightable authorship to that work.
    • The term “derivative work” refers to the entire new creative work as a whole, not merely the new elements.
    • The copyright ownership in the derivative work is independent of any copyright protection in the preexisting material.
    • The copyright in the preexisting materials remains with their owner.
    • The owner in the preexisting work must authorize the creation of a derivative work in order for it to be separately owned by another. If not authorized, the preparation of a derivative work constitutes copyright infringement of the preexisting work and is not copyrightable.
    • Once the copyright owner authorizes the preparation of a derivative work, the grant to utilize the preexisting work in the derivative work created is perpetual and cannot be terminated by the owner of the preexisting work. The derivative-work owner holds all copyright rights in the new work created, including the right to license and transfer the derivative work to a third party. The derivative-work owner does not own the copyright in the preexisting material employed in the work but holds the exclusive ownership in the new derivative work. The derivative-work owner therefore can license or transfer the copyrights in the derivative work without permission from the owner of the preexisting materials.
    • Am I required to claim a copyright on my modifications to a GPL-covered program? You are not required to claim a copyright on your changes. In most countries, however, that happens automatically by default, so you need to place your changes explicitly in the public domain if you do not want them to be copyrighted. Whether you claim a copyright on your changes or not, either way you must release the modified version, as a whole, under the GPL
    • What does the GPL say about translating some code to a different programming language? Under copyright law, translation of a work is considered a kind of modification. Therefore, what the GPL says about modified versions applies also to translated versions. The translation is covered by the copyright on the original program. If the original program carries a free license, that license gives permission to translate it. How you can use and license the translated program is determined by that license. If the original program is licensed under certain versions of the GNU GPL, the translated program must be covered by the same versions of the GNU GPL.
    • How do I get a copyright on my program in order to release it under the GPL? Under the Berne Convention, everything written is automatically copyrighted from whenever it is put in fixed form. So you don’t have to do anything to “get” the copyright on what you write—as long as nobody else can claim to own your work. However, registering the copyright in the US is a very good idea. It will give you more clout in dealing with an infringer in the US.
    • The Berne Convention Implementation Act of 1988: The Berne Convention formally mandated several aspects of modern copyright law; it introduced the concept that a copyright exists from the moment that a work is “fixed”, rather than requiring registration. It also enforces a requirement that countries recognize copyrights held by the citizens of all other signatory countries.

    Derivative of Derivative Works

    • Person A is original creator of Work0 and have licensed his work under CC-BY 4.0. Person B created a derivative work (Work1) of Person A and he attributed A in a proper way. Then Person C created a derivative work (Work2) of B, does he still need to give attribution for A?
    • If a license requires attribution of the original authors/copyright holders when you create a derived work, then that means you need to give attribution to all copyright holders. If Person A creates Work0, which is then adapted to Work1 by Person B, then the copyright of Work1 is shared between Jane and Alice. This means that, if the work is under a CC-BY license and Person C uses Work1 to create a derived work Work2, then Bob needs to attribute both Person A and Person B.

    Attribution

    Attribution of Derivative Work Examples

    "[Derivative Work]" by [Derivative Creator] is licensed under CC BY-SA 4.0 / A derivative from the original work

    Copyright 2017 [Derivative Creator] Copyright 2016 [Original Creator] 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 This file has been modified by [Derivative Creator] to add support for foo and get faster baz processing.

    This work, “[Derivative Work]”, is a derivative of “[Original Work]” by [Original Creator], used under CC BY. “[Your Work]” is licensed under CC BY by [Derivative Creator].

    Copyright (c) 2016 [Original Creator] Modifications Copyright (c) 2017 [Derivative Creator] 2017-10-01: Update the interactive streamline nosql to supply strategic users This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    Copyright (c) 2019 [Derivative Creator], based on [Original Work], (c) 2014-2018 [Original Creator-1], (c) 2003-2018 [Original Creator-1]

    Materials on this page were adapted from:

    • The Creative Commons Wiki licensed under CC BY 4.0.
    • How to attribute Creative Commons licensed Materials by National Copyright Unit, Copyright Advisory Groups (Schools and TAFEs) licensed under CC BY 4.0.
    • “Open Attribution Builder” by Open Washington, SBCTC licensed under CC BY 4.0

    The rap in this video was based on ‘Let’s Get Moving’ by charliehiphop available at http://www.charliehiphop.com. Licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported licence, http://creativecommons.org/licenses/by-nc-sa/3.0.

    10.12 - Fair Use of Licensed Works

    Fair Use of Licensed Works

    License: Fair use

    the fair use of a copyrighted work, including such use by reproduction in copies or phonorecords or by any other means specified by that section, for purposes such as criticism, comment, news reporting, teaching (including multiple copies for classroom use), scholarship, or research, is not an infringement of copyright

    • Overview Sections Archive - Stanford Copyright and Fair Use Center
    • Summaries of Fair Use Cases - Copyright Overview by Rich Stim - Stanford Copyright and Fair Use Center
    • Fair uses:
      • a fair use is any copying of copyrighted material done for a limited and “transformative” purpose, such as to comment upon, criticize, or parody a copyrighted work.
      • Such uses can be done without permission from the copyright owner.
      • Fair use is a defense against a claim of copyright infringement.
    • Main categories:
      • Commentary and Criticism : criticism, comment, news reporting, teaching, scholarship, or research
      • Parody
    • Four factors:
      • The Transformative Factor: The Purpose and Character of Your Use
        • Whether the material has been used to help create something new or merely copied verbatim into another work.
        • So check: [1] Has the material you have taken from the original work been transformed by adding new expression or meaning? [2] Was value added to the original by creating new information, new aesthetics, new insights, and understandings?
        • Example of transformative uses: parody, scholarship, research, or education
      • The Nature of the Copyrighted Work
        • Dissemination of facts or information benefits the public. Fair use copy from factual works (biographies, facts) is better than you do from fictional (plays or novels).
        • Fair use copy the material from a published work is better than from an unpublished work
      • The Amount and Substantiality of the Portion Taken
        • The less you take, the more likely that your copying will be excused as a fair use, but you are more likely to run into problems if you take the most memorable aspect of a work
      • The Effect of the Use Upon the Potential Market
        • Is whether your use deprives the copyright owner of income or undermines a new or potential market for the copyrighted work.
    • Common mistakes:
      • Acknowledgment of the source material (such as citing the photographer) may be a consideration in a fair use determination, but it will not protect against a claim of infringement. So check four factors above.
      • Disclaimers such as “No Copyright Intended” or fair use claims, don’t mean that the work qualifies as a fair use. If the fair use factors weigh against you, the disclaimer wont make any difference. So check four factors above.
    • To limit damages:
      • Stating something to the effect of: “No copyright is claimed in [content copied] and to the extent that material may appear to be infringed, I assert that such alleged infringement is permissible under fair use principles in U.S. copyright laws. If you believe material has been used in an unauthorized manner, please contact the poster.”
      • Stating disclaimers. “This book is not associated with or endorsed by the xxx Company.”

    10.13 - Slide and Presentation Tips

    Slide and Presentation Tips

    Slide Tips

    • Slides that are text only distract the audience. They read the text.
    • Slides that are non-self-explanatory images, require the audience to listen to the speaker. Try it. Put two circles on the screen and see what people do. They look at you for explanation.
    • TedX has a pretty good style-guide about slides:
    • What goes in my slides?
      • Images and photos: To help the audience remember a person, place or thing you mention, you might use images or photos. People will understand that the images represent what you’re saying, so there is no need to verbally describe the images onscreen.
      • Graphs and infographics. Keep graphs visually clear, even if the content is complex. Each graph should make only one point.
      • No slide should support more than one point.
    • What should the slides look like?
      • Use as little text as possible – if your audience is reading, they are not listening.
      • Avoid using bullet points. Consider putting different points on different slides.
    • But, slides with images and no text are a nightmare for non visual person.
    • So good slides are: important graphs with little text

    Presentation Tips

    • See Patrick Wilson’s “How To Speak”
      • How to Start
        • Do not start a talk with a joke. Audience are not ready yet.
        • Promise - Tell them what they gonna learn at the end of your talk.
      • Samples
        • Cycle – make your idea repeated many times in order to be completely clear for everyone.
        • Make a “Fence” around your idea so that it can be distinguished from someone elses idea.
        • Verbal punctuation – sum up information within your talk some times to make listeners get back on.
        • Ask a question - intriguing one
      • Place and Time
        • Best time for having a lecture is 11 am (not too early and not after lunch)
        • The place should be well lit.
        • The place should be seen and checked before the lecture.
        • The place should not be full less than a half, it must be chosen according to the amount of listeners.
      • Board and Props
        • Board – it’s got graphics, speed, target. Watch your hands! Don’t hold them behind your back, it’s better to keep them straight and use for pointing at the board.
        • Props – use them in order to make your ideas visual. Visual perception is the most effective way to interact with listeners.
      • Projections
        • Don’t put too many words on a slide. Slides should just reflect what you’re saying, not the other way around. Pictures attracts attention and people start to wait for your explanation – use that tip.
        • Make slide as easy as you can – no title, no distracting pictures, frames, points and so on.
        • Do not use laser pointer – due to that you lose eye contact with the audience. Instead you can make the arrows just upon a slide.
      • Case: Informing (e.g. teaching)
        • Promise: a promise what we’will go through
        • Inspiration: they were inspired when someone exhibited passion about what they were doing
        • How to Think: Education is continuity of storytelling. So, provide audience with the stories they need to know, the questions they need to ask about those stories, mechanisms for analyzing those stories, ways of putting stories together, ways of evaluating how reliable a story is.
      • Case: Persuading (e.g. oral exam, job talk, getting famous)
      • Oral Exam
        • the most usual reason for people failing an oral exam is failure to situate and a failure to practice. By situate, it’s important to talk about our research in context (problem, solution, impact).
      • Job talk
        • Show to your listeners that your stuff is cool and interesting and you’re not a rookie
        • You have to be able to: (1) show your vision of that problem, (2) show that you’ve done particular things (by steps), (3) conclude
        • Vision of a problem that somebody cares about and something new in your approach.
        • How do you express the notion that you’ve done something? By listing the steps that need to be taken in order to achieve the solution to that problem.
        • And then you conclude by you conclude by enumerating your contributions.
        • All of that should be done real quick in no more than 5 min.
      • Getting Famous: about how you’re going to be recognized for what you do. Your ideas are like your children, so what you want to do is to be sure that you have techniques, mechanisms, thoughts about how to present ideas that you have so that they’re recognized for the value that is in them.
      • If you want to your ideas be remembered you’ve got to have “5 S”:
        • Symbols associate with your ideas (visual perception is the best way to attract attention)
        • Slogan (describing your idea)
        • Surprise (common fallacy that is no longer true, for instance, just after you’ve told about it)
        • Salient Idea (an idea which not necessarily important but the one that sticks out)
        • Story (how you did it, how it works…)
      • How to Stop Pursuading Presentations
        • Don’t put the end with:
          • put collaborators at the end (do that at the beginning).
          • ‘questions?’
          • ’link: https://bla.bla'
          • ’the end'
          • ‘conclusions’ (it will better ended with ‘contributions’).
          • ‘Thank you (for listening)’ (except, after applause).
        • Put the end with:
          • contribution
          • jokes, since people then will leave the event feeling fun and thus keep a good memory of your talk.
          • a salute to people (how much you valued the time being here, the people over here…, “I’d like to get back, it was fun!"). With this you won’t have to worry about how to end!

    Presentation Tips by https://soappresentations.com/

    • Wow your audience with a great story
      • Instead of thinking: “What slides should I use”, try asking, “What story do I tell?”
      • Know your audience and prepare a story that will appeal to it
      • A presentation can be just like a good movie
      • If the story is really good, dialogue is unnecessary
      • Continuity is one of the main elements of a good movie and a good presentation
      • If something has no reason for being, get rid of it!
      • Activate the imagination of your audience
      • Confronted problems, explored the possible consequences of the problem, and created heroic solutions in the form of products
      • Give your audience a bit of fun
      • Understanding comes before engaging
      • A presentation is less about how good you are and more about how your advantages can help your audiences
      • A presentation needs action, contrasts, ups and downs and characters that are vivid
      • Choose a few awesome moments that will remain forever with your audience
    • Create state-of-the-art slide
      • Invest most of your time planning the message you want to convey
      • Think of the way you can convey content with the slides before thinking of what the visual will be
      • Only use on the slides text that will help guide your speech
      • Visuals exist to support the presenter’s speech
      • If the visuals are too informal, unprofessional, or imprecise, the audience will draw similar conclusions about you
      • The more dialogue and lettering that’s needed, the less efficient the visuals are.
      • Each movie scene should contain only indispensable elements. That same is true for presentation slides.
      • The more flexible you are when transforming the script into visuals, the better the result is going to be
      • It’s crucial to develop a first slide that will generate interest and excitement in everything you’re about to say
      • Use the potential of typography well. Play with words.
      • PowerPoint presentation slides are only a supporting device for the speaking portion
      • A presentation is a team effort between you and your slide deck.
      • Presenter think their work is done right about the time the PowerPoint work is finished (WRONG)
    • Become a better presenter
      • Anybody can learn to be a great presenter. You must believe that.
      • Take the time to master your fears.
      • Know your story flawlessly
      • Study the presentation flow and its sequencing
      • Practice, practice, practice, practice
      • Rehearse until the delivery is natural
      • Always keep your goal in mind, so you never lose focus.
      • Speak from the heart
      • Be spontaneous!
      • Speak concisely, clearly and simply
      • Tone of voice has an important impact, so use it as your tool in your favor
      • Improvise as needed, have a few backup stories
      • Convey enthusiasm with your voice
      • Make visual contact with your audience
    • Improve your performance level
      • Plan in advance, determine your objective, decide which format will work, and use only that format
      • Prioritizing is one of the main challenges in creating a great presentation
      • A presenter can engage any audience using PowerPoint in the right way
      • Great ideas aren’t necessarily expensive
      • The impact of presentation is increased meaningfully by connecting the slides either through story or through the visuals.
      • Stand-alone slides are a great way to make a presentation boring
      • The differences between face-to-face and the stand-alone presentation are important enough to kill your chances of success if you use mixed media
      • If you feel that your audience is sleepy or disinterested change your own inner disposition
      • Leave details to be discussed in a different meeting or in a document
      • A tiny misunderstanding can become a huge mess
      • Never interrupt a question from the audience it may seem arrogant on your part
      • The components of great presentations are universals, they go beyond slides and can be found in many other forms of art.

    10.14 - Interesting Laws

    Interesting Laws

    Job Laws

    “When a measure becomes a target, it ceases to be a good measure.”

    • Goodhart’s Law

    “The amount of energy needed to refute bullshit is an order of magnitude larger than to produce it.”

    • Brandolini’s law

    “In any dispute the intensity of feeling is inversely proportional to the value of the issues at stake. That is why academic politics are so bitter.”

    • Sayre’s Law

    10.15 - Interesting Quotes

    Interesting Quotes

    Job Quotes

    “As long as we work hard, our boss will soon be able to live the life he wants!”

    Fun Quotes

    The England Footbal team visited an orphanage in Russia. “It’s heartbreaking to see their little faces wth no hope”, said Vladimir, aged 6.

    Academia Quote

    “Academic politics are so vicious precisely because the stakes are so small.”

    • Sayre’s Law “In any dispute the intensity of feeling is inversely proportional to the value of the issues at stake.”

    Product Quote

    I want people who use my product to be happy with it. If they are not, I dont want them bad mouth me. When someone is unhappy, that an excellent opportunity for me to learn, so I want to incentivize my customer to engage with me in a productive and not antagonistic way.

    Talent Quote

    Talent is universal, while opportunity is not

    • Nicholas Kristof

    Complexity

    Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.

    • Alan Perlis

    Meaning of Life

    “If our life is the only thing we get to experience, then it’s the only thing that matters. If the universe has no principles, then the only principles relevant are the ones we decide on. If the universe has no purpose, then we get to dictate what its purpose is”

    • Kurzgesagt

    Not Stupid

    If it is stupid but it works, it isn’t stupid ― Mercedes Lackey

    Simple

    “You live simple, you train hard, and live an honest life. Then you are free.” ― Eliud Kipchoge

    Writing

    “Writing is Nature’s way of showing you how sloppy your thinking is”

    • Bob Mugele

    It is difficult to know what you should know when you have a lot to learn and are in an intelligence-signaling environment. A side effect of having written detailed technical notes is that I calibrate my confidence on a topic. If I now understand something, I am sure of it and can explain myself clearly. If I don’t understand something, I have a sense of why it is difficult to understand or what prerequisite knowledge I am missing.

    Collection

    Education

    The biggest benefit from education isn’t facts, its the research and critical thinking skills you develop. The primary thing you should be deriving from your university education is how to conduct effective critical analyses. You’re learning how to learn. While also getting some useful field-specific information out of it. Structure and standards. Finding the right information, in the right order isn’t easy for everyone. Education isn’t really about acquiring information; its about learning methods to engage with materials and information to draw conclusions and then express further possibilities in written and spoken form.

    Metric

    Any observed statistical regularity will tend to collapse once pressure is placed upon it for control purposes.

    • Goodhart’s law

    When a measure becomes a target, it ceases to be a good measure.

    • Goodhart’s law by Marilyn Strathern

    Brandolini’s Law (the Bullshit Asymmetry Principle): The amount of energy needed to refute bullshit is an order of magnitude bigger than to produce it.

    Shirky Principle: “Institutions will try to preserve the problem to which they are the solution,”

    Putt’s Law: “Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand.”

    Putt’s Corollary: “Every technical hierarchy, in time, develops a competence inversion.” –> technically competent people remain directly in charge of the actual technology while those without technical competence move into management.

    Dilbert principle: “leadership is nature’s way of removing morons from the productive flow” –> that companies tend to systematically promote their least competent employees to management, to limit the amount of damage they are capable of doing.

    Parkinson’s law is the adage that “work expands so as to fill the time available for its completion”. –> growth of the bureaucracy The demand upon a resource tends to expand to match the supply of the resource (If the price is zero).The reverse is not true.

    Data expands to fill the space available for storage.

    Poems

    If you can keep your head when all about you
    Are losing theirs and blaming it on you;
    If you can trust yourself when all men doubt you,
    But make allowance for their doubting too;
    If you can wait and not be tired by waiting,
    Or, being lied about, don’t deal in lies,
    Or, being hated, don’t give way to hating,
    And yet don’t look too good, nor talk too wise;

    If you can dream—and not make dreams your master;
    If you can think—and not make thoughts your aim;
    If you can meet with triumph and disaster
    And treat those two impostors just the same;
    If you can bear to hear the truth you’ve spoken
    Twisted by knaves to make a trap for fools,
    Or watch the things you gave your life to broken,
    And stoop and build ’em up with wornout tools;

    If you can make one heap of all your winnings
    And risk it on one turn of pitch-and-toss,
    And lose, and start again at your beginnings
    And never breathe a word about your loss;
    If you can force your heart and nerve and sinew
    To serve your turn long after they are gone,
    And so hold on when there is nothing in you
    Except the Will which says to them: “Hold on”;

    If you can talk with crowds and keep your virtue,
    Or walk with kings—nor lose the common touch;
    If neither foes nor loving friends can hurt you;
    If all men count with you, but none too much;
    If you can fill the unforgiving minute
    With sixty seconds’ worth of distance run—
    Yours is the Earth and everything that’s in it,
    And—which is more—you’ll be a Man, my son!

    Will Rogers Phenomenon

    The Will Rogers phenomenon is obtained when moving an element from one set to another set raises the average values of both sets:

    When the Okies left Oklahoma and moved to California, they raised the average intelligence level in both states.

    The effect will occur when both of these conditions are met:

    • The element being moved is below average for its current set. Removing it will raise the average of the remaining elements.
    • The element being moved is above the current average of the set it is entering. Adding it to the new set will raise its average.

    Judgement

    My willingness to judge something should be proportional to how much I know about it.

    My Seatbelt Rule for Judgment

    Do not remove a fence until you know why it was put up in the first place.

    Chesterton’s Fence: A Lesson in Second Order Thinking - Farnam Street

    10.16 - Student Assessment

    Student Assessment

    Teaching Cycle

    • Planning
    • Implementing
    • Evaluating

    What is Assessment

    • Assessment : the wide variety of methods or tools that educators use to evaluate, measure, and document the academic readiness, learning progress, skill acquisition, or educational needs of students.
    • Principle: practicality, reliability, validity, authenticity, washback
    • Assessment Process
      • Step 1: Clearly define and identify the learning outcomes.
      • Step 2: Select appropriate assessment measures and assess the learning outcomes.
      • Step 3: Analyze the results of the outcomes assessed.
      • Step 4: Adjust or improve programs following the results of the learning outcomes assessed.
    • 3 types of assessment
      • Assessment of Learning (Summative Assessment) : A type of summative assessment that aims to reflect students knowledge of a given area through a grade.
      • Assessment for Learning (Formative Assessment) : A type of formative assessment that aims to provide teachers with the necessary data to adjust the learning process while it is happening.
      • Assessment as Learning

    Assessment Techniques

    Assessed Workshop Podcast Case Study Collaborative Wiki/Blog Essay Fieldwork Portfolio (Group/Personal) Presentation (Group/Personal) In-class test Laboratory Practical Assessment Research Project Laboratory Notebook Laboratory Report Literature Review Open-Book Exam Oral Examination Peer Assessment Poster Poster Presentation Project Proposal Research Proposal Self Assessment Site Investiagtion Fieldwork

    Standar Nasional Pendidikan

    Proses Pembelajaran -> Metode Pembelajaran -> Bentuk Pembelajaran

    Metode Pembelajaran:

    • diskusi kelompok
    • simulasi
    • studi kasus
    • pembelajaran kolaboratif
    • pembelajaran kooperatif
    • pembelajaran berbasis proyek
    • pembelajaran berbasis masalah
    • metode pembelajaran lain

    Bentuk pembelajaran: wadah atas satu atau gabungan dari beberapa metode pembelajaran. Bentuk pembelajaran dapat dilakukan di dalam Program Studi dan di luar Program Studi.

    Bentuk Pembelajaran:

    • kuliah;
    • responsi dan tutorial;
    • seminar;
    • praktikum, praktik studio, praktik bengkel, praktik lapangan, praktik kerja;
    • penelitian, perancangan, atau pengembangan; (ket: wajib untuk D-4, S-1, S-2, S-3, profesi, spesialis)
    • pelatihan militer;
    • pertukaran pelajar;
    • magang;
    • wirausaha
    • bentuk lain pengabdian kepada masyarakat. (ket: wajib untuk D-4, S-1, profesi, spesialis)

    Penilaian: penilaian proses dan hasil belajar

    Teknik Penilaian

    • observasi,
    • partisipasi,
    • unjuk kerja,
    • tes tertulis,
    • tes lisan,
    • angket.

    Instrumen Penilaian

    • penilaian proses dalam bentuk rubrik dan/atau
    • penilaian hasil dalam bentuk portofolio atau karya desain.

    Struktur

    • Bentuk pembelajaran memuat metode pembelajaran.
    • Proses dan hasil pembelajaran berdasarkan metode pembelajaran dievaluasi dengan penilaian.
    • Penilaian terdiri dari (di antaranya) teknik penilaian dan instrumen penilaian.
    • Suatu metode pembelajaran prosesnya bisa dinilai dengan berbagai teknik penilaian dengan instrumen penilaian dalam bentuk rubrik.
    • Suatu metode pembelajaran hasilnya bisa dinilai dengan berbagai teknik penilaian dengan instrumen penilaian dalam portofolio atau karya desain.

    Ranah Penilaian:

    • Sikap / Afektif
    • Pengetahuan / Kognitif
    • Keterampilan / Psikomotorik

    Penilaian :

    • Penilaian atas pembelajaran (assessment of learning)
      • Summative assessment : mengukur capaian belajar untuk membandingkannya terhadap acuan/standar
    • Penilaian untuk pembelajaran (assessment for learning)
      • Diagnostic assessment : mengetahui kondisi belajar siswa untuk meningkatkan kualitas pembelajaran
    • Penilaian sebagai pembelajaran (assessment as learning)
      • Formative assessment : mengukur capaian belajar untuk meningkatkan kualitas pembelajaran

    HOTS (higher order thinking skills): Kemampuan berpikir kritis, logis, reflektif, metakognitif, kreatif

    Ranah HOTS:

    • analisis
    • evaluasi
    • kreasi
    Aspek Kompetensi Teknik atau Metode Instrumen (Proses dan Hasil)
    Sikap Observasi Rubrik Observasi
    Partisipasi Rubrik Partisipasi
    Penilaian Diri Rubrik Penilaian Diri
    Penilaian Sejawat Rubrik Penilaian Sejawat
    Jurnal Rubrik Penilaian Jurnal
    Log Book Rubrik Penilaian Log Book
    Pengetahuan Tes Tulis Soal Tes Isian
    Tes Tulis Soal Tes Pilihan
    Tes Lisan Soal Tes Lisan
    Tes Lisan Rubrik Presentasi Lisan
    Tugas Lembar Penugasan
    Tugas Rubrik Penilaian Tugas
    Observasi Rubrik Observasi
    Keterampilan Tes Praktik Rubrik Penilaian Praktik
    Proyek Rubrik Penilaian Proyek
    Portofolio Rubrik Penilaian Portofolio
    Observasi Rubrik Observasi
    Unjuk Kerja Rubrik Unjuk Kerja
    Produk Lembar Penugasan
    Tulisan Lembar Penugasan

    Rubrik

    Rubrik merupakan panduan penilaian yang menggambarkan kriteria yang diinginkan dalam menilai atau memberi tingkatan dari hasil kinerja belajar mahasiswa. Rubrik terdiri dari dimensi yang dinilai dan kriteria kemampuan hasil belajar mahasiswa ataupun indikator capaian belajar mahasiswa.

    • Rubrik holistik adalah pedoman untuk menilai berdasarkan kesan keseluruhan atau kombinasi semua kriteria. (Tidak ada rincian aspek/dimensi, tapi ada deskripsi secara kesan keseluruhan)
    • Rubrik deskriptif memiliki tingkatan kriteria penilaian yang dideskripsikan dan diberikan skala penilaian atau skor penilaian. (Ada rincian aspek/dimensi, ada bantuan deskripsi dalam kriteria penilaian)
    • Rubrik skala persepsi memiliki tingkatan kriteria penilian yang tidak dideskripsikan namun tetap diberikan skala penilaian atau skor penilaian. (Ada rincian aspek/dimensi, tapi tidak deskripsi dalam kriteria penilaian)

    Portofolio

    Penilaian portofolio merupakan penilaian berkelanjutan yang didasarkan pada kumpulan informasi yang menunjukkan perkembangan capaian belajar mahasiswa dalam satu periode tertentu.

    • Portofolio perkembangan. Beberapa portofolio, dinilai berdasarkan kemajuan pencapaian. Contoh: draft, laporan sementara, laporan akhir
    • Portofolio pamer/showcase. Beberapa portofolio, dinilai berdasarkan satu portofolio terbaik.
    • Portofolio komprehensif. Beberapa portofolio, dinilai secara kumulatif.

    10.17 - Op-Amp

    Op-Amp

    • Why Does an Op Amp Have a High Input Impedance and a Low Output Impedance?
      • Op Amp is a Voltage Gain Device. Op amps have high input impedance and low output impedance because of the concept of a voltage divider, which is how voltage is divided in a circuit depending on the amount of impedance present in given parts of a circuit. Op amps are voltage gain devices. They amplify a voltage fed into the op amp and give out the same signal as output with a much larger gain. In order for an op amp to receive the voltage signal as its input, the voltage signal must be dropped across the op amp.
        • For the same reason of a voltage divider, an op amp needs a low output impedance. Once the voltage is dropped across the op amp and it does its task of amplifying the signal, the signal should get dropped across the device that the op amp should feed.
      • To Prevent Loading. Another reason op amps need high input impedance is because the loading effect. If op amps had very low input impedance, it would draw significant amounts of current into it. Thus, it would be a large load on the circuit. The fact that an op amp has a high input impedance ensures that it consumes very little current from the circuit and doesn’t cause a loading issue in the circuit in which it demands and sucks up large amounts of current of the circuit.
    • Input Impedance of an Amplifier and How to Calculate it
    • Inverting Operational Amplifier - The Inverting Op-amp
    • Difference Between Positive and Negative Feedback in Control System (with Comparison chart) - Circuit Globe

    10.19 - Active Learning

    Active Learning

    Active Learning

    • Active learning is “a method of learning in which students are actively or experientially involved in the learning process and where there are different levels of active learning, depending on student involvement.”
    • Students participate [in active learning] when they are doing something besides passively listening.
    • Students must do more than just listen in order to learn. They must read, write, discuss, and be engaged in solving problems. This process relates to the three learning domains referred to as knowledge, skills and attitudes (KSA).
    • Examples of “active learning” activities
      • class discussion
      • think-pair-share (small group discussion - class share)
      • learning cell : alternate asking and answering questions on commonly read materials
      • short written exercise
      • collaborative learning group
      • student debate
      • small group discussion
      • Just-in-time teaching (pre-class questions)
      • class game
      • Learning by teaching

    Inquiry-based learning

    • a form of active learning that starts by posing questions, problems or scenarios
    • Inquiry-based learning is often assisted by a facilitator rather than a lecturer. Inquirers will identify and research issues and questions to develop knowledge or solutions.
    • Inquiry learning involves developing questions, making observations, doing research to find out what information is already recorded, developing methods for experiments, developing instruments for data collection, collecting, analyzing, and interpreting data, outlining possible explanations and creating predictions for future study.
    • Teacher is facilitator in IBL environment
    • Place needs of students and their ideas at the center
    • Don’t wait for the perfect question, pose multiple open-ended questions.
    • Work towards common goal of understanding
    • Remain faithful to the students’ line of inquiry
    • Teach directly on a need-to-know basis
    • Encourage students to demonstrate learning using a range of media

    Generic Levels

    • Level 1: Confirmation Inquiry. The teacher has taught a particular science theme or topic. The teacher then develops questions and a procedure that guides students through an activity where the results are already known. This method is great to reinforce concepts taught and to introduce students into learning to follow procedures, collect and record data correctly and to confirm and deepen understandings.
    • Level 2: Structured Inquiry. The teacher provides the initial question and an outline of the procedure. Students are to formulate explanations of their findings through evaluating and analyzing the data that they collect.
    • Level 3: Guided Inquiry. The teacher provides only the research question for the students. The students are responsible for designing and following their own procedures to test that question and then communicate their results and findings.
    • Level 4: Open/True Inquiry. Students formulate their own research question(s), design and follow through with a developed procedure, and communicate their findings and results. This type of inquiry is often seen in science fair contexts where students drive their own investigative questions. »> This is Problem Based Learning

    Levels in Science Education

    • Students are provided with questions, methods and materials and are challenged to discover relationships between variables
    • Students are provided with a question, however, the method for research is up to the students to develop
    • Phenomena are proposed but students must develop their own questions and method for research to discover relationships among variables

    Important Aspects

    • Students should be able to recognize that science is more than memorizing and knowing facts.
    • Students should have the opportunity to develop new knowledge that builds on their prior knowledge and scientific ideas.
    • Students will develop new knowledge by restructuring their previous understandings of scientific concepts and adding new information learned.
    • Learning is influenced by students’ social environment whereby they have an opportunity to learn from each other.
    • Students will take control of their learning.
    • The extent to which students are able to learn with deep understanding will influence how transferable their new knowledge is to real life contexts.

    Example of Formats

    • Field-work
    • Case studies
    • Investigations
    • Individual and group projects
    • Research projects

    Problem-based learning (PBL)

    • Problem-based learning (PBL) is a student-centered pedagogy in which students learn about a subject through the experience of solving an open-ended problem found in trigger material.
    • The PBL process does not focus on problem solving with a defined solution, but it allows for the development of other desirable skills and attributes. This includes knowledge acquisition, enhanced group collaboration and communication.
    • The PBL tutorial process involves working in small groups of learners. Each student takes on a role within the group that may be formal or informal and the role often alternates.
    • It is focused on the student’s reflection and reasoning to construct their own learning.
    • The Maastricht seven-jump process involves clarifying terms, defining problem(s), brainstorming, structuring and hypothesis, learning objectives, independent study and synthesis.

    Principles

    • Learner-driven self-identified goals and outcomes
    • Students do independent, self-directed study before returning to larger group
    • Learning is done in small groups of 8–10 people, with a tutor to facilitate discussion
    • Trigger materials such as paper-based clinical scenarios, lab data, photographs, articles or videos or patients (real or simulated) can be used
    • The Maastricht 7-jump process helps to guide the PBL tutorial process
    • Based on principles of adult learning theory
    • All members of the group have a role to play
    • Allows for knowledge acquisition through combined work and intellect
    • Enhances teamwork and communication, problem-solving and encourages independent responsibility for shared learning - all essential skills for future practice
    • Anyone can do it as long it is right depending on the given causes and scenario

    Computer-supported PBL

    • Computer-supported PBL can be an electronic version (ePBL) of the traditional face-to-face paper-based PBL or an online group activity with participants located distant apart.
    • ePBL provides the opportunity to embed audios and videos, related to the skills (e.g. clinical findings) within the case scenarios improving learning environment and thus enhance students’ engagement in the learning process.
    • The most successful feature of the LMS in terms of user rate was the discussion boards where asynchronous communications took place.
    • Tools
      • Collaborative tools: The first, and possibly most crucial phase in PBL, is to identify the problem. Before learners can begin to solve a problem, all members must understand and agree on the details of the problem. This consensus forms through collaboration and discussion. Example: Discussion Board, Moodle, Discord
      • Research tools. Once the problem has been identified, learners move into the second step of PBL: the information gathering phase. In this phase, learners research the problem by gathering background information and researching potential solutions. This information is shared with the learning team and used to generate potential solutions, each with supporting evidence. Example: Google, Wikipedia.
      • Presentation tools. The third most important phase of PBL is resolving the problem, the critical task is presenting and defending your solution to the given problem. Students need to be able to state the problem clearly, describe the process of problem-solving considering different options to overcome difficulties, support the solution using relevant information and data analysis. Being able to communicate and present the solution clearly is the key to the success of this phase as it directly affects the learning outcomes. Example: Google Presentation, Youtube

    Learning

    Case-based Learning

    • With case-based teaching, students develop skills in analytical thinking and reflective judgment by reading and discussing complex, real-life scenarios.
    • Case studies are stories that are used as a teaching tool to show the application of a theory or concept to real situations. Dependent on the goal they are meant to fulfill, cases can be fact-driven and deductive where there is a correct answer, or they can be context driven where multiple solutions are possible.
    • Case-based learning (CBL) is an established approach used across disciplines where students apply their knowledge to real-world scenarios, promoting higher levels of cognition. In CBL classrooms, students typically work in groups on case studies, stories involving one or more characters and/or scenarios. The cases present a disciplinary problem or problems for which students devise solutions under the guidance of the instructor.
    • CBL:
      • Cases
      • Questions:
        • Assessment
        • Diagnosis
        • Recommendation/Action
      • Team-discussions:
        • Elaboration
        • Emphasis

    Example of CBL National Center for Case Study Teaching in Science (NCCSTS) Case-based learning - EduTech Wiki Case-Based Teaching | MGH Institute of Health Professions

    Problem-based Learning

    • PBL consists of carefully designed problems that challenge students to use problem solving techniques, self-directed learning strategies, team participation skills, and disciplinary knowledge.

    CBL vs PBL

    • PBL involves open rather than guided inquiry, is less structured, and the instructor plays a more passive role. In PBL multiple solutions to the problem may exit, but the problem is often initially not well-defined. PBL also has a stronger emphasis on developing self-directed learning.

    Reference

    10.22 - Open Source Hardware

    Open Source Hardware

    List

    Hardware

    Open Hardware

    Hardware

    Hardware

    Open Hardware

    Hardware

    Open Hardware

    Hardware

    Open Hardware

    Hardware Startup

    Open Hardware

    Open Hardware

    AI Hardware

    • Vizy Camera Raspberry Pi Camera with AI
    • AIY Vision Kit from Google, with Pi Zero ($50). Jetson Nano + IMX219 ($90)

    Hardware

    Hardware: Project

    Open Hardware

    10.24 - Vlog Tools

    Vlog Tools

    • Camera : list
      • DSLR Entry Level
      • Mirrorless : Sony Alpha A5000/A6000, Canon EOS M10, Fujifilm X-A10, Panasonic Lumix DMC-GX85, Olympus E-PL7, Nikon 1 J5, Xiaomi Yi M1, Samsung NX1000, Canon PowerShot G7 X Mark II, Canon EOS M3.
      • Action Cam : GoPro Hero7 Black
      • Lensa : Canon 10-18mm f/4.5-5.6 is STM (stabilizer), Canon 24mm f2.8 STM (depth)
    • Tripod dan Tongsis
      • Standard Tripod : Manfrotto Tripod, Tripod Excell
      • Small/Table Tripod : Velbonn Ex-Macro
      • Flexible Tripod : Gorillapod
      • Tripod with Stabilizer for Phone : DJI Osmo Mobile, Zhiyun Smooth, MOZA Mini
      • Tripod with Stabilizer for Camera : Zhiyun Crane, Zhiyun Weebill, DJI Ronin, Moza AirCross
    • Lighting
      • Ring Light : Fotoplus Ring Light
      • LED Light : Aputure Amaran AL-H198C, Aputure AL-M9, LED GODOX M150, LitraTorch Photo Light, Manfrotto LumiMuse, LED GODOX P260C
    • Green Screen
    • Microphone : list
      • Shotgun Microphone : RODE VideoMic, Saramonic SR M3, Rode VideoMicro, BlueYeti Professional
      • Lavalier or Wireless Microphone : BOYA Wireless Microphone, Sennheiser EW 112 P G4, Aputure A Lav, Audio Technica ATR 3350
      • USB Microphone : RODE USB, Blue Yeti USB Microphone
      • Audio/Voice Recorder : Zoom H4n Handy Voice Recorder, Zoom H1
      • Clip on Microphone : Clip-On Microphone BOYA BY-M1
    • Software
      • Video Editor : Adobe Premiere Pro, Apple Final Cut Pro X dan Sony Vegas Pro

    10.25 - Writing in Plain Englsih

    Writing in Plain English

    Tips

    Writing Tips

    • Separate writing from editing. Just keep writing, ignore the typos, self-censorship or formatting and keep moving.
    • Separate writing from editing. In writing, try writing one sentence per line.
    • Vary the length of the sentences. Don’t just write words. Write music.
    • Limit each paragraph to a single message. A single sentence can be a paragraph.
    • Keep sentences short, simply constructed and direct.

    This sentence has five words. Here are five more words. Five-word sentences are fine. But several together become monotonous. Listen to what is happening. The writing is getting boring. The sound of it drones. It’s like a stuck record. The ear demands some variety. Now listen. I vary the sentence length, and I create music. Music. The writing sings. It has a pleasant rhythm, a lilt, a harmony. I use short sentences. And I use sentences of medium length. And sometimes, when I am certain the reader is rested, I will engage him with a sentence of considerable length, a sentence that burns with energy and builds with all the impetus of a crescendo, the roll of the drums, the crash of the cymbals–sounds that say listen to this, it is important. So I write with a combination of short, medium, and long sentences. Create a sound that pleases the reader’s ear. Don’t just write words. Write music. (Gary Provost)

    The following are more of McCarthy’s words of wisdom, as told by Savage and Yeh.

    • Use minimalism to achieve clarity. Remove extra words or commas whenever you can.
    • Decide on your paper’s theme and two or three points you want every reader to remember. The words, sentences, paragraphs and sections are the needlework that holds it together. If something isn’t needed to help the reader to understand the main theme, omit it.
    • Limit each paragraph to a single message. A single sentence can be a paragraph. Each paragraph should explore that message by first asking a question and then progressing to an idea, and sometimes to an answer. It’s also perfectly fine to raise questions in a paragraph and leave them unanswered.
    • Keep sentences short, simply constructed and direct. Concise, clear sentences work well for scientific explanations. Minimize clauses, compound sentences and transition words — such as ‘however’ or ‘thus’ — so that the reader can focus on the main message.
    • Don’t slow the reader down. Avoid footnotes because they break the flow of thoughts and send your eyes darting back and forth while your hands are turning pages or clicking on links.
    • Try to avoid jargon, buzzwords or overly technical language. And don’t use the same word repeatedly — it’s boring.
    • Don’t over-elaborate. Only use an adjective if it’s relevant. Your paper is not a dialogue with the readers’ potential questions, so don’t go overboard anticipating them. Don’t say the same thing in three different ways in any single section. Don’t say both ’elucidate’ and ’elaborate’. Just choose one, or you risk that your readers will give up.
    • And don’t worry too much about readers who want to find a way to argue about every tangential point and list all possible qualifications for every statement. Just enjoy writing.
    • With regard to grammar, spoken language and common sense are generally better guides for a first draft than rule books. It’s more important to be understood than it is to form a grammatically perfect sentence.
    • Commas denote a pause in speaking. The phrase ‘In contrast’ at the start of a sentence needs a comma to emphasize that the sentence is distinguished from the previous one, not to distinguish the first two words of the sentence from the rest of the sentence. Speak the sentence aloud to find pauses.
    • Dashes should emphasize the clauses you consider most important — without using bold or italics — and not only for defining terms. (Parentheses can present clauses more quietly and gently than commas.)
    • Don’t lean on semicolons as a crutch to join loosely linked ideas. This only encourages bad writing. You can occasionally use contractions such as isn’t, don’t, it’s and shouldn’t. Don’t be overly formal. And don’t use exclamation marks to call attention to the significance of a point. You could say ‘surprisingly’ or ‘intriguingly’ instead, but don’t overdo it. Use these words only once or twice per paper.
    • Inject questions and less-formal language to break up tone and maintain a friendly feeling. Colloquial expressions can be good for this, but they shouldn’t be too narrowly tied to a region. Similarly, use a personal tone because it can help to engage a reader. Impersonal, passive text doesn’t fool anyone into thinking you’re being objective: “Earth is the centre of this Solar System” isn’t any more objective or factual than “We are at the centre of our Solar System.”
    • Choose concrete language and examples. If you must talk about arbitrary colours of an abstract sphere, it’s more gripping to speak of this sphere as a red balloon or a blue billiard ball.
    • Avoid placing equations in the middle of sentences. Mathematics is not the same as English, and we shouldn’t pretend it is. To separate equations from text, you can use line breaks, white space, supplementary sections, intuitive notation and clear explanations of how to translate from assumptions to equations and back to results.
    • When you think you’re done, read your work aloud to yourself or a friend. Find a good editor you can trust and who will spend real time and thought on your work. Try to make life as easy as possible for your editing friends. Number pages and double space.
    • After all this, send your work to the journal editors. Try not to think about the paper until the reviewers and editors come back with their own perspectives. When this happens, it’s often useful to heed Rudyard Kipling’s advice: “Trust yourself when all men doubt you, but make allowance for their doubting too.” Change text where useful, and where not, politely explain why you’re keeping your original formulation.
    • And don’t rant to editors about the Oxford comma, the correct usage of ‘significantly’ or the choice of ‘that’ versus ‘which’. Journals set their own rules for style and sections. You won’t get exceptions.
    • Finally, try to write the best version of your paper: the one that you like. You can’t please an anonymous reader, but you should be able to please yourself. Your paper — you hope — is for posterity. Remember how you first read the papers that inspired you while you enjoy the process of writing your own.

    10.26 - Open Directory Search

    Open Directory Search

    Open Directories are unprotected directories of pics, videos, music, software and otherwise interesting files.

    For videos/movies/tvshows :

    intext:"Search Term" intitle:"index.of" +(wmv|mpg|avi|mp4|mkv|mov) -inurl:(jsp|pl|php|html|aspx|htm|cf|shtml)
    

    Images :

    intext:"Search Term" intitle:"index.of./" (bmp|gif|jpg|png|psd|tif|tiff) -inurl:(jsp|pl|php|html|aspx|htm|cf|shtml)
    

    Music :

    intext:"Search Term" intitle:"index.of./" (ac3|flac|m4a|mp3|ogg|wav|wma) -inurl:(jsp|pl|php|html|aspx|htm|cf|shtml)
    

    Books :

    intitle:"Search Term" (pdf|epub|mob) "name or title" -inurl:(jsp|pl|php|html|aspx|htm|cf|shtml)
    

    You can also find Google Drive shared files similarly.
    Shared folders
    Shared everything
    Works with other domains too.

    Some info about google search operators can be found here

    Open Directory Search Engines

    Java Scriptlets

    Save the following code as a bookmark, then you can open the bookmark to run the desired action. Download all files with a specific extension :

    javascript:!function(){var%20t=prompt("Enter%20filetype%20to%20download%20(format:%20.mp3)");if(null!==t)for(var%20e=document.querySelectorAll('[href$="'+t+'"]'),o=0;o<e.length;o++)e[o].setAttribute("download",""),e[o].click();else%20alert("No%20format")}();
    

    Resize “Filename” column in OD to make entire filename visible :

    javascript:!function(){function e(e){var o,n,r=e.href;e.textContent=(n=(o=r).split("/").filter(Boolean).reverse()[0],console.log(n),o.lastIndexOf("/")==o.lenght-1&&(n+="/"),n=n.indexOf(" ")>=0?decodeURI(n):decodeURIComponent(n))}anchors=document.body.querySelectorAll("a"),anchors=Array.from(anchors).slice(1),anchors.map(e)}();
    

    Display pictures as thumbnails :

    javascript:(function(){function%20I(u){var%20t=u.split('.'),e=t[t.length-1].toLowerCase();return%20{gif:1,jpg:1,jpeg:1,png:1,mng:1}[e]}function%20hE(s){return%20s.replace(/&/g,'&amp;').replace(/>/g,'>').replace(/</g,'<').replace(/"/g,'&quot;');}var%20q,h,i,z=open().document;z.write('<p>Images%20linked%20to%20by%20'+hE(location.href)+':</p><hr>');for(i=0;q=document.links[i];++i){h=q.href;if(h&&I(h))z.write('<p>'+q.innerHTML+'%20('+hE(h)+')<br><img%20src="'+hE(h)+'">');}z.close();})()
    

    Display pictures as thumbnail gallery :

    javascript:var%20sHTML=%22<html><head><title>gallery</title><body><center><table%20border=0>%22;var%20y=0;for(x=0;x<document.links.length;x++){a=document.links[x].href;%20if%20(a.match(/jpe|jpeg|jpg|bmp|tiff|tif|bmp|gif|png/i)){sHTML+='<td%20style=%22border-style:solid;border-width:1px%22><a%20target=%22_new%22%20href=%22'+a+'%22><img%20border=%220%22%20width=%22100%22%20src=%22'+a+'%22></a></td>';%20if%20(!((x+1)%5))%20sHTML+=%22</tr><tr>%22}};this.innerHTML=sHTML+%22</table></center></body></html>%22;
    

    The-Eye Image Viewer :

    javascript:void(window.open('https://fusker.the-eye.eu/url.php?url='+encodeURIComponent(document.URL).replace(/\./g,'%25252E')));
    

    Another Linked Images Bookmarklet.
    More bookmarklets.

    Softwares

    There are other software programs that provide wget with a GUI like Gwget and WinWGet though I’ve never used them and hence can’t comment on their reliability.

    • youtube-dl (Python) downloads videos from various sites. Just like wget you can find GUI frontend for this.
    • RipMe (Java) is an album ripper for various websites.
    • HTTrack Website Copier (Windows/Linux/OSX/Android) can mirror entire websites. Other download helpers you should try :
    • Adware free JDownloader (Win/Linux/OSX/Java) Has GUI
    • xdm (Win/Linux/OSX/Java) Has GUI.
    • uGet (Win/Linux/OSX/Android) Has GUI.
    • curl (Win/Linux/OSX/…) Command line tool.
    • aria2 (Linux/OSX) Command line. A web-based UI is also available.
    • axel (Linux/OSX) Command line tool.
    • Rclone (Win/Linux/OSX) Command line tool. Rclone has some great commands that can list files, print remote directory size or even mount it as mountpoint. Here is a list of all commands. I recommend you to go through their entire website.

    You can also use httpdirfs, which is made by a redditor who posted it here to mount the remote directory as mountpoint. It even appears to be somewhat faster than “rclone mount”.

    OpenDirectoryDownloader

    Sites

    Search Tools

    Search And index Engines DDLs :-

    https://filepursuit.com/ https://weboas.is/ https://filesearch.download/ https://www.filesearch.link/ https://ipfs-search.com/

    Search GDrive:-

    https://www.dedigger.com/ https://whatintheworld.xyz/ https://w3abhishek.github.io/torrentables/ https://eyedex.org/ (Search The Eye)

    Search Open Directory DDLs :-

    https://odcrawler.xyz/ https://www.filechef.com/ https://opendirsearch.abifog.com/ https://palined.com/search/ https://ewasion.github.io/opendirectory-finder/ https://open-directories.reecemercer.dev/ https://lumpysoft.com/ https://www.eyeofjustice.com/od/ https://sites.google.com/view/l33tech/tools/ods https://lendx.org/

    Archiving And Searching Engines:-

    https://the-eye.eu/ (archives and indexes Web Pages) https://archive.ph/ (archives web snapshots) https://archive.org/ ( The Internet Archive) https://archive.org/web/ (The Wayback Machine)

    FTP Indexers:-

    https://www.mmnt.ru/int/ https://www.catfiles.net/ https://sites.google.com/view/l33tech/tools/pasteskimmer (Paste search tool)

    10.27 - Open Healthcare Library

    Open Healthcare Library

    1. Open Cancer
    2. Medical Data for Machine Learning
    3. NLP Health Data

    10.28 - Zettelkasten

    Zettelkasten

    The zettelkasten (German: “slip box”) is a knowledge management and note-taking method used in research and study.

    Reading about Zettelkasten

    Tools

    Zettelkasten Software Comparison

    The Zettelkasten / Slip-box

    The Reference Manager

    The Editor

    • LibreOffice and Word (work well with Zotero)
    • Scrivener.

    Source

    Alternative App

    Notes about Zettelkasten

    • Zettelkasten-like approaches are useful when you’re trying to synthesize knowledge into a framework/perspective, sometimes as a way to find and contextualize new ideas. If one doesn’t care about that, and ones notes already have a well-defined taxonomy/structure then the linking feature of Zettelkasten is not particularly useful.
    • What works very well is to use Zettelkasten as the next step after taking notes from reading book, blog posts, and articles to collect your personal insights. Probably also from movies, podcasts, whatever.
    • I believe Zettelkasten will help me with writing for my own blog and when I’m collecting information for personal projects. In both cases, I have lots of ideas which are not fully formed yet to be published or implemented. With a job and a family there is little time to pursue it, so I have to work in little steps. Externalizing this ideas is essential and a very-hyperlinked style like Zettelkasten seems to fit well.
    • For learning little facts about programming languages, spaced repetition is probably more suitable.
    • Going down a wikipedia-style rabbit hole of my own notes is cool, like I’m exploring my own brain. Sometimes I completely forget how something works, and when I look up the note I took I just have to read a few of my own words to immediately remember it all.
    • I will say though that progress actually feels pretty slow compared to my usual strategy of just reading through books and articles once or twice, and then web searching whenever I forget something.
    • As far as I can tell, both in studies and in personal experience, the fiddly details of your note-taking schemes don’t matter. The only thing that matters is attempting to integrate the information into a cohesive whole, which takes intentional thought.
    • With linear notes, there’s a failure mode where links that should be made aren’t; you can even walk around believing outright contradictions without noticing. But with a web, there’s an equally bad failure mode where your knowledge gets diffuse and unstructured (instead of “X causes Y if Z”, you get “X, Y, and Z are related. But… was Z the thing that caused X? Wait, but then what was Y for?”).
    • Both of these reflect a failure to aggregate and chunk the information into hard tools, but no productivity system can magically fix that; it always takes time.
    • This looks interesting, but one potential problem with this method is that you start treating the number of notes or the size of the graph as a success metric. The author even notes how it is ‘pleasing’ to see their note graph grow in size. This could be a perverse incentive.
    • I think your proposed system captures the important part of the knowledge intake, ie two levels of abstraction (writing a source note, and then connecting the new knowledge from source note to (or just dumping it in) some existing node.)
    • But one other idea from Christian and Sascha is to avoid folder structures, and allow the organization to develop over time. On a work topic, notes from a few guidances and presentations, plus my experiences, cluster to create a note which transcends a categorical boundary I would have erected with a folder structure.
    • So, the suggested alt strategy is dump everything into one folder and create clusters using other structures, as they reveal themselves to be useful.
    • Creating a hierarchy of notes using folders can be counterproductive. It will be easy to classify the majority of notes, but some of them will match multiple categories, or even none of them. Unfortunately, those notes are usually the most interesting. Case in point: I have some notes regarding good technical writing, and some notes concerning good Git usage. If I had a hierarchy, the first notes would go under “writing”, and the second ones would go under “development”. But where would I have filed the notes regarding Git commit messages? I feel like they belong on both categories. Choosing just one of them means ignoring the other. That’s why, if you still want to classify some of your tags, I strongly advise to use a tagging system, and to avoid creating note hierarchies.
    • It can be way more simple: I use one folder for my notes, and another one for my “sources” (linear notes on articles, books, talks, etc). Files have unique filenames (guaranteed because a timestamp is added to the name when they are created).
    • In the book “How to take smart notes” by Sönke Ahrens, there’s a lot of thought given on the real value of tags. I’d say the problem you describe happens because you are trying to create a taxonomy using tags. Classifying the notes using tags can feel rewarding in the short term, but it’s not useful in the context of a linked notes system.
    • When creating tasks, the main question that is answered is “in which contexts would I like this note to show up?”. The answer to this question is completely subjective. If, for instance, you were doing research for game level design, it makes sense for the systems architecture notes to be tagged with “game engine”, “achievements”, “quick save”, or anything else that you will want to look up later on. The Napoleonic architecture notes could be tagged as “level design”, “gameplay cues”, or “side quests”.
    • As you can see, these tags would be different for every person, and that’s kind of the point. Two people can read the same content, and take the same note from it, but the intended purpose could still be completely different, and that would show up in the tags.
    • I don’t think one should suggest Zettelkasten to anyone who is looking for a simple to-do list or note taking implementation. Regular notes are perfectly fine if one wants to take regular notes.
    • Luhman’s zettels weren’t random thoughts or casual ideas that popped into his head during a stroll with the dog., but rather full, jargon-laden sentences that were close to publication-ready in quality, sometimes highly abstract in nature. He would take a couple dozen related zettels, arrange them on a table in sequence, rearrange them and eventually have a rough outline for an article or the chapter of a book.
    • Here’s a random zettel from Luhmann’s archive, translated by deepl.com. This is 1 out of 90,000 total:

    1.6c1 “About an activity, at one time, central and centralization.” – In some ways comparable to the view of Mary Parker Follett, Dynamic Administration, p. 183ff., e.g. p. 195: “Unity is always a process, not a product.” – But she confuses unity and unifying, and says below quite correctly (p. 195): “Business unifying must be understood as a process, not as a product.” – Except, of course, that the word unity does not mean process, this dynamic view is that the process can be described as valuable and characterizes the organizational view, from the finished fake unit to the unification unit process.

    • The only note taking approach that’s ever worked for me:
      1. Read/listen/absorb
      2. Write down ideas it creates while you’re absorbing
      3. Wait
      4. Create Your mind (or at least mine) finds connections you aren’t even aware of and when the time comes, when the right prompt sparks, there it is. The knowledge is ready to be used.
    • Zettelkasten is exactly what you wrote here, with one addition. It not only offloads querying for detail (i.e. search) to the machine, it also offloads some connection-making. Search and lookup is internet-as-extended-memory, links and backlinks are internet-as-serendipitous-thought.
    • The part about “just write it down” is the most important. Connecting information as you go can add value to the knowledge base, but writing down everything that’s important is the first step and the tool you use should support that. I think the book keeping part is more of a personal thing and some people feel that they need to do it and others do not. I for myself “separate” notes into problem domains (when I think about them I have a broader topic in mind) and connect all the notes that belong to the same topic when I see fit. That greatly reduces the book keeping part and I can add connections as I go.
    • I would say if your workflow is not research-centric where you only implement software, these kinds of methods are not necessary. Only simple note-taking would suffice to ease your brain.
    • On the contrary, if you are reading papers and doing research, taking notes in a meaningful way is more helpful than you would realize. The human brain tends to skip information while reading and you only realize you didn’t actually understand that part when you try to write it yourself. The note-taking part doesn’t actually take that much brain resources. I am not a native English speaker but I am taking my notes in English. While taking my notes I don’t care about grammar or anything, I just read and write what I understood. When I finish the paper and I am comfortable with the topic, I return to my notes, fix grammars and, link them with my other notes. For example, sometimes I come up with a research idea, I make a note about it. In the future, while reading a paper, I realize some of the techniques that are described in the paper might be beneficial to that idea so I link them together.
    • In conclusion, it really depends on your area of work whether to take regular notes or Zettelkasten notes. Forcing your workflow to these methods might hurt your productivity but if you are a researcher I can say, it will be beneficial.
    • Normal notes are fighting complexity by creating smaller and smaller categories of notes Example: splitting “engineering notes” to “software notes” and “technical writing notes”, and then “software notes” to “java notes” and “design notes”. And this way the notes get deeper and deeper in your notebook and you stop interacting with them. This described well my personal experience. Zettelkasten fights this complexity by much more up-front work when adding and linking note, instead of a tree structure, you have a network.
    • Most of the time, it’s more be beneficial to file notes according to the situation in which they’ll be useful rather than where they came from: If you’re going to have a tree structure, the original sources should be out at the leaves as external references rather than the root. This manifests in many forms from lots of different people giving advice:
      • In Getting Things Done, Allen spends a lot of time on the importance of organizing your todo lists by where you’ll be able to do the actions.
      • Luhmann used his original Zettelkasten to store passages that he could pull to make drafts of papers, and cross-referenced them to other passages that could be included together.
      • In How to Write a Thesis, Eco recommends writing a preliminary outline of your thesis and then tagging notes with the section number they’re relevant to.
      • In his MasterClass series, Chris Hadfield emphasizes the benefit of collecting summary notes organized by the interface you’ll see when actually performing an activity.
    • It depends on the goal. Your goal is to learn things, apparently. Memorize what you wrote on the notes. Zettelkasten’s isn’t. Its goal is to produce great books and papers.
    • As far as I can tell, the crosslinking required by the Zettelkasten approach provides two main benefits:
      • It forces some retrieval practice of the notes you’ve taken before, which reinforces all the ideas involved.
      • Most of the benefit comes from the act of writing, but there’s an inevitable sense of futility that comes about if those writings are inevitably lost to time. By giving each note an ongoing purpose (to be linked to), the Zettelkasten system dodges this particular trigger to stop writing notes.
      • Zettelkasten has its benefits: If you want to be able to casually browse through your notes, looking for ideas to spark your imagination, Zettelkasten will most likely have superior results since the ideas are already summarized right there for you. Zettelkasten makes it easy to compose essays and put together speeches, but that’s because you’ve already done the hard work of writing down your thoughts ahead of time.
    • It’s requirement to link all notes ahead of time is a HUGE barrier to entry, so Zettlekasten may be best suited to people with a strong research oriented disposition who’re already used to similar practices.
    • Why not jut search?
      • I think this trend of better knowledge tools is missing two very important pieces of human nature
        • If we have time to enter something into a knowledge base of any kind - then we have time to just jot it on a piece of paper.
        • If we dont have time (or think it is important at that moment) then what solves the problem for us is not a knowledge base, but search.
    • There are problems with search: you have to know to search for something, and you have to know how to search for it. In some cases this is an issue, in some it isn’t. I have had many times over the years where I reviewed my notes and reminded myself of things I had completely forgotten. Search is useless in that case. But in any event, there’s no conflict between a knowledge base and search. They are different things and you can search a knowledge base.
    • [Zettl practice] I can stream thoughts into a lightweight inbox without having to do the organizing upfront. I then have derived categories from the main stream of thoughts. If the thought is a task, I further process these into categories. I have recurring tasks and events that I handle on a “Time” page that is effectively a calendar, and I have one-off tasks that go into a Kanban style backlog. What I really got from Zettlekasten is that trying to establish your system upfront is a mistake. Things inevitably leak through your categories and then you lose faith in your system. By just having a running stream of thoughts and then relating them after the fact and deriving categories afterward, you get the benefits of organization without a lot of its failure modes.
    • Your template misses backlinks. Zk notes have five elements:
      1. An id (I presume it is yyyymmddhhmmss.md as filename for you)
      2. Tags
      3. Backlinks (in the form of [[backlink]] in most zk software tools such as zettlr/obsidian/thearchive etc;)
      4. Source or reference (checked)
      5. Content (I suppose it is your # Notes)
    • Also all zettels are atomic, so you will deilberately limit yourself to one topic idea, ideally with a question or something (I suppose that is why you have # Title).
    • Here’s my rather brief summary of the process:
      • You create fleeting notes to capture ideas as they happen. They should be short lived notes that don’t become the main store of your knowledge.
      • You create literature notes as your read material. These should include your own thoughts on highlighted passages, not just quotes and highlights on their own.
      • You organise your fleeting notes as permanent notes into your ‘Slip Box’ (taken from the original use index cards). Each note should contain a single idea and should be understandable when reading in isolation.
      • You want to avoid burying knowledge in large notes as it makes it hard to glance at and link to other notes in a concise way.
      • Notes are linked to other notes which support your ideas. This also help the discovery of new ideas.
      • You use your slip box to help you do your thinking. You want to ask it questions, find the related notes that support/oppose the arguments and find gaps or newly related information.
      • You can create index notes that help you find your way around.
      • Part of the process is to help your understanding by writing. With a well maintained slip box, you’ll never be starting from a blank sheet. You decide what insight/question/knowledge you want to explore, and pull together the notes that give you the body of research to get you started. You shouldn’t need to start a new blog post by researching, that happens prior by taking smart notes as you naturally read what you’re interested in.

    Alternative to Zettelkasten

    PARA (Second Brain)

    • Link:
    • With P.A.R.A. you organize all your notes by purpose, not by category. Let’s say you’re trying to build an app. You’ll have a folder called ‘app’ for all notes about it. Now if you study databases in order to build it, you’ll file any notes you take inside the ‘app’ folder, not in a separate ‘databases’ folder.
    • Instead of forcing myself to be disciplined about organizing my notes, P.A.R.A. + Progressive Summarization takes advantage of the times when I’m already excited to work on them. Each time I touch the notes, I have to take a small amount of effort which is proportionate to my level of interest in the task. We’ve replaced forced discipline with leveraged excitement.
      • P.A.R.A. is great for those who don’t have the time (or willpower) to force themselves to write down notes they may never use. Instead it’s Just-in-Time philosophy saves many hours and lets you be more productive. Tiago has designed P.A.R.A. to work with most productivity apps, but the process is optimized for his app of choice: Evernote.
      • All in all, I’m finding P.A.R.A. pretty useful so far. It has yet to pass the ultimate test of any knowledge management system: Will I still be using it three months from now? (ask me after July). I’m already noticing productivity boosts by using the PARA method to store notes for all my projects, so prospects are looking good

    Bliki

    Spaced Repetition

    Combination Method

    • Zettelkasten
      • Unique IDs - facilitates linking - can use beyond your note-taking system if you use it on other files and documents and use a file explorer
      • Linking - link relevant ideas and information
      • Atomicity - reuse future-proof notes/ideas in different contexts
    • Progressive summarization - pare down your notes while keeping the original source - ideas: you could pick out key terms, write a summary at the top, make a TOC of the things you want to navigate to easily
    • IMF - a way to organize notes without necessarily tying them to a certain category. I think of it as creating different ‘views’ of your notes.

    10.29 - About Compiler Interpreter

    About Compiler and Interpreter

    An interpreter for language X is a program (or a machine, or just some kind of mechanism in general) that executes any program p written in language X such that it performs the effects and evaluates the results as prescribed by the specification of X. CPUs are usually interpreters for their respective instructions sets, although modern high-performance workstation CPUs are actually more complex than that; they may actually have an underlying proprietary private instruction set and either translate (compile) or interpret the externally visible public instruction set.

    A compiler from X to Y is a program (or a machine, or just some kind of mechanism in general) that translates any program p from some language X into a semantically equivalent program p′ in some language Y in such a way that the semantics of the program are preserved, i.e. that interpreting p′ with an interpreter for Y will yield the same results and have the same effects as interpreting p with an interpreter for X. (Note that X and Y may be the same language.)

    The terms Ahead-of-Time (AOT) and Just-in-Time (JIT) refer to when compilation takes place: the “time” referred to in those terms is “runtime”, i.e. a JIT compiler compiles the program as it is running, an AOT compiler compiles the program before it is running. Note that this requires that a JIT compiler from language X to language Y must somehow work together with an interpreter for language Y, otherwise there wouldn’t be any way to run the program. (So, for example, a JIT compiler which compiles JavaScript to x86 machine code doesn’t make sense without an x86 CPU; it compiles the program while it is running, but without the x86 CPU the program wouldn’t be running.)

    Note that this distinction doesn’t make sense for interpreters: an interpreter runs the program. The idea of an AOT interpreter that runs a program before it runs or a JIT interpreter that runs a program while it is running is nonsensical.

    So, we have:

    • AOT compiler: compiles before running
    • JIT compiler: compiles while running
    • interpreter: runs

    JIT Compilers

    Within the family of JIT compilers, there are still many differences as to when exactly they compile, how often, and at what granularity.

    The JIT compiler in Microsoft’s CLR for example only compiles code once (when it is loaded) and compiles a whole assembly at a time. Other compilers may gather information while the program is running and recompile code several times as new information becomes available that allows them to better optimize it. Some JIT compilers are even capable of de-optimizing code. Now, you might ask yourself why one would ever want to do that? De-optimizing allows you to perform very aggressive optimizations that might actually be unsafe: if it turns out you were too aggressive you can just back out again, whereas, with a JIT compiler that cannot de-optimize, you couldn’t have run the aggressive optimizations in the first place.

    JIT compilers may either compile some static unit of code in one go (one module, one class, one function, one method, …; these are typically called method-at-a-time JIT, for example) or they may trace the dynamic execution of code to find dynamic traces (typically loops) that they will then compile (these are called tracing JITs).

    Combining Interpreters and Compilers

    Interpreters and compilers may be combined into a single language execution engine. There are two typical scenarios where this is done.

    Combining an AOT compiler from X to Y with an interpreter for Y. Here, typically X is some higher-level language optimized for readability by humans, whereas Y is a compact language (often some kind of bytecode) optimized for interpretability by machines. For example, the CPython Python execution engine has an AOT compiler that compiles Python sourcecode to CPython bytecode and an interpreter that interprets CPython bytecode. Likewise, the YARV Ruby execution engine has an AOT compiler that compiles Ruby sourcecode to YARV bytecode and an interpreter that interprets YARV bytecode. Why would you want to do that? Ruby and Python are both very high-level and somewhat complex languages, so we first compile them into a language that is easier to parse and easier to interpret, and then interpret that language.

    The other way to combine an interpreter and a compiler is a mixed-mode execution engine. Here, we “mix” two “modes” of implementing the same language together, i.e. an interpreter for X and a JIT compiler from X to Y. (So, the difference here is that in the above case, we had multiple “stages” with the compiler compiling the program and then feeding the result into the interpreter, here we have the two working side-by-side on the same language.) Code that has been compiled by a compiler tends to run faster than code that is executed by an interpreter, but actually compiling the code first takes time (and particularly, if you want to heavily optimize the code to run really fast, it takes a lot of time). So, to bridge this time when the JIT compiler is busy compiling the code, the interpreter can already start running the code, and once the JIT is finished compiling, we can switch execution over to the compiled code. This means that we get both the best possible performance of the compiled code, but we don’t have to wait for the compilation to finish, and our application starts running straight away (although not as fast as could be).

    This is actually just the simplest possible application of a mixed-mode execution engine. More interesting possibilities are, for example, to not start compiling right away, but let the interpreter run for a bit, and collect statistics, profiling information, type information, information about the likelihood of which specific conditional branches are taken, which methods are called most often etc. and then feed this dynamic information to the compiler so that it can generate more optimized code. This is also a way to implement the de-optimization I talked about above: if it turns out that you were too aggressive in optimizing, you can throw away (a part of) the code and revert to interpreting. The HotSpot JVM does this, for example. It contains both an interpreter for JVM bytecode as well as a compiler for JVM bytecode. (In fact, it actually contains two compilers!)

    It is also possible and in fact common to combine those two approaches: two phases with the first being an AOT compiler that compiles X to Y and the second phase being a mixed-mode engine that both interprets Y and compiles Y to Z. The Rubinius Ruby execution engine works this way, for example: it has an AOT compiler that compiles Ruby sourcecode to Rubinius bytecode and a mixed-mode engine that first interprets Rubinius bytecode and once it has gathered some information compiles the most often called methods into native machine code.

    Note that the role that the interpreter plays in the case of a mixed-mode execution engine, namely providing fast startup, and also potentially collecting information and providing fallback capability may alternatively also be played by a second JIT compiler. This is how V8 works, for example. V8 never interprets, it always compiles. The first compiler is a very fast, very slim compiler that starts up very quick. The code it produces isn’t very fast, though. This compiler also injects profiling code into the code it generates. The other compiler is slower and uses more memory, but produces much faster code, and it can use the profiling information collected by running the code compiled by the first compiler.

    Reference: Interpreter vs JIT

    10.30 - Open and Free Licenses

    Open and Free Licenses

    License Attribution Derivative Commercial Free-Open
    CC0 N Y Y Y
    CC BY Y Y (CC) Y Y
    CC BY-SA Y Y (SA) Y Y
    CC BY-ND Y N Y N
    CC BY-NC Y Y (NC) N N
    CC BY-NC-SA Y Y (NC-SA) N N
    CC BY-NC-ND Y N N N
    MIT Y Y Y Y
    BSD Y Y Y Y
    ZLIB Y Y Y Y
    DWTFYWPL N Y Y Y
    AFL Y Y Y Y
    Apache Y Y Y Y
    GNU GPL v3.0 Y Y (GNU GPL) Y Y
    GNU LGPL v3.0 Y Y (similar) Y Y
    GNU FDL Y Y Y Y
    GNU AGPL Y Y (GNU AGPL) Y Y
    Mozilla MPL Y Y (similar) Y Y

    Comparison Graph

    The Most Restrictive CC License

    Adaptation Chart

    Open License Case

    10.31 - 100 Days Challenge

    100 Days Challenge

    100 days challenge is a project to enhance programming capability by set the training in 100 days timeline.

    1. 100 days of X
    2. 100 days of Code
    3. 100 days of ML Coding
    4. James Priest Round 1 Grow with Google
    5. James Priest Round 2
    6. James Priest Round 3 Google Udacity Nanodegree (Mobile Web Specialist)
    7. James Priest Round 4
    8. James Priest Round 5 Udacity React Nano Degree
    9. James Priest Round 6 Complete React Developer
    10. Reddit Daily Programmer
    11. PyBites 100 Days of Code
    12. Enlight

    11 - Random Notes

    Random Notes

    This folder contains my random notes for everything I found and thought. They will be messed notes since my approach is just write. So they are just like semi-zettelkasten or even just bookmark handlers. Sometimes I will write in English, in the other times it will in Indonesian.

    The notes in the blog work as a starting point to more deep and through notes in another folder. The workflow will be looked like this:

    1. Write everything captured to monthly blog file or to specific related file, if it is available.
    2. Category some interesting things into a respective topic.

    11.1 - 2022 June

    2022 June

    Graph Drawing

    Hardware

    Browser Benchmark

    On-URL Website

    News Feed

    Userscript

    Interview Tips

    OSINT Tools

    Deepfake Desktop

    SMS

    Car

    Google

    Color

    Geometric Algebra

    Dataset

    Landuse Landcover

    Game

    Storage

    Alternative Storage

    • pCloud Free: 10GB
    • box Free: 10GB, Features: Webdav
    • Koofr Free: 10GB, Features: Webdav

    What a random web

    Kuliah Karyawan - Universitas Krisnadwipayana Jakarta Kuliah Kelas Karyawan Online | Komunitas Pendidikan Tinggi Downloads - www.downloads.web.id

    Temporary Mail

    Screen Capture

    PicPick - All-in-one Graphic Design, Best Screen Capture Software, Image Editor, Color Picker, Pixel Ruler and More

    Glossary Web Page

    Glossary Page Template

    Domain Check Tools

    Generative Arts

    Open Food Data

    Web Annotation

    Useful Website

    Image Manipulation

    Generative Wikipedia to Vidoe

    Dictionary App

    Cheatsheet

    Grammar

    Map

    Open Weather Data

    List of Awesome Things

    Academia and Researcher

    Ten Simple Rules - PLOS Collections

    Wikipedia

    Hajj Visualization

    Obsidian Digital Garden Web

    OCR

    Simple Blog

    AI List

    Generative Musics

    Obsidian Markdown

    Writing

    Web Test

    Web Size Club

    11.2 - 2022 March

    2022 March

    Business

    Machine Learning Deployment

    Image Processing

    Machine Learning

    Machine Learning Certification

    Python Learning

    Machine Learning

    Cloud ML

    Circuit Simulator

    Electrical Dictionary

    Hardware for Agriculture

    Dynamic Documents

    Cryptography

    Visualization

    Article

    Deep Learning

    Network

    Python

    Google Cloud

    Not Exist

    2FA

    Pranx

    Optical Illusion

    Computer Graphics

    Not Exist

    Dataset Scanned Objects

    Video Editor

    Google Data Remove

    Free Media

    Electronics EDA Tools

    Hardware Raspberry Pi

    Machine Learning

    Regex

    Math Puzzle

    Summarization

    Image Processing

    Networks

    Hardware

    Machine Learning

    Weather

    Flights

    Image Processing

    Python and Panda

    Privacy Tools

    Alert Service

    Avatars

    Perlindungan Konsumen

    No DataBase Blog

    Machine Learning Learning

    PHP File

    Machine Learning

    • ANN-Benchmarks ANN-Benchmarks is a benchmarking environment for approximate nearest neighbor algorithms search

    11.3 - 2022 February

    2022 February

    Encryption Visualization

    Self-hosted PHP

    Hardware

    Diagrams

    Video Stabilization

    Machine Learning

    Flight Simulator

    OSM

    Learning Tools

    Traffic Simulation

    Automation

    Block Unblock

    Machine Learning

    Auto ML

    ML Books

    Visualization

    Programming

    Kalman Filter

    Machine Learning IDE

    Color

    Automation

    Learn Math

    Visual Python

    Star

    Calculator

    Interesting Article

    Machine Learning

    Open Source Digital Assistant

    Machine Learning

    Solar Powered Water from Air

    google/h2e_technical_documentation

    Document

    Land Cover Classification

    Funny Paper

    Neural Network with Resistor

    Visual Illusion

    11.4 - 2022 January

    Simple Neural Network

    Web Tools

    Documentation

    Self Developments

    Image Processing

    Fun Web

    IP DNS Tools

    Control System

    Productivity

    Startup

    Visualization

    Self Development

    Android

    Academia

    WebTools

    Wikipedia Alternatives

    Search Engine

    Webpage Test

    Censor

    Computer Vision Project

    PhD

    Visualization

    QR Code

    Physical Neural Network

    Python

    Signal Processing

    Arxiv

    Timeseries Forecasting

    VAR

    FFT

    Chart

    11.5 - 2021 December

    2021 December

    Cloud

    SMS Gateway

    Kalman Filters

    Web Rank

    Interesting Blog

    Interesting Paper

    Interesting Reading

    File Format

    Cloud

    Fun and Prank

    Computer Problem Indentification

    Simple Server from Folder

    Image Processing

    Music Processing

    Code Challenge

    Data Extraction from Unstructured data

    Regularization

    Optimizer

    Huawei 60 multiple questions, 1,5 hours:

    • 15 questions T/F Questiens
    • 20-25 multiple-choice single answers
    • multiple-choice multiple answers

    Scientific Data Visualization

    Activation Function

    Sync

    Web

    Dynamic vs Static Graph in Deep Learning

    Python ML Frameworks

    Python Cheatsheet

    Simple Web

    Programming Languages

    Diagram

    Anti Paywall

    Solar Power

    Hardware

    Research

    Machine Learning

    PID Control

    WASM Video Editor

    Visual

    Website Monitor

    11.6 - 2021 November

    2021 November

    Numpy

    Linux

    -The Linux Command Handbook

    CSV

    Data Science

    Robot Simulation

    Mental Model

    Reading

    Flask and Micropython

    Research Metrics

    Powerpoint

    Python Learning

    Weather Dataset

    Windows

    Static

    In browser Game

    Javascript for Front-end

    Game Engine

    11.7 - 2021 October

    2021 October

    CAD

    Whiteboard

    MS Word Tools

    Visidata

    Virtual Reality

    Neural Network

    Brain Interface Hardware

    Web scraping

    Userscript

    Bookmarklets

    Electronics

    Language Learn

    On Browser Coding

    Wiki

    Calculator

    IPTV

    IPTV Player

    IPTV Channel

    IPTV Awesome

    Word Cloud

    Web Dev

    Research

    Online Programming

    Labeling

    Blogging

    Web Development

    IP

    Disposable Email

    Podcast

    Mathematics Solver

    Web Tools

    Sheet Automation

    Eye Tracking

    Word Compressor

    11.8 - 2021 September

    2021 September

    Paper

    Hacking Tools

    Spaced Repetition

    Data Science

    Emoji

    Crowd Generated

    Text

    Draw

    Pixel

    MindMap

    Electronics

    Weather API

    Whiteboard Sharing

    Search Engine

    Graphing Software

    Weather Data

    Qur’an

    Fourier Transform

    CNN

    Python

    Cartoon

    Article

    User Question

    Cloud

    Summarization

    Social Space

    Logic

    Machine Learning

    Awk

    Basic Linux

    Note that these suggestions are off the top of my head and surely biased by my own needs.

    1. bash shell basics
      1. Navigating the shell.
      2. Using one of the common editors, such as vim, emacs, or nano. My personal favorite is vim, but that’s probably because I’ve been using it (or its predecessor, vi) longer than most redditors have been alive.
      3. Listing (ls) and deleting (rm) files.
      4. Changing file permissions (chmod).
    2. Using the find command.
    3. Using basic Linux tools in pipelines, such as tr, wc, basename, dirname, etc.
    4. Using awk/gawk. This tool is so incredibly powerful. I use it almost daily.
    5. Using apt. Note that apt-get is the older package manager, and although it’s largely compatible with apt, there are some differences.
    6. Programming
      1. Learn the basics of bash shell programming, including conditional statements, looping structures, variables, etc.
      2. Definitely learn python, with a focus on python3.
      3. php: see Web Dev below.
      4. Learning C and/or C++ are desirable too, but you don’t need this skill immediately. However, knowing these languages will give you better knowledge for compiling packages and eventually writing your own.
    7. Web servers
      1. You won’t go wrong with apache2, but these days, I’m using nginx more often.
      2. Installing SSL/TLS certs.
    8. Networking
      1. Using iptables to configure firewall rules.
      2. Using ip route to configure routes.

    11.9 - 2021 August

    2021 August

    Handwriting

    Excel

    Single Webpage

    Data Tools

    • Open-source data multitool | VisiData VisiData is an interactive multitool for tabular data. It combines the clarity of a spreadsheet, the efficiency of the terminal, and the power of Python, into a lightweight utility which can handle millions of rows with ease.

    Generation

    Tracking System

    Hydroinformatics for Hydrology

    Generation

    Paper

    Pipe

    API

    Indonesian Font

    Languages

    Meme

    Design Tools

    Programming Math Science

    Electronics

    11.10 - 2021 July

    2021 July

    3D

    Keras

    Software

    Digital Marketing

    Patent

    Pitchdeck

    Algorithm

    Web Copy

    Research

    Email Alias

    But be careful with spam management.

    Database

    Python Excel

    Programming Reference

    Web Monitoring: Indonesia

    Protein Prediction

    Control

    Math Plot

    • Google:
      • sin x
      • multiple graph
      • love
      • love2
      • (sqrt(cos(x))*cos(200x)%2Bsqrt(abs(x))-0.7)*(4-x*x)%5E0.01,+sqrt(9-x%5E2),+-sqrt(9-x%5E2)+from+-4.5+to+4.5))

    Python in Browser

    Comparison of Python in Browser

    Python in Browser Python in Browser summary

    Paywall Bypass

    Coding Tutorial

    Ruler Photo Reference

    Captive Portal Access

    Camera

    Robot

    Chrome

    Open Source

    Docker

    AI for Social

    Selfhosting

    Plant Identification

    Indonesia CC Comunity

    Wikipedia

    11.11 - 2021 June

    2021 June

    Research

    Uninterupted Video

    CSV to JSON

    Probability

    Plant Modeling

    Control

    Computer Science

    Research

    Desktop Record

    Backup

    • Kopia Fast and Secure Open-Source Backup

    Online IDE

    -Code Playground

    ML Model Marketplace

    Tes Bakat Skolastik

    Etymology

    Cat

    Scientific Article

    Presentation Lightboard

    Digital Art

    FPGA

    Patent

    Wikipedia

    Article

    Handwriting

    Milliondollar

    Machine Learning Dev

    Tips

    Article

    App Deployment

    IP Patent

    Research

    Email Alias

    Technology for Society

    Discord

    RSS

    Color Transfer

    Speech Recognition

    PID Control

    Video

    Webpage Test

    11.12 - 2021 May

    2021 May

    IPA : Pronounciation

    💡 : use IPA chart for map coordinate to word coding/decoding
    💡 : use IPA chart for standard color to word coding/decoding

    Remote Desktop

    💡 : control other computer for troubleshooting or hacking.

    Zalgo Text Generator

    Economy

    Routh-Hurwitz

    💡 : Online calculation of Routh-Hurwitz 💡 : Use javascript, skulpt, and CodeMirror for online calculation

    Engineering Notes

    Art

    Bank Card

    💡 : Check bank code, card validity, and generate fake but valid CC number

    Web Page Building

    💡 : quick (drag and drop) web page building

    Google Docs

    Fun URL Changer

    RSS

    Virtual Browser

    Labeling Toolsets

    One Man Projects

    FPGA

    Sideproject

    Fun

    Design

    Portable Apps

    Machine Learning Applications

    Design Competition

    Zeer Evaporation Pot

    HKI

    Control

    Bookmarking

    IRC

    Libre Chat Bot

    Web Tips

    Machine Learning Embedded Devices

    AI Visual Programming

    • Hal9 Create, visualize and deploy AI solutions

    11.13 - 2021 April

    2021 April

    Spice Index

    Control

    Ideas Generator

    Readability

    Web Tools

    Research

    Cloud Computing Comparison

    Programming

    News Scraping

    Wordpress

    Keyboard Tools

    Documentation Style

    Prank

    Netlify

    Cloudflare

    Funny Paper

    Research

    AI for Sport

    OS in Browser

    Program Documentation

    -Internet Search Tips · Gwern.net

    Geocoder (Text Info to Coordinate)

    Javascript

    Research

    Anticounterfeit

    • EURion constellation - Wikipedia
      • Anti Counterfeit Measures
      • One of the measures that prevent counterfeitting of banknotes.
      • The currency-detection algorithms implemented by software packages (such as Adobe Photoshop and in Printer/Copier) are sophisticated and multi-level. Obfuscation of the Eurion, distortion, or even removal in some cases, still allows the package to detect that the image is that of currency. This implies other detection techniques are also employed

    Web Automation

    -Helena | Web Automation for End Users

    HTML

    Calculus

    Spaced repetition systems

    Sensor

    Perception Sensor World

    Linguistics

    11.14 - 2021 March

    2021 March

    ML Project

    Notes

    Visual Programming

    Torrent File Sharing

    Webmention

    Downsampling Timeseries Chart

    Archive Paywalled Web

    3D Processsing

    Distributed Storage

    Language Learning

    Machine Learning Geophysics

    PC Based Object Tracking

    • OpenModelica
    • Scicos from Scilab

    GPU Rental

    AI Benchmark

    Deep Learning in C

    Lowlight Image Enhancement with Deep Learning

    Hacker Blog

    Paper

    Virtual Browser

    Email flooder

    Programming Tutorial

    Programming

    AI Draw

    Mobile ML

    Syllabus

    Webtools

    Renewable

    11.15 - 2021 February

    2021 February

    Fun

    • Pet Rock

    Scientific Report Tools

    Web-based Local Only Editor

    Android Machine Learning

    Userscripts

    Tunneling

    Machine Learning: Action Recogntion

    Wikimedia

    Python Tutorials

    Python by Projects

    Robot: Farming

    Segmentation

    Deep Learning : Review on Review

    Timezone

    Machine Learning Blog

    Downloader

    Research

    File Send

    Single HTML Web

    Machine Learning

    AI for Humanity

    Machine Learning Course

    Adversarial AI

    Course

    AI Blog

    Gig Economy

    • Workers or self-employed?
    • The court made very specific arguments:
    1. Uber set the fare which meant that they dictated how much drivers could earn
    2. Uber set the contract terms and drivers had no say in them '
    3. Request for rides is constrained by Uber who can penalise drivers if they reject too many rides
    4. Uber monitors a driver’s service through the star rating and has the capacity to terminate the relationship if after repeated warnings this does not improve
    • The main difference I see is the imbalance of power. A self-employed can decide who to work with and negotiate almost everything with them. He have my business, the company have theirs, and they discuss to try to reach agreements or not. Uber drivers are not in this position. Uber can dictate everything they want, drivers can only decide to stay or leave.
    • The issue here is that Uber pretends the driver is contracted by the passenger. In which case the driver should be free to negotiate with the passenger. That Uber exercises control of the relationship is what is indicating that Uber is an employer here. Uber pretends you’re working for the customer, not them. That is a key element in their attempt to pretend they’re not an employer.
    • Uber acts as an intermediary party between the contractor and the client (the passenger), so you should compare it to platforms for contract work, such as Upwork, or fiverr, or something like that. The point of Uber is that they’re only an intermediate party that puts clients and drivers together. Drivers are not providing a service to Uber. They don’t control your rates, they don’t stop you from getting jobs if you reject a lot, they don’t set any quality minimums for your job, and they don’t remove you if someone doesn’t give you five stars. In other words, you’re not working for these platforms, it’s just a marketplace. With Uber, drivers are working for Uber, not for the passengers. However, Uber is pretending to be a marketplace, and it isn’t. This sentence just proves that.

    Face Recognition

    Social Media

    Notebook

    ML Tools

    Web Scraping dan Data Mining

    AI Learning

    Data Tools

    FPGA

    3D Reconstruction

    Portable Server

    FPGA

    Fonts

    Web Tools

    11.16 - 2021 January

    2021 January

    Documentation

    Workflows

    Tips

    • Click the beginning of the code block, then Shift+Click the end. That will select the entire block, which you can then copy normally.

    Web Tools

    Development

    Language

    Language

    Web Tools

    Open Source Blog

    AI Art

    Traffic Simulator

    Decentralized

    • Skynet: The decentralized CDN and file sharing platform (like IPFS)

    Neural Network

    Paper

    Gmail

    Javascript

    Python

    App List

    Functional Web

    Ensembling

    • Ensembling is the use of several independently trained models to form an overall prediction. The basic idea of ensembling is that individual models have weaknesses in different areas, which are compensated by the combination with predictions of other independently trained models. Possible ensembling strategies are e.g. majority voting, the use of a weighted average based on classifier confidences, or simply using the arithmetic mean of several predictions of different models and model architectures

    Data Science Learning

    Paper Discussion

    RSS to JSOn

    Learning

    Programming Learning for Kids

    Desktop

    • Deskreen Deskreen is a free desktop app that makes any device with a web browser a second screen over WiFi. Deskreen can be used for mirror entire display to any device that has a web browser.

    Python

    Search Engine

    • Dash: search engine for gutenberg files

    Food

    Microcontroller and Python

    Math

    Statistical Tools

    • Shiny Server Daniel Lakens: Recovering data from summary statistics, App to perform simulation based power analysis for ANOVA designs

    Flight Dynamics

    Ebook Readability

    CNN Sliced Inference

    obss/sahi: A vision library for performing sliced inference on large images/small objects

    Deep Learning Noise Cancellation

    LORA

    Meshtastic An open source, off-grid, hiking, climbing, skiing, GPS mesh communicator. Similar to disaster.radio

    11.17 - Ebook Bookmarks

    Bookmarks on Ebooks

    Ebook

    Free Ebook

    Free Book on Neural Network (Artificial Intelligence)

    1. Introduction to Neural Networks

    2. Machine Learning, Neural and Statistical Classification, D. Michie, D.J. Spiegelhalter, C.C. Taylor

    3. Planning Algorithms, Steven M. LaValle

    4. Introduction to Machine Learning, Nils J. Nilsson

    5. Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto

    6. An Introduction to Neural Networks Ben Krose, Patrick van der Smagt

    7. Neural Networks - A Systematic Introduction, Raul Rojas

    8. Neural Networks, Christos Stergiou and Dimitrios Siganos

    9. Dynamics of Complex Systems, Yaneer Bar-Yam

    10. Convex Optimization, Stephen Boyd and Lieven Vandenberghe

    11. Reinforcement Learning:An Introduction, Richard S. Sutton, Andrew G. Barto

    12. Computing and the Brain, Dr Bruce Graham

    13. A Genetic Algorithm Tutorial, Darrell Whitley

    14. Artificial Intelligence through Prolog, Neil C. Rowe

    15. Brief Introduction to Educational Implications of Artificial Intelligenc, David Moursund

    16. Gaussian Processes for Machine Learning, Carl Edward Rasmussen and Christopher K. I. Williams

    17. Global Optimization Algorithms - Theory and Application, Thomas Weise

    18. Introduction to Neural Networks with Java, Jeff Heaton

    19. Practical Artificial Intelligence Programming in Java, Mark Watson

    20. Prolog and Natural-Language Analysis, Fernando C. N. Pereira, Stuart M. Shieber

    Free Books on Information Theory and Communication System

    1. Fundamentals of Wireless Communication, David Tse and Pramod Viswanath
    2. An Introduction to Wireless Technology, IBM
    3. Information Theory, Inference and Learning Algorithms, David J. C. MacKay
    4. Entropy and Information Theory****, R.M. Gray
    5. Complexity Issues in Coding Theory, Alexander Barg
    6. Network Coding Theory, Raymond W. Yeung, Shuo-Yen Robert Li, Ning Cai and Zhen Zhang
    7. Notes on Coding Theory, Jonathan I. Hall
    8. Theory of Codes, Jean Berstel, Dominique Perrin, C. Reutenauer
    9. Codes and Automata, Jean Berstel, Dominique Perrin, C. Reutenauer
    10. A Short Course in Information Theory, David J.C. MacKay
    11. Information, Randomness and Incompleteness, G J Chaitin, IBM Research
    12. A Discipline Independent Definition of Information, Robert M. Losee
    13. A Mathematical Theory of Communication, Claude E. Shannon
    14. The Limits of Mathematics: A Course on Information Theory and the Limits of Formal Reasoning , G J Chaitin
    15. UWB Communication Systems—A Comprehensive Overview, Edited by: Maria-Gabriella Di Benedetto, Thomas Kaiser, Andreas F.Molisch, Ian Oppermann, Christian Politano, and Domenico Porcino
    16. Introduction to Data Communications, by Eugene Blanchard
    17. Understanding Optical Communications
    18. Asterisk: The Future of Telephony, Jim Van Meggelen/Jared Smith/Leif Madsen
    19. Primer on Information Theory, Thomas Schneider
    20. A Discipline Independent Definition of Information, Robert M. Losee
    21. High-Speed Communication Circuits and Systems, Prof. Michael Perrott
    22. Communication System Design, Prof. Vladimir Stojanovic
    23. Essential Coding Theory, Prof. Madhu Sudan
    24. Speech Communication, Prof. Kenneth Steven
    25. Quantum Optical Communication, Prof. Jeffrey H. Shapiro
    26. Principles of Wireless Communications, Prof. Lizhong Zheng
    27. Principles of Digital Communications I, Prof. Robert Gallager, Prof. Lizhong Zheng
    28. Principles of Digital Communication II, Prof. David Forney
    29. Quantum Information Science, Prof. Issac Chuang, Prof. Peter Shor
    30. Transmission of Information, Prof. Muriel Medard, Prof. Lizhong Zheng
    31. Data Communication Networks, Prof. Eytan Modiano
    32. Stochastic Processes, Detection, and Estimation, Prof. Alan Willsky, Prof. Gregory Wornell
    33. Primer on Information Theory by Thomas Schneider
    34. Stochastic Processes, Detection and Estimation-A. S. Willsky and G. W. Wornell

    eBook

    11.18 - Bookmarks

    Bookmarks

    TV Online

    Sport

    Software

    Selfhosted

    Python

    Arabic

    Quran

    Learning

    Free Code Camp

    WebTools

    Miniweb Tools

    Network

    Islam

    VHDL

    Competition

    Data Science Course Notes

    Course

    Machine Learning

    IoT

    Forum

    NLP

    Start Up

    Research Funding

    Depth News

    Personal Startpage

    Q&A Site

    Learning Source

    Newsletter

    Innovation

    Coding for Kids

    Bahasa Indonesia

    • Kateglo kamus, tesaurus, dan glosarium bahasa Indonesia

    MOOC

    Robotics

    Numerical Computation

    Python

    Embedded System

    Map

    Open Research

    Automation

    Portable Windows App

    Computer Books

    Online Applications

    Visualization

    Online Database

    Map

    Android

    AI

    Embedded

    Network

    Learning

    Ebook

    App

    Web Similarity Search Engine

    Research Paper

    Open Access Book

    FPGA

    Python

    Programming

    Cheatsheet

    Webtools

    Volunteer Works

    History Map

    Hardware Hacks

    3D Sculpt

    Data Visualization

    Browser

    1. Slimjet (lightest)
    2. Edge
    3. Chrome
    4. Firefox (biggest memory)

    11.19 - 2020 Q4

    2020 Q4

    Paywal Bypass

    Cheatsheets

    Gravity

    Data Serialization

    Paper Airplanes

    • FoldnFly: A database of paper airplanes with easy to follow folding instructions, video tutorials and printable folding plans. Find the best paper airplanes that fly the furthest and stay aloft the longest.

    Web Tools

    • Kinopio, draw brainstorming map
    • Klobie bookmark system with research

    Network Check

    • Blip : visual online ping
    • pathping
    • mtr
    • gpinggping

    Web Tools

    • CyberChef : CyberChef - The Cyber Swiss Army Knife

    Programming

    Videos

    Machine Learning

    Web Tools

    Idea

    Research

    Social Media

    Programming

    Machine Learning

    Paperless

    Bootable USB

    Translation

    Pronounciation for all languages

    Contemplation

    Learn Anything Search Engine

    Online IDE

    Read without Clutter

    Network Simulator

    Awesome Data Science

    Research

    Blog

    Web Tools

    Mail Forwarding

    Javascript

    Host HTML file

    Host Markdown file

    Face Recognition

    • Sharp AI DeepCamera: SharpAI is an open-source stack for machine learning engineering with private deployment and AutoML for edge computing. DeepCamera is an application of SharpAI designed for connecting computer vision models to the surveillance camera.
    • A web app to generate template code for machine learning : traingenerator.jrieke.com, Github

    Shortcut Key

    Computer Science

    Citation Manager

    Organizing Objects

    Design

    Eavesdropping

    Certification

    Hosts File

    Tricks

    • Linktricks : bypass premium web services (Grammarly, Scribd, Canva etc.)

    Conference Tools

    Machine Learning

    Slideshare

    Numpy

    Blog of ML

    Fast Specific Search Engine

    Open Source Culture

    Github

    Research

    • Climate Colab : Work with people from all over the world to create proposals for how to reach global climate change goals.

    Progressive Web App

    Remote Desktop

    Web Tools

    TLD

    Interesting Technology

    Machine Learning

    Torrent

    Localization

    Data Mining

    Research

    Augmented Reality

    Online book

    English

    Interesting Story

    Javascript Hosting

    • JS.org : Free webspace to host javascript project.

    LSTM

    Numpy

    11.20 - 2020 Q3

    2020 Q3

    Paper with Code

    • Spying coversation by watching the bulb lamp movement: Lamphone

    Open Source

    • Taxipy an open source alternative to Uber/Gojek
    • Libre taxi open source to Uber Gojek

    Kuliah

    Sistem Avionik Pesawat

    Sistem avionik pesawat merujuk pada berbagai piranti elektronika di dalam pesawat.

    1. Piranti Komunikasi
      1. VHF Radio 30-300 MHz modulasi AM
      2. HF Radio 3-30 MHz modulasi AM
      3. UHF Radio
      4. ICS (Komunikasi Intra Pesawat)
      5. ELT (Emergency Locketter Transmitter, Pemancar Lokasi Pesawat saat Darurat)
    2. Piranti Navigasi
      1. ADF (Penentu arah pesawat otomatik)
      2. RALT (Pengukur ketinggian pesawat)
      3. VOR (Penentu azimuth dan bearing pesawat)
      4. ILS (Informasi Pendaratan)
      5. TACAN (untuk Militer)
      6. GPS (Posisi pesawat)
      7. DME (Pengukur jarak pesawat)
    3. Piranti Instrumentasi
      1. EFIS (Informasi tampilan status penerbangan)
      2. FMS (Manajemen sistem penerbangan)
      3. Standby Attitude Instrument (Sistem Cadanga Independen)
      4. Engine and Fuel Instrument (Monitor mesin dan bahan bakar)
      5. ADC (Pengolahan data)
      6. FDR (Flight Recorder)
      7. CDR (Cockpit Recorder)
      8. AHRS (Penentu arah (heading), attitude dan simpangan (yaw))
      9. Weather Radar (Cuaca)
    4. Piranti advisory
      1. TCAS (Traffic Collision Avoidance System, peringatan penghindaran tabrakan antar pesawat)
      2. Mode-S Transponder (identifikasi dan penentuan posisi pesawat
      3. TAWS (Terrain Awareness and Warning Ssytem, peringatan dan penghindaran terhadap permukaan)

    AHRS terdiri dari

    • 3 sensor gyro (angular: roll, pitch, yaw)
    • 3 sensor akselerometer (linear)
    • 3 sensor magnetometer (flux magnet bumi)

    Heading pesawat

    • yaw (putar terhadap sumbu z, vertikal)
    • pitch (putar terhadap sumbu y, lateral)
    • roll (putar terhadap sumbu x, longitudinal)

    Interesting Site

    Ngrok

    Ngrok is an alternative to port forwarding, expose your local to public

    Canary Tokens

    Suppose you have a situation like this. You want to be warned if someone access your file, your folder, your email, your image, etc. So you put a token, transparent in your file/folder/email/image, which will warn you if someone open it. That is how Canary Tokens work

    Research Digest

    AI in Industries

    Interesting Online Books

    Google Meet Video Edit

    Information is Beautiful

    Curveboard

    Dictionary

    Secure Communications

    Mini Javascript

    Data Science

    ML Architecture for Mobile

    Pyimagesearch

    Online HTML Book

    • Flyb Online HTML CHM Books

    Online Tables

    Batik

    • iwarebatik all about Batik, including AI for Batik

    Java Script CDN

    • JSDelivr JavaScript from GitHub, NPM, or WordPress

    PV System

    • Program PV for Cold Storage

    Papers with Code

    Simple Functional Technology

    Lightboards (a.k.a) Glass Chalkboard

    Citation Manager

    WhatsApp

    Colab

    12 - Research

    Research

    12.3 - Digital Twin News

    Digital Twin News

    Digital Twin Policy

    Digital Twin News

    Digital Twin Tools

    Digital Twin DIY

    Digital Twin on Github

    Digital Twin Research Group

    12.4 - Generative Machine Learning GAN

    Generative Machine Learning GAN

    GAN

    The dataset was web-scraped for an original 20k samples, then a custom MRCNN model was trained for image segmentation and cropping before being fed into the 128 DCGAN, trained on local hardware, 1660

    Generative Model Course

    GAN Course

    GAN Project/Paper

    Style GAN

    Paper

    GAN Image Superresolution

    GAN

    Style-GAN

    Research

    Research

    • Realless Generative webs with blinking eyes

    Music Generation

    Video Generation

    • Hyperchroma A music player that creates real-time music videos (hyperchroma.app)

    Colorization

    • Pix2pix vs CycleGAN
      • Cycle-GAN can work in an ‘unpaired’ manner and various architectural differences. Unpaired image translation is much harder, as you demand the model to learn objects of different shapes, size, angle, texture, location in different scenes and settings on top of the actual task (coloring in this case). Requires more data and you don’t have fine control on the learning. Formulating the coloring problem as a paired task makes more sense as you simply decrease the complexity of the problem without increasing data collection/annotation work.
      • The whole point about using CycleGAN is that it can learn in unpaired situations. And it works well in the context of style transfer tasks where the changes are really bold and less nuanced. But, in the context of image colorization, the changes are really subtle and also there are way more options to choose colors than changing a horse to zebra. The other thing is that learning to change a colored image to black and white is much easier for the model than learning to colorize it which can lead to a bad learning procedure.
      • The most prominent differences is that CycleGAN helps when you have unpaired images and you want to go from one class to the other (Horse to Zebra for example) but in the Pix2Pix paper, the images that you get after the inference, are the input images but with some new features (black&white to colorized or day time to night time of a scene). In pix2pix, a conditional GAN (one generator and one discriminator) is used with some supervision from L1 loss. In CycleGAN, you need two generators and two discriminators to do the task: one pair for going from class A to B and one pair for going from class B to A. Also you need Cycle Consistency Loss to make sure that the models learn to undo the changes they make.
    • pix2pixhd is pix2pix in higher resolution
    • pix2pix tutorial and example:

    Machine Learning: Image Generator

    GAN

    Generation

    Lightboard

    12.5 - Awesome Research and Academic Writing Assistant Tools

    Awesome Research and Academic Writing Assistant Tools

    Related links:
    🔗 Paper and Article Search Tools
    🔗 Awesome Writing Assistant Tools
    🔗 Awesome Research and Academic Writing Assistant Tools
    🔗 Awesome Science Blogs and Forums
    🔗 Awesome Scientific Journal Tools
    🔗 Awesome Conferences Tools
    🔗 Awesome Latex Apps

    Chrome Extension and Script

    Multitools

    Arxiv

    PubMed and Google Scholar

    Code

    Jupyter Notebook

    Citation Manager

    Paper Finder

    MS Word Add-ons

    Citation Manager

    • Zotero
    • Mendeley

    Grammar

    • Grammarly
    • Writely
    • LanguageTools
    • WriteBetter
    • Power Thesaurus

    Research

    • Keenious
    • Data Finder

    Reference Tools

    Article/Paper Summarization

    Article/Paper Graph and Relationship

    Article/Paper Reading

    Article/Paper Exploration

    Article/Paper Reading Tools

    Web Annotation

    Research Open Data

    List of Researcher and Academia Tools

    Research/Academia Forums

    Testing

    Paper Graph Writing Assistant

    12.7 - Paper and Article Search Tools

    Paper and Article Search Tools

    Related link:
    🔗 Paper and Article Search Tools
    🔗 Awesome Writing Assistant Tools
    🔗 Awesome Research and Academic Writing Assistant Tools
    🔗 Awesome Science Blogs and Forums
    🔗 Awesome Scientific Journal Tools
    🔗 Awesome Conferences Tools
    🔗 Awesome Latex Apps

    Article Search Flowchart

    Guide to Finding Articles/Books - Google Docs

    Article/Paper Search Tools

    Paper Search Engine (Sci-hub)

    Article

    12.9 - Machine Learning Teaching

    Machine Learning Teaching

    Teaching Deep Learning

    Machine Learning : Visual Coding

    💡 : Kid’s machine learning tutorial

    Machine Learning on Spreadsheet

    Machine Learning Visualization

    Machine Learning

    • The First Rule of Machine Learning: Start without Machine Learning
    • Machine Learning: The High Interest Credit Card of Technical Debt – Google Research So little of success in ML comes from the sexy algorithms and so much just comes from ensuring a bunch of boring details get properly saved in the right place. After months learning about machine learning for time series forecasting, several chapters in a book on deep learning techniques for time series analysis and forecasting, the author kindly pointed out that there are no papers published up to that point that prove deep learning (neural networks) can perform better than classical statistics. Career lesson: Ask a lot of questions early in a project’s life. If you’re working on something that uses machine learning, ask what system it’s replacing, and make sure that someone (or you) runs it manually before spending the time to automate.

    Rules of Machine Learning: | ML Universal Guides | Google Developers

    Machine Learning

    12.11 - Hardware for Machine Learning

    Hardware for Machine Learning

    Hardware for Deep Learning

    TPU - GPU

    • Turning TPU into GPU (mean: it compiles Pytorch to work on a TPU). PyTorchXLA converts the TPUv3-8 hardware into a GPU so you can use it with PyTorch as a normal GPU. TPUv3-8 which is part of free access from Google Colab can give a computation power that is equivalent to 8 V100 Tesla GPU and possibly 6 3090RTX GPU. info is here. TPUs are ~5x as expensive as GPUs ($1.46/hr for a Nvidia Tesla P100 GPU vs $8.00/hr for a Google TPU v3 vs $4.50/hr for the TPUv2 with “on-demand” access on GCP).
    • We recommend CPUs for their versatility and for their large memory capacity. GPUs are a great alternative to CPUs when you want to speed up a variety of data science workflows, and TPUs are best when you specifically want to train a machine learning model as fast as you possibly can. In Google Colab, CPU types vary according to variability (Intel Xeon, Intel Skylake, Intel Broadwell, or Intel Haswell CPUs). GPUs were NVIDIA P100 with Intel Xeon 2GHz (2 core) CPU and 13GB RAM. TPUs were TPUv3 (8 core) with Intel Xeon 2GHz (4 core) CPU and 16GB RAM).

    Free TPU

    AI/ML Cloud Computing

    Machine Learning

    AI Platform

    12.12 - Awesome List of Dataset

    Awesome List of Dataset

    Dataset

    Art Dataset

    Dataset

    Drug Dataset

    Dataset Zoo

    Dataset

    Dataset

    Dataset

    Dataset

    Dataset Tools

    Cell Tower Dataset

    Twitter Dataset

    Dataset

    • EleutherAI EleutherAI is a grassroots AI research group aimed at democratizing and open sourcing AI research.
    • The Pile : The Pile is a 825 GiB diverse, open source language modelling data set that consists of 22 smaller, high-quality datasets combined together.

    12.13 - Sign Language Recognition

    Sign Language Recognition

    List of Project

    Video-based

    with NLP

    Sign Language Web

    Sign Language Tutor

    Sign Language Vocalization

    Inverse ( … to Sign Language)

    Image-based

    Bahasa Isyarat Indonesia

    • Bahasa Isyarat Indonesia (BISINDO)
      • dianggap sebagai bahasa yang bisa mewakili budaya tuli Indonesia
    • Sistem Isyarat Bahasa Indonesia (SIBI)
      • adopsi dari American Sign Language (ASL)
      • dipakai di SLB
    • Klobility - BISINDO dan SIBI: Apa Bedanya?

    12.14 - Time Series Forecasting

    Time Series Forecasting

    LSTM for Time Series Forecasting

    • Univariate LSTM Models : one observation time-series data, predict the next value in the sequence
    • Multivariate LSTM Models : two or more observation time-series data, predict the next value in the sequence
      • Multiple Input Series : two or more parallel input time series and an output time series that is dependent on the input time series
      • Multiple Parallel Series : multiple parallel time series and a value must be predicted for each
    • Univariate Multi-Step LSTM Models : one observation time-series data, predict the multi step value in the sequence prediction.
    • Multivariate Multi-Step LSTM Models : two or more observation time-series data, predict the multi step value in the sequence prediction.
      • Multiple Input Multi-Step Output.
      • Multiple Parallel Input and Multi-Step Output.

    Machine Learning for Multivariate Input

    Statistical Method for Multivariate Input

    Machine Learning for Univariate Input

    Statistical Method for Univariate Input

    Jupyter Notebook Examples

    Univariate ARIMA

    import statsmodels

    Univariate LSTM

    import keras

    Multivariate VAR

    (Note: VAR should only for Stationary process - Wikipedia)

    Multivariate LSTM

    Prophet and Kats from Facebook

    Note on Multivariate and Univariate

    Software

    Other Time Series

    Precipitation Forecasting

    Deep Learning for Forecasting

    top open source deep learning for time series forecasting frameworks.

    1. Gluon This framework by Amazon remains one of the top DL based time series forecasting frameworks on GitHub. However, there are some down sides including lock-in to MXNet (a rather obscure architecture). The repository also doesn’t seem to be quick at adding new research.
    2. Flow Forecast This is an upcoming PyTorch based deep learning for time series forecasting framework. The repository features a lot of recent models out of research conferences along with an easy to use deployment API. The repository is one of the few repos to have new models, coverage tests, and interpretability metrics.
    3. sktime dl This is another time series forecasting repository. Unfortunately it looks like particularly recent activity has diminished on it.
    4. PyTorch-TS Another framework, written in PyTorch, this repository focuses more on probabilistic models. The repository isn’t that active (last commit was in November).

    eBook Forecasting

    Timeseries Forecasting

    Timeseries Forecasting Book

    Timeseries Forecasting Reading

    Timeseries RNN

    12.15 - Soft Sensor

    Soft Sensor

    What is Soft Sensors

    Soft-sensors: predictive models for sensor characteristic are called soft sensors Soft-sensors: software+sensor

    Soft-sensor Categories

    • model-driven
      • First Principle Models (FPM)
      • extended Kalman Filter
    • data-driven
      • Principle Component Analysis + regression model, Partial Least Squares
      • Artificial Neural Networks
      • Neuro-Fuzzy Systems
      • Support Vector Machines

    Soft-sensor Application

    • on-line prediction
      • prediction of process variables which can be determined either at low sampling rates
      • prediction of process variables which can be determined through off-line analysis only
      • (statistical or soft computing supervised learning approaches)
    • process monitoring
      • detection of the state of the process, usually by human
      • observation and interpretation of the process state (based on univariate statistics) and experience of the operator
    • process fault detection
      • detection of the state of the process

    FPM

    • First Principle Models describe the physical and chemical background of the process.
    • These models are developed primarily for the planning and design of the processing plants, and therefore usually focus on the description of the ideal steady-states of the processes
    • based on established laws of physics
    • does not make assumptions such as empirical model and fitting parameters
    • using experimental data

    Data-driven data-driven models are based on the data measured within the processing plants, and thus describe the real process conditions, they are, compared to the model-driven Soft Sensors, more reality related and describe the true conditions of the process in a better way. Nevertheless

    The most commonly applied multivariate analysis tools are principal component analysis (PCA) for fault detection and projection of latent structures (PLS) for the prediction of key quality parameters at end of batch.

    First-principle models may be the answer, using experimental data instead of statistical methods to estimate model parameters. They are not as quick and easy to build, but they have many advantages. In terms of simulation, first-principle models provide extrapolation in addition to the interpolation provided by data-driven models. But they also can be used for monitoring, control and optimization.

    Soft-Sensor Modelling

    Others

    Dataset

    Reference

    Ebook

    12.18 - Machine Learning Tools

    Machine Learning Tools

    Machine Learning Toolbox

    Machine Learning Deployment

    Machine Learning Versioning Control

    Data Studio

    Machine Learning Ops

    Machine Learning Toolbox

    Machine Learning

    Machine Learning Tools

    Machine Learning Steps

    Machine Learning

    Machine Learning

    Machine Learning Labeling

    12.19 - Awesome List of Machine Learning Visualization

    Awesome List of Machine Learning Visualization

    Related links:
    🔗 Awesome List of Data Visualization
    🔗 Awesome List of Machine Learning Visualization
    🔗 Awesome List of Interactive and Explorable Webs
    🔗 Interactive Books

    Machine Learning Visualization

    12.20 - Machine Learning in Sports

    Machine Learning in Sports

    Baseball

    Soccer

    12.21 - Machine Learning for Image Processing

    Machine Learning for Image Processing

    Image to Art

    Image Reconstruction and Upscaler

    Image Cloaking

    • Fawkes : Prevent AI for identifying photo

    Computer Vision Data Manipulation

    • cvdata (MIT) : Tools for creating and manipulating computer vision datasets: resize images, rename files, annotation format conversion, image format conversion, Split dataset into training, validation, and test subsets and much more.

    ML-based Image Processor

    • Hotpot AI ; Design Assistant, starting from image processing, device mockups, to social media posts

    12.22 - Machine Learning for Health

    Machine Learning for Health

    AI in Healths in Indonesia

    • Niko
    • Healhtech
    • Madeena
    • bravehealth.tech, rafi amjadrasyid
    • gigi.id
    • farmasee.id
    • ctscope
    • alinamed
    • Lamesia.com

    Deep Learning for Medical Image Segmentation

    Healthcare Apps

    12.23 - Machine Learning in Agriculture

    Machine Learning in Agriculture

    Disease Detection

    Crop Simulator and Simulation

    Plant Phenomics

    12.24 - Machine Learning for Earth Science

    Machine Learning for Earth Science

    AI for Earth Science

    Climate

    • Climate indices (BSD-3-Clause) : Python implementations of various climate index algorithms which provide a geographical and temporal picture of the severity of precipitation and temperature anomalies useful for climate monitoring and research.
    • MIT Climate CoLab : A collaborative online community centered around a series of annual contests that seek out promising ideas for fighting climate change.
    • Climate Action Challenge : global design competition calling on the creative community to submit bold, innovative solutions to combat the impacts of climate change.
    • Improving Weather Prediction with CNN: J. A. Weyn, D. R. Durran, and R. Caruana, “Improving data-driven global weather prediction using deep convolutional neural networks on a cubed sphere,”Journal of Advances in Modeling Earth Systems, vol. 12, no. 9, Sep. 2020,ISSN: 1942-2466.doi:10.1029/2020ms002109.[Online]. Available:http://dx.doi.org/10.1029/2020MS002109. Code: https://github.com/jweyn/DLWP-CS

    12.25 - Machine Learning SOTA and Model Zoo

    Machine Learning SOTA and Model Zoo

    List of SOTA

    Model Zoo

    Report about AI Progress

    Specific SOTA

    Machine Learning Review

    12.26 - Machine Learning Metrics

    Machine Learning Metrics

    Accuracy and Loss

    • Loss (not in %) can be seen as a distance between the true values of the problem and the values predicted by the model. Greater the loss is, more huge is the errors you made on the data.
    • Loss is often used in the training process to find the “best” parameter values for your model (e.g. weights in neural network). It is what you try to optimize in the training by updating weights.
    • Accuracy (in %) can be seen as the number of error you made on the data.
    • Accuracy is more from an applied perspective. Once you find the optimized parameters above, you use this metrics to evaluate how accurate your model’s prediction is compared to the true data.
    • That means :
      • a low accuracy and huge loss means you made huge errors on a lot of data
      • a low accuracy but low loss means you made little errors on a lot of data
      • a great accuracy with low loss means you made low errors on a few data (best case)

    Prediction

    • Condition Positive (P) : the number of real positive cases in the data
    • Condition Negative (N) : the number of real negative cases in the data
    • True Positive or Hit
    • True Negative or Correct Rejection
    • False Positive or False Alarm or Type I error
    • False Negative or Miss or Type II error

    Confusion Matrix

    TP TN FP FN

    TP TN FP FN

    Accuracy

    • Accuracy (ACC) = (Σ True positive + Σ True negative)/Σ Total population
    • Accuracy = (TP + TN)/(TP + TN + FP + FN)
    • Accuracy is sensitive to class imbalance

    Precision or Positive Predictive Value (PPV)

    • Precision measures how accurate is the predictions.
    • Precision is the percentage of the predictions are correct.
    • Precision measures the “false positive rate” or the ratio of true object detections to the total number of objects that the classifier predicted.
    • Precision: how many selected items are relevant.
    • Precision, a.k.a. positive predicted value, is given as the ratio of true positive (TP) and the total number of predicted positives.
    • Precision = Σ True positive/Σ Predicted condition positive Precision

    Recall or Sensitivity or True Positive Rate or Probablity of Detection

    • Recall measures how good the algorithm find all the positives.
    • Recall measures the “false negative rate” or the ratio of true object detections to the total number of objects in the data set.
    • Recall: how many relevant items are selected.
    • Recall : the ratio of TP and total of ground truth positives.
    • Recall = Σ True positive/Σ Condition positive Recall

    F1 Score

    • Harmonic mean of Precision and Recall
    • Because it is difficult to compare two models with low precision and high recall or vice versa.
    • So to make them comparable, F-Score is used.
    • F1 score = 2 · (Precision · Recall)/(Precision + Recall) Precision-Recall-F1 Formula

    Matthews Correlation Coefficient (MCC) or Phi Coefficient

    • MCC is used in machine learning as a measure of the quality of binary (two-class) classifications
    • MCC takes into account all four values in the confusion matrix, and a high value (close to 1) means that both classes are predicted well, even if one class is disproportionately under- (or over-) represented. MCC

    Intersection over Union (IoU)

    • IoU is used for detection algorithm

    • The IoU is given by the ratio of the area of intersection and area of union of the predicted bounding box and ground truth bounding box.

      • an IoU of 0 means that there is no overlap between the boxes
      • an IoU of 1 means that the union of the boxes is the same as their overlap indicating that they are completely overlapping
    • The IoU would be used to determine if a predicted bounding box (BB) is TP, FP or FN. The TN is not evaluated as each image is assumed to have an object in it. IoU

    • Traditionally, we define a prediction to be a TP if the IoU is > 0.5, then:

      • True Positive (if IoU > 0.5)
      • False Positive (if IoU < 0.5 or Duplicated Bounding Box)
      • False Negative, when our object detection model missed the target (if there is no detection at all or when the predicted BB has an IoU > 0.5 but has the wrong classification)
    • mean Average Precision (mAP) score is calculated by taking the mean AP over all classes and/or over all IoU thresholds. Mean average precision (mAP) is used to determine the accuracy of a set of object detections from a model when compared to ground-truth object annotations of a dataset. Note:

    • What is Mean Average Precision (mAP) in Object Detection?

    • Mean Average Precision (mAP) Explained | Paperspace Blog

    • mAP (mean Average Precision) might confuse you! | by Shivy Yohanandan | Towards Data Science

    Reference

    Multiclass Metrics

    Accuracy, Precision, Error

    • Accuracy is closeness of the measurements to a specific value
      • More commonly, it is a description of systematic errors, a measure of statistical bias; low accuracy causes a difference between a result and a “true” value. ISO calls this trueness.
      • the accuracy of a measurement system is the degree of closeness of measurements of a quantity to that quantity’s true value
      • bias is the amount of inaccuracy
    • Precision is the closeness of the measurements to each other
      • Precision is a description of random errors, a measure of statistical variability.
      • The precision of a measurement system, related to reproducibility and repeatability, is the degree to which repeated measurements under unchanged conditions show the same results.
      • variability is the amount of imprecision

    Accuracy has two definitions:

    • More commonly, it is a description of systematic errors, a measure of statistical bias; low accuracy causes a difference between a result and a “true” value. ISO calls this trueness.
    • Alternatively, ISO defines accuracy as describing a combination of both types of observational error above (random and systematic), so high accuracy requires both high precision and high trueness.

    Accuracy and Precision

    Learn more:

    1. POCD

    Machine Learning Overfitting Handling

    12.28 - Awesome Latex Apps

    Awesome Latex Apps

    Related links:
    🔗 Paper and Article Search Tools
    🔗 Awesome Writing Assistant Tools
    🔗 Awesome Research and Academic Writing Assistant Tools
    🔗 Awesome Science Blogs and Forums
    🔗 Awesome Scientific Journal Tools
    🔗 Awesome Conferences Tools
    🔗 Awesome Latex Apps

    Learn Latex

    Online Paper (with Latex) Editors

    Online Math (Latex) Editor

    Calculator Latex

    Image to Latex Converter

    Sketch to Latex and Diagram

    Offline Latex Editor

    • LatexDraw : LaTeXDraw is a graphical drawing editor for LaTeX. LaTeXDraw can be used to 1) generate PSTricks code; 2) directly create PDF or PS pictures.
    • Texmaker : LaTex editor
    • MiKTex : LaTex engine
    • KLatex Formula
    • SwiftLatex : WASM Latex processing

    Latex Code Checker

    Word to Latex

    Graph to Latex

    Latex to HTML

    Latex Math

    Latex , Markdown, and HTML

    Pseudocode in Latex

    12.29 - Awesome Scientific Journal Tools

    Awesome Scientific Journal Tools

    Related links:
    🔗 Paper and Article Search Tools
    🔗 Awesome Writing Assistant Tools
    🔗 Awesome Research and Academic Writing Assistant Tools
    🔗 Awesome Science Blogs and Forums
    🔗 Awesome Scientific Journal Tools
    🔗 Awesome Conferences Tools
    🔗 Awesome Latex Apps

    Impact Factor

    Impact Factor for Specific Publishers

    Article Processing Charge (APC) for Open Access Paper

    APC and IF relationship

    Journal Keyword Alert and RSS

    Journal Publisher List

    Journal Notes

    Journal Article Tools

    12.30 - Safety Helmet Detection

    Safety Helmet and Plate Detection

    Safety Helmet Detection Github Repos

    License Plate Detection Github Repos

    Ideas

    Safety Helmet Detection Paper

    Safety Helmet and Plate Detection Papers

    12.31 - Emotion Detection with Machine Learning

    Emotion Detection with Machine Learning

    Github

    Ideas

    Library

    12.32 - Face Mask Detection with Machine Learning

    Face Mask Detection with Machine Learning

    Github

    Dataset

    Paper

    Ideas

    Project in Progress (by Rozi)

    • Deep Learning for Face Detection in Real Time
    • Face Detection : SSD ResNet10 dan MTCNN
    • Mask Classification : CNN with MobileNetV2 dan VGG16Net
    • PC and Android Deployment
    • Variation :
      • distance
      • lighting
      • mask variation (+face attack)
    • Metric for Performance Analysis :
      • Accuracy, Precision, Recall, F1 for image analysis
      • mAP@0.5 (Mean Average Precision) for image analysis
      • FPS for video analysis
    • Reference:

    Object Detection

    • Object Detection is Object Localization and Object Classification
    • Model for Object Detection: Fast R-CNN, Faster R-CNN, Histogram of Oriented Gradients (HOG), Region-based Convolutional Neural Networks (R-CNN), Region-based Fully Convolutional Network (R-FCN), Single Shot Detector (SSD), Spatial Pyramid Pooling (SPP-net), YOLO (You Only Look Once)

    YOLO

    TinyYolo for Mobile App

    Yolo for custom object

    SSD

    Widerface

    Model Zoo

    12.33 - CT-Scan for Covid Classification using Machine Learning

    CT-Scan for Covid-19 Classification using Machine Learning

    Dataset

    Notes

    Github

    Paper

    12.34 - Object Detection

    Object Detection

    Object Detection

    Object Detection and Segmentation

    In-Browser Pose Identification

    Rooftop Detection Machine Learning

    Hand Detection and Hand Tracking

    Browser based Face/Pose Identification

    In-browser Object Detection

    YOLO

    There are a few different algorithms for object detection and they can be split into two groups:

    • Algorithms based on classification – they work in two stages. In the first step, we’re selecting from the image interesting regions. Then we’re classifying those regions using convolutional neural networks. This solution could be very slow because we have to run prediction for every selected region. Most known example of this type of algorithms is the Region-based convolutional neural network (RCNN) and their cousins Fast-RCNN and Faster-RCNN.
    • Algorithms based on regression – instead of selecting interesting parts of an image, we’re predicting classes and bounding boxes for the whole image in one run of the algorithm. Most known example of this type of algorithms is YOLO (You only look once) commonly used for real-time object detection.

    YOLO metrics:

    12.35 - Face Expression and Detection

    Face Expression and Detection

    12.36 - Awesome Google Colab Notebooks

    Awesome Google Colab Notebooks

    Computer Vision Google Colab Notebooks

    • Google DayDream Produce dream-alike imagery link
    • Big GAN Produce photorealistic images link
    • Style Transfer Transfer style of an image to another link
    • DeOldify Colorization of Videos link
    • 3D Ken Burns Effect 3D depth video of a photo link
    • First Order Motion model Transfers facial movements from video footage to an image link
    • WiKi Art Create Images using Art works just like Art in AI link
    • StyleGAN 2 Generate Facial Human Images using improved GAN link
    • Edge Detection Use open cv to detect edges of the various images and videos link
    • Learn to paint Teach machines to paint like human painters link
    • TwinGan Unsupervised image translation for Human portraits link
    • Face Swap GAN Takes 2 videos and swap faces link
    • Traffic Counting Counts the traffic on roads link
    • FaceBook detectron2 For object detection, covering bounding box and object instance segmentation outputs link
    • DeepFaceLab Generate High quality DeepFake Videos link
    • 3D Feature Visualization Produce feature visualizations on 3D mesh surfaces link
    • Lucid Modelzoo Visualize neural networks link
    • YOLO V3 Object detection using Yolo link
    • Clothe image classification Classify clothing images link
    • Pneumonia detection Detect pneumonia from medical x-ray images link
    • Breast cancer detection Detect breast cancer from pre-trained data sets link
    • Imaging - Amaretto Amaretto is the software toolbox for network Biology link
    • Waifu 2x Upscale photo and video quality link
    • Twitter Trends Get a list of trending news on twitter link
    • Mask R-CNN Object detection using Mask R-CNN link
    • PiFu HD 3D Human Digitalisation link
    • Sudoku Solver Solve sudoku using SatNet link
    • GPT2 Adventure GPT2 based game link
    • Atari Games Train an agent to play Atari Games link
    • Cartoon GAN Cartoonize your photos link
    • Hall of Faces Detect faces in any photo link
    • Chrome Dino Game Bot that plays chrome dino game link
    • Plant Classification A plant seedling classifier link
    • Cascade R-CNN Object detection using Cascade RCNN link
    • Pedestrian Tracking Pedestrian Tracking with YOLOv3 and DeepSORT link
    • Segment Cars & Streets Real Time Semantic Segmentation with LightNet++ link
    • LipGAN Generate lip motion link
    • Deeplab V3 Semantic Segmentation using Torchvision Deeplab v3 link
    • OpenPose Pose Detection with OpenPose link
    • DensePose Pose Detection with DensePose link
    • Text Detection Text Detection in a scene with PixelLink link
    • Face Tracker Track and Segment Persons with SiamMask link
    • Image Upsampler Upsample Images and generate HQ resolution with Pulse link
    • Super Slow motion Make any video Super SlowMo link
    • Replace Background Replace Image background with Background Matting link
    • 3D photo in-painting 3D Photography using Context-aware Layered Depth Inpainting link
    • Super Resolution Image Super Resolution Prediction link
    • 3D object detection LiDAR point cloud based 3D object detection link
    • Earth Engine Interactive mapping using earth engine API and folium link
    • OpenVINO OpenVINO Edge developement and deployment on Google Colab link
    • Autonomous Vehicle A self-driving car that manuvers itself on a two-lane track. link
    • Image Colorization Instance aware image colorization link
    • Real Image Editing In-Domain GAN Inversion for Real Image Editing link

    Data Science

    Jupyter Notebook

    12.37 - Arxiv, Paper Preprint, and Curated Paper Sites

    Arxiv, Paper Preprint, and Curated Paper Sites

    List of Arxiv and Paper Preprint Sites

    Arxiv Tools

    Curated Papers

    12.38 - Robotic Simulator

    Open Source Robotic Simulator

    • Webots Open Source Robot Simulator
    • V-REP
    • Gazebo
    • ARGoS
    • OpenRave
    • Simspark
    • Drake : Drake aims to simulate even very complex dynamics of robots (e.g. including friction, contact, aerodynamics, …), but always with an emphasis on exposing the structure in the governing equations (sparsity, analytical gradients, polynomial structure, uncertainty quantification, …) and making this information available for advanced planning, control, and analysis algorithms. Drake provides an interface to Python to enable rapid-prototyping of new algorithms, and also aims to provide solid open-source implementations for many state-of-the-art algorithms.

    12.39 - Machine Learning for Sport Pose Analysis

    Machine Learning for Sport Pose Analysis

    Pose Estimation

    Sport Pose Analysis

    Pose Estimation

    Methods

    • HRNet
    • OpenPose
    • HigherHRNet
    • Smiple Baselines
    • Alphapose
    • Densepose
    • Personlab

    Datasets

    12.40 - Machine Learning for Satellite Images

    Machine Learning for Satellite Images

    Notes

    Indonesia Landcover Maps

    Open Source GIS Tools

    SASPlanet

    SASPlanet at SASGIS SASPlanet FAQ SASPlanet unable to load map or here The most needed links:

    1. Program (latest official release, test builds and archive of previous versions): http://sasgis.org/download/
      Attention! Servers with maps can be updated after the release, so the maps are strongly recommended to update anyway!
    2. Nightly build, separate from archive versions: http://sasgis.org/programs/sasplanet/nightly.php
    3. Program - all releases, beta versions and nightly builds (mirror): https://bitbucket.org/ sas_team / sas.planet.bin / downloads
    4. NEW merged map set: https://github.com/sasgis/sas.maps/archive/master.zip Very short instruction:
    5. unpack the program somewhere, for example, c: \ SASPlanet, but not in c: \ Program Files and not in c: \ Program Files (x86)
    6. unpack the maps into the Maps directory (since they are newer than in the archive with the program). You should get SASPlanet \ Maps \ sas.maps \ and SASPlanet \ Maps \ plus.maps \.

    12.41 - NLP Models

    NLP Models

    List of Excellent NLP Pretrained Models

    List Pretrained Models NLP:

    NLP Course

    • CS224n : Natural Language Processing with Deep Learning

    12.42 - NLP for Bahasa Indonesia

    NLP for Bahasa Indonesia

    Indonesian NLP Dataset

    12.43 - NLP with GPT

    NLP with GPT

    GPT-2

    GPT-3

    GPT Models

    GPT Notes

    GPT

    GPT Alternatives

    NLP

    12.45 - Awesome Jupyter Notebooks

    Awesome Jupyter Notebooks

    Related links: 🔗 note/Awesome Jupyter Notebooks
    🔗 app/Jupyter Notebook Apps

    Important contribution instructions: If you add new content, please ensure that for any notebook you link to, the link is to the rendered version using nbviewer, rather than the raw file. Simply paste the notebook URL in the nbviewer box and copy the resulting URL of the rendered version. This will make it much easier for visitors to be able to immediately access the new content.

    Note that Matt Davis has conveniently written a set of bookmarklets and extensions to make it a one-click affair to load a Notebook URL into your browser of choice, directly opening into nbviewer.

    Table of Contents

    1. Entire books or other large collections of notebooks on a topic
    2. Scientific computing and data analysis with the SciPy Stack
    3. General Python Programming
    4. Notebooks in languages other than Python
    5. Miscellaneous topics about doing various things with the Notebook itself
    6. Reproducible academic publications
    7. Other publications using the Notebook
    8. Data-driven journalism
    9. Whimsical notebooks
    10. Videos of IPython being used in the wild
    11. Accessing an IBM quantum computer via notebooks
    12. Software Architecture

    Entire books or other large collections of notebooks on a topic

    Introductory Tutorials

    Programming and Computer Science

    Statistics, Machine Learning, and Data Science

    Mathematics, Physics, Chemistry, Biology

    Earth Science and Geo-Spatial data

    Linguistics and Text Mining

    Engineering Education

    Scientific computing and data analysis with the SciPy Stack

    General topics in scientific computing

    Social data

    Psychology and Neuroscience

    Machine Learning, Statistics and Probability

    Physics, Chemistry and Biology

    Economics and Finance

    Earth science and geo-spatial data

    Data visualization and plotting

    Mathematics

    Signal and Sound Processing

    Natural Language Processing

    Pandas for data analysis

    Note that in the ‘collections’ section above there are also pandas-related links, such as the one for an 11-lesson tutorial.

    General Python Programming

    Notebooks in languages other than Python

    These are notebooks that use [one of the IPython kernels for other languages](IPython kernels for other languages):

    Julia

    The IPython protocols to communicate between kernels and clients are language agnostic, and other programming language communities have started to build support for this protocol in their language. The Julia team has created IJulia, and these are some Julia notebooks:

    Haskell

    There exists a Haskell kernel for IPython in the IHaskell project.

    OCaml

    iocaml is an OCaml kernel for IPython

    Ruby

    Similar to the Julia kernel there exists also a Ruby kernel for IPython.

    The interactive plotting library Nyaplot has some case studies using IRuby:

    Perl

    F#

    C#

    • Xamarin Workbooks Create a rich C# workbook for Android, iOS, Mac, WPF, or Console, and get instant live results as you learn these APIs.

    Javascript

    Miscellaneous topics about doing various things with the Notebook itself

    Reproducible academic publications

    This section contains academic papers that have been published in the peer-reviewed literature or pre-print sites such as the ArXiv that include one or more notebooks that enable (even if only partially) readers to reproduce the results of the publication. If you include a publication here, please link to the journal article as well as providing the nbviewer notebook link (and any other relevant resources associated with the paper).

    1. Revealing ferroelectric switching character using deep recurrent neural networks. Github page where code is located. Jupyter Paper. Raw Data

    2. Discovery of Gravitational Waves by the LIGO collaboration. That page, from the LIGO Open Science Center, contains multiple notebooks for various datasets corresponding to different events; this binder lets you run the code right away. More details on the GW150914 event as well as the original main Physical Review Letters paper, “Observation of Gravitational Waves from a Binary Black Hole Merger”.

    3. Characterizing Strain Variation in Engineered E. coli Using a Multi-Omics-Based Workflow, by Brunk et al.

    4. Predicting Coronal Mass Ejections Using Machine Learning Methods by Monica Bobra and Stathis Ilonidis (Astrophysical Journal, 2016). An IPython notebook, which reproduces all the results, has been permanently deposited in the Stanford Digital Repository.

    5. The Paper of the Future by Alyssa Goodman et al. (Authorea Preprint, 2017). This article explains and shows with demonstrations how scholarly “papers” can morph into long-lasting rich records of scientific discourse, enriched with deep data and code linkages, interactive figures, audio, video, and commenting. It includes an interactive d3.js visualization and has an astronomical data figure with an IPYthon Notebook “behind” it.

    6. Reply to ‘Influence of cosmic ray variability on the monsoon rainfall and temperature’: a false-positive in the field of solar-terrestrial research by Benjamin Laken, 2015. Reviewed article will appear in JASTP. The IPython notebook reproduces the full analysis and figures exactly as they appear in the article, and is available on Github: link via figshare.

    7. An open RNA-Seq data analysis pipeline tutorial with an example of reprocessing data from a recent Zika virus study, by Zichen Wang and Avi Ma’ayan. (F1000Research 2016, 5:1574). An IPython notebook was used to perform the proposed RNA-Seq pipeline using public gene expression data of human cells after Zika virus infection. The computational pipeline is also version controlled and Dockerized available here.

    8. The probability of improvement in Fisher’s geometric model: a probabilistic approach, by Yoav Ram and Lilach Hadany. (Theoretical Population Biology, 2014). An IPython notebook, allowing figure reproduction, was deposited as a supplementry file.

    9. Stress-induced mutagenesis and complex adaptation, by Yoav Ram and Lilach Hadany (Proceedings B, 2014). An IPython notebook, allowing figures reproduction, was deposited as a supplementry file.

    10. Automatic segmentation of odor maps in the mouse olfactory bulb using regularized non-negative matrix factorization, by J. Soelter et al. (Neuroimage 2014, Open Access). The notebook allows to reproduce most figures from the paper and provides a deeper look at the data. The full code repository is also available.

    11. Multi-tiered genomic analysis of head and neck cancer ties TP53 mutation to 3p loss, by A. Gross et al. (Nature Genetics 2014). The full collection of notebooks to replicate the results.

    12. Dog and human inflammatory bowel disease rely on overlapping yet distinct dysbiosis networks, by Vázquez-Baeza et al. (Nature microbiology 2016). The full collection of notebooks to replicate the results.

    13. powerlaw: a Python package for analysis of heavy-tailed distributions, by J. Alstott et al.. Notebook of examples in manuscript, ArXiv link and project repository.

    14. Collaborative cloud-enabled tools allow rapid, reproducible biological insights, by B. Ragan-Kelley et al.. The main notebook, the full collection of related notebooks and the companion site with the Amazon AMI information for reproducing the full paper.

    15. A Reference-Free Algorithm for Computational Normalization of Shotgun Sequencing Data, by C.T. Brown et al.. Full notebook, ArXiv link and project repository.

    16. The kinematics of the Local Group in a cosmological context by J.E. Forero-Romero et al.. The Full notebook and also all the data in a github repo.

    17. Warming Ocean Threatens Sea Life, an article in Scientific American backed by a notebook for its main plot. By Roberto de Almeida from MarinExplore.

    18. Extrapolating Weak Selection in Evolutionary Games, by Wu, García, Hauert and Traulsen. PLOS Comp Bio paper and Figshare link.

    19. Using neural networks to estimate redshift distributions. An application to CFHTLenS by Christopher Bonnett paper(submitted to MNRAS)

    20. Mechanisms for stable, robust, and adaptive development of orientation maps in the primary visual cortex by Jean-Luc R. Stevens, Judith S. Law, Jan Antolik, and James A. Bednar. Journal of Neuroscience, 33:15747-15766, 2013. [Notebook1] (https://ioam.github.io/topographica/_static/gcal_notebook.html), Notebook2.

    21. Accelerated Randomized Benchmarking, by Christopher Granade, Christopher Ferrie and D. G. Cory. New Journal of Physics 17 013042 (2015), arXiv, GitHub repo.

    22. Dynamics and associations of microbial community types across the human body, by Tao Ding & Patrick D. Schloss. Notebook replicating results.

    23. Variations in submarine channel sinuosity as a function of latitude and slope, by Sylvester, Z., Pirmez, C., Cantelli, A., & Jobe, Z. R.

    24. Frontoparietal representations of task context support the flexible control of goal directed cognition, by M.L. Waskom, D. Kumaran, A.M. Gordon, J. Rissman, & A.D. Wagner. Github repository | Main notebook

    25. pyparty: Intuitive Particle Processing in Python, Adam Hughes Notebook to Generate the Published Figures | Also, check out the pyparty tutorial notebooks.

    26. Indication of family-specific DNA methylation patterns in developing oysters, Claire E. Olson, Steven B. Roberts doi: https://dx.doi.org/10.1101/012831. Notebook to generate results in the paper.

    27. Parallel Prefix Polymorphism Permits Parallelization, Presentation & Proof, Jiahao Chen and Alan Edelman, HPTCDL'14. Website and notebook

    28. Transcriptome Sequencing Reveals Potential Mechanism of Cryptic 3’ Splice Site Selection in SF3B1-mutated Cancers by Christopher DeBoever et al. There are several notebooks to replicate results and make figures.

    29. A Workflow for Characterizing Nanoparticle Monolayers for Biosensors: Machine Learning on Real and Artificial SEM Images, Adam Hughes, Zhaowen Liu, Maryam Raftari, Mark. E Reeves. Notebooks are linked in Table 1 in the text.

    30. AtomPy: An Open Atomic Data Curation Environment for Astrophysical Applications, by C. Mendoza, J. Boswell, D. Ajoku, M. Bautista.

    31. Visualizing 4-Dimensional Asteroids, in Scientific American (by Jake VanderPlas)

    32. Challenges and opportunities in understanding microbial communities with metagenome assembly, accompanied by IPython Notebook tutorial, by Adina Howe and Patrick Chain.

    33. Structure of a shear-line polar low (2016) by Sergeev, D. E., Renfrew, I. A., Spengler, T. and Dorling, S. R. Q.J.R. Meteorol. Soc. doi:10.1002/qj.2911. Accompanied by Notebooks to generate the published figures.

    34. Detecting High-Order Epistasis in Nonlinear Genotype-Phenotype Maps by Zachary R. Sailer and Michael J. Harms published in Genetics, March 2017 . All figures can be reproduced by the set of notebooks in this Github repo.

    35. Summary Analysis of the 2017 GitHub Open Source Survey by Stuart Geiger. Preprint in SocArXiv, June 2017. doi:10.17605/OSF.IO/ENRQ5. Paper is derived from a notebook converted to LaTeX with nbconvert. Notebook and materials at: OSF, GitHub, nbviewer

    36. The weirdest SDSS galaxies: results from an outlier detection algorithm, by D. Baron and D. Poznanski. Notebooks to replicate.

    37. Clustergrammer, a web-based heatmap visualization and analysis tool for high-dimensional biological data, by Nicolas Fernandez et al. Notebooks: Fig. 3, Fig. 4, Fig. 5

    38. Sociology: An investigation of Social Class Inequalities in General Cognitive Ability in Two British Birth Cohorts. Preprint in SocArXiv, December 2017. doi: 10.17605/OSF.IO/SZXDM. Notebook and materials at: OSF, GitHub, nbviewer.

    39. An on-chip architecture for self-homodyned nonclassical light, quant-ph ArXiV preprint, Nov 2016, by Fischer et al. A supporting notebook for all calculations included in the ArXiV submission.

    40. A nested sampling code for targeted searches for continuous gravitational waves from pulsars, gr-qc ArXiV preprint, May 2017, by Pitkin et al. Complete repo with supporting notebooks and sources on GitHub.

    41. HyperTools: A Python toolbox for visualizing and manipulating high-dimensional data, stat.OT ArXiV preprint by Heusser et al. A repo with companion notebooks is available, that links to the library itself, HyperTools.

    42. Nonsinusoidal beta oscillations reflect cortical pathophysiology in Parkinson’s disease, in Journal of Neuroscience by Cole et al. A repo with companion notebooks with all necessary data is available to reproduce all figures.

    43. Cycle-by-cycle analysis of neural oscillations, in bioRxiv by Cole & Voytek. A repo with companion notebooks with all necessary data is available to reproduce all figures. This repo also links to the related useful library, neurodsp, which contains notebooks of tutorials.

    44. pyKNEEr: An image analysis workflow for open and reproducible research on femoral knee cartilage, a preprint by S. Bonaretti et al. Jupyter notebooks are used as a graphical user interface for medical image processing and analysis. The paper is interactive, with links to data, software, and documentation throughout the text. Every figure caption contains links to fully reproduce graphs.

    Data-driven journalism

    Whimsical notebooks

    Videos of IPython being used in the wild

    Of course the first thing you might try is searching for videos about IPython (1900 or so by last count on Youtube) but there are demonstrations of other applications using the power of IPython but are not mentioned is the descriptions. Below are a few such:

    Accessing and programing a IBM quantum computer via notebooks

    • Github notebook example (scroll down) illustrating how to use Qiskit and access the IBMQ quantum computers.

    Software Architecture

    12.46 - NCBI Papers with Code

    NCBI Papers with Code

    List of awesome NCBI Papers with Code Supplement.

    CNN

    1. Dual CNN for Relation Extraction with Knowledge-Based Attention and Word Embeddings Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6664687/ Code: https://github.com/mrlijun2017/Dual-CNN-RE

    2. CNN-BLPred: a Convolutional neural network based predictor for β-Lactamases (BL) and their classes Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5751796/ Code: https://github.com/whiteclarence/CNN-BLPred

    3. Design of deep convolutional networks for prediction of image rapid serial visual presentation events Paper: https://www.ncbi.nlm.nih.gov/pubmed/29060296 Code: https://github.com/ZijingMao/ROICNN

    4. A simple convolutional neural network for prediction of enhancer-promoter interactions with DNA sequence data Paper: https://www.ncbi.nlm.nih.gov/pubmed/30649185 Code: https://github.com/zzUMN/Combine-CNN-Enhancer-and-Promoters

    5. A novel attention-based hybrid CNN-RNN architecture for sEMG-based gesture recognition Paper:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6207326/ Code: https://github.com/biopatrec/biopatrec

    6. GRAM-CNN: a deep learning approach with local context for named entity recognition in biomedical text Paper: https://www.ncbi.nlm.nih.gov/pubmed/29272325 Code: https://github.com/valdersoul/GRAM-CNN

    7. Simple tricks of convolutional neural network architectures improve DNA-protein binding prediction Paper: https://www.ncbi.nlm.nih.gov/pubmed/30351403 Code: https://github.com/zhanglabtools/DNADataAugmentation

    8. EnzyNet: enzyme classification using 3D convolutional neural networks on spatial representation Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5937476/ Code: https://github.com/shervinea/enzynet

    9. Multi-timescale drowsiness characterization based on a video of a driver’s face Paper: https://www.telecom.ulg.ac.be/mts-drowsiness/ https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6165048/ Code: https://github.com/QMassoz/mts-drowsiness

    10. CLoDSA: a tool for augmentation in classification, localization, detection, semantic segmentation and instance segmentation tasks Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6567576/ Code: https://github.com/joheras/CLoDSA

    11. Deep learning with convolutional neural networks for EEG decoding and visualization Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5655781/ Code: https://github.com/robintibor/braindecode/ Code: https://github.com/TNTLFreiburg/braindecode

    Rice/Paddy Classification

    1. Classifying Oryza sativa accessions into Indica and Japonica using logistic regression model with phenotypic data Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6842562/ Code: https://github.com/bongsongkim/logit.regression.rice

    2. SNNRice6mA: A Deep Learning Method for Predicting DNA N6-Methyladenine Sites in Rice Genome Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6797597/ Code: https://github.com/yuht4/SNNRice6mA

    3. Automatic estimation of heading date of paddy rice using deep learning Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6626381/ Code: https://github.com/svdesai/heading-date-estimation

    4. Distillation of crop models to learn plant physiology theories using machine learning Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6541271/ Code: https://github.com/ky0on/simriw

    5. Evaluating remote sensing datasets and machine learning algorithms for mapping plantations and successional forests in Phnom Kulen National Park of Cambodia Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6814064/ Code: https://github.com/Jojo666/PKNP-Data

    6. PlantCV v2: Image analysis software for high-throughput plant phenotyping Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5713628/ Code: https://github.com/danforthcenter/plantcv-v2-paper

    7. Crop Yield Prediction Using Deep Neural Networks Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6540942/ Code: https://github.com/saeedkhaki92/Yield-Prediction-DNN

    8. Using Deep Learning for Image-Based Plant Disease Detection Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5032846/ Code: https://github.com/salathegroup/plantvillage_deeplearning_paper_analysis

    9. Deep Plant Phenomics: A Deep Learning Platform for Complex Plant Phenotyping Tasks Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5500639/ Code: https://github.com/p2irc/deepplantphenomics

    10. DeepWeeds: A Multiclass Weed Species Image Dataset for Deep Learning Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6375952/ Code: https://github.com/AlexOlsen/DeepWeeds