Home Blog Page 3

Flutter : ❗️Concern: Mic will not be activating after resuming the recording after iOS telephone/voip name interruption – AVFAudio error -10868


Platform: iOS

Flutter model: 3.29.3

Packages used:

  • file: ^6.0.0
  • audio_session: ^0.2.1

✅ Anticipated Behaviour

  • Microphone Availability Examine
  • Earlier than beginning or resuming recording, examine if the microphone is already in use by one other app.
  • If unavailable, show a dialog: “Microphone is at the moment in use by one other software.”
  • Background Recording Assist
  • Permit ongoing recordings to proceed even when the app is shipped to the background, guaranteeing persistent audio seize.
  • Automated Interruption Dealing with
  • Cellphone/VOIP Name Interruption: Robotically pause recording when a telephone or VOIP (e.g., WhatsApp, Groups) name is acquired or ongoing.
  • System Focus Modes:
    • Pause recording if the system is in a spotlight mode (like Do Not Disturb) and the microphone will not be obtainable.
    • Resume recording by person manually ought to solely resume if mic is accessible.
    • Resume mechanically if interruption ends.
  • Auto Resume Recording
  • Robotically resume recording as soon as the interruption (name or focus mode) ends, sustaining the session seamlessly.

❌ Precise Behaviour

  • You acquired a Groups name whereas recording was on-going.
  • Whereas a Groups name is ringing (not accepted), the recording continues and the mic orange dot stays energetic.
  • Whenever you declined the decision, the recording paused mechanically (on account of an “interruption occasion”)
  • Whenever you tried to renew recording, the microphone labored briefly however then stopped
  • After pausing and making an attempt to renew once more, you acquired the error: PlatformException(file, The operation could not be accomplished. (com.apple.coreaudio.avfaudio error -10868.), null, null)

🔁 Steps to Reproduce the Concern

  • Begin recording within the app (orange mic indicator seems)
  • Obtain an incoming Groups name (recording continues)
  • Decline the Groups name (recording mechanically pauses on account of interruption dealing with)
  • Try and resume recording (microphone works briefly then fails)
  • Pause recording manually
  • Try and resume recording once more (error -10868 seems)

🔍 Associated Code Snippets

  1. Arrange the recorder and audio session throughout initialisation within the initState methodology.
/*
   _initialiseRecorderController is used to initialize recorder controller and audio session
   */
  void _initialiseRecorderController() async {
    _audioRecorder = AudioRecorder();
    _session = await AudioSession.occasion;
    await _configureAudioSession();
  }
  1. Configure the audio_session
Future _configureAudioSession() async {
    strive 
              AVAudioSessionCategoryOptions.allowBluetoothA2dp  catch (e) {
      debugPrint("_configureAudioSession error : ${e.toString()}");
    }
  }
  1. The toggle recording operate is triggered from the recorder button throughout the construct methodology.
/*
   _toggleRecording is operate that begins the recording if the
   microphone request is granted and request permission if not.
   */
  Future _toggleRecording() async {
    strive {
      bool isMicrophoneAvailable = await _checkMicrophoneAvailability();
      if (!isMicrophoneAvailable) {
        await _showMicrophoneUnavailableDialog();
        return;
      }
      if (await Permission.microphone.isGranted) {
        if (_isRecordingStarted) {
          await _resumePauseRecording();
        } else {
          await WakelockPlus.allow();
          await _startRecording();
        }
      } else {
        ultimate bool isPermissionGranted = await ServiceUtils.requestPermission(
          Permission.microphone,
        );
        if (isPermissionGranted) {
          await _toggleRecording();
        }
      }
    } catch (e) {
      debugPrint("_toggleRecording error : ${e.toString()}");
    }
  }
  1. Examine microphone availability each at first and when resuming recording.
Future _checkMicrophoneAvailability() async {
    strive {
      if (_isMicrophoneInUse && Platform.isAndroid) {
        debugPrint("Microphone is at the moment in use by one other app.");
        return false;
      }
      ultimate bool isActive = await _requestAudioFocus();
      if (!isActive) {
        await _session.setActive(false);
        debugPrint("Microphone is unavailable. One other app is utilizing it.");
        return false;
      }
      return true;
    } catch (e) {
      await _session.setActive(false);
      debugPrint("Error checking microphone availability: ${e.toString()}");
      return false;
    }
  }
  1. Begin the recording
/*
  _startRecording operate calls the _startBackupRecording with the beginning
  of the foreground service and connecting to the socket
   */
  Future _startRecording() async {
    strive {
      _meetingStartTime = DateTime.now().millisecondsSinceEpoch;
      _startForegroundTask();
      await _socketConnection();
      _recordDuration = 0;
      _startTimer();
      await _startBackupRecording();
      setState(() {
        _isRecording = true;
        _isRecordingStarted = true;
        _isRecordingCompleted = false;
      });
    } catch (e) {
      debugPrint("_startRecording error : ${e.toString()}");
    }
  }

/*
  _startBackupRecording begins the recording utilizing startStream and
  _recordStream is listened so as to add audio knowledge to the _recordedData constantly
  and a _backupTimer is began for creating 30 secs chunk file
   */
  Future _startBackupRecording() async {
    strive {
      await _configureAudioSession();
      bool energetic = await _requestAudioFocus();
      if (!energetic) return; // Forestall beginning if focus not acquired
      await _handleAudioInterruptions();
      _recordStream = await _audioRecorder.startStream(
        const RecordConfig(
          encoder: AudioEncoder.pcm16bits,
          sampleRate: 22000,
          numChannels: 1,
          // bluetoothSco: true,
          autoGain: true,
        ),
      );
      _recordStream?.hear((occasion) {
        _recordedData.add(occasion);
      });
      _startBackupTimer();
    } catch (e) {
      debugPrint("Error startBackupRecording: ${e.toString()}");
    }
  }

  1. Request audio focus
/*
  _requestAudioFocus is used to request audio focus when app begins recording
   */
  Future _requestAudioFocus() async {
    strive {
      return await _session.setActive(
        true,
        avAudioSessionSetActiveOptions: AVAudioSessionSetActiveOptions.notifyOthersOnDeactivation,
      );
    } catch (e) {
      return false;
    }
  }
  1. Deal with Audio Interruption
/*
  _handleAudioInterruptions is used to detect and deal with interruptions when one other app makes use of microphone
   */
  Future _handleAudioInterruptions() async {
    _recordInterruptionSubscription = _session.interruptionEventStream.hear((occasion) async {
      if (occasion.start) {
        setState(() {
          _isMicrophoneInUse = true;
        });
      } else {
        setState(() {
          _isMicrophoneInUse = false;
        });
      }
    });
  }
  1. Resume And Pause the recording
/*
   _resumePauseRecording is used to renew and pause the recording.
   When paused the _recordDuration _timer and _backupTimer is stopped.
   When resumed the _recordDuration _timer and _backupTimer is began once more.
   */
  Future _resumePauseRecording() async {
      if (_isRecording) {
        // pause recording
      } else {
        // resume recording
      }
  }
  /*
   _resumeRecording is used to renew the recording.
   When resumed the _recordDuration _timer and _backupTimer is began once more.
   */
  Future _resumeRecording() async {
    strive {
      await _configureAudioSession(); // 🔁 reconfigure session earlier than resuming
      bool energetic = await _requestAudioFocus();
      if (!energetic) {
        return;
      }
      await Future.delayed(Durations.medium1);
      await _audioRecorder.resume();
      _startTimer();
      _startBackupTimer();
      setState(() {
        _isRecording = true;
        _isPause = false;
        _isManuallyPause = false;
      });
    } catch (e) {
      
    }
  }
/*
   _pauseRecording is used to pause the recording and add that a part of chunk file.
   When paused the _recordDuration _timer and _backupTimer is stopped.
   */
  Future _pauseRecording({
    bool isManuallyPause = false,
  }) async {
    strive {
      _timer?.cancel();
      _backupTimer?.cancel();
      await _audioRecorder.pause();
      setState(() {
        _isRecording = false;
        _isPause = true;
        _isManuallyPause = isManuallyPause;
      });
    } catch (e) {
      debugPrint("Error _pauseRecording: ${e.toString()}");
    }
  }
  1. Cease the recording
/*
  _stopRecording stops the recording and stops the foreground service
   */
  Future _stopRecording() async {
    strive {
      await _audioRecorder.cease();
      _timer?.cancel();
      _stopForegroundTask();
      // Add a brief delay earlier than deactivating the session
      await Future.delayed(const Period(milliseconds: 200));
      await _deactivateAudioSession();
      setState(() {
        _isRecording = false;
        _isRecordingStarted = false;
        _isPause = false;
        _isManuallyPause = false;
        _isRecordingCompleted = true;
        _isMicrophoneInUse = false;
      });
    } catch (e) {
      debugPrint("Error stopping the recording: ${e.toString()}");
    }
  }
  1. Deactivate Audio Session
Future _deactivateAudioSession() async {
    strive {
      await _session.setActive(
        false,
        avAudioSessionSetActiveOptions: AVAudioSessionSetActiveOptions.notifyOthersOnDeactivation,
      );
    } catch (e) {
      debugPrint("Error deactivating audio session: ${e.toString()}");
    }
  }

🔄 Workaround Tried

  • Manually deactivating and reactivating the session.
  • Reinitializing the audio recorder occasion.
  • Including an extended delay earlier than resuming.
  • Re-requesting focus with setActive(true).

❓ Questions

  • Is there any iOS-specific workaround for resuming the mic after a
    declined VoIP name?
  • Is that this anticipated conduct in iOS or an edge case of audio session
    state administration?

AI could be a highly effective software for scientists. However it may additionally gasoline analysis misconduct


An Escher-like structure depicting the concept of AI model collapse. The image features a swirling, labyrinthine design, representing a recursive loop where algorithms feed on their own generated synthetic data. Elements of digital clutter and noise are interwoven throughout, highlighting the chaotic nature of the internet increasingly populated by AI-generated content. The visual metaphor of a Uroboros, a snake eating its own tail, symbolizes the self-referential cycle of AI training on its own outputs.Nadia Piet & Archival Pictures of AI + AIxDESIGN / Mannequin Collapse / Licenced by CC-BY 4.0

By Jon Whittle, CSIRO and Stefan Harrer, CSIRO

In February this yr, Google introduced it was launching “a brand new AI system for scientists”. It mentioned this technique was a collaborative software designed to assist scientists “in creating novel hypotheses and analysis plans”.

It’s too early to inform simply how helpful this explicit software might be to scientists. However what is obvious is that synthetic intelligence (AI) extra typically is already reworking science.

Final yr for instance, pc scientists received the Nobel Prize for Chemistry for growing an AI mannequin to foretell the form of each protein identified to mankind. Chair of the Nobel Committee, Heiner Linke, described the AI system because the achievement of a “50-year-old dream” that solved a notoriously troublesome drawback eluding scientists because the Seventies.

However whereas AI is permitting scientists to make technological breakthroughs which are in any other case a long time away or out of attain completely, there’s additionally a darker facet to using AI in science: scientific misconduct is on the rise.

AI makes it simple to manufacture analysis

Educational papers might be retracted if their knowledge or findings are discovered to not legitimate. This may occur due to knowledge fabrication, plagiarism or human error.

Paper retractions are rising exponentially, passing 10,000 in 2023. These retracted papers have been cited over 35,000 occasions.

One examine discovered 8% of Dutch scientists admitted to severe analysis fraud, double the speed beforehand reported. Biomedical paper retractions have quadrupled up to now 20 years, the bulk as a result of misconduct.

AI has the potential to make this drawback even worse.

For instance, the supply and rising functionality of generative AI packages akin to ChatGPT makes it simple to manufacture analysis.

This was clearly demonstrated by two researchers who used AI to generate 288 full faux educational finance papers predicting inventory returns.

Whereas this was an experiment to point out what’s doable, it’s not exhausting to think about how the expertise could possibly be used to generate fictitious scientific trial knowledge, modify gene modifying experimental knowledge to hide antagonistic outcomes or for different malicious functions.

Pretend references and fabricated knowledge

There are already many reported circumstances of AI-generated papers passing peer-review and reaching publication – solely to be retracted afterward the grounds of undisclosed use of AI, some together with severe flaws akin to faux references and purposely fabricated knowledge.

Some researchers are additionally utilizing AI to evaluate their friends’ work. Peer evaluate of scientific papers is among the fundamentals of scientific integrity. Nevertheless it’s additionally extremely time-consuming, with some scientists devoting tons of of hours a yr of unpaid labour. A Stanford-led examine discovered that as much as 17% of peer critiques for high AI conferences have been written at the least partly by AI.

Within the excessive case, AI could find yourself writing analysis papers, that are then reviewed by one other AI.

This danger is worsening the already problematic development of an exponential improve in scientific publishing, whereas the common quantity of genuinely new and attention-grabbing materials in every paper has been declining.

AI can even result in unintentional fabrication of scientific outcomes.

A well known drawback of generative AI methods is once they make up a solution relatively than saying they don’t know. This is called “hallucination”.

We don’t know the extent to which AI hallucinations find yourself as errors in scientific papers. However a current examine on pc programming discovered that 52% of AI-generated solutions to coding questions contained errors, and human oversight didn’t appropriate them 39% of the time.

Maximising the advantages, minimising the dangers

Regardless of these worrying developments, we shouldn’t get carried away and discourage and even chastise using AI by scientists.

AI provides vital advantages to science. Researchers have used specialised AI fashions to resolve scientific issues for a few years. And generative AI fashions akin to ChatGPT supply the promise of general-purpose AI scientific assistants that may perform a spread of duties, working collaboratively with the scientist.

These AI fashions might be highly effective lab assistants. For instance, researchers at CSIRO are already growing AI lab robots that scientists can communicate with and instruct like a human assistant to automate repetitive duties.

A disruptive new expertise will all the time have advantages and disadvantages. The problem of the science neighborhood is to place applicable insurance policies and guardrails in place to make sure we maximise the advantages and minimise the dangers.

AI’s potential to vary the world of science and to assist science make the world a greater place is already confirmed. We now have a selection.

Will we embrace AI by advocating for and growing an AI code of conduct that enforces moral and accountable use of AI in science? Or can we take a backseat and let a comparatively small variety of rogue actors discredit our fields and make us miss the chance?The Conversation

Jon Whittle, Director, Data61, CSIRO and Stefan Harrer, Director, AI for Science, CSIRO

This text is republished from The Dialog underneath a Artistic Commons license. Learn the authentic article.




The Dialog
is an unbiased supply of stories and views, sourced from the tutorial and analysis neighborhood and delivered direct to the general public.


The Dialog
is an unbiased supply of stories and views, sourced from the tutorial and analysis neighborhood and delivered direct to the general public.

FutureHouse Unveils Superintelligent AI Brokers to Revolutionize Scientific Discovery


In a world the place the tempo of knowledge era far outstrips our skill to course of and perceive it, scientific progress is more and more hindered not by a lack of knowledge, however by the problem of navigating it. Right this moment marks a pivotal shift in that panorama. FutureHouse, an formidable nonprofit devoted to constructing an AI Scientist, has launched the FutureHouse Platform, giving researchers in all places entry to superintelligent AI brokers constructed particularly to speed up scientific discovery. This platform may redefine how we discover biology, chemistry, and drugs—and who will get to do it.

A Platform Designed for a New Period of Science

The FutureHouse Platform isn’t simply one other instrument for summarizing papers or producing citations. It’s a purpose-built analysis engine that introduces 4 deeply specialised AI brokers—every designed to sort out a serious ache level in trendy science.

Crow is a generalist agent, ultimate for researchers who want fast, high-quality solutions to advanced scientific questions. It may be used by the platform’s internet interface or built-in immediately into analysis pipelines by way of API, permitting for real-time, automated scientific perception.

Falcon, probably the most highly effective literature evaluation instrument within the lineup, conducts deep evaluations that draw from huge open-access corpora and proprietary scientific databases like OpenTargets. It goes past key phrase matching to extract significant context and draw knowledgeable conclusions from dozens—and even a whole bunch—of publications.

Owl, previously often known as HasAnyone, solutions a surprisingly foundational query: Has anybody executed this earlier than? Whether or not you’re proposing a brand new experiment or investigating an obscure method, Owl helps make sure that your work isn’t redundant and identifies gaps price exploring.

Phoenix, nonetheless in experimental launch, is designed to help chemists. It’s a descendant of ChemCrow and is able to proposing novel compounds, predicting reactions, and planning lab experiments with parameters like solubility, novelty, and synthesis price in thoughts.

These brokers aren’t educated for common conversations—they’re constructed to unravel actual issues in analysis. They’ve been benchmarked towards main AI programs and examined towards human scientists in head-to-head evaluations. The outcome? In lots of duties, reminiscent of literature search and synthesis, FutureHouse brokers demonstrated better precision and accuracy than PhDs. The brokers don’t simply retrieve—they purpose, weighing proof, figuring out contradictions, and justifying conclusions in a clear, auditable method.

Constructed by Scientists, for Scientists

What makes the FutureHouse Platform uniquely highly effective is its deep integration of AI engineering with experimental science. In contrast to many AI initiatives that function in abstraction, FutureHouse runs its personal moist lab in San Francisco. There, experimental biologists work hand-in-hand with AI researchers to iteratively refine the platform primarily based on real-world use instances—creating a decent suggestions loop between machine and human discovery.

This effort is a component of a bigger structure FutureHouse has developed to mannequin the automation of science. On the base are AI instruments, reminiscent of AlphaFold and different predictive fashions. The subsequent layer consists of AI assistants—like Crow, Falcon, Owl, and Phoenix—that may execute particular scientific workflows reminiscent of literature overview, protein annotation, and experimental planning. On prime of that sits the AI Scientist, an clever system able to constructing fashions of the world, producing hypotheses, and designing experiments to refine these fashions. The human scientist, lastly, supplies the “Quest”—the massive questions like curing Alzheimer’s, decoding mind perform, or enabling common gene supply.

This four-layer framework permits FutureHouse to sort out science at scale, not solely bettering how researchers work, however redefining what’s doable. On this new construction, human scientists are not bottlenecked by the guide labor of studying, evaluating, and synthesizing scientific literature. As a substitute, they grow to be orchestrators of autonomous programs that may learn each paper, analyze each experiment, and repeatedly adapt to new knowledge.

The philosophy behind this mannequin is obvious: synthetic intelligence should not substitute scientists—it ought to multiply their impression. In FutureHouse’s imaginative and prescient, AI turns into a real collaborator, one that may discover extra concepts, sooner, and push the boundaries of information with much less friction.

A New Infrastructure for Discovery

FutureHouse’s platform arrives at a time when science is able to scale—however lacks the infrastructure to take action. Advances in genomics, single-cell sequencing, and computational chemistry have made it doable to run experiments that take a look at tens of 1000’s of hypotheses concurrently. But, no researcher has the bandwidth to design or analyze that many experiments on their very own. The result’s a worldwide backlog of scientific alternative—an untapped frontier hiding in plain sight.

The platform provides a method by. Researchers can use it to determine unexplored mechanisms in illness, resolve contradictions in controversial fields, or quickly consider the strengths and limitations of printed research. Phoenix can counsel new molecular compounds primarily based on price, reactivity, and novelty. Falcon can detect the place the literature is conflicted or incomplete. Owl can make sure you’re constructing on stable floor, not reinventing the wheel.

And maybe most significantly, the platform is designed for integration. Via its API, analysis labs can automate steady literature monitoring, set off searches in response to new experimental outcomes, or construct customized analysis pipelines that scale while not having to increase their groups.

That is greater than a productiveness instrument—it’s an infrastructure layer for Twenty first-century science. And it’s free, publicly accessible, and open to suggestions. FutureHouse is actively inviting researchers, labs, and establishments to discover the platform and form its evolution.

With help from former Google CEO Eric Schmidt and a board that features scientific visionaries like Andrew White and Adam Marblestone, FutureHouse will not be merely chasing short-term purposes. As a nonprofit, its mission is deeply long-term: to construct the programs that may enable scientific discovery to scale each vertically and horizontally, enabling every researcher to do exponentially extra—and making science accessible to anybody, anyplace.

In a analysis world overwhelmed by complexity and noise, FutureHouse is providing readability, velocity, and collaboration. If science’s biggest limitation at this time is time, FutureHouse might have simply given a few of it again.

Use your individual person @ area for Mastodon discoverability with the WebFinger Protocol with out internet hosting a server



Mastodon is a free, open-source social networking service that’s decentralized and distributed. It was created in 2016 as an alternative choice to centralized social media platforms akin to Twitter and Fb.

One of many key options of Mastodon is using the WebFinger protocol, which permits customers to find and entry details about different customers on the Mastodon community. WebFinger is a straightforward HTTP-based protocol that allows a person to find details about different customers or sources on the web by utilizing their e-mail handle or different figuring out data. The WebFinger protocol is vital for Mastodon as a result of it allows customers to seek out and comply with one another on the community, no matter the place they’re hosted.

WebFinger makes use of a “well-known” path construction when calling an area. You might be conversant in the robots.txt conference. All of us simply agree that robots.txt will sit on the prime path of everybody’s area.

The WebFinger protocol is a straightforward HTTP-based protocol that allows a person or search to find details about different customers or sources on the web by utilizing their e-mail handle or different figuring out data. My is first title finally title .com, so…my private WebFinger API endpoint is right here https://www.hanselman.com/.well-known/webfinger

The concept is that…

  1. A person sends a WebFinger request to a server, utilizing the e-mail handle or different figuring out data of the person or useful resource they’re attempting to find.

  2. The server seems to be up the requested data in its database and returns a JSON object containing the details about the person or useful resource. This JSON object is known as a “useful resource descriptor.”

  3. The person’s consumer receives the useful resource descriptor and shows the knowledge to the person.

The useful resource descriptor incorporates varied forms of details about the person or useful resource, akin to their title, profile image, and hyperlinks to their social media accounts or different on-line sources. It might additionally embrace different forms of data, such because the person’s public key, which can be utilized to ascertain a safe reference to the person.

There’s an amazing explainer right here as effectively. From that web page:

When somebody searches for you on Mastodon, your server will probably be queried for accounts utilizing an endpoint that appears like this:

GET https://${MASTODON_DOMAIN}/.well-known/webfinger?useful resource=acct:${MASTODON_USER}@${MASTODON_DOMAIN}

Be aware that Mastodon person names begin with @ so they’re @username@someserver.com. Similar to twiter could be @shanselman@twitter.com I will be @shanselman@hanselman.com now!

Searching for me with Mastodon

So maybe https://www.hanselman.com/.well-known/webfinger?useful resource=acct:FRED@HANSELMAN.COM

Mine returns

{
"topic":"acct:shanselman@hachyderm.io",
"aliases":
[
"https://hachyderm.io/@shanselman",
"https://hachyderm.io/users/shanselman"
],
"hyperlinks":
[
{
"rel":"http://webfinger.net/rel/profile-page",
"type":"text/html",
"href":"https://hachyderm.io/@shanselman"
},
{
"rel":"self",
"type":"application/activity+json",
"href":"https://hachyderm.io/users/shanselman"
},
{
"rel":"http://ostatus.org/schema/1.0/subscribe",
"template":"https://hachyderm.io/authorize_interaction?uri={uri}"
}
]
}

This file must be returned as a mime kind of utility/jrd+json

My website is an ASP.NET Razor Pages website, so I simply did this in Startup.cs to map that well-known URL to a web page/route that returns the JSON wanted.

companies.AddRazorPages().AddRazorPagesOptions(choices =>
{
choices.Conventions.AddPageRoute("/robotstxt", "/Robots.Txt"); //i did this earlier than, not wanted
choices.Conventions.AddPageRoute("/webfinger", "/.well-known/webfinger");
choices.Conventions.AddPageRoute("/webfinger", "/.well-known/webfinger/{val?}");
});

then I made a webfinger.cshtml like this. Be aware I’ve to double escape the @@ websites as a result of it is Razor.

@web page
@{
Structure = null;
this.Response.ContentType = "utility/jrd+json";
}
{
"topic":"acct:shanselman@hachyderm.io",
"aliases":
[
"https://hachyderm.io/@@shanselman",
"https://hachyderm.io/users/shanselman"
],
"hyperlinks":
[
{
"rel":"http://webfinger.net/rel/profile-page",
"type":"text/html",
"href":"https://hachyderm.io/@@shanselman"
},
{
"rel":"self",
"type":"application/activity+json",
"href":"https://hachyderm.io/users/shanselman"
},
{
"rel":"http://ostatus.org/schema/1.0/subscribe",
"template":"https://hachyderm.io/authorize_interaction?uri={uri}"
}
]
}

It is a static response, but when I used to be internet hosting pages for multiple particular person I might need to take within the url with the person’s title, after which map it to their aliases and return these accurately.

Even simpler, you’ll be able to simply use the JSON file of your individual Mastodon server’s webfinger response and SAVE IT as a static json file and replica it to your individual server!

So long as your server returns the appropriate JSON from that well-known URL then it’s going to work.

So that is my template https://hachyderm.io/.well-known/webfinger?useful resource=acct:shanselman@hachyderm.io from the place I am hosted now.

If you wish to get began with Mastodon, begin right here. https://github.com/joyeusenoelle/GuideToMastodon/ it seems like Twitter circa 2007 besides it isn’t owned by anybody and relies on internet requirements like ActivityPub.

Hope this helps!




About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, guide, father, diabetic, and Microsoft worker. He’s a failed stand-up comedian, a cornrower, and a guide writer.

facebook
bluesky
subscribe
About   Publication

Internet hosting By
Hosted on Linux using .NET in an Azure App Service










ios – How one can maintain Cocoapods in legitimate state?


I’ve a flutter challenge and when cloning the repository and operating a flutter construct I get the error CocoaPods not put in or not in legitimate state.. Fixing this isn’t an enormous deal following among the recommendation in this thread.

My private recipe to get the construct operating once more is as follows:

flutter clear
flutter pub get
rm -f ios/Podfile.lock
cd ios
pod deintegrate
pod repo replace
cd ..
flutter construct ios --release

This solves the difficulty within the department I simply checked out. If I then commit the adjustments and run a contemporary checkout I’m operating in the exact same error message once more.

So one way or the other the “fixing” steps create a change that isn’t dedicated within the repo however can be essential for constructing the flutter app.

Once I then examine the model the place the construct is working with a freshly checked out model these are the recordsdata distinctive to the “mounted” one:

/.dart_tool
/.flutter-plugins
/.flutter-plugins-dependencies
/.thought
/android/app/src/foremost/java
/android/native.properties
/construct
/fastlane/vendor
/ios/.symlinks
/ios/Flutter/Flutter.podspec
/ios/Flutter/Generated.xcconfig
/ios/Flutter/flutter_export_environment.sh
/ios/Pods
/ios/Runner/GeneratedPluginRegistrant.h
/ios/Runner/GeneratedPluginRegistrant.m
/ios/Runner.xcodeproj/challenge.xcworkspace/xcshareddata/swiftpm
/ios/Runner.xcworkspace/xcshareddata/swiftpm
/linux/flutter/ephemeral
/macos/Flutter/ephemeral
/macos/Runner.xcodeproj/challenge.xcworkspace/xcshareddata/swiftpm
/macos/Runner.xcworkspace/xcshareddata/swiftpm
/home windows/flutter/ephemeral

All of those are within the default .gitignore from the Flutter workforce.

As I want to construct the app on Codemagic in a CI/CD and the identical error occurs on their construct server, I’m in search of a extra everlasting answer.

Any recommendations on recordsdata so as to add (Pods ?) or to take away (Podfile.lock ?) from the repository?

What I attempted up to now:

  • Copying your entire ios listing from the mounted to the working model didn’t assist
  • Simply operating flutter clear and flutter pub get earlier than the construct didn’t assist.