Slashdot Mirror


Carmack On Mobile VR Development

An anonymous reader writes: After surprising everyone by demonstrating Samsung's new VR headset at IFA yesterday, John Carmack spoke with Gamasutra about the difficulties of developing virtual reality in a mobile environment. He also had some interesting comments on developing for Android: 'Okay, there's the normal hell of moving to a new platform — and I gotta say, Android was more hell to move to than most consoles I've adopted. Just because of the way Google has to position things across a diverse hardware spectrum, and because Google still doesn't really endorse native code development — they'd still rather everyone worked in Java. And that's a defensible position, but it's certainly not what you want to be doing on a resource-constrained VR system. So brace yourself: Android setup and development really does suck. It's no fun at all.' He also had insights on building compute-intensive software — if you go to full speed on all CPU and GPU cores, you can expect overheating and thermal throttling in less than a minute.

60 comments

  1. BWAHAHAHA by ogdenk · · Score: 4, Insightful

    Mobile development is a joke in general. Unless you're a very established big name, you get lost in a sea of copycat apps. And then you have the piss poor performance, fragmentation and mutant java stack issues with Android. The iOS app store is run by goosestepping nazis who are happy to ruin years of development to reject your app because they might be thinking of doing something similar or because they simply don't like it. Or because it actually does something useful and the UI is "too complex" for teeny-bopper facebook junkies.

    I wouldn't waste my time on developing for the current crop of smartphones if somebody put a gun to my head and a $5,000 check in front of me. NewtonOS and Windows CE were actually far more USEFUL platforms than the current game machines with dial pads.

    1. Re:BWAHAHAHA by Anonymous Coward · · Score: 2, Insightful

      One of the nice things about mobile apps is that you often have to work for performance, and the big guys generally (excluding, e.g., Carmack) don't have a leg up. At least in my field, the big guys are used to pretty much anything goes -- meaning much of their libraries would have to be completely re-written to work on mobile -- while my newer code was designed and written with efficiency in mind from the beginning. Even on the latest generation hardware, nobody's got an app out that outperforms what mine did on the 1st gen. iPhone. Mobile hardware sucks compared with desktop, sure, but it's capable of great things nonetheless.

    2. Re:BWAHAHAHA by Anonymous Coward · · Score: 0

      I wouldn't waste my time on developing for the current crop of smartphones if somebody put a gun to my head and a $5,000 check in front of me.

      If someone put a gun to my head, I wouldn't exactly consider it a "waste of time" to do what they wanted. The $5,000 check is just a bonus.

      I notice that all of your criticisms are accompanied by a gross exaggeration. That's typically a sign that one's position doesn't stand on its own.

    3. Re:BWAHAHAHA by ogdenk · · Score: 1

      It's not the hardware that sucks. The hardware is freaking awesome. It's the software stack that falls short. They're cool consumer handheld gaming and facebook toys as-is. As a TOOL for computer users to get work done they are pretty cumbersome and far less useful than most people would like to think.

    4. Re:BWAHAHAHA by Anonymous Coward · · Score: 0

      The iOS app store is run by goosestepping nazis who are happy to ruin years of development to reject your app because they might be thinking of doing something similar or because they simply don't like it. Or because it actually does something useful and the UI is "too complex" for teeny-bopper facebook junkies.

      I'd say this video is almost obligatory for anybody who develops on iOS, but it contains very little insight that a typical iOS developer will not already have.

    5. Re:BWAHAHAHA by Anonymous Coward · · Score: 0

      It's true that the OSes are worse than they really should be -- it's pretty clear to me that the APIs and dev tools are geared towards "toy" apps -- but they're not so bad as to prevent you from writing relatively efficient, good, worthwhile programs. I still write in C, spawn threads with impunity, and use vector operations for the heavy lifting, very similar in broad strokes as I'd do on a desktop.
       
      As a user I think the OS only gets in the way in ways that can be turned off, and past that it comes down to whether touch screens and the available screen sizes are suitable. For my current usage, there's nothing inherently better or worse about a touch UI, but I find it more engaging anyway.

    6. Re:BWAHAHAHA by ogdenk · · Score: 2

      Slight exaggeration but generally I don't cave when it comes to physical threats.

      The position stands. Most smartphones are used to play games, send SMS/MMS texts and screw around on Facebook. And simple thoughtless push button activities are what these devices are designed around, not real work. They hide the filesystem from you and make exchanging data with anything but e-mail too much to grasp for the average user. They are intentionally crippled. Even exchanging data between apps ON THE SAME DEVICE is incredibly hobbled and Apple's attempts to address this are a kludge at best.

      Like I said, very cool portable game system and facebook client. They are toys. Cool toys with 3D accelerators but toys nonetheless.

    7. Re:BWAHAHAHA by Anonymous Coward · · Score: 0

      Nah...

      Android is just trash to deal with. Google doesn't want native apps on it, they want trashy java candy crush clones.

      Nobody in their right mind would develop a game on Android as their first choice.

    8. Re:BWAHAHAHA by Anonymous Coward · · Score: 0

      Hasn't coding in Java been proven to cause brain damage? Like worse than TCL or BASIC?

    9. Re:BWAHAHAHA by tepples · · Score: 1

      As a user I think the OS only gets in the way in ways that can be turned off

      Apple charges its users a recurring fee ($99 per year) to turn it off.

      For my current usage, there's nothing inherently better or worse about a touch UI, but I find it more engaging anyway.

      Then I guess your current usage doesn't involve a lot of typing, especially typing of markup. Making <quote> and <a> elements on a virtual keyboard when posting to Slashdot is an exercise in tedium.

    10. Re:BWAHAHAHA by tlhIngan · · Score: 1

      The iOS app store is run by goosestepping nazis who are happy to ruin years of development to reject your app because they might be thinking of doing something similar or because they simply don't like it. Or because it actually does something useful and the UI is "too complex" for teeny-bopper facebook junkies.

      Actually, Apple's App Store is a perfect model for console development, because Microsoft, Sony and Nintendo have far more stringent requirements. And no, you generally don't hear of them because their development contracts are far more airtight. You sometimes hear of small leaks, like how the developer of The Binding of Issac did a port to Nintendo DS only to have Nintendo withdraw their pre-approval just at release. Or how Microsoft has a $40K certification charge. (No, Sony's charges aren't less, in fact, they're likely MORE. It's just no one dares cross Sony, and Microsoft's throwing money around. ).

      And if you're spending millions to develop for Apple without assurance it'll be approved, you're an idiot developer who deserves to lose the money. Because if you're going to throw that kind of money around, you'd have to either be an established developer, or be very rich (and stupid). Established developers generally already have gotten console approvals and know how to step around Apple's generally lax requirements.

      Rich and stupid are the ones who throw millions on an app without even trying to see if the idea is viable.

  2. fucking google should adopt posix by Anonymous Coward · · Score: 1

    Should have used POSIX instead if Java.

    Basically write code that is native, compiles on each system using standardized compilers and with full Unix compliancy. This is what POSIX is. All they would need to do is have a compatible compiler for each CPU architecture which they already have..

    Apps would be 10 to 100 times faster, with lower power utilization, more battery life, greater response and performance..

    Not surprising that the full power of these devices is also unuseable, laptops and portables are always lacking and reliant on super throttling and power / thermal management ..

    1. Re:fucking google should adopt posix by RyuuzakiTetsuya · · Score: 1

      Well. No. The problem you'd run into is that some apps on some phones wouldn't compile in any meaningful period of time

      Dalvik solves a lot of those problems.

      (And introduces new ones to boot.)

      --
      Non impediti ratione cogitationus.
    2. Re:fucking google should adopt posix by sg_oneill · · Score: 2

      I think your misunderstanding the scope of POSIX. Posix handles a number of unix type contingencies but its somewhat mute on a lot of I/O. For instance there isn't any standard for Audio. There ALSA, AudioKit (on macs, its a unix too!) , Jack, OSS, FFADO, Pulse, GStreamer and so on.

      Then for graphics you've got framebuffers, GL, X windows, Mir and so on.

      And pretty much no standards for driving Phone hardware, and no your favorite open source "One day a phone will use this" impleentation doesnt count.

      Most of which are somewhat unsuitable and overbloated anyway.

      You are right in some sense in that Androids weak point has been traditionally situating drivers in the davlik core making C/C++ coding have to loop back into java to access it , although as time goes on Google has gotten wise to this. I worked on a project maybe 4-5 years ago porting SIP software to the android and it was nearly impossible to get any sensible latency due to the fact there was no native audio driver we could find and the JNI davlik ones where just terrible. Apparently this isn't the case anymore, and newer android doesnt really have this problem.

      The problem for App developers though, is that unlike iPhone where apple has tight control over loadout and has made it silky smooth to upgrade (Well compared to reflashing most droid models) Androids tend to end up stuck on the OS revision it shipped with meaning theres a hell of a lot of Android 2.x phones out there that are next to useless for cutting edge development.

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    3. Re:fucking google should adopt posix by phantomfive · · Score: 1

      POSIX doesn't have an API for high-speed graphics, or for power management.

      Other than that, well, actually they do support POSIX. :/

      --
      "First they came for the slanderers and i said nothing."
    4. Re:fucking google should adopt posix by Anonymous Coward · · Score: 0

      Well. No. The problem you'd run into is that some apps on some phones wouldn't compile in any meaningful period of time

      I can compile MySQL, Postgres, or the Linux kernel in about 10 minutes.

      You're telling us that a fart app will take longer than that?

      Oh--and if you're actually compiling the binaries on the phone itself, you're doing it wrong. (This would be why we have cross-compiling.)

    5. Re:fucking google should adopt posix by RyuuzakiTetsuya · · Score: 1

      The options are either compile a dumb ARM binary that's not optimized for your particular flavor of ARM(which is horribly inefficient), compile lots of binaries for lots of flavors of ARM(not to mention flavors of MIPS/x86/etc).

      What about when 64bit ARM comes around on Android? Half the fun of 64bit ARM is ditching a lot of legacy ARM crap, I believe Thumb mode being one of them.

      Either Google or the phone vendor would have to supply compiler farms to do this for everyone who's upgraded their phone and now needs to get ARM v(n+1) versions of their app or you're stuck with inefficient code because lol choices or you compile on the phone itself.

      Dalvik cuts through this and just uses a pretty solid VM.

      --
      Non impediti ratione cogitationus.
  3. Re: Keep you day job by Anonymous Coward · · Score: 1

    Carmack, the creator of Doom, is a console developer? Surely he has developed for consoles, but he is a hardcore developer that has been known to rewrite kernel drivers to push performance.

  4. this is a more interesting quote by zr · · Score: 1

    The other thing that was a real surprise to me was how important the power management was, not just for battery life, but for performance. Because if you go ahead and fire up all four cores at the top clock rate and draw a bunch of stuff, you overheat within minutes. If you really load everything onto the system that can draw power, you will probably thermally throttle down in under a minute. So you literally just can’t use all the capabilities of the system at the same time.

    1. Re:this is a more interesting quote by tlhIngan · · Score: 1

      It's not an interesting quote, it's the truth.

      People rag on Apple etc., when they only do dual-core, and yet, it's the reason WHY they do dual-core.

      Quad-core (and "octacore") are a joke because the power consumption is high. Even at 100mW/MHz (=1W/GHz) which is what ARM does, the sheer speed of modern SoCs mean they dissipate a fair bit of power.

      E.g., a 2.5GHz Snapdragon with 4 cores is 10GHz or 10W of power consumption. Of power-efficient ARM at that, which is 10W of heat in a small area that has very little way of being dissipated (there's memory chips over the SoC, and PCB underneath).

      You're going to thermally limit quick. I've seen the calculations and it's roughly two cores going full bore 100%, while the third and fourth can only manage 50% to be at the most processing you can have without thermal shutdown. This was running basically right at the max junction temperature with room temperature cooling around it. Add in PoP packaging and enclosed packaging and your max performance is much lower.

  5. Huh? by Dan+East · · Score: 0

    Google still doesn't really endorse native code development

    What the heck is he talking about? Android has the NDK - native development kit - which allows development in c++ using the standard libraries and even The OpenGL ES API, which is exactly right up Carmack's alley. Plus his code will compile straight across under iOS as well. I really don't understand what he feels is preventing him from going that route, unless he wants to do a ton of UI widget stuff that is platform specific.

    --
    Better known as 318230.
    1. Re:Huh? by Anonymous Coward · · Score: 3, Insightful

      Google strongly encourages the use of Java rather than the NDK. And have you ever *used* the NDK? It is a gigantic pain in the ass to work with, presumably because Google hasn't put a whole lot of effort into it.

    2. Re:Huh? by Osgeld · · Score: 0

      NOOO how could native C++ ever be a pain in the ass

    3. Re:Huh? by Anonymous Coward · · Score: 2, Funny

      Pfft, this Carmack guy. He just don't know what he's talking about. Who does he think he is, the creator of Unreal or something?

    4. Re:Huh? by phantomfive · · Score: 1

      Android has the NDK - native development kit - which allows development in c++ using the standard libraries and even The OpenGL ES API, which is exactly right up Carmack's alley.

      He's using the NDK, but it's not really standardized. Different phones have different hardware configurations, and when you are doing 3D graphics, different phones have to be programmed differently.

      To some degree this is a problem with iPhones, but there are not nearly as many models, so there is similarly less work.

      --
      "First they came for the slanderers and i said nothing."
    5. Re: Huh? by Anonymous Coward · · Score: 0

      Creator of Doom actually. Google his name.

    6. Re: Huh? by Anonymous Coward · · Score: 0

      I Googled "his name" and I got a hit for He is We lyrics. What are you trying to say?

    7. Re:Huh? by PC_THE_GREAT · · Score: 1

      Doom/Quake moron :)

    8. Re:Huh? by tlhIngan · · Score: 1

      He's using the NDK, but it's not really standardized. Different phones have different hardware configurations, and when you are doing 3D graphics, different phones have to be programmed differently.

      To some degree this is a problem with iPhones, but there are not nearly as many models, so there is similarly less work.

      The bigger difference though is the OpenGL capabilities report is more accurate on iOS, or easily worked around. Given there's only 7 (soon to be 8) different GPUs out there (of which realistically, you only need to support 3-4), it's a lot easier if you find a bug since it'll be hit by lots of other devs.

      On Android, despite plenty of phones having the same SoC, the video drivers used in them can vary dramatically enough that if you rely on their capability report you'll find phones that work, and a lot of phones with strange bugs, even on the same GPU. You'd think there would be more consistency since there are only about 4 different SoC vendors and 4 different GPU vendors.

      Of course, the other thing is the whole quad core thing. It's a cheat - and why Apple keeps using dual cores. Because thermal limits mean you can't get full speed on 4 cores for more than minutes at a time. Basically just long enough to get through a benchmark. At the very most, you can use 2 cores full speed, while the other two have to be used at a max of 50%. It doesn't matter the SoC - all quad-cores suffer the same problem.

    9. Re:Huh? by BlackHawk-666 · · Score: 1

      Well played, sir. I tip my hat to you.

      --
      All those moments will be lost in time, like tears in rain.
    10. Re:Huh? by Dan+East · · Score: 1

      Yes, I most certainly have. Check out Flickitty in Google Play or the iTunes App store. 99.9% of my code is identical in both platforms, which of course is all C++.

      --
      Better known as 318230.
  6. Re: Keep you day job by binarylarry · · Score: 2

    Wow you sound very knowledgeable, do you have a website or mailing list I could subscribe to?

    --
    Mod me down, my New Earth Global Warmingist friends!
  7. Re: Keep you day job by Anonymous Coward · · Score: 0

    Yeh sorry, no. If you work in high performance work like games/VR/graphics rendering in general, no, native code development didn't vanish 2 decades ago. It's still going very strong, because no compiler has yet fulfilled the promise of being as smart as you are when compiling a high level language.

  8. Couldn't you just stream video to the phone? by Anonymous Coward · · Score: 0

    No need for the phone to do anything except receive data and display it; couldn't you just stream visuals set up for use with a VR solution like Cardboard or Samsung's thing to the phone from a computer?

    1. Re:Couldn't you just stream video to the phone? by Ceriel+Nosforit · · Score: 1

      There's work being done to put compute in 3/4G base stations, since PC sales have been declining.

      There might be a market for a console-like solution that works on the same 'carrier' as those base station things.

      Seems like cognitive radio & 60GHz tech tier though. Right now that means waiting for multiple IP mongers to compete with 60GHz SiO so the prices come down from la-la land.

      --
      All rites reversed 2010
  9. Re: Keep you day job by Anonymous Coward · · Score: 0

    You're an idiot.

    Nobody except the most assbackwards stick-in-the-mud developer would ever develop in Java. I can name exactly one game written in Java (Minecraft) and it has horrible performance on everything except iOS and Xbox360, because there it doesn't use Java.

  10. Re: Keep you day job by Anonymous Coward · · Score: 0

    My next tablet will be MS Windows 9, since I bought a used Android tablet and it was bricked because he was probably updating his operating system tablet that I got for very cheap.

  11. Carmack FTW. by engineerErrant · · Score: 5, Insightful

    I have been an Android developer for two years and a Java developer for almost 15, and even a former Google employee, and...in my estimation, Carmack is 100% right.

    Despite how much more I like Java than lower-level languages, Google's software stack is a complete disaster. It's poorly designed, bug-riddled garbage that I have actually considered re-writing parts of, even in the middle of a high-pressure project. What makes matters so much worse is Android's distribution model: rather than the direct-to-consumer approach that Apple takes, Google distributes Android indirectly via its device vendors, who can provide arbitrarily modified or out-of-date versions of the infrastructure that you're expected to support when dealing with angry customers who don't understand why their network stack mysteriously doesn't work.

    The NDK is not an answer. It's a wreck because JNI is a wreck. I've been using JNI since 2002, and almost nothing has evolved since then - it was never anything more than a token olive branch to luddite C++ developers in 1995, and probably never will be. Ultimately, Java is excellent for mature devices (like servers), but is not suitable for emerging devices (like all the mobile devices we're seeing now) because of its runtime overhead.

    Despite Apple's many shortcomings, one of the key points they get right is that mobile development needs natively compiled, non-runtime (or thin-runtime) languages. And, of course, libraries that work. Apple isn't exactly the gold standard on that either, but at least they're miles ahead of "beta early, beta often" Google.

    1. Re:Carmack FTW. by Anonymous Coward · · Score: 0

      rather than the direct-to-consumer approach that Apple takes, Google distributes Android indirectly via its device vendors,

      This is something I still don't understand. The freedom of hardware and software is what PC fans proud themselves in on Windows and Linux and complain about Mac and the home consoles. And yet it's something that people, including the most hardcore nerds, hate about Android.

      Sure Google's code is probably far from ideal and if they want to fix the situation, that should be their priority, but what else should they do?

    2. Re:Carmack FTW. by drinkypoo · · Score: 1

      This is something I still don't understand. The freedom of hardware and software is what PC fans proud themselves in on Windows and Linux and complain about Mac and the home consoles. And yet it's something that people, including the most hardcore nerds, hate about Android.

      You're right, you still don't understand. Users don't hate it about Android. Developers do, because it makes things complicated. Luckily for Android, Developers also hate Apple, because Apple.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  12. Design to an appropriate platform. by ledow · · Score: 2

    It's back to the age-old arguments.

    You can have the speed of native code, if you deal with the problems of native code (device compatibility, non-portability, security, etc.)

    Or you can have the security and cross-platformness of some standardised intermediary language that basically runs as a VM at a slightly slower pace.

    To be honest, I think Carmack's best work is long behind him, but there's also a need to develop on appropriate devices. If you need a device to be that fast and powerful, then aiming at smartphones and tablets probably isn't the best idea at the moment - they aren't the cutting edge of the market and won't be for a long time. In the same way that aiming at the 286 probably wouldn't have been the best idea for Doom, or that aiming only for software rendering probably wasn't the best idea for Quake.

    Get the code going and providing something people want, and they will either buy devices that can run it, or ask you what you need for a port to work. By the time you're finished, the speed you're after will be available in the next device to launch.

    Isn't this how cutting-edge development has always worked? Had to have huge resources and powerful machines totally unlike those seen before to make the software run at the speeds you need while you're developing it. Then a year after release, everyone has those devices and soon people are calling your code "old"?

  13. Re: Keep you day job by Zontar+The+Mindless · · Score: 1

    native code development vanished with windows 95 there buddy

    So all the cool kids are rewriting their DB servers and OS kernels in Python? How did I miss that?

    --
    Il n'y a pas de Planet B.
  14. Re: Keep you day job by Anonymous Coward · · Score: 0

    > native code development vanished with windows 95 there buddy

    rofl dude.

  15. Re: Keep you day job by Anonymous Coward · · Score: 0

    oh you can pretend all you want its still obscured by endless layers of os management sandboxing and api's

    so just what ASM language do you program your windows 7 app in?

  16. Re: Keep you day job by Anonymous Coward · · Score: 0

    so what assembler do you use for windows server? compiled code != native code

    course I dont expect a comp sci moron to understand that

  17. Input on smartphone games by tepples · · Score: 1

    Like I said, very cool portable game system

    How so? Some game genres fit a touch screen, such as point-and-click games, endless runners and other steering games (such as Flappy Bird, Canabalt, Temple Run, Jetpack Joyride, and car racing), and shmups. But beyond those genres, I'm told most people don't buy a MOGA or other Bluetooth gamepad. Without directional input or discrete buttons, good luck getting an exploration-oriented platformer or a fighting game to work well on a flat sheet of glass. I tried the free version of Pixeline and the Jungle Treasure on my Nexus 7 tablet, and making even basic jumps with the virtual gamepad was an exercise in frustration. But if you can think of an enjoyable platformer made for Android, let me know. I'm itching to try its free first level.

    1. Re:Input on smartphone games by Anonymous Coward · · Score: 0
  18. VB.NET and Java by tepples · · Score: 1
    Anonymous Coward wrote:

    Hasn't coding in Java been proven to cause brain damage? Like worse than TCL or BASIC?

    Visual Basic is C# with a different syntax, and C# uses the same overall concepts and almost the same syntax as Java. So if Visual Basic causes brain damage, so does Java.

  19. OpenGL by tepples · · Score: 1

    POSIX doesn't have an API for high-speed graphics

    De facto it does. Every system I'm aware of that supports both POSIX and high-speed graphics supports OpenGL (or OpenGL ES).

    1. Re:OpenGL by phantomfive · · Score: 1

      That's an interesting point

      --
      "First they came for the slanderers and i said nothing."
  20. Use 100 percent of your brain by tepples · · Score: 1

    The human brain has an analogous limit. A healthy human being uses 100 percent of his or her brain, just not all at the same time.

  21. Benefit of stringent requirements by tepples · · Score: 1

    Actually, Apple's App Store is a perfect model for console development, because Microsoft, Sony and Nintendo have far more stringent requirements.

    But is there a good reason why these stringent requirements don't benefit the end user?

  22. Separate model and view by tepples · · Score: 1

    You can have the speed of native code, if you deal with the problems of native code (device compatibility, non-portability, security, etc.)

    Theoretically this has a solution: separate the model and view. Make your model in the portable language and a view for each platform in the platform's preferred language. Then it's just a recompile to hit each instruction set. But the problem comes when a platform requires a language not shared with other platforms, such as J2ME phones requiring 100% Pure Java, or Windows Phone 7 and Xbox Live Indie Games requiring C#. (In theory it's verifiably type-safe CIL for the .NET CF, but in practice that means C#.) Second- through fourth-generation game consoles had it worse: one used a 6502 family CPU while the other used Z80 or 68000 or both, and C compilers for those architectures weren't quite up to speed yet.

  23. Re: Keep you day job by Anonymous Coward · · Score: 0

    Using APIs and libraries is not the same as running interpreted code. You don't have a fucking clue what you are talking about and you have probably never written a single line of code in your entire, however brief, life.

  24. Re: Keep you day job by Anonymous Coward · · Score: 0

    compiled code != native code

    Compiled code is exactly that. What do you think a compiler does?

    You sound like some little kid who has never touched a programming language or compiler.

  25. Something people want by tepples · · Score: 1

    Get the code going and providing something people want, and they will either buy devices that can run it, or ask you what you need for a port to work.

    Some persistent Slashdot users claim that if "devices that can run it" aren't already widely deployed, then the product inherently isn't "something people want". They use the example of a PC in the living room, which is currently an unprofitable niche because most people who want to play video games on a TV are allegedly better served by a PlayStation $digit, despite its lack of selection and lack of user-made game mods, as opposed to a full-size PC. If you disagree with this, I'd be interested in what you have to say.

  26. please by Anonymous Coward · · Score: 0

    PLEASE John Carmack, build us a better mobile os?

  27. Heatsink by angryfeet · · Score: 1

    Sounds like phones need some sort of thermal interface to their dock, which can then have large heatsinks to suck the heat out.