|
Randor wrote: Seems to be human–nature that we keep building larger.
Or at least the nature of Complex Adaptive Systems[^]
They tend to crop up when enough agents (like human hands, but not limited to human activity) enter a system to make it "take on a life of its own" - be it governments, economies, ecosystems, large software projects, etc.
They are adaptive which means they tend to "defend themselves" in a manner of speaking, and that tends to lead to growth, inasmuch as they are successful at thwarting attempts to curtail them. In that way they are much like any living thing.
All of this happens through these agents, but the individual behavior of the agents themselves doesn't determine the behavior of the system as a whole. A CAS is a kind of non-linear dynamical system so its inputs don't directly correlate with its outputs.
Fascinating stuff, really. Or maybe I'm just a nerd.
Real programmers use butterflies
|
|
|
|
|
honey the codewitch wrote: the individual behavior of the agents themselves doesn't determine the behavior of the system as a whole. Yep, this applies to the system you described.
honey the codewitch wrote: Fascinating stuff, really. Or maybe I'm just a nerd. The Pareto principle[^] is absolutely real. I've seen the data myself when applied to > 120,000 global employees. I've also seen it applied to millions of customers and it was interesting to see that 20% of the customers were generating 80% of the support calls.
The WG21 committee is a small group of people steering the C++ language. Likewise there are only about ~200 or so program managers generating operating system features.
Anyway I get your point.
|
|
|
|
|
Quote: The WG21 committee is a small group of people steering the C++ language. Likewise there are only about ~200 or so program managers generating operating system features.
Both of those statements explain a lot.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|
|
Randor wrote: Seems like every year the operating system gets bigger. Some of the features should be made modular for easy removal.
The irony is that MS has spent a lot of time and effort refactoring Windows and making it more modular, and according to them, it's now as modular as it's ever been.
Of course, that doesn't translate into us end users being able to remove the crap we don't need...
|
|
|
|
|
I recall talk many years ago about modularizing Windows, and allowing users to add and remove components. Now, with the Windows store, MS is in a position to be able to do exactly that, but I don't get the impression they even remember those old ideas! (Or maybe I remember incorrectly! That is a possibility, too!)
|
|
|
|
|
You know, there's a MINIX for you.
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
Compare that to Delphi 3.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
modified 27-Mar-21 21:01pm.
|
|
|
|
|
It's because you deploy a self contained project!
You can trim it as small as before by deploying a framework dependent version. Checkout your publish settings!
|
|
|
|
|
I found out why it was doing that. I needed access to InstalledFontCollection , which is accessed with a reference to System.Drawing (the System.Drawing.Text namespace).
When I converted the app to .Net 5, I added the NuGet package Microsoft.Windows.Compatibility (on Microsoft's recommendation), which adds the 600+ files to the compiled project, and there's apparently no (easy or reasonable) way to relieve yourself of that payload.
WTF was Microsoft thinking?
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Were you using PrivateFontCollection ? I still don't see why it would be that much bigger as the standard framework would still need to access System.Drawing.Text
Edit
Sorry I didn't read your post thoroughly enough it's this bugger Microsoft.Windows.Compatibility
"I didn't mention the bats - he'd see them soon enough" - Hunter S Thompson - RIP
modified 18-Feb-21 7:01am.
|
|
|
|
|
Adding the cited package doesn't let you cherry pick what gets included in the compiled image. The solution (for my situation) was to uninstall that package, and all System.Drawing.Common to the project.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
How often is it that we run into a situation where we have a lot of backend or supporting code to write, and the client can see no progress?
I try to code around that, and break up those tasks so I can continue to show visible progress, probably drilled into me from the dotcom days always having to keep the venture capitalists happy with what we were creating.
But sometimes it's just not possible, especially when you're in a situation coding as a one person team developing way above your individual weight class, so to speak. Add that to developing two things that have to talk to each other wirelessly in the same language, on entirely different platforms.
Hence the title of this post, with apologies to Douglas Adams.
It can be a difficult situation, helping a client manage expectations. It really helps if you've shown a lot of progress early on and built some trust in the direction of the project with the client, but at the end of the day, it's ultimately about trust and client education, I've found. The more they know about the process of developing a product, the more likely they are to accept periods of it going "dark" in terms of visible advancement.
Still I prefer to keep these periods as short as possible and as rare as possible, because otherwise I myself get uncomfortable with the project. Spending too long in the weeds can make me lose sight of where I'm headed so as much as it's frustrating sometimes having to play show and tell every week it at least keeps me grounded.
Real programmers use butterflies
modified 17-Feb-21 17:58pm.
|
|
|
|
|
honey the codewitch wrote: It can be a difficult situation, helping a client manage expectations. No, it ain't. It need to be done.
You don't ask a doctor to manage expectations. He/she tells you how it is and you learn to cope.
honey the codewitch wrote: It can be a difficult situation, helping a client manage expectations. It really helps if you've shown a lot of progress early on and built some trust in the direction of the project with the client, but at the end of the day, it's ultimately about trust and client education, I've found. "We did the heart, now working on an unpredictable liver".
What progress I make is not part of a progress bar. Sometimes it very quick, some days me very slow. Like a Windows progressbar!
honey the codewitch wrote: show and tell every week it at least keeps me grounded. Ehr, once a week? We do daily. And some days, nothing changes really, you just throw away a lot of code.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
I find it useful to use anything from a simple todo list in notepad to a ticketing system (pick your poison) where I break down all the back-end pieces that need to be implemented, individually tested, and then integration tested, for that one simple "see, clicking on the button works!" 30 second demo.
That way I can keep my own focus, add things as I realize "oh yeah, that needs to be done too" and "oh yeah, that scenario / edge case needs to be tested as well", and, assuming whatever you're using to mark each step along the way as "done", the client can see the progress you're making.
And of course, there's the brain chemistry[^] associated with motivation to work on a task and then marking it as done!
|
|
|
|
|
I lose notes, or can't interpret them later, so I use // TODO: statements in my code. Visual Studio produces a task list out of them. The other advantage is I (usually) know right where my TODO needs to happen.
Real programmers use butterflies
|
|
|
|
|
I run into that - a lot. I do the UI's for our products. The main product line uses C# and WPF. I've found it's easier to prototype directly in the product and demonstrate how it works than to draw a bunch of static pictures.
Fortunately the 'client' is the rest of the R&D team on the product, along with service, sales, and occasionally training. All of them understand that the pretty face is about 0.1% of the solution.
Software Zen: delete this;
|
|
|
|
|
I do similar except i mock using winforms for gui stuff because i hate the wpf designers, and i prefer designers for RAD UI development where possible. In fact winforms is great for me the way i code because it generates code and can roundtrip from the designer so i get both methods. WPF you can do it too, but the tags are annoying, and that's what the designer generates. Plus the designer itself is near impossible to use IMO.
So i dev in winforms for the mock, separating most of the actual logic, and them port it into WPF for the final product, which can then be tweaked but all the major elements and overall flow is there.
Real programmers use butterflies
|
|
|
|
|
I don't use the WPF designers myself. It's far simpler to hand-code the XAML .
Don't even get me started on the abomination that is Expression Blend. I've never been able to use it, given its gray-on-gray user interface.
Software Zen: delete this;
|
|
|
|
|
It happens to me every day and is happening right now.
And don't talk about managing client expectations, they want it and they want it NOW!
Then they can complain/change their mind when they see it.
Life is hard. Programming is harder. Wear your mask.
|
|
|
|
|
My kids' school (Yes, I am the computer guy of the school as a part-time job hobbyist ) has a mobile cart with 16 strictly identical hp laptops, that is used by the teachers in their classrooms. The lappies are connected to two wireless access points (1 access point for 8 laptops) placed inside of the cart, which is itself connected to the school network via cable. The school has a server and its own domain.
Problem: At most, 6 to 8 laptops can connect at the same time without interruption or loss of the wireless connection, for surfing the internet or opening word documents from the server). When more laptops are used, navigation on the network (files or internet) gets really slow or even freezes.
I lack experience in mass wireless technology, so maybe you guys can help; What I tried so far :
- putting all 16 laptops to the network via a switch and cables instead of wireless, I get an average of 50Mbit/s on each, everything runs fine, so I suppose everything is ok from the server point of view.
- access points are 300Mbit/s capable, which means a theoretical 150Mbit/s (wireless is not synchronously bidirectional) for 8 laptops, or about 20MBit/s for each of them, in an ideal world. But I get between 20Kbit/s and 4Mbit/s at the very best. The wifi network card of the laptop is 2.4GHz.
- I separated the channels (used chan 1 and chan 6 respectively on the access points), no improvement
- I used 5GHz access points with 5GHz wifi usb dongles instead of the 2.4GHz ones, with almost no improvement.
Am I hitting a physical limitation of the Wifi bandwidth when trying to use 8 machines on a single access point ? Is there any different type of access points that are designed to handle more connection or with increased bandwidth ?
Any idea of what else could go wrong ?
|
|
|
|
|
- Are the access points in a metal cabinet? Is the cabinet closed while the computers are in use?
It could be that you are not actually connecting to the APs in the cabinet, but to different APs much further away. - [EDIT] Check the channel width on the access points (using the web interface). It should be 20MHz, not 40MHz.
A channel is 5MHz wide, but 20MHz are required for Wi-Fi. This means that a 20MHz channel covers a width of 5 channels, i.e. "channel 6" at 20MHz actually uses channels 4 to 8, and "channel 1" at 20 MHz actually uses channels -1 to 3.
If you try using a 40MHz channel, you have "channel 6" actually using channels 2 to 10, and "channel 1" using channels -3 to 5, overlapping the channels used by "channel 6". - Connect one laptop to each access point (on different channels - 1 & 6), test the throughput - upload only, download only. You should see a high throughput on both laptops.
- Get a Wi-Fi network sniffer (there are freeware programs that you can install on your phone), and see if there are other networks using the same channels. For example, the school may have a Wi-Fi network for the teachers, for administrative stuff, etc.
The issue may be the number of transmission collisions. When there is a collision (two devices attempting to transmit at the same time), the devices retry after waiting a while. The more devices you have on the network, the more collisions are likely. If each device is attempting to transmit at the maximum rate (150 Mb/sec), you are attempting to send 1350 Mb/sec (don't forget the Access Point). Collisions are guaranteed under this case, with the associated retries.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
modified 17-Feb-21 17:12pm.
|
|
|
|
|
Daniel Pfeffer wrote: Get a Wi-Fi network sniffer
Good idea - I use https://play.google.com/store/apps/details?id=com.vrem.wifianalyzer[^] which is brilliant for a free app - open source as well.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
|
Thanks for the suggestions and the time you took to answer .Daniel Pfeffer wrote: Is the cabinet closed while the computers are in use?
Only wood. I took the APs out and put them in separate corners of the room without any improvement.
Daniel Pfeffer wrote: Check the channel width on the access points
I tested all possible configurations : overlapping chans, no overlapping chans, 20MHz, 40Mhz. Best results with chan 1 and chan 6 or 11, 20MHz, but still not sufficient.
Daniel Pfeffer wrote: You should see a high throughput on both laptops
With 2 laptops, 2 access points, I have up to 6Mo/s (tried 2 different access points of different brands that are respectively 300Mb/s and 500Mb/s capable), all good. It starts to go down when I have more than 3 laptops on one AP. Two bizarre things here : why only 6Mo/s where it should be at least 20, and why the breakdown when 4+ are connected...
Daniel Pfeffer wrote: Get a Wi-Fi network sniffer
Done as well, and most other chans are indeed used by the school neighbourhood, but with very, very little signal strength, so they are barely visible.
Daniel Pfeffer wrote: The issue may be the number of transmission collisions
Interesting. How can I avoid this ? Could load balance of limitations per device help ?
|
|
|
|
|