Wednesday, May 27, 2026
eef672e6-98ec-47d1-b9db-98975c36262a
| Summary | ⛅️ Clear until afternoon, returning overnight. |
|---|---|
| Temperature Range | 17°C to 26°C (63°F to 79°F) |
| Feels Like | Low: 63°F | High: 86°F |
| Humidity | 74% |
| Wind | 12 km/h (7 mph), Direction: 210° |
| Precipitation | Probability: 0%, Type: No precipitation expected |
| Sunrise / Sunset | 🌅 05:38 AM / 🌇 07:52 PM |
| Moon Phase | Waxing Gibbous (38%) |
| Cloud Cover | 17% |
| Pressure | 1014.33 hPa |
| Dew Point | 62.75°F |
| Visibility | 6.18 miles |
The protection of biodiversity must be prioritised by the new parliament, BirdLife said on Tuesday, warning the new MPs they are taking office at a time when Cyprus is facing “serious failures” on nature protection.
“The new parliament must exercise substantial parliamentary control, demand transparency and accountability in environmental decisions, ensure sufficient resources for the rational management of protected areas, push for better implementation and compliance with environmental legislation and prevent its further weakening,” BirdLife said.
Citing the Akamas as “one of the most typical examples of failure to implement environmental legislation” on the island, the group claimed that repeated violations in the area had not seen any consequences levied, with the state’s commitments remaining unfulfilled.
“The new parliament must demand full compliance with the legally binding environmental terms of the Akamas SAR and accountability for the violations that have already been recorded,” BirdLife said.
Moreover, the group alleged serious incidents of degradation at the Akrotiri salt lake and called on the parliament to prompt an immediate investigation of the incidents, as well as to step up efforts for the area’s protection.
“The new parliament must demand an immediate investigation of the incidents, restoration of the natural hydrological status of the wetland and effective protection of the area from further environmental degradation,” BirdLife said.
Furthermore, BirdLife called on the new MPs to enforce the strict implementation of illegal bird-trapping legislation, stressing that in autumn 2025 alone, a total of around 726,000 animals were illegally trapped and killed.
It called on MPs to reintroduce large fines for limesticks and for the illegal shooting of migratory birds, and to crack down on organised trapping networks.
The group appealed to the government to include areas of environmental concern into their priorities and prevent what it described as the further weakening of environmental legislation.
“The new parliament will also be judged by whether it will protect the natural heritage of Cyprus and ensure that environmental laws are implemented in practice and not just on paper,” BirdLife concluded.
President Nikos Christodoulides will likely run for re-election in 2028, one of his top aides revealed on Tuesday.
Deputy government spokesman Yiannis Antoniou offered a first glimpse into the incumbent president’s thoughts in the immediate aftermath of the legislative elections.
Speaking on the Sigma channel, and asked about the chatter already underway about the 2028 presidential elections, Antoniou said it “makes sense” for Christodoulides to throw his hat in the race.
Though he could not say for certain if Christodoulides would run again, he opined that it is “likely”.
But he did note the president would decide by the end of the first half of 2027.
Even though speculation has already begun around the 2028 presidential race, Antoniou insisted the result of the recent legislative elections cannot be used as a marker.
It’s still too early to call it, regarding the political alliances that will shape out in 2028. It also depends on which individuals will run for president, the deputy spokesman said.
But he dismissed the notion that the parliamentary elections point to a weakening of Christodoulides’ position – supposedly because of the poor showing by Dipa and Edek, which both had backed Christodoulides in 2023.
Antoniou recalled that, based on the 2021 legislative elections, few had then given Christodoulides a good chance of winning the presidency in 2023.
He went on to call on Disy to clarify whether it will act as an opposition party in parliament up until the 2028 elections.
Antoniou also rejected the idea that the government will have a hard time pushing its agenda through parliament over the next two years.
In the history of the Republic, he noted, very rarely has a president wielded a clear majority in parliament.
Christodoulides is party-less, after getting ejected from the Disy party.
He was booted out of the party on the same day he formally filed his candidacy for president – January 5, 2023.
A longtime Disy member, Christodoulides had served as government spokesperson in the administration of Nicos Anastasiades from 2014 to 2018. From 2018 to 2022 he served as foreign minister.
He resigned his post in January 2022 amid speculation he would run for president in 2023 without Disy’s blessing.
Disy made no secret that they considered this a betrayal.
Running as an independent, Christodoulides went on to garner 51.97 per cent in the 2023 elections, edging out Andreas Mavroyiannis in the runoff.
Christodoulides was at the time endorsed by Diko, Edek, Dipa, Solidarity, the Hunters, and Animal Party Cyprus.
To no small degree, his success owed to his ability to split the Disy vote.
Theatre is a fundamental pillar of Cyprus’ cultural self-awareness, President Nikos Christodoulides said on Tuesday during the Thoc Theatre Awards ceremony for 2025 in Nicosia, describing culture as a source of support and hope in a time of geopolitical tensions and multiple challenges.
“The ceremony is not solely about honouring artists on an individual basis,” Christodoulides said in his address.
“It also serves a collective need: to honour and highlight the essential role of theatre as a key pillar of our cultural self-awareness.”
He said culture can provide “an outlet, support and hope” amid current global tensions, adding that Cyprus’ presidency of the Council of the European Union had provided an opportunity to highlight through action the role of culture, creativity, dialogue and civic participation in strengthening democracies and enriching Europe’s diversity.
Christodoulides said one of the presidency’s significant achievements was agreement among all 27 member states on a strategic cultural roadmap aimed at placing culture at the heart of the EU’s identity, society and economy.
He also said the cultural programme designed by the deputy ministry of culture formed an integral part of the Cyprus presidency’s strategy, marking the first time a unified cultural narrative had been created to present Cyprus’ cultural heritage, contemporary creativity and cultural diplomacy as a continuous and living process.
Referring to government support for theatre in Cyprus, Christodoulides said the state theatre receives annual funding of €5.3 million, while independent theatre receives €1.4 million annually.
He added that 16 theatre organisations and groups of individuals received €170,000 this year for various activities.
The government has also introduced a scheme covering operating expenses for theatre organisations with their own premises, with annual funding of €250,000, recognising the need to strengthen the sustainability of theatre organisations, he said.
Christodoulides also highlighted the support scheme for cultural creators, which allows theatre artists and others to attend training abroad and participate in international festivals, platforms and networks.
He said the institutional presence of productions by Cypriot theatre organisations at the National Theatre in Athens each year has significantly boosted the visibility of contemporary Cypriot theatre in Greece and strengthened exchanges between theatre professionals in the two countries.
He also referred to the International Festival of Ancient Greek Drama, which hosts foreign and Cypriot productions of ancient Greek tragedy and comedy in Cyprus each summer.
Calling the awards ceremony an important moment of recognition, Christodoulides said the distinction reflects the effort, perseverance, talent and commitment of Cyprus’ theatre professionals.
Addressing the award recipients, he said the recognition was “the least return” for their daily efforts and sends a message of hope and faith in the future.
He congratulated the award winners and expressed the appreciation of the Cypriot state for their contribution to the country’s culture.
Agricultural resilience and food security were at the centre of discussions during the European Union’s Agriculture and Fisheries Council meeting in Brussels on Tuesday, held under the Cyprus presidency, as ministers examined mounting challenges facing the agriculture and fisheries sectors.
Following the meeting, Agriculture Minister Maria Panayiotou said agriculture and fisheries are directly tied to farmers and fishers operating under increasing pressure, while Europe’s citizens expect safe, quality and affordable food.
She said the Cyprus presidency is focused on maintaining strategic direction and stability during a period of uncertainty, with emphasis on resilience, food security and the long-term sustainability of primary sectors.
Panayiotou said agriculture remains a key pillar of European trade, with discussions confirming the EU’s dual role as both a leading exporter and importer of agri-food products, as well as the importance of stable and fair trade relations.
She referred to the need to monitor trade agreements such as Mercosur and Ceta, warning that sensitive agricultural sectors require attention to avoid market disruption. At the same time, she said balanced trade agreements can create opportunities for growth, exports and global food security, while ensuring European farmers compete on equal terms.
“Open where possible, protective where necessary, and firmly grounded in the realities and resilience of the European agricultural sector,” she said.
On fertilisers, Panayiotou said availability and affordability directly affect farmers, consumers and food security, with geopolitical instability, energy dependence and supply chain disruptions pushing up production costs and food prices.
She said there was broad agreement on strengthening European autonomy in fertilisers through diversified imports, support for domestic production and sustainable alternatives, while stressing that the green transition must include realistic solutions for farmers and an assessment of the impact of policies such as Cbam and the EU emissions trading system.
She also welcomed the European Commission’s fertiliser action plan, saying it aims to improve affordability, reduce dependence on third countries and strengthen European industry.
Agriculture Commissioner Christophe Hansen said there is no single solution to fertiliser dependence and high costs, warning that limited access could force farmers to reduce or abandon production, threatening food security.
Despite geopolitical uncertainty, he said EU agri-food trade remains resilient, with a positive trade balance of €7.4 billion. He added that while there are no immediate risks to food or fertiliser availability, concerns remain over rising input costs.
Hansen also referred to the modernised EU-Mexico agreement, which he said would create new export opportunities, and highlighted the importance of origin labelling in strengthening traceability and ensuring fair competition for European producers.
Veterinary services on Tuesday said no culling had been planned at the infected small farm in Pachna, based on conditions in the area at the time and the need to ensure the safety of personnel managing the situation.
In a statement issued following developments on Tuesday and public claims surrounding the case, the services said there had never been any official communication from staff to the farmer regarding a process to cull the animals or any possible loss of compensation rights.
They said no member of the veterinary services had informed the farmer either about how a possible cull would proceed or that compensation would be withheld for animals that might be destroyed.
The services also addressed claims about a second round of testing and a negative laboratory result at the farm, saying no second laboratory examination had been carried out in any case where samples had initially tested positive for the virus.
They said the same approach had been followed in the Pachna case, in line with principles of equal treatment, sound administration and good faith, meaning the samples in question were not retested.
The negative results being referred to publicly, they added, concern other farms in the area where sampling took place as part of the required systematic analysis, and not the infected unit in question.
The veterinary services also expressed concern over incidents of tension and the spread of inaccurate information, saying such actions significantly hamper efforts to manage the situation and the work of staff on the ground.
They also condemned the behaviour of certain individuals towards service officials in Pachna and called for respect for personnel working under particularly difficult conditions.
At the same time, they renewed their appeal to livestock farmers to remain calm, cooperate with authorities and rely only on information from the competent services.
They added that the state remains ready to provide all possible support to affected farmers, within the framework of the law and applicable national and European legislation.
President Nikos Christodoulides on Tuesday said there is no rift between the police chief and the justice minister, dismissing speculation over possible changes to either position.
Speaking on arrival at the Cyprus Theatre Organisation (Thoc) Awards ceremony, Christodoulides was asked about reports of tensions between the police chief and the justice minister, and whether he was considering changes to the police leadership.
“There is no rift and there is no possibility of changing the police chief or the justice minister,” he said.
Asked whether any meeting on the matter had taken place earlier in the day, the president said no.
“No, no meeting took place, but there is absolutely no rift,” he said.
The British Bases’ civil administration has provided financial assistance to the Ayia Napa municipality for the municipal districts of Avgorou, Liopetri and Achna, parts of which fall within the Dhekelia Sovereign Base Areas.
According to an announcement by Ayia Napa municipality, Mayor Christos Zannetou met on Monday with Dhekelia’s civil administrator Maria Kyriakidou-Pieri and assistant administrator Anastasia Elia, in the context of what was described as the long-standing and excellent cooperation between the British Bases’ civil administration and the municipality.
During the meeting, Kyriakidou-Pieri handed over official letters concerning the financial support for the three municipal districts, some areas of which are administratively located within the British Bases.
The municipality said the funding forms part of a support programme implemented by the civil administration of the British Bases for communities located within the Sovereign Base Areas, aimed at helping advance projects and initiatives benefiting local communities.
The two sides also discussed issues affecting the three municipal districts, reaffirming their commitment to maintaining close cooperation and constructive dialogue to address matters related to daily life and local development.
Zannetou expressed thanks to the Dhekelia civil administration, and in particular to Kyriakidou-Pieri, for the continued support and cooperation.
He also underlined the importance of joint efforts in promoting progress and wellbeing across the municipality’s districts.
The meeting was also attended by the deputy mayors of Avgorou, Liopetri and Achna, Panayis Michailas, Markos Koumis and Nikos Vasilas.
The government will cooperate with all political parties where there is alignment on its policy agenda, Director of the president’s press office Victor Papadopoulos said on Tuesday, following the outcome of Sunday’s parliamentary elections.
Papadopoulos said the election result was democratic and should be respected, despite two of the three parties that had supported the government – Edek and Dipa – failing to secure seats in parliament.
“As the President of the Republic has already stated, the election result is democratic and fully respected,” Papadopoulos said.
“These are the representatives chosen by the electorate to represent the Cypriot people in the legislative branch, in the House of Representatives. The government will work with everyone for the good of Cyprus, just as it has done since the election of the President.”
Papadopoulos also said the election result appeared to show broad public support for the government’s ideological direction.
“It is positive that, as it appears, the overwhelming majority of the Cypriot people approve of the ideological and political direction of the government – that of social liberalism, with a European and western orientation for the country,” he said.
He added that cooperation would continue “at all levels” with all parties where positions overlap on government priorities, as well as on other legislation and policy proposals brought before parliament.
Papadopoulos pointed to previous legislative cooperation on key issues, including tax reform and migration policy, saying these had already been advanced through parliamentary majorities with similar ideological positions.
Asked whether the absence of Edek and Dipa from parliament could create difficulties for the government in the short term, Papadopoulos described their failure to enter the House as “unfair”, noting that both parties had missed the threshold by only a few hundred votes.
“Their contribution over many years to Cypriot society and political life has been constructive,” he said.
He added that the government would continue working with both parties even from outside parliament, saying cooperation remains central to President Nikos Christodoulides’ political approach, particularly with parties that support the government programme.
On the possibility of a cabinet reshuffle in the coming period, Papadopoulos said any such decision rests solely with the President.
“It is the exclusive prerogative of the President of the Republic, and he will decide,” he said.
Almost half the electorate will not be represented in the new parliament, having either abstained or voted for parties that failed to gain a seat in the legislature, an analyst pointed out on Tuesday.
In comments to the Cyprus News Agency, Vasiliki Triga – associate professor at the Cyprus University of Technology – spoke of a “democratic deficit” and a growing abstention trend.
The latter, she said, reflects both disaffection with the available options, but on the plus side it also suggests the public has grown more savvy, demanding more from the political process and system.
In fact, Triga opined, the election result shows that political narrative and ideology remain important to many voters who, not finding these things, decided to stay away.
“You can’t run in elections for the legislature and not have an ideology. You can’t just rely on populist rhetoric to attract people. It turns out the public are far more critical and more progressive than the parties themselves,” she said.
In Sunday’s parliamentary elections, the abstention rate clocked in at 33 per cent – with 188,391 registered voters opting to not participate.
Out of the total of 569,182 people registered on the electoral roll, only 380,851 voted; the valid ballots cast came to 372,060.
Collectively, the parties securing seats in parliament garnered 309,438 votes.
The parties/candidates that didn’t make it secured 62,622 votes.
Overall, this means only 54.3 per cent of registered voters have a voice in the new parliament. The rest have no say.
Even though turnout this time was slightly higher than in 2021, Triga nevertheless sees abstention increasing over time.
She noted for example that 2021 should not be used as a baseline, as exceptional circumstances obtained at the time – the elections happened amid the coronavirus pandemic.
Rather, abstention has become systemic.
“It reflects the public’s indifference, a sense that they don’t ‘belong’ somewhere, that they can’t find someone to represent them.”
But according to the analyst, the hundreds of thousands of unrepresented voters could well form a “critical mass” in the next presidential elections in 2028.
“This is an important group, and we might see them in the polls for the next elections as ‘the undecided’…but they might well decide the election outcome, assuming they go out and cast their ballot.”
As of July 2027, registration on the electoral rolls will be automatic.
Triga said that, though counterintuitive, this may increase abstention rather than lower it.
“When you make the effort to go and register on the electoral roll, it shows a personal commitment, engagement. But when this becomes automatic, I think it will likely lead to a rise in the abstention rate.”
Another issue is the 3.6 per cent threshold for entry into parliament.
Triga noted that this was decided by the big parties.
“That’s the problem, those who have the political muscle get to set the rules of the game.”
Because of the threshold, a number of parties with a long history got left out of parliament. This included socialists Edek, represented in parliament since 1970, who secured 3.3 per cent of the vote – just short of the limit. Also the Ecologists, in parliament since 2001, who managed only 2 per cent.
Former European commissioner Androulla Vassiliou on Tuesday accused social media influencer Fidias Panayiotou of dishonesty after he decided not to take the seat in parliament to which he had been elected on Sunday.
“I consider it dishonest towards those who voted for him, personally,” she said of the decision, with Panayiotou instead choosing to serve out the remainder of his term as a member of the European Parliament.
His seat has as such been bequeathed to neurophysiologist Yiannis Laouris, who was declared an MP alongside Panayiotou’s party Direct Democracy Cyprus’ other three MPs – Demetris Baros, Diana Constantinide and Demetris Souglis – at the official ceremony at the Nicosia municipal theatre on Monday.
Direct Democracy Cyprus finished in sixth place on Sunday, taking 5.4 per cent of the vote – 20,159 votes – and winning four seats nationwide.
That result, while respectable for a party fighting its first election, fell considerably short of the political earthquake Panayiotou had caused at the 2024 European Parliament elections, when he won 71,330 votes – 19.4 per cent – and placed behind only Disy and Akel.
He was the first independent Cypriot candidate to win a seat in the European Parliament in Cyprus since the country joined the European Union in 2004, and one of only five independents among the 720 MEPs elected across the continent in 2024.
Allegations against deputy chief Panikos Stavrou resurfaced on Tuesday after social media personality Ioanna Fotiou, known online as Annie Alexui, published references to a decade-old case and claimed she possesses video material linked to the allegations.
Fotiou uploaded extracts from an investigator’s sworn statement which had been submitted to the Nicosia district court surrounding the death of Alexis Mavromichalis, known himself as ‘Alexui’ and whom Fotiou had a close personal relationship with.
The affidavit contains testimony from a witness alleging that individuals involved in criminal activity maintained contacts within the police force through intermediaries who could “arrange their business”.
According to the sworn statement, one recorded conversation referred to contacting “Panikos” regarding a matter, with the witness claiming “the good thing is we have people in the drug unit who help us, and once you pay, your job gets done.”
The testimony referenced in the affidavit concerns the period when Stavrou served in the drug squad (Ykan), which he became deputy head of between 2013 and March 2018.
The affidavit also included allegations that Stavrou appeared in video footage receiving a briefcase containing money from other individuals.
According to the witness statement, the alleged footage had been stored on a USB device which was later hidden inside a lift shaft.
Police later recovered the USB during investigations, according to the affidavit, but the device had reportedly been damaged and investigators were unable to retrieve any material from it.
In recent online posts, Fotiou claimed she may release the alleged video publicly.
No such material had been made public as of the time of publishing.
Local media reports said the allegations had previously been examined by the police’s internal affairs service.
The investigation reportedly did not establish evidence of criminal wrongdoing against Stavrou and no offences were substantiated.
The witness cited in the affidavit had reportedly also provided testimony in a separate narcotics case which resulted in prison sentences being imposed on two individuals.
Stavrou also serves on the the gaming and casino licensing authority following cabinet approval.
Europe needs a modern regulatory framework for space that inspires confidence among operators, investors and citizens, Deputy Research Minister Nikodemos Damianou said on Tuesday at the opening of the high-level EU Space Days 2026 conference in Nicosia.
Damianou said space had become a critical sector for Europe’s competitiveness, security, resilience and strategic autonomy.
The event brought together representatives from the European Commission, the European Space Agency, the European Union Agency for the Space Programme (EUSPA), industry executives and researchers to discuss the future direction of Europe’s space policy and industrial strategy.
“Space is at the heart of everything that matters for Europe: competitiveness, security, resilience and strategic autonomy,” Damianou said, describing the sector as critical infrastructure underpinning navigation, telecommunications, disaster response, financial systems and connectivity across the continent.
He said the space sector had moved well beyond scientific exploration and was now firmly part of Europe’s geopolitical and economic architecture.
“The global space economy has already surpassed €500 billion and is expected to exceed €1.5 trillion within the next decade,” he said, adding that Europe must strengthen its technological sovereignty and build a genuine single market for space.
Damianou warned that Europe risked falling behind global rivals unless it accelerated efforts to convert innovation into industrial and strategic power.
“Let’s face it, others are moving much faster,” he said. “We need not only innovation, but the ability to turn it into real industrial and strategic strength.”
He said the Cypriot presidency had prioritised advancing the proposed EU Space Act and shaping the future space pillar of the European Competitiveness Fund as part of the EU’s next multiannual financial framework for 2028-2034.
“Europe’s ambitions in space require not only clarity, but also the financial, industrial and technological capacity to deliver,” he said.
ESA navigation director Javier Benedicto Ruiz said space had transformed from a domain of exploration into “a critical arena of competition, opportunity and vulnerability”, warning that Europe’s autonomy increasingly depends on the resilience and security of its space capabilities.
EUSPA executive director Rodrigo da Costa warned that Europe would need resilient supply chains and stronger technological sovereignty to remain competitive after 2028.
Damianou also presented Cyprus as an emerging regional hub for advanced technologies and space services, pointing to its strategic location at the crossroads of Europe, Asia and Africa.
“Our country hosts connectivity gateways and satellite ground stations for leading European providers, as well as four operational satellites making use of Cypriot assets,” he said.
He added that Cyprus was developing an optical gateway linked to Europe’s secure connectivity systems and quantum communications infrastructure. The country also hosts part of the Galileo search-and-rescue network used to detect distress signals, while future EGNOS monitoring stations selected by EUSPA are also planned.
“These are not symbolic projects,” he said. “They are strategic capabilities that directly strengthen resilience, connectivity, security and protection in our wider region.”
Electricity prices in the north are to increase by 22 per cent from next Monday, the Turkish Cypriot electricity authority Kib-Tek announced on Tuesday.
For residential properties paying the flat-rate tariff, the first 250 kilowatt hours or usage will now be charged at 5.8614TL (€0.11) per kilowatt hour, up from 4.8044TL (€0.09) per kilowatt hour.
The fee per kilowatt hour for usage between 251 and 500 kilowatt hours will increase from 9.9115TL (€0.19) to 12.092TL (€0.23), while the fee per kilowatt hour for usage between 501 and 750 kilowatt hours will increase from 10.6573TL (€0.20) to 13.0019TL (€0.24).
At the higher end of usage, the fee per kilowatt hour for usage between 751 and 1,000 kilowatt hours will increase from 11.5519TL (€0.22) to 14.0933TL (€0.26), while the fee per kilowatt hour for usage above 1,001 kilowatt hours will increase from 13.8069TL (€0.26) to 16.8444TL (€0.32)
The fixed monthly usage fee for residential properties currently stands at 110.58TL (€2.07). It is not yet clear whether this fee will be included in the increases, but if it is, it will rise to 134.91TL (€2.53).
For residential properties paying the “three-time” tariff, the normal rate – between 7am and 5pm – will increase from 9.9115TL (€0.19) per kilowatt hour to 12.092TL (€0.23) per kilowatt hour.
The “peak” rate – between 5pm and 10pm – will increase from 13.7116TL (€0.26) per kilowatt hour to 16.7282TL (€0.31) per kilowatt hour, while the “off peak” rate – between 10pm and 7am – will increase from 6.5337TL (€0.12) per kilowatt hour to 7.9711TL (€0.15) per kilowatt hour.
Kib-Tek defended the planned increases, saying that it “had not made any adjustments to electricity tariffs in the last 14 months” prior to Monday, despite the fact that “during this period, fuel prices increased by over 60 per cent, the cost of living increased by 38 per cent, and the Turkish Lira fell by 18 per cent”
As such, it said, the price increases are “necessary” to “ensure the sustainability of Kib-Tek’s financial structure”.
One of the financial pressures currently placed on Kib-Tek is the fact that it remains locked into a procurement deal it signed with Turkish private energy company Aksa in 2023.
The deal bound Kib-Tek to purchase the energy produced at the Kalecik power plant near the village of Gastria, which is owned and operated by Aksa, until 2038, and to pay for it in US dollars. Kib-Tek’s only income is received in Turkish liras, thus further pressuring Kib-Tek as the lira loses value compared to other currencies over time.
In the Republic, single rate domestic consumers pay 10.35 cents per kilowatt hour as their “energy charge”, plus 3.93 cents per kilowatt hour for their network charge. Domestic users also pay a €0.94 meter data management charge and a €8 supply charge on each bimonthly bill.
Those paying the two-rate tariff pay 17.94 cents per kilowatt hour during “standard periods” – between 9am and 11pm – and 17.86 cents per kilowatt hour during “economy periods” – between 11pm and 9am. They also pay the same meter data management charge and supply charge on each bimonthly bill.
A 35-year-old man was sentenced to 15 years in prison on Tuesday by the Paphos permanent criminal court after being found guilty in an attempted murder case linked to an attack at a pharmacy in the district last year.
On April 14 last year when two pharmacists, aged 33 and 24 were attacked by the defendant at an outlet in Chlorakas.
According to police, both women sustained injuries during the assault.
The 33-year-old was admitted to Paphos general hospital for treatment, while the 24-year-old also attended the hospital before being discharged later the same day after receiving medical care.
Authorities arrested the suspect shortly after the incident and launched an attempted murder investigation.
The case was handled by the Paphos police, with proceedings concluding before the criminal court.
The Limassol man handed himself in to Paphos’ criminal investigations department, presenting the knife used in the attack.
Archimandrite Gregorios Ioannides was on Tuesday selected as the new bishop of Paphos by the Holy Synod of the Church of Cyprus.
The vote came after the Holy Synod earlier in the day finalised the list of candidates who had expressed interest for the position which had been vacant since May 2025 after former bishop Tychikos was removed from office, with Archbishop Georgios serving as caretaker ever since.
The election process was conducted via secret ballot by the 16 synod members based on the provisions of the new church statute.
Eligible for the position of the Paphos bishop are celibate clergy including deacons, as well as monks with a degree from a recognised Orthodox theological school and ten years of ministry in the capacity of clergy or a monastery who are aged at least 35.
Reports said Gregorios garnered 11 votes, while another candidate received four.
Speaking after his election, the new Paphos bishop expressed gratitude, saying it was a great honour but also a burden of responsibility.
“I thank God who today has bestowed on me such an honour. In the Church, we are all ministers, and our mission is to minister to the flock.”
Asked whether he would seek a meeting with his predecessor Tychikos, Gregorios said the doors of the bishopric would be “open to everyone”.
Institutionally, whoever serves as Paphos bishop also acts as caretaker for the archbishopric whenever the archbishop is incapacitated.
The formal announcement of Gregorios as new Paphos bishop will take place on June 10. His ordainment and enthronement will take place on June 11.
Gregorios is associate professor at the Church of Cyprus School of Theology.
He holds a post-graduate degree, and specialises in liturgics – the academic discipline and practical art dedicated to the study of formal public worship, rites, rituals and religious practices.
The Paphos bishopric had effectively remained vacant since May 2025, when the Holy Synod voted to depose Tychikos over ecclesiastical disputes and protocol breaches. Tychikos was subsequently suspended by the Synod.
His removal sparked massive fallout. His legal team argued that the decision was driven by conspiracies related to the financial administration of the bishopric, while the Church cited unacceptable breaches and a physical altercation.
Customs officers seized large amounts of undeclared cash and cheques at the Ayios Dometios crossing point, the customs department said on Tuesday.
Customs officers carried out routine checks under the Green Line Regulation and stopped a rental vehicle driven by an Israeli citizen at Ayios Dometios.
Officers found €29,300 in cash in €100 and €200 banknotes, as well as 39 cheques from Israeli banks worth a total of 1,903,500 Israeli shekels, equivalent to around €569,000.
The driver said the money and cheques had been brought from Israel but had not been declared on arrival at Larnaca airport.
The money and cheques were confiscated.
.
Nearly €200,000 in undeclared cash was seized from a Ukrainian passenger at Paphos airport by customs officers after the money was discovered hidden inside socks in his luggage.
The customs department said on Tuesday the passenger had arrived in Cyprus from Dublin on Sunday when officers carried out an inspection following a tip off.
An x-ray examination of the luggage prompted a physical search by officers, who discovered €199,950 in cash “carefully hidden inside 13 socks, placed inside shoes”.
The department said the passenger had failed to declare the money upon arrival in Cyprus, leading officers to seize the full amount.
The case is now being investigated further by customs’ investigative branch,
Turkish Cypriot leader Tufan Erhurman issued strong criticism of Israel and regional security developments on Tuesday, saying he does not trust “any government that kills children” while lambasting the Republic’s military and diplomatic alignments in the Levant that exclude Turkish Cypriots and Turkey.
His comments, during an interview with Turkish broadcaster Haber, focused on what he described as increasing regional tensions due to the republic’s foreign policy direction and defence cooperation with international partners.
Erhurman said he was concerned by the expansion of military activity at facilities including the use of Andreas Papandreou Air Base, as well as cooperation agreements involving Israel, the United States and France.
He linked these concerns to wider instability in the Levant, referencing previous evacuation operations carried out under the Estia plan during conflicts in the Middle East.
“The fact that Paphos may be at risk does not mean that Turkish Cypriots in Nicosia or Lefke are not at risk,” he added.
He also criticised efforts by the republic to expand diplomatic and economic relations with countries including India and Israel, arguing that regional trade routes and cooperation frameworks that exclude Turkey and Turkish Cypriots would not be viable.
“It is impossible for a trade route that excludes Turkey and the Turkish Cypriots to be functional in this region,” he said.
Erhurman said that the north was acting in coordination with Ankara on regional and Cyprus related policy, stating that alignment with Turkey remained central to decision making.
“It is out of the question to determine a position on the Cyprus issue without consulting Turkey,” he insisted, adding that any agreement should be based on dialogue rather than unilateral action.
He also referred to reports and public debate within the government-controlled areas regarding recent property acquisition by Israeli property developers, saying that while definitive data was not available, there appeared to be “serious unrest” within segments of the Greek Cypriot public.
The interview also included direct criticism of Israeli Prime Minister Benjamin Netanyahu, with Erhurman stating “I cannot trust or show respect to any government that kills children.”
Local government reform moved forward on Tuesday with the signing of a memorandum establishing new unified plans for municipalities towards modernising and standardising public sector roles.
Following the agreement’s signing at Nicosia municipality, Larnaca mayor Andreas Vyras said the framework represents “a large and difficult undertaking” developed through consultation and aimed at strengthening organisational capacity across municipalities.
He said the plans introduce “a modern, clear and unified framework” defining qualifications, duties and responsibilities for each post, with the aim of improving transparency, equal treatment and personnel planning across the sector.
Vyras added that the reform strengthens administrative coherence while adapting municipal structures to the demands of the new local government system, adding that further flexibility would still be required in staffing decisions to meet local needs.
Nicosia mayor Charalambos Prountzos said the agreement concluded “a long, demanding and particularly important collective effort” lasting around two years.
He said the new system creates, “for the first time, a single reference framework for corresponding positions in all municipalities”, with unified job descriptions and clearly defined responsibilities.
Trade union representatives also welcomed the agreement, with SEK’s Andreas Ilias describing social dialogue as “a wealth for the country” when it produces outcomes for workers.
Sidikek-Peo secretary-general Nikos Gregoriou said the plans strengthen local government by creating “a common and controlled operating framework”.
Cyprus Employers and Industrialists Federation (Oev) president George Pantelides met with British High Commissioner to Cyprus Michael Tatham on Monday, in order to discuss the strengthening of economic and trade relations between Cyprus and the United Kingdom.
According to an announcement by the federation released on Tuesday, the meeting was also attended by Oev director-general Michalis Antoniou and head of trade and investment at the British High Commission in Cyprus Elena Orphanidou.
During the discussions, both sides exchanged views on prospects for enhancing bilateral economic ties, with a focus on expanding trade flows, increasing investment and fostering closer cooperation between businesses in the two countries.
Particular emphasis was placed on the tourism sector, where the importance of the British market for the Cypriot economy was underlined.
Participants highlighted the need to maintain the positive momentum recorded in arrivals from the United Kingdom.
“Cyprus remains at the lowest level of the United Kingdom’s travel advice, with no restrictions or recommendations against travel,” the High Commissioner said.
“British citizens continue to choose Cyprus with confidence,” he added.
This is something that demonstrates that the island “remains a safe and reliable tourist destination”, according to Oev.
Reference was also made to data from Hermes Airports, showing that approximately 30 inbound flights from the United Kingdom are recorded daily.
These flights are operating with load factors exceeding 90 per cent, reflecting sustained demand from the British market.
The announcement concluded by stating that the meeting “took place in a positive atmosphere and confirmed the shared intention to further strengthen cooperation between Cyprus and the United Kingdom across areas of mutual interest”.
Copilot Memory now includes improved memory deletion, adds a repository-level off switch, and brings further memory controls into the Copilot CLI. Copilot Memory is in public preview and available to all paid Copilot plans.
/memory command in the Copilot CLI: Use /memory on to enable Copilot Memory, /memory off to disable it, and /memory show to check its current status. Your choice persists across sessions.store_memory permission prompt now explicitly states whether the entry will be a user-level preference (i.e., visible only to you, used in your sessions across repositories) or a repository-level fact (i.e., visible to all contributors on the repository).Learn more about managing stored memories.
For more information, see About GitHub Copilot Memory.
We’re continuing to evolve Copilot Memory and plan to bring it to more features in the future. To share feedback or join the discussion, visit the GitHub Community.
The post Copilot Memory has more controls for deletion, scope, and the Copilot CLI appeared first on The GitHub Blog.
You can now programmatically enable and configure GitHub Code Quality on individual repositories using the new Repository Enablement API, available today in public preview.
Two new endpoints are now available:
PATCH /repos/{owner}/{repo}/code-quality/setup: Enable or disable Code Quality default setup for a repository, configure the languages to analyze, and specify the runner type.GET /repos/{owner}/{repo}/code-quality/setup: Retrieve the current Code Quality configuration for a repository, including state, languages, runner type, and analysis schedule.Supported languages include csharp, go, java-kotlin, javascript-typescript, python, and ruby.
This feature is available in public preview on github.com and is not available on Enterprise Server.
To learn more about GitHub Code Quality, check out the documentation for code quality.
The post GitHub Code Quality: Repository Enablement API appeared first on The GitHub Blog.
Enterprise owners now have granular control over which GitHub Copilot models are available to each organization. With targeted model rules, you can allow specific models for specific organizations instead of relying on a single enterprise-wide setting. This capability is now in public preview.
We’ve also refreshed the experience for managing default model availability across your enterprise, making it easier to see and configure which models are available to your organizations.
Targeted model rules let you create rules that allow specific Copilot models for selected organizations, giving you fine-grained control beyond enterprise-wide defaults.
The default model availability experience has a refreshed interface. From a single page, you can:
Customers on Copilot Business and Copilot Enterprise plans can use targeted model rules.
To get started, see Managing availability of default models and Managing default models for your organization.
Join the discussion in GitHub Community.
The post Target Copilot models to organizations with model rules appeared first on The GitHub Blog.
Dependabot now supports sbt. Add sbt as a package ecosystem in your dependabot.yml file. Dependabot will then monitor your build.sbt inputs and open pull requests when newer commits are available upstream. This applies to version updates, not security updates.
Add an sbt entry to your .github/dependabot.yml file, and Dependabot will start opening pull requests on the next scheduled run.
The post Dependabot version updates now support the sbt ecosystem appeared first on The GitHub Blog.
This week, we’re rolling out two improvements to our delegated workflows for secret scanning.
is_bypassed REST API filter: You can now filter by an is_bypassed query parameter when listing alerts, closing a gap with filtering that was already available in the UI.These changes make it easier for organizations to manage requests at scale.
Previously, push protection bypass requests and alert dismissal requests appeared in a fixed order (newest-first). For large organizations, lack of control over sorting made it challenging to manage high volumes of requests. You can now order requests by Newest, Oldest, Recently updated, and Least recently updated directly in the filter UI bar, allowing security analysts and developers to focus on soonest-expiring requests.
Sorting is available at the repository, organization, and enterprise levels for both push protection bypass requests and alert dismissal requests. This improvement makes it substantially easier to manage requests at scale from the UI list view.
is_bypassed REST API filterPreviously, the bypassed:true,false qualifier was supported from the UI list view for push protection bypass requests, without an equivalent filter option in the REST API. This improvement makes it easier to programmatically filter alerts by push protection bypasses without additional processing.
The secret scanning alerts API now accepts an is_bypassed boolean query parameter on all three list endpoints:
GET /repos/{owner}/{repo}/secret-scanning/alertsGET /orgs/{org}/secret-scanning/alertsGET /enterprises/{enterprise}/secret-scanning/alertsPass is_bypassed=true to return only alerts where push protection was bypassed, or is_bypassed=false to exclude them.
Learn more about secret scanning and the secret scanning REST API in our documentation. These improvements were shaped by your feedback. Let us know what you think in the community discussion.
The post Filter secret scanning approval requests by sort order and bypass status appeared first on The GitHub Blog.
Starting today, new sign-ups for GitHub Classroom are no longer available as we transition to partner solutions.
If you already have a GitHub Classroom account or existing classrooms, you can continue to use GitHub Classroom as usual, including creating classrooms and inviting students.
On August 28, 2026, GitHub Classroom will fully transition to partner solutions. After that date, users won’t be able to sign in to manage classrooms, and the GitHub Classroom website will be decommissioned. GitHub user accounts, repositories, and organizations won’t be affected.
For more information about this transition and recommended partner solutions, please refer to the GitHub Educator Community Discussion.
The post GitHub Classroom sign-ups are no longer available appeared first on The GitHub Blog.
Code coverage metrics are now in public preview for all GitHub Code Quality users on github.com.
You can now see an aggregate percent of code covered directly on pull requests, giving reviewers a clear signal to help evaluate test completeness before merging. With coverage context in the pull request experience, your team can make faster, higher-confidence review decisions without switching to a separate tool.
To get started, enable code coverage for your repository and upload a Cobertura report from your existing CI workflow using the upload-code-coverage action.
GitHub Apps and Actions workflows require the new code-quality:write fine-grained permission to upload code coverage reports to GitHub.
GitHub Code Quality is available today for GitHub Enterprise Cloud and Team, but isn’t yet available on GitHub Enterprise Server. It’s free during the preview period.
The post Code coverage on pull requests is now in public preview appeared first on The GitHub Blog.
A friend of discord helped me work on a calculator. Needed to use some youtube videos and guides.
This is my original code:
use std::{f64, io};
fn calcfn () {
//Starting Variables let mut num1:String = String::new(); let mut num2:String = String::new(); let mut choice:String = String::new(); //Collect Number 1 println!("Enter the first number:"); io::stdin().read_line(&mut num1).expect("Error In Number 1"); //Collect Number 2 println!("Enter the second number:"); io::stdin().read_line(&mut num2).expect("Error In Number 2"); //Operation Selection println!("Please Provide the operation to peform"); println!("[+] for Addition"); println!("[-] for Subtraction"); println!("[*] for Multiplication"); println!("[/] for Division"); io::stdin().read_line(&mut choice).expect("Error In Input"); //input conversion let num1:f64 = num1.trim().parse().expect("Error Input Parse"); let num2:f64 = num2.trim().parse().expect("Error Input Parse"); let mut result = 0.0; let choice:&str = choice.as_str().trim(); //Computations if choice == "+"{ result = num1 + num2 } else if choice == "-"{ result = num1 - num2 } else if choice == "*"{ result = num1 * num2 } else if choice == "/" && num2 != 0.0 { result = num1 / num2 } else { println!("Cannot Divide By 0"); } println!("Result of the mathmatical computation: {}", result); }
fn main () {
loop{calcfn()} }
Then, this is how my code changed after my friend made suggestions, gave me some examples, and pushed me to make it better:
//Using this to get the Float64 library so that the input will be treated as intergers
use std::{f64, io};
fn main () {
//Makes the program start over after being used loop{Calculation("Enter an operator + Addition - Subtraction * Multiplication / Division".to_string())} }
fn get_number_input(message: String) -> f64 {
// Create a string variable let mut input: String = String::new(); //checks if there is a message to display, and if so, displays it if(message.len() > 0){ println!("{}", message); } // Get the standard input stream io::stdin() .read_line(&mut input) // The read_line function reads data until it reaches a '\n' aka return/enter character .expect("Unable to read Stdin"); // In case the read operation fails, it panics with the given message //takes the user's input and checks if it was an integer or not let myint: Result<f64,_ > = input.trim().parse(); //takes the result and unwraps it, then returns the resulting number. //If the input is a number, it returns it, if it was not a number it runs get_number_input again with a message // informing the user that they were wrong and asks for a number again. myint.unwrap_or_else(|_| get_number_input("not a number, try again".to_string())) }
fn Calculation (message:String) {
//input conversion let num1:f64 = get_number_input("Emter the first number:".to_string()); let num2:f64 = get_number_input("Emter the second number:".to_string()); let mut result = 0.0; //Create a sting variable for operations let mut choice: String = String::new(); //checks if there is a message to display, and if so, displays it if(message.len() > 0){ println!("{}", message); } // Get the standard input stream io::stdin() .read_line(&mut choice) .expect("Unable to read Stdin"); //Not actually sure what this is doing. Got it from a guide let choice:&str = choice.as_str().trim(); //Computations if choice == "+"{ result = add(num1, num2); } else if choice == "-"{ result = subtract(num1, num2); } else if choice == "*"{ result = multiply(num1, num2); } else if choice == "/" { result = divide(num1, num2); } println!("Result of the mathmatical computation: {}", result); }
//The actual math formulas
fn add(a: f64, b: f64) -> f64 { a + b }
fn subtract(a: f64, b: f64) -> f64 { a - b }
fn multiply(a: f64, b: f64) -> f64 { a * b }
fn divide(a: f64, b: f64) -> f64 { a / b }
My goal now? Make it so it can just work like "input a formula" and have it just work.
I have searched on line for a rust mode for the jedsoft Jed editor, but I have not found anything.
The Jed editor is old software that is not widely used, so this is not surprising.
But I'm wondering if perhaps anyone might point me to a Jed mode for editing rust code ... in the unlikely event that such a thing even exists in the first place.
Thanks in advance.
theta-spec is a declarative, harness-agnostic configuration standard for AI coding agents. `theta` is its canonical implementation written 100% in rust and greatly inspired by `uv`.
This is our interpretation of what it would take to allow individuals working across different harnesses (or teams with more complex configurations) to be able to keep things consistent, or share their configurations with others.
Any feedback and contribution to the spec and reference implementation is extremely welcomed.
hello i m a newbies and i would like to learn rust for school and personal project
https://codeberg.org/Cinoma/Dentry
Please tell me what you think about this please and how to delete the " " at the start and end of a Pathbuf ?
I'm new to the linux world (installed Mint on my new laptop 3 weeks ago). I was a little lost with the built-in process manager and wanted to build my own using Rust and egui. I called it rproc
I think the result is pretty neat and really close to what I'm used to with Window 11.
You can see your system usage with graphs, view process by name or memory, disk and cpu usage.
I also added startups app and services browsing to know easily what is running on you system (not that easy to spot when starting out with linux).
It also ship with a little deamon that keep the last 60 seconds of your system usage in memory. So you can have a quick view of your computer consumption already available when opening rproc. You don't have to wait for a minute or keep it open to see the complete charts.
Hope some people here will find this useful :)
I want your help guys, how can I take the user input and put it to a struct of calculator that contains an enum of moods, which is classic and scientific I guess, I'm a beginner and don't use ai actually.
We run a real-time voice agent in Rust. Long-lived Tokio runtime. Audio capture from a network socket, fed into a Voice Activity Detection (VAD) model, then into an LLM, then TTS streaming back out. Hard latency target on the audio path.
Couple months back we had a problem: VAD was missing the first 100 to 150ms of user speech. Inconsistent. Sometimes fine, sometimes terrible. We could not reproduce on a dev box. Production-only.
The first thing I tried was tracing every async task with tokio-console. Nothing obviously wrong. Tasks scheduled in single-digit microseconds.
The thing I missed for a week: when the LLM was active (which holds large model weights resident), the kernel sometimes paged out our long-lived audio buffers to swap. When user audio arrived, the buffer had to page back in. That round trip was the 100 to 150ms I was seeing.
The fix is mlock on the buffer pages.
rust
use libc::{mlock, c_void};
use std::io;
/// Pin a byte slice in memory so it never swaps.
/// Caller must guarantee \buf` lives at least until the matching munlock. pub unsafe fn pin_buffer(buf: &[u8]) -> io::Result<()> { let ret = mlock(buf.as_ptr() as *const c_void, buf.len()); if ret != 0 { return Err(io::Error::last_os_error()); } Ok(()) }`
pub unsafe fn unpin_buffer(buf: &[u8]) -> io::Result<()> {
let ret = libc::munlock(buf.as_ptr() as *const c_void, buf.len());
if ret != 0 {
return Err(io::Error::last_os_error());
}
Ok(())
}
A few production-grade things I learned the hard way:
mlock requires RLIMIT_MEMLOCK to be high enough. On most Linux containers the default is 64KB. Ours needed 8MB for two ring buffers. We bumped the limit via the container's securityContext.
mlock locks at page granularity. If you mlock a 4KB-aligned buffer at a non-page-aligned offset, you might end up locking adjacent unrelated memory. Use posix_memalign or similar to ensure page-aligned allocation.
The lock is process-wide RAM, not virtual. If you mlock 2MB and you have 4MB free, fine. If you mlock 2MB and you have 1MB free, mlock returns ENOMEM. Treat as a recoverable error and fall back to non-pinned buffers with a metric.
Tokio's allocator does not give you control over this directly. We use a custom Vec-backed ring buffer that we mlock manually at startup.
After this change, our 100ms-threshold barge-in interrupt rate moved from 41% to about 70%. The remaining 30% came from two more fixes: VAD threshold tuning (0.6 to 0.5) and TTS chunk size (200ms to 30ms with immediate queue flush on VAD fire). Final number after all three: 89%.
rust
async fn handle_barge_in(state: &mut AgentState) {
state.llm_handle.cancel();
state.tts_queue.clear();
state.audio_out.stop().await;
}
Total perf win from the mlock alone, measured on production traces: 320ms drop in barge-in p99 latency. The other two changes saved another 60ms combined.
The mental shift that stuck: Rust got us in the ballpark. Tokio scheduling got us close. The actual latency floor was kernel paging behavior. Real-time audio in Rust is mostly systems hygiene with a Rust skin.
If anyone has a cleaner cross-platform abstraction for "this allocation must not swap" than calling libc::mlock directly, I would genuinely like to see it. macOS has its own mlock, Windows has VirtualLock, and a Rust crate that wraps all three with sane error semantics would save the next team a week.
One of those "I should have known better" posts but the numbers surprised me enough to write up.
I'm working on murrdb, a small Redis-like cache for ML workloads. The hot path takes an Arrow IPC RecordBatch and flips it from columnar to row-wise layout we later write to RocksDB.
Decoder roughly:
``` pub trait ColumnDecoder: Send + Sync { fn write_to_row(&self, index: usize, row: &mut WriteRow); }
// one decoder per column, built once per batch: let decoders: Vec<Box<dyn ColumnDecoder>> = build_decoders(&schema, &batch);
for i in 0..n_rows { let mut row = WriteRow::new(&segment, key_array.value(i)); for d in &decoders { d.write_to_row(i, &mut row); } sink(row.into()); } ``` One decoder implementation per column type (f32, utf8, etc.), boxed as dyn so I can put them in a Vec, very ergonomic and idiomatic. The bench writes 1M rows across 10 f32 columns, which I expected to be fast given how little real work the encoder is doing per row.
Instead I got ~30 Melem/s, which felt low, so I threw it under perf record expecting to see memcpys or allocator overhead at the top of the report. What I actually got was this
38.64% <Decoder<T> as ColumnDecoder>::write_to_row 23.92% criterion::Bencher::iter
The second line confused me until I opened the annotated disassembly and saw that 43% of iter's self-time was just one instruction:
2e4001: call *0x18(%rax)
That call is the vtable indirection into write_to_row, which means the dyn dispatch is eating about 48% of the whole bench once you combine the body's own time with the call site itself!
The body is where it gets interesting. It's roughly 25 instructions of completely trivial work: null check, flip a bit in the bitset, move four bytes. No single instruction in the body crosses 7% of self-time. What dominates instead is the function prologue and epilogue, which between them eat about 25% of the function's wall-clock cost.
The reason is straightforward in retrospect: * The body is tiny and gets called 10 million times through a vtable. * The compiler cannot inline across that boundary, cannot fuse the inner loop, cannot vectorize the f32 stores, so every iteration pays the full function-call tax (indirect jump, ABI dance, register saves, prologue, epilogue) to do about three byte writes of useful work.
So TLDR: your Box<dyn> is an inlining barrier. When the method body is small enough to amortize against, virtual function call overhead becomes a massive slice of your runtime.
As I'm coming from the Java world where JVM is smart enough to de-virtualize and inline calls across such a boundary, this situation made sad and miss managed runtimes a little.
I'll copy the little snippet from I wrote in the README so you understand what this project is and why I built it!
---
The rust ecosystem already has many great tools for continous benchmarking, take https://bencher.dev/ as one example. However I felt it was lacking in an easy to use tool to get the same kind of results for allocation performance/regressions. At my day job we run some pretty hot, high load systems where memory usage is important. We already make extensive use of CPU/heap profiling in production, but I wanted an earlier feedback loop before the code even hits prod.
Initially, I just chucked a script to pull down the profile at the end of a long running acceptance test run and did some analysis on the pprof generated (profiling is a in baked feature of foundations), but analysing this, and crucially comparing it to previous runs was a bit of a pain. If I wanted to check the hot paths or see the function stacks we cared about, I had to maintain a hand crafted lift of these function names then have some cursed bash script to build the necessary pprof commands. In my opinion, this was immediate code smell and extra maintenance burden. We already know which functions performance we care about - we trace them!
Hence I built culpert (culpritpert). Below gives technical schpiel/a technical definition of what it does, but essentially it acts as a heap profiler which automatically tags allocation samples with their already existing spans - from tracing, foundations or the in house culpert macro. It then ships a CLI for beautiful diffing so you can compare and contrast heap allocations on your important functions between runs, with no extra config.
See culpert-archive for an example cloudflare worker for storing the collected pprofs based on commit hash, such that you can bake this stuff into CI. I also then provide an example action so you can see how this could be integrated into your CI.
Culpert has already helped us capture multiple allocation regressions and even a memory leak before we hit production. We can, at a glance decide if a regression in allocations is intentional and worthwhile, and likewise see if our efforts to reduce allocations pay off.
I'd also like to note that this, more than anything, was a learning project for myself to understand the world of heap allocations and stack tracing. Would love to answer any of your questions down below!
So... a couple of months ago, my colleague came to work wearing some nice handmade socks, which I really liked. He then asked if I wanted a custom pair with the Rust logo on them, because his girlfriend enjoys making these. At first I thought he was joking, but fast forward to today and I just got them, and I couldn't be happier!
Thought I would share a project I've been working on called Audia. It's a Spotify client built using Vizia for the GUI as a bit of a demonstrator.
It's still in the early stages, with some bugs and rough edges, but I'm pleased with how it's coming together. It currently supports basic local playback, searching for songs/artists/albums, browsing your playlists, and managing your queue. Spotify premium is required. The Spotify API is somewhat limited in what it allows, so there are some features that aren't possible to implement, like recommendations for example.
If you're interested in checking it out or contributing, feel free to take a look at the repo: https://github.com/vizia/audia.
hyper is the widely-used HTTP library for Rust. We ran the first user survey for hyper in November 2025. Here’s the results and some analysis.
Answering some questions such as:
I know where. First, I wanna thank the community here. The post I sent ~2 months ago really opened the Clubhouse :) Amazing people, devs, contributors joined.
And one more thing about the rust community that surprised me... I've never hidden the fact that I'm using AI for assistance (not vibe coding), and here it was received really well, much more than on other subreddits.
So... thank you :)
Ok, so what are we? A Clubhouse inside the terminal, where people can take a break, chill, chat with others all around the globe, listen to music, play some games, or paint on a live artboard.
ssh late.sh That's all. No passwords. No OAuth. No accounts. Your ssh key is your identity.
So much new stuff has been added since the last post, contributions are just out of this world. Let's list the biggest ones:
And you know what's the most amazing thing about that last one? One of our members already found a job thanks to it! :)
So if you haven't seen us yet, hop in and say hello ;)
Ok, and one for the rustaceans :)
Quick peek at how a poker table works: each `PokerService` owns one `Arc<Mutex<SharedState>>` and two `tokio::sync::watch` layers, a single public snapshot (seats, pot, community cards, dealer button, every watcher gets this) and a per-user private snapshot keyed by user_id (your hole cards, your stack, to_call). You literally can't render someone else's cards because you don't have a receiver for their channel.
All actions (call, raise, fold, sit) are fire-and-forget: input handler spawns a tokio task, task locks the mutex, mutates, calls one `publish()` that sends the new public snapshot and re-derives every active private one. Room-level stuff (seat joined, settlements) goes out on a separate `broadcast` channel, watch for state, broadcast for events.
UI side is the boring half on purpose. Each player's state holds two `watch::Receiver`s and ticks them with `has_changed()` + `borrow_and_update()`. Render reads local copies only, no `.await`, no DB, no service calls. SSH render loop stays buttery at 15-60fps with 60+ people connected.
Same pattern across all Rooms games (Blackjack, Chess, Tron, Asterion), only poker needs the private split because of hole cards.
License: FSL-1.1-MIT.
Code: https://github.com/mpiorowski/late-sh
Landing: https://late.sh
Demo: https://late.sh/play
This is my first "professional" Rust Project, although I tried to keep it aesthetic.
This is a DHCP-Client*, similar to NetworkManager but lighter (and stripped off for now).
Very happy that it averages to 0.0% CPU on a 60secs test.
I worked very hard on this, if you like it I would love a star :)
Hi all,
I'm debugging what happened:
STATUS_ILLEGAL_INSTRUCTION on Windows 11 when doing a cargo run or release build.
I upgraded piper-rs to 0.2.0 and on one physical Windows 11 box I get attached.
Due to this commit:
https://codeberg.org/OneTalker/OneTalker/commit/66e61f614cd4cd1fb5ab00a28bdb04f3dca9b6d1
I think it's ort? Runs fine on Windows 11 vm, Linux and macOS. It might not crash for you
I'm going to open an issue with ort I think next as I was on ort 2 rc9.
Pc:
Processor Intel(R) Pentium(R) Gold G5500 CPU @ 3.80GHz (3.79 GHz)
Installed RAM 8.00 GB (7.83 GB usable)
Graphics card Intel(R) UHD Graphics 630 (128 MB)
System type 64-bit operating system, x64-based processor
Not an old CPU?
Anyone had this type of thing before?
Thanks.
the original crate was abandoned
ffmpeg-next seems abandoned
is ffmpeg-the-third the current thing or is there another?
I'm working on my first big async project that, among other things, spawns tasks for network handling network connections, has to evaluate them against "global" state, and spawn more tasks for its own network connections.
To accomplish this (and help maintain high performance), I find myself with various Arc<T> types; some are configuration, others are program state. I'm cloning them and passing them around all over.
And I'm starting to wonder: Is this a code smell? Or is this what asynchronous projects look like? If it is a code smell, are there good descriptions you've found of better patterns I should be using?
I really liked ChiliTomatoNoodles' C++ tutorials when I was younger and am looking for a linux version as linux is the future OS of most software in my opinion. Does a comparable set of courses exist to the ones found for free on his channel on youtube?
Thanks,
I could make the crossbow bolts infinitely reusable and have dullets single use but that would make it unbalanced with the guns. Any advice.
| Languages | Turnaround | Words | Subtotal | Service Fee | Tip | Tip Fee | Total | Cents Per Word |
|---|---|---|---|---|---|---|---|---|
| Simplified Chinese | 11 hours | 538 | $10.00 | $4.05 | $5.00 | $3.78 | $22.83 | 4.2 |
| Russian & German | 13 hours | 1076 | $35.00 | $5.43 | $0.00 | $0.00 | $40.43 | 3.8 |
| Japanese & Korean | 29 hours | 1076 | $55.00 | $6.53 | $8.25 | $3.95 | $73.73 | 6.9 |
| Brazilian Portuguese | 40 hours | 538 | $5.00 | $3.78 | $5.00 | $3.78 | $17.56 | 3.3 |
| TOTALS | 40 hours | 3228 | $105.00 | $19.79 | $18.25 | $11.51 | $154.55 | 4.8 |
Overview
In preparation for announcing our game and launching our Steam page, we used Fiverr to translate the text (short description & about this game) to zh-CN, ru, de, ja, ko, and pt-BR.
We made 4 orders for the 6 languages and had all of them back within 40 hours of the initial order. The advertised cost was $105.00 and we ended up paying $154.55. We averaged 4.8 cents per word which is a good value, I understand an agency would be more in the 10-20 cent range so this is very cheap.
Russian (and I assume German) were a bit suspicious and might just be AI. Evaluation of quality is tough.
The Good
The platform is easy to use. Interaction with the translators was very pleasant. Turnaround time and cost are tough to beat. Our Brazilian translator was really interested in the game and signed up for the mailing list which is nice, even if they are just hoping to get more business.
The Bad
Fiverr is such a scummy platform and I cannot recommend using them. For one, they trick you into spending a lot more than they advertise. Take our cheapest language, pt-BR. Five dollars is incredibly cheap. Then you see they're charging you almost $4 for a $5 transaction, but still 8.78 is a great price so you move forward. Once its done they basically bully you into tipping. The language is very strong saying that tipping is basically expected, not optional.
I am American and accustomed to tipping so I don't mind doing it, but the way they present it is very off-putting. Then, the minimum is 5.00. I also don't mind paying an extra $5 to the worker, they definitely deserve 10 bucks for the work IMO, but being bullied into a 100% tip feels bad. Then, to top it off they charge you 3.78 to send the worker a 5 dollar tip on work that was originally advertised at $5 total. At least drop the fee on the tip or charge something reasonable like 0.50 or 1.00
Then, if that weren't bad enough, they want you to leave two separate reviews. One is the public review where they encourage you to write good things, then they want you to submit a second private review? This ruins the whole point of the review system. Good workers should rise to the top by doing good work, and clients should see honest feedback from other clients.
Translation Quality
Evaluating the quality is so tough. I tried using AI, which said the translations were very good and definitely had a native speaker who knows the gaming space work on them, but then I had Chat GPT do a translation and had Gemini evaluate it and it said the same thing - definitely done by a human expert.
I have friends who speak Chinese and Russian and asked them to skim for anything that felt really unnatural. The Russian speaker said he thinks that one used AI (he pointed out "the fall of the king" translating to the king physically tripping) and I had suspicions about that translator already. Their communication felt very AI coded and they turned around two languages almost immediately.
Overall its really hard to judge quality. Either you ask for favors from friends which doesn't feel good, or you try to hire someone else to review, but then you need to trust them, so it doesn't solve the problem.
This is a big benefit of using an agency with a good reputation if you can afford it.
Should I use AI?
That is totally up to you. For us the reasons not to are:
1. We want to look as high quality as possible, I don't think AI is good enough yet.
2. Technically using AI for steam page text would require an AI disclosure in Steam. Since we have spent hundreds or thousands of hours creating art manually we don't want to do anything that could result in an AI disclosure, even if the chance of them knowing are low.
Bonus Tip
One really annoying thing about steam I discovered is that if you translate into brazilian portuguese or latin american spanish, and you get a visitor from spain or portugal, or even someone from latin america who chose "spanish" instead of "latin american spanish" in their browser settings, Steam will show them the english version of your store page.
We discovered this during testing and then copied our translations to the parent language so that we can cover spain and portugal, even if the dialect is a bit off.
I likely saw it on Itch but I can't find it anymore...
I'm sure somebody knows which pack I'm talking about.
I retrieved the GAF files that someone datamined from a game that shut down and I'm trying to open or view the data of the GAF files. I first attempted to open it through the GAF Converter, but opening up the GAF file, both with and without the accompanying PNG, did not load the animation. I've also tried using the Unity and Cocos2d-x GAF players, but the animation didn't appear or play when it was added to the scene. There is not a lot of information about GAF from forums or the official GAF website, so is there anyone who had experience with GAF files or file conversion? I wonder if it's possible to convert the GAF files to JSON or PNG spritesheets.
Hello everyone! I’ve had a fairly straightforward game idea I’ve been repeatedly going back to, and I’d like to actually start working toward creating it.
However, I’m getting really caught up on where to actually begin.
I’m taking heavy inspiration from the indie game Seedship by the developer John Ayliff / spacegoblingames. I want to incorporate a lot of the core mechanics (randomized events, randomly generated stats, very basic UI, turns/roles, basic point system, etc) to my game, but I have no idea where to start.
I know used a lot of JS for the majority of the more complicated background stuff and used twine for the story aspects. I’ve played around in twine a bit before so I think I could manage to figure that out, but JS is an alien language to me.
Any kind of direction or advice would be amazing!
Also, if you want to try seedship it’s on itch.io for free!
What was the first game you ever made when you started learning game development?
Did you try to make something completely original, or did you start by cloning a game you already knew?
My first attempt was an absolutely awful version of Duck Hunt. It barely worked, looked terrible, and probably broke every few minutes, but it was the first time I realised how satisfying it was to make something interactive.
Looking back, I actually think making a rough clone was a good starting point because the goal was clear: click/shoot the target, score points, repeat. It meant I could focus on learning the basics rather than trying to design a whole original game from scratch.
Curious what everyone else started with. Was your first game a platformer, Pong clone, Flappy Bird clone, RPG, shooter, or something completely strange? How over amibitious was it?
I have been looking everywhere for 2D 'Fantasy Themed' Monster and character illustration assets packs. Just skeletons, zombies, knights, etc... all just facing the camera for use as 'character' art in menus and such, and 'monster art' in battle (think first person Wizardry style RPG.)
I can barely find a single asset pack online that isn't made by AI. It's like the human made content has been completely flooded out of every major asset store; I literally cannot find human made placeholder art to use. All I can find are pages and pages and pages of poorly made, inconsistent, sloppy AI Assets made without attention or care; or very rarely an actually decently well put together AI pack... which I do not want to buy. And we're not quite ready to hire an illustrator yet.
I swear there used to be pages and pages of this type of asset on every major store when I was building games 10 years ago; and those weren't AI so I at least the content should still exist somewhere...
What can I do? Any recommendations? Is there any storefront that hasn't been completely poisoned?
Edit: Should have mentioned that we are not looking for pixel art. Which makes things a bit harder as that's about 90% of the "Indy" assets available in the first place.
I am in the beginning stages of developing a tabletop miniatures game and to be totally clear, I am far off from publishing anything. But I was sketching out some long term plans and realized that essentially every possible route reads to me as a little "icky," for lack of a better term, mostly as a result of my own personal beliefs that I don't need to get into detailed descriptions of here. There are a couple options as far as I can tell and I don't love either of them:
When I reflect on the type of experience I appreciate the most as a gamer and consumer, I am reminded of first edition X Wing in 2014. It was very easy to spend like $50 on your collection and potentially, you could never buy another miniature for that game again. It also made it easy to own collections for every faction in the game because if you weren't committed emotionally to any one of them, it was easy enough to pivot into anything else at any time.
This makes for a poor business model, though, because you would essentially only be able to make revenue as more people adopted the hobby. It would, on the other hand be the most ethical way that I can think of to sell a game, which is why I am leaning in this direction. My main problem is that I am just not versed in all of the potential business model directions you could go.
I've recently watched a video about a guy making his own EV roadster. Yes. An actual car: https://www.youtube.com/watch?v=Gc87YKzkbW0
While I was watching it, it occurred to me that he just did it. It took some years, but he just did it. He needed welds, so he learned how to weld and... welded the car. And that goes for everything. He made the car and learned along the way. He was learning welding before he welded the final piece, but that's just learning on a scrap metal, not on some big "learning project" per se. And it hit me that it's normal in other areas.
People build their first house, they build their first computer/server/network/nas. They build their first speakers. They build their ponds or aquariums. They take care of their first pet/child... Whereas in gamedev there is a prevalent guide to create something smaller first. Something that isn't a throwaway learning project/test, but an actual project. Just not the one you want to create.
Now, if you've never done anything and you just assume that you'll pull GTA6 clone out of Uranus - that's on you (and a small project might help you see it).
But if you do it like anything else with life (study what goes into it, what disciplines are there, what is their order, how long will it take you to learn them to big enough level to then craft what you'll need and how long will that take...), there is really no reason to make anything else than your target game.
Sure, you might create Pacman to learn great many things, but it's hardly a project on it's own. You can do that in the afternoon if you have some skill and if not... learning is what's taking the time. You can create Pacman in a day and your actual project in a year...
What's worse, on a not-dream-project, you won't learn the dream-project stuff, unless you craft it as a prototype (which arguably falls into working on your dream-project). You might do Pacman, Pinball, Arkanoid and you still didn't touch streaming, networking, saves, skills, etc. You'll feel like you know your stuff, you'll finally jump into your dream-project and discover that you're completely off the mark.
You might even need to unlearn some things. If your dream game is RTS and you start with smaller projects, you'll discover how many "normal" engine processes are completely wrong for an RTS, as they don't scale at all (AI unit with typical goals/pathfinding vs data oriented crowd simulation with flow fields).
The value of starting small is there, because even smaller project might take months, you have bigger chance of finishing it, etc. etc., I'm not disagreeing per se. But it's interesting to note that elsewhere, people just do the thing that they want to do. They learn how to use fiberglass and epoxy because they want to make their own car panels. They don't make a vase first.
And I just don't like the lack of nuance every time that this topic appears.
tl;dr: To make a game, you need to know how to do it and have enough time to finish the work. How you learn the know-how and how you estimate the scope is on you. Small game is just one of the paths toward it. And you might discover that making a dream-project motivates you to learn what you need to build it. It's still hard. So is making a car.
PS: My point isn't that "do small games" is a bad advice. I'm mainly wondering about how it's so prevalent especially in video games.
Hey! So I just went on parental leave and decided to use my spare time to build a game I'd been thinking about. This then turned into a persistent RTS 4X strategy game like CIV and Europa Universalis mixed with brainrot.
I wanted to make a RTS game entirely about capturing tiles on a huge generated map that would be fun to explore and also very simple game mechanics to understand. I created a tech tree because that's how I saw progression happening and then I realised I needed resources to feed that tech tree. Eventually I also found that I needed to have buildings that would draw on the resources so players would strive to get more resources not just to win the map but also to keep their empire healthy. And so on.
Now I have this idea that the player who wins the map will win the planet. So like CIV you can play on a planet sized map. But when you win you actually win this planet and the game zooms out. I had some ideas for what would happen next but there are some tricky bits to solve. First, the first player to win a map will be the only player with a planet. So kind of lonely how to solve this. Second, the first player to win will also likely be the first time that player plays on the map so what if they want to play on the map again?
I've pretty much given up hope on keeping the tile expansion mechanics once a player reaches space so any ideas on what the gameplay could be like are very welcome.
Just putting it out there that I have already pretty much locked to the idea that when a planet is won it produces the resources you were producing when you won. I found this would reward long map sessions where players grind to win the last tiles.
I know it’s certainly dependent on the type of game, but specifically for shooter-type games, what are the fairest ways to increase difficulty?
We’re working on a light-gun roguelite and as it plays into a horde survival, we are looking into adding more and more enemies. But as the gadgets/upgrades get better and better, the number of enemies certainly doesn’t seem to matter as much. On top of that, it starts to affect performance when there is too much on-screen.
Started tampering with enemy health values but then it feels unfair when enemies become too tanky and it leads to upgrades just flat-out *needing* to be damage upgrades, or you’re basically handicapping yourself. We have a few enemy types to bring variety into the mix, but it feels like once you have fought them a few times, you know exactly how to play against them and the difficulty factor falls off a bit.
What is the safest/most fun way to go in order to balance difficulty with fairness?
EDIT: I have shared this a couple times in the comments, and if it helps understand where my question is coming from, here is a link to the Steam page for our game;
I need advice and tips to build my environment Portfolio, i took 1 and half year i explore stuffs and 3d environments now it's time to build my portfolio can anyone give me tips or advice for that, (the problem is sculpting I can't do that actually), and i am thinking about exploring the Adobe substance designer software
I have released numerous games as a solo dev. I have various ideas for games, but lack time. Would it make sense to expand the team to add an additional person or just contract some work out instead?
Anyone encounter this scenario? Pros/Cons?
Hi everyone, I'm a completely amateur Android developer. So far, I have only built fully offline games without any servers.
I clearly state in the store description that it is a serverless, offline game—meaning that if you delete the app, your progress and purchases will be lost.
The reason I'm asking is because I'm currently on the fence about whether I should spend the time to integrate Google Play Games Services (GPGS) for cloud saves.
Do you think the lack of cloud saves significantly affects whether average users will even download and try the game in the first place? Or do players not mind it as long as they are just playing for free? Alternatively, could this ironically act as a benefit by preventing them from deleting the app?
I'd love to hear your thoughts and experiences on this. Thanks!
So I have my idea in mind for a particular game I'd like to create, but it's definitely more ambitious than any of the tiny projects I've worked on before (I've made a few tiny games and programs but nothing elaborate).
I'm very much a beginner programmer and even basic design patterns like state machines feel confusing to me at this stage. So my architecture in previous projects has always been a mess whenever it comes to adding new systems or features.
Because of this I've kind of been in limbo holding off on even starting the project because I want to get the whole project architecture set up right from day 1 so that it's not a mess and headache to try to add to later.
But I'm wondering if it'd be better to just hack away at it with my limited skillset and learn as I go, refactoring the code as I learn better ways of programming.
So I thought I'd ask for a show of hands - start with what I know and refactor as I go, or hold off until I feel I can get started with a much more solid base? What would you personally do?
Edit: Thanks guys. I think I'm just gonna go for it. Start with a smaller version of my idea and try to put it together as best I can. If it works, I can either improve upon it or start a new cleaner iteration. We'll see what happens! :)
Hello,
Here's the Steam page for my Survivors-like game: Hexforger (demo's available).
Description of the game
The game is a mix of Vampire Survivors and Magicka/Invoker in DOTA2.
While the orbs do auto-attack the player also have to cast spells in real time.
In each run, the player gets up to 10 spells he can upgrade.
Once in late game, the player gets really broken with spells that can wipe the whole screen.
There are things to unlock: spells, shrines, blessings, powerups, pickup. The game is also playable in up to 4 players coop.
Gohjoe (huge thanks to him by the way) made a video on the game that you can find here: Gohjoe's video.
Reality check
I'm making this post to ask you guys for a reality check. Where, based on what you can see of it, do you think the game stands in the genre ?
Think about the big past and upcoming names (VS, Megabonk, DRG, Warhammer Survivors) and smaller, but still hugely successful, ones you may have seen (Vital Shell, Grind Survivors, NIMRODS).
I know there are smaller less-known VS-like than those.
This is not a r/DestroyMyGame post. I'm asking for how you guys may feel the game can position itself quality-wise on the market.
Thanks in advance!
Hey everybody,
I‘m a solo dev working on my first commercial game, a small deckbuilding roguelike. I have a steampage (300 WL) but no demo out yet.
a few infos about status/content:
- character/classes: 66% done
-enemies: 33% done
- each run consists of 10 fights + i have 15 ascension levels
Planned and not done yet:
- controller support
- localisation (so far english only)
- game trailer
Struggling with my priorities a bit, to be honest. How much content would you add to a demo? Should I at least wait until i have a proper gametrailer? Thankful for any tips you have
Ps: i should add: game is published on itch and armorgames with ~40k plays, so i‘m quite confident that i found most of the bugs
I created my current capsule myself and it looks amateurish so I thought about contacting a studio. Their estimated price was €3-5k, which is a lot for my game that doesn't even have >1000 wishlists or a demo, yet. I read that freelancers charge considerably less with a minimum price of about €500 and in general somewhere between €800-1200.
But now I'm stuck...
On one hand, I believe that a good Steam capsule set is extremely important for making the game look professional and I shouldn't skimp on that. On the other hand, €3-5k is a lot of money and my experience with artists, prices, and and results is zero. On the third (?) hand, I don't want to spend €500-1000 for a capsule and then be disappointed by the result as I have seen some examples here on Reddit, where the final art really didn't seem worth the money to me.
Hence my question: How much did you pay? Are you happy with it or do you regret it?
Please don't suggest to try to make it better myself. I'm simply not talented enough and AI is also out of the question.
The game peaked at 888 concurrent players, now has been delisted, and the servers are shutting down on June 19, 2026
According to STJV French labor union, the game was greenlit in 2018 by Guillaume de Fondaumière, David Cage and Grégorie Diaconu, so before Quantic Dream was bought by NetEase, a Chinese publisher.
Hey everyone,
I put together a small audit sheet of free commercial-use game asset sources for indie developers.
Current v0.1 scope:
It focuses on:
I did this because "free asset list" posts are useful, but I often still have to check whether a pack is actually safe for commercial use, whether attribution is required, and whether the license is stated on the creator page or only implied by a directory tag.
Download/view: https://github.com/sj2025506282-creator/free-commercial-use-game-asset-audit-sheet
Feedback wanted:
Important: This sheet links to original creator pages. It does not redistribute third-party asset files.
Also important: This is not legal advice. Treat it as a curation/audit starting point and verify licenses again before shipping a commercial game.
| The issues has been closed as completed, with Robert Griesemer writing:
[link] [comments] |
I built MCPSense, an open source CLI tool that scans MCP (Model Context Protocol) server configs for security issues like command injection, credential leaks, and prompt injection. Written in Go, compiled with GoReleaser, distributed via GitHub Releases.
Within the first week, I had 40+ unique clones. Then I tested the install flow on a clean Windows machine and watched Windows Defender flag my binary as Trojan:Win32/Bearfoos.B!ml and silently delete it. My install script said "Installed successfully" but the binary was gone.
That means some of those 40 early users hit the same wall. No issues filed, no complaints. They just saw "Trojan detected" and moved on.
**The VirusTotal result says it all**
1 out of 71 security engines flagged it. Just Microsoft. Every other engine on the planet says clean.
https://www.virustotal.com/gui/file/8036516fddba500a3672e3a5a6ee17c3d8d9992cf4d36ddd1d8c0891627a3278
This is documented in microsoft/go#1255. Defender's ML model flags unsigned Go binaries because their compilation artifacts match certain heuristic patterns. It affects Hugo, Terraform, and dozens of other Go tools.
**What I did about it**
Submitted to Microsoft for false positive review
Applied for code signing through SignPath Foundation (free for OSS)
Published to npm — on Windows, `npm install -g mcpsense` compiles from source via `go install` instead of downloading a binary. Locally compiled binaries don't carry the Mark of the Web flag so Defender ignores them
Rewrote the PowerShell installer to try npm > go > binary download, and if Defender eats the binary, it detects that and shows clear instructions instead of lying about success
**Lesson for anyone shipping Go CLI tools to Windows users**
Binary downloads alone aren't enough. You need either code signing or a source-compilation fallback. I wish I'd known this before launch instead of after 40 people silently bounced.
**Install (the safe way)**
npm install -g mcpsense
mcpsense scan ./mcp.json
Source: https://github.com/fayzkk889/MCPSense
npm: https://www.npmjs.com/package/mcpsense
If you hit the Defender flag before, it's fixed now. I'd appreciate a second look.
I’ve been working on Wynglet for the last 6 months that I thought was ready to share in this forum right about now.
It began as a way to not have a dependency on paid services that auto-generate OpenGraph images, and also to own that entire pipeline (from authoring to rendering to caching). Then it morphed into a broader “companion tool” for all my static sites (mostly documentation sites for all my other projects).
Wynglet bundles the following tools into a single Go-built Apache-licensed binary:
Go (without CGo), PostgreSQL, Templ, HTMX, sqlc, Goose, and some custom TypeScript. (More in the README)
Happy to chat more about these, and offer my perspective about why I picked what I picked. And also why I didn’t pick what I didn’t pick! (like why not Sqlite, why not Alpine.js, why not html/template).
Packaging: The OpenGraph images feature requires Chrome Headless, so I’m building a container image that includes Chrome.
Repetitive slog attributes: Loving slog and the general philosophy of catching every error early and inline.
slog calls need to log the same info over and over, and I haven’t found a good way to avoid that repetition.Abuse Protection when your client is entirely static.
Thanks for reading this far, I appreciate your time & your feedback!
I'm working on a multi-step provisioning pipeline (5+ gRPC calls). The thing that bit me recently was: HTTP client gives up halfway, ctx is cancelled, and now I have half-allocated resources nobody's cleaning up.
My current approach is to run compensations on context.WithoutCancel(ctx) with a separate timeout. I packaged this up as a small library [link in comments] but I'm curious — how does everyone else handle this? Is there a pattern I'm missing?
| Cordium is a project that I have been working on for a long time and now I am open sourcing it under Apache 2.0. It was initially meant as a remote development environment (i.e. similar to GitHub Codespaces) for my main project, Octelium which is a FOSS ZTNA (i.e. alternative to products such as Teleport, Tailscale, Cloudflare Zero Trust, etc.), where users can access Octelium-protected resources via browser-based terminals without having to use CLIs and directly connecting from their own machines. Cordium grew over time from being a dev environment platform into a general-purpose sandbox platform that can be used for various use cases, among which:
The main differentiator here, compared to other dev environments and sandbox platforms, is that Cordium is that it automatically provides identity-based, secretless secure access to resources (e.g. APIs, SSH, databases, k8s, etc.) without having to inject credentials (e.g. API keys, SSH private keys, database passwords, etc.) into the sandbox. You can simply think of it as a sandbox+ZTNA baked-in where access to infrastructure is based on identity and policy-as-code rather than credentials. I have to clarify that while Cordium is now purely a FOSS project, that is not meant to be commercial or offer another SaaS/pro paid version or it's a low effort/toy/vibe-coded project. The development of the project started back in 2022 and it has been already used by a few organizations that use Octelium since last year. Happy to answer any questions. [link] [comments] |
| submitted by /u/LeopardThink6153 [link] [comments] |
I'm mostly a typescript developer but I'm learning Go for a backend api project I've been working on (node's pain points started showing up a lot lately). The api needs a *persistent* backend queue. If the worker or api goes down I want the jobs to be stored on disk so the worker and pick up where it left off and continue with the queue. Also, some of these jobs might be somewhat cpu intensive (non-LLM natural language processing mostly). What are my options for this in Go? In node I used bullmq but tbh didn't love it. River seems interesting but I worried it would slam my database on the queue and on the api at the same time (also so many features being locked behind pro is kinda :/).
I'm building a 2D game in my spare time, and at some point I needed audio that went further than what existing crates offered, so I started building my own engine. I studied music technology before I got into software engineering, so audio is an area I want to get right.
If you need something production-ready today, kira is by far more mature. AIRE is more for developers who want an audio engine that eventually understands the environment it's running in, not just one that plays files and applies effects, which in all honesty is what it is right now.
Some highlights:
What I'm actually working toward is geometry-aware audio using acoustic ray tracing for my game. The idea is to shoot rays from sound sources into the tile world, use the results to derive reverb parameters dynamically, and have the acoustics respond to the environment in real time. That's not there yet, so next up is basic 2D spatial audio, then an FDN reverb.