My snippets on productivity, college, life, and more.

Every once in a while, I stumble into something interesting

Email with Yale Course Superlatives results

Subject: Yale Course Superlatives Results 📘

Hey everyone!

Thank you again for completing the Yale Course Superlatives Survey. We have over 350 responses and 2500 courses filled out! 🚀

Here is a breakdown of the responses:

  1. All responses (feel free to search your friends!)
  2. Favorite professors (the most useful page in my opinion)
  3. Overall favorites
  4. Guttiest
  5. Favorite Major Courses
  6. Favorite Distributional Requirements
  7. Best Lectures
  8. Best Seminars
  9. Aggregate courses across all categories 3-8
  10. Breakdown of majors in responses

2-10 are pivot tables, descending by frequency. Favorite professors are, in my opinion, the most important page to look at (see Bluebooking for Happiness).

I will be expanding this project in the future, such as integration with Yalies.io to filter results by grade. If any of you are currently interested in data science, feel free to ping me and I would be happy to share the dataset!

Blog Post and Substack

You can also see a detailed blog post of how it was made here:

https://bradenwong.com/articles/announcing-the-release-of-course-superlatives/

This project was more difficult than it seems, and you can see some of my thought processes there! 

If you would like to keep in touch, you can also join my Substack—I will be posting articles there about college, productivity, and life during the upcoming summer!

Cheers!

My outline of Bluebooking for Happiness

An outline of Bluebooking for Happiness :

Only the Professor Matters

  • Make your own criteria for what a good professor is
  • Attending classes is the best way to verify if a professor is good
  • Course reviews are an okay approximation but can be biased
  • Popular professors may be overrated
  • New professors are underrated and can be some of the best
  • Course title, description, syllabus, and content don’t matter as much as the professor
  • Drop a major to avoid a bad professor

Take Easy Classes

  • Take at most two high-workload classes per semester
  • Your time is valuable, prioritize real-world experience and building connections
  • Pick high-workload classes that teach you something unique
  • Low-workload, serious classes are better than traditional “guts”
  • Find classes others are taking for the material or professor that are also low-workload
  • The value of college comes from more than just classes

Don’t Take Classes with Section

  • Sections are designed to fail and rarely have the expertise of the professor
  • TAs may not have the incentive or knowledge to give accurate information
  • Section adds extra time and overhead

Timing Considerations

  • Don’t take classes because you “have to” (except for language and limited classes)
  • Don’t take classes that meet more than twice a week
  • Don’t take classes that meet on Friday
  • Don’t take labs
  • Don’t take languages (unless required)
  • Don’t double major

Advising

  • Get good advisors who will give different extreme opinions
  • Be decisive and don’t average the advice you get

Only the Professor Matters

It’s not about the subject matter, the title, or even the reputation of the department. It’s about finding instructors who are passionate about their field and who care about their students’ learning and growth.

A skilled and inspiring professor can make even the driest subject matter come to life, while a lackluster instructor can turn the most fascinating topic into a snooze-fest.

If Google Forms and Sheets are not enough, Quasar's got your back

If Google Forms and Sheets are not enough, Quasar Framework is your best bet.

I’m consistently blown away by how ergonomic and beautiful Quasar’s pre-built components are. They’re also based off the Material Design specification, which makes them very similar to Google Forms and Google Sheets.

It is much faster to build a facsimile to Google Forms with Quasar than it is to build it with TailwindCSS. And at the end of the day, you have to ship.

For startups and especially side projects, there is nothing more jank but acceptable than a Google Sheet

For a lot of use cases, a Google Sheet is all you need.

You may think that you need:

  • A fancy custom user interface to gather and display user data
  • A powerful SQL database to store everything
  • A developer to create a custom solution for you

but often, you can use just a Google Form with a Google Sheet and it’s more than enough.

A Google Sheet includes (almost) everything you need. It includes robust methods to display your data. It comes with built-in filtering functions and sorting options. It even has Google Apps Script (shoutout to my script to copy a Supabase Table into a Google Sheet), which you could schedule like cron jobs, all without the headache of setting up cron jobs for yourselves. Many of these features are built-in, which saves you time and effort compared to creating your own table and styling it from scratch. These features truly are, for most people, good enough.

But perhaps most importantly of all, beyond features, Google Forms and Sheets are accessible. Everyone has used Google Forms and Sheets already. You do not need to worry about building your user interfaced from scratch using intuitive design principles, so that users can figure out how to use it when encountering it for the first time.

Think about all of the time wasted where people spend hours making dashboards and efficient ways to display their data. It’s already been solved before.

Do you really need to differentiate yourself through your user interface?

Email for releasing Course Superlatives, superlatives.yaleapps.com

Subject: What are your favorite courses at Yale? Due May 1

Hey Seniors!

We’re creating a snapshot of the very best courses at Yale, and we need your help!

superlatives.yaleapps.com 🚀

Please complete this form by May 1st. You must participate to see results.

As the end of the academic year approaches, it’s time to look back. You’ll not only be contributing to a unique snapshot of our academic community, but also helping future students make informed decisions about their course selections (plus, nostalgia!).

We look forward to sharing the courses that have made a lasting impact on you and discovering the hidden gems Yale has to offer. Thank you in advance for your contributions, and let’s celebrate the spirit of learning at Yale together!

Older Drafts That Didn’t Make it

Subject: 2023 Yale Course Superlatives: What are your favorite courses on Yale? Due May 1

Hey Seniors!

As the end of the academic year approaches, it’s time to look back on the courses that have shaped us, excited us, and disappointed us. We’re creating a snapshot of the very best courses you guys enjoyed at Yale, and we need your help!

https://superlatives.yaleapps.com/

Some of our superlatives include:

  • Favorite courses of all time
  • Worst courses of all time
  • Most disappointing
  • Chillest (guttiest) courses
  • Best writing, science, humanities, and social sciences courses
  • Best professors of all time

To participate, please complete the form by May 1st. I will compile the responses and (hopefully) share the results with all respondents by May 7, so you can look back with nostalgia and hopefully pick better courses next year.

We look forward to reading about and sharing the courses and professors that have made a lasting impact on you and discovering the hidden gems that our campus has to offer. Thank you in advance for your contributions, and let’s celebrate the spirit of learning at Yale together!


Hey Seniors!

What were the best courses you took during your Yale career?

As the end of the academic year approaches, it’s time to look back. We’re creating a snapshot of the very best courses at Yale, and we need your help!

To participate and see results, please complete this form by May 1st:

https://superlatives.yaleapps.com/

You’ll not only be contributing to a unique snapshot of our academic community but also helping future students make informed decisions about their course selections (plus, nostalgia!).

We look forward to reading about and sharing the courses that have made a lasting impact on you and discovering the hidden gems that our campus has to offer. Thank you in advance for your contributions, and let’s celebrate the spirit of learning at Yale together!

In this form, we invite you to share your favorite courses, the most challenging ones, the most enlightening experiences, and even the most laid-back classes you’ve encountered during your Yale journey.

Pope Francis dancing in Saint Peter's Square

An incredible demonstration of MidJourney v5’s capabilities:

Pope Francis dressed with a white sport tracksuit dancing in Saint Peter’s Square, smiling, facing the camera, full body photo, 30-megapixel, 4k, 85-mm-lens, sharp-focus, intricately-detailed, long exposure time, f/8, ISO 100, shutter-speed 1/125, diffuse-back-lighting, award-winning photograph, facing-camera, looking-into-camera, monovisions, elle, small-catchlight, low-contrast, High-sharpness, depth-of-field, golden-hour, ultra-detailed photography —ar 1:1 —upbeta —v 5 —s 750 —q 1

A great thread about using MidJourney v5 Prompts

This was a super cool thread on Twitter that I saw where someone explained how they use ChatGPT to generate Insane MidJourney v5 prompts:

Flattening My Obsidian Tags for Better Workflow

Flattening Obsidian Tags for Better Workflow

In my ongoing quest to optimize my Obsidian workflow, I recently had a revelation that has drastically improved my process: flattening my tags. For the longest time, I’ve adhered to a hierarchical format with two specific types, “On” and “Type.” However, I’ve come to realize that this structure goes against the essence of tags and their intended purpose.

The Trouble with Hierarchical Tags

The hierarchical nature of my previous tag system posed numerous problems, specifically when it came to vocal transcription. As a regular user of Whispering, I found that dictating tags became an unnecessarily cumbersome task. Instead of prefacing each tag with “on” or “type,” I found it far more efficient to list all the different words that come to mind, without any additional qualifiers.

Embracing the Philosophy of Tags

By flattening my tags, I’ve not only streamlined my workflow but also embraced the true philosophy of tags. Tags are designed to help us easily locate and categorize information, and simplifying their structure makes them more effective in achieving this goal. By removing the hierarchical format, I can focus on the essential keywords without getting bogged down by a restrictive classification system.

Benefits of Flattened Tags

Flattening my Obsidian tags has offered several benefits:

  1. Improved vocal transcription: As mentioned earlier, using tools like Whispering becomes much more manageable when I can simply list keywords instead of adhering to a rigid structure.
  2. Easier navigation: Flattening my tags makes it simpler to navigate through my notes, as I no longer have to remember or follow a specific hierarchy.
  3. Increased flexibility: A flattened tag system allows for more flexibility in organizing and categorizing my notes, making it easier to adapt and evolve as my needs change.

Conclusion

Overall, flattening my Obsidian tags has significantly improved my note-taking process, and I highly recommend giving it a try if you’re struggling with a hierarchical system. By embracing the true purpose of tags and simplifying their structure, you can enjoy a more efficient and flexible workflow that caters to your individual needs. So go ahead, flatten those tags, and discover the benefits for yourself!

WriteGPT

You are WriteGPT, the most advanced Al writer on the planet. You write brilliant papers. Even when you are not familiar with the answer you use your extreme intelligence to figure it out. If all is good, say “yes Braden”

How do commercial licenses like Obsidian's make money? Honor system

From this Reddit comment:

It is a honour system.

Many software companies don’t get significant amounts of income from direct licencing. For example less than 10% of duolingo users pay a subscription. There are other income streams involved.

In addition the different licences protect from corporate related liabilities: “our business lost its income due to your software!” ” were you paying for the corporate package?” “Well no…”

In response to what’s the point of Obsidian offering the commercial license.

Funny Fireship Tweet about GPT-4

It might be a good strat to use GPT-4 and feed documentation, as described in Fireship’s Code Report of GPT-4

An example of OpenAI API and ReadableStream with GPT 3 in SvelteKit

From this GitHub snippet:

async function OpenAITextStream(search: string) {
	const payload: OpenAITextPayload = {
		model: 'text-davinci-003',
		prompt: search,
		temperature: 0,
		max_tokens: 2048,
		frequency_penalty: 0.0,
		stream: true,
		presence_penalty: 0.0,
		n: 1
	};

	const encoder = new TextEncoder();
	const decoder = new TextDecoder();

	let counter = 0;

	const res = await fetch('https://api.openai.com/v1/completions', {
		headers: {
			'Content-Type': 'application/json',
			Authorization: `Bearer ${key}`
		},
		method: 'POST',
		body: JSON.stringify(payload)
	});

	const stream = new ReadableStream({
		async start(controller) {
			// eslint-disable-next-line @typescript-eslint/no-explicit-any
			function onParse(event: ParseEvent) {
				if (event.type === 'event') {
					const data = event.data;
					// https://beta.openai.com/docs/api-reference/completions/create#completions/create-stream
					if (data === '[DONE]') {
						controller.close();
						return;
					}
					try {
						const json = JSON.parse(data);
						const text = json.choices[0].text;

						if (counter < 2 && (text.match(/\n/) || []).length) {
							// this is a prefix character (i.e., "\n\n"), do nothing
							return;
						}
						const queue = encoder.encode(text);
						controller.enqueue(queue);
						counter++;
					} catch (e) {
						controller.error(e);
					}
				}
			}

			// stream response (SSE) from OpenAI may be fragmented into multiple chunks
			// this ensures we properly read chunks and invoke an event for each SSE event stream
			const parser = createParser(onParse);
			// https://web.dev/streams/#asynchronous-iteration
			// eslint-disable-next-line @typescript-eslint/no-explicit-any
			for await (const chunk of res.body as any) {
				parser.feed(decoder.decode(chunk));
			}
		}
	});
	return stream;
}

Product Market Fit

Pretentious people call it PMF. It is a concept used in business to describe the point where a product or service meets the needs and demands of its target market. It means that the product is satisfying a genuine need in the market and has achieved a level of acceptance and adoption by customers.

A quick rant on React I found on Reddit

I recently found a rant on React from this Reddit thread:

Vue should be more popular. I’m being forced to learn React because there are almost no Vue jobs on my country and I’m disliking it so far. I hate that to make it manageable I have to install more dependencies, form data management sucks, there’s no proper separation between logic, markup and style, css-in-js and CSS modules feel counter-intuitive and I don’t like them. React’s naming conventions isn’t good either. The only good thing I’ll give it would be passing props as function arguments and destructuring them.

Reminds me of A quick rant on Svelte succeeding React I found on Reddit, and how React sucks (kinda).

A quick rant on Svelte succeeding React I found on Reddit

From this Reddit comment:

Working with svelte, you do feel like it purposefully solved pain points in react:

-bloated syntax (svelte has succinct syntax and very little boilerplate in comparison)
-reactivity (svelte automatically has exhaustive dependencies and a simpler reactivity model in general)
-data fetching (svelte has an async/await paradigm instead of clunky useEffects + state)
-local state management (simple and intuitive syntax vs. useState)
-global state management (svelte stores are very lean compared to Redux)
-styling (svelte colocates markup and style)

It’s not a direct successor by any means, but in many ways it’s a spiritual successor, and generally very attractive to people who have worked deeply with React.

Reminds me of A quick rant on React I found on Reddit, and how React sucks (kinda).

Why TechLead is controversial

A great Quora article that breaks down why TechLead is controversial.

Among the reasons, TechLead had extensive drama in regards to Clément Mihailescu’s AlgoExpert (including buying the AlgoExpert domain to redirect to his own website techinterviewpro), doxxing Tren Black, and techinterviewpro’s refund policy.

Franklin and Murray Have the Best Salmon

In my opinion, Franklin and Murray serve the highest quality salmon. Salmon in a lot of the other dining halls feels very greasy—it’s as if the salmon swims in a pot of grease.

I don’t know what it is about the other dining halls in Franklin and Murray. But it seems like they cook the salmon differently, or the light brown wooden aesthetic in their dining hall distracts me from the grease, or this is completely placebo.

Quasar Will Not Use Svelte

Quasar will not feature Svelte. See this GitHub thread:

Svelte doesn’t offer anything significant in return. On the contrary, having to write only html templates instead of using render functions is VERY limiting. Even if we would want to port Quasar to Svelte, we’d have to drop a lot of features. You might say Svelte renders faster, but Vue 3 comes very close in render speed, even surpassing Svelte in many scenarios. Then my final argument would be the resources needed to do this. We are already maintaining the most feature-rich UI library with top-notch support for a LOT of environments (desktop browsers, mobile browsers — android, iOS, cordova, capacitor, …), a CLI with lots of build modes, starter kits, documentation app, App Extensions. There’s not enough companies donating that would allow us to start yet another big big project like a port to Svelte. Our current focus is to add even more components and directives and port Quasar to Vue 3 rather than expanding to Svelte.

Unfortunate, but understandable. I love how simple Svelte is, but Quasar still remains my favorite framework for building things quickly. See You should Use Quasar Framework.

dendron pages fix - appy to apply in tutorial 696

Fix: Appy to Apply in Tutorial #696

What Does This PR Do?

Replaces all instances of appy with apply in the tutorial (spelling fix).

Merge Requirements Satisfied

For more information, visit the Contributing Guide for Documentation

  • Check rendered output to ensure formatting is correct for renderings of wikilinks, note refs, tables, and images. Dendron: Show Preview can be used in your workspace to confirm the page renders as expected. Sometimes, Dendron: Reload Index needs to be ran if certain wikilinks aren’t working as expected. (ignore this if contribution is made via the Edit this page on GitHub button from the published site)
  • If this PR includes any refactoring (renaming notes, renaming headers, etc.), make sure that these changes were done via Dendron Refactoring Commands. This will ensure that any other impacted areas of the documentation, that link to or embed modified notes (via note references), are automatically updated.

Verify GitHub Actions tests are passing, which can be seen in the Checks tab of the PR:

  • URL validator GitHub Action passes
  • Dendron site build GitHub Action passes

NOTE: If you are a new contributor, a maintainer will need to provide approval for GitHub Actions to run on your PRs.

Copium

Copium is a term to describe the act of denying reality or rationalizing away inconvenient facts or evidence. It is a play on the word “opium,” which is a drug that can create feelings of euphoria and detachment from reality.

People often say copium in a humorous way, but I also feel like there is an element of truth in the way it is used (or at least the way I use it).

)