Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cd942b97b0 | |||
|
8df3d41aac
|
|||
|
198b36b2dc
|
|||
|
f71feb31d4
|
|||
|
344d08ca71
|
|||
| 76afacdd27 | |||
| a63f92faa8 | |||
| 0b671132a5 |
@@ -4,8 +4,8 @@ date: 2022-10-03
|
||||
type: "page"
|
||||
---
|
||||
|
||||
The goal of the **Linux Users Group at UCLA (LUG@UCLA)** is to promote computer
|
||||
users' freedom with Linux and other Free/Open Source Software (FOSS).
|
||||
The **Linux Users Group at UCLA (LUG@UCLA)** has promoted computer
|
||||
users' freedom with Linux and other Free & Open Source Software (FOSS) since 1998.
|
||||
|
||||
## Activities
|
||||
|
||||
|
||||
13
content/events/alumni-night.md
Normal file
13
content/events/alumni-night.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: "Alumni Night"
|
||||
date: 2025-11-10
|
||||
tags: [events]
|
||||
author: LUG Board
|
||||
---
|
||||
|
||||
David Z., the man himself who revived UCLA LUG in 2022, who has worked at Tesla and Apple, is visiting from the Bay Area. You can ask him about UCLA LUG history, what distros he recommends, how Linux is used in industry, how to get internships, or just joke around.
|
||||
|
||||
* **Date**: 2025-11-13
|
||||
* **Time**: 6-8 PM
|
||||
* **Location**: Boelter Hall 4283
|
||||
|
||||
14
content/events/foss-projects.md
Normal file
14
content/events/foss-projects.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "LUG FOSS Projects"
|
||||
date: 2025-10-19
|
||||
tags: [events]
|
||||
author: LUG Board
|
||||
---
|
||||
|
||||
We are having a meeting on Thursday where we go over the different free and open
|
||||
source projects LUG is planning to create. Come visit if you're interested in
|
||||
working on a software project with your fellow LUG members.
|
||||
|
||||
* Date: 2025-10-23, Thursday
|
||||
* Time: 6-8 PM
|
||||
* Location: Boelter Hall 4283
|
||||
44
content/events/installfest-f25.md
Normal file
44
content/events/installfest-f25.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: "Fall 2025 Installfest"
|
||||
date: 2025-10-02
|
||||
tags: [events, installfests]
|
||||
author: LUG Board
|
||||
---
|
||||
|
||||
Free Pizza will be provided!!!
|
||||
|
||||
The Linux Users Group (LUG) at UCLA invites you to attend the quarterly Linux
|
||||
Installfest! Please fill out the [RSVP form](https://forms.gle/Y13NJVaecBGSsP5X7)
|
||||
to indicate your pizza preferences.
|
||||
|
||||
* Date: 2024-10-10 (Friday of Week 2)
|
||||
* Time: 6-9 PM
|
||||
* Location: Engineering IV, Maxwell Room (57-124)
|
||||
* RSVP: [link](https://forms.gle/Y13NJVaecBGSsP5X7)
|
||||
|
||||
## General Info
|
||||
|
||||
LUG hosts a quarterly installfest on Friday of the 2nd week. We will start by
|
||||
giving a presentation on Linux to get newcomers up to speed. Then, attendees
|
||||
will be provided a USB drive and guided in dual booting their computers with
|
||||
Linux (most likely Ubuntu, Debian, or Linux Mint). However, you are welcome to
|
||||
bring your own flash drives and install any distro of your choice. Or if you
|
||||
don't feel comfortable with the possibility of losing data, you can set
|
||||
up a Virtual Machine instead.
|
||||
|
||||
The officers will also be doing a show-and-tell of their own hardware which
|
||||
they have installed Linux on. Experienced users are also encouraged to show off
|
||||
their own setups.
|
||||
|
||||
At the end, we'll have a SuperTuxKart LAN party with our freshly installed
|
||||
Linux machines and do a giveaway of some Dell Optiplexes.
|
||||
|
||||
## Past Installfests
|
||||
|
||||
You can view pictures from past installfests [here](https://linux.ucla.edu/zenphoto/).
|
||||
|
||||
## Note on M1 and M2 Macs
|
||||
|
||||
Due to their custom Apple silicon, the only Linux distro which works on M1/M2/M3
|
||||
Macs is the experimental Asahi Linux. You also have the option of setting up a
|
||||
Virtual Machine to run Linux so feel free to come and chat with us!
|
||||
13
content/events/spooky-e-waste-tour.md
Normal file
13
content/events/spooky-e-waste-tour.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: "Spooky E-Waste Tour 👻🎃"
|
||||
date: 2025-10-29
|
||||
tags: [events]
|
||||
author: LUG Board
|
||||
---
|
||||
|
||||
It's like trick-or-treating except the goodies aren't edible. Costumes (or painted nails 💅) are highly encouraged. Meet by the compass statue at the fifth floor Boelter entrance.
|
||||
|
||||
* **Date**: 2025-10-31
|
||||
* **Time**: 8-10 PM
|
||||
* **Location**: Boelter Hall Main Entrance
|
||||
|
||||
13
content/events/surprise-server-room-tour.md
Normal file
13
content/events/surprise-server-room-tour.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: "Surprise Server Room Tour 🎉"
|
||||
date: 2025-11-20
|
||||
tags: [events]
|
||||
author: LUG Board
|
||||
---
|
||||
|
||||
We're inviting members of LUG for an exclusive look at the Boelter Hall server room, where we have our own rack and keep some spare e-waste as well.
|
||||
|
||||
* **Date**: 2025-11-20
|
||||
* **Time**: 6-7 PM
|
||||
* **Location**: Boelter Hall 3292
|
||||
|
||||
@@ -8,12 +8,11 @@ Shared inbox: [board@linux.ucla.edu](mailto:board@linux.ucla.edu)
|
||||
|
||||
| Name | Position | Contact |
|
||||
| --------------------- | ------------------------------- | ----------------------- |
|
||||
| James Shiffer | Co-President | jshiffer@linux.ucla.edu |
|
||||
| Lawrence Liu | Co-President | |
|
||||
| Ethan Cheng | Vice President | ethan@linux.ucla.edu |
|
||||
| Matthew Risley | Vice President | mrisley@linux.ucla.edu |
|
||||
| Evan Aceves | Vice President | eaceves@linux.ucla.edu |
|
||||
| Mustafa E. | Officer | mstf@linux.ucla.edu |
|
||||
| Ethan Cheng | President | ethan@linux.ucla.edu |
|
||||
| James Shiffer | External Vice President | jshiffer@linux.ucla.edu |
|
||||
| Alexander Chang | Internal Vice President | ahjc@linux.ucla.edu |
|
||||
| Evan Aceves | Marketing Vice President | eaceves@linux.ucla.edu |
|
||||
| Max Mitterberger | Treasurer | mmitterberger@linux.ucla.edu |
|
||||
| Professor Paul Eggert | Faculty Advisor (on sabbatical) | eggert@cs.ucla.edu |
|
||||
|
||||
## Join Us
|
||||
|
||||
176
create_event.sh
Executable file
176
create_event.sh
Executable file
@@ -0,0 +1,176 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to prompt for input with a default value
|
||||
prompt() {
|
||||
local prompt_text="$1"
|
||||
local default_val="$2"
|
||||
local var_name="$3"
|
||||
|
||||
if [ -n "$default_val" ]; then
|
||||
read -p "$prompt_text [$default_val]: " input
|
||||
eval $var_name="\${input:-$default_val}"
|
||||
else
|
||||
read -p "$prompt_text: " input
|
||||
eval $var_name="\$input"
|
||||
fi
|
||||
}
|
||||
|
||||
# --- 1. Gather Event Details ---
|
||||
echo "--- New Event Wizard ---"
|
||||
prompt "Event Name" "" EVENT_NAME
|
||||
prompt "Date (YYYY-MM-DD)" "$(date +%Y-%m-%d)" EVENT_DATE
|
||||
prompt "Time (e.g. 6-9 PM)" "6-9 PM" EVENT_TIME
|
||||
prompt "Location" "Engineering IV, Maxwell Room (57-124)" EVENT_LOCATION
|
||||
prompt "Ping Preference (1: @everyone, 2: @UCLA, 3: None)" "3" PING_CHOICE
|
||||
|
||||
case $PING_CHOICE in
|
||||
1) PING_TEXT="@everyone" ;;
|
||||
2) PING_TEXT="<@&1000205372327481444>" ;; # Assuming @UCLA role ID, replace if known or use generic
|
||||
*) PING_TEXT="" ;;
|
||||
esac
|
||||
|
||||
echo "Enter Description (Markdown supported). Press Ctrl+D on a new line to finish:"
|
||||
EVENT_DESCRIPTION=$(cat)
|
||||
echo "" # Add newline after input
|
||||
|
||||
# Slugify event name for filename
|
||||
SLUG=$(echo "$EVENT_NAME" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z)
|
||||
FILENAME="content/events/${SLUG}.md"
|
||||
|
||||
# --- 2. Generate Hugo Content ---
|
||||
echo "Generating $FILENAME..."
|
||||
|
||||
cat <<EOF > "$FILENAME"
|
||||
---
|
||||
title: "$EVENT_NAME"
|
||||
date: $(date +%Y-%m-%d)
|
||||
tags: [events]
|
||||
author: LUG Board
|
||||
---
|
||||
|
||||
$EVENT_DESCRIPTION
|
||||
|
||||
* **Date**: $EVENT_DATE
|
||||
* **Time**: $EVENT_TIME
|
||||
* **Location**: $EVENT_LOCATION
|
||||
|
||||
EOF
|
||||
|
||||
echo "Hugo page created."
|
||||
|
||||
# --- 3. Discord Notification (Webhook) ---
|
||||
# Check for env var or prompt
|
||||
if [ -z "$DISCORD_WEBHOOK_URL" ]; then
|
||||
prompt "Enter Discord Webhook URL (leave empty to skip)" "" DISCORD_WEBHOOK_URL
|
||||
fi
|
||||
|
||||
if [ -n "$DISCORD_WEBHOOK_URL" ]; then
|
||||
echo "Sending Discord announcement..."
|
||||
|
||||
# Construct JSON payload
|
||||
# Note: Using jq would be safer, but manual construction avoids dependencies if simple
|
||||
# Escaping quotes in description for JSON
|
||||
SAFE_DESC=$(echo "$EVENT_DESCRIPTION" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
|
||||
|
||||
JSON_PAYLOAD=$(cat <<EOF
|
||||
{
|
||||
"content": "$PING_TEXT **New Event: $EVENT_NAME**",
|
||||
"embeds": [
|
||||
{
|
||||
"title": "$EVENT_NAME",
|
||||
"description": "$SAFE_DESC",
|
||||
"color": 5814783,
|
||||
"fields": [
|
||||
{
|
||||
"name": "When",
|
||||
"value": "$EVENT_DATE @ $EVENT_TIME",
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "Where",
|
||||
"value": "$EVENT_LOCATION",
|
||||
"inline": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
)
|
||||
curl -H "Content-Type: application/json" -d "$JSON_PAYLOAD" "$DISCORD_WEBHOOK_URL"
|
||||
echo -e "\nAnnouncement sent."
|
||||
else
|
||||
echo "Skipping Discord announcement."
|
||||
fi
|
||||
|
||||
# --- 4. Discord Calendar Event ---
|
||||
# Requires Bot Token and Guild ID
|
||||
if [ -z "$DISCORD_BOT_TOKEN" ]; then
|
||||
prompt "Enter Discord Bot Token (leave empty to skip calendar)" "" DISCORD_BOT_TOKEN
|
||||
fi
|
||||
if [ -z "$DISCORD_GUILD_ID" ] && [ -n "$DISCORD_BOT_TOKEN" ]; then
|
||||
prompt "Enter Discord Guild ID" "" DISCORD_GUILD_ID
|
||||
fi
|
||||
|
||||
if [ -n "$DISCORD_BOT_TOKEN" ] && [ -n "$DISCORD_GUILD_ID" ]; then
|
||||
echo "Creating Discord Calendar Event..."
|
||||
|
||||
# Need ISO8601 timestamp for start_time.
|
||||
# Attempt to parse date and time. This is tricky in bash without strict format.
|
||||
# Assuming user input follows YYYY-MM-DD and roughly HH:MM format or we just use the date at a default time if parsing fails?
|
||||
# Let's try to be smart: Date + Start time.
|
||||
# Extract start time from "6-9 PM" -> "18:00"
|
||||
# This is a simplification. For robust parsing, might need python or date utils.
|
||||
|
||||
# Extract start hour and minute
|
||||
START_HOUR=$(echo "$EVENT_TIME" | grep -oE '^[0-9]+' | head -1)
|
||||
START_MINUTE=$(echo "$EVENT_TIME" | grep -oE ':[0-9]+' | sed 's/://' | head -1)
|
||||
START_MINUTE=${START_MINUTE:-00}
|
||||
|
||||
if [[ "$EVENT_TIME" == *"PM"* ]] && [ "$START_HOUR" -lt 12 ]; then
|
||||
START_HOUR=$((START_HOUR + 12))
|
||||
fi
|
||||
|
||||
# Construct ISO string with timezone using date command
|
||||
START_DATE_STR="$EVENT_DATE $START_HOUR:$START_MINUTE"
|
||||
START_ISO=$(date -d "$START_DATE_STR" --iso-8601=seconds)
|
||||
|
||||
# End time: Start + 2 hours
|
||||
# Use START_ISO as base to ensure correct calculation
|
||||
END_ISO=$(date -d "$START_ISO + 2 hours" --iso-8601=seconds)
|
||||
|
||||
# Location Type 3 is "External"
|
||||
CAL_PAYLOAD=$(cat <<EOF
|
||||
{
|
||||
"name": "$EVENT_NAME",
|
||||
"description": "$SAFE_DESC",
|
||||
"scheduled_start_time": "$START_ISO",
|
||||
"scheduled_end_time": "$END_ISO",
|
||||
"privacy_level": 2,
|
||||
"entity_type": 3,
|
||||
"entity_metadata": {
|
||||
"location": "$EVENT_LOCATION"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)
|
||||
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "https://discord.com/api/v10/guilds/$DISCORD_GUILD_ID/scheduled-events" \
|
||||
-H "Authorization: Bot $DISCORD_BOT_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$CAL_PAYLOAD")
|
||||
|
||||
HTTP_BODY=$(echo "$RESPONSE" | head -n -1)
|
||||
HTTP_STATUS=$(echo "$RESPONSE" | tail -n 1)
|
||||
|
||||
if [[ "$HTTP_STATUS" =~ ^2 ]]; then
|
||||
echo -e "\nCalendar event created."
|
||||
else
|
||||
echo -e "\nFailed to create calendar event. HTTP $HTTP_STATUS"
|
||||
echo "Response: $HTTP_BODY"
|
||||
echo "Payload: $CAL_PAYLOAD"
|
||||
fi
|
||||
else
|
||||
echo "Skipping Calendar event."
|
||||
fi
|
||||
|
||||
echo "Done!"
|
||||
@@ -12,6 +12,7 @@
|
||||
66% {color: #4545e8; }
|
||||
}
|
||||
</style>
|
||||
<!--
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/events">
|
||||
@@ -24,6 +25,7 @@
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
-->
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
var nextThursday = new Date(Date.now() + (((4 - new Date().getDay() + 7) % 7) * 86400000));
|
||||
|
||||
Reference in New Issue
Block a user