I'm in the future. Like hundreds of years in the future. I've been dead for centuries. Oh, lovely, you're a cheery one aren't you?
Friday, May 31
More Shinies
Asus have just announced a pair of 4K monitors at 31.5" and 39". No word yet on pricing, but they'll be showing them off at Computex and the 31.5" model is set to ship next month.
The 39" model would have roughly the same DPI as my current 27", but twice the display area. I was thinking of getting a second 27" monitor, but now I'm inclined to wait.
Posted by: Pixy Misa at
09:16 PM
| No Comments
| Add Comment
| Trackbacks (Suck)
Post contains 71 words, total size 1 kb.
Thursday, May 30
Girl Genii
Studio Foglio is running a Kickstarter drive to print the new volume 12 and bring older volumes of Girl Genius back into print. It's been a not-entirely-unexpected runaway success, unlocking all sorts of stretch goals, including PDF versions of all 12 volumes. Which are included as a bonus if you buy volume 12. Even if you buy volume 12 as a PDF. Which costs a very reasonable $10.
Yes, for the next four days you can get the entire series in PDF form for ten bucks.
Or $275 plus shipping for the full series in physical softcover form. Shipping being another $95 to the far side of the world.
1
Signed up for the paper copies. (Girlfriend was missing 10 of 12...)
Posted by: Avatar_exADV at Thursday, May 30 2013 04:30 AM (GJQTS)
2
Never could get into that series. Perhaps it was the authors inserting themselves as characters or more deserving graphic works being beaten out for a Hugo award?
Posted by: TPH at Thursday, May 30 2013 03:32 PM (Vk2pI)
3
There are no more deserving graphic works currently being made. Except possibly Gunnerkrigg Court. That being said, I thought Kickstarter was for projects that can't get financing in the normal course of affairs. Girl Genius has been such a big hit, I'd expect the Foglios to be able to publish as needed.
That reminds me, I need a color copy of the first volume, mine is still the old black-and-white original.
Posted by: Mitch H. at Thursday, May 30 2013 10:35 PM (jwKxK)
4
please tell me how to attach a file in a message on this site
Posted by: Akunovski at Friday, May 31 2013 04:38 AM (KsOaV)
Some days a $30 wireless keyboard/mouse combo doesn't cut it. Some days you need...
Extra keys.
Dials and buttons.
Lots of dials and buttons.
Knobs and sliders.
Keys and knobs and sliders and buttons.
Pen input.
Buttons. Lots and lots of buttons.
Trackballs and trackwheels.
Sliders, buttons, touch panels.
More sliders.
Wheels.
Trackballs and wheels and buttons.
From top to bottom: Logitech G19, Connexion SpacePilot Pro, Maschine MK2, Allen & Heath ZED60-10FX, Novation Impulse 49, Wacom Cintiq 13HD, Ableton Push, Avid Artist Color, Avid Artist Control, Avid Artist Mix, Avid Artist Transport, Tangent Wave.
Posted by: Wonderduck at Wednesday, May 29 2013 10:48 PM (lpH3d)
2
Pretty much. Though - porn being defined as pictures of things you want but can't have, this might not apply. The devices above range from around $150 for the Logitech G19 up to $1198 for the Ableton Push bundled with the full Ableton Live Suite. I think the whole lot would add up to about $4000.
This, though, is definitely porn:
The Davinci Resolve colour correction desk. A steal at $30,000.
Posted by: Pixy Misa at Thursday, May 30 2013 01:46 AM (PiXy!)
3
Well, $4000 total down to the Ableton Push. The five video editing decks below that would come to about $6000 altogether.
Posted by: Pixy Misa at Thursday, May 30 2013 01:54 AM (PiXy!)
Posted by: Pixy Misa at Thursday, May 30 2013 02:00 AM (PiXy!)
5
Does it come in plaid? For that price, it should be available in plaid.
Posted by: Wonderduck at Thursday, May 30 2013 10:04 AM (lpH3d)
6
The farther down the page I went, the more I thought of that iOS game where you have multiple people frobbing controls on control panels. Can't remember the name but Penny Arcade did a cartoon on it a while back.
How is frob not in the dictionary? It's a perfectly cromulent word!
Cromulent's not in the dictionary either!
Posted by: RickC at Friday, May 31 2013 10:47 AM (WQ6Vb)
About configuring cost-effective servers I learned min-maxing characters in AD&D.
Currently looking at this:
Component
Price
Supermicro SC116TQ-R700CB 1U case
$546
Supermicro X9SRH-7TF motherboard
$479
Intel Xeon E5-1620
$329
16GB DDR3 Reg. ECC x 4
$512
Seagate Constellation.2 1TB x 4
$848
Intel SSD 520 240GB x 4
$1,012
WD Green Mobile 2TB x 2
$338
$4,064
The motherboard includes a RAID controller, but only levels 0, 1, and 10; no 5 or 6. On the other hand, adding a decent RAID-5/6 controller costs more and delivers less than bumping up the size of the SSDs and adding a couple of low-end drives for backup so that the main array doesn't get filled with junk.
This is a similar but more pedestrian config with a dedicated RAID controller:
Component
Price
Acme RS108TF 1U Xeon
$739
Intel Xeon E5-1620
$329
16GB DDR3 Reg. ECC x 4
$512
Seagate Constellation.2 1TB x 4
$848
Intel SSD 520 180GB x 4
$780
LSI SAS 9260-8i
$525
LSI Battery LSI00264
$159
Supermicro slim DVD-ROM
$49
$3,941
The stick-in-the-mud config comes in $123 cheaper and has an extra terabyte on the main array and an extra 60GB of SSD. It's RAID-5 instead of RAID-10, but with the databases on SSD, that makes little to no difference. On the other hand, the version that takes advantage of the built-in controller also has built-in 10Gb ethernet, and has 4TB of near-line storage for backups and archives. And that means I won't need a separate backup/archive server, which was set to cost ~$2500 by itself.
I'm hoping to get a couple of these as servers, and a couple of similar boxes set up as development workstations. Just waiting for the money tree to flower...
Update: It will be a little longer before the money tree blooms, but we're deploying a similar server at my day job for stress-testing software, so I'll have a chance to evaluate the hardware soon anyway. This is one advantage of working with big data - a small test server that amounts almost to petty cash is equivalent to a very nice server for my own projects.
1
As someone who works with transactional database, I'm horrified when I see mention of RAID 5.
Posted by: RickC at Monday, May 27 2013 01:40 PM (WQ6Vb)
2
We run RAID-5 and RAID-50 SSD arrays, and they work quite nicely with our big MySQL databases using InnoDB and TokuDB. We also run MongoDB and ElasticSearch on RAID-5 SSD.
A small RAID-5 array of good consumer drives like the Intel 520 series delivers worst-case random write performance equal to a 24-drive RAID-10 array of 15k RPM traditional drives, while being much cheaper, much more compact, much lower power, and delivering 10-20x the read performance. And using server-grade drives like the Intel S3700 brings up the worst case performance to roughly match the best case performance.
In the bad old days, when server memory was measured in megabytes rather than gigabytes and access times in tens of milliseconds rather than tens of microseconds, RAID-5 was database poison. These days the bottleneck is almost certainly elsewhere.
If you're talking about big monolithic databases - single Oracle instances of many terabytes, for example - then RAID-50 or even RAID-10 might still be the way to go; the costs typically associated with such systems far outweigh a few extra SSDs, even nice ones like the S3700.
For a relatively small system like mee.nu, RAID-5 is fine, but RAID-10 works out cheaper in thise case. And for truly huge systems like we run at my day job (>2PB of data), RAID-10 isn't practical. Or necessary, really; we deploy dozens of drives (SSD or HDD) at a time, so our aggregate I/O throughput across the cluster is just phenomenal. (We just deployed 204 HDDs - 712TB - for a single project.)
Posted by: Pixy Misa at Tuesday, May 28 2013 03:01 PM (PiXy!)
3
Yes, I don't work on petabyte scale, but when I moved a database off a 20+-spindle SAN to a raid-1 pair and nobody noticed, that doesn't do anything to dissuade me from avoiding raid 5.
Also, I assume your day job has people who are smart enough to have UPSes so you don't have to worry about data loss due to power outages, unlike many of the people I've ever dealt with in the past. From an actual disaster recovery conversation: "We can't just buy another disk controller for this machine at Best Buy, you know." I bet you can guess that was directed at the guy who cancelled the maintenance contract with IBM "because we didn't use it last year."
Posted by: RickC at Wednesday, May 29 2013 03:41 AM (WQ6Vb)
It has high points at either end, but sags a bit in the middle.
Season 7.2 of Doctor Who, that is. I really wish that the 2012 Olympics had gone to Ulan Bator or some place like that, so we'd got two full seasons of Doctor Who instead of two half seasons (five episodes in 2012, and eight now in 2013).*
But The Bells of Saint John and The Name of the Doctor do at least serve as very capable bookends to a somewhat wobbly second half of the season.**
It would have been a dynamite season ending if
more than one character had stayed dead but there was more than enough to hold fans' attention as it was.
All in all, it's the best kind of ending, one that retroactively improves everything that came before. We get all too much of the other kind, so Steven Moffat should be applauded for pulling this trick off here.
As a side note: The BBC accidentally shipped out a couple of hundred copies of the season box set on Blu-Ray a week before the finale was set to air. And still there were no leaks of the surprises in store.
* Doctor Who was cut, apparently, because so much of the BBC was tied up in the Olympics. Meh, I say. Meh! There's another Olympics every four years; there's only one Doctor Who.
** Neil Gaiman's The Doctor's Wife was brilliant; his Nightmare in Silver this season... Less so.
Posted by: Pixy Misa at
03:42 PM
| No Comments
| Add Comment
| Trackbacks (Suck)
Post contains 246 words, total size 2 kb.
/etc/cron.weekly/raid-check
WFT?
Linux now rescans all your (software) RAID arrays every week. I thought it was a hardware problem.
This is possibly a good thing, maybe.
It is proceeding at an aggregate of 700MB/s, which is nice to see.
Posted by: Pixy Misa at
01:12 AM
| No Comments
| Add Comment
| Trackbacks (Suck)
Post contains 39 words, total size 1 kb.
Thursday, May 16
No Nexus 7+ / 7.2 / 8 / Whatever
Nothing. Absolutely nothing.
But HP have announced their SlateBook10 x2, a 10.1" Android convertible with a Tegra 4 CPU and a 1920x1200 display.
It's similar to the Asus Transformer Infinity, but significantly faster, and a good bit cheaper at $480 including the dock. 2GB RAM and 64GB of flash storage plus a full-size SD slot in the keyboard dock, and maybe a microSD slot in the tablet itself. (HP's site doesn't list one, but the various blurbs on the tech news sites do.)
Specs aren't perfect - it's not quite "retina class" - but definitely interesting.
Posted by: Pixy Misa at
04:12 PM
| No Comments
| Add Comment
| Trackbacks (Suck)
Post contains 105 words, total size 1 kb.
Blah
Well, I'm still up, might as well watch the Google I/O keynote. Just need to occupy myself for a few minutes 'til it starts...
Okay, now it's started. Blah blah blah...
Blah blah blah...
Oh yeah, that's why I never watch these things, much less go to them.
Blah blah blah...
The music video at the start wasn't bad, but this is better:
Blah blah Android blah blah Chrome blah.
Okay, yeah, they're okay-ish. Android is Linux, Chrome is KHTML.
Blah blah blah...
Blah 900 million activations blah...
Blah 48 billion app installs blah...
Using Play as an end-run around manufacturers and carriers who are slack about updating devices. i.e. all of them. Good thinking.
Location. Well, people who actually get a chance to leave the house might care about that, so okay.
Cross-platform single-sign on. Sounds good, until you realise that it leads to cross-platform single irrevocable account suspension, like my situation with Youtube.
Their messaging platform now allows you to send as well as receive. Well, there's a huge breakthrough.
I hate live broadcasts. You can't fast-forward through the crap.
Okay, here's something good: A new Android IDE called Android Studio, based on JetBrains IntelliJ Idea. I don't use IntelliJ, because Java sucks, but it's the basis for PyCharm, which I use every day. It's a nice IDE. And Android Studio looks really good.
Red boots. Makes a change from the blah outfits the rest of the presenters are wearing.
Better developer metrics. Fine. Not exciting for me, but fine.
Blah blah...
The Play Store on the Nexus 10, huh? Have you fixed the insane flickering during app downloads yet? Didn't think so.
"Do you guys want to hear about music?" <crickets> "Well, I'm going to talk about it anyway."
Wow, this is stupefying. They have a music service, just like the other ninety-odd music services that already exist.
Blardly blardly bleep...
Google Samsung Galaxy Nexus S4 $649 unlocked. Hardly a new device, and they're only selling the 16GB version. But it's the only Android device sold by Google with expandable storage. Does this signify anything? Who knows.
Oh gawd, now they're going to talk about Chrome. I'm outta here.
Chromebooks. They've sold dozens of them! You can just feel the lack of enthusiasm when the presenter pauses at applause moments.
They're porting Chrome to Android. "Let's dive in deeper." Let's not. Next!
WebP and VP9. Okay, good, get this stuff out there. Support is pretty much absent outside Chrome right now.
Blah blah....
They're giving away Chromebook Pixels to all attendees, instantly tripling the install base. That got some applause, because no-one in their right mind would actually buy one.
Gah. Google Apps. Bletch. I mean, fine, if you don't actually care about functionality or productivity.
Oh great, it's the music guy again.
Google get-em-while-they're-young Play for Education.
Something about Malaysia. Okay, getting 4G internet access in every school in the country and giving the students Chromebooks (though not Pixels). That's good stuff.
Google+, Search, Maps. Bleen. Polite applause. No-one cares about Google+. It's not that it's bad, it's just that it's bleh. Now they've Pinterested it. Yeah, that's an improvement.
Like Apple moving developers off MacOS to try to get iOS 7 out the door, it's a reminder that you can be one of the biggest, most technologically advanced corporations in history and still flounder helplessly in the face of not having any idea what you are supposed to be doing.
I work for a little startup. My problems all stem from lack of resources. The vision part is easy. But when you have all the resources you could ask for (and Apple could hire another ten thousand developers tomorrow if that would help) you still have to somehow focus those resources on executing your vision. That's hard. In fact, it's basically insoluble, which is why we see an unending cycle of boom and bust in hi-tech companies.
Has he stopped talking about Google+ yet?
No.
Oh, now he's talking about photos. I'm not actually watching the stream any more; it escalated from stupefying to stultifying. Next year, Google, your keynote is 30 minutes. Anything that doesn't fit in that 30 minutes isn't worth having in the keynote. This is ridiculous.
I downloaded and installed Julia Studio and started tinkering, and things were going pretty smoothly, and I ran some simple benchmarks, and the best case was nearly as fast as Python.
Wait, what?
Hrm.
Python has a remarkably efficient core of functions, but its code execution is rather sluggish. That is, Python itself is fast, but code written in Python is slow. So, for example, splitting sentences into words in Python runs about five times faster than in Julia, according to my little benchmark. But the more complicated your code gets, the more that should tilt in Julia's favour.
Indeed, Julia's standard library is written mostly in Julia, so the performance you get for built-in functions is the same as for your own code, where with Python there can be orders of magnitude between the two.
Still, /5 performance on early tests when you're seeking *20 is not encouraging.
Next week: Pixy investigates Numba.
Posted by: Pixy Misa at
02:46 AM
| No Comments
| Add Comment
| Trackbacks (Suck)
Post contains 159 words, total size 1 kb.
Sunday, May 12
Why Does Julia Use * For String Concatenation?
I quote:
I think the main reason is that algebras over fields are commutative with respect to + but not necessarily for *. String concatenation is definitely not commutative. I can't remember whether this was part of the original motivation, but I also tend to think of this in the terms that string concatenation is a lot like taking the outer product, you're getting an object with the combined dimensionality of both factors.
This is difficult to argue with, but the answer is still not what I'd prefer.
I was writing a longer post on Julia last night, but the editor ate it.
Julia is an interesting new programming language (it first appeared last year) that attempts to provide the mathematical power and sheer computational efficiency of Fortran while offering programmers the expressiveness, flexibility, and clarity of Ruby. The result is 70% awesome, 10% odd, and 20% not there yet (since it's so new).
Here's a snippet:
cd("data") do
open("outfile", "w") do f
write(f, data)
end
end
In these five short lines we already see two important things:
Readable code. Neither curly brackets and semicolons, those codependent blights on programmer productivity, nor bizarre unfamiliar syntax like Smalltalk.
Something like Ruby's blocks or Python's with - the cd function creates a context, as does the open function, and those contexts apply to the enclosed statements and are automatically cleaned up at the end. So the program changes its working directory to the data only for the code within the do...end block, without the programmer needing to worry about any details.
While Julia's syntax closely resembles sane, healthy, modern languages like Ruby and Python, it veers off in some details because it was designed by mathematicians rather than computer scientists. Thus you get the self-consistent if somewhat weird decision to use * for string concatenation.
More significantly, while Julia is object-oriented, it is not class-based (as most object-oriented languages are). It uses multiple dispatch based on the arguments to a function rather than binding functions to an object.
That is, where in Python you might define an image object and a resize method, and call it like this:
im = image("kitty-ears.jpg")
im.resize(x=500)
In Julia you'd define the data structure of the object, and then define a set of functions that act upon that object. There might already be a resize function that acts on arrays or vectors or memory-mapped files (or a hundred other things), but when you call
resize(im; x=500)
Julia knows that you mean the image resize function, because it knows that the variable im is an image. Values cannot change their type, so the Julia compiler can bind to the right version of the function at compile time, unlike Python or Ruby, where dispatch is always dynamic.
And that matters because it means that Julia is about 20x faster than Python.*
What Julia doesn't (currently) provide is multi-threaded programming. It's supports coroutines, called tasks, that allow you to write your code in a logically multi-threaded way. And it supports message-passing multi-processing, so you can spin up multiple instances of your application on different CPUs and easily dispatch tasks to other workers and receive the results when they're done. But you can't have multiple processes sharing a common native data structure.
But then, neither (really) can Python or Ruby. Both support threading, but both have global interpreter locks - the infamous GIL in Python - that means that only one thread is working on native code or data structures at a time. Threads get unlocked when they are doing I/O, and in some C libraries, so you do get a speedup in real-world applications. So if all three languages are effectively still single-threaded, with threads largely a programming convenience, you'd go with the one that's 20x faster, yes?
Yes, except that Python has a huge and wonderful standard library and an even huger and wonderfuller ecosystem of third-party packages.
Except except:
You can embed Python in Julia, with two-way transfer of data and functions, using PyCall. You can just plain import your Python modules into a Julia program and use them:
@pyimport pylab
x = linspace(0,2*pi,1000); y = sin(3*x + 4*cos(2*x));
It's almost-but-not-quite Python on the Julia side (see the ; between the positional and named arguments in the pylab.plot call) but calling existing Python code from Julia is almost perfectly transparent.
You can access MongoDB from Julia. MongoDB isn't perfect** but it's the swiss-army chainsaw*** of NoSQL, at least since they fixed it so that it doesn't crash and destroy all your data every time a gnat sneezes.****
You can pretend it's Ruby and slap together web apps like there's no tomorrow using Morsel:
using Morsel
app = Morsel.app()
route(app, GET | POST | PUT, "/") do req, res
"This is the root"
end
get(app, "/about") do req, res
"This app is running on Morsel"
end
start(app, 8000)
There's support for ZeroMQ, the lightweight queueing... Thing.
Also, Curl.
That's important, because those five items cover everything I need for both my day job and my off hour programming. If I can still use all my existing code and write new code that runs 10-20x faster (I use Psyco, the precursor to PyPy, here at mee.nu, which delivers a real-world speedup of very close to 2x, so only 10x there) in a language that doesn't make me want to shoot myself, that makes me a happy bunny.
Full support for multi-threaded programming would make it even better, but since I don't really have that now, it's not a show-stopper. For mee.nu, I run five instances of Minx behind a load-balancing proxy, though we rarely need the performance. Julia provides plenty of ways to use multi-processor machines, just not that particular way.
And if it really delivers 10x the performance in practice, that's like getting 10-way multi-threading with zero software overheads and zero extra hardware.
So a cautious thumbs up so far from me.
* Or about 4x faster than PyPy, the Python JIT compiler. But since you can easily embed Python code in Julia (the PyCall package provides this) and PyPy still has a number of incompatibilities with common Python packages, there's an argument that Julia is a better way to go even for Python programmers.
** Indeed, while it supports atomic updates, it doesn't support transactions across multiple records, so some would argue that it's not a database at all. My definition of a database is that it lets you find what you want in better than linear time even if you don't know what you're looking for - i.e. it provides some sort of secondary index. By that definition, MongoDB is a database. And Redis and RethinkDB and Aerospike aren't. Which doesn't mean they're not useful - Redis is bleedin' wonderful! - it just means they're not databases. They're datathingies.
*** Joke stolen shamelessly.
**** Which to their credit they fixed four major releases ago. These day's it's pretty robust.
I'm not sure I'd call Julia object-oriented, I'm not even sure I'd call it object-based (but I've really only dipped my toes into the documentation). It seems like someone got tired of Matlab's syntactic and semantic warts and interpretive performance* and decided to clean it up. It's too bad SISAL never caught on.
* If the Matlab interpreter is where your code is spending most of its time, either you're doing it wrong** or you're using the wrong language...
** Ok, passing array arguments by value can be kind of expensive...
Posted by: Kayle at Monday, May 13 2013 04:24 PM (M7tH0)
2
I'm not sure I'd call Python sane or healthy. In fact, I'm pretty sure I'd call it a lot of four-letter words. Which, actually, I do, fairly often, to the annoyance of my co-workers.
I'm nearing the point where I'm going to tell my boss that Python can go stuff itself, I'm retreating to c++.
Posted by: dkallen99 at Tuesday, May 14 2013 02:27 AM (2lHZP)