--- Log opened Thu Sep 08 00:00:33 2016 |
01:41 | | catadroid` [catadroid@Nightstar-mpf0aa.dab.02.net] has joined #code |
01:43 | | catadroid [catadroid@Nightstar-qoo4jn.dab.02.net] has quit [Ping timeout: 121 seconds] |
04:32 | <&McMartin> | Today's pro-tip for iOS and Mac developers |
04:32 | <&McMartin> | Despite the fact that there is a whole API in ImageIO for resizing images for thumbnail purposes, do not use it |
04:32 | <&Derakon> | ...do tell. |
04:32 | <&McMartin> | Prefer instead to render to an offscreen context and then turn that into an image |
04:33 | <&McMartin> | It turns out that if the system is heavily loaded, the thumbnail routine will happily give you arbitrarily small images |
04:33 | <&McMartin> | In this case, we were asking for a 540x540 thumbnail and getting handed a 96x96 one |
04:33 | <&McMartin> | WHich was then autoscaled back up when displayed because Convenience |
04:33 | <&Derakon> | Oh dear. |
04:33 | <&McMartin> | So the bug report is "everything is blurry as shit about half the time" |
04:34 | <&McMartin> | "Maybe the network is shitting itself halfway through a bunch of progressive JPEGs" |
04:34 | <&Derakon> | That is not a routine I would expect to degrade under heavy load. |
04:34 | <&McMartin> | This is not documented anywhere, in fact! |
04:34 | <&Derakon> | :psyduck: |
04:34 | <&McMartin> | It is the case that what you specify for it is a maximum pixel size |
04:34 | <&McMartin> | But the rest of that documentation implies that it is called maximum not because there is no minimum, but because as a thumbnailer it will not make images larger |
04:35 | <&McMartin> | And indeed if the max size is larger than the image the image is itself the thumbnail, which is 100% correct behavior |
04:35 | <&McMartin> | As for the rest... well, Surprises! |
04:35 | <&McMartin> | And this is why my hobby is relevant to my job. >_< |
04:35 | <&Derakon> | Haha. |
04:35 | <&Derakon> | Being skilled at debugging programs for which you lack the code is a useful ability, yes. |
04:36 | <&McMartin> | Next time on "McMartin gets angry in Cupertino's general direction", the entirety of CoreAudio. |
04:36 | <&McMartin> | But in their defense, such as it is, I don't think any of them know how any of that works either |
04:36 | <&Derakon> | Insert side rant about audio jacks. |
04:36 | <&McMartin> | I think they got handed incomprehensible codecs by Frauenhoffer and they just keep them in a vault and binary-translate them to new archictectures as needed |
04:37 | <&McMartin> | That's actually the bit where I get to be a greybeard though because while it's not particularly simple to get anything to happen |
04:37 | <&McMartin> | Each piece individually has a workable protocol thanks to some semblance of static typing. |
04:38 | <&McMartin> | This did mean that after I worked out the protocol from all that, I spent most of a day walking some of our very bright but somewhat junior other developers through it |
04:38 | <&McMartin> | They all had to draw their own diagrams to make sense of it, and none of them resembled any of the others |
04:38 | <&McMartin> | This API has existed since OS X 10.3 |
04:38 | <&McMartin> | And large swathes of it are still basically documented as "No overview available" |
04:38 | <&Derakon> | Oh dear. |
04:38 | <&McMartin> | And the rest are glorified javadocs |
04:39 | <&Derakon> | So, what, everyone using it has magic recipes they follow? |
04:39 | <&McMartin> | I suspect this is also true of Apple themselves! |
04:39 | <&McMartin> | The whole point of it is to treat audio formats as black boxes though |
04:39 | <&McMartin> | So, like, there are probably twelve dudes that work directly for the Motion Picture Experts Group that understand the whole software stack |
04:39 | <&McMartin> | And they're the ones selling Apple these codecs |
04:39 | <&McMartin> | I just have to figure out how to format and present and fill various buffers |
04:40 | <&Derakon> | It turns out it's not turtles all the way down, it's spiders~ |
04:40 | <&McMartin> | We've known that for awhile, right~ |
04:40 | <&McMartin> | That said, it is nevertheless true that once I understood what was being asked of me it all came together nicely |
04:40 | <&Derakon> | This is good. |
04:40 | <&McMartin> | But these APIs are too old and too fundamental to be this obscure, and that's a real problem. |
04:40 | <&Derakon> | It is a badly-described problem, but not a poorly-specified or irrational one. |
04:41 | <&McMartin> | That said, that's also the case that this particular level of the software stack (the one that has "Core" in the front and is not CoreFoundation, not to be confused with Foundation) is probably the level that is The McMartin Playground. |
04:42 | <&McMartin> | Note that I solved the thumbnailing problem by reimplementing it with Core Graphics primitives, frex |
04:42 | <&Derakon> | "Render to an offscreen context, then draw/save that context's contents" is a reasonably common operation, at least. |
04:49 | <&McMartin> | Yep |
04:49 | <&McMartin> | And it's basically as fast, too |
05:30 | | Derakon is now known as Derakon[AFK] |
07:05 | | himi [sjjf@Nightstar-dm0.2ni.203.150.IP] has quit [Ping timeout: 121 seconds] |
07:13 | | Kindamoody[zZz] is now known as Kindamoody |
07:14 | | * Vornicus vornballs |
07:19 | | Kindamoody is now known as Kindamoody|afk |
08:08 | | catalyst [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
08:11 | | catadroid [catadroid@Nightstar-glrsmr.dab.02.net] has joined #code |
08:13 | <&McMartin> | New Bumbershoot post: https://bumbershootsoft.wordpress.com/2016/09/08/wrapping-up-our-apple-ii-advent ure/ |
08:15 | | catadroid` [catadroid@Nightstar-mpf0aa.dab.02.net] has quit [Ping timeout: 121 seconds] |
08:18 | <~Vornicus> | bumberwoot |
08:20 | | * Vornicus eyes the whole bit about the ninth line |
08:20 | <~Vornicus> | bonkers. |
08:20 | <&McMartin> | The thing is, that probably saved them fifty bucks per unit. -_- |
08:20 | <~Vornicus> | That's even more bonkers |
08:21 | <&McMartin> | Silicon doesn't stop being painfully expensive until like '85, ANAICT |
08:21 | <&McMartin> | Part of the genius of the 2600 was that it had exactly three chips in it |
08:39 | | catalyst [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has quit [Connection closed] |
08:52 | | celticminstrel [celticminst@Nightstar-ehtgrr.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
09:11 | | abudhabi [abudhabi@Nightstar-7nkq9k.de] has quit [Operation timed out] |
09:47 | | abudhabi [abudhabi@Nightstar-7nkq9k.de] has joined #code |
09:47 | | mode/#code [+o abudhabi] by ChanServ |
09:52 | | ion [Owner@Nightstar-6grqph.vs.shawcable.net] has joined #code |
09:52 | | mode/#code [+o ion] by ChanServ |
09:55 | | ion_ [Owner@Nightstar-6grqph.vs.shawcable.net] has quit [Ping timeout: 121 seconds] |
09:59 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has joined #code |
09:59 | | mode/#code [+o himi] by ChanServ |
10:32 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
12:23 | | wolfmoon [uid178473@Nightstar-6br85t.irccloud.com] has joined #code |
12:53 | | Emmy [NSkiwiirc@Nightstar-41pbej.static.chello.nl] has joined #code |
12:53 | | mode/#code [+o Emmy] by ChanServ |
12:53 | <@Emmy> | werk werk werk. |
12:55 | <@Emmy> | hmmmmh, derp. |
12:55 | < catadroid> | Derp derp derp |
12:55 | < catadroid> | ? |
12:55 | <@Emmy> | I'm thinking, ""why is my screen so dull today? |
12:56 | <@Emmy> | turns out, it gets a lot better when i take off my sunglasses indoors. |
12:56 | <@Emmy> | whuddathunk. |
13:09 | <@TheWatcher> | That or you need to get your eyes augmented~ |
13:09 | <@Tamber> | "didn't ask for that." |
13:14 | <@Emmy> | Rather not. I get blinded too easily as it is already. 's why i wear sunglasses so much. :P |
13:31 | <@Alek> | amen |
14:26 | <@abudhabi> | I hate touchpads. |
14:26 | <@abudhabi> | I really do. |
14:39 | <@Emmy> | amen brattah. |
14:41 | | catadroid` [catadroid@Nightstar-qp1r7h.dab.02.net] has joined #code |
14:43 | | catadroid [catadroid@Nightstar-glrsmr.dab.02.net] has quit [Ping timeout: 121 seconds] |
15:04 | <@Emmy> | WHOOPS. I just realized i came very close to accidentally creating an infinite 'Do While' Loop. |
15:05 | <@Emmy> | luckily in my first test run i just had a 'exit do' as soon as i got the first result, 'cause my first run i just wanted to test the contents of the loop, not the loop itself. |
15:16 | | catadroid` is now known as catadroid |
15:25 | <@ToxicFrog> | Oops. |
15:25 | <@ToxicFrog> | That's what ^C is for! |
15:25 | <@ToxicFrog> | Unless you're writing a kernel module. |
15:33 | | Derakon[AFK] is now known as Derakon |
15:54 | | wolfmoon [uid178473@Nightstar-6br85t.irccloud.com] has quit [[NS] Quit: Connection closed for inactivity] |
16:00 | <@Emmy> | time to go! |
16:01 | | Emmy [NSkiwiirc@Nightstar-41pbej.static.chello.nl] has quit [[NS] Quit: http://www.kiwiirc.com/ - A hand crafted IRC client] |
16:28 | < catadroid> | Beep boop |
16:28 | < catadroid> | Now I'm technically on the animation team |
16:28 | < catadroid> | Excitement |
17:13 | < catadroid> | Conclusion: what people mean when they say 'type' is very poorly defined |
17:15 | <@ErikMesoy> | Yes. |
17:16 | < catadroid> | Argh |
17:17 | < catadroid> | I don't care if the programmers can cope with manually managing memory or escaping characters |
17:17 | < catadroid> | If they don't *have* to and the code is still efficient, then making them do so is an awful inefficiency |
17:17 | <@Pi> | Just think of all those times when computer time was more expensive than programmer time. |
17:25 | < catadroid> | Yes, twenty years ago |
17:25 | < catadroid> | Thirty, forty years ago |
17:25 | | [R] [rstamer@d66-222-241-75.abhsia.telus.net] has quit [Operation timed out] |
17:27 | | [R] [rstamer@Nightstar-d7h8ki.org] has joined #code |
17:27 | | mode/#code [+ao [R] [R]] by ChanServ |
19:10 | | celticminstrel [celticminst@Nightstar-ehtgrr.dsl.bell.ca] has joined #code |
19:10 | | mode/#code [+o celticminstrel] by ChanServ |
20:06 | | macdjord [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Connection reset by peer] |
20:09 | | macdjord [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
20:09 | | mode/#code [+o macdjord] by ChanServ |
20:10 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
20:10 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
20:23 | | macdjord [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
20:27 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
20:27 | | mode/#code [+o mac] by ChanServ |
20:32 | | catalyst [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code |
21:11 | | catadroid` [catadroid@Nightstar-oonbil.dab.02.net] has joined #code |
21:15 | | catadroid [catadroid@Nightstar-qp1r7h.dab.02.net] has quit [Ping timeout: 121 seconds] |
21:42 | | Kindamoody|afk is now known as Kindamoody |
22:00 | | himi [sjjf@Nightstar-v37cpe.internode.on.net] has quit [Ping timeout: 121 seconds] |
22:06 | | macdjord|slep [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
22:06 | | mode/#code [+o macdjord|slep] by ChanServ |
22:08 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
22:24 | | Kindamoody is now known as Kindamoody[zZz] |
22:27 | | catadroid` [catadroid@Nightstar-oonbil.dab.02.net] has quit [Ping timeout: 121 seconds] |
22:45 | | macdjord [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
22:45 | | mode/#code [+o macdjord] by ChanServ |
22:47 | | macdjord|slep [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
22:52 | <@celticminstrel> | I wonder if anyone has tried making a prototype-like object hierarchy in a class-based language. |
22:55 | | * celticminstrel 's specific interest is, of course, C++ |
22:56 | < catalyst> | C++ doesn't really support that model with its normal synta |
22:56 | < catalyst> | syntax* |
22:56 | < catalyst> | But there's plenty of systems that make use of prototypal hierarchies in data that turns into, say, component systems |
22:57 | < catalyst> | it's not exactly idiomatic, though |
22:58 | < catalyst> | I suppose you could do it using operator[] and some sort of name->function mapping - so, like foo["methodName"](params) which would do the lookup for you |
22:59 | < catalyst> | hrms |
22:59 | < catalyst> | still, it's not really built for it, and I might be talking bullshit |
22:59 | < catalyst> | it's certainly one of those things that's worthwhile poking at to find the limits of the language |
23:05 | <@celticminstrel> | I see... |
23:08 | < catalyst> | (Assuming that you mean something like lua/javascript's prototypes where it does the hierarchical lookup thing based on a prototype value) |
23:08 | | catalyst [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving] |
23:27 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
23:27 | | mode/#code [+o mac] by ChanServ |
23:30 | | macdjord [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
23:35 | | catadroid [catadroid@Nightstar-tm5jdm.dab.02.net] has joined #code |
23:35 | | catadroid [catadroid@Nightstar-tm5jdm.dab.02.net] has quit [The TLS connection was non-properly terminated.] |
23:35 | | catadroid [catadroid@Nightstar-tm5jdm.dab.02.net] has joined #code |
23:45 | | macdjord [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has joined #code |
23:45 | | mode/#code [+o macdjord] by ChanServ |
23:47 | | mac [macdjord@Nightstar-r9vt2h.mc.videotron.ca] has quit [Ping timeout: 121 seconds] |
23:55 | <&McMartin> | "Prototype" is one of the original pack of design patterns |
23:55 | <&McMartin> | It's not exactly prototypal inheritance but it's close enough for what you'd probably want it for. |
23:55 | <&McMartin> | It's essentially relying on copy constructors really heavily, though. |
23:56 | | himi [sjjf@Nightstar-dm0.2ni.203.150.IP] has joined #code |
23:56 | | mode/#code [+o himi] by ChanServ |
--- Log closed Fri Sep 09 00:00:49 2016 |