<!--
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

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

# List Of Documents Submitted To dev@beam.apache.org In 2023
| No. | Author | Subject | Date (UTC) |
|---|---|---|---|
| 1 | Jack McCluskey | [TensorFlow Hub Model Loading in Apache Beam](https://docs.google.com/document/d/11WpWQ_x3dpgRTvkzKS47lCXA_-PGzUBAIKNJQfLpJTg) | 2023-01-03 10:27:26 |
| 2 | John Casey | [How to Write a Beam IO](https://docs.google.com/document/d/1-WxZTNu9RrLhh5O7Dl5PbnKqz3e5gm1x3gDBBhszVF8) | 2023-01-09 11:57:44 |
| 3 | Kenneth Knowles | [Apache Beam Release Acceptance Criteria  - Google Sheets](https://docs.google.com/spreadsheets/d/1qk-N5vjXvbcEk68GjbkSZTR8AGqyNUM-oLFo_ZXBpJw) | 2023-01-09 16:25:33 |
| 4 | Herman Mak | [[Beam I/O Standards] Documentation](https://s.apache.org/beam-io-api-standard-documentation) | 2023-01-11 07:55:33 |
| 5 | Ritesh Ghorse | [TF Model Handler for RunInference](https://docs.google.com/document/d/1c2rWX7fA7UAl2qabzEXg5r7_zwosHfGo6mg1gz8VdSQ) | 2023-01-26 10:42:33 |
| 6 | Becket Qin | [Migrate Flink runner to run batch jobs with DataStream API](https://docs.google.com/document/d/1cjUJHOS1eEkH76hMNeBuc-kPhbIIc9w2gvjm8miIFS8) | 2023-02-01 04:10:32 |
| 7 | Yi Hu | [template-it-to-beam](https://docs.google.com/document/d/11RBh9_Escr8jq93tev2ADF7Wdw4St89PL4ZNrmHyGNI) | 2023-02-01 14:00:48 |
| 8 | Chamikara Jayalath | [A User-deployable Beam Transform Service](https://s.apache.org/beam-transform-service) | 2023-02-06 16:32:56 |
| 9 | Alan Zhang | [Apache Beam Fn API: Fn State API and Bundle Processing](https://s.apache.org/beam-fn-state-api-and-bundle-processing) | 2023-02-23 02:46:32 |
| 10 | Udi Meiri | [Beam Structured Logging](https://s.apache.org/beam-structured-logging) | 2023-03-08 16:59:10 |
| 11 | Kenneth Knowles | [DRAFT - Apache Beam Board Report - March 2023](https://s.apache.org/beam-draft-report-2023-03) | 2023-03-20 17:49:27 |
| 12 | Siddharth Aryan | [Sentimental Analysis Notebook](https://docs.google.com/document/d/1U6zcXAWsDCrWlbf14f5VlLqPZFucwXR48tD7mrERW-g) | 2023-03-23 12:25:28 |
| 13 | Kenneth Knowles | [Triggered Side Inputs: clarifying the spec and move to portability](https://s.apache.org/beam-triggered-side-inputs) | 2023-03-23 15:19:34 |
| 14 | Yi Hu | [Apache Beam Vendored Dependencies Release Guide](https://docs.google.com/document/d/1ztEoyGkqq9ie5riQxRtMuBu3vb6BUO91mSMn1PU0pDA) | 2023-03-29 15:52:02 |
| 15 | Yi Hu | [External: Apache Beam PM: failed installations due to dependency resolution.](https://s.apache.org/beam-python-dependencies-pm) | 2023-04-12 13:19:11 |
| 16 | Kenneth Knowles | [Guard against "Trigger Finishing", a data loss risk](https://s.apache.org/finishing-triggers-drop-data) | 2023-04-14 16:14:48 |
| 17 | Danny McCormick | [Pre/Post Processing and DLQ in RunInference](https://docs.google.com/document/d/1hr1SaWraneB9dYSFyGA99JT44oKgGNhT70wz99lmdEU) | 2023-04-18 13:49:14 |
| 18 | Anand Inguva | [Beam MLTransform](https://docs.google.com/document/d/1rQkSm_8tseLqDQaLohtlCGqt5pvMaP0XIpPi5UD0LCQ) | 2023-05-09 11:26:22 |
| 19 | Jack McCluskey | [Apache Beam Repository Deletion Postmortem](https://s.apache.org/beam-repo-deletion-postmortem) | 2023-05-16 15:39:41 |
| 20 | Jack McCluskey | [Client-Side Throttling](https://docs.google.com/document/d/1ePorJGZnLbNCmLD9mR7iFYOdPsyDA1rDnTpYnbdrzSU) | 2023-05-30 14:42:03 |
| 21 | Kenneth Knowles | [DRAFT - Apache Beam Board Report - June 2023](https://s.apache.org/beam-draft-report-2023-06) | 2023-06-09 17:28:01 |
| 22 | Jarek Potiuk | [ApacheCon 2022 - Data Engineering - YouTube](https://s.apache.org/data-engineering-videos-2022) | 2023-06-16 10:14:54 |
| 23 | Steven van Rossum | [A New DoFn](https://s.apache.org/a-new-dofn) | 2023-06-20 21:43:12 |
| 24 | Ritesh Ghorse | [Hugging Face Model Handler](https://docs.google.com/document/d/107T71QHMxvu67PyG-mkHwRhm7W2-07jihnqUMz-yuEM) | 2023-06-22 17:38:13 |
| 25 | Robert Bradshaw | [Apache Beam Yaml Improvements](https://s.apache.org/beam-yaml-pipelines-improvements) | 2023-06-22 18:12:26 |
| 26 | Celeste Zeng | [Add ARM Support to All Beam Container Images](https://docs.google.com/document/d/1ikbEJNsFH1D9HqiMqiVyyMlNpDgSqxXK22nUoetzW6I) | 2023-07-18 17:50:01 |
| 27 | Danny McCormick | [Per Key Inference](https://docs.google.com/document/d/1kj3FyWRbJu1KhViX07Z0Gk0MU0842jhYRhI-DMhhcv4) | 2023-07-20 10:47:33 |
| 28 | Yasha Ravindra | [Throttle Time Counters - One Pager](https://docs.google.com/document/d/1hUufb3L5jURGeFLaQKeQbPlYK-B2wbaLHtqNVETSOOk) | 2023-07-27 16:50:44 |
| 29 | Yi Hu | [Apache Beam Vendored Dependencies Release Guide](https://s.apache.org/beam-release-vendored-artifacts) | 2023-08-03 10:44:27 |
| 30 | Danny McCormick | [Contribute to Apache Beam](https://s.apache.org/beam-owners) | 2023-08-08 10:55:01 |
| 31 | Jack McCluskey | [Buffered Logging for Apache Beam Bootloaders](https://s.apache.org/beam-buffered-logging) | 2023-08-16 12:56:54 |
| 32 | Damon Douglas | [Can Beam slow down a PCollection?](https://docs.google.com/document/d/1DFHazCZp7xjgYRsuhD8VBgeWXweU2AQFgzGjTSIw9X4) | 2023-08-23 19:40:59 |
| 33 | Kenneth Knowles | [[PUBLIC] PTransform Design Doc Template](https://s.apache.org/ptransform-design-doc) | 2023-08-24 10:25:18 |
| 34 | Anand Inguva | [Proposal for supporting pyproject](https://docs.google.com/document/d/17-y48WW25-VGBWZNyTdoN0WUN03k9ZhJjLp9wtyG1Wc) | 2023-08-28 10:14:17 |
| 35 | Kenneth Knowles | [DRAFT - Apache Beam Board Report - September 2023](https://s.apache.org/beam-draft-report-2023-09) | 2023-09-12 11:11:49 |
| 36 | Robert Bradshaw | [Beam Yaml Contribution Guide](https://s.apache.org/beam-yaml-contribute) | 2023-09-25 15:12:12 |
| 37 | Kenneth Knowles | [[PUBLIC] Redistribute PTransform Design Doc](https://s.apache.org/beam-reshuffle) | 2023-09-26 11:43:53 |
| 38 | Anand Inguva | [Improving Side Input Performance Through Caching in Apache Beam](https://docs.google.com/document/d/1gllYsIFqKt4TWAxQmXU_-sw7SLnur2Q69d__N0XBMdE) | 2023-10-16 12:26:01 |
| 39 | Joey Tran | [[PUBLIC] PTransform Design Doc Template](https://docs.google.com/document/d/1NpCipgvT6lMgf1nuuPPwZoKp5KsteplFancGqOgy8OY) | 2023-10-19 10:05:52 |
| 40 | Anand Inguva | [Embeddings in MLTransform](https://docs.google.com/document/d/1En4bfbTu4rvu7LWJIKV3G33jO-xJfTdbaSFSURmQw_s) | 2023-10-30 10:00:00 |
| 41 | John Casey | [[BEAM] Adding Dead Letter Queue Functionality to IO Transforms](https://docs.google.com/document/d/1NGeCk6tOqF-TiGEAV7ixd_vhIiWz9sHPlCa1P_77Ajs) | 2023-11-08 15:43:39 |
| 42 | Jack McCluskey | [Beam Python Type Hinting](https://s.apache.org/beam-python-type-hinting-overview) | 2023-11-13 12:02:03 |
| 43 | Ritesh Ghorse | [[PUBLIC] Enrichment PTransform Design Doc](https://s.apache.org/enrichment-transform) | 2023-11-13 14:58:56 |
| 44 | Ahmed Abualsaud | [Generating External Transform Wrappers](https://s.apache.org/autogen-wrappers) | 2023-12-04 12:05:44 |
| 45 | Jack McCluskey | [RunInference Batching Across Bundles](https://docs.google.com/document/d/1Rin_5Vm3qT1Mkb5PcHgTDrjXc3j0Admzi3fEGEHB2-4) | 2023-12-07 15:28:07 |