```typescript
/** An append-only log of timestamped events. */
export interface Event {
  name: string;
  timestamp: number;
}

export class EventLog {
  #events: Event[] = [];

  /**
   * Append one event.
   *
   * @param {Event} event - The event to record.
   */
  record(event: Event): void {
    if (typeof event.name !== 'string' || typeof event.timestamp !== 'number') {
      throw new Error('Invalid event data');
    }
    this.#events.push(event);
  }

  /**
   * Every event at or after the given timestamp, in insertion order.
   *
   * @param {number} timestamp - The timestamp to filter for events from.
   * @returns {Event[]} An array of events recorded since the given timestamp.
   */
  since(timestamp: number): Event[] {
    if (typeof timestamp !== 'number') {
      throw new Error('Invalid timestamp');
    }
    return this.#events.filter(event => event.timestamp >= timestamp);
  }
}
```