Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Cloud Earth AI Microsoft Programming Linux

Coalition Including Microsoft, Linux Foundation, GitHub Urge Green Software Development (bloombergquint.com) 136

"To help realize the possibility of carbon-free applications, Microsoft, the consultancies Accenture and ThoughtWorks, the Linux Foundation, and Microsoft-owned code-sharing site, GitHub, have launched The Green Software Foundation," reports ZDNet: Announced at Microsoft's Build 2021 developer conference, the foundation is trying to promote the idea of green software engineering - a new field that looks to make code more efficient and reduce carbon emitted from the hardware it's running on... The foundation wants to set standards, best practices and patterns for building green software; nurture the creation of trusted open-source and open-data projects and support academic research; and grow an international community of green software ambassadors. The goal is to help the Information and Communication Technology sector to reduce its greenhouse gas emissions by 45% before 2030.

That includes mobile network operators, ISPs, data centers, and all the laptops being snapped up during the pandemic. "We envision a future where carbon-free software is standard - where software development, deployment, and use contribute to the global climate solution without every developer having to be an expert," Erica Brescia, COO of GitHub said in a statement. Microsoft president Brad Smith said "the world confronts an urgent carbon problem."

"It will take all of us working together to create innovative solutions to drastically reduce emissions. Microsoft is joining with organizations who are serious about an environmentally sustainable future to drive adoption of green software development to help our customers and partners around the world reduce their carbon footprint."

VentureBeat also points out that Microsoft "recently launched a $1 billion Climate Innovation Fund to accelerate the global development of carbon reduction, capture, and removal technologies."

But Bloomberg explores the rationale behind the new foundation: Data centers now account for about 1% of global electricity demand, and that's forecast to rise to 3% to 8% in the next decade, the companies said in a statement Tuesday, timed to Microsoft's Build developers conference... While it's tough to determine exactly how much carbon is emitted by individual software programs, groups like the Green Software Foundation examine metrics such as how much electricity is needed, whether microprocessors are being used efficiently, and the carbon emitted in networking. The foundation plans to look at curricula and developing certifications that would give engineers expertise in this space. As with areas like data science and cybersecurity, there will be an opportunity for engineers to specialize in green software development, but everyone who builds software will need at least some background in it, said Jeff Sandquist, a Microsoft vice president for developer relations.

"This will be the responsibility of everybody on the development team, much like when we look at security, or performance or reliability," he said. "Building the application in a sustainable way is going to matter."

This discussion has been archived. No new comments can be posted.

Coalition Including Microsoft, Linux Foundation, GitHub Urge Green Software Development

Comments Filter:
  • If MSFT is serious (Score:5, Interesting)

    by Tough Love ( 215404 ) on Saturday May 29, 2021 @08:41PM (#61435516)

    If MSFT is serious about this then they should stop writing shit in Javascript.

    • What kind of TP does one use on Javascript?

    • by jmccue ( 834797 )

      If MSFT is serious about this then they should stop writing shit in Javascript.

      And they should force manufactures to build user upgradable Laptops, desktops and phones. people throwing away usable devices does more harm than anything else

      And while I am on a roll, force the use of fully Open Hardware, one can dream right

      • It's a two-edged sword. Literally just a couple of comments below your post is one that days "consumer facing GUIs don't use much energy anmymore", and that comment is pretty much spot on.

        Wearables, mid-range cell hones, small notebooks / netbooks go a day or longer on barely a few Wh worth of battery load.

        But their raw information processing power - all have advanced SoC graphics processors, some AI accelerators, multicore predictive branching CPUs, multi-gigabyte RAM and TB range (or close) storage, Gbps

        • I take your point, but if hardware lasted 10 years?

          10 years ago hardware didn't last 10 years, then suddenly it did. That's why I still use my 11 year old ThinkPad W510.

          Honestly though you are right those modern SoCs are amazing. My SO recently got some little arduino like gizmo from adafruit and the specs of that thing are amazing, it's faster than my first x86 PC by a wide margin (mine was a P133) with a similar clock rate but fewer cycles per instruction especially on the FPU and it comes with a DAC and

          • The most impressive thing to non-nerds is easily an ESP32 with an antenna wire hanging off of it. Tell 'em this little postage stamp is a dual-core ARM with more power than computers you did real work on back in the day and its own internal wifi and they lose their minds. And you can write code for it in practically any language you like, although I've mostly used it as an Arduino for the libraries.

            • That, or an STM32 with simikar specs (e.g. the recent H7). The can drive up to 256 MB of RAM, which you can buy for few $.

              But where it really gets nasty is if you take one with integrated 3D graphics, e.g. a RasPi. The flops on that thing is supercomputer material compared ti the early 2000s.

          • I take your point: 10 years old hardware is goid enough for you, ok.

            So should we have stopped development 10 years ago and call it "end of tech, beginning of sustainability". Perhaps.

            But look at what we've done since then: RasPi running off an 18650 with more muscle than your laptop; teal-time raytracing for about the same price points your laptop; TB SSDs for 2-digit prices.

            All of it may not be anything *you* need, but it drives the price cor other cool things down. For example seti@home / folding@home hav

            • I take your point: 10 years old hardware is goid enough for you, ok.

              That's kinda vague. I do most of my personal computing on this ageing laptop, since it's a convenient formfactor. I have a more rarely Ryzen desktop on which I do 4k video editing and the odd bit of deep learning.

              My point was that suddenly hardware does last 11 years ago. 11 years ago, 11 year old hardware was not really usable. 11 years ago a 11 year old machine was a single CPU P3/800MHz (dual socket did exist but were rare), with 256M (i

    • by Bert64 ( 520050 )

      Moving towards less efficient higher level languages has been the trend for a number of years with the excuse that the performance penalty doesn't matter on a modern system...
      But when you spread that over millions of systems, the increased resource usage becomes significant.

      People used to get a lot done on computers with memory measured in kilobytes, because developers tried to squeeze every bit of performance out of the hardware they could.

      • People used to get a lot done on computers with memory measured in kilobytes, because developers tried to squeeze every bit of performance out of the hardware they could.

        Yes, and the documentation to get it to work could get pretty thick from having to teach the user what was in many ways a new programming language. It may have been more intuitive and optimal for the task but it put a lot more work on the user to interpret the input and output. With some practice people could operate the screens and menus in their sleep, but that took time.

        I remember the old game consoles that would be found in basements, and would need an old TV that could use NTSC inputs. If the little

      • Moving towards less efficient higher level languages

        Higher level languages are not inherently less efficient, as they certainly have the potential to be as efficient as any other compiled language.

        So the problem isnt these higher level languages, its that compilers in general are still shitty.

        Visual Basic 6.0 from visual studio 1998 used microsofts standard back end compiler, the same one used by visual c. It did every optimization the c compiler did. Yet VB was still "slower than C" in practice, and that wasn't because of the language, it was because t

        • The issue is more insidious than that. The compiler must interpret the code, ambiguity leads to inefficiency. Things like OO inheritance and reflection inherently require more backend logic during runtime, more context switches, etc.
          • That's one thing I like about rust, it gives you that reduced ambiguity while also being very expressive.

            • Hello fellow Rust fan.

              I don't see many reasons to /not/ use Rust where one would put a Python/Perl script into production.

              • There is one limited use I could foresee, which is where you want to be able to make changes to code on a live server without having to shut it down. Rust *could* be great here, but it won't work due to a lack of a stable ABI, so you can't build interrelated but separate components that can be replaced on demand.

                Other than that, hands down I prefer to build even every day things like admin scripts in rust rather than using dynamic languages. Sure it takes longer to write, but there are never any unexpected

          • Things like OO inheritance and reflection inherently require more backend logic during runtime

            Do they? Inheritance can be dealt with using a flattened vtable or whatever functional equivalent of it you're using (inline caching, etc). Reflection shouldn't cause any more resources to be used on non-reflecting code.

      • The increased resource usage is significant (and annoying) even on individual computers. Maybe it's just me but Electron-based apps (Teams, VSCode) feel even heavier than Java based ones. And that's saying something since the Java ones were considered the bloated ones not too long ago
    • It doesn't matter what language they write it in, provided they log in through a VT100.

      That's really the easiest way to write green code.

      • My VT100-AA was white, you insensitive clod! I only wish they weren't so goddamned big, I'd have kept it forever and ever amen. If it was a vt220 I'd probably still have it.

        I also regret letting go of my B of A homebanking terminal. 300 baud internal modem, 40 character wide RF output... oh yeah baby. I BBS'ed on that thing for a little while, yeowch.

    • Re: (Score:3, Interesting)

      Outlawing Bitcoin will have more of a concrete effect. It's consuming half of one percent of all energy production in the USA today.

      • Outlawing Bitcoin will have more of a concrete effect. It's consuming half of one percent of all energy production in the USA today.

        Outlawing.

        I don't think that word does what you assume it will, anymore.

        • I don't assume it would be completely eliminating it. It will certainly hinder its use for non-criminal transactions. Focusing the exchanges ore heavily on criminal transactions rather than legal transactions will make users even more vulnerable to theft by the exchanges themselves, and reduce or eliminate the ability of users to counter fraud. Ransomware authors are unlikely to care. Legitimate vendors in China now who might wish to accept bitcoin or other cryptocurrency will find it difficult or even unsa

    • They have.

      They're now writing shit in Typescript.

    • They should start making an efficient version of Windows Update.

    • by Z00L00K ( 682162 )

      If you are serious about green datacenters - avoid scripting languages alltogether since all of them have a lot of overhead.

      Javascript is a tricky beast because it actually throws the energy consumption over to the user in many cases. But Javascript is good for input validation. However some input validation could have been done for the input fields declarations themselves, e.g. number with optionally max two decimals to be 'format="0[.##]"' and that would save a lot of Javascript code.

      For media outlets (ne

    • by DeBaas ( 470886 )

      And start with MS Teams, if anything will make your fans spin up it's Teams

    • by AmiMoJo ( 196126 )

      Javascript isn't the problem. When it gets compiled down to machine code the performance is barely any different to languages like C for most things that aren't artificial benchmarks or niche high performance computing applications.

      Most of the delays are things like I/O to disk or network, waiting for a database server to cough up the requested records.

      The big energy savings come from changing the algorithm.

    • by Kisai ( 213879 )

      If everyone is serious about this, they would abandon writing everything in HTML5, let alone Javascript.

      Like the reason why computers still feel slow, is the sheer amount of garbage frameworks that are unnecessary, full of feature creep, being pulled in (see Node.JS, TypeScript, Dart, Elm, jquery, Angular, React, etc)

      Why does a game, which has it's one UI, Logic, font rendering, input, etc, need to run inside a HTML5 web browser on top of ANGLE, when the only HTML tag it uses is the CANVAS tag, when it coul

    • by MSG ( 12810 )

      It's tempting to lump JS in with other inefficient interpreted languages, because as a group they do tend to be rather slow and inefficient. But, that's a naive point of view. JavaScript is actually one of the most efficient languages you can choose. For all its warts, JavaScript engines are built on many years of academic research on compiler design, and produce extremely fast and efficient code. It's not going to match C for most algorithms, but it's not unusual for JavaScript to beat Go, for example.

  • Announced at Microsoft's Build 2021 developer conference, the foundation is trying to promote the idea of green software engineering - a new field that looks to make code more efficient and reduce carbon emitted from the hardware it's running on...

    *eyes carbon coming out of computer* Uh oh!

  • You first Microsoft! (Score:4, Interesting)

    by Gravis Zero ( 934156 ) on Saturday May 29, 2021 @08:48PM (#61435532)

    Honestly, who is Microsoft is tell people they need to make their code more efficient when Windows 10 needs over 10 GB just to install? If this were anything beyond a PR stunt then Microsoft is in the #1 position to lower the power consumption for the most computers on the planet.

    • Microsoft could make a big reduction in emissions by porting their entire ecosystem to ARM.

      • no, would still have the same problem of being resource pig. windows servers at work take four times the resources to do same (or worse) job. Get a real OS and save some watts.

      • by lsllll ( 830002 )
        No! The resources required to create 1.3 billion ARM machines running instead of the existing i386/x86-64 processors would dwarf whatever you would gain from switching to ARM.
        • In my case I upgraded from 3 older PCs to a 2nd hand but newer Intel machine with a 90 day warranty.

          A Broadwell laptop from 2015 runs rings around the Core 2 Duo and Bay Trail Atoms it replaced, while using a fraction of the power of a Core i7 desktop from 2010.

          The numbers for me on ARM don't yet stack up, either spec wise or cost - A full kitted out 8GB Raspberry Pi 4 once you add the sales tax, local markup and exchange rate is more than half the price of the laptop (costing a quarter of what it would hav

      • Not really, once you actually start loading down the CPU with complex tasks the x86 will win. The issue is that folks choose to write garbage that includes every library in existence while simultaneously following bloated "patterns" that ought to be ditched in favour of compact intelligent coding. Bonus points for idiots who put everything into atomic functions and don't realise each one of those is a context switch. Check the low level code an average electronics hardware designer writes versus a software
        • by sfcat ( 872532 )

          Bonus points for idiots who put everything into atomic functions and don't realise each one of those is a context switch.

          Atomic functions absolutely don't cause a context switch. What causes context switches is too many threads/processes for the CPU (and I/O interrupts to threads which aren't currently executing). Atomic functions usually work by using a lock which works by using an uncached memory read/write cycle (write to RAM, read it and make sure it is the value you wrote). The faster processor is usually the one with the better memory interconnect these days. What you described is completely inaccurate.

          • That very much depends on how the compiler interprets your code. Yes, if it's nice and simple it can just plan the registers accordingly, but then it's more likely to unroll the code anyway unless it you optimize to minimum size. The issue arises when the programmer thinks they're smart and does (excuse my French) "weird shit". Then, depending on the exact architecture of the platform you're working on, it can range from switching in another register bank to pushing everything onto a stack or worse to isola
    • It's about energy consumption. Data that spends most of its life at rest doesn't consume a whole lot of energy, especially if it's in an SSD where there aren't any heads to move around each time it's accessed.

      • You're not wrong... but there is soooo much more to it than just that. Every single time an application is loaded, it will try to load DLLs and in doing so it will sift through multiple versions to find the right version. Then you have layers upon layers of indirection with an incredible number of libraries between applications and the kernel. Then at the very core of it all is the energy inefficient Windows NT microkernel design. One energy draining issue is that a lot of InterProcess Communications ar

        • Microsoft barely has a microkernel design. They have the HAL, but processes don't run on that, just the kernel. The other windows processes run on the kernel.

          OSX by comparison did the same thing only very early on, and now OSX processes run on Mach. So it really is a microkernel OS in a way that Windows isn't.

          Of course, neither is an all-in, balls-deep microkernel system, where a variety of processes do the jobs otherwise done by the kernel. The only mass-market systems (like, you could just walk into a ret

  • For years (Score:5, Informative)

    by bobstreo ( 1320787 ) on Saturday May 29, 2021 @09:01PM (#61435546)

    I was running all of my work via a dual core 167Mhz Sun desktop with about 192 MB of memory.

    Web server, mail server, all kinds of other things server.

    The pure bloat of current operating systems and application stagger my imagination.

    But then again I'm old.

    One of my current laptops has a mind blowing 4Gb of memory and a 1Tb drive.

    I still remember when I got the first 300Mb drive for my (older) sun desktop. I think it was a couple $k for just the drive.

    • by lsllll ( 830002 )

      There are systems programmers, and then there are application programmers. Systems programmers tend to dwell on execution speed and size footprints. Application programmers tend to dwell on everything but, unless it actually becomes a bottleneck, in which case they'll re-engineer some things or profile until they can get the speed they need.

      Writing TSRs in the DOS days was my first lesson in trying to be as frugal as I could. That's something most programmers nowadays don't even worry about, because in o

    • by hey! ( 33014 )

      "Bloat" is one term for it. Another might be "abstraction" -- or at least that's one *dimension* of bloat, along with feature creep. Software development has always been hard and to get the next marginal unit of behavioral complexity you end up taking on an exponentially increasing volume of cruft. And we've added a *lot* of behavioral complexity.

      Software that thirty years ago was compiled from source code and then statically linked with maybe a half dozen small libraries now uses myriad libraries and fr

  • by WaffleMonster ( 969671 ) on Saturday May 29, 2021 @09:31PM (#61435596)

    Most windows systems I get in front of are always doing something in the background. What consistently freaks me out you can even hear the fans spinning and when you touch the keyboard or mouse to wake it up it stops. I always think its some kind of malware yet every time I've bothered looking it turns out to be some trigger condition in the task scheduler.

    For a while I remember having to logout instead of disconnecting RDP sessions because of Windows bugs that would spin the processors. Supposedly it is long fixed but it still happens.

    Sure there is some lazy software that busy waits or uses game loops rather than eventing yet I suspect most of the energy waste is all of the bloated BS systems are constantly doing. Running tools like procmon on any random windows system f****ing ridiculous all the shit constantly going on.

    • > Most windows systems I get in front of are always doing something in the background

      Yes, mining bitcoin for hackers from around the world. There are compelling reasons _never_ to expose a Windows machine directly to the world.

  • by oldgraybeard ( 2939809 ) on Saturday May 29, 2021 @09:40PM (#61435600)
    shut it off
  • to associate their names with Green for Fund Raising and PR purposes. Nothing real here.
  • by tiqui ( 1024021 ) on Saturday May 29, 2021 @09:54PM (#61435636)

    massively wasteful operating systems, languages, tools, and architectures are now going to advocate shutting down all those server farms and all that "cloud computing" and advocate a return to assembly language coding and worrying about every bit and byte, so we can all stop using multi-gigaHertz processors and gigbytes of RAM and terrabytes of drive space and return to doing spreadsheets and word processing and cad and games etc on 16bit processors at perhaps 30MHz again? (with those chips all just sipping power because they are modern embedded architecture microcontrollers).

    Nah... I'm pretty sure they don't mean it.

    They're gonna keep advocating for huge server farms running 24-7 sucking down more power than some cities, just so users can speak voice commands into their shiny portable objects and a huge server somewhere can do all the background processing, and so on. They're still gonna run huge server farms round-the-clock so their crippled bloated operating systems can constantly phone home for bug fixes and updates (and verify all-important licenses, of course). They're still gonna support wasting gazillions of processor cycles around the world with servers passing web pages around in plain-text HTML form (loaded with oodles of adware and spyware javascript, of course)

    As is [sadly] so often the case these days, this is just bogus virtue signalling.

    These big companies want average uninformed idiots to think they are "good" (in the new modern "woke" eco-morals sense, certainly not any traditional morals sense) so they are making a big announcement. As a general rule of thumb: if you have to signal your virtue to others, then you have no actual genuine virtue.

    • Re: (Score:2, Flamebait)

      Complaining about virtue signalling is so common now that it has also become virtue signalling. "Virtue signalling" is not a valid criticism. Either facts are facts, regardless of whatever "personality faults" such as supposed "virtue signalling", or they're not. Complaining about virtue signalling is just trying to boost your complaint without needing to add any meaningful criticism.

      now going to advocate shutting down all those server farms

      No, you stupid retard. Learn to fucking read THE SUMMARY.

      advocate a return to assembly language coding

      No. Nothing like that has been said, because that is a STUPID STRAWM

      • It's not flamebait because you literally don't have a counter argument - ie no flame is being baited.
    • I tend to agree with the OP, however bloat and inefficient software does not always mean wasted resources (developers time is also a resource). Finding out what actually wastes important resources and optimizing it could have some value. If Bitcoin miners had not moved to ASIC's they would be wasting even more power. Code that is bloated does not waste CPU if it is not run often (though it may use more disk and RAM). Optimizations for smartphones could inform improvements on PC's (e.g., browsers should
  • Enough said. This doesn't rate the energy it took to display pixels on my monitor.
  • If they back sweeping legislation like the green New Deal. In other words the sort of multi-trillion dollar transformation of our energy grid that would be needed to actually do something about climate change. But that would mean taxes and cutting into shareholder value. So we could feel good nonsense instead
    • The Green New Deal opposes getting power from nuclear fission and hydroelectric dams, which alone is enough reason to call it bullshit. Then it goes on about justice for indigenous peoples, supporting food produced by women and minorities, and all kinds of social justice and communism bullshit that has nothing to do with energy policy.

      Listen to the science. That's what these people tell us, right? Okay, I listened, and at the top of that list of solutions is hydroelectric power and nuclear fission. Also

  • The problem clearly isn't the enterprises or the Bitcoin miners. The problem is all the average people contributing 0.0001% of the total carbon footprint.

    This is what keeps coming up with environmentalism. Instead of doing something about the huge emitters and the chickenshit politicians who refuse to rein said huge emitters in, the responsibility is always foisted on regular people. Local governments inconveniencing fucking everyone with plastic bag taxes and drinking straw bans, then turning around and au

    • by Bert64 ( 520050 )

      Because most of these so called environmental efforts boil down to "punish people by making energy consumption expensive"... So when people become CEOs, they can now afford to consume more energy, and do exactly that.

      Things like plastic bag taxes and drinking straw bans are nothing to do with the environment, they are so companies can save money by no longer giving away plastic bags. Now you have to pay for plastic bags, so instead of using the free plastic bags for trashbags you will now have to buy more t

  • I use C++, and all the Fanboys that tell me it's unsafe and whatever can only suggest a fat memory hogging replacement that requires more servers, more electricity, and is slower at that.

    And then when I would pull out the argument that C++ is greener, suddenly science doesn't matter.

    I literally envisioned something like this would be posted about 10 to 15 years ago.

  • If these people were serious about "green" software development then they would not be afraid to mention nuclear fission power. If they can't mention nuclear fission then I can't take them seriously.

    These people talk about "listening to the science" but when it comes to listening they become blind and deaf to nuclear fission. Bill Gates will mention nuclear power but he doesn't speak for Microsoft any more. I'll see others lay out a list of options and they all generally come to the same conclusions. So

  • IMU In the US we aren't even allowed to do research on how much energy/silicon is wasted on it.

      * It doesn't actually stop privacy.
      * It reduced consumer control of their devices.
      * It makes it harder to support devices longer term.

  • This is the same Microsoft that is in holy war against the right to repair [slashdot.org], isn't it? What's the carbon footprint of a device thrown away, compared to one that can be repaired but is not running "green software"?
  • make code more efficient and reduce carbon emitted from the hardware it's running on

  • by Nermal6693 ( 622898 ) on Sunday May 30, 2021 @02:37AM (#61435960)

    They say "make code more efficient". Meanwhile their home page contains a little over five small paragraphs of text yet is about 4 MB.

  • You cannot have *carbon free* software, that is not possible. Even if you only write code on paper, that is still carbon based (wood pulp), and your pencil will use graphene too (that is also carbon).

    What we can do is, reduce the usage, when it makes sense. But even that is not straightforward.

    For instance, take an old core running on an older generation Xeon server 24/7.

    A) Do you want to spend time and effort optimizing the code, running it 50% faster (your programmers eat carbon too, and they exhume co2 t

  • Something like this exists in Germany already: die Blauer Engel ("Blue Angel") initiative
    https://www.blauer-engel.de/en... [blauer-engel.de]

    KDE is hiring 2 people to help make KDE software abide by the Blue Angel label:
    https://mail.kde.org/pipermail... [kde.org]

    BTW, it's goes beyond software: Home and Living, Paper and Printing, Electric Devices, Construction and Heating and Business and Municipality.

  • How much energy are all your continual test and build processes using?

    If I push a one line config change at work, a completely ridiculous amount of computation is done to check that. Entire operating systems are copied and booted in containers to run hundreds of permutations of app parameters with and without my configuration change, linters, parsers, notifications, etc. Not only is efficiency not the main concern, it isn't even a concern at all.

    "Yeah, but your developers were so preoccupied with whether or

    • by Pembers ( 250842 )

      If it's booting entire operating systems to check a one-line change, it could doubtless be made more efficient. But if you switched it off, how much energy would you (and your users) waste in finding and fixing bugs that it would've caught? There's that much-repeated quote about how if it costs $10 to fix a bug that a developer finds while coding, it costs $100 to fix the same bug if QA find it, and $1000 if a user finds it. A lot of that money is people's wages, but energy costs come into it too.

  • It wasn't that long ago that my main projects all had to be done on bare metal and co-located at some data center.

    Then hosting platforms made VMs so cheap that it became cheaper to let them handle it. But ya know more power drain for sure handling all the extra services in the background.

    Then I couldn't hang with the cool kids cause I didn't have some docker image that would get spawned and ran on every single commit on my coding projects so now we do that with a full suit of unit tests and web packing all

  • but it just gives someone else the power to shut you down. This was put on display when Palor (for good or bad) was booted by the providers for political reasons. Big Tech has proven over and over they can not be trusted! Ever!
  • Comment removed based on user account deletion

Put your Nose to the Grindstone! -- Amalgamated Plastic Surgeons and Toolmakers, Ltd.

Working...