Skip to main content

India To Send First Astronaut On Mission To ISS

3 weeks 1 day ago
Shubhanshu Shukla will become the first Indian astronaut to visit the International Space Station as part of a four-person mission by Axiom Space launching from the U.S.. The mission will include 14 days aboard the ISS and over 60 scientific studies. The Guardian reports: He will be the third astronaut of Indian origin to reach orbit, following Rakesh Sharma, who was part of a 1984 flight onboard a Soviet Soyuz spacecraft, and Kalpana Chawla, who was born in India but became a US citizen and flew on two space shuttle missions, including the 2003 Columbia flight that ended in disaster when the spacecraft disintegrated, killing all seven astronauts onboard. "I truly believe that even though, as an individual, I am traveling to space, this is the journey of 1.4 billion people," Shukla was quoted as saying by the Hindu newspaper this year. Shukla said he hoped to "ignite the curiosity of an entire generation in my country." India's department of space has called the trip a "defining chapter" in its ambitious space exploration program. The International Space Station mission (ISS) "stands as a symbol of a confident, forward-looking nation ready to reclaim its place in the global space race," the agency said before the launch. "His journey is more than just a flight -- it's a signal that India is stepping boldly into a new era of space exploration." New Delhi has paid more than $60m for the mission, according to Indian media reports. [...] Shukla trained at the Yuri Gagarin Cosmonaut Training Center in Russia in 2020, before undertaking further training at the ISRO's centre in Bengaluru. He has said the journey aboard the Axiom Mission 4, and the expected 14 days on the ISS, will provide "invaluable" lessons to bring back home. Shukla will be led by the mission commander, Peggy Whitson, a former Nasa astronaut and an Axiom employee, and joined by the European Space Agency astronaut Slawosz Uznanski-Wisniewski, of Poland, and Tibor Kapu, of Hungary. They will conduct 60 scientific studies, including microgravity research, earth observation, and life, biological and material sciences experiments.

Read more of this story at Slashdot.

BeauHD

CodeSOD: Gridding My Teeth

3 weeks 1 day ago

Dan's co-workers like passing around TDWTF stories, mostly because seeing code worse than what they're writing makes them feel less bad about how often they end up hacking things together.

One day, a co-worker told Dan: "Hey, I think I found something for that website with the bad code stories!"

Dan's heart sank. He didn't really want to shame any of his co-workers. Fortunately, the source-control history put the blame squarely on someone who didn't work there any more, so he felt better about submitting it.

This is another ASP .Net page, and this one made heavy use of GridView elements. GridView controls applied the logic of UI controls to generating a table. They had a page which contained six of these controls, defined like this:

<asp:GridView ID="gvTaskMonth1" runat="server" CssClass="leadsGridView" AutoGenerateColumns="False" OnRowDataBound="gvTaskMonth1_RowDataBound"> ... </asp:GridView> <asp:GridView ID="gvTaskMonth2" runat="server" CssClass="leadsGridView" AutoGenerateColumns="False" OnRowDataBound="gvTaskMonth1_RowDataBound"> ... </asp:GridView> <asp:GridView ID="gvTaskMonth3" runat="server" CssClass="leadsGridView" AutoGenerateColumns="False" OnRowDataBound="gvTaskMonth1_RowDataBound"> ... </asp:GridView>

The purpose of this screen was to display a roadmap of coming tasks, broken up by how many months in the future they were. The first thing that leaps out to me is that they all use the same event handler for binding data to the table, which isn't in-and-of-itself a problem, but the naming of it is certainly a recipe for confusion.

Now, to bind these controls to the data, there needed to be some code in the code-behind of this view which handled that. That's where the WTF lurks:

/// <summary> /// Create a roadmap for the selected client /// </summary> private void CreateRoadmap() { for (int i = 1; i < 7; i++) { switch (i) { case 1: if (gvTaskMonth1.Rows.Count > 0) { InsertTasks(gvTaskMonth1, DateTime.Parse(txtDatePeriod1.Text), "1"); } break; case 2: if (gvTaskMonth2.Rows.Count > 0) { InsertTasks(gvTaskMonth2, DateTime.Parse(txtDatePeriod2.Text), "2"); } break; case 3: if (gvTaskMonth3.Rows.Count > 0) { InsertTasks(gvTaskMonth3, DateTime.Parse(txtDatePeriod3.Text), "3"); } break; case 4: if (gvTaskMonth4.Rows.Count > 0) { InsertTasks(gvTaskMonth4, DateTime.Parse(txtDatePeriod4.Text), "4"); } break; case 5: if (gvTaskMonth5.Rows.Count > 0) { InsertTasks(gvTaskMonth5, DateTime.Parse(txtDatePeriod5.Text), "5"); } break; case 6: if (gvTaskMonth6.Rows.Count > 0) { InsertTasks(gvTaskMonth6, DateTime.Parse(txtDatePeriod6.Text), "6"); } break; } } }

Ah, the good old fashioned loop-switch sequence anti-pattern. I understand the motivation: "I want to do the same thing for six different controls, so I should use a loop to not repeat myself," but then couldn't quite figure out how to do that, so they just repeated themselves, but inside of a loop.

The "fix" was to replace all of this with something more compact:

private void CreateRoadmap() { InsertTasks(gvTaskMonth1, DateTime.Parse(txtDatePeriod1.Text), "1"); InsertTasks(gvTaskMonth2, DateTime.Parse(txtDatePeriod2.Text), "2"); InsertTasks(gvTaskMonth3, DateTime.Parse(txtDatePeriod3.Text), "3"); InsertTasks(gvTaskMonth4, DateTime.Parse(txtDatePeriod4.Text), "4"); InsertTasks(gvTaskMonth5, DateTime.Parse(txtDatePeriod5.Text), "5"); InsertTasks(gvTaskMonth6, DateTime.Parse(txtDatePeriod6.Text), "6"); }

That said, I'd recommend not trying to parse date times inside of a text box inside of this method, but that's just me. Bubbling up the inevitable FormatException that this will generate is going to be a giant nuisance. It's likely that they've got a validator somewhere, so it's probably fine- I just don't like it.

.comment { border: none; } [Advertisement] Keep the plebs out of prod. Restrict NuGet feed privileges with ProGet. Learn more.
Remy Porter