HackerTrans
TopNewTrendsCommentsPastAskShowJobs

spowerei

no profile record

comments

spowerei
·5 anni fa·discuss
You are right, I used the wrong wording:

"possibly near to commercialization"->"they have something flying"

Many others should be mentioned, i.e. https://www.kitemill.com/
spowerei
·5 anni fa·discuss
I'm realizing my phrasing was too critical. I think it's a very good thing that Makani explored that "design path" and shared the knowledge acquired with that level of details. I would also say that rigid wing has more potential for AWE, but I am pessimist toward 'fly-gen'/'energy-kite' solutions, because when dealing with a gas as bearing medium reducing weight seems a reasonable and trending rule of thumb. It's difficult/too-vague to compare designs with substantially different ramifications, some of which are still hypothetical, but it's maybe worth if it leads to a better understanding or general awareness.

I am curious, do you know why Makani went 100% 'fly-gen'? From by biased point of view I would say that it was easier to bootstrap (more control agency, easier take off and landing) but harder to scale.

I tried to skim through the 1k+ pages 3 part report available from Makani (https://x.company/projects/makani/), but it doesn't seem to speak much about the considerations which when into that early design choice. Do you know more?

Is it possible to summarize them or it's an organic set of reasons which cannot be untangled nor simplified like often happen when dealing with complex systems?

[Mechanical Engineer here]
spowerei
·5 anni fa·discuss
I don't understand why Makani got so much attention in this thread.

Flying things need to be lightweight.

Electrical generators are heavy.

Makani: Ok I will build a flying generator ... :thinking:

Related Keywords:

- Airborne wind energy (AWE) (the name of the field)

- Fly-gen (mechanical to electrical conversion happens in the sky)

- Ground-gen (mechanical to electrical conversion happens on the ground)

Other resources worth of attention:

- On the edge, possibly near to commercialization: https://www.ampyxpower.com, ...

- Commercial solutions: https://thekitepower.com/, ...

- Project similar to the one linked (rigid wing): https://www.someawe.org, it also have a nice conceptual map style overview of the field https://www.someawe.org/awe-map-the-someaweorg-airborne-wind...

- Forum with knowledgeable people on AWE: https://forum.awesystems.info/
spowerei
·5 anni fa·discuss
this add a slider selector for the time range to consider and give higher values of alpha channel to more recent posts.

  const div = document.createElement("div");
  div.innerHTML = `<div style="position:fixed;top:20px;right:20px;width:40px;background:#ff05;">
     <input type="range" orient="vertical" id="interval" min="0" max="95" value="30" style="width:100%">
     <label for="interval" style="display:block"></label>
  </div>`;
  const input = div.firstElementChild.firstElementChild;
  const label = input.nextElementSibling;
  document.body.appendChild(div);
  const formatTime = (mins) => {
    if (mins > 60) {
      return `${Math.floor(mins / 60)}h ${mins % 60}m`;
    }
    return `${mins}m`;
  };
  const extrapolate = (val) => {
    val = val * 2;
    for (let t = 30; t <= 150; t += 30) {
      val += Math.max(0, val - t);
    }
    return val;
  };
  input.oninput = () => colorStuff(extrapolate(input.value));
  const colorStuff = (interval_minutes) => {
    label.innerText = `${formatTime(interval_minutes)}`;
    const comments = Array.from(document.getElementsByClassName("athing comtr"));
    dates = Array.from(document.getElementsByClassName('age'));
    dates.sort((c1, c2) => Date.parse((c2).title) - Date.parse((c1).title));
    const now = new Date();
    const timestamp = now.getTime() + now.getTimezoneOffset() * 60E3;
    comments.forEach((c) => {
      const commentDateString = c.getElementsByClassName("age")[0].title;
      const diff=(timestamp-Date.parse(c.getElementsByClassName('age')[0].title))/60E3;
      const diff2=(Date.parse(dates[0].title)-Date.parse(c.getElementsByClassName('age')[0].title))/60E3;
      if (diff < interval_minutes) {
        const alpha = (1 - diff2 / interval_minutes)**6;
        c.style.backgroundColor = `rgba(100, 255, 100, ${alpha})`;
      } else {
         c.style.backgroundColor = "rgba(255, 255, 255,0)";
      }
    });
  };
  colorStuff(extrapolate(input.value));