Telescopes

Dec. 7th, 2024 05:27 pm
mtbc: maze I (white-red)
I was taking a look at what reasonable but cheap telescopes exist these days. Some of the marketing is funny, e.g., the SkyWatcher Evostar range is probably better for objects rather nearer to us than stars. Among the first things I noticed in looking at Celestron's products was how many modern telescopes now come wireless-enabled with apps to control them. I would be less sure of finding them still usable decades later, compared with say, my father's refractor from the 1960s.

I would also be sceptical of software quality partly because, back when I worked on software used by professionals who pay many thousands of pounds for their microscopes, it was clear that the microscope hardware was often of far better quality than the software with which the manufacturers lumbered their users. Goodness knows I am not easygoing when it comes to user experience, hence my grumbling ever since smart telephones and televisions became dominant, so I am cautious when it comes to buying software-dependent products.
mtbc: maze L (green-white)
I have had a busy year. Applying for jobs since I returned from Asia, interviewing, sometimes intensively, then weighing offers and preparing to relocate: paperwork, making ready here for my departure, researching for my arrival. A couple of aspects of this relocation have had me interact with staff at various levels as my new employer has engaged companies who then subcontract to local partners.

I get a couple of quieter weeks this month. I am reasonably on top of preparing to relocate. ) My previous anxiety is thus somewhat calmed.

After that, the real effort follows after I move next month: setting up a new domicile, onboarding at work. )

My current employment is in a good state so that now feels calmer too. It feels fitting to be leaving having gotten a new round of work done on a complex software component. )
mtbc: maze I (white-red)
For a new capability in OMERO.blitz I have a set of string prefix transformations where if a string starts with one then that prefix should be replaced by its partner. Abstractly, this seems easy to implement efficiently: for example, I can store the prefixes in a balanced search tree then, when I have a string whose prefix may need substituting, I can search for it in the tree and that largely gets me to its applicable prefix, if any.

I wondered if the Java standard libraries hand this to me on a plate but it took me some sleep to see how. Eventually I realized that I can roll my own Comparator that returns 0 (for is equal to) if startsWith and use it in a TreeMap that has from prefixes as keys with the same from and its to prefix together as each value. This approach violates equals but that is fine, it works nicely.
mtbc: maze C (black-yellow)
Approximately annually, at work we run the occasional large meeting, typically over three days, so that our users, developers and other interested parties can come together, talk to us, learn about how to use our software, tell everyone about how they are using it, we can plan future work, etc. With the pandemic we shifted this to being online via Zoom.

The meeting worked rather well, admittedly better than I had expected. I did miss one part of the previous meetings that I like, the ad-hoc small-group conversations in between sessions. Still, I believe that the effort was well worth it. Further, some mentioned that it is far more possible for them to attend online things, even ordinarily. We got to see and hear from each other and it is good to be able to put faces to the names we see in the support fora subsequently.

There were probably around eighty attendees in the main sessions and maybe around twenty in the workshops I was helping to run. My main jobs there were to check people against the registration list in shuffling them from the waiting room into the meeting and to keep track of questions from the chat to make sure nothing important was missed by the speaker; on lucky occasions I could field them myself.

Participants were worldwide, ranging from Australia through Asia and Europe to the Americas, so sessions were timed accordingly: on Thursday, workshops I helped with included a 11h to 13h one then, later, a repeat of it from 21h to 23h which attracted people from North America. I have taken this coming Monday and Friday off work as part of recovery but I know that some of my colleagues put much more than I into the meeting. I hope that they are sleeping well this weekend.
mtbc: maze I (white-red)
This afternoon at work we gathered around our new Meeting Owl. It hoots and flashes its eyes and connects to the NSA and steals our souls then we speak. It's cute and actually rather effective, a pleasant surprise when it comes to modern technology, though it has a price tag to match.

The Owl sits on a desk.(from Wikimedia, by Matthew Stein, CC-BY-SA)
Presumably it has a built-in microphone and speakers and a camera and whatnot though it looks just like a tall rounded thing. The top bit seems to have the lens, anyway. We put it in the middle of the table and, as those around it speak, it eventually shows remote attendees an image of the speaker, splitting the video as necessary to show multiple speakers or, for example, for where they were and where they now are (while it catches up). It is strange to hear it adopt others' voices.
mtbc: maze L (green-white)
Unexpected developments left me with more vacation time for this calendar year than I had initially expected. I figured that I should finally perform a filial duty and take my parents' ashes on perhaps a last visit to Cornwall for me and scatter them there. I am conscious of how much of my thinking is, on its face, irrational. For example, whom does this trip benefit? It is not as if I believe in an afterlife. So much of what I believe turns out to arise simply from received wisdom about how one ought to behave. Rational or not, it seems the right thing to do so I have now made the related bookings for the middle of fall after the summer vacation folks will be long gone.

I also hope to move further toward sorting through my parents' photographs. I took backups of their hard drives and flash drives before I wiped them but had left things there. My work is on software for organizing, annotating and sharing one's images so I may as well start clearing the obvious clutter from my parents' data then arrange the remainder using the software I work on. I can't help but be reminded of Roy Batty's, All those moments will be lost in time, like tears in rain. I won't even know where some of their photographs were taken or of whom.

As usual, I follow what my instinct tells me: I shall preserve and eventually organize my parents' photographs. Regardless of if it is a good thing to do, it might be quite interesting. I will try not to trouble myself over what meaning those photographs had for them or that others should think similarly.

As a teenager I was beset by existential angst that had me reading authors from Dostoyevsky to Sartre for clues to how to give my life any meaning. In my thirties I was struck by a deep depression that took me years to climb out of. That healing process changed me and, among other things, somewhat inoculated me against despair. It's partly a matter of perception. The things that matter to me will someday be forgotten by all. I must accept that, whatever their value, the old things pass and make way for the new.

I have been happy to leave these inherited items alone, to procrastinate considerably. As well as the photographs from the computers I still have some physical items that I inherited, such as my father's coat which is presently in the attic. Likewise, I preserve the physical items but am in no rush to engage with them. It will get easier with time.
mtbc: maze I (white-red)
The weather has been clearing up somewhat although, as is typical for Britain, it remains changeable. My right side continues to heal from whatever happened to it. I am still favoring my left arm even more than usual but I no longer face some movements with trepidation and I expect that after another week or so the issue will barely be perceptible.

At work I seem to have finally figured a fix for the mysteriously failing test. This is most agreeable as it threatened to block release and I had little idea what was happening. Indeed, the fix is just the latest in a series of optimistic guesses about some dimension of the issue.

With that failing test there is some technical detail. )

Yesterday evening's workout went fairly well. I have a hesitant theory that I tend to have an easier workout after a more successful workday.
mtbc: maze I (white-red)
Both the hot bath and the embrocation were agreeable. Acetaminophen and codeine banished my headache and it has not returned. Also, the sun came out a little, even enough for some people to mow their yards. I still skipped hair-trimming but I ran some laundry and mostly finished the agenda for tomorrow morning's (not) stand-up meeting.

I guessed a fix for the failing test which tomorrow can be tried on the server whose configuration and data appear to trigger it well. This afternoon I repeatedly tried to trigger the problem on my work laptop but since applying the fix have been unable to reproduce it so I am cautiously optimistic.

Update: I got to run the test this evening thanks to others working today. Unfortunately my optimism was misplaced. We'll see what inspiration the new week brings.
mtbc: maze L (green-white)
My ribcage remains sore but maybe a little better, certainly not worse. I am now fairly used to it and it is easy to push out of my mind and work around it. Sneezing remains to be avoided. I appear to have awoken with another headache that is so far defying medication. I am also a little congested; perhaps that's connected. I still wonder what triggers the headaches.

It's another dreich morning and my workout went slowly and was not easy, just like Friday's. That's another variable that I am poor at predicting. Yesterday's workout was fine.

I had a few days off my diet last month, mostly due to circumstances having me not eat at home or avoid driving far while fasting, and I gained over a pound. One month's data isn't enough to cause me to change anything but it does perhaps underscore the need for consistency. I am coming to the point where it is a relief to be back on my diet because I know it works.

I haven't figured out anything promising about that failing test last week at work. I don't think that I am to blame but the problem still very much falls within my bailiwick and is a critical blocker. Last week I fixed a separate issue with the same subsystem that was a clear logic error on my part. Occasionally I think of something that might help with this current bug but so far nothing has stuck. It is reasonable for people to ask for an ETA for a fix but I am unable to hazard a guess. I do now have another optimistic bugfix to try later. A facet of human cognition that fascinates me is how ideas come to us.

I try to be cautious about allowing my behavior to be too great a slave to my moods. However, given all the above I don't feel dynamically enthusiastic today. I was going to trim my beard and suchlike but at this point I think I might just take a hot bath, apply more embrocation and cut myself some slack until I feel better.
mtbc: maze J (red-white)
I have been free from headaches today but my previous pain has developed into the right side of my ribcage being generally ornery. It feels like some kind of soft tissue strain and I had hoped that it would heal more quickly. It isn't greatly disabling; I can still sleep fine, I don't even need painkillers. Still, it doesn't much like my getting out of bed or inhaling deeply and I really don't relish having to sneeze or to change my footwear. This evening I tried applying an embrocation which at least feels nice, from the menthol or camphor or whatever; I don't know if it helps. The pain's mercurial, moving quickly between absent and, ha, you forgot and tried to move, now for your punishment.

My Ansible work got put aside because shortly before next week's software release I thought of a test we could do on that product and yesterday afternoon the test failed. I have my work laptop at home this weekend for gathering a bit more data and in case I think of why the problem might occur. It seems intermittent; I hope to at least grab some debug logs and other state for a good and a bad (but otherwise similar) run then compare though I fear that the smoking gun won't be in that difference. The intermittency makes me try to think of where there could be a relevant race condition.

I feel as if I have been pushing half-done work tasks onto the stack for the past half-year or so and I like to imagine that the coming half-year might let me resurrect and complete that series of interrupted tasks before I resurface and ask what comes next. It may not be very critical but I do prefer to leave things tidy.

For this coming week I am also to organize our daily morning meetings which are mostly about all what needs doing today and who is to do it. This ranges across errors in server logs, questions from users, code that needs review, whatever comes up. It's something that I've been helping with for a few years now.

The weather for the past couple of days has been what the Scots might term dreich though it looks to be clearing up tonight.
mtbc: maze J (red-white)
I slept well again then awoke without a headache and it was lovely. A mild one threatened at times but overall I had a much better day today. The pain in my side and shoulder is indeed reduced as projected. I made less progress with Ansible at work than I had hoped; somehow I was distracted from it by various other things.

Update: Sneezing remains something to be avoided; my side really doesn't like it.
mtbc: maze J (red-white)
As expected, my shoulder and side are a little improved today; I still expect them to be fine by the weekend. After work yesterday I did still manage to get useful tasks done, mostly ones I would normally do at the weekend except for that we didn't get back from England until late Sunday afternoon, with more Lancashire cheese in hand. At work I have been making slow but steady progress with learning some basic Ansible; it helped to be pointed to our repository of roles which are amenable to git grep --recurse-submodules …. Today I got a simple additional role to seem to actually work despite my having had a headache for what must now be over twenty-four hours. Painkillers have at least reduced it somewhat. Unfortunately I am no closer to identifying triggers.
mtbc: maze I (white-red)
I have Java methods taking Boolean arguments and I want to test every combination of those. To have our testing framework try those combinations I need to provide it with a two-dimensional array of the n-bit Boolean values. The code I once had is, more Java code. ) I thought that was quite neat. However, with advances in both Java and Google's Guava one can now replace all that with, less Java code. ) Admittedly I doubt that either is easily read.
mtbc: maze C (black-yellow)
A few weeks ago I mentioned a slow, tricky period at work battling popular enterprise software libraries and, later, that things had started going better again. Last week I caused some amusement at a meeting in responding to a comment about writing parsers in PL/pgSQL that such would be one of the better tasks I have been given. Sure, my favorite parser writing so far was over a decade ago in Haskell, using Frisby and Parsec, but, while PL/pgSQL is as limited and basic as, say, PostScript (if we ignore the font stuff), that it is basic really helps. It is well-documented and the abstraction that it does present simply works.

In contrast, the frustrating technologies are those where they purport to offer a simple helpful view but the illusion is repeatedly shattered as unexplained dragons keep breaking out from inside. The best software for building things, of which I also offer Basser Lout as an example, is that where you ask even more than it seemed was promised and it still works seamlessly: one cannot help but suspect that some good, clean design underpins them rather than an unholy nest of worms that are not all entirely friends with each other.

Perhaps in contrast to that tricky period, recent weeks at work have felt rather productive. Admittedly, some of the to-do's that I checked off the list were trivial: a few are but minor changes to our codebase, even to comments, but still worth doing in my opinion. Others do involve more code, largely bugfixes, but again they were clearly bugs in our code, rather than unclearly arising from interactions with third-party code, so they were far more amenable to inquiry and correction than my challenges this time last month.
mtbc: maze C (black-yellow)
I like excuses to have to think about the code I am writing. Last week I spent a couple of days working on a script for deleting the data of users of our demo server. Their data is but temporary. ) In deciding which users' data to delete I wondered if I could at least construe the question multi-criterially and have the script make Pareto-optimal choices.

As for what those multiple criteria might be: for a user they could be how long it is since they last used their demo account, how much disk space their data takes and how many inodes it takes. Another criterion for a deletion plan might be how many users the plan affects. For such plans, if a user is to have their data deleted then the plan could target all the users they Pareto-dominate: where that other user logged in even longer ago or uses even more resources without being better on any count. Once I worked on what could be a plan-choosing interface. )

The cleanup of accounts on the demo server was just one of the side projects I looked at and I kept it a bit simpler than above. )

I greatly appreciate opportunities to think mathematically about my work. I also value others' ability to bring such thinking to bear. )
mtbc: maze G (black-magenta)
Yesterday morning I took a break from testing the next version of our Image Data Resource to join the School of Life Sciences' annual carols. Although there were many attendees, at first I was the only one from our immediate group who joined. I sing poorly but I have a churchgoing background so I was familiar enough with the words and melodies to try to encourage singing among the congregants in my vicinity. Given that we have many students and staff from overseas I suspect that it may have been some impediment to try to negotiate some of the archaic English, especially at the lively tempo: we rarely had more than a beat in between verses. The music was provided by piano, violin and saxophone, plus what I would guess was a tambourine that I heard but did not see. I was pleased that a couple of others still working on the testing looked down from the internal windows to see me there caroling and decided to come down and join in. I like to maintain what few traditions are still easy for me to come by and I rather enjoy the melodies of some carols such as We Three Kings and O Little Town of Bethlehem (to Forest Green).
mtbc: maze C (black-yellow)
Waiting on a railway platform at the station in Perth early on yesterday's frosty morning I saw modest modern enclosed structures with a door: waiting rooms that provide shelter. I explored my nearest and found inside an electric heater with a button one could push to turn it on for a while. I suspect that the heater's power was dwarfed by its circumstances: I noticed little effect even directly underneath it. Still, I gave them marks for effort. Better still might have been an enclosure from which one could read an announcements board.

I had mentioned speaking at a symposium last week: that went fine. Yesterday I was off to another, this time on microscopy. Those talks often have pretty photographs and videos: indeed, this time anaglyphic glasses were distributed to the audience for a three-dimensional experience of images such as of the microstructure of clays. I realized that the red-green probably works even for the colorblind.

Not having much general background in biology I always learn plenty. Tidbits from yesterday included the news that chickens don't have lymph nodes and their spleens are rather different from ours. Additionally, host-specificity varies greatly across Salmonella enterica: for example, typhoid is caused by Salmonella Typhi which infects humans only. In some cases the diagrams quite amuse me: for example, among my notes I appear to have written, Cthulhu holding credit cards then their eyes flew off. I conjecture that the payment cards' magnetic strips were channels through which to permeate mitochondrial membranes.
mtbc: maze I (white-red)
Sometimes I change a bunch of code, get my changes working, then tidy up my mess, even working from the resulting large diff to recreate a series of commits that capture simpler logical steps. In thinking about some code reorganization yesterday I noticed that it includes activities that could be amenable to automated analysis:
Broadly I have the sense that things are going well if my code size is reducing and the average amount of in-scope state is also reducing: then I am mostly left with having to name the subparts. Those measures are among my proxies for if each part of the code is more easily understood and easier to write tests for. I can imagine that there has probably been some active research into the question of automated code tidying to make it clearer though analyzing data dependency patterns, detecting similar code and characterizing its differences, etc. I wonder if it has got anywhere.

This was especially in my mind over the past couple of weeks as I have had to do plenty of code tidying. )
mtbc: maze C (black-yellow)
I had a difficult end to my workweek. Yesterday afternoon I suffered a migraine which felt oppressive. The previous evening I had difficulty getting to sleep. A considerable challenge though was my actual work. I was adapting some previous code and I had wrongly hoped that the initial changes would be small.

On a couple of fronts it turned out that the changes instead required deeper changes in what information is needed where. The code is rather multifunctional and it was difficult for me to determine what the new API should be between parts of code that knew things and others that used them for various purposes: with feeling tired and unwell while finding that the hope of easier changes was ill-founded, understanding the problems and rearranging how the code operated required more remembering and imagining than my brain felt like doing. Still, at the close of business today my changes appeared to be working: I expect to spend Monday on tidying and further testing, also hoping that the next couple of steps go more smoothly. To a user, the project's behavior does not yet look much different but it is now far readier for coming improvements.

I had greatly desired to achieve at least some tangible progress on the project and did not have something menial and comparably important to focus on instead. I am glad that I did manage to bring the code back to some semblance of useful order just in time for the week to end; I am now glad to get a couple of days' break.
mtbc: maze C (black-yellow)
Despite my tiredness I seem to remain effective at my day job. Last week mostly I focused on improving the process by which microscope images are transferred from client software into the OMERO server. This is a complex process with many substeps and variables depending on configuration and the kind of image data being imported.

I was largely productive but did run into a couple of interesting issues. One is that I had found my way to Java's ExecutorService class but would prefer to be notified when any of the submitted threads complete without having to poll them. I now find that the easiest solution may be to use ExecutorCompletionService so that will be a task for Monday.

Another issue is that for writing the imported image files on the server, together with parent directories, the import is running in the context of a single database transaction and our file storage has the actual filesystem objects but also corresponding ownership metadata in a database table that allows OMERO's permissions system to determine quickly who may access the file. The server complains when there is a database row or a filesystem object but not both.

There is a race condition when multiple imports need to create the same parent directory. One thread may create the filesystem object and write the ownership information. Before that thread's transaction commits, a different thread may detect that the filesystem object already exists and, thanks to isolation, not see the corresponding ownership information anytime soon. So far an easy but robust solution to this has not come to my mind. I do provide the workaround of allowing users to configure the server so that image data is written within a parent directory named for the server thread that is managing the import.

Profile

mtbc: photograph of me (Default)
Mark T. B. Carroll

May 2025

S M T W T F S
    123
456 78910
11 121314 15 16 17
18 192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 20th, 2025 03:15 pm
Powered by Dreamwidth Studios
OSZAR »