Major-input - a novel iPad UI for reading WWDC session transcripts alongside the video/presentation context

Overview

MajorInput icon

Major Input

a novel iPad UI for reading WWDC session transcripts alongside the video/presentation context

Tour GIF

Getting Started

Build Major Input yourself with Xcode 10.2 to your iPad running iOS 11 or higher, which of course requires use of your own developer account. Major Input will also run on the iPad simulator, but the UX is not designed for this purpose.

Note that sessions and transcripts from 2017 and earlier are bundled in the build, and 2018 sessions will remain missing until the content is more dynamically sourced.

  1. Get the code

    Clone the repo, or download a zip, depending on how you want to get future updates.

  2. Install dependencies

    cd <$SRCROOT>
    carthage bootstrap --no-build --no-use-binaries
    pod install
    
  3. Configure code signing

    Select the MajorInput project in the Project Navigator. For both Targets, MajorInput and MajorInputTests, select your own Development Team in the General tab's Signing section Team picker.

  4. Build and run

    Build the MajorInput scheme.

Usage

Select a session, wait for the video to download if it hasn't already, and consume it. The blue transformer to the right of the text aligns the sync point between the transcript text and the video time, as does the small blue triangle in the filmstrip.

Session selection:

  • Tap a session or its DOWNLOAD button to download the session.
  • Tap CANCEL during a download to cancel the download.
  • Tap DELETE to remove the downloaded video from the filesystem.
  • Tap a session with a downloaded video to consume the session.

Session consumption:

  • Drag either the transformer, the transcript, or the filmstrip to scrub the video.
  • Tap a caption in the transcript to scroll that caption to the transformer.
  • After dragging the transformer, you'll see a blue line indicating the transformer's anchor point. Tap the transformer to scroll it and the transcript back to the anchor point.
  • Tap-and-drag the transformer to move its anchor point.
  • Double tap the transformer to play/pause the video.
  • Tap the video to show the linear video scrubber and back button.

Putting it all together

  • Look at the filmstrip to quickly spot the video frame that provides the best presentation context for the transcript lines you're about to read.
  • Use the transformer to scrub the video to that frame, then read the transcript.
  • Tap the transformer to scroll things back to the anchor point (assuming it's still near the top).
  • Wash, rinse, repeat.
Comments
  • Handle sessions for which no transcript exists

    Handle sessions for which no transcript exists

    The app may present a session in the list for which a transcript is unavailable. The app currently handles this scenario by crashing after downloading the video, selecting the session, and pushing the main interaction view.

    Let's prevent the download of this session's video and disallow presenting the main interaction. Quickest fix will visibly disable the download button or replace it with an indication that the transcript is not available.

    opened by rlwimi 1
  • design iteration

    design iteration

    I've received some valuable feedback and have some ideas for design iteration.

    Remove all the player chrome (scrubber and navbar).

    • [ ] Replace back button with the left edge gesture.
    • [ ] Make the player itself a scrubber. Closer to the bottom at the blue progress indicator can be linear scrubbing, with a gradient toward fine-grained scrubbing at the top. Not sure how to visually indicate the gradient's effect, though.
    • [ ] Remove the player overlay/chrome.
    • [ ] Dark mode option.
    • [ ] The transformer is too cute. Replace with something more indicative of dragging, like a hamburger.
    • [ ] The blue line indicating the transformer's distance to its anchor is inconsistent with the other blue that indicates time sync/progress. The blue line should come from the top to wherever the transformer is. It's not so relevant that the transformer's anchor point is indicated at all.
    • [ ] A FAB for play/pause? Whatever it is, decouple play/pause from the transformer.
    • [x] Bigger text for shorter line lengths.
    • [x] Bigger margins.
    • [ ] Pinch/zoom for text size change.
    opened by rlwimi 0
  • Support search.

    Support search.

    Some design is needed to understand what exactly search should be. Leverage ASCIIwwdc or implement from scratch? How does search relate to the current lack of a local backend? Support search from sessions list and/or while in main session interaction? Highlight results? Navigation through results inside session?

    opened by rlwimi 0
  • Support filtering and sorting of sessions list.

    Support filtering and sorting of sessions list.

    The sessions list is quite long, and the user would appreciate some tools to make it easier to find what they're looking for. Some basic filtering and sorting support would go a long way.

    opened by rlwimi 0
  • Send a local notification when a download finishes.

    Send a local notification when a download finishes.

    The user can queue up a bunch of downloads, HD videos are large, and Apple trickle-serves some assets. The user would appreciate some indication that a download has finished. Send a local notification, selection of which opens the session. Leverage in foreground as well as background.

    opened by rlwimi 0
Releases(1.5.0)
  • 1.5.0(Apr 16, 2019)

    56171966-9b857200-5fa4-11e9-81be-189808a6f019

    [new] Migrate to Swift 5. [new] Migrate most dependency management from Carthage-with-manual-integration to Cocoapods. [improved] License is now a standard. GPLv3 is a better way to communicate the restriction against submitting to any of Apple's app stores.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(May 27, 2018)

  • 1.3.0(Aug 16, 2017)

  • 1.2.1(Aug 13, 2017)

    Wall-E staring

    [new] Bumped transcripts repo to include new sessions from 2017 and 2016, along with improvements for some transcripts. [improved] Larger text size while awaiting dynamic text support.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Jun 21, 2017)

Owner
Michael Pederson
Michael Pederson
Dash-iOS - Dash gives your iPad and iPhone instant offline access to 200+ API documentation sets

Discontinued Dash for iOS was discontinued. Please check out Dash for macOS instead. Dash for iOS Dash gives your iPad and iPhone instant offline acce

Bogdan Popescu 7.1k Dec 29, 2022
Reading List - an iOS app to track personal reading lists

Reading List Reading List is an iOS app for iPhone and iPad which helps users track and catalog the books they read. Reading List v2 As of version 2.0

Andrew Bennet 297 Dec 28, 2022
A novel way to set attributes to the Font in SwiftUI.

A novel way to set attributes to the Font in SwiftUI.

Riiid 6 Oct 13, 2022
Reading List is an iOS app for iPhone and iPad which helps users track and catalog the books they read

Reading List Reading List is an iOS app for iPhone and iPad which helps users track and catalog the books they read. Reading List v2 As of version 2.0

Andrew Bennet 281 Jan 15, 2022
An unofficial version of the Sandwiches app and pre-built materials similar to those used in the Introduction to SwiftUI session video from WWDC20

Unofficial Sandwiches The WWDC20 Session Introduction to SwiftUI provides a tutorial-like walk-through of building a list-detail SwiftUI app from scra

James Dempsey 94 Feb 11, 2022
Input Mask is an Android & iOS native library allowing to format user input on the fly.

Migration Guide: v.6 This update brings breaking changes. Namely, the autocomplete flag is now a part of the CaretGravity enum, thus the Mask::apply c

red_mad_robot 548 Dec 20, 2022
Input Validation Done Right. A Swift DSL for Validating User Input using Allow/Deny Rules

Valid Input Validation Done Right. Have you ever struggled with a website with strange password requirements. Especially those crazy weird ones where

Mathias Quintero 37 Nov 3, 2022
AutoLogout is a swift library for managing user's session on inactivity.

On user inactivity, it will show an alert box to continue session or Logout as shown in screen shot, according to time set.

Adnan Yousaf 9 Jul 7, 2022
Apple Developer Academy @ POSTECH, Afternoon Session 17 team's Mini Challenge Project

?? NatureUp Apple Developer Academy @ POSTECH, Afternoon Session 17 team's MC1 Project 사회가 발전하며 환경이 파괴되는 속도가 가속화되고 그 영향이 서서히 드러나며, 사람들의 환경에 대한 관심도는 점점

개발자아카데미_포스텍 5 Jul 22, 2022
A usermanager written in swift 3.0 saves you from hassle of saving your active user session.

SwiftUserManager A usermanager written in swift 3.0 saves you from hassle of saving your active user session. Call api and give the json to MOProfile

Zeeshan Haider 22 Sep 30, 2022
Apple Developer Academy @ POSTECH Afternoon Session Team 13 MC2

?? Project Title A brief description of what this project does and who it's for ?? Features Light/dark mode toggle Live previews Fullscreen mode Cross

개발자아카데미_포스텍 12 Dec 13, 2022
ADA Mini challenge 2 team 14 OXY's repository in morning session

OXY 누구나 쉬는 시간이 필요하니까!! ?? Features recording the degree of stress Playing with Donggle managing and relieving your stress by yourself comparing helpfu

개발자아카데미_포스텍 5 Jun 18, 2022
Apple Developer Academy @ POSTECH, Afternoon Session 13 team's MC3 Project

MC3-Team13-RiceCake ?? 쌀떡궁합 Apple Developer Academy @ POSTECH, Afternoon Session MC3/Team-13 ?? Features ?? Authors @Seodam | @Neis | @Rang | @Anna |

개발자아카데미_포스텍 6 Aug 2, 2022
sample project for iOS mentoring session.

Challege Definition ?? I have a legacy app and I tried to demonstrate the setup and objects in this sample project. Basically, this app contains a lis

Amir Tutunchi 2 Oct 10, 2022
SimplePDF is a wrapper of UIGraphics PDF context written in Swift.

SimplePDF is a wrapper of UIGraphics PDF context written in Swift. You can: add texts, images, spaces and lines, table set up page layout, adjust cont

Nutchaphon Rewik 238 Dec 29, 2022
RadialMenu is a custom control for providing a touch context menu (like iMessage recording in iOS 8) built with Swift & POP

RadialMenu Looking for help? For $150/hr I'll help with your RadialMenu problems including integrating it into your project. Email [email protected] t

Brad Jasper 297 Nov 27, 2022
Context menu similar to the one in the Pinterest iOS app

VLDContextSheet A clone of the Pinterest iOS app context menu. Example Usage VLDContextSheetItem *item1 = [[VLDContextSheetItem alloc] initWithTitle:

Vladimir Angelov 173 Mar 28, 2022
You can easily add awesome animated context menu to your app.

Context-Menu.iOS You can easily add awesome animated context menu to your app. Made in Check this [project on dribbble] (https://dribbble.com/shots/17

Yalantis 1.8k Nov 17, 2022
An iOS context menu UI inspired by Things 3.

Contextual menus with delightful animations and styles Total control over menu contents using your own UIViewControllers Tons of feature and interacti

GitHawk 971 Nov 30, 2022
A Swift framework that wraps CoreData, hides context complexity, and helps facilitate best practices.

Cadmium is a Core Data framework for Swift that enforces best practices and raises exceptions for common Core Data pitfalls exactly where you make the

Jason Fieldman 123 Oct 18, 2022