```typescript
/**
 * An append-only log of timestamped events.
 */
export class EventLog {
  private readonly #events: { name: string; timestamp: number }[] = [];

  /**
   * Append one event.
   *
   * @param {{ name: string, timestamp: number }} event - The event to be appended
   * @throws {Error} if `event` is not an object with 'name' and 'timestamp' properties
   */
  record(event: { name: string; timestamp: number }): void {
    this.#events.push(event);
  }

  /**
   * Every event at or after the given timestamp, in insertion order.
   *
   * @param {number} timestamp - The timestamp to filter events from
   * @returns {{ name: string, timestamp: number }[]} All events filtered by `timestamp`
   */
  since(timestamp: number): { name: string; timestamp: number }[] {
    return this.#events.filter((ev) => ev.timestamp >= timestamp);
  }
}
```