Hacker Newsnew | past | comments | ask | show | jobs | submit | more BiteCode_dev's commentslogin

Agreed, but remember we likely see the universe with massive blind spots. Maybe given enough time, an aquatic specie would find a way to make tech, manipulate energy and develop society in ways that require a physic we know nothing about. Or maybe using something we know, but could not think of using that way because of our biases.

We are a very young civilization after all, the quantity of things we don't know is massive.


People smoke, use drugs, over eat and drive drunk if allowed to do so.

Socially, people go back to abusing spouses, practice deshumanizing religious acts, elect politicians that just lied to them and buy products that have let them down before.

We do a lot of things that bad for us, that doesn't mean it's a good thing.

If heroin was legal, I'm pretty sure the company selling it would make a good quarter report as well.

It doesn't mean apple doesn't do a lot of things right. It does. People are not very technical, they want sane default. They don't want to fiddle with tech. And apple provides that. In exchange, however, people accept the lock in.


Did you really compare having an iPhone with abusing your wife and heroine addiction?


It implies that people on HN are intelligent enough to understand that analogies are not meant to be a one of one match instead of using it as an excuse to prepare for a twitter like outrage.


Ahh yeah, the good ol' "you're too dumb to understand my spaghetti analogy". My hero.


I'm starting to think the reviewers have a quota of rejection to fill up and they reject apps randomly over some arbitrary concerns to meet it. Or maybe just to show they are doing they job. Or worse, the app store off shore validations, so the sub contractors script it to reject random stuff to pretend they have humans behind it.


Not a surprise, since co2 is an oxide, and therefore very stable in the athmosphere. It would take a huge amount of energy to remove it, and we don't even stop putting it in there.

Janvici had a nice way to put it: the 1.5C are already signed for, which means we won't ever see the climate of today again in the next 5000 years.


> Not a surprise, since co2 is an oxide, and therefore very stable in the athmosphere. It would take a huge amount of energy to remove it,

There is an exothermic reaction that removes CO2 from the atmosphere, the formation of carbonates from weathering of silicate rocks. As this is naturally very slow, there is currently ongoing research into multiple different ways to speed it up.


That doesn't change anything. You need a huge amount of energy to remove CO2 from the atmosphere because CO2 is a tiny constituent part of Air (~400ppm) - that means one has to move a million molecules of air across a collector (whatever that is) to remove 400 molecules of CO2. You can't do that without huge amounts of energy and a huge surface area for your collector ... on any human timescale.


Oh man. Somebody always gets a way to make problems out of the entropy of diffusion. It increases with the log of the concentration, so whatever problem you estimate to happen, it can be worked around.

On the case of silicates, a trivial work around is to just spread them around and let the same diffusion bring the CO2 into them.


Plants do. And they only need the sunlight they have where they grow.


I think that’s the “huge surface” op is talking about.


And we’re busy decreasing the surface of woodlands on the planet.


Huh I thought the world has more trees now then ever before.


I don’t know, but they could both be true. How many 5yo pine trees does it take to equal the surface area of one giant redwood?


It's really about growth rate rather than size.


The mass of air that moves past the existing fleet of wind turbines in a year is roughly a fifth of the mass of the atmosphere.

It is a civilisation sized project that will take a lifetime, but it is achievable.


Or we could just stop burning coal.


That would be very easy if we didn't benefit greatly from burning coal


Are you familiar with the term "negative externalities?"


Sure. But the benefit is way bigger than the drawback. At least that is the decision society has made.


No. People like David Koch benefit.

The rest have very little say.


Why do we talk about removing CO2 from the atmosphere but not trying to pull it out of the ocean?


What makes you think it would be significantly easier to filter out the carbolic acid from the ocean? The same difficulties apply, and water is much more viscous than air.


Didn’t carbon we’ve carelessly dumped in the atmosphere start as ocean life that sunk to the bottom, can’t we turbo charge that cycle?


Not practically. We are talking about huge scales, such that the industrial production, transport, etc., would be as much of an environmental disaster as what it's trying to solve.


Because there is an homeostasic relationship between the co2 in the ocean and the air, and it always end up balancing out automatically.


And of course its not like we have giant windmill farms all over the world that we could integrate CO2 collectors into the blades


The best way forward is to reject parts of the consensus Green approach. In particular, investment in nuclear, and a plan to augment wind+solar expansion with a large nuclear (and later fusion) buildout is the way to go.

The rationale for this is that only by raising the living standard of the third world can the world’s population be stabilized without a major die-off (not to mention a reduced quality of life for just about everyone going forward). Further, only with massive amounts of clean energy can we clean up the ecosphere and effectively fight atmospheric CO2 buildup as needed.

There are plenty of resources on Earth if they’re managed well. Only with plentiful energy can we afford to have treat the Earth as the precious resource it is - as we begin to inhabit the rest of the Solar System!


> The rationale for this is that only by raising the living standard of the third world can the world’s population be stabilized without a major die-off

I don't see how pumping billions of tonnes of heavy metal tainted sulfuric acid into the ground water of Namibia and Niger for Uranium royalties that are lower than the cost of cleanup and then putting them into debt they can't service for power stations that can only be fueled by their colonizers' nuclear weapons programs is related to increasing their standard of living.

Especially when the fuel source can only service the US primary energy for under a decade.


You don’t see how electrification increases living standards [1]?

[1] https://pubs.aeaweb.org/doi/pdf/10.1257/jep.34.1.122


Yes, it increases living standards immensely. Fission reactors do not help towards this goal.


> Fission reactors do not help towards this goal

Of course they do. Reactors produce electricity. You don’t like how they do it. But that they electrify borders on tautology.


No, they hinder the goal because they will never provide more than a tiny fraction of the needed energy and building one would tie up immense amounts of resources that could electrify many more households and cause permanent outflows for interest on debt that can never be paid off and fuel that they are not allowed to make.

I have an idea for a program where I pour lead onto your food and loan you $100k but you can only spend it on preordering a sports car I sell that doesn't work on unpaved roads for $150k which can only be charged at chargers I own and if you do anything I don't like ever I'll just ban you from using my cars altogether. It won't explode iff you keep up with perfect maintenance and I'll be removing all of the chargers in 2060 (or 2050 if I get lots of orders). It may arrive any time between 2028 and 2040 or maybe I'll just cancel the order (but you still have to pay back the loan).

The alternative is you buy a LEV that charges itself if you use it less than 30 miles a day, can accept any charger and costs $30k but you have to find a loan yourself. It might fail to charge up to 20% of the time with a few days' notice if you don't buy the $50k deluxe package.

They're both transport, right? Transport is good.


Now do the pollution associated with lithium mining.


Then ban polluting lithium mining methods along with ISL uranium mining anywhere near an aquifer, open tailings ponds, anything to do with coal, and anything else with uncaptured externalities. Please and thankyou.

Storage and renewables can be achieved in a much more scalable, cheap, and less resource intensive way than nuclear without anything more scarce than chlorine (although rarer elements in manageable quantities make them more robust and even cheaper for now).

https://cleantechnica.com/2021/10/07/first-ess-iron-flow-bat...

https://talkmarkets.com/content/global-markets/catl-to-promo...

https://formenergy.com/form-energy-announces-450m-series-e-f...

https://news.mit.edu/2022/aluminum-sulfur-battery-0824

https://www.researchgate.net/figure/Potential-150-GWh-Greenf...


Even when nuclear power was enthusiastically embraced as the future it suffered from cost overruns, hidden and underestimated lifecycle costs, security problems such the possibility of a worse Chernobyl event as a result of an ongoing war, nuclear proliferation enablement, etc.

Blaming the resulting skepticism about nuclear on the "Green approach" is backwards: Fix the things that made nuclear expensive first. Demonstrate that the lifecycle works, from mining to waste handling. Show it costs less than putting the same capital into renewables and can come online in time to be relevant.


>Even when nuclear power was enthusiastically embraced as the future it suffered from cost overruns, hidden and underestimated lifecycle costs, security problems such the possibility of a worse Chernobyl event as a result of an ongoing war, nuclear proliferation enablement, etc.

And here we are on an oil-based energy economy suffering from cost overruns, hidden and underestimated lifecycle costs, security problems such the possibility of a worse Chernobyl event as a result of an ongoing war, nuclear proliferation enablement, etc.

I would gladly change the source of the energy as the effects seem to be the same besides atmospheric emissions.


Capital investment is fungible. If investing in renewables delivers more power to the grid sooner, then that is the optimal path to freedom from dependency on fossil fuels.


other than the giant one staring at us 93 million miles away beaming massive amounts of energy directly at us all day, fusion reactors otherwise don't exist. Maybe not throw away all the other approaches until they do?


From my read, the previous poster does mention investing in nuclear, wind and solar. With potentially moving to fusion if it becomes available.


Solar and wind have many issues. Intermittency, the need for rare earths, and low energy density leading to ecological impact are some. It’s also under-recognized that as those technologies are built out beyond a few percent of global power, supply issues will likely lead to large cost increases and potential scarcity. Then there’s the waste/recycling problem, which is worse than nuclear.

I also was clear that fusion is a future solution.


To add to this, for people suggesting that renewables are sufficient and that we should abandon nuclear for some reason or another, this report does a good job of motivating nuclear as a critical part of the solution: https://energy.mit.edu/research/future-nuclear-energy-carbon...


Please stop. The raw materials for any type of nuclear reactor are vastly scarcer than renewables.

Iron flow batteries exist at grid scale for $200/kWh (enough to beat nuclear total system cost where 90% of people live with higher uptime) and dropping.

Copper metallized PV uses a manageable amount of copper and nickel (100s of kgs per MW net) and less silver than the control rods in a fission reactor. The dopants are measured in mg per MW and the rest is fancy sand. Inverters tend to be GaAs, but the amount is minimal and they don't need high performance power electronics to outperform nuclear.

Multi megawatt wind turbines with no copper windings and no permanent magnets exist at commercial scale, and all Aluminum cabling is ready as a dropin replacement as soon as the few dollars per MWh maintenance burden can he justified. Concrete and steel per MW is still significantly higher for wind, but a mix is approaching parity.

> also was clear that fusion is a future solution.

It really isn't. Helion is a moonshot that might work (but requires large amounts of rare metals for exotic superconductors). Anything thermal will be 10s of times more expensive and more materials than fission.


so your argument is "go nuclear, problem solved" ? I'm all for adding nuclear at this point but I dont know that the research supports the notion that an "all in for nuclear, done" approach would be effective.


Go all in on everything. The investments required are a joke from what I can tell.

Make the state more efficient (probably by allowing more things to be handled by private entities), and voila, there's much more than what you need.

Germany's investments into e.g. wind energy topped out at €10bn/yr. The federal budget is €500bn/yr, add to that the state, county and community budgets and it's €830bn. Even if you paid for it by tax money only, it's not a budget issue. Neither would nuclear be.


I believe you meant Jancovici? https://jancovici.com/en/


Yep, typo.

I like the way he models the problem from first principles. Economic views have a tendency to hand wave the laws of thermodynamic.


Yeah, that the key problem - all current "green" or "zero" tech is simply a trick, with shuffling emissions to other countries, selling-buying quotas, maybe reducing emissions a little in the best case. Until we have a working industrial scale CO2 sequestration factories we are essentially doing nothing, or close to nothing.


A lot of replies to this comment are saying a version of "how is solar/wind/etc a trick?"

And the answer is that no, they are not a trick...they legitimately produce energy.

But the goal isn't "make more clean energy", the goal is "keep coal and oil and gas underground"!

And yet coal(!!) production is at basically all time highs, with oil not far behind.

Unless we start making oil, coal and gas artificially expensive to produce, "clean" sources just add to global energy usage, instead of displacing it.

https://yearbook.enerdata.net/coal-lignite/coal-production-d...

https://yearbook.enerdata.net/crude-oil/world-production-sta...


Yes, the Russia aggression threw a wrench into every replacement project out there.

But there are always two options to speed-up the process, you can make fossil fuels artificially expensive, or renewables artificially cheap.


I admittedly haven't looked very hard, but the current push towards overall reduction and renewable sources (solar, wind) and long-timescale sources (nuclear) feels like much less of a trick than CO2 sequestration. Last time I checked, most sequestration efforts involve some kind of logistical sleight of hand (like ignoring the energy required to crush and spread out rocks, or the fact that most seedlings don't grow into mature trees).


How is it a 'trick'?

Building a wind turbine isn't shuffling emissions anywhere.

Neither is solar. Or a more efficient boiler, or....


It's not replacing fossil fuels, merely freeing them for other uses. In fact it's even common now to build wind turbines around coal mines to produce power to extract coal...

We must reduce our fossil fuel consumption in absolute numbers. So far we're merely adding more energy resources; that way political and corporate PR representative can make triumphal announces about how we're reducing the part of fossil in our energy mix... But we need to reduce our fossil use overall, and REALLY REALLY FAST.


I'll link a page with a chart on it, the web page relies on Javascript to actually render charts, the chart we care about here is "Electricity generation mix by quarter and fuel source".

https://www.ofgem.gov.uk/energy-data-and-research/data-porta...

Now, on the left is 1998, on the right is this year. There are a few noteworthy differences

1. The UK actually produces less electricity, partly from efficiencies and partly de-industrialisation in some areas.

2. Coal went from over 30 TWh in 1998 to 2.24 TWh today. Are we instead burning that coal in homes? Nope. Steam locomotives? A handful of quaint examples. Coal mining largely stopped in the UK.

3. Gas went from almost 30 TWh in 1998 to slightly less today. We are still burning gas to heat homes and businesses but I doubt it's more than in 1998.

4. Wind and solar went from negligible to almost 25 TWh today. It's about a third of today's electricity generation.

I don't see a way to read this which doesn't have us significantly replacing fossil fuels. Those coal mines are shut. Does the UK still have petrol stations and gas boilers? Yes, but it doesn't have many more of them than in 1998. That displacement shown is a real improvement.

It just isn't enough.


UK has massively de-industrialised, as has most of Europe (but Germany). However global industrial production, energy consumption in general and fossil fuels in particular all enormously increased since 1998.

Global numbers are all that counts, climate-wise. Plus I'm pretty sure that including imported emissions would annihilate (or even worsen) the apparent reduction for countries such as UK, France, etc.


If I go on a diet and lose weight, is that also a trick because the average weight of the population goes up?

Just because someone else does something else to negate the net effect of something doesn't mean you haven't done the thing.

If we hadn't done anything emissions would be even higher. It isn't as if we have to burn a certain quota of coal and gas.

This isn't an argument for doing less, it's an argument for doing more.


> If I go on a diet and lose weight, is that also a trick because the average weight of the population goes up?

The keyword here is "imported emissions". When you reduce your consumption because you're closing a factory to import the same stuff made in worse (environmental, social) conditions elsewhere, the gain is only apparent.

So following your analogy, if what you're after is the global population health, if you lose weight but everyone else gains more than what you lost, than the result is indeed a net loss overall.


I'll repeat my metaphor.

If I go on a diet...

In the metaphor 'I' mirrors green technologies. 'global population health' mirrors total global emissions.

If I go on a diet and lost weight, that is no trick. I have lost weight.

That isn't invalidated by the rest of the world getting fatter.

If I put solar panels on my roof I will lower my co2 emissions. That isn't invalidated by you rolling coal.

I agree it's bad that co2 emissions are increasing but that doesn't mean that the proposed solution is a trick.


"It's common" is not a statistic. At least in the US, coal use for power generation has dropped precipitously over the past 40 years. If whatever coal we do still extract is extracted using wind or solar, that seems like a net win (even if not a net positive, for the reason you mentioned).


But we need a net positive. We must stop pumping CO2 in the atmosphere, and we're merely pumping it a slightly slower rate, and the quantity still goes up.

The US has replaced lots of coal with gas, and that's most of the reduction. But we're not gonna make it this way. Remember: we're heading towards +2.5°C in 2100, but northern continents heat much faster than the average (oceans are cooler and represent 70% of Earth's surface): it could be from +4 and up to +6°C in Canada, Europe, etc. The situation is going to be absolutely catastrophic much sooner than 2100. Arguably we may have catastrophic, repeated crop failures this decade for instance.


Neither is hydroelectric dam.


How are solar panels or windmills a trick?


I don't think solar panels or windmills are a trick, but I think OP was referring to "net zero" initiatives, which are not much more than accounting scams. Most carbon credits, if even verifiable, don't involve reductions but rather promises to not cut down existing forests for X years. Western countries are trying to do what they do best: buy their way out of a problem that takes actual effort.


They're not removing co2 from the atmosphere. So they help reduce new emissions, but they don't help with the existing ones.


because we use them additionally to existing sources, not as a replacement:

https://www.cleanenergywire.org/sites/default/files/styles/g...

Less energy = less growth = recession = bad, we're stuck in that


Unfortunately the credibility of your testimony is diminushed by the fact you are using a throwaway.


If anything, the credibility is diminished by the timeframe being 15 years ago. You would have thought their market share would have collapsed underneath the weight of all these quality control issues.


Well, Dell _did_ end up being targeted by Danish public TV for breaking consumer laws and having ridiculously long wait times for support calls. That's about the time I got out. Unfortunately, DR seems to have removed older seasons of "Kontant" from their online player.

I'd be surprised if Dell didn't do something to improve things after that, but as I said I'm not taking that chance.

Edit:

Found a reference to the TV show from a Danish tabloid. It's as much as I can say without doxing myself: https://ekstrabladet.dk/forbrug/dinepenge/article4181606.ece

Edit 2:

An article about the affair in ComputerWorld: https://www.computerworld.dk/art/54886/dell-faar-taesk-for-d...

Another one about Dell trying to spam DR's comment fields with positive comments after the show was aired: https://www.computerworld.dk/art/127000/dell-bruger-lyssky-k...


I am an account from 2017, I have a bridge to sell to you.


The better error messages alone make it worthwhile to upgrade. The trend started in 3.10, and it already made a difference for me, my coworkers and students.

But remember that while it's great to play with it freshly out of the oven, and that you might want to test your projects/libs with it, we should wait a bit before migrating production.

Indeed, every first release of a new major version of Python eventually important bugs that get ironed out in a later patch. Also, some libs on pypi may simply not be compatible with it yet, breaking your pip install.

I usually wait until the 3rd patch myself, after many years of paying the price of greedy upgrades.


> I usually wait until the 3rd patch myself, after many years of paying the price of greedy upgrades.

We wouldn't get there if everyone does that though.


Why not? Production isn't where bugs should be found. Plenty of time to test things before production.


Maybe what I have in mind as the env setup is different but 1) lower envs might not experience the load or edge cases as prod 2) lower envs are supposed to be as similar as possible to prod. Is it a good idea to test things with Python 3.11 and run it in prod using a different Python version? It might even force you to use different versions of a lib for each env which means no confidence for releases to prod based on lower env tests (one way would be to have two lower envs. One for next Python version and another for current one as in prod. But #1 is my main issue.)


To be fair to who you're replying to, this did basically start with "new version -> production"

Not much room left for integration/development and so on

I pick these things up early in lower environments, as I suppose you do, so that the real production upgrade isn't scary... and we don't fall behind

Waiting forever for the community to QA doesn't work, you probably aren't running exactly what they are


Once everything gets wheels/bumped, it'll be a lot easier. The last few major versions have been fairly straight forward to upgrade once they're all in place, and the nice thing is this should hopefully fix any remaining packages that aren't built for the arm64 macs.


Once 3.12 is out, perhaps it'll be time to move to 3.11.x.


There was a long debate about this, and the conclusion was:

There is one way to read toml, but a lot of ways to write it (do you preserve formatting, what do you do with comments, do you allow partial updates...). Therefor reading is easy to get right, but writing less so, and once it's in the stdlib, we can't make quick changes to the API.

Since reading is already very useful, and tomli author's is ready to provide that for free, let's include it now and see writing later.


>There is one way to read toml, but a lot of ways to write it (do you preserve formatting, what do you do with comments, do you allow partial updates..

Then don't use TOML for internal stuff?

Or just settle on a way your lib writes it, and if every parser out there can read it anyway, and get the same deserialized structure, it doesn't matter which way you write it exactly...


I'm just giving you a summary of the rational.

As for it was a good idea, this has already been debated and acted upon, there is no need to repeat exactly the same arguments.

You will find the detailed rational in the PEP, and link to the various discussions.


>As for it was a good idea, this has already been debated and acted upon, there is no need to repeat exactly the same arguments.

Well, the same debates happened over many other decisions debated, acted upon, and later regretted and reverted. At some point the GIL seemed like a good decision too!


The GIL is a good decision and has been a sound engineering tradeoff for decades. It's only been the past few years that running the interpreter without a GIL has been even remotely feasible (cf the gilectomy project). The GIL is a relatively straightforward way to hold back a tremendous amount of complexity.

Similarly, TOML writing is a ton of completely. The org isn't opposed to adding toml writing to the stdlib fundamentally, they just aren't rushing and want to hammer out all of the grossness first.


Obviously the complexity level is different, but to me you sound like someone complaining about Linux adding support for a new filesystem, but read-only at first. Why all the hostility?


It's a complain about a release decision. Where's the hostillity?

No need to project psychology on it...


That's an argument for not adding a TOML writer right now. The correct design isn't obvious so there'd be a risk of a bad design getting locked in.


I have plenty of cases with yaml where I care about the formatting of the serialized output. I have to use obscure hooks into pyyaml's inner workings to tweak things just right. In some cases, I end up having to do some of the serialization myself. While technically it doesn't matter because it's all equivalent once in memory, there are externalized costs once you're integrated into a large system. The whole point of using something like yaml or toml is to be human friendly.


So, TCP/IP + dns for satellites?

Or mesh networking?


Sounds like OSI layer 1 for satellites

> The Space-BACN program aims to revolutionize the way space-based communications work by developing low-cost, high-speed reconfigurable optical datalinks to connect various low-earth orbit (LEO) constellations…and we’re looking for the best minds out there to help us make this a reality.

https://www.darpa.mil/work-with-us/space-based-adaptive-comm...


Also, the first accident (there is always one) redirecting the beam to a populated area is going to be so spectacular I doubt it would recover after it.


Accidents probably won't be an issue (useful power density is surprisingly safe, and safeguards can be put in); malicious redirection of multiple beams, that probably is a threat.

Multiple beams can only be guaranteed safe against malicious agents by making sure only one is in any given person's sky at any given moment, which either limits us to 6 worldwide or requires the satellites to be low enough that they're in earth's shadow.

(Last time I said this on HN, I got an angry response from someone who clearly didn't understand what I was saying; I don't know if that is because words are bad at painting pictures or not, but regardless I really ought to get around to blogging this with pictures to show what I mean).


It gives good pointers but it falls short on the usual suspects for an article on asyncio.

When teaching it, it's important to emphasis:

- await is locally blocking, so you should isolate linear workflows into their own coro, which is the unit of concurrency.

- to allow concurrency, you should use asyncio.create_task on coro (formerly ensure_future).

- you should always explicitly delimitate the life cycle of any task. Right now, this means using something like gather() or wait(). TaskGroup will help when it becomes mainstream.

A HN comment is not great to explain that, but if you read the article, you should investigate those points. There is no good asyncio code without them, only pain and disapointment.


> ... TaskGroup will help when it becomes mainstream.

Strongly agreed, but you can use anyio [1] in to of asyncio to get that functionality right now. Or, maybe even better, use Trio [2] instead, which is where the idea came from in the first place.

[1] https://anyio.readthedocs.io/en/stable/

[2] https://trio.readthedocs.io/en/stable/


> to allow concurrency, you should use asyncio.create_task on coro (formerly ensure_future).

This is misleading... you can use asyncio.gather which does this internally [0].

[0]: https://github.com/python/cpython/blob/main/Lib/asyncio/task...


Only if you wish to collect tasks where you schedule them, accumulate the results and don't need to limit concurrency.


Serious question, why would you limit concurrency in async world? You’re still on a single thread, why would you want to only schedule n things at a time?


> you should always explicitly delimitate the life cycle of any task

Unless you want a hacky actor system, in which case it's totally fine to `create_task` a ton of corountines which have their own spin loop with await sleep :)


Even if you want to ‘fire and forget’, it’s still essential to keep a reference to the task, otherwise it can be garbage collected mid-execution:

https://docs.python.org/3/library/asyncio-task.html#asyncio....


Wow! Did not know this, guess I’ve got a couple fixes to make…


One coroutine crashing and the others continuing to send it messages without noticing was my $40,000 bug.


I’m so confused by this architecture. It makes total sense in a threaded world but why would you want a coroutine constantly scheduling itself in a loop to pull messages off a queue like thing than just having the thing generating the message fire off a task to process it directly right there? It feels almost the same to me and then you can’t crash the coroutine.


At some point even those tasks must be cleanly stopped and unless you want to play erlang and "let it crash", the actors have a lifecycle as well. Making it explicit will avoid much pain, and ease testing a lot. Also it will make resources consumption more predictable.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: