The UI grind
-
I guess I overstated it. Basically here's the thing - I'm working on a machine running @ 240Mhz, with 300kB of usable internal RAM, 4MB of PSRAM accessible via SPI @80MHz, and a display operating at 20MHz. You'd think I'd need a lot of creativity to make that work. I did. I already put all that creativity into GFX - the library I used to make these screens. Basically, in a sense I did automate the sh*t out of it. But I can't automate everything. For starters, typesetting true type fonts without some sort of sophisticated open-type layout system requires manual tweaking, as does just figuring out where to put everything in 480x800 (yes the display is in profile) I'm considering adding a .bmp save feature just so I can render the screens to files on PC (GFX runs anywhere but i don't have drivers for windows so it will only draw to bitmaps) and that would save some turnaround time because of the upload times on the device every time i make a code change. I haven't had time to build out my layout/"windowing" engine yet or this would be somewhat easier. The bottom line though is, the creative stuff is behind me. Now it's just placement and tweaking. The actual functionality of the UI is pretty limited due to the nature of the device. The only challenge was making it pretty on a machine this petty.
Real programmers use butterflies
Ah, I see your point. So if I get it right, you're doing a heap crap lot of grunt work, GUI boilerplate not being any more enjoyable, than any sort of boilerplate. That's why I didn't get your point first, my product is a Windows executable and Windows is pretty good at taking grunt boilerplate off my shoulders.
-
Does anyone actually like creating screens/user interfaces? I wish I had someone to delegate this to. I wrote some fantastic supporting code to make all the screens look pretty, with an easy(ish) to use API (given its complexity and large featureset) - that doesn't mean I want to have to use it myself! :laugh: It's a slog, making screens. Just rote code and very little problem solving or creativity. It's times like this that make me eager to move on to my next project.
Real programmers use butterflies
Yes, I enjoy it, but then I work in plain vanilla php, building things from scratch, so there is plenty of creativity involved. Most often, working with legacy code, I must just copy the ui of other pages in the code, but occasionally I do get to build something new and I enjoy figuring out the CSS to make it work (there is a rule around here, soon to change, thank God, that we only use javascript when we also have a noscript option). Even though I know that I'm often reinventing the wheel, I find it a fun little diversion. I also enjoyed deriving physics formulas from scratch in my college classes, so that's a clue ;)
-
Ah, I see your point. So if I get it right, you're doing a heap crap lot of grunt work, GUI boilerplate not being any more enjoyable, than any sort of boilerplate. That's why I didn't get your point first, my product is a Windows executable and Windows is pretty good at taking grunt boilerplate off my shoulders.
I've done some UI work on an arduino - note the lack of the G but it's still a UI. Rotary encoders, buttons, joysticks, it's still all UI. I totally get the "how can I automate this?"
-
honey the codewitch wrote:
Does anyone actually like creating screens/user interfaces? It's a slog, making screens. Just rote code and very little problem solving or creativity.
I'll try not to take your comments personally. I've spent the last 20 years at my current employer doing the user interfaces and installers for our line of commercial ink-jet printing systems[^]. Our older products used C++/MFC, and our current ones C#/WPF. I genuinely enjoy what I do. The challenge comes in making the product's features available to the user in a way that they can easily discover and understand. WPF provides wonderful tools for making articulate, capable UI's in a fairly short amount of time. Our UI's are heavily graphical since they are acting as the control panel for a complicated piece of machinery. That said, the "screen stuff" that others in this thread have derided actually isn't as much of my job as you might think. My UI applications are multithreaded out the wazoo. They communicate with one or more Windows services that handle hardware control. We have external interfaces for control from customer workflow equipment. There's a substantial data management facet to things, keeping track of the machine configuration and setup. A major part of my job is to insulate the user as much as possible from timing and other dependencies imposed by the hardware. I acquired this part of my team's workload by default. Nobody else wanted to do it, which seems to correspond with the prevailing view in this thread. In my view, both the "screen stuff" and the underlying application require significant creativity and skill. The creativity comes from considering the user, the foremost priority when designing a user interface. Skill comes from mapping that consideration onto your product features flexibly and efficiently. I gain significant satisfaction from doing both.
Software Zen:
delete this;
Quote:
The creativity comes from considering the user, the foremost priority when designing a user interface.
When I have said this very sentiment to people in the past, I very often receive head-tilted, forehead scrunched, incredulity in response. I would make one caveat, however. The same sentiment applies to everything else in software. Even to the point of having empathy current and future colleagues who may come later to repair or extend one's work. Empathy is a highly underrated character asset. Just my opinion, of course. :)
Cheers, Mike Fidler "I intend to live forever - so far, so good." Steven Wright "I almost had a psychic girlfriend but she left me before we met." Also Steven Wright "I'm addicted to placebos. I could quit, but it wouldn't matter." Steven Wright yet again.
-
Does anyone actually like creating screens/user interfaces? I wish I had someone to delegate this to. I wrote some fantastic supporting code to make all the screens look pretty, with an easy(ish) to use API (given its complexity and large featureset) - that doesn't mean I want to have to use it myself! :laugh: It's a slog, making screens. Just rote code and very little problem solving or creativity. It's times like this that make me eager to move on to my next project.
Real programmers use butterflies
I liked the days of the old Winforms. I don't mind HTML, but super dislike XAML and scaffolds like React. I can work in them, but they are not fun to me and I find myself delaying building them. Note I have not tried the new Winforms yet.
-
Yeah, I can't really do that in 300kB of primary ram and 4MB of 80mhz secondary ram on a CPU @ 240mhz attached at 20mhz to an 800x480 display. There's very little room for any niceties. I do support True Type on it though. :)
Real programmers use butterflies
About 40 years ago I wrote a full screen text editor with word wrapping that ran in 8kb of RAM (about 7K of code and 1k of data) and could handle editing large files by windowing through them (it used a second temp file to manage the data it couldn't keep in memory, with a stack algorithm to keep it fast). Oh, and it was all hand coded assembly (I also wrote one in BASIC to run on the same hardware, but it was more restrictive and had to page code in and out). It should be 'easy' to write a dynamic screen layout system in 300k, as long as you apply appropriate restrictions (e.g., no 1MB GIFs) ;)
-
About 40 years ago I wrote a full screen text editor with word wrapping that ran in 8kb of RAM (about 7K of code and 1k of data) and could handle editing large files by windowing through them (it used a second temp file to manage the data it couldn't keep in memory, with a stack algorithm to keep it fast). Oh, and it was all hand coded assembly (I also wrote one in BASIC to run on the same hardware, but it was more restrictive and had to page code in and out). It should be 'easy' to write a dynamic screen layout system in 300k, as long as you apply appropriate restrictions (e.g., no 1MB GIFs) ;)
A simple layout engine i could do given the time. This isn't really about that though. See the rest of the thread.
Real programmers use butterflies
-
Does anyone actually like creating screens/user interfaces? I wish I had someone to delegate this to. I wrote some fantastic supporting code to make all the screens look pretty, with an easy(ish) to use API (given its complexity and large featureset) - that doesn't mean I want to have to use it myself! :laugh: It's a slog, making screens. Just rote code and very little problem solving or creativity. It's times like this that make me eager to move on to my next project.
Real programmers use butterflies
Been a full-stack developer for a WinForms app for 15+ years. I actually enjoy the UI part as much as the rest (code, DB design/development). I am very particular about my UI work and have established a number of standards that I consistently follow. I make sure the other devs (who are much, much newer to the project than me) follow the same standards. They are not overly happen about that... :)
-
Been a full-stack developer for a WinForms app for 15+ years. I actually enjoy the UI part as much as the rest (code, DB design/development). I am very particular about my UI work and have established a number of standards that I consistently follow. I make sure the other devs (who are much, much newer to the project than me) follow the same standards. They are not overly happen about that... :)
I don't like bizdev and I try to avoid it. I don't look down on it, as we need folks to do it, and it is legitimate dev work, but I just do not like it, Sam, I am. I'm happy for you that you do. These days I mostly do hardware and software for little smart gadgets. It reminds me of coding back in the 80s when I learned, and when every byte counted. Getting true type fonts rendering on a system with less than 300kb of ram felt like a huge accomplishment.
Real programmers use butterflies
-
Does anyone actually like creating screens/user interfaces? I wish I had someone to delegate this to. I wrote some fantastic supporting code to make all the screens look pretty, with an easy(ish) to use API (given its complexity and large featureset) - that doesn't mean I want to have to use it myself! :laugh: It's a slog, making screens. Just rote code and very little problem solving or creativity. It's times like this that make me eager to move on to my next project.
Real programmers use butterflies
I do. Users usually deliver their UI design, we have to collect the spec from it. UI driven design is as old as the programmer-only degree. It is so crucial that they don't leave it to the IT to figure it out.
-
Never worked on GUIs but figured it would be as you described.
Robust Services Core | Software Techniques for Lemmings | Articles
The fox knows many things, but the hedgehog knows one big thing. -
Does anyone actually like creating screens/user interfaces? I wish I had someone to delegate this to. I wrote some fantastic supporting code to make all the screens look pretty, with an easy(ish) to use API (given its complexity and large featureset) - that doesn't mean I want to have to use it myself! :laugh: It's a slog, making screens. Just rote code and very little problem solving or creativity. It's times like this that make me eager to move on to my next project.
Real programmers use butterflies
Actually I love to make those UI screens. I try to make things accessible and simple for users. It's very hard to make a simple and useful interface.
-
Does anyone actually like creating screens/user interfaces? I wish I had someone to delegate this to. I wrote some fantastic supporting code to make all the screens look pretty, with an easy(ish) to use API (given its complexity and large featureset) - that doesn't mean I want to have to use it myself! :laugh: It's a slog, making screens. Just rote code and very little problem solving or creativity. It's times like this that make me eager to move on to my next project.
Real programmers use butterflies
I feel you! I LOVE creating the tools and I LOVE the satisfaction of customers using my tools, but actually using my tools myself is BORING. Check out my toy... BuilderHMI[^]