Log in

No account? Create an account
Not A Livejournal
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in 偉民's LiveJournal:

[ << Previous 20 ]
Saturday, August 29th, 2020
2:17 pm

Livejournal used to have a feature called "Phone Post," where you could leave an audio recording as an entry by calling a number on your phone. I think. I only barely remember this feature.

I have been trying to organize the tens of thousands of media files on my big storage, and one of my automated processes tries to cluster them by information in id3 tags. One of the clusters exposed by this is one with genre "speech" and tag unknown0: "LiveJournal.com". The artist tags are livejournal names and the filename is the date posted. They're all between 2003-2004 and have that old-timey phone audio quality. A little ahead of its time, I suppose.

Current Mood: Ok


Wednesday, August 26th, 2020
6:09 pm
LJ has stories too, now

Every publishing medium expands until it has stories. Those which can not do so are replaced by others which can. Prepare to post stories in your email and chats.

Every publishing medium expands until it has stories. Those which can not do so are replaced by others which can. Prepare to post stories in your email and chats.


Saturday, August 22nd, 2020
11:31 pm

This website would be all right except that parts of it don't work outside of Chrome. Maybe it's all my content blockers. Maybe it's just really focused on the needs of Chrome users. In any case, this was once a very successful social media site. Good job, Brad.


Tuesday, August 25th, 2015
12:28 am
Kids these days with their multi-touch trackpads...
Today, I spent five minutes explaining to my dev team what I meant by "computer mouse with a rubber ball."

"A trackball?" "No."
"A mouse with a trackball in the top?" "No."
"An apple mighty mouse?" "No."



Saturday, December 28th, 2013
3:30 am
Guys, I still care.
But wow is my userinfo and icon out-of-date! It's been so long. I aged. I've been surgically, cosmetically altered. I gained and lost henges of stone. In and out of love. Cycled from pale to tan and back. And for what? For fun, mostly. I did it all for the fun.

Well, it's probably going to be a while before the ride is over, so what's next?


Tuesday, April 23rd, 2013
7:31 pm

I love this community! That nobody posts in. Except me.

Posted via LiveJournal app for iPhone.


Friday, July 13th, 2012
9:36 am
Approximately 3,000 degrees Fahrenheit
I didn't think welding would be so funny. Maybe it's only funny to me. There are 8 people in my class, and we were all standing around with oxyacetylene torches on Monday, learning how to ignite them. The first step is to turn on the acetylene and light it. Acetylene, when burning slowly, lets off little floating balls of carbon, dark black, which are buoyed by the heat. We had the room ventilators switched off so that we could hear the instructions, so these little balls accumulated in the spacious volume of the welding shop, until it was absolutely filled with little floating black dots. It was like a demo effect. I could not stop grinning at it.

On top of that, we're all supposed to be wearing long sleeved natural fibers, to protect our arms from high temperature sparks and burns from the UV rays that arc welding emits. Everyone else was in light summery colors. Of course, I'm wearing a black turtleneck. (I have years of experience wearing this kind of thing in Hawaiian weather.) Eventually all those little black dots start coming back down and landing on absolutely everything. They're carbon, so they smudge into little grey smears all over everyone's clothing. We all look filthy! Except me, because I'm wearing black. Ha ha!

My first project is a little cube. I have already cut out all its faces on the powerful but somewhat imprecise hydraulic shear in the metal shop. Its geometry is going to be... a little wonky. Arty, I'll say.


Thursday, August 25th, 2011
12:27 am
I see a few posts drawing a contrast between the facebook name policy and the Google+ one. I guess they don't seem that different to me, since my facebook account was banned in mid-2007 for not using my real (probably "real to the government") name. It's still banned.

7/12/2007 3:37 PM:


Fake names are a violation of our Terms of Use. Facebook requires users
to provide their full first and last names (i.e. no initials).
Impersonating anyone or anything is prohibited. Nicknames are only
permitted if they are a variation of your first or last name. Also,
nicknames cannot be used in replacement of your first or last name. The
accepted format is as follows: FirstName 'Nickname' LastName.

If you would like to use this profile again, just get back to us with
your real name and we will reactivate the account for you.

Thanks for your understanding,

Customer Support Representative


Wednesday, August 24th, 2011
3:12 am

Since I am only thinking about coding (and travel arrangements) on the run-up to a demo event, I always forget that I'm about to spend time with some of the best people ever. Afterwards, I try to make a note about that... note to self: demoparties have best people ever.

I ran out of time and did not enter the compo at Evoke. One reason is: I developed on ATI hardware this time, and I have some kind of weird nvidia bug I can't figure out. It doesn't seem like I'm doing anything wrong... though I have been at fault for the overwhelming majority of bugs so far.

The bug is this: I have a fragment shader which is used to displace screen pixels. The screen pixels are read from a 2D texture, the displacement direction and amount is read from a 3D texture (and is animated by changing the depth coordinate in that texture). The part in question is like this:

#version 330 core
// FS_Break.frag
uniform sampler2D tx1; // a screen sized texture which is a capture of the screen color buffer
uniform sampler3D tx2; // a 3D texture containing displacement data
uniform float tx2z;    // how deep in the 3D texture to read from
uniform float amount;  // severity of effect. 0.0 = no effect.

layout(location = 0, index = 0) out vec4 Color;

in vec2 ouv1; // interpolated texture coordinate 

void main() {
    Color=texture(tx1,ouv1 + vec2(amount * texture(tx2, vec3(ouv1, tx2z)).rg - vec2(0.5,0.5) ) );
Works as expected on ATI. On my nvidia machine, it results in an empty screen. Messing around with it shows some very weird properties:
// correctly displays the screen sample
Color= texture(tx1, ouv1);

// correctly displays the attenuated displacement texture
Color = amount * texture(tx2, vec3(ouv1, tx2z));

// this is used in some more variations below..
vec4 nvbug = texture(tx2, vec3(ouv1, tx2z));


// blank screen.
Color= texture(tx1, ouv1 + amount * nvbug.rg * 0.0000000001);

// not blank.
Color= texture(tx1, ouv1 + amount * nvbug.rg * 0.000000000);

// this is the best one:
// replace either branch with Color = vec4(1.0,1.0,1.0,1.0) and it works as written
// but if both texture values are used, even if never combined or used at the same time, blank!!!
if(amount > 0.4) {
	Color= texture(tx1, ouv1);
//	Color = vec4(1.0,1.0,1.0,1.0);
} else {
	Color = nvbug;
//	Color = vec4(1.0,1.0,1.0,1.0);

So... that's driving me nuts. I thought maybe my textures were two different formats and that ATI was doing some pixel format conversion that NV wasn't, but that seems unlikely. Clearly the driver is optimizing out one or the other texture reference when it computes that it is unused. But what's wrong?? I guess I will go over my texture parameters one at a time tomorrow.


Sunday, August 7th, 2011
3:54 pm
We are closing in on Evoke. Or, as I like to call it, "Next up: 64K PC Intro".

I don't think I've discussed much what I have learned from participating in demo compos, but it's different then what you might think. The technological hurdles are considerable, but they are largely discretionary. You get as much challenge as you sign up for.

The part that this exercises most, for me, is the ability to confront fear. The coding pressure as we finish out the last week of development before the compo is intense, but during this time I must focus, think, and complete the code. Looming over me at all times is fear. Fear of failure, of ridicule, but mostly of my own mediocrity. It is this spectre that I confront when competing in the demoscene. I don't know what to make, but I have to make it. I don't have any artistic taste, but I must make aesthetic choices. When there are other competitors, they are often the best in the world. Can I still operate in the face of certain failure?

Well, that's what I'm practicing doing. They say that willpower follows a strength model (Baumeister, R. F. Vohs, K. D. Tice, D. M. 2007). The way to build it up is to exercise it.

This has been my ten minute break, back to code.


Monday, April 18th, 2011
12:42 am
I spent the whole day writing graphics code and all I have to show for it is this teapot.
Which has holes in it all over the place.

It is a little big, huh? Well I spent all day on it. Enjoy my stupid utah teapot.


Sunday, April 3rd, 2011
11:47 pm
I'm not an efficiency expert or anything but... I'm having some doubts that this internet thing is increasing our productivity at all!

Well, check for updates tomorrow! And every hour after that!


Tuesday, February 22nd, 2011
9:29 pm
"Do you have time to talk to me?"
"Actually I'm a little bit of a hurry. I don't. Sorry."
"What's your favorite candy?"
"I don't know. Kit kat?"
"Let's say you have 1440 kit kats."
"Would you give me 5?"
"Of course."
"Well you have 1440 minutes in your day, and I'm just asking for 5."
"This was a very special kit kat. Bye."

Thanks, clipboard holding volunteer, for the fallacious logic.
If you had 1440 kit kats, and 480 of those disappear while you sleep, and 480 of them are taken by work, and the remaining 480 kit kats must be allocated to everything else in your life that is worth a kit kat, and once they are gone, you can never get any more kit kats... would you give some incoherent stranger with an agenda 5 of them?


Sunday, February 20th, 2011
6:37 am
Ok, demoscene talk given! I'll post a video when I get one (They recorded it. We'll see if they decide to splice in my slides or what. I'll do it, if not.) It went smoothly, though the speakers they dug up for me were of the humorously tiny variety that usually go with computers. The Q+A went on for a little longer than expected, half an hour.

One interesting thing the designers came up with was an idea for a "steampunk demo" (though they did not use those words), wherein video effects were created with a mechanical TV for the rasterizing and display device. Yes, I learned about a new thing: "Nipkow disk."

Located two lurking scene enthusiasts, contact infos exchanged.

Now I can stop stressing about talking and concentrate once more on the production for Evoke.


Sunday, January 30th, 2011
11:10 pm
I'm going to give a little talk about demos and the demoscene a couple weeks from Thursday. I just finished assembling a highlight reel for it. I'm a little anxious. Eek.


Monday, January 17th, 2011
1:17 pm
I needed a more complicated mesh than I knew how to make in Wings. I decided to learn how to use Blender (inspired by Zagupi/HBC's HBC-00008: How to use Blender).

Blender's UI is not exactly intuitive. You definitely need to watch a tutorial video in order to get started. The effective workflow is centered around keyboard use. Reading the docs is super boring, so I watched the very first tutorial to find out what the main mouse and UI structure were, then switched to a tutorial about making something, and followed along haltingly, pausing whenever I needed to find a function. I later discovered the tutorial was post-2.5 and I was using the "stable" 2.49, right before a major UI overhaul. Oh well, I learned a lot by looking around for those nonexistent functions.

Also, it's nice to see someone else's logical structure imposed on 3D rendering. It helps mentally cluster the kinds of things that wind up being done in textures vs. what winds up as a post-process effect, or a lighting effect, especially you can push a lot of stuff from one to the other if you're trying to do something specific.

Blender is an open source product, but it is much much nicer and more stable than the open source things I'm accustomed to. It's as if it were a commercial product that had been worked on for years by dedicated professionals and then was open sourced when funding ran out, but the original lead continues to work on it. (Ha ha, yes, I already found out that was indeed the case.)


Thursday, January 6th, 2011
7:52 am
Fixed my blue oval problem. Wasn't a bug in my new effect, was a bug in the rest of the scene. Doops. Crap, times up.


Wednesday, January 5th, 2011
7:33 am
More demo code! A new effect: Today it just fills my screen with a big blue oval, because of a bug. What's the bug? If I knew that, my screen wouldn't have an oval on it.

Graphics bugs are funny, sight gags by definition. You spend an hour or so typing what looks like organized functions, finally run it and then... huge oval.

Ok, time to get ready to go to work.

Current Mood: 8


Tuesday, January 4th, 2011
5:36 am
Made it so my glow isn't squished into the aspect of the display. Derp.
Fixed duplicates of resolutions in the resolution selector.
Made some new effect code, refactored it, refactored it again. Felt kind of good about it.
Realized that coder colors look like someone barfed a box of crayons all over the screen. Worked on a nicer palette.

I'm on a browsing diet for January, so I can't stay long. I'm logging all my internet usage.. it's mostly for looking things up, though I'm using books and telephone calls where possible.

I feel like there was something else I wanted to write up here. Oh well, time's up.


Friday, December 31st, 2010
3:11 am
VS projects open while democoding:

1) Last year's 64k demo
2) Current 64k project
3) A 1k project (Wow... not a whole lot fits in there)
4) Auld's OpenGL 1k src
5) IQ's project with frameworks for every kind of small production
6) Martti's demo from last Evoke

I don't copy code wholesale, and it's not very portable anyway. I just want to know how different people have solved the problems I'm looking at. Some of this stuff is only documented by code that people have written.

Also, after I started learning Scala, my code sprouted loop-running functions that take function pointer parameters. It's all like,

void forEachDevice( void(* pFunc)(void *, PDISPLAY_DEVICE), void *pFuncArg )

Which looks insane and retarded. But at least I didn't have to write that device enumeration loop twice with different stuff in the middle! Okay okay I'll rewrite it as objects. sheesh



[ << Previous 20 ]
Entertain. Yourself.   About LiveJournal.com