Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. It's harder to subtract code than to add it

It's harder to subtract code than to add it

Scheduled Pinned Locked Moved The Lounge
graphicsdesignvisual-studiocomhardware
9 Posts 9 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    honey the codewitch
    wrote on last edited by
    #1

    I'm simplifying my graphics library. I'm moving the responsibility for async operations, and other driver related nonsense outside the library. There are a number of reasons for it, KISS being the overarching philosophy. Previously I had tightly coupled drivers for this library for a bunch of display devices and platforms under Arduino but it's sort of out of scope of just graphics operations themselves. Now I have a draw on demand library that builds on my graphics library, draws as needed, and renders bitmaps to send to the display. There's very little need for a tightly coupled driver interface anymore. That means my capabilities queryable parameters get reduced significantly, no more read, async, or suspend. It's not necessary. But man, removing those breaks everything. I have endless template specializations for the various capabilities, like drawing synchronously vs asynchronously, or drawing on devices where readback isn't available (nixing things like alpha-blending and anti-aliasing). I don't need those anymore, but we're talking hundreds and hundreds of compile errors. Taking a break in the middle of it is difficult because getting back into it is tough. Adding features is easy by comparison.

    Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix

    A J L D 4 Replies Last reply
    0
    • H honey the codewitch

      I'm simplifying my graphics library. I'm moving the responsibility for async operations, and other driver related nonsense outside the library. There are a number of reasons for it, KISS being the overarching philosophy. Previously I had tightly coupled drivers for this library for a bunch of display devices and platforms under Arduino but it's sort of out of scope of just graphics operations themselves. Now I have a draw on demand library that builds on my graphics library, draws as needed, and renders bitmaps to send to the display. There's very little need for a tightly coupled driver interface anymore. That means my capabilities queryable parameters get reduced significantly, no more read, async, or suspend. It's not necessary. But man, removing those breaks everything. I have endless template specializations for the various capabilities, like drawing synchronously vs asynchronously, or drawing on devices where readback isn't available (nixing things like alpha-blending and anti-aliasing). I don't need those anymore, but we're talking hundreds and hundreds of compile errors. Taking a break in the middle of it is difficult because getting back into it is tough. Adding features is easy by comparison.

      Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix

      A Offline
      A Offline
      Amarnath S
      wrote on last edited by
      #2

      Ctrl z Ctrl z Ctrl z ...

      1 Reply Last reply
      0
      • H honey the codewitch

        I'm simplifying my graphics library. I'm moving the responsibility for async operations, and other driver related nonsense outside the library. There are a number of reasons for it, KISS being the overarching philosophy. Previously I had tightly coupled drivers for this library for a bunch of display devices and platforms under Arduino but it's sort of out of scope of just graphics operations themselves. Now I have a draw on demand library that builds on my graphics library, draws as needed, and renders bitmaps to send to the display. There's very little need for a tightly coupled driver interface anymore. That means my capabilities queryable parameters get reduced significantly, no more read, async, or suspend. It's not necessary. But man, removing those breaks everything. I have endless template specializations for the various capabilities, like drawing synchronously vs asynchronously, or drawing on devices where readback isn't available (nixing things like alpha-blending and anti-aliasing). I don't need those anymore, but we're talking hundreds and hundreds of compile errors. Taking a break in the middle of it is difficult because getting back into it is tough. Adding features is easy by comparison.

        Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix

        J Offline
        J Offline
        jmaida
        wrote on last edited by
        #3

        Totally agree.

        "A little time, a little trouble, your better day" Badfinger

        1 Reply Last reply
        0
        • H honey the codewitch

          I'm simplifying my graphics library. I'm moving the responsibility for async operations, and other driver related nonsense outside the library. There are a number of reasons for it, KISS being the overarching philosophy. Previously I had tightly coupled drivers for this library for a bunch of display devices and platforms under Arduino but it's sort of out of scope of just graphics operations themselves. Now I have a draw on demand library that builds on my graphics library, draws as needed, and renders bitmaps to send to the display. There's very little need for a tightly coupled driver interface anymore. That means my capabilities queryable parameters get reduced significantly, no more read, async, or suspend. It's not necessary. But man, removing those breaks everything. I have endless template specializations for the various capabilities, like drawing synchronously vs asynchronously, or drawing on devices where readback isn't available (nixing things like alpha-blending and anti-aliasing). I don't need those anymore, but we're talking hundreds and hundreds of compile errors. Taking a break in the middle of it is difficult because getting back into it is tough. Adding features is easy by comparison.

          Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix

          L Offline
          L Offline
          Lloyd Dupont
          wrote on last edited by
          #4

          Absolutely. That's one of the reasons why code usually become more complicated over time.

          Greg UtasG 1 Reply Last reply
          0
          • L Lloyd Dupont

            Absolutely. That's one of the reasons why code usually become more complicated over time.

            Greg UtasG Offline
            Greg UtasG Offline
            Greg Utas
            wrote on last edited by
            #5

            I'd say new capabilities is why a system gets larger and more complicated over time. Without refactoring, new capabilities become harder to add to the original architecture. But inside almost every system is a smaller system, struggling to get out. So if customers stopped their feature requests, refactoring could slowly shrink the code base, eventually reducing it to zero. :laugh:

            Robust Services Core | Software Techniques for Lemmings | Articles
            The fox knows many things, but the hedgehog knows one big thing.

            <p><a href="https://github.com/GregUtas/robust-services-core/blob/master/README.md">Robust Services Core</a>
            <em>The fox knows many things, but the hedgehog knows one big thing.</em></p>

            T 1 Reply Last reply
            0
            • Greg UtasG Greg Utas

              I'd say new capabilities is why a system gets larger and more complicated over time. Without refactoring, new capabilities become harder to add to the original architecture. But inside almost every system is a smaller system, struggling to get out. So if customers stopped their feature requests, refactoring could slowly shrink the code base, eventually reducing it to zero. :laugh:

              Robust Services Core | Software Techniques for Lemmings | Articles
              The fox knows many things, but the hedgehog knows one big thing.

              T Offline
              T Offline
              TNCaver
              wrote on last edited by
              #6

              If customers stop their feature requests, which would come first, refactoring shrinking the code base to zero, or the need for developers reduced to zero? :omg:

              There are no solutions, only trade-offs.
                 - Thomas Sowell

              A day can really slip by when you're deliberately avoiding what you're supposed to do.
                 - Calvin (Bill Watterson, Calvin & Hobbes)

              1 Reply Last reply
              0
              • H honey the codewitch

                I'm simplifying my graphics library. I'm moving the responsibility for async operations, and other driver related nonsense outside the library. There are a number of reasons for it, KISS being the overarching philosophy. Previously I had tightly coupled drivers for this library for a bunch of display devices and platforms under Arduino but it's sort of out of scope of just graphics operations themselves. Now I have a draw on demand library that builds on my graphics library, draws as needed, and renders bitmaps to send to the display. There's very little need for a tightly coupled driver interface anymore. That means my capabilities queryable parameters get reduced significantly, no more read, async, or suspend. It's not necessary. But man, removing those breaks everything. I have endless template specializations for the various capabilities, like drawing synchronously vs asynchronously, or drawing on devices where readback isn't available (nixing things like alpha-blending and anti-aliasing). I don't need those anymore, but we're talking hundreds and hundreds of compile errors. Taking a break in the middle of it is difficult because getting back into it is tough. Adding features is easy by comparison.

                Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix

                D Offline
                D Offline
                Daniel Pfeffer
                wrote on last edited by
                #7

                I forget who wrote this, but "I'm writing you a long letter because I don't have time to write a short one."

                Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.

                C H 2 Replies Last reply
                0
                • D Daniel Pfeffer

                  I forget who wrote this, but "I'm writing you a long letter because I don't have time to write a short one."

                  Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.

                  C Offline
                  C Offline
                  CraigSilvis
                  wrote on last edited by
                  #8

                  Blaise Pascal I believe

                  1 Reply Last reply
                  0
                  • D Daniel Pfeffer

                    I forget who wrote this, but "I'm writing you a long letter because I don't have time to write a short one."

                    Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.

                    H Offline
                    H Offline
                    haughtonomous
                    wrote on last edited by
                    #9

                    I have a book, a collection called "Great Short Stories of the English Speaking World" (or something like that) whose foreword explains that writing a great short story is far harder than writing a great novel. Perhaps the principle is more widely applicable than I thought!

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • World
                    • Users
                    • Groups