So, I've talked a lot about my seen/unseen features. It's an interesting problem, technically. But it's fairly boring, practically. If you interact or communicate on the Internet, you come across probably a dozen places where this is a "solved" problem. See: email, texting, voicemail, instant messaging (when you click on the window, it's no longer blinks at you), the notifications of missed calls on your phone, etc. The mechanism generally goes like this: something happens, you get a notification, and then the notification goes away, usually never to be seen again.
The idea is, though, that you get notifications in a place where you plan on looking. The problem with idkfa's "notifications" is that you won't always be looking at idkfa. And while there are RSS feeds, they aren't the immediate notifications you might get via other means.
So the question would be: would you want more immediate notifications? By immediate, I mean via email, which I think would be as immediate as I would every want to be yelled at by idkfa.
It would be something like this: you have a set of notification "rules." These rules would be the exact same rules you would use to perform a search (so you could have the same power to do fancy things like you can with the search tool). When a post is made, everyone's rules are checked to see if a match is found to your rule ("Is this post in reply to me?", "Is this post a reply to one of my threads?"). If a match is found, you will be sent an email saying that something happened on idkfa that you might care about.
What do folks think?
People still communicate in forms longer than 140 characters? That's so quaint.
In all seriousness, I get bored at work/airports/elevators/etc often enough that I don't know how often I'd use it. If I worked somewhere with action packed day-in, day-out excitement, it might be nice to get a fist bump from idkfa about topics of interest.
I think I've got something basic working. If you log in, hit "More...", and then Subscriptions, you can see the list of searches you're subscribed to. From there you can view the searches your subscriptions are based off of, as well as delete the subscriptions.
To create a new subscription, find a "search" that you like. You can do this by using any of the shortcuts on your navigation bar that go to a search page (Unread Replies, All Unread, Thread Replies, etc.). From there, next to the read/unread options, you should see a "subscribe" link, that let's you use your search as a subscription.
This means that you can pick and choose which rules you want to be notified with. Don't care to get emails about somebody's posts? Use: -user:kaiden. Don't want to get spammed on the noise coming from the idkfa section? Use: -item:idkfa. Only want to see things you haven't read yet? Use: is:unread.
And, because I'm not just some conjurer of cheap tricks, you shouldn't feel like you need to have one subscription rule that does everything, or that you need to write your rules so they're mutually exclusive. You will only be notified once about each new post (even if more than one rule matches), and then never again.
I should also mention that you will only get notifications if you have entered an email in the user settings area. So if you ever want to globally turn off notifications, simply do away with your email address.
For the paranoid, the email address field supports the "somebody+fromwhere@gmail.com" convention, where emails to "somebody+fromwhere" will be delivered to "somebody," but with the email still tagged with the "+fromwhere." You can use this (at Gmail, at least) to somewhat effectively identify where your email traffic is coming from, provided you tag the address you hand out to other places on the Internet with something relevant.
So, I didn't watch DS9 this evening. Instead I watched Extremely Loud and Incredibly Close (www.imdb.com). Which was pretty alright, I felt.
SPOILERS TO FOLLOW.
However, now I feel like I am a heartless goddamned robot because I wasn't crying throughout the whole thing. The kid was crying. Max von Sydow was crying. Sandra Bullock was crying. It ended up being a heartfelt story about how a community came together and cried because a boy whose father that had died in 9/11 was trying to cope with reality (and grieve in a unique way).
I haven't been to New York. Or lived there. Or known anybody who had lived in or near there that didn't say that it was an angry, unkind place. Which, to some degree, undermined how deeply I could believe the premise and reveal towards the end. And, the mystery behind the key ended up being even more tenuous and random and seemingly miraculous when it turned out the key had nothing to do with anything the father intended.
But I did like some of the messages. That some things just happen, and they cannot be understood, they just simply are. And that, whether we like to admit it or not, our parents probably understand us better as people than we do.
Would recommend. Unless you're a fucking robot.
I know this is trite to say, but the BOOK WAS SO MUCH BETTER.
If you're wondering, they excised about 2/3rds of the book for the film. The novel is written in alternating chapters from a first person perspective from Oskar and letters written by the grandpa to the dad and the kid. The book is about all three Schells, the movie is just a tear jerker about the kid. I didn't think the film was that bad, really, but it wasn't an accurate depiction of the book. The novel is one of my favorites OF ALL TIME EVER.
And now the book is ruined for you by watching the movie. Ugh.
Added an "ok host" list to idkfa's configuration. This is so that "trusted" sites that are linked inside a user's post don't have to have the full hostname appended to them. Example:
This.
vs.
This (reddit.com).
Currently, only idkfa.com and Wikipedia are in there. Not sure how much I trust other sites, but perhaps a few could be added in the future.
If you are interested in the history, I found an online PDF of The Discoverers (www.dillgroup.ucsf.edu). Start reading at page 4 to learn all about how humans have come to mark time as we have.
One problem with the lunar calendar is that it gets out of sync with the seasons with each passing year. The ancient Egyptians first "escaped" the lunar calendar by marking the passage of time with the Nile; which conveniently lined up with a 365 day year... almost.
Since the solar year, of course, is not precisely 365 days, the Egyptian year of 365 days would, over the centuries, become a "wandering year" with each named month gradually occurring in a different season. The discrepancy was so small that it took many years, far longer than any one person's lifetime, for the error to disturb daily life. Each month moved through all the seasons in fourteen hundred and sixty years. Still, this Egyptian calendar served so much better than any other known at the time that it was adopted by Julius Caesar to make his Julian calendar. It survived the Middle Ages and was still used by Copernicus in his planetary tables in the sixteenth century.Also:
The reform of the calendar by Pope Gregory XIII was needed because the year that Julius Caesar had borrowed from the Egyptians, and which had ruled Western civilization since then, was not a precise enough measure of the solar cycle. The actual solar year—the time required for the earth to complete an orbit around the sun—is 365 days, 5 hours, 48 minutes, and 46 seconds. This was some 11 minutes and 14 seconds less than the 365 V\ days in the Egyptian year. As a result, dates on the calendar gradually lost their intended relation to solar events and to the seasons. The crucial date, the vernal equinox, from which Easter was calculated, had been fixed by the First Council of Nicaea at March 21. But the accumulating inaccuracy of the Julian calendar meant that by 1582 the vernal equinox was actually occurring on March 11. Pope Gregory XIII, though notorious now for his public Thanksgiving for the brutal massacre of Protestants in Paris on Saint Bartholomew's Day (1572), was in some matters an energetic reformer. He determined to set the calendar straight. Climaxing a movement for calendar reform which had been developing for at least a century, in 1582 Pope Gregory ordained that October 4 was to be followed by October 15. This meant, too, that in the next year the vernal equinox would occur, as the solar calendar of seasons required, on March 21. In this way the seasonal year was restored to what it had been in 325. The leap years of the old Julian calendar were readjusted. To prevent the accumulation of another n-minute-a-year discrepancy, the Gregorian calendar omitted the leap day from years ending in hundreds, unless they were divisible by 400. This produced the modern calendar by which the West still lives.I'd recommend the book itself (seems you can snag the pdf for free!), as it covers a variety of fascinating topics of human discovery.
A few nice things:
Sometimes when shit gets slow at work, I open the internet and expect it to entertain me. It doesn't because that requires searching or navigating to a place that provides entertaining content. Usually I can never think of some place to go, so I just flip through the half dozen sites that I have bookmarked, see nothing new, and close the window. I repeat that about every 10 minutes as time allows. Nothing happens.
Also, I can't figure out how much to be mad at me, and how much to be mad at her.
She hit my truck again, parked in my 'rents driveway, the exact same way she hit it last time. Both times could have been avoided if I parked all the way down my parents driveway. Also, both times could have been avoided if she actually used her mirrors.
A big group of us from work went to see it in the theater. Scientists favorite thing to do when seeing movies like this is to bitch about how unrealistic it is. We had to reach pretty far to find things to bitch about for this movie, so it gets the Immunologists seal of approval.
Funnily enough the only big sticking point for some of the people I work with was the vaccine discovery to clinical use development time. Apparently we are so jaded with how long it actually takes to get FDA approval for this shit, that no one bothered to think how the normal rules might have to change in order to respond to a high mortality pandemic.
SPDCA: Code design.
So... there are a lot of ways to program. Arguably infinite, if we want to get math-y. But most of the time there are ways, and there are better ways. Programmers call the "bad" ways anti-patterns, meaning that they are patterns or trends in software development that have less-than-desirable eventualities when it comes to the software engineering process.
That said, idkfa has a few anti-patterns, that is, bad choices I made when building idkfa. And that isn't to say that something I've put together is broken or dysfunctional, it's more than if I want to move forward with certain features, choices I've made in the past make it unreasonably difficult to proceed.
Case in point: the "mobile" version of idkfa I tried putting together a while ago. It got so far, only to realize that the amount of work I would be putting into getting a mobile version of the site would be ridiculous. This is because I designed idkfa in the same way that I did back in v2, that is, I had the same code segments that did the underlying logic ("How many posts are in this section? Are you logged in?") also do the code display ("Put this section title next to the post count..."). This meant that for doing something like a mobile display, I would have to create two versions of the same function, and the new version would duplicate both the logic *and* the display, rather than making use of the same logic, and just changing the display slightly.
It's going to take a while, but I think in order to proceed with some of my plans, I have to rewrite a good portion of the "rendering" parts of idkfa. It will mean I will have better code design in the end, and make it easy to eventually write things like mobile versions of the site, or have more powerful choices in display mechanisms (as well as switching between them).
I'll let you know how it goes. More just writing this to collect my thoughts before I start going nuts on the problem.
So, I've started work on this. This applies well to a number of sections on the site, in that there are huge amounts of code that I can save by separating the data generation from the display rendering.
However, there are also a ton of small, tedious sections that barely deserve having to create an entire "renderable" infrastructure. There are also massive sections of code that are intricate, bizarre, and have a strict order of operations applied to them (see: the thread generation sections) that make transfer to this sort of separation of church and state be very...
Anyhow. Progress. But slow. Currently, the discussion item list and latest posts to the left are now implemented as "renderables." Will have to do some crazy things with the header, navigation, and thread displays.
Alright. Losing thought integrity, so I think I'm about done for the night. Got lots done, however. I think I've completed the following sections:
However, the stuff I took care of today was largely "boiler-plate," that is, most of the standard or more simplistic displays, and not the more complex, crazy-go-nuts part that thread/item generation is. I've left that for another day. Maybe tomorrow.
However, my code, now, is much, much cleaner. Take, for instance, my home page, which is now in its entirety the following code segment:
require_once('include/navigation.php'); require_once('include/header.php'); echo layout( array( 'header' => gen_header( "Home" ), 'right' => gen_pinned(), ), array( 'renderer' => 'split_layout' ) );
As part of the new rendering mechanism, I have introduced 'layouts'. As I was already creating a templating system for the smaller portions of the site, it made sense to create something that would give some sort of consistency to how the smaller portions would fit together, and also give me the control to mess with them later on across the entire site (critical, if ever want to have idkfa automatically switch between 'layouts,' say, for switching between a mobile layout and a desktop layout). Now I have an easy and powerful way to generate site contents that leaves the actual HTML code to the underlying renderers (hidden in gen_header and gen_pinned, in this example), and then also having the ability to apply any renderer to join together the components (but also have the renderer be smart enough to build itself if I don't specify certain elements).
It also means that I'm having to go back and see all the other "bad things" I did when I was trying to get things to look okay. I've been able to mop up my mess so far, but if you find something I missed, please let me know.
This... this ended up being crazy. I haven't really slept much this week, partly because I was staying up too late working on this, and partly because my brain wouldn't shut off even when I was trying to sleep.
idkfa now has a rudimentary "theme" functionality. That is, based on its user and global configuration, it can now choose whether to render something with one "theme" or another. Currently, the ability to choose between themes isn't available, but will be in the future.
I'm calling them "themes" because that is what Wordpress calls its "themes," which are different ways to display Wordpress that are not only cosmetic changes but also structural changes to the rendering as well. The "styles" for idkfa version 1 and version 2 were purely cosmetic. but the themes for idkfa v3 are both cosmetic and structural, as depending on your theme you can not only have a different rendering of the widgets (Latest Posts, Discussion Areas, etc.), but you can choose between different layouts for the site entirely.
I still have a bit more testing and clean-up to do, and I plan to switch over to the new theme here soon (maybe this weekend). Stay tuned.
I swapped out the original v3 design with the new one. All users and guests should see it now. If you log in, you have the option to switch back to the original design.
Probably the most drastic change is the disappearance of the Discussion Items box to the left. I have replaced it with the discussion items bar, which gives you a listing of items according to the most recent activity in them. More active items are first in the list, and less active items are later. It is intended for those items that are less active to be "cut off" towards the right. You can still click on the "Discussion Areas" link to see the full listing and descriptions.
Let me know what you think. And also, if you think this is more of a detriment than an improvement, we always have the option to switch back.
So, just to get a feel for what happened on the back-end:
I touched at least 3,152 lines of code (according to a difference calculation between a snapshot taken on the 18th versus one taken last night).
Using the same two snapshots, I have the following lines-of-code counts:
Before:
Language | Files | Blank | Comment | Code |
CSS | 109 | 2886 | 1061 | 15,375 |
PHP | 99 | 2508 | 2707 | 12,130 |
After
Language | Files | Blank | Comment | Code |
CSS | 110 | 3102 | 1061 | 16,074 |
PHP | 135 | 2722 | 2643 | 13,752 |
So, I had an idea for a business model this afternoon.
In my experience, hard drive recovery services are incredibly expensive (at least $1000+, in all instances I've heard quoted). This is because in order to support the full level of recovery service you need to be able to take a hard drive apart, remove the important internals, and place it in other working hardware. This process requires large amounts of time, skilled personnel, and a clean room (so not to destroy data).
However, it isn't always the mechanical portion of a drive that fails. Sometimes a bit is mis-written, or software errors occur, or simply a mistake is made by the user such that they corrupt or destroy their filesystem, or otherwise render their data inaccessible by normal means. In non-mechanical failure situations, there are a ton of programs out there (and many of them free), that perform basic recovery such that one can extract critical files with decent to good accuracy.
However, that these recovery programs exist only fuels my paranoia. I find that unless people are educated and diligent with their data, it is trivial to recover a person's files after they've deleted them. And being educated and diligent on the subject of encryption, filesystems, and data integrity often takes much more time than people are willing to commit, in the same way people are willing to ignore the necessity for good backups until critical failure occurs.
So my idea is this:
If you didn't have to support mechanical failures, you could probably undercut the competition by half. And offering a reliable, convenient way for people to ensure that people don't get at their data when they're done with it would be something I'd be interested in (plus I like the idea of villifying Geek Squad members in a marketing campaign... "What happens to your data after it leaves your hands?")
"When Sysadmins Rules the Earth" (www.johnjosephadams.com) by Cory Doctorow. Excerpt:
It was bedlam. The cages were designed to let two or three sysadmins maneuver around them at a time. Every other inch of cubic space was given over to humming racks of servers and routers and drives. Jammed among them were no fewer than twenty other sysadmins. It was a regular convention of black tee-shirts with inexplicable slogans, bellies overlapping belts with phones and multitools.
Randomly decided to buy a video game. Best Buy employee and his friend hanging out in the game aisle, randomly start talking to me. Seemed like nice folks, asking what I'd heard about the game I was looking at. Small talk turned to a subtle technological pissing match. It ended with the friend telling me that if I had trouble building a computer that I could take it to one of the shops in Anchorage and have it put together for about $75.
I've been too long out of the world. My people no longer recognize me. I have become something... different (www.youtube.com).
Fun read.
I wouldn't say I fault Star Trek for not predicting certain things, the least of which being Facebook. Not only is ST beholden to the motifs and ideas set out in its universe by its predecessors, but as the article author states, a show about people wasting time on Facebook wouldn't be "narratively interesting."
They're right, though. In their quest to maintain the same character archetypes as from TOS and TNG, they seem strangely, eh, inhuman, compared to the other races in the show. People aspire to weird ideals (for being a futuristic, spacefaring race), particularly given the situations they happen to be in. But I guess if you lived in a post-scarcity, Prime Directive-obsessed pan-species federation of planets, you might have hopes, dreams, and hobbies different than our current myopic, narcissistic civilization.
(And I will note that BSG addressed these issues with their characters wholesale. And for that, I will always have much respect.)
I've heard good things about this: http://www.imdb.com/title/tt1319690/ (www.imdb.com)
That is, good things from our Governator. So take that as you will.
Well, I'm going to have that stuck in my head until I get back to Anchorage and we can act that out. Or make a high quality video (www.youtube.com).
Not that we have a torrent of posts, such that you need powerful and expressive tools in order to stay on top of everything, but you have them anyways.
I added a new search term, called "threadreplyto," which lets you see posts that are part of threads created by a particular user, including those that aren't in direct reply to that user. This means that something like "threadreplyto:kaiden,-user:kaiden" will show all posts in reply to threads started by user "kaiden" (minus those written by user "kaiden").
This will be useful to see the progression of threads you've started, even if people's posts aren't in direct reply to you.
I've also added shortcuts to the "More..." section on the Shortcuts bar to demonstrate useful or interesting uses for this new term.