So I consider myself Libertarian. By and large, I want the government out of business and life, and really think history teaches us by repeat example that power corrupts, political bureaucracy is slow, inefficient, and often fails, and that the best democracies involve fewer people rather than more. I made other posts on this blog about why the US political system is shyte, and how to circumvent some of these failings through the economics of money and people.
But I don't agree with the entire Libertarian platform. Minimizing the fed to the smallest possible degree is an absolute must, because it least represents the will of its constituents of any level of government. States are not that much better, they are just smaller pools of representation so they more accurately reflect the views of their people. But they still have some pretty dramatic dissent across them, and a great example would be my home state of Pennsylvania.
This year, PA elected Obama. They elected quite a few democrats to Harrisburg too, and they reelected Bob Casey Jr. However, my county of Berks reelected a Republican to the house by an overwhelming margin, because I like in the boonies hick country where half the people are Mennonite and the other half are old and racist. This includes Reading though, which like any large concentration of people is decidedly "blue" (even though I reiterate my disdain of categorizing along the black and white axis of American politics).
I'm just going to go out on a limb and say my area is pretty "conservative" as a whole, even with a population center of liberals. If they had exclusive say over their own politics, ethnic minorities probably would be enslaved again if a few layers of government and constitutions didn't forbid it. Meanwhile, if Philly is as liberal as it votes, they would have a socialist state where private business did not exist.
So there is some pretty complex disparity between regions in a state. Especially an American state - in my proposal, I'd rather have organic states redrawn every census that contain around a million people each, whereas modern PA would be 12 of these. But that definitely isn't small enough - while I definitely think a better system of government would make people inherently more mobile and not as tied down to areas against their ideologies like they are now, you can't expect everyone to have the capital to move away from a state containing a million bodies whenever they don't agree with the going majority viewpoint.
So I advocate local politics and enough social mobility to get people get out of areas they disagree with. I said it before, but it is against the libertarian platform because they want states rights, not local rights. They assume that the original 13 colonies were the "right" size, and in many ways don't even question it. Even though the largest of the original colonies at the first census was... (gasp) Pennsylvania, at 430 thousand. A third the population of modern Philadelphia.
And that gets to my point - the American system of governance does not facilitate population growth organically. Jefferson wanted the constitution rewritten every generation because he knew they couldn't predit everything. This is absolutely one of them, it is in my opinion the root cause of almost everything wrong in modern America. You have too few representatives ruling over too many people everywhere. Under my proposed system, you would have regions of ~10,000 people (1/6 the population of first-census Rhode Island, the least populated state at the time!) ruled by a council of 10, writing laws for themselves by their own beliefs. One of those 10 gets elected to represent them at the state level. So a council of 9 directly votes on laws, selects leaders of local departments (police chief, chairmen of a local hospital, boss engineer, firechief, etc). Those 10 should know their people. Personally. Each one on that council should know, on a personal level, the ~1k people they represent, and the people should have selected them for their humanity, not their spin. They can directly question people in their district about matters of law and with so few people the average person can sit in on discussions and make their voices heard.
You can't do that with a congress any larger. 10k people is about the size of most large high schools, and stuffing that many people in an Auditorium is.. troublesome. But doable. You can get that entire community together at once. You won't do it almost anywhere else. And they can select their own laws, their own policies, and what works can attract new people to move and create a more concentrated sect of communities sharing opinion and law.
So that is the states-are-best policy out the window. The other major Libertarian stance I dislike is the concept that government can't run anything. The principle thing to consider, from my perspective, on this topic is cooperation against competition. Any business will be inherently competitive and that is meant to lower costs and cut corners to maximize efficiency. Any cooperative venture is vulnerable to inertia, bloating, and stagnation.
I don't think utilies and infrastructure can be effectively done in a competitive way. And I don't mean buses - those aren't really infrastructure. You can buy a bunch of busses and sell seats without tremendous opportunity costs associated with laying roads, because roads are a public utility right now. Private roads would be systemically infeasible, because whoever gets roads "to market" first surmounts the opportunity costs and any competitor would need to dedicate tremendous capital to "catch up". Especially with limited land to cover with roads, and the probably that once an established player enters the market, they would influence regional politics to block any new entry into the market arguing against consuming more land for roads.
Electricity is similar. Power companies produce juice and sell it on market, and people can buy from any distributor even if they aren't inherently using their power because the lines don't distinguish who is putting in or taking out juice, just how much enters or exists from any one point. The lines themselves are maintained publicly though, because if they weren't, the entry costs, again, of "setting up shop" by repopulating phone lines with new power lines would be prohibitve, and again, competitors would manipulate government into artificially limiting markets.
The internet is so horribly shit in this country and Canda for exactly the above reasons. As Verizon lays fiber, they corner the market. They own the wire, and nobody can ever hope to overcome that opportunity cost once Verizon is in the market. The potential for profit is much lower when there is anything but a monopoly in such a circumstance, and costs are too prohibitive, and governments are too easily manipulated to deny new entries into the utilities market.
Same thing with public water, and public rail. And it is the same reason private airliners work. If you have companies sharing the "lines" the system can work, if they need their own wires they don't. If cable lines are public, the system is open to new players. If they are not, the cost of entry is too high and too easily manipulated by the entrenched player, and they can pull all the strings they want if you try to "share" their line. It is in their best interests to keep you out of the game and themselves in a monopoly position.
I just don't see a system where you can have private utility lines, roads, sewage, or rail. The redundant reproduction of similar infrastructure is prohibitively costly, and any player that owns the line controls the market. It is a guaranteed monopoly. Internet is a strange circumstance, because there are a few more factors that really ruin everything for us besides just the lines (and is a reason why we had dozens of dial-up providers in the 90s and nothing since).
First, servers and routing stations are expensive. Like the cost of laying line, adding new players to a market dramatically reduces potential profits through competition, and setting up new routing farms in new areas that already have some providers is something no business will touch because it presents too much risk and too limited profit (it requires giving more speed away at lower prices to entice entrenched users to switch). So building routing centers is another prohibitive cost.
Second, wireless spectrum is restricted and limited. There is no open spectrum to set up your own 3g tower on, you either need to own it or get your pockets cleaned out by someone who owns the spectrum, or get sued into dirt. It doesn't help that only the 300mhz - 3000mhz range hits the sweet spot in the tradeoff of data rate against signal range. We need this entire spectrum reset and open to anyone that wants it, and we need to let the market organically manage it rather than having an overbearing fed had it out like candy to whoever funds the most recent campaign when spectrum crops up.
Third, the wires are still prohibitively expensive. Fiber channels for 75% of America would revolutionize everything, and as long as you don't target the prohibitively remote populations that make figures of "to lay fiber to every American would cost 15k a person!" 'legitimate' it is perfectly affordable as a public works project.
Fourth, ICANN and the other routers and network back-ends are in many places private, so you need to pay them off and be in their good graces. New players in the game need not mess with the in crowd, it is pretty closed off to new entries. So even if you can get the servers and the fiber to the home, you still need to bargain with the maintainers of the rest of the infrastructure to let you hook in. Good luck with that.
So internet, above most other things, really needs some public lines. And routers. The server farms and the infrastructure need to be public, and unlike other industries, this is something hard to do wrong. You only lay new cable every once in a while, if you can overcome the hurdle of public repair crews being shit and lazy because they get lump sum paid or unionized so you can repair damage is a reasonable time frame (including in the data centers) and keep this stuff well funded so the routers don't become oversaturated and the lines are updated regularly (which to be honest hasn't happend yet in the public space.. nobody ever reinvests in roads or rail or water or power after they have something that has a semblance of working in place...).
But it is better than private enterprise gaining near instant monopoly and stifling innovation every time. The infrastructure markets are just too biased to be effectively competitive. Because they aren't competitive, and they are what separate us from animals - no animal has evolved wheels, because anything that would spend its time laying roads for others would be selected against since they spent all that time helping others and benefiting the species rather than benefiting themselves. Infrastructure puts us one step beyond birds building nests. And it is an inherently cooperative thing to make us all better for it, because the labors of few will benefit us all in the long run, and you can't make that competitive or else nature already would have.
But in my system, local government could make this decision. It need not be a federal mandate. If any area wants to have shitty internet, they could. The only problem I see is that if one area wants good public internet, roads, and power, but all the neighbors are shoddy privately owned industries that try to suck the one regions dollars dry if they want to pass through their neighborhoods, there needs to be some arbitration so the locality providing well to their people need not suffer their neighbors indignities. 10k people should be enough in theory, and you at least produce some competition in who a local area should pass through to access the broader market, but I see room for corruption and exploitation whenever you cross local borders.
Maybe that could fall under "inter-region commerce" and interstate lines could fall under interstate commerce, so that the next level up has to manage these connections. Because then the majority would want their regions to have free passage through everyone else, so they would all agree to open borders and lines of infrastructure.
Other issues, like healthcare systems, I feel would be handled organically. If it isn't something that is interconnected across boarders as much, each area can take its own approach and whatever works will spread and become popular. The people that want direct payment of medical service can move somewhere doing that, the people that like insurance can move there, people that want single payer can move somewhere doing that. And in those systems, there will probably be someone doing it "better" and good ideas would spread.
Like I said in my ideal society post, taxes would be a solved problem. I'll talk more about my tax theory later.
So in summary, small local governments writing the majority of law, so that good ideas are spread and adopted, and experimentation occurs everywhere. People move where ideas agree with them, and every census as these regions expand and grow more and more localities, they take over their regional and state governments, and the area will adopt similar policies at higher levels.
The only real weakness I see are changes in the global environment altering what was once great policy for the worse. If the nation adopts a free trade agreement as a whole that is beneficial for all at some point, they can only change that at the national level by revoking it and requiring a change of ideal to trickle back up to the national forum. While it is a very good system of checks and balances, it requires a (hopefully) slow federal legislature to revoke law, and then for states to revoke their own older policies on the matter, and finally for localities to change it, then for states to vote it back up. It would be a slow process. It is good that it is slow though, and I figure it could be done quickly if necessary (federal overwhelming vote tears it apart overnight, next day states dismantle it, and then localities change it the day after) so you can change a broken law in 3 days, and maybe eventually the changed system will trickle back up as the new standard, also resistant to immediate change.
2012/11/12
2012/11/10
UEFI: The Good, the Bad, and the Stupid
After a week working on this htpc build which uses the Asrock AMI UEFI firmware, I have developed some stronger opinions about UEFI that I had before, now that I have some hands on experience.
The Good:
The Stupid:
The Good:
- GPT is a much needed replacement for the old msdos partition table. None of the other partition tables caught on, and it really took some strong concerted effort to get us to move away from that archaic mess (4 primary partitions, oh humor). It supports enough primary partitions to never have to think about logical ones again, it has a redundant backup copy of the partition table in case the front one becomes corrupted or damaged so partitions can be recovered, and it doesn't have an unnecessary mess of bootloader space resting inside it, which means Grub can't stuff its bloated mass into the partition table as well.
- The traditional firmware -> payload a disk -> load a bootloader to load an OS on that disk -> execute OS payload model of exection is kind of dumb. UEFI eliminates the need for a bit of this work by making the firmware partition aware and letting it payload an executable directly. EFIStub Linux kernels or Windows 7+ can act as UEFI executables.
- They use file extensions! EFI payload binaries are .efi files. Good someone has some static typing sense.
- Secure boot. The given reason behind it is to protect from malignant bootable executables replacing bootloaders or kernel payloads to run malicious software. In reality, modern operating systems are (and if not, should be, your fault for installing a crummy OS) very protective of their bootloaders and essential system files already. It requires root permissions on Linux and a bunch of security prompts on Windows to alter the device contents referring to kernels and bootloaders. In reality, secure boot is just a wall to walled-garden the space of executable programs on UEFI equipped devices. Especially because fucking Microsoft is the certificate authority to key EFI binaries. Come the fuck on. If it had been an independent consortium (given the track record for key signing independent sources isn't that great either.. Verisign, ugh) it might have looked less obviously like Microsoft was trying to lock down consumer hardware.
- There is effectively no cross-platform inherent support for backwards compatability with msdos disks, ahci boot options, and UEFI doesn't by default provide a boot device selection option, just the EFI shell.
- The EFI shell is dumb for a plethora of reasons. One, you don't need a freaking shell on top of a configurable firmware interface. You don't need to have arbitrary executables in the firmware. You don't need a dozen utility applications that are useless when every operating system provides their own. People are inertial and keep using what they know best, even if having an efi memtest, prime95, meminfo, cpuinfo, etc would be nice in theory, the shell was not well thought out and is mostly a rip of Windows powershell. Hint: terminals in NT based oses (and dos ones too) were shit. You want hardware configuration options in an ncurses interface like every bios before had, and the ability to select from all reachable EFI binaries what to run. That would have been great.
- EFI still doesn't solve the age old problem of device initialization. Every modern OS still has to re-probe every bus and device hub to figure out what is available, even after the POST test already found everything and handled it. The firmware of EFI must have its own video driver somewhere, since it uses almost any graphics out solution there is. But the NT and Linux kernels will always use their own drivers then, instead. The real problem is that the firmware on the mobo is fixed sized small and flashable ROM, whereas the OS kernels are loading device drivers from disk since they can only situationally flash the board rom. In a perfect world, the board firmware would provide the device drivers to the OS and those could be updated from firmware or OS without having to reflash the whole of the onboard memory. We have great toggle nand now, we should put that on instead. This way, the firmware and operating systems could get drivers from one place and the OS could use alternatives if it really wanted to. (note, I am a hypocrit because I was just talking about interia and transferring the entire architecture of kernel mod drivers from being on disk to being a payload of EFI firmware is ridiculously complex). My point is that it is very dumb that the firmware will initialize almost every device with its own drivers (usb ports, ps2 ports, networking, and video devices at least, because it needs to probe disks, find input devices, download its own updates over dhcp networks, and display the firmware interface) and then the OS will also use its own device drivers for the same hardware that was already initialized.
The Stupid:
- Graphical interfaces. While not an inherent EFI standard, every major mobo manufacturer got the bright idea to at least quadruple firmware size to support vector graphics, gifs (I'd imagine?) transparency, fidelity, and a bunch of other eye candy features to give users gui programs for firmware. I am a stick in the mud here - and the efi configuration utilities don't add any real value to the experience. The old ncurses style bios utilities that required keyboard naviagation had the exact same usability sans the mouse clicking these uefi firmwares do, without all the graphics crap making payloading take microseconds longer than is necessary.
- Secure Boot. Because its not just bad, its stupid, because Microsoft will never get away with their master plan of locking down OEM hardware.
- FAT32 being the efi partition standard. It is an old piece of crap that is the product of Microsofts filesystem ingenuity. They should have developed a specialized simple low overhead filesystem for the efi system partition that was an open standard. Because we should have been using fat16(or another 16 bit sector pointer), not fat32, but Microsoft requires it to install Windows 7 in efi mode, because there is dumb overhead of 32 bit sector pointers on partitions that should never be over 256mb in size in any practical use case.
2012/11/06
A Guide to Asrock AMI UEFI FM2 Overclocking Options
I spent a while messing with various settings in the uefi Asrock is using for Trinity apus (I imagine the am3 setup is similar). Here is a summary explanation of what each feature does, in the hope I may one day be helpful.
OC Tweaker
Advanced
Advanced CPU Configuration:
Storage Configuration:
ACPI Configuration:
Network Configuration: Deceptive options, they relate to the software, not the motherboard hardware per se. These configure how the firmware updates itself from within setup. Almost every router uses DHCP for natting so yours probably does too. PPPoE is less used and you'd know if you have it.
So those are the options on the Asrock FM2 Pro4-M for an overclocker, in detail. Hope this might be useful to someone. Message me if you see any errors (I did some hazy research on some more vague terminology).
Addentum Update Notes:
OC Tweaker
- EZ OC Mode: either manually configure overclock options or chose preset overclocks. The presets from my experience are overzealous with voltage and reset RAM preferences. They are designed to be "safe" but be careful using the highest presets because they put the voltage at 1.4 + offset of .2 which can put you over safe operating frequencies under load, especially if you use load line calibration which can skew voltage even higher. That can get really dangerous in terms of processor burnout. So I recommend going manual and tweaking individual settings.
- Overclock Mode: manually tweak the fsb frequency or leave it default and allow spread spectrum. Spread spectrum prevents voltage spikes on the various system buses off the southbridge, and overclocking the pci bus is often dangerous because it can fry add-in cards or cause hardware transfer rate errors since it also affects the sata and usb interfaces. You never need to overclock the PCI bus and spread spectrum is good at rated clock rates, so auto overclock mode and auto spread spectrum.
- AMD Turbo Core Technology: enable the cpu boost feature when only one core is maxed out. Even if you do a hard overclock, you might want to try this, because it only becomes active when the other cores are underutilized and the heat generation off one core going about 400mhz faster usually won't kill a system. I enable it, and use the aformentioned 400 mhz above full utilization clock.
- APM Management: an enhanced version of cool'n'quiet that supports per-core downclocking and undervolting in a more granular and sophisticated way. If you use cool'n'quiet, you want this on. The tradeoff here is that by powering down underused cores revving them back up isn't instantaneous and a lot of people have misplaced fears of the voltage shifts wearing out the chip faster. Modern chips are much better designed for undervolting to save power and the only time to heed caution here is if you have an absurd Vcore. Leave it on to save juice.
- Multiplers: You want this manual, else you are not really overclocking. The goal is to get the base clock multiplier as high as possible while staying stable and with manageable heat and voltage rates. One unmentioned aspect in most cpu stories is that if you downclock a processor enough you can drastically cut the wattage usage by dropping the voltage to match - if you took an A10 that usually rates at 1.325 to 1.375 volts down to 1.25 or 1.2 volts and find a stable clock rate (probably around 3ghz) you could easily see wattage and heat output cut to around 60 - 65 watts, maybe 90 watts under load, compared to the stock idle 100 watts and 125 under load.
- Vcore and offset: Boosting voltage boosts overclock headroom for stable clocks but also boosts heat and power consumption. You want these as low as possible for a given clock rate while keeping the system stable at its maximum frequency. Generally, the given configuration is overgenerous and excessive and it should be tweaked through torture testing to find a stable vcore at your desired clock rate as low as possible. You should actively try to adjust the offset rather than the vcore, because most power management functions operate as a fraction of vcore, so overclocking it reduces power efficiency.
- CPU NB Frequency: this is the northbridge data rate. You want this as high as possible while remaining stable for maximum bandwidth between the memory and cpu, and the best way to know if it is excessive is if you get hardware errrors on memory transactions that don't show up in memtest. In my case, I was able to get total system failure at 2600mhz when running SIMD instructions off the gpu, because those are usually more bridge intensive than CPU based memory operations and want a lot more bandwidth. Unlike some platforms, you can't explicitly set the northbridge or cpu base frequency, which is really a good thing because both are integrally tied to a lot of underlying parts that can easily break if tweaked.
- CPU NB/GFX Voltage: The gpu cores and northbridge have their own voltage. As per usual, you want this as low as possible while maintaining a stable system with a given nb overclock and gfx overclock.
- APU Load-line calibration: This is used in modern cpus to offset vdroop. Only use load line calibration if your voltage isn't dangerously high - traditionally, your given voltage is a fixed limit that the processor won't pass, but may dip below (droop) especially under constant heavy load. LLC will up voltage to offset droop, which means your rated voltage isn't your limit anymore, but you have less chance of voltage dropoff under load. So use LLC at low overclocks but avoid it with higher ones where the voltage spike it causes puts the cpu over safe limits.
- GFX Engine Clock: This is the integrated gpu clock rate. Like the cpu clock rate, you want this as high as possible without overvolting too much on the northbridge voltage. I found that the gpu barely heats up compared to the generic cpu cores, and can go quite a bit higher than stock as a result, but that is also due to the northbridge voltage being lower than the cpu voltage. Treat this independently of the cpu settings in most cases.
- Memory Profile: JEDEC profiles are mandated for DDR and are base profiles meant to work on anything of a certain DRAM spec. You want to use the XMP profile as the template the manufacturer meant the RAM to run at. In my case, my Corsair Vengeance sticks were giving the wrong XMP RA tRAS value and I needed to tweak it from 30 to 27. Make sure to try at your memories given ratings and overcloclking the CAS and such latencies usually isn't worth trying.
- DRAM Frequency: has preset frequencies that go with the standard. The rated frequency all Piledriver based chipsets are rated at is 1866, but they all support overclocks up to at least 2400. For example, I had 2133 Corsair RAM, so set this to the rated speed of your ram. It is always a tiered thing, and the only way to really fine tune adjust dram frequencies is to overclock the northbridge base frequency, and you really take a lot of risks if you do this, even if you can do this. My P6T can, but my Pro4-M can't. You might for laughs try putting RAM modules rated for something like 1866 at 2133, but most likely that will error out in memory tests, especially if you don't try adjusting the latencies and voltages upwards to compensate.
- DRAM Voltage: Part of the XMP spec is the rated voltage. You want this as low as possible without memory errors. Undervolting memory usually isn't worth it much because memory modules don't generate much heat (anymore, at least, old DDR2 and DDR ram was much hotter due to higher voltages) so stock rates are usually sufficient unless you are a real power nutter. If you get memory errors in memtest or SIMD transactions that aren't related to northbridge frequencies and voltages, it might be an issue with your RAM voltage. For example, those Vengeance sticks I was talking about would error out at 2400mhz northbrige at stock 1.5 volts but a 1.505 voltage was sufficient to avoid those errors.
- APU PCIE Voltage & SB Voltage: Keep these constant at 1.208 volts and 1.1 volts respectively. You don't overclock your PCI bus or SB buses so don't overvolt them unless you are a really crappy power supply that has bad rails. And if that's happening, you have bigger problems anyway. So don't touch these unless you have explicit SATA or PCI device failures, voltage drooping, or performance degradation from too little power on these lines. And like I said, that really shouldn't happen.
Advanced
Advanced CPU Configuration:
- Core C6 Mod: Enables the lowest power state of the processor (deep sleep mode). This enables S3 suspend to completely shut down cores at 0v rather than leaving the processor in a low power halted state. Leave it on, modern systems support it fine and it is designed not to be unstable. If you need to turn this off your motherboard or cpu are pretty much broken.
- Cool 'n 'Quiet: The precursor to APM, also supports memory downvolting. If you use APM you want this on, if you don't use APM you might still want to use it because it is less aggressive. AMD has supported CnQ for 4 processor generations now and it is a very mature power saving standard that won't burn out your chip by alternating voltages.
- SVM: The AMD hardware virtualization support. Keep it on, it allows you ti run hardware accelerated virtual OSes and doesn't cost anything. This option is only here to prevent virtual guest operating systems.
- CPU Thermal Throttle: This is the fraction of power to take the processor to when in S1 ram suspend mode. You want this as low as possible without causing instability, and lower rates can make resuming slower because it has to restore more voltage difference. Since most systems use S3 suspend as the default mode (power down everything except ram, instead of S1 keep everything on in low power mode and store everything in ram) you don't need to worry about this much, and auto is just fine.
- Primary Graphics Adapter: If you have a discrete card and are not using hybrid crossfire, you want this on to use your discrete card instead of the integrated gpu. There is practically no use case for this though, except maybe in laptops where you power off the discrete card unless you have something graphically intensive. But modern GPUs have really good power saving modes anyway. You won't need to change this unless you know you need to change this.
- Share Memory: Amount of system ram to allocate to the integrated GPU. The way integrated GPUs currently work is that they deny the OS access to a portion of installed RAM and use it as a substitute VRAM. Since RAM is cheap, set this to the max with any APU unless you are running a system with little RAM (why?).
- Onboard HDMI HD Audio: Leave this on to support the HDMI port also sending digital audio. Duh. You want this if you plug in a tv or display with speakers via HDMI, but there really is no reason to turn it off. If you don't have HDMI audio capable hardware, it just won't play anything. Turning this off just gets rid of the audio device the OS sees for HDMI audio.
- DVI Function: DVI cables can operate in an emulated HDMI mode. So if you use an HDMI converter on the DVI port, use HDMI mode, and if you use a regular DVI cable, use Dual Link.
Storage Configuration:
- SATA Controller: You probably have hard disks connected. You want the SATA controller on. You might have an ATA controller here if your mobo supports it, turn it off if you don't have an ATA disk (the old slow crap from the 90s).
- SATA Mode: Traditionally you have 3 choices here. Hardware raid, ahci, and ide. IDE is legacy and slow, ahci is modern for multiple discreet disks and is probably want you want, and if you want to setup a RAID you should know what you are doing in advance. AHCI provides a lot of benefits for monitoring and performance.
- AMD AHCI BIOS ROM: This option loads a rom image into ram before starting anything containing legacy AHCI tables for backwards support. Most modern operating systems don't use or care about these, but if you need them they are there, but you would find out elsewhere if you do. You can try running it to see if you get more sensors out of it, but most OSes can detect AHCI 2 sensor data without the rom load or extra boot time.
- SATA IDE Combined Mode: Allows your "last" sata ports to act like a combined IDE port for PATA devices if you use a translation cable. Almost certainly you don't need this because you don't have PATA devices, and if you did, you would have gotten a mobo with a PATA port.
- Hard Disk SMART: If the AHCI ROM is enabled, you always have smart data available. If you don't use the rom, turn this on always to enable smart monitoring. Smart is for ATA devices to give you important diagnostics and testing for hardware integrity.
ACPI Configuration:
- Suspend to RAM: I only have auto here. You want this on. If given the option, you want S3 suspend, it uses less power, turns off fans and lights, and most modern OSes support it natively. S1 suspend is an ACPI power state that only downclocks all the buses and keeps everything running in a halt state, which is less efficient.
- Check Ready Bit: Hilariously, this might be the only setting I am almost completely in the dark about, along with the rest of the internet. The manual for my mobo is extremely useful with the description of "Use this item to enable or disable the feature Check Ready Bit." Research says it might cause issues with ssds during s3 resume, and it has no practical benefit it seems, so disable it. I didn't have issues with it, but I can't find a single benefit to this ACPI feature, so turn it off anyway.
- Restore on AC Power Loss: You probably don't want this on unless you are trying to have an always up server. If you are losing power repeatedly your system will thank you for not auto-restarting every time it regains juice and loses it again.
- Power Ons: Lets you power on the system with various devices. Should be self explanatory.
- ACPI HPET table: The high precision event timer is the really useful periodic interrupt ticker in ACPI boards that lets the system track sychronization much better than through software. Turn it on.
Network Configuration: Deceptive options, they relate to the software, not the motherboard hardware per se. These configure how the firmware updates itself from within setup. Almost every router uses DHCP for natting so yours probably does too. PPPoE is less used and you'd know if you have it.
So those are the options on the Asrock FM2 Pro4-M for an overclocker, in detail. Hope this might be useful to someone. Message me if you see any errors (I did some hazy research on some more vague terminology).
Addentum Update Notes:
- Load Line Calibration effectively can not be disabled for me. The four settings, default, 1/2 vcore, 1/2 nb vcore, and 1/2 vcore + 1/2 nb vcore seem to only correlate to the voltage used as the standard LLC voltage. Intution says that 1/2 nb core should be LLCing the northbridge, but this setting will overvolt the CPU cores as well. Effectively, default is 1/2 vcore, and I think 1/2 vcore + 1/2 nb vcore just picks the greater of the two to use as its LLC standard. This means you can take the actual CPU frequency really low (I had it down to 1.2, causing an idle voltage of 0.85 volts at stock, where the voltage would still ramp up to 1.45 under load due to LLC). It doesn't seem to allow the chip to go under 1.45. Any overclocks done past ~1.325 will cause the maximum voltage limit to rise, so that a 1.325 voltage with .1 offset will run around 1.6 volts (which is getting pretty dangerous).
- APM and Cool'n'Quiet love constantly changing Cstates even under load. Voltage and frequency can be pretty variable. I still leave them on, because by now the overhead is almost nonexistant (they are honestly downclocking in between instructions at this point if the pipeline is indicating a lull I think) and as long as I'm only pushing 1.6v under load I'm not that worried.
- The northbridge and GPU can also take really low voltages at stock. I got them down to 1.125 and the minimum 1.194 respectively without any instability, but there might be some LLC going on there too at low thresholds (especially if you have nb vcore llc on, but I can't live test the northbridge voltage).
- The recommendation is still to set the core voltage as low as possible without causing the cpu to be unstable at its lowest cstate, but also consider that LLC will always force the cores back up quite a bit.
- Firmware 1.8 enabled 1 and 2 gigabyte video memory sizes. I'm sticking with 1gb, since this thing runs off a 1080p screen. And 8 gigs of ram leaves a lot of room for a htpc machine anyway. It also allows you to force EFI mode with CSM disable in the ACPI settings.
2012/11/05
Dumb Sounds and Smart Screens, and Connectivity Standards
Edit: I just want to preface this blog, after rereading it, that I do know you can send an analog or digital signal over most cables since they are just electric pulses any way you slice it. One uses period of charge and one uses wavelength to determine data contents. I mention them in stark contrast a lot, and I mean in the practical utilization of cable standards (for example, TN phone cable is really crappy digital cable since it has terribly low refresh rate).
Today there are quite a few "standard" connections for a wide variety of technology. Most of them boil down to analog or digital, though. For example, 3.5mm audio is almost a hundred years old and is just differential voltage meaning height of a sound wave. Digital signals are barely different - they are still electrical signals over a wire - but they are analyzed with a discrete principle that the presence of absence of charge can indicate their state. It is why spdif requires a sound card on the recieving end to reencode the signal as an analog output and 3.5mm audio is just raw sound signals. For the same reasons, sound over distance becomes distorted if not modulated and digital signals can go longer distances (some ethernet standards can go kilometers). And you can tell the difference because all the digital standards are measured in bitrates, and analong cabling is always fixed to some interpretation standard (analog video off coax or rca cable, or off vga, for example).
One really silly reality is that modern computers almost always use analog modular sound and digital via hdmi or dvi video. For some dumb reason, dvi has some backwards compatability with vga and supports analog signals on some of its pins at some low video resolution modes. Hertz rates play a big part in cable distance in digital world, since dvi is usually 400hz, and runs on copper, so it is limited to a short distance compared to the often fiber based log 550mhz ethernet lines, but they carry less data rate.
The big deal is the end is the tradeoff of bandwidth to distance traveled in digital land. Same thing happens in wireless world, except with smaller numbers because of much higher environmental interference in the air. But I don't get why we can't just have standard digital interconnects that span the spectrum they really translate to. What we want is the greatest stable frequency distance with the lowest power draw transferring the maximum data rate with the lowest latency. Each of those 4 quantifies some use case, and each deserves a specialization - really, we have that already. distance is coax, power draw is ethernet cat (which blurs with distance, since they are synonymous in many ways), bandwidth is hdmi / dvi (6 gigabit, but ethernet is getting competitive, so like I said, lines are blurring) or latency (again, they are all mostly low latency - usb has a higher latency since it does byte conversion on all transfer nodes).
In honesty, usb sucks. It has a really short distance before distorting, it only has (at usb3 even) 600mbit bandwidth, and it has higher latency because it is a translation layer. Ethernet is already packet based, it just doesn't provide power. Is it really that expensive for a digital packet interconnect standard to carry power? If so, why does SAS work at 6gigabit (albeit, a SAS or SATA cable has a much shorter range limit than any of the above).
You really end up with two use cases then. Maximize bandwidth with minimum losses of distance, power, and latency; and maximum distance, with minimum loses of bandwidth, power, and latency. You want low latency / power draw, and preferrably the ability to prove 5v or some such power over the line (albeit that, by example of SAS and USB, really costs the distance, so a long distance interconnect is almost guaranteed not to also carry power due to noise problems, and shielding the two layers would be expensive).
So what do we end up with? I'd say something like SAS + ethernet. And cat ethernet cable is really starting to pique my interest, since we are now talking about 100 gigabit ethernet, with room for terabit. The bandwidth on these cables is huge, the maximum range is huge as well without signal degredation, and all it takes is intelligent enough tvs and monitors to decode packets. Really, it isn't hard for ethernet packet systems to just ask newly connected devices what they are for and provide accordingly. The only real issue would be in the realm of a network adapter thinking its on a router when its on a display, and you get noise on your screen, or vice versa. Just means you need good handshakes.
I guess that also validates the reasons for having divergent systems in place for each device. Even though usb blurs them all since it seems to not care what goes over the line as much. Ethernet controllers want packet data, hdmi and dvi want display packets, usb wants device packets, etc.
I really was thinking about this since usb is a train wreck. USB device drivers are erroneously complex, slow, and in general suck. They all draw from one device controllers bandwidth and power, they have terrible transfer rates and distance, and seem to only be a standard for the sake of it. They were first to market with plug and play powered ubiquitous devices and won where I am really surprised nothing is competing. Because USB is shit.
And the digital display (vga is too restrictive a medium, which is interesting in and of itself - with 4k resolution on the horizon, it is really interesting how analog can't support that) with analog audio (well, hdmi carries digital, but the idea of digital display data being decoded by screens while headphones and speakers get raw audio sine waves seems like an undue disparity, but they do represent fundamentally different things - after all, photons are particles and pixels are inherently discrete and digital, but sound is a wave and is inherently continuous and analog).
So it is an interesting thought experiment, at the least. Still can't believe we cant' do better than 3.5mm modulated voltage copper wires for sound transfer though, in a hundred years. Sound seems like it was always an easily solved problem, so why the hell can't ALSA get hardware mixing right.
Today there are quite a few "standard" connections for a wide variety of technology. Most of them boil down to analog or digital, though. For example, 3.5mm audio is almost a hundred years old and is just differential voltage meaning height of a sound wave. Digital signals are barely different - they are still electrical signals over a wire - but they are analyzed with a discrete principle that the presence of absence of charge can indicate their state. It is why spdif requires a sound card on the recieving end to reencode the signal as an analog output and 3.5mm audio is just raw sound signals. For the same reasons, sound over distance becomes distorted if not modulated and digital signals can go longer distances (some ethernet standards can go kilometers). And you can tell the difference because all the digital standards are measured in bitrates, and analong cabling is always fixed to some interpretation standard (analog video off coax or rca cable, or off vga, for example).
One really silly reality is that modern computers almost always use analog modular sound and digital via hdmi or dvi video. For some dumb reason, dvi has some backwards compatability with vga and supports analog signals on some of its pins at some low video resolution modes. Hertz rates play a big part in cable distance in digital world, since dvi is usually 400hz, and runs on copper, so it is limited to a short distance compared to the often fiber based log 550mhz ethernet lines, but they carry less data rate.
The big deal is the end is the tradeoff of bandwidth to distance traveled in digital land. Same thing happens in wireless world, except with smaller numbers because of much higher environmental interference in the air. But I don't get why we can't just have standard digital interconnects that span the spectrum they really translate to. What we want is the greatest stable frequency distance with the lowest power draw transferring the maximum data rate with the lowest latency. Each of those 4 quantifies some use case, and each deserves a specialization - really, we have that already. distance is coax, power draw is ethernet cat (which blurs with distance, since they are synonymous in many ways), bandwidth is hdmi / dvi (6 gigabit, but ethernet is getting competitive, so like I said, lines are blurring) or latency (again, they are all mostly low latency - usb has a higher latency since it does byte conversion on all transfer nodes).
In honesty, usb sucks. It has a really short distance before distorting, it only has (at usb3 even) 600mbit bandwidth, and it has higher latency because it is a translation layer. Ethernet is already packet based, it just doesn't provide power. Is it really that expensive for a digital packet interconnect standard to carry power? If so, why does SAS work at 6gigabit (albeit, a SAS or SATA cable has a much shorter range limit than any of the above).
You really end up with two use cases then. Maximize bandwidth with minimum losses of distance, power, and latency; and maximum distance, with minimum loses of bandwidth, power, and latency. You want low latency / power draw, and preferrably the ability to prove 5v or some such power over the line (albeit that, by example of SAS and USB, really costs the distance, so a long distance interconnect is almost guaranteed not to also carry power due to noise problems, and shielding the two layers would be expensive).
So what do we end up with? I'd say something like SAS + ethernet. And cat ethernet cable is really starting to pique my interest, since we are now talking about 100 gigabit ethernet, with room for terabit. The bandwidth on these cables is huge, the maximum range is huge as well without signal degredation, and all it takes is intelligent enough tvs and monitors to decode packets. Really, it isn't hard for ethernet packet systems to just ask newly connected devices what they are for and provide accordingly. The only real issue would be in the realm of a network adapter thinking its on a router when its on a display, and you get noise on your screen, or vice versa. Just means you need good handshakes.
I guess that also validates the reasons for having divergent systems in place for each device. Even though usb blurs them all since it seems to not care what goes over the line as much. Ethernet controllers want packet data, hdmi and dvi want display packets, usb wants device packets, etc.
I really was thinking about this since usb is a train wreck. USB device drivers are erroneously complex, slow, and in general suck. They all draw from one device controllers bandwidth and power, they have terrible transfer rates and distance, and seem to only be a standard for the sake of it. They were first to market with plug and play powered ubiquitous devices and won where I am really surprised nothing is competing. Because USB is shit.
And the digital display (vga is too restrictive a medium, which is interesting in and of itself - with 4k resolution on the horizon, it is really interesting how analog can't support that) with analog audio (well, hdmi carries digital, but the idea of digital display data being decoded by screens while headphones and speakers get raw audio sine waves seems like an undue disparity, but they do represent fundamentally different things - after all, photons are particles and pixels are inherently discrete and digital, but sound is a wave and is inherently continuous and analog).
So it is an interesting thought experiment, at the least. Still can't believe we cant' do better than 3.5mm modulated voltage copper wires for sound transfer though, in a hundred years. Sound seems like it was always an easily solved problem, so why the hell can't ALSA get hardware mixing right.
2012/11/04
Software Rants 4: The 21st Century Terminal
I can't use Vi or Emacs because both of them have their own keybind sets that can fill an entire textbook and I don't have 3 years to learn this stuff. I just want to write code. Shouldn't be that complicated. Same thing with shell script (if ['""'''"]; then fi needs to be shot out back). Same thing with html and javascript too, really. They are all forced standards that grew out of much simpler systems that worked much better in their conception as something less shitty and less kitchen sink than they are today.
So I like zsh over bash for no really apparent reason because I don't use any of its built in features, but probably because it is not the ubiquitous default. Assumed defaults are dangerous and often show the greatest cracks in the paint for improvement. So here is my ignorant rant about terminals.
TTYs are garbage. The fact X is run on TTY7 makes me feel nauseous because 99% of Linux users never end up using ctrl-alt-1 through 6 to understand what the default terminals are for. They use their own graphics layers, font scaling, smoothing, resolution and such, because they are completely disconnected from the modern graphical environment built off X or Wayland or whatever your graphics stack wants to be. They add significant undue complexity because they stand starkly apart from what anyone expects in a "modern" os. Terminal emulators are just X frames designed to trick bash, zsh, etc into thinking they are running in a tty environment. If you have a faulty system you might get dumped to a tty with some random program running in place of whaever your choice sh might be, but you don't have anything wrapping your terminal to guard you, you just have a terminal, some daemons (NOT NORMAL PROGRAMS NO, YOU NEED TO INTERACT WITH THOSE THROUGH ARBITRARY INIT CONTROLS!) and your shell, and anything you run with it. Maybe you fork something. I wonder what tty7 would look like with all the standard pipes it deals with.
The root problem is a disconnect between a 3d graphical environment and a display environment. 2 decades ago, nobody had the 3d stuff and assumed that VGA was the be all end all of display technology. The modern kernel has kos of nvidia, radeon, fglrx, intel, or nouveru to act as display controllers but not necessarilly 3d rendering engines. They don't inherently provide opengl hooks, those come from x, but the entire stack looks like a big mess of multiple entry points into what is in the end the same hardware device.
In my theoretical perfect OS, you assume the presence of something that can run some standard graphics ABI library. Even the simplest terminal is running on "hardware accelerated" (aka, gpu bound) code that the system can just run over an abstracted pipe layer if there is no dedicated graphics hardware (but by bacon, I'd mandate some kind of heterogeneous processing node that supports SIMD small massively parallel cores and large pipeline highly cached general big cores on the same die in the same ALU and FPU soup). You would have a tiny microkernel of CPU scheduler, memory controller, virtual memory manager, and hardware device hooks. It payload runs something provided to it when it runs, be it a network boot host controller script, an init framework, or a shell executable. If your init doesn't setup the hardware controllers for the various devices the OS can see but doesn't overburden itself to manage (because in the end, all that hardware is being provided by firmware as virtual memory maps anyway, and you can just hook those into user space applications that manage them) then that hardware just never does anything. A kernel need be no more than "hey, cpu is running, I'm scheduling executing code, maintain a page table, maintain a process table, and schedule the execution of stuff, here is the rest of the devices the firmware gave me to play with, someone else can have them".
So you have an init framework. It's job would probably be simple too, review the kernel device hooks, find the device drivers for the hardware, and bring them together in matrimony. Along the way, you start both a virtual file system server and device handlers for physical devices, and device controllers for any actual hardware storage devices. The VFS handles translating file system calls into device lookups or other applications. You would probably also have a socket server that everything else relies on to make RPC calls across the system, and you can use the VFS to reference these sockets as files. Because everything is a file.
But you have your kernel of memory management and process scheduling, your device controllers, and then some abstraction layer servers that act as arbiters of device control, like the vfs server, a socket server, a display server, a sound server, an input server. And once init is done, it could launch either a shell or a desktop manager of some kind. Or nothing, it could just let the system sleep. Or maybe you payload prime95 at a low execution priority to saturate core when idle. This shouldn't be rocket science, it should be a configuration file in some standardized serialization format (probably like json) that just reads devices : discover { graphics : radeon, default : auto } (default auto would just reduce the controller for a device given kernel info about it, etc), controllers : {vfs : some-userspace-vfs-host, display : xorg, network : network-manager}, payload : /bin/bash, or /bin/gdm, or something. Not hard, xml like specialized tags, documentation wouldn't be hard.
Only hard part would be that the init framework would need to figure out where and how to start a vfs server without actually having it running. Maybe that also belongs in the kernel, it seems important. Virtual file system, virtual memory, virtual execution seem like consistent concepts in kernels.
Anywho, your payload of whatever is now running with some kind of display controller available. In linux-space, opengl would be an assumed trait, not some tacked on x sugar. And your terminal could be graphically greater than just bitmap glpyhs on some pixel grid.
One of the greatest weaknesses in a modern terminal is the difficulty in translating an idea of computation into a tangible thing happening. Zsh has some primitive recommendations about what you type if it can't figure it out, but that is still nothing big. I'm talking eclipse-style as you type you get a list of available completion terms (and not just tab cycle through hope for the best completion), composed menus overlaying the terminal showing options as you type). That alone is huge, but reactive search would also be nice, it already exists in some terminal aps (top, for example, live reduces input search terms nicely) but the base terminal itself should be thinking about what you want.
And none of this really screams "oh noes the embedded world is ending" because on a 20mm die at 22nm you can stick 25 million transistors, more than a Cell processor. That thing runs a freaking PS3. That is a tenth of some of the smallest desktop fab standards today, which have 10 to 100 times the transistors. By the time this theoretical system could be vertically integrated if I got a hundred billions dollars tomorrow to do it, standard fab tech would be at most 6 - 10 nm and be at least 10 - 20x more space efficient. So a 5mm chip could outperform an i7 920.
Eventually you can't argue against sane defaults. In the end, you can just set graphics : false, and not load a graphics driver. You can skip any device host you don't want anyway in this theoretical init system. Of course you would use socket activation on the socket server (might end up sticking that in the kernel... oh dears).
Terminals being dumb text interfaces is getting old. We can do better. We should do better. I'm too dumb to do things the hard way!
So I like zsh over bash for no really apparent reason because I don't use any of its built in features, but probably because it is not the ubiquitous default. Assumed defaults are dangerous and often show the greatest cracks in the paint for improvement. So here is my ignorant rant about terminals.
TTYs are garbage. The fact X is run on TTY7 makes me feel nauseous because 99% of Linux users never end up using ctrl-alt-1 through 6 to understand what the default terminals are for. They use their own graphics layers, font scaling, smoothing, resolution and such, because they are completely disconnected from the modern graphical environment built off X or Wayland or whatever your graphics stack wants to be. They add significant undue complexity because they stand starkly apart from what anyone expects in a "modern" os. Terminal emulators are just X frames designed to trick bash, zsh, etc into thinking they are running in a tty environment. If you have a faulty system you might get dumped to a tty with some random program running in place of whaever your choice sh might be, but you don't have anything wrapping your terminal to guard you, you just have a terminal, some daemons (NOT NORMAL PROGRAMS NO, YOU NEED TO INTERACT WITH THOSE THROUGH ARBITRARY INIT CONTROLS!) and your shell, and anything you run with it. Maybe you fork something. I wonder what tty7 would look like with all the standard pipes it deals with.
The root problem is a disconnect between a 3d graphical environment and a display environment. 2 decades ago, nobody had the 3d stuff and assumed that VGA was the be all end all of display technology. The modern kernel has kos of nvidia, radeon, fglrx, intel, or nouveru to act as display controllers but not necessarilly 3d rendering engines. They don't inherently provide opengl hooks, those come from x, but the entire stack looks like a big mess of multiple entry points into what is in the end the same hardware device.
In my theoretical perfect OS, you assume the presence of something that can run some standard graphics ABI library. Even the simplest terminal is running on "hardware accelerated" (aka, gpu bound) code that the system can just run over an abstracted pipe layer if there is no dedicated graphics hardware (but by bacon, I'd mandate some kind of heterogeneous processing node that supports SIMD small massively parallel cores and large pipeline highly cached general big cores on the same die in the same ALU and FPU soup). You would have a tiny microkernel of CPU scheduler, memory controller, virtual memory manager, and hardware device hooks. It payload runs something provided to it when it runs, be it a network boot host controller script, an init framework, or a shell executable. If your init doesn't setup the hardware controllers for the various devices the OS can see but doesn't overburden itself to manage (because in the end, all that hardware is being provided by firmware as virtual memory maps anyway, and you can just hook those into user space applications that manage them) then that hardware just never does anything. A kernel need be no more than "hey, cpu is running, I'm scheduling executing code, maintain a page table, maintain a process table, and schedule the execution of stuff, here is the rest of the devices the firmware gave me to play with, someone else can have them".
So you have an init framework. It's job would probably be simple too, review the kernel device hooks, find the device drivers for the hardware, and bring them together in matrimony. Along the way, you start both a virtual file system server and device handlers for physical devices, and device controllers for any actual hardware storage devices. The VFS handles translating file system calls into device lookups or other applications. You would probably also have a socket server that everything else relies on to make RPC calls across the system, and you can use the VFS to reference these sockets as files. Because everything is a file.
But you have your kernel of memory management and process scheduling, your device controllers, and then some abstraction layer servers that act as arbiters of device control, like the vfs server, a socket server, a display server, a sound server, an input server. And once init is done, it could launch either a shell or a desktop manager of some kind. Or nothing, it could just let the system sleep. Or maybe you payload prime95 at a low execution priority to saturate core when idle. This shouldn't be rocket science, it should be a configuration file in some standardized serialization format (probably like json) that just reads devices : discover { graphics : radeon, default : auto } (default auto would just reduce the controller for a device given kernel info about it, etc), controllers : {vfs : some-userspace-vfs-host, display : xorg, network : network-manager}, payload : /bin/bash, or /bin/gdm, or something. Not hard, xml like specialized tags, documentation wouldn't be hard.
Only hard part would be that the init framework would need to figure out where and how to start a vfs server without actually having it running. Maybe that also belongs in the kernel, it seems important. Virtual file system, virtual memory, virtual execution seem like consistent concepts in kernels.
Anywho, your payload of whatever is now running with some kind of display controller available. In linux-space, opengl would be an assumed trait, not some tacked on x sugar. And your terminal could be graphically greater than just bitmap glpyhs on some pixel grid.
One of the greatest weaknesses in a modern terminal is the difficulty in translating an idea of computation into a tangible thing happening. Zsh has some primitive recommendations about what you type if it can't figure it out, but that is still nothing big. I'm talking eclipse-style as you type you get a list of available completion terms (and not just tab cycle through hope for the best completion), composed menus overlaying the terminal showing options as you type). That alone is huge, but reactive search would also be nice, it already exists in some terminal aps (top, for example, live reduces input search terms nicely) but the base terminal itself should be thinking about what you want.
And none of this really screams "oh noes the embedded world is ending" because on a 20mm die at 22nm you can stick 25 million transistors, more than a Cell processor. That thing runs a freaking PS3. That is a tenth of some of the smallest desktop fab standards today, which have 10 to 100 times the transistors. By the time this theoretical system could be vertically integrated if I got a hundred billions dollars tomorrow to do it, standard fab tech would be at most 6 - 10 nm and be at least 10 - 20x more space efficient. So a 5mm chip could outperform an i7 920.
Eventually you can't argue against sane defaults. In the end, you can just set graphics : false, and not load a graphics driver. You can skip any device host you don't want anyway in this theoretical init system. Of course you would use socket activation on the socket server (might end up sticking that in the kernel... oh dears).
Terminals being dumb text interfaces is getting old. We can do better. We should do better. I'm too dumb to do things the hard way!
A Tale of Two Desktops: Star Crossed Comeptitors
I've been reading a lot of the documentation on Fedora, mostly by Lennart Poettering, who made some comments about the "plumbing" of Ubuntu which got me thinking.
Fedora and Red Hat have put a ton of effort into the internals of their distributions, creating systemd, pulseaudio, avahri. They push newer lower level tech sooner - they had UEFI up faster, LVM support faster, and they drove KVM hardware virtualization with libvirt. A lot of the work on btrfs comes from the Red Hat camp, and they really like their low level performance optimization.
Then they take that base of sound concepts and throw Gnome 3 on it and call it Fedora. And it suffers for it, because after trying Gnome 3 half a dozen times (and my most recent excursion broke my user permissions and got me mad) I can finally call it utter shit. It is not a tablet OS, it is not a traditional PC OS, it is just a bunch of obtuse ideas that don't work together and make my life a pain if I try to use it. And that is bona fide failure.
Meanwhile, Canonical is big on the higher level stuff. Lightdm, Unity, and efforts towards Ubuntu TV. They use Upstart, but it is honestly a half baked piece of shit that isn't nearly as well thought out as systemd. Socket activation is amazing, and it really drives me nuts how people who proclaim "super performance needs" dodge using sockets for a lot more work. Sockets are great for IPC because they are naturally blocking file IO and behave the way you expect when something isn't set up or prepared to handle requests, and that is why systemd is so elegant, compared to the bash script dependency soup of sysv inits or Upstart.
But Unity is usable. The dash has grown on me and it is an extremely useful search feature (when it isn't saturing my paltry 350kbps of network with amazon ad pulldowns). I think the idea of pinnable app panels has won the desktop pretty clearly, since most people rarely use more than half a dozen applications in common use, and being able to rapidly switch them via a panel is a productivity and simplicity gain. Anything else is easily accessed through super+ 2 - 3 characters + enter. Crisp.
Of course, Unity might be "crisp" but it is horribly uncustomizable, and the ugly fixed title bar at the top at all times pisses me off. Whoever thought having window titles there where you mouseover the name to find the system menu, which obscues and fades some of the title needs a firm talking to. And it is slow as shit. As Ubuntu is evolving into the de-facto gaming platform of Linux, it seems laughable how bad Unity cripples resource usage. Also, VNC still doesn't work right even in 12.10. I'm an idiot, I can't remember the 500+ linux commands needed to sufficiently manage a system from command line (not to mention the 50+ arguments to each command with obscue -f -h -t+ -her --more-minuses-hehe syntax). I like having guided menus that limit my options, or at least tell me what they are. I should write a blog about "next generation terminals". Because ttys are so 1960s.
Point is, Fedora and Red Hat are pushing low level improvements to make stable and fast groundwork for pretty desktops, but don't actively revolutionize such a pretty desktop. Meanwhile, Ubuntu is going their own pretty desktop route, but keep crap like Upstart around because I-honestly-have-no-idea. But so much breaks low level in Ubuntu at arbitrary times that doesn't in Fedora it seems obvious where the focus is in both camps.
And if only they got together and got past their differences, the sum of the parts would probably be greater for it. I'd not want to be cliche with a "why desktop Linux doesn't happen" blog, because it isn't a complicated question. Desktop Linux doesn't happen because Grannie McBacon doesn't see an Ubuntu laptop when she goes into Best Buy and needs a new AOL machine to fill with viruses and adware. She sees Windows. The day of Desktop Linux is the day that Wal-Mart sells a preinstalled Ubuntu machine. Because your mother can't replace the freaking OS on her whatever she is using, she has no idea. And she shouldn't have to know, and she won't know, so stop thinking there is something inherently bad about Linux that makes it not work in laptops or desktops, because it does (at least Arch does.. work... Ubuntu is pissing me off with arbitrary parts of its software stack failing all the time). Windows is shit, and there isn't anything great about it besides the fact that some guy at Dell figured out how to make the drivers work on the XPS whatever for Windows and they just flashed the disks with copies that work out the box. Windows Vista didn't work out the box, but that didn't end Windows. Because Grannies around the globe were still buying it at Best Buy.
But the proliferation of the Linux desktop suffers every time I build an OEM machine for my Grandmother, try to throw Ubuntu on it, and since it is a Trinity APU I need a 3.5 kernel at least to properly support it, so Quantal is buggy as shit and breaks all the time (samba still doesn't work) but 12.04 doesn't have a tested backport of the 3.5 kernel to run on it, so I'm stuck on Quantal. And I get freaking memory errors from fglrx running 3d applications.
So the day Red Hat and Canonical set aside their differences and just agree on a platform is the day the world boils over, but Linux as a whole suffers from how both camps have nice things going for them but they rarely get along.
Also, I don't know if Lennart is a genius or a massive asshole. Systemd and Avahri are awesome, and Pulseaudio is steaming turds that never should have been (the solution to ALSA being weak is not to frankenstein murder it and rip its guts out while keeping it alive on life support from user space, it is to work on ALSA and make it support multiple channels and per application volume control and mixing inherently).
Fedora and Red Hat have put a ton of effort into the internals of their distributions, creating systemd, pulseaudio, avahri. They push newer lower level tech sooner - they had UEFI up faster, LVM support faster, and they drove KVM hardware virtualization with libvirt. A lot of the work on btrfs comes from the Red Hat camp, and they really like their low level performance optimization.
Then they take that base of sound concepts and throw Gnome 3 on it and call it Fedora. And it suffers for it, because after trying Gnome 3 half a dozen times (and my most recent excursion broke my user permissions and got me mad) I can finally call it utter shit. It is not a tablet OS, it is not a traditional PC OS, it is just a bunch of obtuse ideas that don't work together and make my life a pain if I try to use it. And that is bona fide failure.
Meanwhile, Canonical is big on the higher level stuff. Lightdm, Unity, and efforts towards Ubuntu TV. They use Upstart, but it is honestly a half baked piece of shit that isn't nearly as well thought out as systemd. Socket activation is amazing, and it really drives me nuts how people who proclaim "super performance needs" dodge using sockets for a lot more work. Sockets are great for IPC because they are naturally blocking file IO and behave the way you expect when something isn't set up or prepared to handle requests, and that is why systemd is so elegant, compared to the bash script dependency soup of sysv inits or Upstart.
But Unity is usable. The dash has grown on me and it is an extremely useful search feature (when it isn't saturing my paltry 350kbps of network with amazon ad pulldowns). I think the idea of pinnable app panels has won the desktop pretty clearly, since most people rarely use more than half a dozen applications in common use, and being able to rapidly switch them via a panel is a productivity and simplicity gain. Anything else is easily accessed through super+ 2 - 3 characters + enter. Crisp.
Of course, Unity might be "crisp" but it is horribly uncustomizable, and the ugly fixed title bar at the top at all times pisses me off. Whoever thought having window titles there where you mouseover the name to find the system menu, which obscues and fades some of the title needs a firm talking to. And it is slow as shit. As Ubuntu is evolving into the de-facto gaming platform of Linux, it seems laughable how bad Unity cripples resource usage. Also, VNC still doesn't work right even in 12.10. I'm an idiot, I can't remember the 500+ linux commands needed to sufficiently manage a system from command line (not to mention the 50+ arguments to each command with obscue -f -h -t+ -her --more-minuses-hehe syntax). I like having guided menus that limit my options, or at least tell me what they are. I should write a blog about "next generation terminals". Because ttys are so 1960s.
Point is, Fedora and Red Hat are pushing low level improvements to make stable and fast groundwork for pretty desktops, but don't actively revolutionize such a pretty desktop. Meanwhile, Ubuntu is going their own pretty desktop route, but keep crap like Upstart around because I-honestly-have-no-idea. But so much breaks low level in Ubuntu at arbitrary times that doesn't in Fedora it seems obvious where the focus is in both camps.
And if only they got together and got past their differences, the sum of the parts would probably be greater for it. I'd not want to be cliche with a "why desktop Linux doesn't happen" blog, because it isn't a complicated question. Desktop Linux doesn't happen because Grannie McBacon doesn't see an Ubuntu laptop when she goes into Best Buy and needs a new AOL machine to fill with viruses and adware. She sees Windows. The day of Desktop Linux is the day that Wal-Mart sells a preinstalled Ubuntu machine. Because your mother can't replace the freaking OS on her whatever she is using, she has no idea. And she shouldn't have to know, and she won't know, so stop thinking there is something inherently bad about Linux that makes it not work in laptops or desktops, because it does (at least Arch does.. work... Ubuntu is pissing me off with arbitrary parts of its software stack failing all the time). Windows is shit, and there isn't anything great about it besides the fact that some guy at Dell figured out how to make the drivers work on the XPS whatever for Windows and they just flashed the disks with copies that work out the box. Windows Vista didn't work out the box, but that didn't end Windows. Because Grannies around the globe were still buying it at Best Buy.
But the proliferation of the Linux desktop suffers every time I build an OEM machine for my Grandmother, try to throw Ubuntu on it, and since it is a Trinity APU I need a 3.5 kernel at least to properly support it, so Quantal is buggy as shit and breaks all the time (samba still doesn't work) but 12.04 doesn't have a tested backport of the 3.5 kernel to run on it, so I'm stuck on Quantal. And I get freaking memory errors from fglrx running 3d applications.
So the day Red Hat and Canonical set aside their differences and just agree on a platform is the day the world boils over, but Linux as a whole suffers from how both camps have nice things going for them but they rarely get along.
Also, I don't know if Lennart is a genius or a massive asshole. Systemd and Avahri are awesome, and Pulseaudio is steaming turds that never should have been (the solution to ALSA being weak is not to frankenstein murder it and rip its guts out while keeping it alive on life support from user space, it is to work on ALSA and make it support multiple channels and per application volume control and mixing inherently).
Trinity Build Software Notes
Now that Sandy has left me with a roof, I got back to the HTPC/server Frankenstein work and got a semblance of Quantal Quetzal running on it. Some notes:
- I ended up going with a classic grub install on the ssd rather than getting efi boot to work, since Ubuntu is not cooperative in its installer in setting that up, and attempting to use boot-repair just got me normal.mod import failures. I get the same problem on my usb drive in efi mode, but it doesn't have efi bootables at all so I'm not surprised there. Good thing the AMI uefi bios isn't really that authoritarian on conforming to uefi boot procedures.
- fglrx in 12.10 is broken without installing linux-generic-headers. Took a while to figure that out.
- pulseaudio is still tremendous garbage and produces static sound noise even on a completely different pc. When I write my own OS up hill through snow in both directions with golden boots that poops rainbows, it will definitely have one fucking sound server that can handle per-application volume control, mixing, and remote sound serving. The whole OSS/Alsa/Pulse mess is still a big fucking mess.
- Nautilus started segfaulting whenever I started it after setting "Fix the appeance of themes under root" in Ubuntu Tweak (I think, It isn't exactly science figuring out what caused it, it could have been any of a dozen thingoos). Deleting user preferences didn't work and after half an hour trying to find documentation on where the piece of $%@ stores configurations to delete and how Ubuntu Tweak modifies them (I think I found some overrides in some gconf directory but that didn't fix anything).
- Tried Marlin, it still needs integrated SMB support. Should be an easy plugin, but it isn't there, and needs to be. Maybe I should write it. Otherwise love the nav bar. Needs more configuration, but it doesn't need to be stupid obtuse like Nautilus or Dolphin, I like the Ubuntu configure menu option that pops open a box of icons and buttons and lets you put them wherever you want.
- Went with Nemo because Nautilus 3.6 segfaulted too. Apparently Nemo is made of more brazen stuff, because it wasn't segfaulting. Installed some addons. Doesn't have Ubuntu One integration, but I guess it makes sense since it isn't for Ubuntu. Starting to feel like crap because this is supposed to be a pure Ubuntu box and it is already a franken-aztec-god-thing.
- Nemo works for a while, but nemo-share SMB integration started lagging out and not detecting network shares. That ain't gonna fly for Grannie, so I tried fixing it, options and configurations didn't work. Later rebooted to the live usb again, and shares are snappy and fine in Nautilus. Strongly considering starting over again and just using tweak to remove workspaces.
- At some point, I started getting system crushing memory corruption in 3d accelerated applications like the Unigine benchmark or XBMC. No where else. Still trying to figure this out, so I'll update this post with conclusions on that. Both memtests ran fine for a few hours multiple times, that shouldn't be it, but the gpu shouldn't be having hardware failure. If I run the system at 1866 ram speed it works fine, but that points more to a DMI error in the interconnect than bad ram. It could be *&%#%@ anything.
2012/10/27
Trinity Build Notes
Random observations in no necessary order:
Observations 1: Saturday Oct 27th, 22:00 hours. Day after build, running off a live usb stick.
Observations 1: Saturday Oct 27th, 22:00 hours. Day after build, running off a live usb stick.
- NCIX took forever to process and ship order because something was missing (?) packaging was good though.
- Arc Mini case has shitty rubber feet, they are just glued on, one just popped off when I rotated it on carpet. Gonna glue them on with something more beefy.
- The Arc Mini rubber graumet mounting holes for cable management are flimsy. They work so far though.
- Arc Mini has very little clearance behind mobo tray for cables. They fit though, and the side panel isn't warping, seems sturdy.
- Arc Mini has really nice detachable dust filters. Might want to get another 2 fans (one front one top) since they are already really silent.
- Amazing temps out of this thing so far. After 2 hours of prime95 torture at stock frequencies the CPU peaked at 41c, and averaged between 39 and 40. Board never got hotter than 27c, and ambient is 26c. Overclocking will be minimal, but I'll do some since the thermals are so low.
- Hard to read if the PSU voltages / wattages are good. lm-sensors returns rubbish because the ISA adapter is crap on the Asrock board. Don't really care, the board was cheap and is fit for purpose.
- A Hyper Evo 212 will overlap DIMM slot A1 on the board. If I get another two fans, I'll step that up to 4, with 2 slim (probably 2 120mm, but might try 140 on the side panel, the heatsink overlaps some of the fan mount) so I can mount a slim fan on the pull of the heatsink and have room for all 4 dimms. Also could get low profile dimms, the corsair dominator ones have crappy cheap plastic heatsinks that take up a ton of room. If I get more ram, definitely get low profile.
- Fan control doesn't even matter on this case (it came with a fan knob backplate piece for the spare expansion slot port off the back) the fans are silent any way you slice it. It is somewhat annoying how the fan control knob uses 4 pin power and thus can't use firmware / os fan control. The board only has 2 more fan headers anyway, and one of them is "cpu2" which I imagine means dual fan cpu coolers. The singular other header is near the front. It would suck with a dual fan configuration because the mobo only supports one extra fan, and I'd like to have those speed controlled most since they would make the most obvious noise (again, if there was any).
- The bundled cpu cooler was silly. It would probably be pushing 60c under load instead of 40 and be loud as expletives because it only has a 60mm or something fan.
- Cable management could have went better, the backplate fan controller wires just lay on the psu, the mobo headers are all jutting out since they are all vertical from the board, so they all bend sharply to enter cable maangement slots.
- The hot swap drive bays are nice. They aren't "really" hot swap, since you need to mount drives, and there is nothing holding the cabling behind in place, so if you unplug and remove one you have to keep track of the wires somehow. But they are significantly better than my old Armor cases hard metal drive cage where every drive gets screwed in with the cage.
- The memory is so far running solid at stock frequencies. Hopping to OC it to at least 2200, data shows it really ups APU performance. Don't really want a voltage hike, DDR3 is finnicky over 1.5.
- The ASrock UEFI bios is ok and sucks simultaneously. As my first real hard look into UEFI, mouse control is so convoluted and unnecessary, but by using a full graphics stack rather than just a text terminal it takes a lot longer on the startup and it seems sluggish since I imagine it doesn't have very complex graphics drivers. It is the "future" though, so might as well deal with it.
- UEFI Shell is still retarded. The syntax is so convoluted and arbitrary, given that they could have taken a few decades worth of shell experience, they really bombed on it imo.
2012/10/24
Political Ranting Part 3: How My Republic Would Work
One week from elections 2012, yadda yadda. So a lot of people are yelling about jobs and crap that the federal government of a republic has no duty dealing with. After watching the 3rd party debates, it seems obvious (well, duh?) that any major presidential candidate or party acting today on the federal stage doesn't recognize the fundamental flaws in the way the American system is implemented. And it isn't something shallow like first past the post, it is deeper than that, and it requires some introspection on history.
Way back when this country was founded, it was populated by a few million people, and the way the original proceedings of the time were that white men got to vote every year or two in local, state, and federal elections, and most of those votes were for local people taking on local governmental duties like the sherrif, a judge, the mayor of the town, the town council, etc. The state they lived in had their own way of electing regional governances, the state congress and the governor, and the only federal thing any average citizen had to worry about was a vote for their local house representative. The house was interesting in that originally it had a variable number of members and the only rule in the Constitution was that you could have at most one member per 30,000 people.
The modern house seats a representative per ~710,000 people (not necessarily voters, just census residents). Back when the constitution was written, the house had 65 members. The 1790 population census at Wikipedia cites approximately 4 million people in the country at the time. That would have been one representative per ~62k people. It now is fixed at 435, and one representative "represents" over 10 times as many people. The problem here should be obvious - as individual representatives represent more and more people, they lose connection to their constitutenacy and see them more as statistics and numbers rather than individuals. Your vote and voice matters less in the house because you are encompassed in a larger group. So back in the dawning years of the nation, you could easily expect to have a larger voice in the house since you had more representation per person at the time, just because there were fewer people in general.
That isn't really the big problem here. Back then, you only voted for a house representative. Your state would appoint senators and memebers of the electoral college to elect the president. You didn't need to worry about those - and today I would say that would be so much better than what we have. In the worst case scenario, California, you have 2 senators representing almost 38 million people. The electoral college system and the tremendous stupidity of the average voter means that only around 8 states matter in the presidency, and the recent staged parody of a debate season only shows how dumb voters are for swinging between two politicians with established political careers as senator + president, and governor, respectively, and taking their words as meaning anything when we have years of their actions to refer to.
It doesn't help that the original purpose of the electoral college, and the allocation of senate seats, was to appease states that at the time were small, and were acting as independent nations. It was a concession not for liberty or good government but like the 3/5ths compromise was done just to get a functional federal government in the first place. Today, they harm us greatly, and the direct election of these people makes it so that you can't expect them to have any concept of who they represent. No wonder they only hear the voices of extremely wealthy special interests and campaign donors that line their coffers, they can't possibly even begin to comprehend how many people they "represent" when it numbers in the millions. And no wonder nobody can compete with the two party system, because the amount of money it takes to reach that many people and voice positions is astronomical.
The problem is simply one of scale and size. Because in the end, politics is dealing with human beings. Your average citizen does not have the time (hell, I'm unemployed and it took me around ~30 hours to research the major ticket placements I get to vote on in PA this year, and compare the candidates for each, who really like obscuring their positions on whatever it is they are being elected for, I wonder why) to pick individuals for dozens of positions every election cycle. They don't have the time to wade through the bullshit rhetoric they get heaped upon all the time. No wonder we have parties and spin dominating discourse rather than intellect, reason, and sound policy. You have individuals voting for way too many things, so of course they eventually break down and vote party lines. You have first past the post elections, so of course two party systems that are easily corrupted and exploited by wealthy interests can just funnel money into one of two places and expect wide reaching political benefit because the parties act as hive minds (especially the republican party, as it goes more and more right and gets more and more extremist, the core is all that remains and they speak in one voice now it seems, but the democrats are just as spineless and bought out from their own special interests).
You have politicians representing way too many people directly, who do horrendous things to secure reelections, who are funded by massive corporate dollars funneled through their parties to maintain control, and who can never fathom conceptualizing all the people they represent as individuals rather than statistics. You have outdated mechanisms of election designed around appeasing disparate foreign powers into consolidating into one nation rather than being around individual liberty and voice.
So unlike everyone else bitching about this problem, here is my solution. I imagine it is gravely flawed and shows off my ignorance in droves, but it is better than nothing to be loud and ignorant than to be ignorant and in denial of it.
1. People need to be electing as few people as possible, but have as much influence on those elected as possible. Your voice should be heard, respected, considered, and it should have implications on every level of politics regardless of viewpoint. You can kill two birds with one stone here - use CPGrey's (amazingly smart guy) binary partitioning of the population scheme until you are dividing the population into roughly equal segments of something between 1000 and 1500 people. I'd argue that is about the "average" limit a normal person can hope to actually relate to their constituancy on a human, personal level, without being too much overhead per person (if you were electing a representative per 10 people, supporting 10% of the population as politicians would be infeasible, you want to minimize the economic overhead of governance). So every 1000 - 1500 people can elect (now here is something equally radical) someone for a two year term, with no chance for reelection, as a sitting representative on a local council of 10. They control local law, and have a local monetary transaction / consumption (ie, the exchange of money between parties, you could probably have this nationally the burden of the receiver to pay a percentage of money granted as a local transaction tax, and make it a constitutional law that localities can only tax in this way, in one direction, but they can control the tax rate). Unlike our current broken state sales tax code, it would be for any money coming into the pockets of residents of a locality (note, these localities are approximately 10k to 15k people) and citizens are expected to pay as a percentage of money received.
That includes wages, it includes physical property sales, it includes capital gains, inheritance, and Christmas cards. No exceptions. When money one person has goes to someone else, a percentage is expected to be given as local tax. Of course you could never process all of these and make sure grandparents don't give their grandchildren $50 where the kids don't pay their reception tax on it. Money between private citizens, I'd imagine, would be untaxed, because you just can't feasibly tax that. Money between groups would be taxed. And groups are an important concept in my entire political ideology, because at the end of the day, most of the work of government is to protect individuals from groups.
So the transfer of wealth, through business (including funeral estates) would be taxed locally, in that a percentage of money you recieve from any source must be paid annually to your local council.
Here is the beauty. That accounts for a lot of money. And if you have sufficient social mobility, people will move to areas with lower tax rates on purpose, and some will pay higher taxes for government services they like. You could easily have a 1% tax of this kind pay all of a local governments dues. Of course, wealthy neighborhoods will probably have a very tiny tax rate of this kind. Good on them! It is their local tax, and if their local government makes good decisions that attract people to live there, those good ideas grow and spread. It is an organic trial and error of policy and taxation that lets people move to where they agree with the ideologies of the area. And since it is at such a small scale, the influence of individuals on their local councils is very high, so good ideas can be heard and attempted. And it doesn't cost millions to get a message across to a constituency.
This is a lot like city states. They were tight knit, closed off communities with their own policies. People would move between them and to the prosperous ones they agreed with. The only weakness in city states were disputes between them, in civil liberties within them (small groups are very prone to mob rule and witch hunting) and defense (because a small group of people has a hard time fighting off a big one).
You can solve most of those issues today though, just through progress, innovation, and technology. You still have a nation instead of independent localities, so you have a constitution and higher courts. You absolutely have codified national law on the topic of civil liberties, and the abused and discriminated against can appeal to higher courts than the local one for protection and justice. You still have a national military for protection of any locality, and you would expect the same public outrage about abuse of such a military (... heh, like that actually happens when the US military acts barbaric abroad). You have instantaneous communication - nobody is isolated anymore. And economics are global and globalized, so you don't have traditional issues like food shortages or price disputes, since everything is on an international market anyway.
Disputes between localities is a states issue. Plain and simple. This system I propose is build like a pyramid, in many ways like the original constitution envisioned, but today we have all politics operating on the top and having wide reaching implications for everyone, where local and state governments barely write laws but exude more influence over the actual lives of citizens just on how they fund road repairs and schools and tax property. You want tax law to be national and flat, and you want local policy experimentation to find out what works before you force it upon everyone, where they have no choice in the matter.
And choice is important. If you can be socially mobile, you can go where you like the policies of the state or local government, rather than be stuck with nonsense like NCLB, the patriot act, or NDAA. If you don't like Obamacare, under such a system, it would be a local law, not a national one, and healthcare could be based in regions (or states... getting to that).
So how does state and federal law work here? If you have localities of a council of 10, that council elects 1 member amongst themselves when they are first elected themselves (so that in the end state representatives are directly elected, but they are chosen by council members once they convene in a concesus, and since there are no reelections it would be really hard to rig a state elector body to be predominately of one political viewpoint unless it represents the viewpoints of the people at large, which is an emergent behavior of this system - as people organically move to like minded ideological areas, the higher levels of governance surrounding them would start adopting common law that they all agree on, and you can expect larger like minded communities to emerge beyond just the local level, over time, slowly, and with lots of room for objection and redirection if policies don't pan out).
So you have a "state" of another council of 100, which represents 1 million to 1.5 million (mathematically, if localities have a normal distribution [which doesn't happen because you are bilaterally splitting the population anyway, but this is just a thought experiment now - you would actual have very closely sized localities everywhere under proper mathematical partitioning] of 1k to 1.5k people, as you compound additions of these distributions you get statistically much more likely to be at the median of 1.25k people with very low variance). These states have a few restrictions - they can only tax at up to 1.5x the lowest local tax rate, and they can't borrow money (localities can, because they might need to perform local damage control - that is fine, it is a small enough group to handle variability of finances, but states and federal governments can't borrow and perpetually spend deficit without significant bad economic ramifications from inflation, and I'll talk about currency and exchange in a later post). So the idea is that you would have a state war chest, or a finance campaign from citizens to fund things they want that aren't a part of the tax code, or when the state needs emergency funds, they could just run a donation drive. This is much more sound economics, and much more "free", since it means individuals and constituents would be funding their own state policies that are beyond the tax code.
Now I don't know if I would want state funding to be state resident only, or open it up to the fed, or allow random contributors. Because once you start adding arbitrary money flows into the mix, you add a lot of potential corruption, and can easily end up with state dependence on federal dollars. But if you only let states contribute to their own budgets, and run into a desperate need for money that the state can't produce even with citizen involvement... honestly, that is the better way to do things. States need to show the restraint not to overspend themselves, and if they do, they reap the consequences of their actions and the citizens can rebuke them appropriately.
Since state councils are fixed at a large size, you can imagine discourse is less fluid but more open for on the floor debate. It would be necessary given that state councils can't comprehend the people they represent, much like how current politicians can't, so any policy at the state level needs to be slow and laborious to get through. Since representatives are from localities, you aren't going to have arbitrary party lines drawn, and there would be much more contention over policy.
The other important state-wise requirement is that any law or policy change under consideration must first be approved or already in place under at least half of all localities it oversees and less than a third of localities can be in direct opposition to it through their own policies or legislation. Meaning you have between 51% or more support and 32% or less opposition. That means it is hard to get laws past at the state level, which is intentional.
After states, you have a federal level which isn't of fixed size, and is composed of 3 representatives per state (meaning states are actually councils of 997, insuring no tied votes, like the localities have 9 per council so they can't tie either). Federal law, like state law, requires at least 66% of states support and less than 25% oppose such legislation. This makes federal law extremely hard to pass, on purpose. If you took the current USA at 310 million people, you would have 744 federal council members. Which is bigger than the current congress, but not by much, and their influence is very restricted.
Each local, state, and federal tier picks citizens from whatever jurisdiction they control (that aren't themselves) to fill the roles of judicial, executive, and managerial duties. I would imagine the first month of each election cycle might be consumed just by generating a full government, and until positions are filled the predecessor maintains the position, but it can't be held off indefinitely, so it would need to be some constitutional mandate that councils must fill government vacancies within 30 days of the departure of the previous office holder, or some such. Offices, unlike elected officials, could probably be renewed, so in effect the councils are bosses of every other government job and every 2 years can replace those it finds ill suited for their work. You can also have councils able to "fire" people with a voting majority, and replace them immediately. Elections / choosing of new personnel to fill roles is only required once every 2 years, though.
So I'll stop there. It gives the general idea I have. People elect only a local councilman, but that councilman may be serving in the national council. They can't be reelected, so every 2 years every 1 - 1.5k people pick someone new to play councilman. With that few people, you aren't voting on party or rhetoric, but by the people you know in your community from experience. You wouldn't need campaign ads or any such nonsense, someone who wants to run for council could just go door to door, or the locality could just have a town house debate between people who want to run. It is the most organic election system I could imagine, and if you layer the higher levels of bueracracy on top of the local councils, you allow for maximum legislative experimentation with the most fairness for everyone, as long as they are mobile enough to move where the ideologies agree with them. You want somewhere for every political viewpoint to go and live the way they want, with the minimum of executive and state overhead and mandate that isn't already agreed upon and in law by the localities.
The federal still controls the military, and the states probably control the police, so you still have the problems of protection dealt with. State and federal can only tax at 1.5x the highest rate of its constituent bodies, so taxes are really tight, on purpose. Federal and states can't borrow on a deficit, and must finance any post-tax policies through fund raisers and donation drives. Since the fed controls the military, it would still have the ability to take "extreme immediate action" when needed, but that really is the only essential role of the federal government in a sound republic in my book.
Way back when this country was founded, it was populated by a few million people, and the way the original proceedings of the time were that white men got to vote every year or two in local, state, and federal elections, and most of those votes were for local people taking on local governmental duties like the sherrif, a judge, the mayor of the town, the town council, etc. The state they lived in had their own way of electing regional governances, the state congress and the governor, and the only federal thing any average citizen had to worry about was a vote for their local house representative. The house was interesting in that originally it had a variable number of members and the only rule in the Constitution was that you could have at most one member per 30,000 people.
The modern house seats a representative per ~710,000 people (not necessarily voters, just census residents). Back when the constitution was written, the house had 65 members. The 1790 population census at Wikipedia cites approximately 4 million people in the country at the time. That would have been one representative per ~62k people. It now is fixed at 435, and one representative "represents" over 10 times as many people. The problem here should be obvious - as individual representatives represent more and more people, they lose connection to their constitutenacy and see them more as statistics and numbers rather than individuals. Your vote and voice matters less in the house because you are encompassed in a larger group. So back in the dawning years of the nation, you could easily expect to have a larger voice in the house since you had more representation per person at the time, just because there were fewer people in general.
That isn't really the big problem here. Back then, you only voted for a house representative. Your state would appoint senators and memebers of the electoral college to elect the president. You didn't need to worry about those - and today I would say that would be so much better than what we have. In the worst case scenario, California, you have 2 senators representing almost 38 million people. The electoral college system and the tremendous stupidity of the average voter means that only around 8 states matter in the presidency, and the recent staged parody of a debate season only shows how dumb voters are for swinging between two politicians with established political careers as senator + president, and governor, respectively, and taking their words as meaning anything when we have years of their actions to refer to.
It doesn't help that the original purpose of the electoral college, and the allocation of senate seats, was to appease states that at the time were small, and were acting as independent nations. It was a concession not for liberty or good government but like the 3/5ths compromise was done just to get a functional federal government in the first place. Today, they harm us greatly, and the direct election of these people makes it so that you can't expect them to have any concept of who they represent. No wonder they only hear the voices of extremely wealthy special interests and campaign donors that line their coffers, they can't possibly even begin to comprehend how many people they "represent" when it numbers in the millions. And no wonder nobody can compete with the two party system, because the amount of money it takes to reach that many people and voice positions is astronomical.
The problem is simply one of scale and size. Because in the end, politics is dealing with human beings. Your average citizen does not have the time (hell, I'm unemployed and it took me around ~30 hours to research the major ticket placements I get to vote on in PA this year, and compare the candidates for each, who really like obscuring their positions on whatever it is they are being elected for, I wonder why) to pick individuals for dozens of positions every election cycle. They don't have the time to wade through the bullshit rhetoric they get heaped upon all the time. No wonder we have parties and spin dominating discourse rather than intellect, reason, and sound policy. You have individuals voting for way too many things, so of course they eventually break down and vote party lines. You have first past the post elections, so of course two party systems that are easily corrupted and exploited by wealthy interests can just funnel money into one of two places and expect wide reaching political benefit because the parties act as hive minds (especially the republican party, as it goes more and more right and gets more and more extremist, the core is all that remains and they speak in one voice now it seems, but the democrats are just as spineless and bought out from their own special interests).
You have politicians representing way too many people directly, who do horrendous things to secure reelections, who are funded by massive corporate dollars funneled through their parties to maintain control, and who can never fathom conceptualizing all the people they represent as individuals rather than statistics. You have outdated mechanisms of election designed around appeasing disparate foreign powers into consolidating into one nation rather than being around individual liberty and voice.
So unlike everyone else bitching about this problem, here is my solution. I imagine it is gravely flawed and shows off my ignorance in droves, but it is better than nothing to be loud and ignorant than to be ignorant and in denial of it.
1. People need to be electing as few people as possible, but have as much influence on those elected as possible. Your voice should be heard, respected, considered, and it should have implications on every level of politics regardless of viewpoint. You can kill two birds with one stone here - use CPGrey's (amazingly smart guy) binary partitioning of the population scheme until you are dividing the population into roughly equal segments of something between 1000 and 1500 people. I'd argue that is about the "average" limit a normal person can hope to actually relate to their constituancy on a human, personal level, without being too much overhead per person (if you were electing a representative per 10 people, supporting 10% of the population as politicians would be infeasible, you want to minimize the economic overhead of governance). So every 1000 - 1500 people can elect (now here is something equally radical) someone for a two year term, with no chance for reelection, as a sitting representative on a local council of 10. They control local law, and have a local monetary transaction / consumption (ie, the exchange of money between parties, you could probably have this nationally the burden of the receiver to pay a percentage of money granted as a local transaction tax, and make it a constitutional law that localities can only tax in this way, in one direction, but they can control the tax rate). Unlike our current broken state sales tax code, it would be for any money coming into the pockets of residents of a locality (note, these localities are approximately 10k to 15k people) and citizens are expected to pay as a percentage of money received.
That includes wages, it includes physical property sales, it includes capital gains, inheritance, and Christmas cards. No exceptions. When money one person has goes to someone else, a percentage is expected to be given as local tax. Of course you could never process all of these and make sure grandparents don't give their grandchildren $50 where the kids don't pay their reception tax on it. Money between private citizens, I'd imagine, would be untaxed, because you just can't feasibly tax that. Money between groups would be taxed. And groups are an important concept in my entire political ideology, because at the end of the day, most of the work of government is to protect individuals from groups.
So the transfer of wealth, through business (including funeral estates) would be taxed locally, in that a percentage of money you recieve from any source must be paid annually to your local council.
Here is the beauty. That accounts for a lot of money. And if you have sufficient social mobility, people will move to areas with lower tax rates on purpose, and some will pay higher taxes for government services they like. You could easily have a 1% tax of this kind pay all of a local governments dues. Of course, wealthy neighborhoods will probably have a very tiny tax rate of this kind. Good on them! It is their local tax, and if their local government makes good decisions that attract people to live there, those good ideas grow and spread. It is an organic trial and error of policy and taxation that lets people move to where they agree with the ideologies of the area. And since it is at such a small scale, the influence of individuals on their local councils is very high, so good ideas can be heard and attempted. And it doesn't cost millions to get a message across to a constituency.
This is a lot like city states. They were tight knit, closed off communities with their own policies. People would move between them and to the prosperous ones they agreed with. The only weakness in city states were disputes between them, in civil liberties within them (small groups are very prone to mob rule and witch hunting) and defense (because a small group of people has a hard time fighting off a big one).
You can solve most of those issues today though, just through progress, innovation, and technology. You still have a nation instead of independent localities, so you have a constitution and higher courts. You absolutely have codified national law on the topic of civil liberties, and the abused and discriminated against can appeal to higher courts than the local one for protection and justice. You still have a national military for protection of any locality, and you would expect the same public outrage about abuse of such a military (... heh, like that actually happens when the US military acts barbaric abroad). You have instantaneous communication - nobody is isolated anymore. And economics are global and globalized, so you don't have traditional issues like food shortages or price disputes, since everything is on an international market anyway.
Disputes between localities is a states issue. Plain and simple. This system I propose is build like a pyramid, in many ways like the original constitution envisioned, but today we have all politics operating on the top and having wide reaching implications for everyone, where local and state governments barely write laws but exude more influence over the actual lives of citizens just on how they fund road repairs and schools and tax property. You want tax law to be national and flat, and you want local policy experimentation to find out what works before you force it upon everyone, where they have no choice in the matter.
And choice is important. If you can be socially mobile, you can go where you like the policies of the state or local government, rather than be stuck with nonsense like NCLB, the patriot act, or NDAA. If you don't like Obamacare, under such a system, it would be a local law, not a national one, and healthcare could be based in regions (or states... getting to that).
So how does state and federal law work here? If you have localities of a council of 10, that council elects 1 member amongst themselves when they are first elected themselves (so that in the end state representatives are directly elected, but they are chosen by council members once they convene in a concesus, and since there are no reelections it would be really hard to rig a state elector body to be predominately of one political viewpoint unless it represents the viewpoints of the people at large, which is an emergent behavior of this system - as people organically move to like minded ideological areas, the higher levels of governance surrounding them would start adopting common law that they all agree on, and you can expect larger like minded communities to emerge beyond just the local level, over time, slowly, and with lots of room for objection and redirection if policies don't pan out).
So you have a "state" of another council of 100, which represents 1 million to 1.5 million (mathematically, if localities have a normal distribution [which doesn't happen because you are bilaterally splitting the population anyway, but this is just a thought experiment now - you would actual have very closely sized localities everywhere under proper mathematical partitioning] of 1k to 1.5k people, as you compound additions of these distributions you get statistically much more likely to be at the median of 1.25k people with very low variance). These states have a few restrictions - they can only tax at up to 1.5x the lowest local tax rate, and they can't borrow money (localities can, because they might need to perform local damage control - that is fine, it is a small enough group to handle variability of finances, but states and federal governments can't borrow and perpetually spend deficit without significant bad economic ramifications from inflation, and I'll talk about currency and exchange in a later post). So the idea is that you would have a state war chest, or a finance campaign from citizens to fund things they want that aren't a part of the tax code, or when the state needs emergency funds, they could just run a donation drive. This is much more sound economics, and much more "free", since it means individuals and constituents would be funding their own state policies that are beyond the tax code.
Now I don't know if I would want state funding to be state resident only, or open it up to the fed, or allow random contributors. Because once you start adding arbitrary money flows into the mix, you add a lot of potential corruption, and can easily end up with state dependence on federal dollars. But if you only let states contribute to their own budgets, and run into a desperate need for money that the state can't produce even with citizen involvement... honestly, that is the better way to do things. States need to show the restraint not to overspend themselves, and if they do, they reap the consequences of their actions and the citizens can rebuke them appropriately.
Since state councils are fixed at a large size, you can imagine discourse is less fluid but more open for on the floor debate. It would be necessary given that state councils can't comprehend the people they represent, much like how current politicians can't, so any policy at the state level needs to be slow and laborious to get through. Since representatives are from localities, you aren't going to have arbitrary party lines drawn, and there would be much more contention over policy.
The other important state-wise requirement is that any law or policy change under consideration must first be approved or already in place under at least half of all localities it oversees and less than a third of localities can be in direct opposition to it through their own policies or legislation. Meaning you have between 51% or more support and 32% or less opposition. That means it is hard to get laws past at the state level, which is intentional.
After states, you have a federal level which isn't of fixed size, and is composed of 3 representatives per state (meaning states are actually councils of 997, insuring no tied votes, like the localities have 9 per council so they can't tie either). Federal law, like state law, requires at least 66% of states support and less than 25% oppose such legislation. This makes federal law extremely hard to pass, on purpose. If you took the current USA at 310 million people, you would have 744 federal council members. Which is bigger than the current congress, but not by much, and their influence is very restricted.
Each local, state, and federal tier picks citizens from whatever jurisdiction they control (that aren't themselves) to fill the roles of judicial, executive, and managerial duties. I would imagine the first month of each election cycle might be consumed just by generating a full government, and until positions are filled the predecessor maintains the position, but it can't be held off indefinitely, so it would need to be some constitutional mandate that councils must fill government vacancies within 30 days of the departure of the previous office holder, or some such. Offices, unlike elected officials, could probably be renewed, so in effect the councils are bosses of every other government job and every 2 years can replace those it finds ill suited for their work. You can also have councils able to "fire" people with a voting majority, and replace them immediately. Elections / choosing of new personnel to fill roles is only required once every 2 years, though.
So I'll stop there. It gives the general idea I have. People elect only a local councilman, but that councilman may be serving in the national council. They can't be reelected, so every 2 years every 1 - 1.5k people pick someone new to play councilman. With that few people, you aren't voting on party or rhetoric, but by the people you know in your community from experience. You wouldn't need campaign ads or any such nonsense, someone who wants to run for council could just go door to door, or the locality could just have a town house debate between people who want to run. It is the most organic election system I could imagine, and if you layer the higher levels of bueracracy on top of the local councils, you allow for maximum legislative experimentation with the most fairness for everyone, as long as they are mobile enough to move where the ideologies agree with them. You want somewhere for every political viewpoint to go and live the way they want, with the minimum of executive and state overhead and mandate that isn't already agreed upon and in law by the localities.
The federal still controls the military, and the states probably control the police, so you still have the problems of protection dealt with. State and federal can only tax at 1.5x the highest rate of its constituent bodies, so taxes are really tight, on purpose. Federal and states can't borrow on a deficit, and must finance any post-tax policies through fund raisers and donation drives. Since the fed controls the military, it would still have the ability to take "extreme immediate action" when needed, but that really is the only essential role of the federal government in a sound republic in my book.
2012/10/23
AMD Rant about CPUs and whatnot
This whole wall of text was a blithering comment I wrote on HN about AMD. The original thread is here.
I don't buy this story at all (that AMD's time is running out), mainly because AMD never could fight Intel in a straight up fight. AMD is at least an order of magnitude a smaller company than Intel, so much so that Intel spent more money on R&D (http://newsroom.intel.com/community/intel_newsroom/blog/2011...) than AMD makes in total revenue (http://phx.corporate-ir.net/phoenix.zhtml?c=74093&p=irol...) last year.
That isn't even about monopolistic business practices, decisions, or market forces. You are comparing two companies operating on effectively different planes of existence. Intel owns the instruction set, has the most advanced silicon fabs in the world (and still makes their chips in house) and spends more on R&D than AMD even makes. And all Intel does is make CPUs.
Meanwhile, AMD bought ATI and took a tremendous gamble on APUs. They are just starting to mature their APU line with Trinity in the last few weeks, and are still reeling from integrating two large companies together like that. They had to sell their own fabs off and couldn't even make their most recent generation of GPUs at Global Foundries because they aren't keeping up anymore. On that front, the 7000 series graphics cards (from my objective viewpoint) basically crushed Nvidia for the first time in a while. They were first to market, as a result didn't have major shortages, and price cut at the appropriate times to keep their products competitive. It took Nvidia almost half a year to have their GPU line out after AMD, and their chips, at competitive prices, are almost exclusively openGL / graphics devices, being beaten in GPGPU operations by the old 500 series and easily by the 7000 series because they tried going many core limited pipeline over more generic cores in the 500 or 7000 series that were better at arbitrary GPU compute tasks.
So they are doing really well in graphics. And their APUs are really good graphics chips too. The only flaw in AMD right now is that they are floundering on the cpu fabrication front as badly as Nvidia did with their graphics line (only with their cpus). They eat power, they are effectively 1.5 generations of fab tech behind, and the bulldozer architecture is weak in floating point and serial operations.
That doesn't ruin a company. Hopefully next year is the year they really start moving forward, because I really think AMD is the company to finally really merge gpu and cpu components into some kind of register / pipeline / alu soup that can really revolutionize the industry (imagine SIMD instruction extensions to x64 that behave like opencl parallel operations and have the normal processor cores work on register ranges and vectors like a gpu, rather than just having a discrete gpu and cpu on one die).
Even barring that kind of pipe dream, Steamroller is shaping up to be sound. It finally gets a die shrink AMD desperately needs to stay competitive, if only to 28nm, and finally puts GCN into their APU graphics instead of the 6000 series era VLIW architecture.
They can't really stand up and fight Intel head on anymore, because Intel got on the ball again, and their cpus are crushing AMD in a lot of use cases, especially power usage. But AMD still has significantly better graphics, and are leveraging it, and they are finally getting over the ATI growing pains, so I'd wager they are still in the game, if only barely. They have a lot of potential still.
Footnote: I really think market is a big reason AMD is falling behind. The Ultrabook campaign is stealing wealthy pc buyers from them, and that is where chip makers get a majority of their profits (look at the high end mobile i7 chips selling for a thousand bucks). Desktop sales are abyssmal besides OEM systems or businesses. Intel wins at getting business contracts just by size alone, they just have more reach. Desktop enthusiasts can bank on AMD being a cost effective platform, but the wow factor lies in Intel chips, even at the premium, and they steal that market too. AMD doesn't even do well in the cheap HTPC market because their chips burn so much power. They are in a crossroads where all their target markets are either becoming obsolete or they are losing ground, and not because they have bad products, but because their perceptions and influence are growing worse.
Right now, AMD is really strong in mid ranges. Mid range laptops with a trinity APU are really good and extremely cost effective (I had a friend buy an A8 based Toshiba because it was $500 cheaper than a comparable Intel machine that could run League of Legends). Piledriver is good enough in the desktop space to recommend one of the 4 or 6 core variants to friends looking for a budget PC gaming experience, because they are pretty much more than enough with a proper overclock for anything major. But AMD has (from my experience) a bad image right now as a dying company and as a maker of budget goods, even when their GPUs kick butt and their desktop CPUs can (at least according to the recent Phoronix Piledriver FX benchmark) hold ground against even Intels best Ivy Bridge offerings in some cases at almost half the price.
I don't buy this story at all (that AMD's time is running out), mainly because AMD never could fight Intel in a straight up fight. AMD is at least an order of magnitude a smaller company than Intel, so much so that Intel spent more money on R&D (http://newsroom.intel.com/community/intel_newsroom/blog/2011...) than AMD makes in total revenue (http://phx.corporate-ir.net/phoenix.zhtml?c=74093&p=irol...) last year.
That isn't even about monopolistic business practices, decisions, or market forces. You are comparing two companies operating on effectively different planes of existence. Intel owns the instruction set, has the most advanced silicon fabs in the world (and still makes their chips in house) and spends more on R&D than AMD even makes. And all Intel does is make CPUs.
Meanwhile, AMD bought ATI and took a tremendous gamble on APUs. They are just starting to mature their APU line with Trinity in the last few weeks, and are still reeling from integrating two large companies together like that. They had to sell their own fabs off and couldn't even make their most recent generation of GPUs at Global Foundries because they aren't keeping up anymore. On that front, the 7000 series graphics cards (from my objective viewpoint) basically crushed Nvidia for the first time in a while. They were first to market, as a result didn't have major shortages, and price cut at the appropriate times to keep their products competitive. It took Nvidia almost half a year to have their GPU line out after AMD, and their chips, at competitive prices, are almost exclusively openGL / graphics devices, being beaten in GPGPU operations by the old 500 series and easily by the 7000 series because they tried going many core limited pipeline over more generic cores in the 500 or 7000 series that were better at arbitrary GPU compute tasks.
So they are doing really well in graphics. And their APUs are really good graphics chips too. The only flaw in AMD right now is that they are floundering on the cpu fabrication front as badly as Nvidia did with their graphics line (only with their cpus). They eat power, they are effectively 1.5 generations of fab tech behind, and the bulldozer architecture is weak in floating point and serial operations.
That doesn't ruin a company. Hopefully next year is the year they really start moving forward, because I really think AMD is the company to finally really merge gpu and cpu components into some kind of register / pipeline / alu soup that can really revolutionize the industry (imagine SIMD instruction extensions to x64 that behave like opencl parallel operations and have the normal processor cores work on register ranges and vectors like a gpu, rather than just having a discrete gpu and cpu on one die).
Even barring that kind of pipe dream, Steamroller is shaping up to be sound. It finally gets a die shrink AMD desperately needs to stay competitive, if only to 28nm, and finally puts GCN into their APU graphics instead of the 6000 series era VLIW architecture.
They can't really stand up and fight Intel head on anymore, because Intel got on the ball again, and their cpus are crushing AMD in a lot of use cases, especially power usage. But AMD still has significantly better graphics, and are leveraging it, and they are finally getting over the ATI growing pains, so I'd wager they are still in the game, if only barely. They have a lot of potential still.
Footnote: I really think market is a big reason AMD is falling behind. The Ultrabook campaign is stealing wealthy pc buyers from them, and that is where chip makers get a majority of their profits (look at the high end mobile i7 chips selling for a thousand bucks). Desktop sales are abyssmal besides OEM systems or businesses. Intel wins at getting business contracts just by size alone, they just have more reach. Desktop enthusiasts can bank on AMD being a cost effective platform, but the wow factor lies in Intel chips, even at the premium, and they steal that market too. AMD doesn't even do well in the cheap HTPC market because their chips burn so much power. They are in a crossroads where all their target markets are either becoming obsolete or they are losing ground, and not because they have bad products, but because their perceptions and influence are growing worse.
Right now, AMD is really strong in mid ranges. Mid range laptops with a trinity APU are really good and extremely cost effective (I had a friend buy an A8 based Toshiba because it was $500 cheaper than a comparable Intel machine that could run League of Legends). Piledriver is good enough in the desktop space to recommend one of the 4 or 6 core variants to friends looking for a budget PC gaming experience, because they are pretty much more than enough with a proper overclock for anything major. But AMD has (from my experience) a bad image right now as a dying company and as a maker of budget goods, even when their GPUs kick butt and their desktop CPUs can (at least according to the recent Phoronix Piledriver FX benchmark) hold ground against even Intels best Ivy Bridge offerings in some cases at almost half the price.
Subscribe to:
Posts (Atom)