Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
User Journal

Journal Journal: Today's two minutes of hate

Windows Media Player is a flaming pile of shit.

Trying to copy notes from a webinar, and every time I press the pause button in WMP the video keeps playing for another couple of seconds. When you add to this the fact that it takes WMP a couple of seconds before it will start the video again when I'm trying to click on the bar to seek, the tooltip on the bar is "Seek" rather than the time it's going to jump to when I click it, and the fact that there's no x0.5 or x2 or any other speed control but a jerky skiptastic fast forward button, it all adds up to an enormous hassle.

This is turning a task that SHOULD have taken a bit more than 30 minutes (the length of the video) into something I've spent the whole morning on. Good going folks!

After failing to get it to work in MPC or VLC, I managed to get it working in mplayer, but apparently it's only seekable to the nearest 5 minutes or so in there, which probably means that the g2m4 codec put next to no keyframes in the video. But at least mplayer has speed control so I can cover the ground I've already covered quickly, and when I press the space bar it stops immediately.

User Journal

Journal Journal: This thing still on? 4

I'm writing this from Rose Barracks in Vilseck Germany. I'm Stationed here as a Scout in US Army. I'm also married with kid on the way. Those two sentences do a poor job of summarizing the last few years of my life if anybody is still active in this Journal clique I'll let you know the rest.

Miss you guys
-red5

User Journal

Journal Journal: Why the iPad mini works for me

Ever since tablets were first on the horizon (post-iPhone and Kindle but pre-everything else) I always felt that one the size of a paperback would be great. When the iPad came out at 10", I wasn't sure if I'd like that size. My first thought would be a good size for looking at but kind of big to hold. I checked it out (played with friends', had a loaner from work, etc.) and yes, I didn't care for it much. I bought one to do a bit of testing and development on and I figured I'd try to use it and see if I grew to like it. I didn't, and sold it a few months later. (I bought a refurbished iPad 1 shortly after the 2 came out, so it was cheap, and I sold it for not much of a loss -- basically I rented it for like $8 a month, which wasn't bad since it was for work.) It's just big enough that it really takes up some space whenever you set it down, and while it is amazing, overall, that you can get so much power into 1.5 lbs, that's just a bit much to hold and look at for any amount of time.

I ordered the Mini as soon as I could and it arrived this morning and it's great. It's a great size and very light. The screen, while not retina, is still good. We were all happy with our original iPhones before the 4 came along, right? :-) The pixel density of the iPad mini is the same ~160-163 ppi as the original iPhone, the 3G, and the 3GS. I've seen (and love) retina screens but I can live without them.

The bezel on the sides are indeed thin but the whole thing is so light and thin (not referring to the overall thickness -- I mean, not wide, side-to-side) you just let it rest on your fingers (which easily reach about 2/3 the way across the back) and then you just need a bit of pressure from your thumb to hold it in place. It's not like the full-size iPad that you really need a firm grip on so thumb coverage isn't a huge problem.

Speaking of width, thumb typing in portrait is great. On a full-size iPad, the only way I could ever type was by holding it flat with one hand and stabbing the screen with a couple fingers of the other hand, which causes the whole thing to wobble around. When holding the Mini in portrait mode, your thumbs can easily touch each other so it's a cinch to hit every key. (Holding it in landscape, it is again a bit of a stretch.) The split keyboard is a good solution but I'm personally not a fan -- if I were typing a word like 'stew' I might use my right thumb for the 't' -- so I like to have it undocked but merged. (It has 3 modes: docked (stuck to the bottom), floating and split, or floating and merged.) I just hold the tablet in a way that's comfortable and then adjust the keyboard height so it's in just the right spot. My one complaint is I wish Apple would just put a damn number row at the top of the thing, at least in portrait mode. There's plenty of room for one more row of buttons.

The weight is fantastic. The iPad 2 and iPad (4) are right about double the Mini's weight: 0.69 pounds versus 1.33 and 1.44. (0.69 x 2 = 1.38.) The iPhone 4S is 0.306 pounds and the iPhone 5 is 0.247 pounds. So the iPad mini is, in fact, closer in weight to an iPhone than a full-sized iPad. Holding an iPhone in one hand and the Mini in the other isn't drastically different -- you're talking a about a difference of about 3-4oz between those two versus an 8-ounce difference between the Mini and its big brother.

Apple products aren't for everyone. Tablets aren't for everyone. Of the people that like tablets, 7- or 8-inch models aren't for all of them. That's fine with me. I'm just happy to finally have the tablet I want, in the size that I want, at a price that -- while not what I was hoping for -- is not unworkable. :-)

User Journal

Journal Journal: UI WTF 1

UI Elements that only operate when the stars are properly aligned annoy the hell out of me. Especially when they do something I want to do on a regular basis. All those grayed out menu items with no hints as to how to activate them are one thing, at least you know there's something there you can use, but sometimes there's things that make absolutely no sense at all...

If you're using the current Chrome, right click the reload button. OK, now open the developer console (Ctrl+Shift+J). Right click the reload button again. An option to dump cache and reload! Pretty cool, eh?

I don't even know what the fuck inspired me to try right clicking the reload button in the first place...

User Journal

Journal Journal: Get off my Lawn! 6

I feel old, guys. I feel like the old man sysadmin with the Unix Beard and suspenders (which I continually think of as a halloween costume, less and less ironically). My coworkers are all... what would have been slashdotters had they not found digg or reddit, or whatever it was.

These are "kids" who grew up with linux. (They're all 30.) But they don't have the base knowledge that I expect them to have. They only know bash. They mostly know Ubuntu and Red Hat, although the one 'sysadmin' type dude knows virtual machines with Xen, and seems to know what he's doing most of the time.

I figured I'd pick up python, because I ordered a raspberry pi, and it seems that's what all the cool kids are doing. (I get along fine with shell and perl for most of whatever it is I do around here.) The advice I got from one of my coworkers was that I should "uninstall the IDE." IDE? For python? Seriously? It's interpreted, you use a goddamned text editor. Apparently that's one of the 'tips' from "Learning Python the Hard Way." (I'm reading Programming Python on my nook, FWIW. And I'm already yelling at it, as the examples are how to create a database from your filesystem with pickle, because seriously, if you're managing peoples' salaries, you don't want your data in flat files, or necessarily in a readable format to your other employees. But that's my cross to bear.)

When I got home, I started ranting about that to the Benny. Frothing at the mouth kind of ranting like I used to be able to do. Who uses a goddamned IDE for an interpreted language!? There's no "I" for your "DE". When you're writing C, in a complex environment, sure. When you're writing Obj-C for your iPhone app of the year, fine. You have libraries, you have interdependencies, you have reasons to have a debugger and a compiler. Python is interpreted. There's no need for these things.

Goddamned kids these days. In my day, we had emacs and vi, and flamewars about both. There was no IDE for writing shell scripts. There was no IDE for perl. There wasn't even really decent tab completion! We used 'more' instead of 'less'. We knew how to pipe things to awk and grep. We used which instead of locate. And we liked it, damnit!

I'm running OpenNMS on Ubuntu at work, using vi (technically vim) to edit all the xml files and java.properties style files. I don't run KDE, Gnome, or any other desktop on the damned thing. It's a server, for pete's sake. Not that it's lacking RAM or CPU for me to run that, but because I'm old, and old-school. Some of my coworkers (and I use that word loosely, as I'm a department of one) run linux on the desktop ... not because all the tools are there and work, necessarily, but because our IT group doesn't know how to deal with linux, and they can get away with it.

User Journal

Journal Journal: Election Campaign Forecast 7

On the Democrat side, I expect to see more "adjustments" in the jobless rate. On November 7th, we'll be back to 9%.

On the Republican side, I expect to see more refineries have mysterious fires, power outages, and pipeline closures. On November 7th, they'll all suddenly be fixed.

User Journal

Journal Journal: A Shout Out to my Peeps!

Word up to the Shane of Westgate for confirming all my stories.

DG

Lord of the Rings

Journal Journal: [Beloved] A Pretty Song (redux) 2

From the complications of loving you
I think there is no end or return.
No answer, no coming out of it.

Which is the only way to love, isn't it?
This isn't a playground, this is
earth, our heaven, for a while.

Therefore I have given precedence
to all my sudden, sullen, dark moods
that hold you in the center of my world.

And I say to my body: grow thinner still.
And I say to my fingers, type me a pretty song.
And I say to my heart: rave on.

-- Mary Oliver
User Journal

Journal Journal: Site Maintenance Alert! 10

Only the Slashdot frontpage will be accessible tonight between 23:00 and 23:15 EDT while maintenance is occurring.

"... Once maintenance is complete, the Slashdot frontpage will no longer be accessible."

(Interesting. When I preview this, the blockquote tags are ignored. Oh well, I'll add an i tag so it blockquotes anyway)

User Journal

Journal Journal: Joys of Windows #1245 3

Print document, spooler crashes. Document cannot be removed from queue because spooler is not running.

Reboot computer. Document in queue immediately tries to print, spooler crashes.

Solution: Turn off printer, reboot computer. Delete document from queue. Turn on printer.

You'd think that critical infrastructure like the print spooler would be a bit more robust. Or at least be able to detect that it is repeatedly crashing on a single document and ask the user if they'd like to cancel the offending print job. Or make cancelling print jobs not dependent on the spooler service. Also, apparently user permission to manage print queues does not extend to restarting the print service itself.

Aside: You know how when you say a word over and over it starts to sound funny? Apparently Chrome gets the same way too... it didn't start highlighting "spooler" as a misspelled word until I wrote it about 5 times.

Canada

Journal Journal: My new career path. 24

More here.

As a bonus , I'll probably soon reveal the unbelievable story of how I acquired my legal knowledge - by doing something nobody else ever has, and which, until now, would be considered pretty much impossible.

I'd rather not, because there is some danger involved, but it's necessary to achieve my goals in an open and transperent fashion.

Advice and help sought and welcome.

Open Source

Journal Journal: Yet another open source failure 14

Trying to print an envelope address in openoffice under linux? What a waste of time.

Do the people who code this sh*t actually ever use it? Or do they never use anything else, so they simply don't know that it's possible to do better?

Easy prediction - open source will never be competitive. When it's so bad that I'm tempted to throw a copy of XP (or even Wn95) on the box because linux on the desktop is still 2 decades behind the times anyway, there's a fundamental problem that obviously will never be fixed.

I really hate them, but my next computer is going to be a mac.

The Internet

Journal Journal: Every browser is *still* broken. 17

After 15 years, we still don't have an un-b0rked browser. CSS 2.1 was done in 1997, and yet firefox, opera, chrome, arora - they all render differently for non-trivial layouts.

15 years, and they still can't get the basics right. It means that the problem is not the implementation, but the underlying concepts that are flawed in fundamental ways.

And there's no blaming Microsoft or Apple for this fiasco.

No, we did this to ourselves. We're all suckers. The people setting the standards did it wrong, and we didn't immediately stone them to death, salt their fields, enslave their families for the next 3 generations, and all that other "Carthage must die!" goodness.

So we have let ourselves become slaves to stupidity.

What a waste of time, energy, brain cells, and just general aggravation. Have fun with html5 + css3, folks - you'll never see it finished in your lifetime, not even if you live for another 100 years.

Apple has it right - apps, not a stupid one-size-fits-nada web browser. Just like they have it right about not releasing stuff until it's good and ready.

Stupid browsers. Stupid us.

Programming

Journal Journal: NoSQL+ sprintf() == better. 7

Old technology doesn't die - it get re-implemented when newer ways get too bloated and turn everything it touches into Beavis and Butthead.

In the dying days of the last century (awk! - how time flies) I used to do web cgi using c, same as a lot of people. Used malloc and sprintfs() to insert variables into a "template" and then printf()s to output. It was easy to track memory allocation for such cases, so the whole "OMG you'll leak memory" issue was a non-starter.

And then along came the attack of the killer web scripting "pee" languages - php, perl, and to a lesser extent, python. The concept of a "templating language" evolved and eventually we ended up with "templating engines" - megabytes of code to make up for the shortfalls of the approach.

For example, output buffering. php includes stuff like ob_start() because even one stray newline emitted will prevent you from setting cookies on the client. c/c++ cgi programs didn't worry about a stray newline being output by an #include file because only printf() and putchar() would actually write stuff to stdout - so as long as you were just sprintf()ing to your format strings you were all good. In php, even one space before the opening tag or after the closing tag in index.php and you're hosed for sending cookies (which is why you should always omit the closing tag - the spec allows it).

Another advantage was that the ONLY character you needed to escape in any file you loaded as a template as a sprintf format string was the % symbol. No worrying about single or double quotes, angle brackets, or whatever.

For user input, the only sanitation needed was the left and right brackets (to prevent someone from entering raw html, such as script tags) and, again, the % symbol. No "escape_string", no "real_escape_string", no "really_really_escape_string", since the data was stored and read w/o needing sql.

In terms of performance and memory use, sprintf() easily beats regexes. You really can't help but notice the difference. And it sure beats the so-called "compiled templates" produced by templating engines like smarty.

Yet another advantage is portability - any language that supports sprintf() can be used w/o modifying your template files. This means that if you need the best possible performance on some really really HUGE files, you can always do it directly from a shell in c, or if you're so inclined, java.

So I decided to re-implement my old approach from scratch yesterday in a couple of hours in php. The entire code - including for variable range-checking, reading and writing data (strings and arrays), meta tag files, html, reading and parsing config files, getting and setting cookies, posts and gets along with verification and using sane defaults and coercing the values to those default types, loading templates, creating those little "go to page 1 2 3 4" clickies for larger web documents and everything else, is under 9k, including the site's index.php file.

THAT is a lot more maintainable than the 1.1 meg download for smarty templates (and smarty doesn't do the reading and type coercion from the client or the minmax range checking or some of the other stuff).

So, +130 files for smarty, or 2 for the old way (and one is index.php,so it really doesn't count ...)? Oh, and the template files look a LOT cleaner. For example, no embedded program logic like {include file='whatever'} in the templates, so stuff like

<input name="first_name" value=$smarty.get.first_name> // no default values!!!
<input name="last_name" value=$smarty.get.last_name> // no type coercion!!!
<input name="address" value=$smarty.get.address>
<input name="city" value=$smarty.get.city>
<input type="submit" value="Save">
<input type="reset">

becomes:

<input name="%s">, etc ...

... so your template looks like this instead:

<input name="first_name" value="%s">
<input name="last_name" value="%s">
<input name="address" value="%s">
<input name="city" value="%s">
<input name="age" value="%s">
<input type="submit" value="Save">
<input type="reset">

and your index.php file looks like

<?php
$BASE = '../'; all files live outside of public_html space
include "$BASE/php/libfoo.php";

$HTML = read_tpl("test_page"); // read_tpl automatically prepends "$BASE/tpl/", appends ".tpl" extension.

$css="my_skin_2";
$js = "new_js_lib";

$head = read_tpl("head");
$meta = read_meta("test_metadata");
$desc = $meta[0];
$keywords = $meta[1];

// want to test a new skin, new javascript libs
$HEAD = sprintf($head, $desc, $keywords, $css, $js);

$form = read_tpl("junk");
// get, post, cookie, gpc_pg, etc all sanitize the %, < and > symbols.
// also use an optional default value, and coerce any entered data to that type,
// so, if you ask for an integer and specify -42 as the default, anyone entering "FOO" returns -42
$first_name = get('first_name', 'Enter first name here');
$last_name = get('last_name', 'Enter first name here');
$address = get('city', 'Enter address here');
$city = get('address', 'Enter city here');
$age = get('age', -1);

// do any additional validation, data manipulation, etc.
// no need to do output buffering ... it's all in memory until you do the next line.
$FORM = sprintf($form, $first_name, $last_name, $address, $city, $age);

$footer = read_tpl("footer");
$FOOTER = sprintf($footer, "have a nice day!");

//okay, now write the whole thing
printf($HTML, $HEAD, $FORM, $FOOTER);

There is zero programming logic in the template itself - and that's the way it should be. Templates like smarty fail in the "presentation should be separate from code" department.

Plus, since most templates won't include variable names. they're pretty generic, again promoting template re-use. The footer, for example, could contain the output of several other templates instead of a simple message, and you'd never touch the main page template OR the footer template.

Slashdot Top Deals

If you want to put yourself on the map, publish your own map.

Working...