diff options
Diffstat (limited to '')
-rw-r--r-- | 2021/captions/dashboard.md | 329 | ||||
-rw-r--r-- | 2021/captions/project.md | 241 |
2 files changed, 570 insertions, 0 deletions
diff --git a/2021/captions/dashboard.md b/2021/captions/dashboard.md new file mode 100644 index 00000000..71d332f3 --- /dev/null +++ b/2021/captions/dashboard.md @@ -0,0 +1,329 @@ +<a name="transcript"></a> +# Transcript + +[[!template text="Hi everyone! I'm Mehmet Tekman," start="00:00:00.000" video="mainVideo" id=subtitle]] +[[!template text="and I'm here to talk to you" start="00:00:01.567" video="mainVideo" id=subtitle]] +[[!template text="about using Amazon Kindles" start="00:00:02.483" video="mainVideo" id=subtitle]] +[[!template text="as a productivity dashboard for" start="00:00:03.700" video="mainVideo" id=subtitle]] +[[!template text="your various projects." start="00:00:05.040" video="mainVideo" id=subtitle]] +[[!template text="In a nutshell, you describe your machines," start="00:00:07.359" video="mainVideo" id=subtitle]] +[[!template text="your commands, and your schedules" start="00:00:09.519" video="mainVideo" id=subtitle]] +[[!template text="in an Org-Mode file," start="00:00:11.317" video="mainVideo" id=subtitle]] +[[!template text="and then you just initialize" start="00:00:13.120" video="mainVideo" id=subtitle]] +[[!template text="your Kindle devices." start="00:00:14.933" video="mainVideo" id=subtitle]] +[[!template text="These devices are asleep" start="00:00:16.960" video="mainVideo" id=subtitle]] +[[!template text="most of the time," start="00:00:18.367" video="mainVideo" id=subtitle]] +[[!template text="but they wake up at scheduled times" start="00:00:19.117" video="mainVideo" id=subtitle]] +[[!template text="to retrieve content" start="00:00:20.720" video="mainVideo" id=subtitle]] +[[!template text="from the centralized server." start="00:00:22.033" video="mainVideo" id=subtitle]] +[[!template text="Content can be Org mode and Emacs-based," start="00:00:24.800" video="mainVideo" id=subtitle]] +[[!template text="or it can be from Web content," start="00:00:27.599" video="mainVideo" id=subtitle]] +[[!template text="or it can just be static images and WAV." start="00:00:29.500" video="mainVideo" id=subtitle]] +[[!template text="If you, like me, struggle to" start="00:00:42.840" video="mainVideo" id=subtitle]] +[[!template text="keep your life under tabs," start="00:00:45.600" video="mainVideo" id=subtitle]] +[[!template text="or find it very hard to separate" start="00:00:46.833" video="mainVideo" id=subtitle]] +[[!template text="your work life from your home life," start="00:00:48.300" video="mainVideo" id=subtitle]] +[[!template text="then you, like me, likely need" start="00:00:49.417" video="mainVideo" id=subtitle]] +[[!template text="some kind of passive background service" start="00:00:51.283" video="mainVideo" id=subtitle]] +[[!template text="that reminds you of where you are" start="00:00:52.917" video="mainVideo" id=subtitle]] +[[!template text="and what you are supposed to be doing." start="00:00:54.083" video="mainVideo" id=subtitle]] +[[!template text="Even if it's just a sign saying," start="00:00:55.267" video="mainVideo" id=subtitle]] +[[!template text=""You're at home! Relax!"" start="00:00:56.960" video="mainVideo" id=subtitle]] +[[!template text="An Amazon Kindle is perfect for this." start="00:00:58.640" video="mainVideo" id=subtitle]] +[[!template text="In a nutshell, it's a cheap" start="00:01:00.400" video="mainVideo" id=subtitle]] +[[!template text="black and white e-ink device" start="00:01:01.717" video="mainVideo" id=subtitle]] +[[!template text="that can go for weeks" start="00:01:03.117" video="mainVideo" id=subtitle]] +[[!template text="without needing a single charge." start="00:01:03.800" video="mainVideo" id=subtitle]] +[[!template text="Every year, Amazon brings out" start="00:01:05.033" video="mainVideo" id=subtitle]] +[[!template text="an incrementally better model," start="00:01:06.767" video="mainVideo" id=subtitle]] +[[!template text="which makes the old devices obsolete," start="00:01:07.983" video="mainVideo" id=subtitle]] +[[!template text="and you can find these older models" start="00:01:09.333" video="mainVideo" id=subtitle]] +[[!template text="for 5 euros on second-hand websites." start="00:01:11.067" video="mainVideo" id=subtitle]] +[[!template text="Plus it runs Linux, has WiFi networking," start="00:01:13.360" video="mainVideo" id=subtitle]] +[[!template text="and has a dedicated forum of hackers" start="00:01:15.360" video="mainVideo" id=subtitle]] +[[!template text="for getting the most out of the device." start="00:01:16.987" video="mainVideo" id=subtitle]] +[[!template text="Some drawbacks of this is that" start="00:01:19.200" video="mainVideo" id=subtitle]] +[[!template text="the device often comes with unwanted bloat:" start="00:01:20.366" video="mainVideo" id=subtitle]] +[[!template text="over-the-air updates," start="00:01:22.799" video="mainVideo" id=subtitle]] +[[!template text="it phones home to Amazon regularly," start="00:01:24.050" video="mainVideo" id=subtitle]] +[[!template text="it has a secret microphone" start="00:01:25.833" video="mainVideo" id=subtitle]] +[[!template text="embedded in the device," start="00:01:27.033" video="mainVideo" id=subtitle]] +[[!template text="and it has a bunch of creepy" start="00:01:27.983" video="mainVideo" id=subtitle]] +[[!template text="seemingly interdependent" start="00:01:29.433" video="mainVideo" id=subtitle]] +[[!template text="background processes," start="00:01:30.633" video="mainVideo" id=subtitle]] +[[!template text="where killing one kind of kills the others" start="00:01:31.439" video="mainVideo" id=subtitle]] +[[!template text="risking that you will break the device." start="00:01:34.083" video="mainVideo" id=subtitle]] +[[!template text="But this is where the community" start="00:01:36.560" video="mainVideo" id=subtitle]] +[[!template text="really shines through," start="00:01:37.799" video="mainVideo" id=subtitle]] +[[!template text="since the friendly (and not-so-friendly)" start="00:01:38.883" video="mainVideo" id=subtitle]] +[[!template text="users (and developers)" start="00:01:40.483" video="mainVideo" id=subtitle]] +[[!template text="from the MobileRead forums have pretty much" start="00:01:41.583" video="mainVideo" id=subtitle]] +[[!template text="scraped out a good portion of the" start="00:01:43.200" video="mainVideo" id=subtitle]] +[[!template text="harmful Amazon scripts from the device." start="00:01:44.560" video="mainVideo" id=subtitle]] +[[!template text="Some of the devices even use" start="00:01:46.960" video="mainVideo" id=subtitle]] +[[!template text="Awesome Window Manager," start="00:01:48.550" video="mainVideo" id=subtitle]] +[[!template text="meaning you can really play around" start="00:01:49.483" video="mainVideo" id=subtitle]] +[[!template text="with the existing system" start="00:01:50.800" video="mainVideo" id=subtitle]] +[[!template text="without having to create" start="00:01:51.620" video="mainVideo" id=subtitle]] +[[!template text="your own X11 server." start="00:01:52.633" video="mainVideo" id=subtitle]] +[[!template text="This then empowers users" start="00:01:54.233" video="mainVideo" id=subtitle]] +[[!template text="to display whatever they want on the device." start="00:01:55.377" video="mainVideo" id=subtitle]] +[[!template text="One project that really got this going" start="00:01:57.600" video="mainVideo" id=subtitle]] +[[!template text="was the Kindle-Dash dashboard from" start="00:01:59.040" video="mainVideo" id=subtitle]] +[[!template text="Pascal Widdershoven, who really refined a" start="00:02:00.560" video="mainVideo" id=subtitle]] +[[!template text="lot of the internal scripts" start="00:02:02.320" video="mainVideo" id=subtitle]] +[[!template text="to stabilize the device." start="00:02:03.483" video="mainVideo" id=subtitle]] +[[!template text="However, the project then" start="00:02:05.439" video="mainVideo" id=subtitle]] +[[!template text="puts the onus on the device" start="00:02:06.600" video="mainVideo" id=subtitle]] +[[!template text="to retrieve the data from" start="00:02:07.650" video="mainVideo" id=subtitle]] +[[!template text="somewhere else over the internet," start="00:02:08.560" video="mainVideo" id=subtitle]] +[[!template text="and so you still need to" start="00:02:09.950" video="mainVideo" id=subtitle]] +[[!template text="generate the content" start="00:02:10.753" video="mainVideo" id=subtitle]] +[[!template text="and place it on the web somewhere." start="00:02:11.440" video="mainVideo" id=subtitle]] +[[!template text="Plus you need to do this and manage it" start="00:02:13.200" video="mainVideo" id=subtitle]] +[[!template text="for every Kindle device that you have." start="00:02:14.640" video="mainVideo" id=subtitle]] +[[!template text="Kindle-Sync, however," start="00:02:17.360" video="mainVideo" id=subtitle]] +[[!template text="is an entirely different beast," start="00:02:18.500" video="mainVideo" id=subtitle]] +[[!template text="albeit one that builds off of the works" start="00:02:19.867" video="mainVideo" id=subtitle]] +[[!template text="of the aforementioned projects." start="00:02:21.800" video="mainVideo" id=subtitle]] +[[!template text="It assumes that instead of just having" start="00:02:23.440" video="mainVideo" id=subtitle]] +[[!template text="one Kindle device around" start="00:02:24.800" video="mainVideo" id=subtitle]] +[[!template text="that you wish to re-purpose" start="00:02:26.050" video="mainVideo" id=subtitle]] +[[!template text="for productivity purposes," start="00:02:27.133" video="mainVideo" id=subtitle]] +[[!template text="that you actually have" start="00:02:28.080" video="mainVideo" id=subtitle]] +[[!template text="multiple Kindle devices" start="00:02:28.983" video="mainVideo" id=subtitle]] +[[!template text="that you want to manage" start="00:02:30.117" video="mainVideo" id=subtitle]] +[[!template text="and configure in tandem." start="00:02:30.794" video="mainVideo" id=subtitle]] +[[!template text="Everything is managed" start="00:02:32.720" video="mainVideo" id=subtitle]] +[[!template text="from a dedicated server (or a raspberry pi)" start="00:02:33.633" video="mainVideo" id=subtitle]] +[[!template text="which distributes jobs to multiple Kindles," start="00:02:35.667" video="mainVideo" id=subtitle]] +[[!template text="running on different update timers." start="00:02:37.440" video="mainVideo" id=subtitle]] +[[!template text="These timers are all managed" start="00:02:39.519" video="mainVideo" id=subtitle]] +[[!template text="from the server," start="00:02:40.786" video="mainVideo" id=subtitle]] +[[!template text="and all the Kindle device has to do is:" start="00:02:41.486" video="mainVideo" id=subtitle]] +[[!template text="to wake up, power on the WiFi," start="00:02:43.017" video="mainVideo" id=subtitle]] +[[!template text="receive some media, display the media, and" start="00:02:45.200" video="mainVideo" id=subtitle]] +[[!template text="receive a barebones RTC sleep request." start="00:02:47.280" video="mainVideo" id=subtitle]] +[[!template text="Then it sleeps for the requested time," start="00:02:49.680" video="mainVideo" id=subtitle]] +[[!template text="consuming no power, whilst displaying the" start="00:02:51.040" video="mainVideo" id=subtitle]] +[[!template text="desired media. That is maybe 10 seconds" start="00:02:52.800" video="mainVideo" id=subtitle]] +[[!template text="of awake time between each request." start="00:02:55.200" video="mainVideo" id=subtitle]] +[[!template text="Cron does not actually run" start="00:02:57.599" video="mainVideo" id=subtitle]] +[[!template text="on the Kindle device itself," start="00:02:58.933" video="mainVideo" id=subtitle]] +[[!template text="simply because it does not reliably work." start="00:02:59.933" video="mainVideo" id=subtitle]] +[[!template text="All of this is handled by the server." start="00:03:01.600" video="mainVideo" id=subtitle]] +[[!template text="With the server-client model," start="00:03:04.050" video="mainVideo" id=subtitle]] +[[!template text="it also tries to restrict Amazon access." start="00:03:05.599" video="mainVideo" id=subtitle]] +[[!template text="SSH keys are shared" start="00:03:08.000" video="mainVideo" id=subtitle]] +[[!template text="only from the client to the server," start="00:03:09.517" video="mainVideo" id=subtitle]] +[[!template text="but not from the server to the client," start="00:03:11.217" video="mainVideo" id=subtitle]] +[[!template text="so the Kindle cannot connect" start="00:03:12.517" video="mainVideo" id=subtitle]] +[[!template text="to the Raspberry Pi without a password." start="00:03:13.920" video="mainVideo" id=subtitle]] +[[!template text="IPtables rules are also set" start="00:03:16.319" video="mainVideo" id=subtitle]] +[[!template text="so that the Kindle cannot phone home" start="00:03:18.033" video="mainVideo" id=subtitle]] +[[!template text="to Amazon, and the connections" start="00:03:19.483" video="mainVideo" id=subtitle]] +[[!template text="are restricted to just the LAN." start="00:03:20.667" video="mainVideo" id=subtitle]] +[[!template text="So I got very curious at one point" start="00:03:23.200" video="mainVideo" id=subtitle]] +[[!template text="and decided to see how long" start="00:03:24.820" video="mainVideo" id=subtitle]] +[[!template text="a Kindle could last on a single charge" start="00:03:26.133" video="mainVideo" id=subtitle]] +[[!template text="in such an arrangement," start="00:03:27.599" video="mainVideo" id=subtitle]] +[[!template text="so that every 15 minutes for 18 hours," start="00:03:28.560" video="mainVideo" id=subtitle]] +[[!template text="I tested the device" start="00:03:30.640" video="mainVideo" id=subtitle]] +[[!template text="by sending a media item" start="00:03:31.599" video="mainVideo" id=subtitle]] +[[!template text="and recording the battery level." start="00:03:32.959" video="mainVideo" id=subtitle]] +[[!template text="The Kindle doesn't seem to" start="00:03:35.200" video="mainVideo" id=subtitle]] +[[!template text="report the battery level" start="00:03:36.159" video="mainVideo" id=subtitle]] +[[!template text="very continuously," start="00:03:36.959" video="mainVideo" id=subtitle]] +[[!template text="but at discrete percentages," start="00:03:37.760" video="mainVideo" id=subtitle]] +[[!template text="so that you could end up with" start="00:03:39.040" video="mainVideo" id=subtitle]] +[[!template text="a graph that looks like this." start="00:03:39.840" video="mainVideo" id=subtitle]] +[[!template text="Assuming you have half the charge," start="00:03:42.159" video="mainVideo" id=subtitle]] +[[!template text="and use it once every hour -" start="00:03:43.617" video="mainVideo" id=subtitle]] +[[!template text="it will drop by 10% battery in 76 hours," start="00:03:45.200" video="mainVideo" id=subtitle]] +[[!template text="which is roughly three days." start="00:03:48.319" video="mainVideo" id=subtitle]] +[[!template text="It's hard to extrapolate" start="00:03:49.760" video="mainVideo" id=subtitle]] +[[!template text="with only three good summarized data points," start="00:03:50.640" video="mainVideo" id=subtitle]] +[[!template text="of which the number of requests" start="00:03:52.400" video="mainVideo" id=subtitle]] +[[!template text="per battery level appear to diminish" start="00:03:53.519" video="mainVideo" id=subtitle]] +[[!template text="as shown in the table below," start="00:03:54.879" video="mainVideo" id=subtitle]] +[[!template text="but the final result yields 76 requests" start="00:03:56.640" video="mainVideo" id=subtitle]] +[[!template text="with an average loss of 0.5% battery life" start="00:03:58.560" video="mainVideo" id=subtitle]] +[[!template text="per request. Which is not bad!" start="00:04:00.799" video="mainVideo" id=subtitle]] +[[!template text="Assuming you do a request every 2 hours" start="00:04:02.273" video="mainVideo" id=subtitle]] +[[!template text="from 8am to 8pm," start="00:04:04.400" video="mainVideo" id=subtitle]] +[[!template text="and let it sleep at night," start="00:04:06.000" video="mainVideo" id=subtitle]] +[[!template text="then that's approximately 6 requests a day," start="00:04:07.040" video="mainVideo" id=subtitle]] +[[!template text="which could easily last a device" start="00:04:09.040" video="mainVideo" id=subtitle]] +[[!template text="for a month." start="00:04:10.400" video="mainVideo" id=subtitle]] +[[!template text="The ksync script does" start="00:04:11.280" video="mainVideo" id=subtitle]] +[[!template text="essentially everything:" start="00:04:12.586" video="mainVideo" id=subtitle]] +[[!template text="from generating and fetching the media," start="00:04:13.200" video="mainVideo" id=subtitle]] +[[!template text="to initializing all Kindle devices," start="00:04:14.799" video="mainVideo" id=subtitle]] +[[!template text="generating the server cronjobs," start="00:04:16.720" video="mainVideo" id=subtitle]] +[[!template text="log report summaries," start="00:04:18.160" video="mainVideo" id=subtitle]] +[[!template text="editing the config tables," start="00:04:19.199" video="mainVideo" id=subtitle]] +[[!template text="and much more." start="00:04:20.400" video="mainVideo" id=subtitle]] +[[!template text="The media operations are comparatively" start="00:04:21.199" video="mainVideo" id=subtitle]] +[[!template text="much more complex" start="00:04:22.880" video="mainVideo" id=subtitle]] +[[!template text="and encompass a few media use cases" start="00:04:23.680" video="mainVideo" id=subtitle]] +[[!template text="such as fetching the weather" start="00:04:25.280" video="mainVideo" id=subtitle]] +[[!template text="(though only from Open Weather Maps)" start="00:04:26.400" video="mainVideo" id=subtitle]] +[[!template text="and retrieving Google Calendar views" start="00:04:28.560" video="mainVideo" id=subtitle]] +[[!template text="by week, month, agenda, and four day view." start="00:04:30.000" video="mainVideo" id=subtitle]] +[[!template text="You can retrieve Org-Mode data" start="00:04:32.000" video="mainVideo" id=subtitle]] +[[!template text="from an Emacs instance on the server," start="00:04:33.199" video="mainVideo" id=subtitle]] +[[!template text="which in my case" start="00:04:34.639" video="mainVideo" id=subtitle]] +[[!template text="I produce views for an agenda" start="00:04:35.360" video="mainVideo" id=subtitle]] +[[!template text="or a sparse tree of my main projects file." start="00:04:36.720" video="mainVideo" id=subtitle]] +[[!template text="Finally we have gallery and wavfile," start="00:04:39.360" video="mainVideo" id=subtitle]] +[[!template text="which are static resources" start="00:04:41.120" video="mainVideo" id=subtitle]] +[[!template text="which will never change once generated." start="00:04:42.240" video="mainVideo" id=subtitle]] +[[!template text="The idea is that you feed it" start="00:04:44.000" video="mainVideo" id=subtitle]] +[[!template text="text and an image location," start="00:04:45.199" video="mainVideo" id=subtitle]] +[[!template text="and it generates" start="00:04:46.400" video="mainVideo" id=subtitle]] +[[!template text="a Kindle-compatible image" start="00:04:47.040" video="mainVideo" id=subtitle]] +[[!template text="using imagemagick as a backend for it." start="00:04:48.720" video="mainVideo" id=subtitle]] +[[!template text="In the case of the wavfile," start="00:04:51.280" video="mainVideo" id=subtitle]] +[[!template text="it uses espeak on the backend." start="00:04:52.240" video="mainVideo" id=subtitle]] +[[!template text="The below is summarized" start="00:04:54.160" video="mainVideo" id=subtitle]] +[[!template text="from the help-me text" start="00:04:55.280" video="mainVideo" id=subtitle]] +[[!template text="in the main ksync file," start="00:04:56.317" video="mainVideo" id=subtitle]] +[[!template text="but essentially, you need to" start="00:04:57.199" video="mainVideo" id=subtitle]] +[[!template text="define your config in the CSV files," start="00:04:58.160" video="mainVideo" id=subtitle]] +[[!template text="which we talk about in the next section;" start="00:04:59.919" video="mainVideo" id=subtitle]] +[[!template text="initialize all your Kindle devices," start="00:05:01.440" video="mainVideo" id=subtitle]] +[[!template text="i.e. copy over SSH keys," start="00:05:03.120" video="mainVideo" id=subtitle]] +[[!template text="kill all the unnecessary services," start="00:05:04.720" video="mainVideo" id=subtitle]] +[[!template text="and prime them for media collection;" start="00:05:06.160" video="mainVideo" id=subtitle]] +[[!template text="and ensure that you have" start="00:05:07.840" video="mainVideo" id=subtitle]] +[[!template text="all your static media generated" start="00:05:08.720" video="mainVideo" id=subtitle]] +[[!template text="and fetchable; and finally" start="00:05:10.080" video="mainVideo" id=subtitle]] +[[!template text="you then refresh the scheduling" start="00:05:11.440" video="mainVideo" id=subtitle]] +[[!template text="on the server." start="00:05:12.720" video="mainVideo" id=subtitle]] +[[!template text="Okay, so this is all good and well," start="00:05:14.240" video="mainVideo" id=subtitle]] +[[!template text="and we now know what the server does" start="00:05:15.759" video="mainVideo" id=subtitle]] +[[!template text="and how to probe and inspect it -" start="00:05:17.039" video="mainVideo" id=subtitle]] +[[!template text="but how does the server generate" start="00:05:18.400" video="mainVideo" id=subtitle]] +[[!template text="much of the content?" start="00:05:19.759" video="mainVideo" id=subtitle]] +[[!template text="So a lot of the content" start="00:05:21.120" video="mainVideo" id=subtitle]] +[[!template text="will be dynamically generated," start="00:05:22.080" video="mainVideo" id=subtitle]] +[[!template text="meaning it cannot be cached" start="00:05:23.360" video="mainVideo" id=subtitle]] +[[!template text="and is likely to change from hour to hour." start="00:05:24.639" video="mainVideo" id=subtitle]] +[[!template text="The media content that is generated here" start="00:05:26.720" video="mainVideo" id=subtitle]] +[[!template text="are mostly PNG images" start="00:05:28.400" video="mainVideo" id=subtitle]] +[[!template text="and have a timestamp" start="00:05:29.759" video="mainVideo" id=subtitle]] +[[!template text="embedded in their filenames." start="00:05:30.567" video="mainVideo" id=subtitle]] +[[!template text="The Emacs-specific content" start="00:05:32.320" video="mainVideo" id=subtitle]] +[[!template text="consists of a few views," start="00:05:33.520" video="mainVideo" id=subtitle]] +[[!template text="namely the org-gcal views," start="00:05:34.560" video="mainVideo" id=subtitle]] +[[!template text="org-agenda, and org-calories --" start="00:05:36.000" video="mainVideo" id=subtitle]] +[[!template text="essentially anything that Emacs can display" start="00:05:37.600" video="mainVideo" id=subtitle]] +[[!template text="and that you want to capture into an image." start="00:05:39.520" video="mainVideo" id=subtitle]] +[[!template text="Emacs can't (as far as I know)" start="00:05:42.000" video="mainVideo" id=subtitle]] +[[!template text="render graphics in a headless way," start="00:05:43.360" video="mainVideo" id=subtitle]] +[[!template text="so what we do instead" start="00:05:44.639" video="mainVideo" id=subtitle]] +[[!template text="is run Emacs in a dummy minimal X11 session" start="00:05:45.600" video="mainVideo" id=subtitle]] +[[!template text="via "xvrb-run."" start="00:05:48.240" video="mainVideo" id=subtitle]] +[[!template text="From inside, you can take screenshots" start="00:05:50.080" video="mainVideo" id=subtitle]] +[[!template text="as you would in" start="00:05:51.680" video="mainVideo" id=subtitle]] +[[!template text="a normal desktop environment," start="00:05:52.233" video="mainVideo" id=subtitle]] +[[!template text="but with the benefit that" start="00:05:53.440" video="mainVideo" id=subtitle]] +[[!template text="you don't actually need to invoke a desktop" start="00:05:54.400" video="mainVideo" id=subtitle]] +[[!template text="or interfere with an existing one." start="00:05:56.479" video="mainVideo" id=subtitle]] +[[!template text="The minimal elisp shown here" start="00:05:58.560" video="mainVideo" id=subtitle]] +[[!template text="is all that is required" start="00:05:59.840" video="mainVideo" id=subtitle]] +[[!template text="to output your desired image from Emacs" start="00:06:00.720" video="mainVideo" id=subtitle]] +[[!template text="and configure it for the Kindle environment." start="00:06:02.400" video="mainVideo" id=subtitle]] +[[!template text="On the web side of things," start="00:06:04.479" video="mainVideo" id=subtitle]] +[[!template text="we don't really need to invoke" start="00:06:05.360" video="mainVideo" id=subtitle]] +[[!template text="a dummy X11 session" start="00:06:06.400" video="mainVideo" id=subtitle]] +[[!template text="because Chromium can run headless" start="00:06:07.520" video="mainVideo" id=subtitle]] +[[!template text="and can be controlled" start="00:06:09.120" video="mainVideo" id=subtitle]] +[[!template text="by the node library "puppeteer"" start="00:06:09.919" video="mainVideo" id=subtitle]] +[[!template text="to render dynamic content," start="00:06:11.600" video="mainVideo" id=subtitle]] +[[!template text="focus on regions of the webpage," start="00:06:13.039" video="mainVideo" id=subtitle]] +[[!template text="and take snapshots." start="00:06:14.560" video="mainVideo" id=subtitle]] +[[!template text="The static content comprises" start="00:06:16.080" video="mainVideo" id=subtitle]] +[[!template text="of two types: images and audio." start="00:06:17.600" video="mainVideo" id=subtitle]] +[[!template text="The content is accessed by a key," start="00:06:19.600" video="mainVideo" id=subtitle]] +[[!template text="in this case Batman," start="00:06:21.520" video="mainVideo" id=subtitle]] +[[!template text="and the content information" start="00:06:22.560" video="mainVideo" id=subtitle]] +[[!template text="is given by the "--extra" parameter" start="00:06:23.600" video="mainVideo" id=subtitle]] +[[!template text="which describes either or both" start="00:06:25.199" video="mainVideo" id=subtitle]] +[[!template text="an image and text." start="00:06:26.960" video="mainVideo" id=subtitle]] +[[!template text="Okay, so now we have content," start="00:06:30.880" video="mainVideo" id=subtitle]] +[[!template text="how do we schedule this content" start="00:06:32.248" video="mainVideo" id=subtitle]] +[[!template text="to appear on our desired machines" start="00:06:33.600" video="mainVideo" id=subtitle]] +[[!template text="at desired times?" start="00:06:34.960" video="mainVideo" id=subtitle]] +[[!template text="Everything is run via cron." start="00:06:36.400" video="mainVideo" id=subtitle]] +[[!template text="So previously we saw that" start="00:06:37.759" video="mainVideo" id=subtitle]] +[[!template text="we only needed the tables MACHINES.csv," start="00:06:38.720" video="mainVideo" id=subtitle]] +[[!template text="COMMANDS.csv, and multiple TIME_*.csv tables" start="00:06:40.880" video="mainVideo" id=subtitle]] +[[!template text="for the shell script to work." start="00:06:43.440" video="mainVideo" id=subtitle]] +[[!template text="But Org-Mode does this far easier," start="00:06:44.880" video="mainVideo" id=subtitle]] +[[!template text="since you can just have everything" start="00:06:46.479" video="mainVideo" id=subtitle]] +[[!template text="in the same file," start="00:06:47.919" video="mainVideo" id=subtitle]] +[[!template text="and with the helper minor-mode," start="00:06:49.039" video="mainVideo" id=subtitle]] +[[!template text="manage everything" start="00:06:50.720" video="mainVideo" id=subtitle]] +[[!template text="from a single Org-Mode document." start="00:06:51.360" video="mainVideo" id=subtitle]] +[[!template text="Here I have 4 kindles and their shortnames." start="00:06:53.120" video="mainVideo" id=subtitle]] +[[!template text="Yes, I even have a Kindle" start="00:06:55.120" video="mainVideo" id=subtitle]] +[[!template text="hanging outside my door." start="00:06:56.160" video="mainVideo" id=subtitle]] +[[!template text="I have 11 defined commands" start="00:06:57.520" video="mainVideo" id=subtitle]] +[[!template text="which represent the views I want to see," start="00:06:58.960" video="mainVideo" id=subtitle]] +[[!template text="and there are 4 timetables I use," start="00:07:00.800" video="mainVideo" id=subtitle]] +[[!template text="but you can have" start="00:07:02.319" video="mainVideo" id=subtitle]] +[[!template text="everything on one, if you like." start="00:07:02.800" video="mainVideo" id=subtitle]] +[[!template text="Rows are machine names," start="00:07:04.319" video="mainVideo" id=subtitle]] +[[!template text="and columns are corresponding hours" start="00:07:05.360" video="mainVideo" id=subtitle]] +[[!template text="at which they run." start="00:07:06.800" video="mainVideo" id=subtitle]] +[[!template text="Trust me, it's easier to configure" start="00:07:07.840" video="mainVideo" id=subtitle]] +[[!template text="repeating tasks just by repeating them" start="00:07:09.440" video="mainVideo" id=subtitle]] +[[!template text="multiple times, because at least this way," start="00:07:10.960" video="mainVideo" id=subtitle]] +[[!template text="it's human readable," start="00:07:12.720" video="mainVideo" id=subtitle]] +[[!template text="and the script which converts these" start="00:07:13.680" video="mainVideo" id=subtitle]] +[[!template text="to a cronjob" start="00:07:14.880" video="mainVideo" id=subtitle]] +[[!template text="collapses the repeating tasks by itself." start="00:07:15.759" video="mainVideo" id=subtitle]] +[[!template text="The ksync script can be called" start="00:07:18.800" video="mainVideo" id=subtitle]] +[[!template text="from within the config.org file" start="00:07:20.560" video="mainVideo" id=subtitle]] +[[!template text="using this convenient" start="00:07:23.120" video="mainVideo" id=subtitle]] +[[!template text="use-package declaration." start="00:07:24.683" video="mainVideo" id=subtitle]] +[[!template text="All that one needs to do" start="00:07:26.960" video="mainVideo" id=subtitle]] +[[!template text="is to configure the ENVIRONMENT_VARIABLES" start="00:07:28.319" video="mainVideo" id=subtitle]] +[[!template text="by setting them in this table" start="00:07:30.560" video="mainVideo" id=subtitle]] +[[!template text="where you set the repo name," start="00:07:32.880" video="mainVideo" id=subtitle]] +[[!template text="the config directory," start="00:07:34.479" video="mainVideo" id=subtitle]] +[[!template text="where the media shall go," start="00:07:36.160" video="mainVideo" id=subtitle]] +[[!template text="and the server IP," start="00:07:37.599" video="mainVideo" id=subtitle]] +[[!template text="although this can be" start="00:07:38.960" video="mainVideo" id=subtitle]] +[[!template text="automatically detected." start="00:07:39.919" video="mainVideo" id=subtitle]] +[[!template text="The package allows you" start="00:07:41.360" video="mainVideo" id=subtitle]] +[[!template text="to export your tables" start="00:07:42.240" video="mainVideo" id=subtitle]] +[[!template text="by running C-c C-c on them," start="00:07:43.440" video="mainVideo" id=subtitle]] +[[!template text="and allows you to update all the jobs" start="00:07:46.720" video="mainVideo" id=subtitle]] +[[!template text="related to each of your clients." start="00:07:49.199" video="mainVideo" id=subtitle]] +[[!template text="You can also initialize clients" start="00:07:52.319" video="mainVideo" id=subtitle]] +[[!template text="using this package --" start="00:07:53.759" video="mainVideo" id=subtitle]] +[[!template text="for either all of them" start="00:07:55.120" video="mainVideo" id=subtitle]] +[[!template text="or individual clients --" start="00:07:56.479" video="mainVideo" id=subtitle]] +[[!template text="and the package comes with" start="00:07:58.479" video="mainVideo" id=subtitle]] +[[!template text="some convenience functions" start="00:07:59.599" video="mainVideo" id=subtitle]] +[[!template text="to do this automatically" start="00:08:01.120" video="mainVideo" id=subtitle]] +[[!template text="for all tables in the buffer." start="00:08:02.720" video="mainVideo" id=subtitle]] +[[!template text="With this, I want to say a big thank you" start="00:08:06.720" video="mainVideo" id=subtitle]] +[[!template text="to Takaaki Ishikawa" start="00:08:08.319" video="mainVideo" id=subtitle]] +[[!template text="for his fantastic "org-tree-slide"" start="00:08:09.840" video="mainVideo" id=subtitle]] +[[!template text="presentation package." start="00:08:11.520" video="mainVideo" id=subtitle]] +[[!template text="To Pascal Widdershoven" start="00:08:12.879" video="mainVideo" id=subtitle]] +[[!template text="and David Hamp-Gonsalves," start="00:08:14.136" video="mainVideo" id=subtitle]] +[[!template text="for their fantastic" start="00:08:15.803" video="mainVideo" id=subtitle]] +[[!template text="kindle-dash repositories," start="00:08:16.633" video="mainVideo" id=subtitle]] +[[!template text="for which some of my internal Kindle scripts" start="00:08:17.840" video="mainVideo" id=subtitle]] +[[!template text="are derived from." start="00:08:19.903" video="mainVideo" id=subtitle]] +[[!template text="Also a big thanks to the friendly" start="00:08:20.720" video="mainVideo" id=subtitle]] +[[!template text="and not-so-friendly users and hackers" start="00:08:22.160" video="mainVideo" id=subtitle]] +[[!template text="in the MobileRead forums." start="00:08:23.520" video="mainVideo" id=subtitle]] +[[!template text="And finally, a big thanks" start="00:08:24.960" video="mainVideo" id=subtitle]] +[[!template text="to the Emacs community" start="00:08:25.919" video="mainVideo" id=subtitle]] +[[!template text="and the conference organizers." start="00:08:26.960" video="mainVideo" id=subtitle]] +[[!template text="Thank you! captions by Mehmet" start="00:08:28.270" video="mainVideo" id=subtitle]] diff --git a/2021/captions/project.md b/2021/captions/project.md new file mode 100644 index 00000000..026e73ea --- /dev/null +++ b/2021/captions/project.md @@ -0,0 +1,241 @@ +<a name="transcript"></a> +# Transcript + +[[!template text="hi i am adolfo villafraid i am the" start="00:00:01.040" video="mainVideo" id=subtitle]] +[[!template text="co-founder of chef tech an innovative" start="00:00:03.439" video="mainVideo" id=subtitle]] +[[!template text="staff a socially vocated innovative" start="00:00:05.600" video="mainVideo" id=subtitle]] +[[!template text="setup" start="00:00:08.240" video="mainVideo" id=subtitle]] +[[!template text="in italy and today i'm gonna talk about" start="00:00:09.440" video="mainVideo" id=subtitle]] +[[!template text="the way in which we use earth mode to" start="00:00:12.639" video="mainVideo" id=subtitle]] +[[!template text="budget our" start="00:00:14.920" video="mainVideo" id=subtitle]] +[[!template text="projects first i need to introduce the" start="00:00:16.960" video="mainVideo" id=subtitle]] +[[!template text="way in which we build our project budget" start="00:00:18.880" video="mainVideo" id=subtitle]] +[[!template text="we start from the goals and the work to" start="00:00:21.279" video="mainVideo" id=subtitle]] +[[!template text="be performed" start="00:00:23.119" video="mainVideo" id=subtitle]] +[[!template text="and" start="00:00:24.720" video="mainVideo" id=subtitle]] +[[!template text="we" start="00:00:25.840" video="mainVideo" id=subtitle]] +[[!template text="split it into different tasks" start="00:00:26.800" video="mainVideo" id=subtitle]] +[[!template text="which may be grouped in different ways" start="00:00:29.840" video="mainVideo" id=subtitle]] +[[!template text="according to our needs it could be user" start="00:00:31.920" video="mainVideo" id=subtitle]] +[[!template text="stories or" start="00:00:34.320" video="mainVideo" id=subtitle]] +[[!template text="functional groups or" start="00:00:35.840" video="mainVideo" id=subtitle]] +[[!template text="or packages and then for each task we" start="00:00:38.320" video="mainVideo" id=subtitle]] +[[!template text="compute the effort" start="00:00:40.879" video="mainVideo" id=subtitle]] +[[!template text="then from the effort we derive the" start="00:00:44.000" video="mainVideo" id=subtitle]] +[[!template text="project cost and" start="00:00:46.640" video="mainVideo" id=subtitle]] +[[!template text="price" start="00:00:48.320" video="mainVideo" id=subtitle]] +[[!template text="according to two different approaches" start="00:00:49.840" video="mainVideo" id=subtitle]] +[[!template text="the first approach we allocate the" start="00:00:52.239" video="mainVideo" id=subtitle]] +[[!template text="effort to each resource" start="00:00:54.160" video="mainVideo" id=subtitle]] +[[!template text="and we multiply the effort" start="00:00:56.320" video="mainVideo" id=subtitle]] +[[!template text="of the resource by the price of the" start="00:00:58.800" video="mainVideo" id=subtitle]] +[[!template text="results we sum" start="00:01:00.719" video="mainVideo" id=subtitle]] +[[!template text="all the efforts together and then we sum" start="00:01:02.800" video="mainVideo" id=subtitle]] +[[!template text="all the tasks together the prices of all" start="00:01:05.040" video="mainVideo" id=subtitle]] +[[!template text="the tasks together in the second" start="00:01:08.159" video="mainVideo" id=subtitle]] +[[!template text="approach we use" start="00:01:10.240" video="mainVideo" id=subtitle]] +[[!template text="a generic effort" start="00:01:12.640" video="mainVideo" id=subtitle]] +[[!template text="estimation for each" start="00:01:15.439" video="mainVideo" id=subtitle]] +[[!template text="task" start="00:01:18.000" video="mainVideo" id=subtitle]] +[[!template text="without allocating the effort to any" start="00:01:19.200" video="mainVideo" id=subtitle]] +[[!template text="specific person and we multiply this" start="00:01:21.200" video="mainVideo" id=subtitle]] +[[!template text="effort by the average" start="00:01:24.560" video="mainVideo" id=subtitle]] +[[!template text="price of the resource" start="00:01:26.960" video="mainVideo" id=subtitle]] +[[!template text="in" start="00:01:29.040" video="mainVideo" id=subtitle]] +[[!template text="both cases" start="00:01:30.159" video="mainVideo" id=subtitle]] +[[!template text="the price is computed" start="00:01:32.000" video="mainVideo" id=subtitle]] +[[!template text="by" start="00:01:34.720" video="mainVideo" id=subtitle]] +[[!template text="summing cost to" start="00:01:35.600" video="mainVideo" id=subtitle]] +[[!template text="overheads and and profit we're a small" start="00:01:38.079" video="mainVideo" id=subtitle]] +[[!template text="company we can choose our two chain so" start="00:01:40.640" video="mainVideo" id=subtitle]] +[[!template text="we decided to use our mode for writing" start="00:01:42.960" video="mainVideo" id=subtitle]] +[[!template text="our proposals" start="00:01:45.840" video="mainVideo" id=subtitle]] +[[!template text="so we built a template the template has" start="00:01:47.360" video="mainVideo" id=subtitle]] +[[!template text="got uh some a fixed structure" start="00:01:50.000" video="mainVideo" id=subtitle]] +[[!template text="which allows us to do a lot of reuse" start="00:01:54.159" video="mainVideo" id=subtitle]] +[[!template text="and" start="00:01:56.880" video="mainVideo" id=subtitle]] +[[!template text="some emacs list code and or promote the" start="00:01:57.759" video="mainVideo" id=subtitle]] +[[!template text="features to build the" start="00:02:00.399" video="mainVideo" id=subtitle]] +[[!template text="project tables let me show you" start="00:02:02.960" video="mainVideo" id=subtitle]] +[[!template text="without further ado the template" start="00:02:06.079" video="mainVideo" id=subtitle]] +[[!template text="which is shown here" start="00:02:09.759" video="mainVideo" id=subtitle]] +[[!template text="and basically it is a fairly standard" start="00:02:11.760" video="mainVideo" id=subtitle]] +[[!template text="old mod document" start="00:02:15.520" video="mainVideo" id=subtitle]] +[[!template text="Music" start="00:02:17.750" video="mainVideo" id=subtitle]] +[[!template text="there are some sections here to" start="00:02:20.800" video="mainVideo" id=subtitle]] +[[!template text="let me show you" start="00:02:23.760" video="mainVideo" id=subtitle]] +[[!template text="the structure here" start="00:02:26.239" video="mainVideo" id=subtitle]] +[[!template text="there are some sections some of which" start="00:02:28.879" video="mainVideo" id=subtitle]] +[[!template text="are not" start="00:02:31.519" video="mainVideo" id=subtitle]] +[[!template text="exported shown to the client" start="00:02:34.000" video="mainVideo" id=subtitle]] +[[!template text="because they are of no interest to them" start="00:02:36.640" video="mainVideo" id=subtitle]] +[[!template text="such as for instance the" start="00:02:39.519" video="mainVideo" id=subtitle]] +[[!template text="plaintext each ledger accounting entries" start="00:02:42.160" video="mainVideo" id=subtitle]] +[[!template text="we generate for the project" start="00:02:45.440" video="mainVideo" id=subtitle]] +[[!template text="and" start="00:02:47.440" video="mainVideo" id=subtitle]] +[[!template text="or some info about the detailed uh" start="00:02:48.720" video="mainVideo" id=subtitle]] +[[!template text="budget uh data uh while other are shared" start="00:02:51.599" video="mainVideo" id=subtitle]] +[[!template text="with uh with the clients to form a" start="00:02:54.959" video="mainVideo" id=subtitle]] +[[!template text="project proposal now the structure is" start="00:02:57.120" video="mainVideo" id=subtitle]] +[[!template text="not really important in the sense that" start="00:02:59.360" video="mainVideo" id=subtitle]] +[[!template text="the only constraint and requirement" start="00:03:01.120" video="mainVideo" id=subtitle]] +[[!template text="we set is that there has to be a section" start="00:03:04.720" video="mainVideo" id=subtitle]] +[[!template text="with an id" start="00:03:07.599" video="mainVideo" id=subtitle]] +[[!template text="named plan" start="00:03:08.800" video="mainVideo" id=subtitle]] +[[!template text="which will contain and contains the" start="00:03:10.800" video="mainVideo" id=subtitle]] +[[!template text="plan the project plan" start="00:03:13.519" video="mainVideo" id=subtitle]] +[[!template text="here for instance we have" start="00:03:15.840" video="mainVideo" id=subtitle]] +[[!template text="we have a project plan made of a user" start="00:03:19.440" video="mainVideo" id=subtitle]] +[[!template text="story" start="00:03:22.400" video="mainVideo" id=subtitle]] +[[!template text="whose development is split into three" start="00:03:23.599" video="mainVideo" id=subtitle]] +[[!template text="different tasks" start="00:03:25.599" video="mainVideo" id=subtitle]] +[[!template text="for each task" start="00:03:27.360" video="mainVideo" id=subtitle]] +[[!template text="let me show you just" start="00:03:29.200" video="mainVideo" id=subtitle]] +[[!template text="the structure before" start="00:03:31.440" video="mainVideo" id=subtitle]] +[[!template text="the application of the template" start="00:03:34.799" video="mainVideo" id=subtitle]] +[[!template text="for each task" start="00:03:37.280" video="mainVideo" id=subtitle]] +[[!template text="you need to define you need to define" start="00:03:39.680" video="mainVideo" id=subtitle]] +[[!template text="the effort here for instance we have an" start="00:03:44.319" video="mainVideo" id=subtitle]] +[[!template text="effort a generic effort not allocated to" start="00:03:46.879" video="mainVideo" id=subtitle]] +[[!template text="any person" start="00:03:49.280" video="mainVideo" id=subtitle]] +[[!template text="uh we use our mood duration 60 stands" start="00:03:50.480" video="mainVideo" id=subtitle]] +[[!template text="for 60 minutes" start="00:03:53.280" video="mainVideo" id=subtitle]] +[[!template text="and here we have an effort" start="00:03:54.799" video="mainVideo" id=subtitle]] +[[!template text="profiled so" start="00:03:56.879" video="mainVideo" id=subtitle]] +[[!template text="in task 1.2 and also we work 10 days and" start="00:03:58.480" video="mainVideo" id=subtitle]] +[[!template text="we kill 20 days" start="00:04:02.080" video="mainVideo" id=subtitle]] +[[!template text="these are working days so one working" start="00:04:04.159" video="mainVideo" id=subtitle]] +[[!template text="day corresponds to eight hours" start="00:04:06.879" video="mainVideo" id=subtitle]] +[[!template text="this is like you know stand that we" start="00:04:09.760" video="mainVideo" id=subtitle]] +[[!template text="might revise these" start="00:04:11.760" video="mainVideo" id=subtitle]] +[[!template text="to become more compliant with" start="00:04:13.519" video="mainVideo" id=subtitle]] +[[!template text="the definition of the" start="00:04:16.400" video="mainVideo" id=subtitle]] +[[!template text="given by word mode notice that" start="00:04:18.400" video="mainVideo" id=subtitle]] +[[!template text="you can or cannot you may or may not use" start="00:04:21.120" video="mainVideo" id=subtitle]] +[[!template text="to do keywords here if you want we don't" start="00:04:25.360" video="mainVideo" id=subtitle]] +[[!template text="usually don't use them because the final" start="00:04:28.160" video="mainVideo" id=subtitle]] +[[!template text="document looks nice to the customer" start="00:04:30.800" video="mainVideo" id=subtitle]] +[[!template text="without to do we then add them when we" start="00:04:33.680" video="mainVideo" id=subtitle]] +[[!template text="move to a later" start="00:04:38.000" video="mainVideo" id=subtitle]] +[[!template text="stage" start="00:04:39.680" video="mainVideo" id=subtitle]] +[[!template text="so" start="00:04:40.720" video="mainVideo" id=subtitle]] +[[!template text="once you define the plan with the effort" start="00:04:41.520" video="mainVideo" id=subtitle]] +[[!template text="allocation" start="00:04:44.320" video="mainVideo" id=subtitle]] +[[!template text="you can" start="00:04:45.600" video="mainVideo" id=subtitle]] +[[!template text="go back to the" start="00:04:47.440" video="mainVideo" id=subtitle]] +[[!template text="emacs list part" start="00:04:49.440" video="mainVideo" id=subtitle]] +[[!template text="where" start="00:04:51.440" video="mainVideo" id=subtitle]] +[[!template text="you can set three different variables" start="00:04:53.040" video="mainVideo" id=subtitle]] +[[!template text="to define the hourly rates of your team" start="00:04:55.680" video="mainVideo" id=subtitle]] +[[!template text="so for instance here" start="00:04:59.680" video="mainVideo" id=subtitle]] +[[!template text="i am taking 10 euros per hour" start="00:05:01.440" video="mainVideo" id=subtitle]] +[[!template text="one" start="00:05:05.360" video="mainVideo" id=subtitle]] +[[!template text="not real rate actually let me kill it 20" start="00:05:06.160" video="mainVideo" id=subtitle]] +[[!template text="and then you can set the profit as a" start="00:05:09.680" video="mainVideo" id=subtitle]] +[[!template text="percentage on top of the hourly rate and" start="00:05:11.600" video="mainVideo" id=subtitle]] +[[!template text="profit as a percentage on top of uh" start="00:05:14.720" video="mainVideo" id=subtitle]] +[[!template text="hourly rates" start="00:05:17.759" video="mainVideo" id=subtitle]] +[[!template text="and" start="00:05:19.360" video="mainVideo" id=subtitle]] +[[!template text="the" start="00:05:20.240" video="mainVideo" id=subtitle]] +[[!template text="ballpark effort allocation here is used" start="00:05:21.360" video="mainVideo" id=subtitle]] +[[!template text="to compute the average" start="00:05:24.880" video="mainVideo" id=subtitle]] +[[!template text="type" start="00:05:27.919" video="mainVideo" id=subtitle]] +[[!template text="uh our average hourly" start="00:05:28.880" video="mainVideo" id=subtitle]] +[[!template text="rate" start="00:05:31.199" video="mainVideo" id=subtitle]] +[[!template text="as a weighted average so here i'm saying" start="00:05:32.160" video="mainVideo" id=subtitle]] +[[!template text="that" start="00:05:34.720" video="mainVideo" id=subtitle]] +[[!template text="on average i will work 30 percent" start="00:05:35.680" video="mainVideo" id=subtitle]] +[[!template text="of the effort of each task while mike" start="00:05:38.880" video="mainVideo" id=subtitle]] +[[!template text="will take care of the" start="00:05:41.600" video="mainVideo" id=subtitle]] +[[!template text="remaining 70" start="00:05:43.199" video="mainVideo" id=subtitle]] +[[!template text="and the" start="00:05:45.280" video="mainVideo" id=subtitle]] +[[!template text="hourly rate is computed by multiplying" start="00:05:46.479" video="mainVideo" id=subtitle]] +[[!template text="30" start="00:05:48.720" video="mainVideo" id=subtitle]] +[[!template text="percent by 10 plus 70" start="00:05:49.919" video="mainVideo" id=subtitle]] +[[!template text="by 20. um" start="00:05:53.600" video="mainVideo" id=subtitle]] +[[!template text="okay if i do a ctrl c ctrl c here i" start="00:05:57.120" video="mainVideo" id=subtitle]] +[[!template text="execute the imax list code in the" start="00:06:00.479" video="mainVideo" id=subtitle]] +[[!template text="uh in the source code block as you can" start="00:06:04.800" video="mainVideo" id=subtitle]] +[[!template text="see" start="00:06:07.919" video="mainVideo" id=subtitle]] +[[!template text="emacs put" start="00:06:08.880" video="mainVideo" id=subtitle]] +[[!template text="back" start="00:06:10.639" video="mainVideo" id=subtitle]] +[[!template text="the properties" start="00:06:11.520" video="mainVideo" id=subtitle]] +[[!template text="Music" start="00:06:13.830" video="mainVideo" id=subtitle]] +[[!template text="that transform the effort into a total" start="00:06:15.759" video="mainVideo" id=subtitle]] +[[!template text="amount namely the the effort is first" start="00:06:18.720" video="mainVideo" id=subtitle]] +[[!template text="transformed into working hours" start="00:06:22.080" video="mainVideo" id=subtitle]] +[[!template text="the rates and costs are computed" start="00:06:24.479" video="mainVideo" id=subtitle]] +[[!template text="overhead computed and everything" start="00:06:27.280" video="mainVideo" id=subtitle]] +[[!template text="contributes to the total amount" start="00:06:31.440" video="mainVideo" id=subtitle]] +[[!template text="same thing here" start="00:06:34.639" video="mainVideo" id=subtitle]] +[[!template text="the count the the" start="00:06:36.560" video="mainVideo" id=subtitle]] +[[!template text="cost is slightly more complex because we" start="00:06:39.280" video="mainVideo" id=subtitle]] +[[!template text="use profile effort" start="00:06:42.160" video="mainVideo" id=subtitle]] +[[!template text="and so on and so forth that this" start="00:06:45.360" video="mainVideo" id=subtitle]] +[[!template text="information here" start="00:06:47.440" video="mainVideo" id=subtitle]] +[[!template text="can be then" start="00:06:49.680" video="mainVideo" id=subtitle]] +[[!template text="grouped up" start="00:06:52.160" video="mainVideo" id=subtitle]] +[[!template text="in the" start="00:06:56.960" video="mainVideo" id=subtitle]] +[[!template text="to form the the project plan and project" start="00:06:58.000" video="mainVideo" id=subtitle]] +[[!template text="budget as you can see" start="00:07:00.639" video="mainVideo" id=subtitle]] +[[!template text="this is something we do not" start="00:07:03.039" video="mainVideo" id=subtitle]] +[[!template text="export" start="00:07:05.599" video="mainVideo" id=subtitle]] +[[!template text="in the project proposal to the client" start="00:07:06.880" video="mainVideo" id=subtitle]] +[[!template text="because we prefer to do some rounding by" start="00:07:09.440" video="mainVideo" id=subtitle]] +[[!template text="hand" start="00:07:11.919" video="mainVideo" id=subtitle]] +[[!template text="in order to build a budget which is" start="00:07:13.199" video="mainVideo" id=subtitle]] +[[!template text="let's say" start="00:07:15.599" video="mainVideo" id=subtitle]] +[[!template text="more" start="00:07:16.960" video="mainVideo" id=subtitle]] +[[!template text="reasonable and" start="00:07:17.840" video="mainVideo" id=subtitle]] +[[!template text="this table here" start="00:07:20.880" video="mainVideo" id=subtitle]] +[[!template text="computes what" start="00:07:22.720" video="mainVideo" id=subtitle]] +[[!template text="in total amounts by control c control c" start="00:07:24.639" video="mainVideo" id=subtitle]] +[[!template text="once again and then this table here the" start="00:07:26.880" video="mainVideo" id=subtitle]] +[[!template text="payment structure is used to um" start="00:07:30.000" video="mainVideo" id=subtitle]] +[[!template text="compute" start="00:07:33.440" video="mainVideo" id=subtitle]] +[[!template text="the amount to be paid according to" start="00:07:34.639" video="mainVideo" id=subtitle]] +[[!template text="the different payments we want to set in" start="00:07:38.000" video="mainVideo" id=subtitle]] +[[!template text="the project here for instance we are" start="00:07:40.240" video="mainVideo" id=subtitle]] +[[!template text="setting three payments with the" start="00:07:41.840" video="mainVideo" id=subtitle]] +[[!template text="following percentages and the table you" start="00:07:43.680" video="mainVideo" id=subtitle]] +[[!template text="set the dates and amounts and the table" start="00:07:47.280" video="mainVideo" id=subtitle]] +[[!template text="keeps" start="00:07:49.840" video="mainVideo" id=subtitle]] +[[!template text="track of the rest by looking at the" start="00:07:52.240" video="mainVideo" id=subtitle]] +[[!template text="total amount" start="00:07:55.039" video="mainVideo" id=subtitle]] +[[!template text="it finds here" start="00:07:56.479" video="mainVideo" id=subtitle]] +[[!template text="in the budget table so the payment" start="00:07:59.360" video="mainVideo" id=subtitle]] +[[!template text="structure and budget are then used by" start="00:08:02.080" video="mainVideo" id=subtitle]] +[[!template text="this piece of code here" start="00:08:05.199" video="mainVideo" id=subtitle]] +[[!template text="to" start="00:08:07.280" video="mainVideo" id=subtitle]] +[[!template text="build the entries" start="00:08:08.639" video="mainVideo" id=subtitle]] +[[!template text="used" start="00:08:12.000" video="mainVideo" id=subtitle]] +[[!template text="for our internal internal accounting" start="00:08:13.360" video="mainVideo" id=subtitle]] +[[!template text="which is based on age ledge ledger" start="00:08:16.720" video="mainVideo" id=subtitle]] +[[!template text="we did everything here by hand" start="00:08:21.039" video="mainVideo" id=subtitle]] +[[!template text="but" start="00:08:23.759" video="mainVideo" id=subtitle]] +[[!template text="it is not necessary of course" start="00:08:24.639" video="mainVideo" id=subtitle]] +[[!template text="in the sense uh because if you" start="00:08:26.400" video="mainVideo" id=subtitle]] +[[!template text="uh export the document using ctrl c ctrl" start="00:08:29.360" video="mainVideo" id=subtitle]] +[[!template text="e and then for instance l for latex and" start="00:08:32.800" video="mainVideo" id=subtitle]] +[[!template text="pip for pdf" start="00:08:36.240" video="mainVideo" id=subtitle]] +[[!template text="or the mode takes care of doing" start="00:08:39.760" video="mainVideo" id=subtitle]] +[[!template text="evaluating each piece of code" start="00:08:42.399" video="mainVideo" id=subtitle]] +[[!template text="in the document and generate the" start="00:08:45.120" video="mainVideo" id=subtitle]] +[[!template text="updated documents uh here for instance" start="00:08:49.040" video="mainVideo" id=subtitle]] +[[!template text="you can see that the pdf generated from" start="00:08:51.600" video="mainVideo" id=subtitle]] +[[!template text="the template which contains all the" start="00:08:54.800" video="mainVideo" id=subtitle]] +[[!template text="tables budget and payment schema" start="00:08:56.560" video="mainVideo" id=subtitle]] +[[!template text="everything which is you which we use to" start="00:08:58.560" video="mainVideo" id=subtitle]] +[[!template text="make an offer to our clients um" start="00:09:01.440" video="mainVideo" id=subtitle]] +[[!template text="there are various advantages uh the" start="00:09:08.000" video="mainVideo" id=subtitle]] +[[!template text="first the main one being" start="00:09:10.160" video="mainVideo" id=subtitle]] +[[!template text="that we keep all the information in one" start="00:09:12.399" video="mainVideo" id=subtitle]] +[[!template text="place" start="00:09:14.480" video="mainVideo" id=subtitle]] +[[!template text="um and that we can version the" start="00:09:15.600" video="mainVideo" id=subtitle]] +[[!template text="different versions you can use source" start="00:09:19.040" video="mainVideo" id=subtitle]] +[[!template text="control to version" start="00:09:21.279" video="mainVideo" id=subtitle]] +[[!template text="uh different iterations on the document" start="00:09:22.800" video="mainVideo" id=subtitle]] +[[!template text="if you want you can find the document" start="00:09:26.080" video="mainVideo" id=subtitle]] +[[!template text="here and thank you for" start="00:09:27.519" video="mainVideo" id=subtitle]] +[[!template text="your" start="00:09:30.959" video="mainVideo" id=subtitle]] +[[!template text="attention and i'm open to questions" start="00:09:32.399" video="mainVideo" id=subtitle]] |