Friday, June 5, 2026
3937bb4a-ebc9-47df-a2d4-d91a5ecfeb45
| Summary | ⛅️ Clear until afternoon, returning overnight. |
|---|---|
| Temperature Range | 17°C to 27°C (62°F to 80°F) |
| Feels Like | Low: 61°F | High: 84°F |
| Humidity | 62% |
| Wind | 12 km/h (7 mph), Direction: 266° |
| Precipitation | Probability: 0%, Type: No precipitation expected |
| Sunrise / Sunset | 🌅 05:35 AM / 🌇 07:57 PM |
| Moon Phase | Waning Gibbous (66%) |
| Cloud Cover | 11% |
| Pressure | 1014.34 hPa |
| Dew Point | 58.69°F |
| Visibility | 6.17 miles |
Foreign Minister Constantinos Kombos will visit Kyrgyzstan, Uzbekistan and Tajikistan this week, after having accompanied President Nikos Christotoulides on his three-day trip to Kazakhstan.
“The objective of my tour in central Asia is to strengthen bilateral relations and expand Cyprus’ cooperation with a region of growing geostrategic importance,” he said.
All four states, alongside Turkmenistan, signed a joint declaration alongside the European Union last year precluding any recognition of the north as an independent country, with that declaration coming at a time when the Turkish Cypriot side, led by Ersin Tatar, advocated for a two-state solution to the Cyprus problem.
The joint declaration stated that all five countries “reaffirmed our strong commitment” to United Nations security council resolutions 541 and 550.
Resolution 541 said the security council “deplores the declaration of the Turkish Cypriot authorities of the purported secession of part of the Republic of Cyprus” while calling on UN member states not to recognise the north.
Resolution 550 said it “reiterates the call upon all states not to recognise the purported state of the ‘Turkish Republic of Northern Cyprus’, set up by secessionist acts, and calls upon them not to facilitate or in any way assist the aforesaid secessionist entity”.
That joint declaration provoked anger among Turkey’s opposition, with Ozgur Ozel, the then leader of the CHP who was last month removed from that role by a court ruling, saying that the joint declaration’s signing was evidence of a “collapse” of the country’s foreign policy.
He also claimed that the status of Cyprus was a key part of a deal brokered by Turkish President Recep Tayyip Erdogan and United States President Donald Trump to allow the arrest of Istanbul mayor Ekrem Imamoglu in March last year.
Meanwhile, Turkish Parliament speaker Numan Kurtulmus had said shortly after the signing of the joint declaration that the four Turkic states which signed the joint declaration – Kazakhstan, Kyrgyzstan, Turkmenistan, and Uzbekistan – were expected to “make up for it”.
The European Commission will soon present its evaluation report on Cyprus’ bid to join the Schengen area, European Commissioner for Internal Affairs and Migration Magnus Brunner said on Thursday.
Brunner made the comments following the Justice and Home Affairs Council meeting held in Luxembourg
However, the EU official stressed that “the decision of when and how Cyprus joins the Schengen area lies within the Council, not within the Commission.”
Responding to a question by the Cyprus News Agency, the Commissioner said Cyprus’ accession would be an important development for the European Union.
“The Cyprus accession to the Schengen area would be a significant step, of course, forward for the European Union as a whole. And our primary focus as the Commission is on ensuring that Cyprus meets the higher Schengen standards,” Brunner said.
“So therefore, we evaluated the situation in Cyprus and we will present the report soon,” he added.
Brunner was speaking alongside Justice Minister Costas Fytiris and Deputy Minister for Migration and International Protection Nicholas Ioannides, who co-chaired the Council meeting during the Cypriot Presidency of the Council of the EU.
The European Commission presented to EU ministers its annual State of Schengen Report, which includes an assessment of developments across the Schengen area and was expected to contain references to Cyprus’ progress towards its first formal Schengen evaluation.
Commenting on Cyprus’ preparations, Fytiris said the country has been making sustained efforts since joining the EU in 2004.
“Since 2004, Cyprus has been making special efforts,” he said, noting that the country had implemented the core elements of the ‘Schengen acquis’ with the support of the European Commission and EU agencies.
“We had 120 recommendations and, with their help, we undertook a tremendous effort,” he added.
Fytiris added that he believes that Cyprus will be ready by the end of 2026.
“The evaluation report, which we eagerly await, will vindicate our efforts and we will become a full member of the Schengen area,” he stressed.
The Schengen area is a system of open borders that encompass 29 European countries that have officially abolished border controls at their common borders. It mostly functions as a single jurisdiction under a common visa policy for international travel purposes.
Of the 27 EU member states, only two, Cyprus and Ireland, are not members of the Schengen Area. Cyprus is committed by treaty to join the system and aims to do so in 2026, although its participation has been complicated by the occupation of the north of the island by Turkey since 1974.
Conservation design works for the historic church of St George of the Greeks in Famagusta are now underway, according to an announcement by the United Nations Development Programme (UNDP).
Representatives from UNDP, the project’s design team, the bicommunal technical committee on cultural heritage and its advisory board recently held a joint site meeting to assess the monument’s conservation needs and establish priorities for the next phase of the design process.
Project managers, local stakeholders and members of the community also attended the meeting, which focused on identifying the requirements necessary for the preservation and future safeguarding of the landmark.
St George of the Greeks is one of the most significant medieval monuments in Famagusta and served as the cathedral of the city’s Orthodox community during the late Lusignan and Venetian periods. Built in the 14th century, it is considered one of the finest examples of the rare Franco-Byzantine architectural style, combining Gothic elements with traditional Byzantine design.
The church was constructed in the Greek quarter of medieval Famagusta, at a time when the city was one of the eastern Mediterranean’s most important trading centres. Historians believe it was built partly as a counterpart to the nearby Latin cathedral of St Nicholas, reflecting the prominence of the Orthodox community despite the island’s Frankish rulers.
The monument suffered extensive damage during the Ottoman siege of Famagusta in 1571, and traces of cannon fire can still be seen on the structure today.
The project is being carried out by the Technical Committee on Cultural Heritage, with funding from the European Union and implementation by the United Nations Development Programme.
A great deal of loose ends hang over the ‘Sandy’ affair, a prominent lawyer said on Thursday in the immediate aftermath of the police finding that the allegations published by journalist Makarios Drousiotis lacked supporting evidence.
Earlier this week the police held a news conference where they thoroughly debunked the allegations concerning the woman at the centre of the affair known as ‘Sandy’. Police chief Themistos Arnaoutis stated that an exhaustive investigation had determined the claims were unsupported by testimony, forensic findings or objective evidence.
The police also said they’ve been instructed by the attorney-general to examine whether criminal offences may have been committed in relation to “the creation, publication and public dissemination” of the material.
The matter centered on a trove of text messages with photographs, documents and audio files, originating from ‘Sandy’ and given to Drousiotis, who published them with accompanying commentary.
All individuals named in the allegations have denied wrongdoing. Some are suing Drousiotis for defamation.
‘Sandy’ alleged that while still a teenager she was raped by former supreme court judge Michalakis Christodoulou, and that he fathered three children with her.
She further claimed to have been paid ‘hush money’ not to disclose this information. The purported amount was in the hundreds of millions of euro.
‘Sandy’ also alleged the existence of a political-judicial cabal pulling the strings in Cyprus.
In addition to having found no corroboration for her claims, the police tracked a series of inconsistencies in the text messages suggesting they were fabricated.
Attorney Achilleas Emilianides told the Cyprus Mail that, overall, the ‘Sandy’ narrative has been shown to be fake.
For instance: her alleged sexual abuse, her trip to Nice, her trip to Germany, and her employment at the presidential palace.
Despite this, he stressed, many unanswered questions remain needing clarification.
For one, the police made no reference to ‘Sandy’s’ motives.
For another, how did ‘Sandy’ obtain the mobile phone numbers of judges and access to court documents.
Also, what happened to ‘User 6’ – the individual who contacted Nicos Clerides, who briefly acted as ‘Sandy’s’ attorney.
‘User 6’ contacted Clerides on a messaging app, threatening him to keep silent. Clerides has told police that at the time he got the impression – without being sure – that ‘User 6’ may be Christodoulou.
But the police on Wednesday stated unequivocally that Christodoulou was not ‘User 6’.
However, they did not say who it was, nor did they elaborate on this point.
“It’s obvious to me the police know more than what they’ve shared so far,” Emilianides commented.
As to possible criminal liability for the dissemination of false information, the lawyer did not want to speculate at this time.
But he did say that the criminal code includes such offences as forgery, circulation of forged documents, public harm, or providing false information to authorities.
There is also the question of people’s phone numbers published in the so-called ‘Sandy files’ without their consent – a violation of personal data laws.
For the time being, it’s hard to tell how the police will proceed – they’re keeping their cards close to their chest.
Nevertheless, Drousiotis – the disseminator of the information – faces a number of lawsuits from individuals named in the ‘Sandy files’.
Already former MEP Demetris Papadakis announced he will pursue legal action against the journalist.
According to Emilianides, courts in Cyprus typically award low damages in defamation cases.
Although plaintiffs have been known to seek damages up to €2 million, the courts usually award amounts two orders of magnitude lower.
The appeals court has upheld a prior judgement, finding warranted the sacking of a nurse for her failure to sterilise surgical instruments.
The case dates back to 2014, when the nurse admitted to not having sterilised the instruments, which she attributed to a lapse.
At the time she was employed at a Nicosia hospital. Her employer fired her over the incident.
The nurse then took recourse at a labour disputes court, arguing that her sacking was illegal as she was not given a proper hearing. She sought compensation on the grounds of unlawful termination of employment.
The labour disputes court rejected her arguments, finding that her firing was legitimate.
She then appealed the decision with the appeals court.
In its recent ruling, the appeals court found no fault with the prior decision of the labour disputes court.
It noted that the nurse’s omission “might have endangered the safety and health of patients”, noting that the nurse herself never disputed the facts of the case.
Regarding the severity of the employer’s action, the appeals court said the sacking may have been “harsh, but not disproportionate to the error committed”.
Animal culling aimed at containing the outbreak of foot-and-mouth disease is continuing as planned, Agriculture Minister Maria Panayiotou said on Thursday, while the cabinet has approved significantly tougher penalties for violations of animal health legislation.
Speaking after a cabinet meeting, Panayiotou said the culling programme was progressing normally following measures announced earlier this week, citing the case of a livestock farm in Pachna where infected animals are due to be put down.
Asked whether there had been attempts to prevent the culling from taking place, the minister said she had been informed by veterinary services in Limassol that operations were proceeding normally with police assistance.
“I have not been informed of any reaction so far, based on the information I have received,” she said.
The minister also announced that the cabinet had approved a proposal by the agriculture ministry to substantially increase penalties under the Animal Health Law.
Under the changes, the penalty for failing to comply with the law will increase from a maximum prison sentence of six months or a fine of €3,323 to up to five years in prison or a fine of €250,000.
Penalties relating to the movement of animals or animal products from areas not under the effective control of the Republic will rise from a maximum sentence of 12 months imprisonment or a fine of €8,309 to up to 10 years in prison or a fine of €250,000.
In addition, administrative fines imposed by the director of veterinary services in cases of non-compliance with national and EU legislation will increase from €5,000 to €100,000.
To date, and under the prior regulations, 27 administrative fines have been issued worth €91,540.
Meantime the police are investigating six cases involving serious violations.
Panayiotou also said the government remained in constant dialogue with all stakeholders in the halloumi sector through the Halloumi Monitoring Committee, stressing that its priorities were safeguarding the product’s protected designation of origin (PDO) status, maintaining its position as Cyprus’ leading agricultural export and ensuring the viability of all parties involved.
Meanwhile, veterinary authorities confirmed that all animals at the infected farm in Pachna are scheduled to be culled on Friday.
President of the Veterinary Association and member of the epidemiological team, Dr Demetris Epaminondas, stated that preparations had already begun, with burial sites for the animals having been opened on Thursday.
“The burial sites have been prepared and tomorrow all animals at the specific farm will be culled,” he said.
Epaminondas welcomed the cooperation shown by the farm owner, saying this was the approach veterinary authorities had sought from the outset in order to conclude the culling process and proceed with further testing.
“So far, no other positive case has been identified in the area,” he added, noting that farms located near the infected holding appear to have tested negative.
“With Famagusta and Paphos still free of cases and if this proves to be the only outbreak in Limassol, we hope we will remain clear, which would mean the disease has been brought under control,” he said.
Police have maintained a presence in the Pachna area since Thursday morning to ensure the smooth implementation of the operation.
Meanwhile the measures decided earlier this week included greater involvement of the police and the army in enforcing bio-security.
On Wednesday, a meeting was held to discuss this, featuring the ministers and permanent secretaries of the three involved ministries – agriculture, defence and justice. Also attending were the respective leaders of the police and the National Guard.
Trade unions on Thursday gave the thumbs-down to the pension reform bills being submitted by July, citing many loose ends, while the government was determined to press ahead regardless.
Labour Minister Marinos Mousiouttas held talks with the SEK and PEO syndicates who are part of the Labour Advisory Board – the top advisory body on labour relations and social policy consisting of representatives of the government, employers and trade unions.
Later, Mousiouttas – despite acknowledging the unions’ concerns – told media that the legislation relating to pension reform would be tabled to parliament before the House breaks for the summer recess.
The House will go into recess in mid-July.
“This way, we will have all the summer ahead of us to discuss it,” the minister said.
According to the timeline envisioned by the government, the bills would be submitted in July, informal discussions held during the summer between the government and the parties in parliament, and then the formal review of the bills would begin in the autumn when the House reconvenes.
The goal is for the pension reform legislation to be approved and go live by January 1, 2027.
But both the SEK and PEO unions had serious reservations. They stressed that the content of the reform should take precedence over any timeline.
The leaders of both syndicates said the overriding objective is to ensure adequate pensions in the long run, and pensions that are above the poverty line.
SEK’s Andreas Matsas disagreed with the government’s plan to discuss the various ‘pillars’ of pension reform separately, as one aspect affects the other.
There are two ‘pillars’, or tracks, to the reform. The first concerns state pensions; the second relates to provident funds, as well as the cash reserves of the Social Insurance Fund (SIF) and its investment policy.
On the SIF, the minister reiterated that the government will end the decades-long practice of borrowing from the fund.
Currently, the state owes some €12 billion to the SIF.
The idea is to gradually repay that sum in instalments. Repayment would depend on the size of the national debt each fiscal year, with instalments made whenever the national debt is below a certain percentage of GDP.
That percentage remains to be determined.
At the same time, the government plans to set up a body overseeing the investment of the surpluses of the SIF.
At the moment, the statutory pension system in Cyprus consists of two main components: a fixed (basic) pension and a proportional (supplementary) pension, calculated based on contributions.
As part of the coming reform, the government intends to combine the ‘small cheque’, the social pension and the basic pension into a single remittance.
The so-called ‘small’ cheque is an allowance given to low-income pensioners.
The social pension is a monthly grant given to persons aged 65 and over who are not entitled to a statutory pension from the SIF. It covers for example housewives who never worked.
The last major reform of the pension system took place in 1980, with additional changes introduced during 2012-2013 as part of Cyprus’ agreement with international lenders.
All-day schools will be covering more students as of September, with the addition of 60 more schools entering the programme, Education Minister Athena Michaelides said on Thursday.
The decision, taken at Thursday’s cabinet meeting, brings the number of schools in the programme to 378 in all districts, as part of the government’s commitment to gradually cover all schools by 2028.
The aim, Michaelides said, was to offer equal opportunities to all students and support their families, in both urban and rural areas, with expanded timetables till 3pm or 4pm.
Emphasis is being given to the qualitative upgrading of all-day schools as well as increasing their number.
The teachers employed are on the waiting list for appointment, and outsourcing has been abolished, the minister said.
She added that now all-day schools were not just a childcare unit, but a space for learning and creativity.
Information technology and English language are strengthened in the new school year curriculum and efforts have been made to link afternoon classes to main schooling so that they function as a unified educational structure.
Michaelides said the optional all-day schools were one of the most emblematic actions of the government.
The Supreme Court on Thursday reserved its decision on an application by lawyer Nikos Clerides seeking to annul a search warrant executed at his home, office and vehicle as part of the ‘Sandy’ investigation, while Clerides raised a questions about the police findings that concluded allegations levied in the case were fabricated.
The application to the Supreme Court challenges the legality of the search warrant obtained by police during their investigation into claims publicised by journalist Makarios Drousiotis concerning alleged corruption, abuse, blackmail and interference involving prominent figures in Cyprus.
Clerides’ counsel, Alexandros Clerides, argued that the case was not about what investigators did after the warrant was executed but whether the warrant itself had been lawfully issued and enforced.
The court said investigators had been instructed from the outset not to access private communications that may have been contained on seized devices and that no processing of the content had taken place.
Alexandros Clerides disputed the relevance of that argument, maintaining that the constitutional issue centred on the warrant itself and the police entry onto the premises.
Following the hearing, Alexandros Clerides said the court must examine the application on its merits despite the absence of an objection from the attorney-general.
The legal challenge comes a day after police-chief Themistos Arnaoutis presented the findings into allegations made public through reports connected to the woman known as ‘Sandy’.
Police concluded that no evidence supported the serious criminal allegations levelled against individuals named in the affair and stated that witness testimony, forensic examinations and documentary evidence contradicted the claims.
In response to the police findings, Nikos Clerides questioned key aspects of the investigation and argued that independent criminal investigators should have been appointed.
He claimed the messages he received from ‘Sandy’ dated from 2020 and 2021, whereas the mobile phone examined by investigators related to the period 2025 and 2026.
Clerides questioned why search warrants had not been obtained for devices allegedly used by ‘Sandy’ and the former Supreme Court judge named in the case during the earlier period.
He also challenged the significance of police findings concerning a message-generation application allegedly downloaded in October 2025.
“The only way to examine such a thorny issue was to appoint independent criminal investigators,” Clerides insisted.
He further questioned why police had not publicly identified an individual referred to as “user 6” in communications that allegedly contained threats against his life.
Clerides also argued that investigators had failed to establish a motive explaining why ‘Sandy’ would fabricate and circulate the material.
Police have said they have not yet reached conclusions regarding motive and that this aspect remains under examination.
The ‘Sandy’ affair emerged after Drousiotis published allegations involving an alleged nefarious cabal of political, judicial and financial figures operating under a ‘Rosicrucian brotherhood’.
Central to the claims were purported text messages, photographs, documents and audio recordings said to support accusations of corruption and abuse.
All individuals named in the allegations have denied wrongdoing.
President Nikos Christodoulides on Thursday congratulated Disy leader Annita Demetriou on her re-election for a second term as House president, saying that he wishes her “every success in the exercise of the high duties she undertakes”.
“The House of representatives is a key pillar of our democracy and the cooperation between the executive and legislative branches is of crucial importance for the progress of the country,” he said.
He added that “with respect to the distinct institutional roles, I look forward to a creative and productive cooperation, with the needs of society and the people’s expectations as a common reference point”.
“Our top priority remains the improvement of people’s everyday lives. Promoting policies which respond to the real issues facing society, implementing emblematic reforms, and maintaining the country’s upward trajectory require understanding, responsibility, and commitment to the public interest,” he said.
As such, he said, “the people expect results from all of us”.
“With institutional consistency and a spirit of cooperation, we can meet this responsibility and continue the effort for a stronger, more modern, and more effective Cyprus,” he said.
Heating and cooling account for around 70 per cent of household energy consumption in Cyprus, with cooling degree days reaching 610 per cent of the European average, according to a report published on Thursday by the European Commission’s Joint Research Centre.
The report found that Cyprus records around 81 per cent fewer heating degree days than the EU average, highlighting the island’s significantly lower heating needs and the resulting impact on building energy systems.
At the same time, around 15 per cent of households in Cyprus are unable to keep their homes adequately warm, while 8 per cent have overdue utility bills.
Renewable energy sources account for approximately 43 per cent of the total energy used for heating and cooling across all sectors.
The report also found that around 150,000 households, or 39 per cent of the total, continue to rely on diesel or gas boilers for heating.
The findings are based on publicly available data, including information from Eurostat and national statistical services.
According to the report, heat pumps in Cyprus are used primarily for cooling, with cooling demand exceeding heating demand by more than five times.
In terms of energy efficiency, replacing a diesel boiler with an electric heat pump could reduce energy consumption by approximately 83 per cent and carbon dioxide emissions by around 68 per cent.
However, the report notes that the actual benefits depend on several factors, including building insulation and user behaviour.
Average final energy consumption for heating in Cyprus is estimated at 22 kilowatt-hours per square metre annually.
The report also found that 57 per cent of buildings in Cyprus were constructed before 2000, before the introduction of stricter energy performance standards.
The EU has set a goal to double the annual rates of energy upgrading for buildings by the year 2030, focusing on reducing emissions and improving energy performance.
Heat pumps, the report said, are only competitive when the price of electricity is around three times higher than that of heating diesel.
The report also noted that subsidies covering up to 60 per cent of the cost of installing heat pumps are currently available in Cyprus.
Disy leader Annita Demetriou was on Thursday elected as House president for a second time, receiving the votes of 29 of the 56 members of the new parliament as it opened for the first time after last month’s election.
Under the new, simplified rules for the election of a House president, Demetriou would have required only a simple majority of votes from her peers in the election’s second round. However, having secured the support of two other parties, in addition to her own, she nonetheless attained the support of more than half of the sitting MPs.
She faced off against Akel leader Stefanos Stefanou in the second round, and received votes from her own party, from Diko, and from Direct Democracy Cyprus. Stefanou, who won the support of his own party and Alma, and received a total of 19 votes.
Elam abstained from the second round vote, with newly elected MP Marios Pelekanos having said before parliament opened that his party would support its leader Christos Christou in the first round of voting, and that it would refuse to support Demetriou or any Akel candidate in the second round.
In the election’s first round, Demetriou, Stefanou, Christou, and Diko leader Nicholas Papadopoulos had all stood as candidates, with only the two candidates who received the highest number of votes advancing to the second round.
In total, Demetriou received 21 votes and Stefanou received 19 votes in the first round, while Christou and Papadopoulos received eight votes each. Alma’s four MPs all endorsed Stefanou in the first round, Direct Democracy Cyprus’ MPs voted for Demetriou.
Diko had announced before the holding of Thursday’s election that it would support Demetriou if Papadopoulos did not advance to the second round.
Addressing parliament after securing her re-election, she thanked her fellow MPs for their support and praised both them and parliamentary staff for “the impeccable process” of staging the vote.
“Today’s vote is for me the highest honour and responsibility. As in my first term, and thus in my second, I promise to proceed with absolute faith in the constitution, the laws, and the rules and procedure of the house,” she said.
She added that she will endeavour “to ensure that every member of parliament has the right to be heard, to participate equally, and to contribute substantially to the work of parliament”.
“All of us here represent not only our own voters, but every person – those who voted for us and those who did not. This is what I will do, too, with equality, objectivity, and institutional responsibility. I will defend the institutions without discrimination, without different treatment between those who supported me and those who chose differently,” she said.
To this end, she said that “the presidency of the parliament is an institution” and that “it belongs to the republic”.
“My stance will be firm: respect for different opinions, strict adherence to procedure, always with composure and a sense of justice,” she said.
She then thanked her own party, saying that it “emerged” from May’s parliamentary election “more united and stronger”, and that this result gave the party “the impetus to successfully reclaim this important office of the state”.
Looking ahead, she promised to move forth with a “three-pronged strategy”, saying that she would “further upgrade the institution, prestige, and infrastructure” of parliamentary processes, and increase parliament’s “transparency” as well as the “participation, interaction, and level of information” available to the public.
Thirdly, she said that she will work for “a parliament which functions as an institution for the promotion of the country, as an equal interlocutor in the world, and as a lever for a fair resolution of the Cyprus problem”.
“The greatest danger to democracy is for people to see their own parliament as an entrenched, watertight institution, cut off from society, indifferent to their anxieties,” she said.
On this front, she said that “many times, the wrong message comes out: that we are concerned with our own aspirations or our own privileges while people outside are worried about the cost of living, housing, energy costs, pensions, health, education, and safety”.
“This is not true, and we must all prove it in practice. That is why parliamentarians must mainly be outside, next to the people, to listen, but also to explain. To speak to a tired, angry, and suspicious public,” she said.
She closed her speech by calling on her fellow MPs to “make a joint effort”, so as to “keep the prestige of parliament high, to work with clarity, mutual respect, and results, to prove that our institutions can inspire trust, to help Cyprus overcome challenges and move forward”.
Authorities are coordinating final works on a road in Konia that has caused disruption to residents and motorists for the past five months, with plans advancing to reopen the route as a two-way road once outstanding interventions are completed.
A meeting was held on Thursday at Paphos city hall involving representatives of the Paphos municipality, civil engineering officials and the project’s contractor to agree the project’s next phase.
According to the municipality, participants coordinated the temporary one-week closure of the road, allowing crews to complete the remaining works needed before the route can be reopened.
Residents and drivers using the area have faced major delays and inconvenience since construction began around five months ago.
Municipal authorities said the priority is to complete the project as quickly as possible and restore normal traffic flow.
Officials said all relevant services and the contractor have already coordinated their plans to ensure the remaining works proceed without delays and that the road can be delivered safely and fully operational.
Fire brigade chief Nikos Longinos on Thursday urged the public to avoid activities that could cause fires, as Cyprus enters peak summer firefighting season.
Speaking to the Cyprus News Agency, Longinos said preparations for the wildfire season had been underway for months, with efforts focused on addressing weaknesses identified in previous years and improving the state’s ability to respond rapidly to outbreaks.
“We are trying to fill possible gaps that existed in the past,” he said.
According to Longinos, 13 firefighting aircraft have been stationed across the island since April, including eight in Paphos, two in Akrotiri and three at Larnaca airport.
Surveillance cameras have also been installed in parts of Limassol, Paphos and Larnaca to assist with monitoring rural areas, while additional personnel have been deployed to countryside fire stations.
He said the forestry department had completed extensive firebreak clearing and inspections of water tanks and hydrants.
Communities have also received guidance on clearing areas to reduce the likelihood of fires spreading into residential zones.
Longinos said civil defence officers had begun conducting evacuation exercises for the first time, while the CY Alert warning system is now operational to support emergency evacuations.
He added that a new fire brigade operations centre, built at a cost of around €7 million, is fully operational.
Further upgrades are planned through the installation of artificial intelligence assisted monitoring systems.
Although the technology is not expected to be available this year, Longinos said it would eventually allow authorities to identify smoke and respond before blazes escalate.
The fire brigade has also expanded cooperation with volunteer organisations, training more than 400 volunteers and maintaining regular contact with 11 registered volunteer groups.
“All these actions are being taken so that if a fire starts, we can reduce the chances of it seriously developing,” Longinos said.
BirdLife Cyprus is organising a blood donation event in memory of its late director, Martin Hellicar, they said on Thursday.
The NGO described Hellicar as a person of excellence, empathy and unwavering commitment to nature and humanity.
The event will take place at BirdLife Cyprus’ offices in Kato Deftera, Nicosia, on June 17 from 5pm to 7pm, in collaboration with the ministry of health’s blood centre.
People aged 17 to 65 can donate blood, with parental consent required for 17-year-olds. Refreshments will be provided.
Organisers are seeking at least 30 participants and have invited interested donors to register through an online expression of interest form.
The initiative aims to honour Hellicar’s memory and the values he championed throughout his life.
Byzantine, Ottoman and medieval histories unite in the centre of Larnaca, where within a five-minute walk it is possible to take in 1,000 years of history reflected in the landmarks of the Church of Ayios Lazarus, the Djami Kebir Mosque and the Larnaca Medieval Fort.
Standing only metres apart, these monuments reflect successive periods of Cyprus history, revealing how different religious and cultural communities shaped the city over centuries of coexistence. Although the distance between the three sites is small, the journey tells a far broader story about Cyprus’ layered past and the ways history remains embedded in the urban landscape.
This short route inspired artist Ioanna Georgiou to encourage viewers to reconsider what an ordinary walk through the city might represent. Her piece, A Five Minute Walk is currently showing at the Cyprus High Commission in London as part of an ongoing exhibition called The Island III.
The idea for her work came from a simple moment of looking. Standing on Finikoudes Beach and facing towards the town centre, Georgiou noticed that several of Larnaca’s most important monuments appear within the same field of vision.
“It first occurred to me while I was standing there,” she says. “In the same frame, I could see the Church of Ayios Lazarus, the Medieval fort and the Djami Kebir mosque. They were strikingly close together.”
The church, mosque and fort seemed almost in dialogue with one another. What first appeared as coincidence became, for the artist, a kind of compressed history of the island.
“In short, from the Church of Ayios Lazarus to the Kebir Mosque to Larnaca Medieval Fort is a five-minute walk,” she explains. “The route takes five minutes to walk, but it took 1,000 years to be developed.”
This observation became the foundation for her work.
In its physical form, A Five-Minute Walk is made on found wood, shaped in proportion to a map of the route. Acrylic paint forms intersecting paths resembling a living mazes.
“The acrylic on card shows colourful labyrinths intersecting one another,” Georgiou says. “The vibrancy of the colour represents this lively town, and the way our paths intersect or sometimes interrupt one another.”
The frame, also made from found wood, responds to its environment. It shifts slightly with changes in temperature and weather. “Just like everything else,” adds Georgiou.
Although rooted in Larnaca, Georgiou’s perspective is shaped by time spent outside Cyprus. She visits frequently and maintains close family ties but also observes the city from a distance that has changed how she sees it.
“I experience Larnaca possibly with more appreciation and love than if I had to live in it all the time,” she says. “The beauty of its clean sea, and the town centre adjacent to the sandiest of beaches is a gift.”
She speaks warmly of places including Ancient Kition, Hala Sultan Tekke and the Larnaca Salt Lake, describing them as “valuable destinations in their own right”.
Living abroad, she suggests, can deepen attachment to home while sharpening awareness of what is often overlooked. Her time in Cyprus is also influenced by encounters not possible earlier in her life on the island.
“I met the first Turkish speaking Cypriot when I was already in my mid-twenties, while in England for my postgraduate studies,” she says. “We had been born a few kilometres apart yet could not have met on the island we both call home.”
One of the themes that emerges in Georgiou’s reflections is how Cyprus is perceived from outside.
“It is even difficult to be asked ‘Where are you from?’” she says. “Once you say ‘Cyprus’, the next question would be ‘Greek or Turkish side?’”
For her, this framing overlooks the complexity of Cyprus as an independent country with a mixed cultural and linguistic history. It also reduces lived experience into simplified categories that do not reflect everyday reality.
“At times it can feel as though other replies risk normalising the division,” she says, “something many Cypriots have experienced as deeply painful.”
How diverse communities live together is also a theme running through her work. For Georgiou, this is a felt experience shaped by daily routines, shared spaces and ordinary freedoms.
“Coexistence means having the space to enjoy life, be productive and creative, regardless of your faith or language,” she says, recalling how her time in London shaped this view. “You experience it through your workplace, colleagues, neighbours, or those beside you in the theatre.”
She envisions the same practical future for Cyprus. “Coexistence means queuing at the same supermarket,” she says. “It means knowing boundaries without borders.”
Though geographically small, the route in A Five-Minute Walk links personal memory, history and present experience into a single gesture. “Coexistence is simpler than we think,” Georgiou concludes, “if we genuinely want it to succeed.”
A Five Minute Walk is currently part of the exhibition The Island III ongoing at the Cyprus High Commission in London. The exhibition explores Cyprus as a link between East and West. Work of 19 Cypriot artists remains on show until the end of June
Turkish Cypriot leader Tufan Erhurman on Thursday said that the Turkish Cypriots “want to connect with the world, not be isolated from it”, as a rift between him and Turkish Cypriot ‘foreign minister’ Tahsin Ertugruloglu over the Cyprus problem continues.
“This people wants to connect with the world, not be isolated from it. This people wants equality. This people wants their children to have all the rights that children in developed countries have, equally, and this people knows that this country has the competent personnel to pave the way for this,” he wrote in a post on social media.
He added that “these things I have mentioned, and much more, form a fundamental vision shared by a very broad segment of society, regardless of their political views, affiliation with different political parties, or voting for different parties”.
To this end, he said that “the vision is clear” and that “the path is defined”, and that the Turkish Cypriots are “neither at the end, nor at the beginning” of that path.
“What is important is to work day and night, without getting caught up in the hustle and bustle of daily life, petty squabbles, personal ambitions, the conformism of ‘nothing good will come of this country or this people’, or crude populism,” he said.
He added that this “work” must also be carried out “without paying attention to those who do not care about the concerns of this people and their children, and those who try to position themselves above the people or by ignoring the shared vision of these people”.
Additionally, he said, it must be carried out “without deviating even an inch from the goal set and agreed upon by the people”, and “without getting angry at the immature, provocative shouts and cries from all sides”.
“Seeing and knowing the facts, we will continue to walk together with seriousness, patience, composure, and determination,” he said.
Ertugruloglu had issued statements on both Tuesday and Wednesday criticising Erhurman’s stance on the Cyprus problem, with the second of the two statements also criticising the fact that Erhurman had not responded to the first.
“Erhurman is silent not because he disregards our questions, but because he has no sincere answer to give,” he said, before adding, “let him answer if he can”.
On Tuesday, Ertugruloglu had demanded to know whether Erhurman subscribes to “the thesis of Turkish occupation and invasion, which forms the basis of Greek Cypriot politics”, and accused him of “surrender” in acquiescing to negotiate without first securing international recognition for the north as an independent state.
He also accused Erhurman of being “diametrically opposed to Ankara’s position,” given his advocacy for a federal solution to the Cyprus problem with a rotating presidency.
Ukrainian Foreign Minister Andrii Sybiha on Thursday thanked Cyprus for its efforts to advance the process of his country’s accession to the European Union, with it looking increasingly likely that the bloc could give the green light for accession negotiations to begin as early as this month.
“Thank you to the Cyprus presidency for its leadership in advancing Ukraine’s EU accession process,” he wrote in a post on social media, with the island having held the Council of the EU’s rotating presidency since the beginning of the year.
He also thanked “all EU member states, the European Commission, and EU institutions for their unwavering support”, before making special reference to Hungary, which looks likely to drop its veto on the opening of negotiations with Ukraine after reaching an agreement regarding the rights of ethnic Hungarians living in the country’s west.
“I also appreciate Hungary’s constructive engagement. We are opening a new chapter in Ukraine-Hungary relations – one built on respect, trust, and our shared European future. Ukraine is moving forward,” he said.
Hungarian Prime Minister Peter Magyar had on Wednesday announced that a “comprehensive agreement” had been reached, “expanding the linguistic, educational, cultural, and political rights of the more than 100,000 members of the Hungarian minority in Transcarpathia”.
He added that the Ukrainian government “has committed to incorporating the agreed measures into the legal system in the near future”, and that “as a result, the Hungarian minority will enjoy significantly broader educational, cultural, linguistic, and political rights than before”.
“These commitments will also be included in Ukraine’s action plan submitted to the European Union. If this happens, the Hungarian government will support the opening of Ukraine’s first accession cluster,” he said.
The news comes after Cypriot European Affairs Deputy Minister Marilena Raouna had told the Cyprus Mail that she was “cautiously optimistic” that the EU’s 27 member states could reach an agreement to commence accession negotiations with both Ukraine and Moldova this month.
“Enlargement remains one of the key priorities of the Cyprus presidency of the Council of the EU and we are working hard to this end. Nothing has been concluded yet, but we are cautiously optimistic that at the next general affairs council, we may reach an agreement to open ‘cluster one’,” she said.
An agreement to open negotiations for a candidate country to accede to the EU requires unanimity among member states, with all 27 therefore required to agree if the question is put to them at the next general affairs council in Brussels on June 16.
Negotiations are divided into six thematic clusters – “fundamentals”, “internal market”, “competitiveness and inclusive growth”, “green agenda and sustainable connectivity”, “resources, agriculture, and cohesion”, and “external relations”.
The first cluster, which may be opened for Moldova and Ukraine next month, comprises seven chapters – “judiciary and fundamental rights”, “justice, freedom, and security”, “public procurement”, “statistics”, “financial control”, “economic criteria”, “functioning of democratic institutions”, and “public administration reform”.
Per EU law, it is the last negotiating cluster to be closed, despite being the first to be opened.
In total, there are 33 chapters across the seven clusters, with current candidate member states finding themselves at various stages of progress in negotiations.
Montenegro and Albania have both opened all 33 chapters, with Montenegro having completed 14 and Albania yet to complete any, while Serbia has opened 22 chapters and competed two, and Turkey has opened 16 chapters and completed one, though negotiations with the latter have been frozen since 2016.
It has now been almost 13 years since Croatia, the last country to join the EU, did so in 2013, and in the intervening years, one member state, the United Kingdom, has left the bloc.
This period between new member states’ joining is the longest since the 20 and a half years between the creation of the European Coal and Steel Community in 1952 and the accession of Denmark, Ireland and the UK to the European Communities in 1973.
A fire that broke out in the Pentakomo area of Limassol district was brought under control on Thursday, according to the fire service.
The blaze was contained at around 2.33pm and preliminary examinations indicate it started at the edge of the Nicosia–Limassol motorway.
Five fire engines from vasiliko and limassol fire stations responded to the incident, assisted by the forestry department, the game and fauna service and a private tractor.
The fire burned approximately six acres of dry grass, wild vegetation, trees and discarded materials.
Firefighters also succeeded in protecting a nearby detached house from the flames.
Argyroupoleos avenue was opened to traffic on Thursday, creating a new road link between Tseriou avenue and the GSP roundabout, with direct access to the Nicosia to Limassol motorway.
Officials said the project is expected to improve road safety and help ease congestion on some of the capital’s busiest routes.
Transport Minister Alexis Vafeades joined Lakatamia mayor Photoula Hadjipapa and Strovolos mayor Stavros Stavrinides for the opening of the avenue, which has been under construction for several years.
Speaking at the event, Vafeades described the project as a significant investment in the capital’s transport infrastructure.
“This is a project that will help incredibly in upgrading road safety and certainly provides our citizens with much more value than the money we have invested in this project,” he said.
According to the minister, the project cost approximately €26 million.
He added that police had approved the opening of the road after determining it was safe for public use.
Vafeades said authorities have yet to calculate how much travel time motorists may save but explained that data will be collected from vehicles using the new route to assess its impact on traffic flows across the city.
“We expect that traffic will be evenly distributed across these three axes, those being Spyrou Kyprianou avenue, the highway and now this road,” he said.
While traffic has now been allowed onto the avenue, Vafeades said some works remain outstanding, including sections of pavements and cycle paths.
The minister conceded that the project exceeded its original timetable by several months.
He said contractual provisions relating to delays are being applied and that any additional costs are still being assessed by the public works department.
Hadjipapa acknowledged that the project’s final cost exceeded initial estimates but stressed its importance for the wider area.
“We have had a goal for the past five years that this road should be built,” she said, adding that the new connection would improve access between Lakatamia and the motorway network while contributing to traffic relief.
Stavrinides commended the opening as “an important day” for Strovolos, saying the new route would help redistribute traffic currently concentrated on neighbouring roads and bolster the wider road network serving Nicosia.
When a GitHub Actions job fails, Copilot Pro, Pro+, and Max subscribers can now ask Copilot cloud agent to fix it in one click.
Click the Fix with Copilot button on the workflow run logs page, and Copilot will investigate the failure, push a fix to your branch, and tag you for review when it’s done. It does all this from its own cloud-based development environment.
This means you can hand off simple but time-consuming work to Copilot (e.g., fixing tests or correcting linter failures) and stay focused on what you actually want to build.
To learn more, see “Starting GitHub Copilot sessions” in the GitHub docs.
The post Fix with Copilot for failing Actions now in Pro, Pro+, and Max appeared first on The GitHub Blog.
Copilot Pro, Pro+, and Max users can now programmatically start and track Copilot cloud agent tasks with the Agent tasks REST API, available in public preview.
Copilot cloud agent works in the background in its own development environment, where it can make and validate code changes, then open a pull request.
The API makes it easy to weave Copilot cloud agent into custom automations. For example, you could:
Once you’ve started a task, you can also track progress through the API. The API supports authentication with personal access tokens (classic and fine-grained) and OAuth tokens.
To learn more, head to the agent tasks REST API documentation.
The post Agent tasks REST API now available for Copilot Pro, Pro+, and Max appeared first on The GitHub Blog.
GitHub Copilot now supports larger context windows and configurable reasoning levels to help you tackle deeper, more complex work.
A one-million-token context window means users can now work across larger codebases, longer documents, and complex multi-file projects without losing context. This capability is available now in VS Code, Copilot CLI, and the GitHub Copilot app, and is expanding to more surfaces soon.
Configurable reasoning levels let you dial in the right balance of speed and depth and unlock extended thinking for your hardest architectural and debugging challenges. This capability is available in VS Code, Copilot CLI, and the GitHub Copilot app, and is expanding to more surfaces soon.
Choosing a larger context window or higher reasoning level will consume more AI credits per interaction. We recommend using the default context window and reasoning level for everyday tasks, and reaching for extended context or higher reasoning when you’re tackling complex, multi-file problems.
Select one of the supported models in VS Code, Copilot CLI or the GitHub Copilot app to try these new capabilities today. To get more information about either of these features, review our model documentation.
Join the discussion in GitHub Community.
The post Larger context windows and configurable reasoning levels for GitHub Copilot appeared first on The GitHub Blog.
May 2026 brought sharper tooling for planning, reviewing, and managing your work with GitHub Copilot in Visual Studio 2026.
Here’s what’s new for all GitHub Copilot users in Visual Studio 2026. Check the Insiders channel for the latest:
.copilot/plans/plan-{title}.md. When you’re ready, click Implement plan to hand it off to Agent mode.Download Visual Studio 2026 to experience all the new Copilot features today. To learn more about what’s new, check out the Visual Studio blog and release notes.
Stay up to date on the latest Copilot features by following the Visual Studio blog, where you’ll find roadmap updates and opportunities to share feedback.
For the latest news, release notes, videos, and community conversations, visit the Visual Studio Hub, your central resource for all things Visual Studio.
The post GitHub Copilot in Visual Studio — May update appeared first on The GitHub Blog.
Enterprise Teams is now generally available on GitHub Enterprise Cloud. First announced in public preview last September, enterprise teams let enterprise admins define a group of users once at the enterprise account and assign that group to roles across every organization in the enterprise. There’s no longer a need to recreate or reconcile the same team in each org.
You can now:
From your enterprise account, open the People tab, select Enterprise teams in the sidebar, and click Create enterprise team.
To learn more, see Creating enterprise teams and the Enterprise Teams REST API.
If you have feedback about these new features, join us on this discussion.
The post Enterprise Teams is now generally available appeared first on The GitHub Blog.
GitHub Copilot Chat now provides richer context and new capabilities when you’re working with diffs and pull requests on github.com. This feature was previously in public preview and is now generally available to anyone with a Copilot license.
You can view your conversation directly alongside your conversation with Copilot. This allows for comments and inline edits without needing to toggle between the pull request and your chat window.
This experience is powered by new abilities for pull request understanding, review, and summary. These abilities add relevant pull request and repository context to chat any time you ask about a diff or pull request. We’ve improved the performance of this feature so you get quality answers to your questions faster.
You can access this functionality by clicking the Ask about this diff button on the top of each diff, the Copilot button in the top navigation bar, or by highlighting the line of code you want to ask about and navigating to Copilot in the dropdown.
The post Copilot Chat brings richer context to pull requests appeared first on The GitHub Blog.
I absolutely love speedruns and I'm thinking of organizing a prize challenge for one of my games during Steam Next Fest.
I'm a bit wary of cheating and scale though. If there are a lot of submissions, it will be very difficult to ensure that there are no splices, macros, etc.
Has anyone here organized such events? And even if you haven't, what do you think?
| Phillip Koskinas is the current director (and OG founder) of anti-cheat and Vanguard at Riot Games. Before that, he built and sold cheats. He was making around $120k a month as a student creating cheats for Gunz: The Duel, and Riot first reached out after he publicly broke League of Legends. This talk walks through that whole arc: how he got in, how cheating actually works under the hood, and what Riot does to make cheaters lives miserable. [link] [comments] |
The response to my last post about halving our GPU load on the Steam Deck was more than I hoped for, so I wanted to share a quick follow-up!
my last post talked about the GPU breakthroughs we made recently, today I want to pull back the curtain on a massive memory audit we did a few weeks ago (around May 14th based on my phones screenshots) for our game Spooker.
Yesterday’s post had a bit of a spoiler—showing our current memory sitting comfy at 2.4GB VRAM and 6.4GB RAM. But back in mid-May, things were way worse. We were bloated at 4.3GB VRAM and 7.9GB RAM.
Here is how we dug ourselves out of that hole.
Unlike a traditional PC setup, the Steam Deck uses a Unified Memory Architecture.
The TL;DR: The GPU does not have its own physical, dedicated VRAM pool. Instead, the CPU and GPU dynamically share a single 16GB pool of fast RAM on the fly.
Because they share the same physical highway, heavy RAM usage from the CPU can directly starve the GPU, causing massive performance drops and stuttering. If you want a smooth 60fps on the Deck, you absolutely have to respect the shared pool.
The number one rule of memory profiling is always: "Profile on the target hardware." I broke it. Pulling up the Unity Editor Profiler first just to see if there were any massive, obvious, low-hanging visual wins we could catch quickly.
and oh boy, did we find them
To solve the texture weight without sacrificing PC quality, we turned on Unity’s Mipmap Streaming.
I did a quick t:texture search in our main asset directories, selected our heavy assets, and enabled Generate Mipmaps (assigning priorities between 0 and 10 based on how gameplay-critical they were). Then, I hopped into Project Settings, enabled Mipmap Streaming, and set the streaming budget to 2048.
If your mental model of mipmaps is just "LODs for textures, use the small version when it’s far away," you're completely right—but normally, Unity still forces the entire file (including the massive 2K original) into memory anyway, just in case you walk closer to it
Turning on Mipmap Streaming changes it so Unity only actually loads the specific low-res or high-res slice that the camera needs at that exact second. If a pool table is right in your face, you get the crisp 2K texture; if it's far away, Unity literally doesn't load the heavy data into memory at all.
It then caches those textures on the GPU so it doesn't have to constantly pull them from the disk, which is an absolute lifesaver for keeping the Steam Deck's shared RAM pool from choking on high-res assets you can't even see.
In summary, this allows Unity to calculate exactly what resolution mipmap is actually needed based on the camera distance, streaming in lower resolutions when things are far away or memory is tight. It caches these on the GPU to save disk-to-CPU cycles—a massive win for mobile/handheld chipsets.
Next up was that horrific 1.47GB particle leak.
For context, our architecture is pretty clean (at least subjectively): we use a single bootup scene running VContainer, registering cross-scene dependencies as POCOs. Each individual game scene loads as a child lifetime scope.
So why was memory flooded at boot?
Our game features a ton of different pool tables (think mini-golf layouts, but for pool). When checking the environment collection, I noticed that loading into a new table changed absolutely nothing in memory.
The Culprit: Our ScriptableObjects used direct GameObject prefab references to define the tables. Because those ScriptableObjects were loaded, every single table prefab (and all their associated particle systems, meshes, and textures) was pinned in memory at all times.
It was time for an emergency Addressables refactor.
First, we deleted our old Resources folder and moved everything to a dedicated game data folder. (Friendly reminder: Anything in a Resources folder is locked into memory forever, and Unity has been begging us to stop using it for years). There wasn't much there, but anything in this folder is a bad idea.
Next, we swapped the raw GameObject serialized fields in our ScriptableObjects to AssetReferenceGameObject. This keeps the nice drag-and-drop workflow in the Inspector but stops Unity from forcing the asset into memory automatically.
Because Addressables load asynchronously, instantiating them on the spot can cause a micro-stutter while the asset loads from disk. To keep things seamless for the player, we wrote a Prewarming System to load the next table in the background behind a transition screen.
Here is a simplified look at how we handle the prewarming, releasing, and async instantiation via UniTask:
public AsyncOperationHandle<GameObject> AddWarmedTable(ISpookerNode nodeData) { if (warmedTables.TryGetValue(nodeData, out var table)) { return table; } if (nodeData.Prefab is not AssetReferenceGameObject prefab) { return default; } var loader = prefab.LoadAssetAsync(); warmedTables.TryAdd(nodeData, loader); return loader; } public void RemoveWarmedTable(ISpookerNode nodeData) { if (!warmedTables.TryGetValue(nodeData, out var loader)) { return; } if (loader.IsValid()) { loader.Release(); } warmedTables.Remove(nodeData); } public void UnloadWarmedTables() { foreach (var loader in warmedTables.Values) { if (loader.IsValid()) { loader.Release(); } } warmedTables.Clear(); } async UniTask LoadNode(AsyncOperationHandle<GameObject> handle, ISpookerNode node) { while (!handle.IsDone && !isDisposed) { await UniTask.Yield(); } if (isDisposed) { return; } var previous = loaded; var assetRef = node.Prefab; Addressables.InstantiateAsync(assetRef).Completed += (resultHandle) => { loaded = resultHandle.Result; loaded.transform.position = Vector3.zero; loaded.transform.rotation = Quaternion.identity; if (previous != null) { Addressables.ReleaseInstance(previous); } Loaded.Invoke(loaded.GetComponent<SpookerNodeBehaviour>()); }; } By decoupling our prefabs from our data containers, we went from having hundreds of unneeded objects living in memory to only having the single active table loaded.
The results were immediate:
From the player's perspective, the transition is completely unnoticeable, but the hardware is breathing a massive sigh of relief.
If you're building a content-heavy game, keep an eye on your ScriptableObject references!
The new version was in Steam beta for some time, and today it went live. Now only huge games are allowed in the list. The common advice to get 7k wishlists to get into PU is now obsolete, but hey we got the capybara tag.
They did add a new "personal calendar" which is a step in the right direction, but the tags are random and inconsistent so I doubt it will work properly unless there's a complete tag revamp.
Edit: the calendar could actually be really good because it shows games over the span of several weeks and not just 1-2 days before release. So, I will hold back my initial judgement and monitor the new indie releases.
Hi guys,
I'm pretty new in the dev world of games and sorts, I've just recently started to learn Unity programming, and it's really really fun. But my biggest dream is actually to compose beautiful soundtracks for games. Ever since I was a kid I've felt connected to music like nothing in the world, so i've turned my life around after being fired from my old lab job, and I've decided to give it a shot. So, if you feel like a critic, I would gladly accept your feedback in my work.
You can find it here:
hernanveliz - itch.io
I'm not asking anyone for jobs or anything like that, I just need some good honest comments about my work so far, so I can continue to perfect my craft.
| We have found that anyone who plays our game mentions that it has more depth than it looks. A few ideas we've had are adding an "accolades" section to the start of the trailer, to show what people think, or to add text to the screenshots to explain more of the game, but are keen to know what others think. Thanks for your time :) [link] [comments] |
| We recently hosted Peter Simon (an Electronic Arts QA engineer) at our University in Dayton, OH, who gave some awesome advice about his career progression, how he broke into games (and how you can too), what it's like at EA, and how QA engineering works at scale! [link] [comments] |
Recently, I released free DLC for my game, Paper Perjury. While plenty of postmortems are written after the release of a game, not many talk about releasing DLC (both free and paid). So today, I want to share.
In terms of "$ per day", according to Steam's discount history, the 2-week sale lands about in the middle. Not the highest and not the lowest.
To make it easy, I will call this sale May 21–June 4. The previous sale was April 7–April 21. The sale before that is Feb 22-Mar 8.
April 7–April 21 sales were about 33% worse, so the DLC did boost sales... if we ignore the lowering of pricing I did between April 7–April 21 and May 21-June 4.
Steam updated how regional pricing is handled on the backend of Steam. In order to better reflect currency differences, outside the USD and Euro, every other currency had a price decrease. Paper Perjury is English only and, given the 200,000 words in it, has not been officially localized in any other language. And before anyone asks, no, I won't use AI for localization. Because it's only in English, a lot of people outside the United States or Europe have bought a copy.
As of right now, 55% of all sales are from the United States, followed by the United Kingdom at 8%. So I hoped a lower price point will encourage overseas sales.
From Feb 22 to March 8, 56% of sales came from the United States. Sales happened in 43 different countries.
From May 2 to June 4, 46% of sales came from the United States. Sales happened in 65 different countries.
By lowering the base price in the majority of countries, a larger number of sales came from around the world. The United States did make up the largest share, but the higher sales was worth it in the long run.
My only conclusion is that Paper Perjury's old price was simply too high due to Steam's old currency conversion system. While there were sales from around the world before, it was much more limited than before.
It does make me wonder what would happen if I lowered the base price in the United States. I suppose it's impossible to say. Part of why I made the DLC free was to help it feel like the base price was more justified.
Another thing I noticed is that the amount of reviews that Steam has flagged as non-English went up. While I expected higher sales to lead to more reviews, rarely do those reviews come from non-English players. I can only assume that the lower base price combined with the 50% sale converted enough people to like leaving reviews.
All the reviews have been positive, so that helps.
But aside from the overseas sales, the free DLC didn't attract sales to justify the price of making the DLC within the 2 weeks of sale. Maybe in the future, it might cause a bit more of a snowball effect. I'm also sure some people got the game on a previous sale because they were promised free DLC, but I can't track that.
Overall, while the free DLC didn't do as much as I wanted in terms of sales, a lower price in almost every currency helped.
What I would have done differently:
Never heard of the company (Devoted) but an artist-hire service is certainly welcome! I've avoided contract platforms because it's a pain to do the vetting, chase people for milestone deliveries, get source files, etc. Easier to find people through portfolio sites (or past assets).
Seems to be a new partnership with Unity, but the company/service is pre-existing - anyone ever used them, as a dev or as an artist?
Could be a good counterpart to folks looking to either avoid low-quality/unprofessional results, or just quickly find an artist whose style matches their intent. And of course, I love to see artists getting paid for their work 😍
Small team here. We've been working on a co-op horror about pirates with stretchy elastic arms grabbing booty in the dark while something hunts them. Demo launched last week.
Two things hit at once today and we're still processing:
Honestly just stoked. Posting partly to mark the moment and partly because I'd love to hear from anyone who's been in that carousel slot before: how long did you stay in the rotation, and did the visibility translate into a real wishlist bump or was it mostly a vanity slot?
I was wondering, if you send different playtesters different versions of the game and see which one you like?
I can see pros and cons of this, though. There's a higher chance that some bugs might not be discovered. But the pro is that its faster, and more certain of what people may like. However, it is more expensive, as you need more testers than testing one version at a time (unless you never reuse testers).
But what do you think?
Over the past year I've been developing Funeral for the Sun, a narrative deduction game. And during this time I've been trying to post consistently to r/gamedev to speak on the game's marketing progress!
At the beginning of last week, I was happy to see my game reach 4,000 wishlists! While organic wishlists were under 10 per day (closer to 6-7), I was lucky to see significant bumps from my demo launch, the occasional reddit post, and even some random articles posted about my game!
But as the tile suggests, this week has been particularly fantastic for the game's marketing! Just two weeks before Steam Next Fest I have had a jump of over 900 wishlists! I'm only about a week away from getting to 5,000 total!
This was due to my effforts in applying to festivals and events! In my case Funeral for the Sun was featured by the Thinky Direct and Cerebral Puzzle Showcase. While I applied to many events, and got into a small handful of them, they didn't always have front page featuring or large platforms to post trailers onto, so these things specifically are what have helped me the most and led to the most wishlists ever for my game!
More than social media, I believe that things like this have a lot of potential to boosting the marketing of one's game.
I'm working on a city builder, and I'm looking for ways to make mountains in our procedurally generated map
if its a regular environment, you can sculpt the landscape upwards, place stone meshes around it and whatnot, in order to make a mountain. But thats hard to do when each time the player starts a new game, a new procedural map is created. How would you guys go about making this?
I was thinking of just making seperate mountain models that later get placed out. Is this a reasonable idea do you think?
I published an asset called zandroid on itch and today I got first purchase, it feels great, by the way it's mobile view preview tool. Great thanks to buyer.
Hi everyone,
I’m trying to understand how game dev communities handle a problem I keep seeing, which is that a lot of useful technical discussion now happens inside Discord servers, but much of that knowledge becomes hard to find later.
This seems especially common around:
- engine-specific help
- modding
- level design / tooling
- bug workarounds
- asset pipelines
- multiplayer / networking issues
- community support for indie games
Discord is obviously great for quick help and keeping a community active. But compared to old forums or public Q&A threads, it seems weaker for long-term searchability, stable URLs, and Google indexing.
For people running or participating in game dev communities:
- Do useful answers often get lost in Discord?
- Do new users keep asking the same questions?
- Do you maintain a wiki, docs, forum, GitHub Discussions, Steam forum, or FAQ to compensate?
- Does anyone manually move good answers from chat into persistent docs?
- Have Discord forum channels helped at all?
- If you run a community for a game/tool/engine, what has actually worked?
I’m trying to understand the workflow and the tradeoffs from people who actually deal with this.
Thanks you folks!
I released my game on Steam 2 and a half months ago and before/after its launch I tried posting reels about it (around 30-40 of them) on tiktok, instagram AND youtube, I tried going through discord "showcase" channels to show off my game there, in like 20 servers. I tried getting streamers/content creators to play it, out of the 20-30ish, i think 5 played it (and they were just streamers i randomly found on the games+demos section of twitch), and even a bunch of subreddits (hell, even this one), but still nothing.
I even released a free demo a month ago hoping that would do at least something, and it seemed like it did, but out of the 1.500 people who added the demo to their library, only 16 of them actually played it (i'm gonna guess most of them were bot accounts who just add free games for some reason).
After all this, right now, I only got like 15 copies (which amount to around 70$ net worth) and 130 wishlists. My first thought was "maybe this just didn't work out, i should just make a better game!" and yeah, this is 100% viable, but at the same time: A. I feel like I poured too much effort for it to just be thrown out the window and B. DUDE, there are WAYY freaking worse games than mine that somehow perform 10 times better than mine, like, there's a game where you do UNSPEAKABLE THINGS to a CHAIR. And it somehow got like 39K$?????? (yes i know that game has been around for 6 years, but still, that's freaking crazy)(also im pretty sure I'm not allowed to post the steam link for obvious reasons.)
(also C. I cant pour another 100$ on steam cus I'm kinda fried in the economical side of things).
So yeah, I'm really stuck up with this specific game and I really wanted it to go decent. Like, I don't want a billion gazillion dollars out of a basic ass 2d platformer I made as my first game, but AT LEAST get a single monthly payment so I can get the money i spent on the direct fee back.
Also here's the game, and yes, you may laugh at it if you must: https://store.steampowered.com/app/4457630/Curse_of_the_Mirror/
Personall I think I did a decent job as a purely solo dev, and all of the people who played it (probably 20) said the game was great, and even if there was some feedback like a bug or something that needed to be fixed, I worked on it right away.
I might end up doing the "free for a limited time" bs a lot of small games like this do, and then include it in the summer sale for like 2$ instead of 6$ for those who missed the free deal.
Idk anymore. (also if you read the entire thing, thank you and sorry)
EDIT: Thanks everyone for the feedback about the graphics. I was planning on a future update that completely revamped most of the graphics, but back in its development, I had to focus not only on the graphics, but on the music, coding, story/characters etc. . BUT, right now I changed some very minor things on the steam page itself, specifically swapped the first trailer with the second one since it shows gameplay right off the bat, and tried to improve the short description under the game's banner (which btw im also planning to improve, either gonna make the background darker, or draw something under the logo to make it more distinguisable.)
| Made a tutorial explaining and going into how to Level stream in unreal engine. [link] [comments] |
| Slow Motion - Tutorial [link] [comments] |
I’m making a hand-drawn top-down/isometric game, and one thing I really, really underestimated before starting was just how much animation work I’d have to do.
Not just “animation is hard”. I knew that part. More like the amount of drawings, directions, variants, frames, fixes, shadows, timing passes, exports, and just general tracking that starts piling up once the game becomes more than a prototype.
Right now I’m at around 206 exported animation files.
To be clear, that does not mean I drew 206 totally seperate animations. A lot of those are combinations of animation + direction + character/outfit/style + export variants. But when you look at it frame by frame, it gets kind of insane pretty quickly.
The big issue is that my game is 8-directional. So for each movement or attack, I need:
In practice I draw 5 directions and mirror 3 of them, so it’s not literally 8 full redraws every time. But even the mirrored ones still need shadow and shading corrections, because the light direction has to stay consistent. So it’s not just flip and done.
The funny thing is, I didn’t fully realize how big the problem was until I made an animation tracker spreadsheet.
Before that, I had this vague feeling of “yeah, this is a lot of drawing”. But once I started tracking finished animations, missing animations, directions, attacks, variants, exports, etc, it became much more obvious that I had created a monster.
Also, probably worth mentioning: I’m completely new to animation.
I had never animated anything before this game. Like, literally nothing. So on top of the production workload, there’s also the part where I’m learning the basics of animation while trying to build the actual game. Timing, spacing, weight, readable poses, keeping the character consistent, all of that. (my game has some cloth and animating that has been a PITA)
So yeah, maybe not the smartest first animation project to choose lol.
For context, I’m probably around 20% done with the animation work I currently think I need. And honestly I’m probably underestimating that number too.
It has made me think a lot about whether I should have gone with rigged / skeletal animation instead of frame-by-frame.
I did look into Spine-style workflows early on, and also cutout animation in general, but I didn’t love the look of it at the time. I still prefer the feel of hand-drawn frame-by-frame animation. It just has a different weight to it.
But now I understand the tradeoff way better.
Bad skeletal animation can look stiff and puppet-like, but good skeletal animation, with good art direction and some hand-drawn touchups, can probably get you most of the way there with a fraction of the production cost. Especially if you need a lot of attacks, directions, character variants, enemies, etc.
I’m still happy with the visual direction I chose, but yeah... I definitely went into it a bit blind.
I’m attaching a few screenshots:
Curious how other people handled this.
For those of you making 2D games with lots of character animation:
----
screenshots of my :
main character animations overview
attack spreadsheet (most of my animations are different types of melee attacks)
krita timeline of a single file
Hi there, I’m Decafesoft, and I’m a Tokyo-based solo developer with a mixed Japan and US background, and in February 2025 I released Starlight Legacy for PC and iOS, which later had a console release in May 2025.
A quick background on me, I am a (half) Japanese “returnee” that was born in Japan, moved to the US at age 6, and moved back to Japan at age 24, and I am currently 31 at the time of writing this. I hesitate to identify as a “Japanese developer” because I had a western upbringing, so obviously I think and talk like a westerner. I’ll leave it up to others to decide how to label me/my game. (Even though this information isn’t directly relevant, I feel like it’s something I should still be upfront and honest about)
At the time of writing this (June 2026), it has been a year and a half since the initial PC release
The game: Starlight Legacy (Steam page)
ABOUT THE GAME
Starlight Legacy is a turn-based, 16-bit style RPG set in a post-medieval world, and like many classic RPGs the goal is to collect four relics each hidden deep within a dungeon, and then culminates in a final dungeon with a final boss. But the main twist here is that the four relics can be done in any order. The story is broken up into six parts, first the prologue, then regions/relics 1-4, and then the final dungeon. In addition to the four main dungeons, there are also several “mini-dungeons” scattered throughout the kingdom’s four provinces. You also receive a dragon at some point that will allow you to traverse the kingdom’s map in a Mode 7 inspired 3D space. The game’s biggest inspiration is Final Fantasy Legend I for the Game Boy. I liked how that game had several pocket worlds that you work through, and I thought “how cool would it be if we could do these worlds in any order?” and the idea for Starlight Legacy was born. Some other inspirations include Final Fantasy I for its scale and gameplay, and Pokemon Ruby & Sapphire for its aesthetics.
ABOUT THE STORY
The story is primarily about restoring a tree that guarantees the prosperity of the kingdom & defeating an evil king, and also deals with themes of historical racism. I took a gameplay over story approach and intentionally tried not to go too in-your-face with the story, for better or for worse. This gameplay > story approach is primarily inspired by games like Final Fantasy I, Final Fantasy Legend, and Pokemon Red/Green/Blue, all of which I felt intentionally had simple stories where there’s just enough story to justify the gameplay, but no more than that.
ABOUT DEVELOPMENT
Starlight Legacy was developed in GameMaker. It officially began development in May 2022, however the initial ideas for the game were conceived of in September 2021. I already had experience with pixel art, programming, and music long before that, so I wanted to put those three skills together to make a game. In November 2023, after a year and a half of development, I released a demo on Steam to very little fanfare. The demo was basically the first 20 minutes of the game, featuring two towns and a “mini-dungeon”. This experience lead me to learn about how Steam works, how wishlists work, and I realized that I had made a huge mistake by releasing a demo this early.
A few months later in March 2024, Nintendo approved me for a Switch devkit, so I planned on doing a PC and Switch release. But ultimately this wouldn’t matter because the game would eventually find a publisher. In May 2024 I released an update to my game’s demo, and also began regularly posting more on Twitter/X screenshots and short videos of my game. I don’t remember the exact amount of wishlists I had at that time but it was a few hundred, so much less than the typically recommended 7k before release (I wasn’t expecting to get that ever). I also tried releasing a trailer but it got very little attention. However, there was a trendy hashtag going around on Twitter (I think it was “Will you play this game?”) that I got on, and had some success in getting several hundred likes and nearly doubled my wishlist count. It was also around that time that Eastasiasoft had contacted me about publishing the game, and after some light discussions I agreed to sign on with them as the publisher. It was thanks to them that I was able to work on the game full time during the rest of development. Originally the game was meant to be finished by December 2024, but had to be delayed a couple months, and was finally released on Steam, GOG, and iOS on February 6th, 2025 (the iOS version was self-published). After release, for the next couple months the console ports were worked on. I developed the Switch port directly, while Eastasiasoft developed the PlayStaion and Xbox ports, and the console version was released on May 28th, 2025.
SALES
The game had about 3000 wishlists right before the initial PC release. Unfortunately the initial release sold very poorly, with it only making around $1-2k the first month (I forgot the exact numbers, sorry), but given the low wishlist numbers this was expected. One big mistake was that no major YouTube channels were reached out to – I had assumed that the publisher would do that, but they had a more passive strategy, relying on Keymailer and posting on Twitter asking users to fill out a form to receive a Steam key. Thus, I contacted several big (10k+ subscribers) channels myself, and a decent amount replied, but they pretty much all charged a hefty fee that I couldn’t afford, to feature my game. This was how I learned that basically all of those big game review channels are paid for – and to be honest I don’t see it as a bad thing, it’s like a modern form of commercials in a sense.
While I could go on and on about any potential mistakes that were made, I won’t, because ultimately the game’s scope was just too limited, so even in an alternate timeline where this game had perfect marketing I don’t think it would be that much more successful because the game was never trying to be the next Chrono Trigger, it was trying be something like a 16-bit version of Final Fantasy Legend but with a twist. On a more positive note, the console release was much better, and while I cannot give exact numbers, I am happy to say that I am now receiving a decent amount of side cash every month.
At the time of release, while the game was fully playable from start to finish, I had to take several shortcuts to get the initial PC version out in time, such as not having a proper credits theme (it reused the flying theme instead). From August to October 2025, I worked on an update that would “complete” the game in a state that I was satisfied in, and finally included all of the music that I wanted to originally.
LOCALIZATION
The game is currently available in English, Japanese, French, German, Chinese (traditional & simplified), Brazilian Portuguese, and Spanish. Originally, both Japanese and English scripts were written by me, though I had the Japanese script reviewed & edited by my wife prior to release. The other languages were all handled by the publisher. Unfortunately, despite having the Japanese script reviewed before release, it was criticized by Japanese fans for sounding like “Japanese that was translated from English”. This was incredibly frustrating because 1) I can’t change my western upbringing, 2) I had the script reviewed and edited by a “real” Japanese person prior to release specifically to prevent this complaint, but people complained anyways. I ended up contacting a professional freelance writer to completely re-write the Japanese script while maintaining the overall story. Even though no one was complaining about the English script, I was really impressed with the re-written Japanese script that I decided to translate it to English and include it in the next update. The v2.0 of the game released in October features the new Japanese and English scripts.
WHAT’S NEXT
I am working on a sequel, currently titled “Starlight Legacy II: The Legend of the Heavenly Dragon” (Japanese subtitle is “リュウナと天龍の伝説”). It is intended to have a much bigger scope than the first game, and is intended to have a similar amount of content to games like Final Fantasy VI and Chrono Trigger. I plan on taking my time with this and make something truly polished and decent, and hope to have it out by 2030. Unfortunately for that very reason, the publisher of the first game passed on the second game, because they wanted me to make something small like the first game and have it out sooner. For now I intend to self-publish the initial release. I want to prove to people that just because I made an exaggerated Game Boy game, doesn’t mean that I can’t make an epic 90’s console RPG.
MY ADVICE
Hey everyone, just curious to know what genres indie devs are focusing on right now.
Are you making horror, RPG, action, adventure, survival, simulation, or something completely different?
Would love to hear about your projects and why you chose that genre. 🙂
I open-sourced Axocoatl this week. Sharing it here because the parts I'm proudest of are the Rust ones.
Every agent framework I found was either a toy or a hosted product. Sign up, hand over your data, pay a subscription, and get locked into someone else's platform. I wanted one I could actually run real work on: open-source, self-hosted, secure, nothing leaving my own hardware. Couldn't find it, so I built it.
How it works:
- Agents are `ractor` actors on Tokio. Each checkpoints its state, and a supervision loop restarts a crashed agent from its last checkpoint instead of from zero. (The demo is me killing the server mid-task and watching it resume.)
- Coordination is event-driven, not centrally orchestrated: each agent publishes a completion event into a shared event lattice, signals accumulate, and a downstream agent activates once its dependencies cross its threshold, a reactive cascade, no central scheduler. (Pheromone-accumulation model; thresholds are currently tuned so an agent fires once all its dependencies complete. Auction-based selection among candidates is on the roadmap.)
- WASM tool modules run in a wasmtime sandbox; sessions can run in a rootless, hardened Podman container (capabilities dropped, no-new-privileges, optional no-network).
- Semantic memory uses candle + all-MiniLM for local embeddings, so recall doesn't hit an external API.
- MCP client + server via rmcp (`axocoatl mcp serve` exposes agents as tools over stdio); HTTP API + WebSocket streaming. Single binary.
It runs fully local against Ollama (cloud providers optional), with a pre-flight token budget so a runaway agent can't quietly burn your credits. No telemetry.
Scope: it's v0.1. Runtime, supervision, memory, MCP (client + server), and A2A interop are real and working. HTN planning, auction-based agent selection, and microVM isolation are in the tree but not wired into the shipped runtime yet; they are on the roadmap.
Repo (Apache-2.0): https://github.com/axocoatl/axocoatl
I'd genuinely appreciate the Rust community critique.
Hey everyone,
I wanted to share something I've been working on for a while: Reverbic, a TUI radio player for Windows.
I built it because I wanted to listen to radio while gaming or working without keeping a browser tab open eating 400MB of RAM.
What it does:
- Search and play internet radio stations (by name, genre, or country)
- Control Spotify remotely from the terminal
- Floating overlay that stays on top of your game showing what's playing
- Audio ducking — auto-lowers the radio when your game gets loud
- Screensaver mode, Discord Rich Presence, media keys support
Single binary, no installer, ~25MB of RAM at idle.
Would love to hear what you think — feedback is always welcome.
I love bump/arena allocators.
I work on compilers at home and at work, and use arenas to hold ASTs, IRs, and other stuff.
This is my new arena allocator library, stumpalo.
It allocates top-down, has chunk reuse, supports heterogeneous stack allocation, and is *extremely* fast.
It performs well on all operations, and significantly better than alternative libraries on operations where it knows the size of the data at compile-time.
So after 5 years of using JavaScript mainly and python partially to make web apps I decided to follow my passion which is to learn system level programming language which I didn't at the beginning because I honestly wanted to land a job ASAP.
After spending some time learning Rust and all this ownership and borrowing stuff I came to a conclusion that I wanted to discuss with you:
When I tried to compare JavaScript with Rust and I know that this comparison has a lot of issues (it is is naturally happening since I was a JavaScript developer), Rust really amazed me with the fact that it just set a very few amount of rules but made them very strict and become with that the safest language you can develop with. What I'm trying to say is: the strong side about Rust is not about the the language's programming paradigm or the syntax or the compiler etc. It's just the defined rules and how they shift the way that we think as a programmers to create a better programs by ourself without relying on tools that cost a lot such as garbage collector but also caring about us so it doesn't leave us alone with malloc and free.
This made me think that's if a junior developer starts with a language like Rust I don't believe that he will be bothered by all the "Fighting with the compiler" stuff because he won't have any predefined assumptions in his brain about programming at all. So yeah it might be a weird statement but I believe languages like Rust is a good place to start a programming journey because switching from it to another programming language will make you avoid the traps in the other programming language because of the mindset you gained from Rust.
If we set aside jobs, rapidly changing market demands, and global trends, do we really need AI agents to write software? As someone who recently started learning programming, I believe the foundation of building a software product or service is breaking a problem down into small steps and solving them gradually. This is the true joy of programming. For me, AI steals this joy and sometimes offers overly complex solutions to simple problems. Even if the whole world stops writing code by hand, I believe many people will continue to write it themselves.
I just released the version 0.4.0 of cargo-tools. Since the inital release i rewrote almost everything to Rust leaving only a thin typescript wrapper to interface with the host system and VSCode extension API.
On the technical side i utilize wasm-bindgen fot the Rust <-> TypeScript bridge. All state is handled on the Rust side in a small headless runtime leveraging iced primitives. Also i'm kinda proud that i got the unit tests running for the wasm32-unknown-unknown target :)
Feature-wise apart from some clean-up and cosmetics the most exciting is that task aliases are now supported and with that the xtask pattern. Also we have a cute new icon/logo.
I hope this is useful to some folks and would appreciate any feedback :)
https://github.com/NickelWenzel/cargo-tools
AI disclaimer:
All technical concepts as well as application architecture of the Rust re-write are my brain children and the result of my own research and hand-crafted through try and error. I let the AI do what i consider busywork though like dos, ci and some features that do not require much thought.
I keep going back to the docs to read how it works. It looks cool, names sounds cool and getting to use the ? operator is always nice.
for the past few weeks i've been working on verdant, a rendering and windowing library built on top of wgpu and winit, inspired by processing
it's currently a work in progress, with a good few features still planned, but i think it's at a good enough point to share
some of the things verdant currently supports:
the project is still pretty early on, and the API is not yet stable, but it's reached the point where i'd love to hear feedback from other rust developers
repository: https://github.com/grimtin10/verdant
crates.io: https://crates.io/crates/verdant
i'm mostly interested in feedback on the API design, the documentation, and whether the overall direction seems useful
i'm also open to answering questions about verdant!
Hello, I'm looking for an HTML-generation library that is extremely type-safe.
I'm looking for something that also checks for things like "you can't put an href on an ol" or typed attributes, for example "the datetime attribute of the date element only accepts Rust's Date objects instead of simple strings".
Thanks in advance.
Glauber Costa, CEO and co-founder of Turso, is currently doing an AMA over on r/IAmA.
Glauber is a former Linux kernel contributor, helped build ScyllaDB, worked at Datadog, and is now leading Turso’s efforts around libSQL and the new Rust-based Turso Database, a clean-room reimplementation of SQLite.
Topics include:
• Rewriting SQLite in Rust
• Database architecture and distributed systems
• Linux kernel development
• Open source business models
• The future of SQLite and embedded databases
AMA link: https://www.reddit.com/r/IAmA/comments/1tvz2dm/comment/opkhk1i/?screen\_view\_count=2
Thought this community might find it interesting.
During the past year, Rick Beeloo and myself have been working on Sassy, a tool for fuzzy-searching short patterns in large texts, also known as approximate string matching.
Specifically, we've developed it for searching through large DNA collections (think 2s to search a 3GB human genome), and the corresponding paper just got published!
Try out sassy grepto search through DNA files, and sassy agrep <pattern> <#errors> <files> to fuzzy-search plain ASCII files. There's also a crate.
It searches through files at around 1 GB/s, which goes up to 8 GB/s when batch-searching many patterns in parallel (both on a single thread). The blog explains some of the algorithms behind it.
From the Rust side, we use the very nice wide library for SIMD instructions, and we use cargo-multivers to ship a single x86-64 binary that supports both AVX2 and AVX-512.
The procmachines crate is now at version 1 and ready for dependents. Thanks to everyone here who helped with my esoteric questions.
It's often advantageous to encapsulate logic in a state machine -- a simple object with all of its inputs and outputs exposed on the surface. You can mutate the inputs and observe how the outputs change. Having the state machine disconnected from any I/O or infrastructure makes it easily testable, and allows it to be deployed in as many contexts as possible.
It's great to have a state machine, but it's awful to write a state machine. The requirement to return back out to the caller after every input means that you can't use the tools of procedural programming in any way that spans those inputs. You need to use state variables and switch statements or equivalent.
But, like many languages these days, rust has an async/await features for I/O operations, and these features cause the compiler automatically translate your procedural functions into state machines.
The procmachines crate makes it easy to take advantage of this transformation to produce your own state machines, that you can use as state machines, disconnected from any I/O or infrastructure.
Features:
Arc is required for initialization)... is in the readme https://crates.io/crates/procmachines
I worked on a way to search for exact monents in videos,
Semantic video search. And this is how it works in simple words.
It splits videos into overlapping chunks, converts each chunk into AI embeddings, stores them in a vector database, then expands the user’s query into related phrases to improve search accuracy. The best matches are ranked by agreement across multiple query versions, filtered by similarity, and refined into either an exact timestamp or a full event span.
I explained it in details here and made it open source
https://github.com/razkar-studio/farben
rust cprintln!("[bold red]Error:[/] something went wrong"); cprintln!("[italic cyan]hello[/] [bg:rgb(255,10,10)]world[/]");
Hey everyone!
I've released Farben v0.19, a terminal coloring library built around markup style syntax like the example above.
Farben focuses heavily on ergonomics, compile time processing, and terminal correctness.
It recently won Crate of the Week, which is honestly surreal: https://this-week-in-rust.org/blog/2026/04/22/this-week-in-rust-648/
This release adds a lot of new functionality, including:
compile) format! and Rust implicit capture syntaxTTY, NO_COLOR, and FORCE_COLOR support, even in compile time mode*bold* /italic/ _underline_ ~strikethrough~ `code` (inline)style!() and prefix!() (format)farben-build and .frb.toml[/bold] and [/red] that remove only a single active stylelossy)anstyle interoperability (anstyle)Write implementationexpand! for inspecting tagged output and raw ANSI746nsHopefully this gives me free SEO.
Full v0.19 release notes: https://github.com/razkar-studio/farben/releases/tag/v0.19.0
Docs: https://razkar-studio.github.io/farben
crates.io: https://crates.io/crates/farben
Would love to hear what you think! Feedback, issues, and PRs are always welcome.
A couple good things that I need: * What feels missing or awkward in the API? * Does the markup syntax feel intuitive? * Are the feature flags split up well? * Any concerns about compile time processing? * What integrations would you want next? * Does anything feel overengineered or unnecessary?
It is a converter from HTML to Markdown (what LLMs eating). Orignally from https://crates.io/crates/html-to-markdown-rs which is a vibe-coded repo with some of inefficient decisions inside. My fork is mostly a clean up.
To make this library even faster I also forked astral-tl to make zero-copy parsing and enhance that code to latest Rust.
- It has python 3.8+ bindings under the same name on PyPI.
- Library supports SIMD if you really need gain of 5-10% in parsing
Hey, I want to share this blog about the journey and lessons learned from RisingWave, a streaming database, that migrated from C++ to Rust by deleting 276k lines of code, discarding 7 months of development, and starting from scratch. I really hope this will be helpful for anyone working on or starting a data infra project with Rust and want to understand its pros and cons.
* I work at RisingWave.*
I switched to Linux and missed Maccy, so I built a clipboard history manager in Rust + GTK4.
https://tranhuuhuy297.github.io/cliccy/
The part I like: it doesn't poll. Instead of reading the clipboard on a timer (idle CPU drain + focus jitter on Wayland), it listens for X11 XFIXES "selection owner changed" events and reads only when the clipboard actually changes — ~0% CPU until you copy. It falls back to polling only when XFIXES isn't available.
Works on X11 and GNOME/Wayland. MIT licensed.
Happy to dig into the XFIXES approach or the GTK4/Mutter focus quirks.
| In this simulation the 'tesseract' is a bitwise operator, the field is a z-order space, the tesseract shows itself through the z-order space and then I mix the signal to get a visual. The grid where the camera lives is actually warping, so sometimes when I try to fly forward I end up going in this crazy squiggly spiral path, sometimes it sends me in super weird reverse motion. I'm thinking this bitwise approach is pretty good for what im trying to do so currently chewing through a big rework to my voxel sim [link] [comments] |
| with live audio I have two of these, this is the pure vec 4 / automata style version. It's tesseract inspired, the idea is 'does net zero energy/geometry still give me stuff?' The sound is what youd expect.. im just translating visual data into audio This is actually a side project, I'm working on techniques to drive emergence specifically more efficient ones This one is not efficient lol (it ain't bad, but the bitwise version is 2 million surfels easily without losing performance and can be fast forwarded without losing framerate) its also far from pure for the goal but getting closer [link] [comments] |
Hi all, I'm currently building Swarm MMO, a game where you own plaents that create probes, which again can be used to conquer more planets. I built it originally to try out SpacetimeDB, and so far I'm impressed with its performance. What currently bothers me the most is that migrations can be pretty annoying compared to the "usual" SQL migrations.
I was wondering if anyone else built a game using SpacetimeDB, and if you are using the official maincloud from the spacetime devs or do self hosting? Any experience with server costs?
Last week, I released the first version of [rproc](https://github.com/Trystan-SA/rproc), a system monitoring tool inspired by Windows 11 task manager but for linux.
People on this subreddit told me about Mission Center and 'Ressources' that are very close in terms of UI and capabilities.
I noticed they all consume between 180MB to 250MB of RAM. rproc still managed to get a lower footprint of only 130MB using egui.
But I wanted to go further and rewrote the GUI with Claude Code help. Completely migrated from egui to slint. I now have 30MB (no GPU monitor) and 50MB (with GPU monitor).
**87% less RAM usage than Mission Center !**
Wrote an article explaining how it works.
Laravel helped me build real businesses. I spent more than 8 years building and maintaining fintech and e-commerce systems with PHP and Laravel, and three of those systems are still running today, still doing their job just fine. I have no regrets about any of it. About 6 years ago I started writing new services in Go, and somewhere in that stretch my thinking about frameworks, architecture, and long-term maintenance shifted in ways I didn't really plan for. Looking back, I don't think Laravel's biggest problem was performance. I think it was ambiguity.
- The cost of having many ways to do the same thing
The thing that started quietly wearing on me over the years was how many different ways Laravel hands you to solve the exact same problem.
Take something as basic as getting the current user. You can write $request->user(), or auth()->user(), or Auth::user(). Reading request data is the same story $request->input('foo'), $request->foo, $request->get('foo'), even $request->all(). Dependencies can come through constructor injection, or app(), or resolve(), or facades. Validation can live in a Form Request, in the Controller, in a manual call, or in a custom validator.
None of these is wrong on its own. The trouble shows up after a few years and a few developers, when the codebase quietly turns into a blend of every style anyone ever preferred, rather than one coherent system. I caught myself spending more time working out how a particular slice of the app had been written than actually understanding the business logic it contained. That's a bad ratio, and it crept up slowly enough that I didn't notice it happening. Don't get me wrong, I have used linters and guidelines on every project.
- Hidden dependencies got expensive
As the applications grew, I started valuing explicitness far more than convenience, which is not where I expected to land.
In Go, when a service depends on something, I can see it sitting right there in the constructor. In Laravel a dependency might arrive through a facade, a helper, container resolution, a trait, a piece of middleware, or a service provider. Any one of those is easy. Stacked together, they add up to a lot of indirection, and I eventually realized I was burning real time hopping between files just to figure out what was actually executing.
Convenience is wonderful on day one. In large systems, explicitness ages better.
- Working with Go reset my expectations
What surprised me most after the move was how much I enjoyed having concurrency baked into the language. In Go, goroutines and channels are just ordinary tools you reach for while you're designing something.
In Laravel, concurrency usually lives in the infrastructure instead — queues, workers, Horizon, Octane, external services. Those are genuinely useful and they solve real problems; I'm not knocking them. But after a few years in Go I'd started expecting concurrency to be something I could design with directly, not something I'd bolt on later through more moving parts. That alone changed how I approach backend systems.
- I started caring about types more than I expected to
For years I didn't think much about type safety at all. Then I spent enough time maintaining large applications, and it became hard to ignore.
To be fair, PHP has come a long way — typed properties, enums, readonly properties, union types, and serious static analysis have all made it a better language than the one I started with. But I still kept running into arrays stuffed with arbitrary data, mixed return types, magic methods, and the occasional runtime surprise that should have been caught much earlier.
You have control over your own codebase, but there are many Laravel packages that don’t follow these rules at all. I can name hundreds of packages, and this ends up introducing a lot of ambiguity into your classes.
The thing I unexpectedly fell for in Go was structs. They're boring, and that's exactly the appeal. When I see a struct I know precisely what data exists and what doesn't, and the compiler quietly catches a startling number of my mistakes before they ever reach production. Over time I came to value that more than any framework convenience.
- Laravel and I ended up optimizing for different things
This is probably my most controversial take, so here it is plainly.
When I look at Laravel today, I see a framework investing heavily in frontend stacks, new development workflows, SaaS products, ecosystem services, and commercial offerings. There's nothing wrong with any of that — clearly a lot of developers love the direction, and the numbers suggest it's working.
The issue is just that what I wanted from a framework drifted somewhere else. I'd started caring about explicit architecture, domain modeling, concurrency, type safety, and maintainability at scale. At some point it stopped feeling like a disagreement and started feeling like Laravel and I were simply aiming at different targets.
- Why I choose Go
I don't reach for Go because it's more productive on day one. Honestly, for CRUD-style work, Laravel will still get you there faster.
I choose Go for the explicit dependencies, the simpler mental model, the strong typing, the predictable behavior, the concurrency that comes built in, and the fact that there are simply fewer abstractions between me and what the program is doing. The larger and longer-lived my systems got, the more every one of those things started to matter.
Laravel helped me build businesses. Go helped me simplify how I think about software. Both of those are true, and I don't think they contradict each other.
I believe code must be intentionally boring.
I'm curious whether anyone else who made the Laravel to Go jump felt the same shift or whether your experience went a completely different way.
tl;dr Tried to come up with faster way of prime computation than using single goroutine. Discussed the challenges faced, what worked and what didn't
This was mainly an exercise on coming up ways how I could optimise my code. I took prime computation as example it made the scope smaller.
Problem statement: Make Prime Computation by Sieve of Eratosthenes faster
If you might need a refresher Sieve of Eratosthenes says
When i first looked at it, I wouldn't lie I thought it would be just straight forward: I would just use goroutines and then marking all multiples and it will make the program faster.
Of course I was very wrong.
Before going into that I will give a brief explanation about how I have structured my code
There are three parts
This was the initial implementation to compare to.
The idea was simple to add multiple goroutines to mark numbers concurrently.
The issue that immediate came up was that if i move markMultiplesAsNotPrime in goroutines is that ordering is not guaranteed. It can very well happen that we pick a number that is not yet marked as multiple and we start marking its multiples; this would be extra work which we don't want to do.
So to counter that I added a isReallyPrime function; this would quickly check if a number is truly prime and then we can correctly mark its multiple as not primes. The tradeoff
I also add a RWLock to registry, so as we don't face race condition.
Another addition was wait groups to make sure are processing is really complete.
The result was an extremely slow implementation.
Next steps thinking
Keeping the goroutine code intact, I added buffered channel for bounded concurrency.
Keeping the channel size as runtime.NumCPU() to make sure we are not causing any delay due to scheduler getting involved.
Result:
It kind of made sense
Next steps
In the earlier operation, I was locking the entire array for any writes and we can remove that by using atomics.
So I changed the registry to an array of atomics and remove the lock.
The rest of the code was still the same.
Result
Even with limiting the number of goroutines, we don't see much improvement. Which again makes sense as the goroutines are not competing for the same resource. (Because we are not locking the entire array)
I wanted to remove isReallyPrime function but due to no ordering guaratee in goroutines I was forced to use it.
But one thing struck me
If I discover a prime p, that means I know all the prime numbers from 2 to p.
using only this I can mark all the multiples up to p^2
That meant if I know prime numbers till p, I can find all prime numbers till p^2.
So if I know 2 is prime, then I can find all prime number till 4
if i know 3 is prime I can find all prime numbers till 9
I then know 7 is prime from there I can find all prime numbers till 49
You get the drift.
And here I don't have to worry about ordering
if I know 2,3,5, and 7 are prime they can independently go and mark there multiples as not prime and I don't need to synchronize anything.
Using this approach I went ahead with it, the registry will just be an array of bool, I also stored some additional book keeping info like lastPrime and computedTill and also waitgroup to know a segments processing is done or not.
We had finally removed the need of isReallyPrime function
Results
GPT says we have a race here, although I am not sure we are only changing the value from one state to another but once chaged we don't care. Even if concurrent write happens. Maybe I am not using the correct data type here. I would love to hear your thought here. Or I can partition the work.
PS: I did add a version which is atomic and chunked version and it was less performant as single go-routine version.
So I started learning to a few weeks ago. Since then I learned all the basics. I started coding a few telegram bots. Cloning some projects I had in other languages. I also made a pastebin clone rest API and a link shortener, like every beginner does. I was going to move onto making a chat server next but I hit a wall. Go started to feel useless.
For the pastebin clone and the link shortener, I made the rest API in go with postgres, redis Prometheus and chi and for the frontend I used sveltekit. But after I made both of them I realized that sveltekit is a full stack frameworks so I could have just not used go and made the entire thing in sveltekit since it can just communicate with postgres and do every other thing that go does, in of itself.
Now I realize that go gives you more performance and more control. Like when I was making the telegram bots I coded a worker/actor pattern where each conversation has its own worker and each worker handles the state of that chat. Besides that I also tested a lot of other concurrency patterns. They were cool but again, if why use go ?
For example I was doing some research before coding a hat server and I came across Elysia. Now I don't know either to trust the benchmarks or not but holy shit it seems like a much better choice in almost every case (except if you want absolute enterprise level code). So go is neither as enterprise and solid as something like java or spring and neither as cutting edge and modern as something like Elysia.
So my question is where would you use go ? In which case should I prefer go over other options ? It would be appreciated if any gophers could help me out.
I watched a talk from GopherCon 2025 titled "Go's Next Frontier" which basically was a talk from one of the main language maintainers at Google, about how they are planning to modify Gos tooling and development ecosystem around AI and agentic coding. As a user of the language, I'll be honest, this is not what I want to hear from a language maintainer.
I don't want Go maintainers thinking about how can they make Go better for agents or as tools for MCP servers, I want them to just stay committed to the language itself. IMO I don't think a programming language should change its direction to better suit AI coding tools, why not focus on things like security, optimization, and lower level important improvements of a language.
One of the reasons I was so intrigued by Golang in the first place, was the idea that it is meant to not change, and stay essentially the same 10, 20 years down the line. Coming from Python, I got tired of how every new version of Python introduced breaking changes it seemed, and that packages were built in 3.10 won't work in 3.12 and so on. So the idea that I can run my go code down the line for years in the future is what I care about, I don't care about how Go interfaces with AI agents.
Now when I watch a Go conference talk that just sounds like an OpenAI or NVIDIA hype sales pitch from a language maintainer, it makes me a bit skeptical about the future of Go.
| submitted by /u/chaiandgiggles0 [link] [comments] |
Sou iniciante em Go. Quais são os principais pacotes? Como o Go é usado na web? Vi muitas pessoas falando sobre seu uso com HTMX. Eu venho do JavaScript, mais especificamente do Node.js, e usei bastante o Better Auth. Em Go, qual deles é usado?
I've been learning Go for a while and have built several monolithic projects. Recently, I started learning microservices, but I'm struggling to find good learning resources. Most youTube tutorials either stay very high-level or build tiny examples that don't reflect real-world projects. AI tools haven't helped much either because they tend to agree with whatever architecture I suggest instead of pointing out mistakes.
I'm currently building a URL shortener project and organizing it like this:
text . ├── deploy ├── go.work ├── services │ ├── analytics-service │ ├── auth-service │ ├── gateway │ └── url-service └── shared ├── apperr ├── crypto ├── database ├── jwt ├── logger └── proto A few questions I'm confused about:
Only in the API gateway?
Only inside each service?
Or both?
For things like logging, request IDs, authentication checks, and rate limiting, what responsibilities should belong to the gateway versus individual services?
If I create reusable middleware (logging, tracing, request context, etc ) ,should it go into the shared module, or is that considered a bad practice in microservices?
Is having a shared module with packages like logger, database, jwt, crypto, and generated protobuf code a reasonable approach, or does it create too much coupling between services?
How do experienced Go developers structure larger microservice repositories? Is a monorepo with go.work a common approach, or do most teams split services into separate repositories?
I'd appreciate feedback on both the project structure and the architectural decisions. I'm trying to learn the "why" behind these patterns rather than just making something work.