text:
LETTERS: Two states? & What next for the left in Hungary

Submitted by SJW on 1 May, 2018 - 9:22 Author: Andrew Northall, Martin Thomas and John Cunningham

For a single democratic Palestinian state

I would like to express some thoughts relating to the article ‘Gaza mobilising for an internationalist response’ by Martin Thomas and your editorial ‘For an independent Palestine alongside Israel’ (Solidarity 466)

I find it hard to see how the 1947 partition could ever have successfully established two separate states within such a relative small and narrow geographical area, both dependent on the same scarce natural resources, and each by definition with their own armed state machines inherently hostile to each other.

Even harder with all the history which has created and moulded the current State of Israel and its population into what it is today coexisting with a genuine Palestinian State.

Martin’s comment that “Israel could gazump Hamas politically by conceding a genuinely independent Palestinian state in contiguous territory alongside Israel” is rather fanciful. Why on earth would any Israeli government voluntarily allow the creation of a hostile, armed and aggrieved state on what it regards as its own territory, and so intimately alongside much of the official border of the Israeli state? They would see it as going to bed with a tiger and really hoping it did not ravage and eat them by breakfast.

Equally, I can’t ever see the Palestinian people ever agreeing to an incredibly shrunken and circumscribed state based on the West Bank and Gaza, or a “state” which would be little more than an autonomous region of a Greater Israel, allowed no independent armed forces to defend its sovereignty.

I would question your slogan of “two nations, two states.”

Surely, we (whoever we are) do not advocate every nation or nationality should or even must have its own state? As Marxists and also pragmatists, we should not be in favour of either breaking up individual states (we have seen the appalling anti human consequences of what happened in Iraq, Yugoslavia and also now Syria), or creating new ones for each nationality. How many states would this equate to for say the United Kingdom?

Your editorial refers to the establishment of two states but with “eventually with free movement and open borders...leading (ultimately) to closer federation (of the two states.” An implicit recognition that actually unity within a wider state is the more appropriate and realistic solution.

My own response to the fundamental issue of two nations (or peoples as I would prefer) in such a tightly restricted and contested part of that part of the world would be a state covering the whole of what is now historic Palestine (i.e. current State of Israel plus Occupied Territories) in which all existing peoples in that region would have complete and equal political, civil, social, cultural and religious rights guaranteed by that state and backed by its neighbours and the United Nations, especially the Security Council.

The special question of national rights raised by Martin and your editorial could be addressed through some form of joint and equal authority representing the Israeli/Hebrew/Jewish people and the Palestinian Arab people. Backed by the UNSC? That would ensure that any majority in a democratic government was not able to inappropriately act against or to promote the interests of any specific national group.

My own view is that the Law of Return i.e. the right of any Jew in the world to settle in Israel is ridiculous and should be ended. Any settlement would need to address the costs and consequences of all those displaced in the region as a result of decades of conflict. That, obviously, can’t mean people returning to their land and homes of 70 years ago, but it does mean providing concrete material conditions for them to live a safe, healthy and fulfilling life within the new state.

How to get from here to there? A two state solution is clearly out of the question now, if it ever was. One option is for the current State of Israel to be overthrown and replaced by a new Democratic Palestinian State. Current Israel is extremely military strong and nuclear armed. Overthrow and destruction will lead to the similar destruction of the Israeli/Hebrew people.

The current reality is a Greater State of Israel. What are the prospects of engaging with the majority Israeli working class, detaching them from the imperialist caste and class ruling them, and working with Palestinians and other Arab people to transform the current State into a genuinely democratic State for the region in which all peoples have guaranteed, individual, collective and national rights? As happened for example in South Africa?

We need to offer both the Israeli and the Palestinian peoples something which is greater than what they either have now or aspire to, and which could guarantee and ensure the rights and equalities of them both as nations and peoples, and as workers and human beings.

Andrew Northall, Kettering

What next for the left in Hungary?

According to a 2004 academic study (www.jstor.org/stable/1601607) of “the Hungarian voter”, Hungary shows a strange “redefinition of the left-right spectrum”.

“Namely, party elites on the left [this refers to the Socialist Party, legatee of the old ruling party] are more in favour of classical neoliberal economic policies, such as rapid privatisation, foreign investment, and tuition fees, while the rightist elites are more disposed toward protectionist policies...”

The “left” is defined as left only by a more liberal and moderate attitude on church-and-state, civil liberties, and immigration.

This picture of a left which is, on some economic issues, more right-wing than the right, must be a big part of the reason why the strident and self-proclaimed right wing has dominated in Hungary since the 2010 election, held in the wake of a big slump in 2009 (7% decline in GDP), following the 2008 world crash.

John Cunningham’s recommendation of a united bloc of the sort-of-liberal parties against Fidesz is no answer to this (Solidarity 466).

It is like the 1930s “Popular Fronts”, except in those there were parties at least somewhat based on the working class and at least in principle, at least for the “next stage”, advocating socialistic policies, which chose “for now” to bury themselves in alliances with discredited bourgeois liberal parties.

In this case the “Popular Front” is to be made only by the anti-socialist liberal-ish parties. So the task of whatever small socialist groups exist in Hungary is to try to lobby the anti-socialist liberal-ish parties — not receptive to left influence, since on John’s own account they suffer from “utter political bankruptcy” — into sinking their differences?

And will the socialists then sink what differentiates them and join the “utter political bankruptcy” in the name of unity?
For socialists in Hungary to propose independent politics and independent organisation is surely not a quick fix. But then there is no quick fix. In the short term, as John says, “things can only get worse”.

Given the conditions in Hungary, socialists should surely seek to join with, say, the Socialist Party, or Greens, in demonstrations or such to defend civil liberties and migrant rights — but at the same time, I would argue, they should build an autonomous political force left-wing both on economic and on civil-rights issues.

Martin Thomas, North London

On the whole I take on board Martin Thomas’s criticism of the conclusion in my article “Caesar marches on in Hungary” (Solidarity No. 466). In fact, I wanted to avoid the idea of a united bloc of “sort of liberal-ish parties” by using the expression “left-oriented coalition”.

Clearly the situation in Hungary is extremely discouraging. I haven’t been back to Hungary for something like 5 years and it is difficult to write about this kind of political landscape when you no longer have your “ear to the ground” as it were.

Indeed it is indicative of the problems in Hungary that most of the people I once knew have left the country or retreated into a kind of “silence of the lambs” or internal exile.

One of the big questions is: where will the forces of an autonomous left-wing opposition come from? The Socialist Party, as I said in my article, is utterly bankrupt, mainly because of its appalling record when in office – a number of its most prominent members are out-and-out Thatcherites – and the stench of corruption which permeates the top and middle levels of the party; all of which has contributed enormously to the national drift to FIDESZ (who are, of course, just as corrupt!). There are some in the ranks of the Socialist Party who still believe in the basic ideas of socialism and it is quite possible they could be drawn into some kind of anti-FIDESZ united front but, as an organisation, the Socialist Party is part of the problem not the solution.

When I lived in Hungary (1991-2000) I occasionally met with a group called the Left Alternative and attended a few of their conferences (at one of these Ken Livingstone was a keynote speaker). They were mainly a discussion group which, I hasten to add, is not to be sniffed at – there was a lot to discuss and since 1989/90 the situation for the left has been monumentally difficult. I don’t know if they still exist but I mention them to demonstrate that the idea of centres of resistance, however small, is not an impossible dream even in the unfavourable conditions prevailing in Hungary.

If an anti-FIDESZ united front could be built by left-wing activists it would, I’m sure attract some Greens and possibly some of the better liberals from the “liberal-ish” parties. Nor should it be ignored that, at the level of fighting for civil-rights, some of these individuals have honourable records, going back to the 70s and 80s. I know little about the situation of the trade unions in Hungary today but I suspect it is not good. Even by the early nineties the trade unions had seriously fragmented.

Again I agree with Martin – “there is no quick fix”. The study that Martin cites is indeed very interesting. I think there are few places in Europe (Northern Ireland is one that springs to mind) where history weighs so heavily on the present as it does in Hungary.

I hope that the editors of Solidarity would consider a longer more in-depth article from me in which I would like to explore this history and why/how this “strange” situation has arisen and also try and say a bit more about “Christian nationalism” and “Orbanism” in Hungary.

John Cunningham, Lancashire

Add new comment

This website uses cookies, you can find out more and set your preferences here.
By continuing to use this website, you agree to our Privacy Policy and Terms & Conditions.


Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: application/xhtml+xml

WARC-Type: response

text:
pic Danny North

Following the highly successful 2017 tour in celebration of the band’s seminal album, The Joshua Tree Tour, 2019 will see the band make a much anticipated return to New Zealand and Australia for the first time since the record-shattering U2 360° Tour in 2010, as well as the first Tokyo shows since the Vertigo Tour in 2006. The Joshua Tree Tour 2019 will also bring U2 to Singapore and Seoul – for the first time ever – with what promises to be very special concerts from “the biggest band in the world” (The Guardian).

Special guest Noel Gallagher’s High Flying Birds is confirmed as support for  the dates in New Zealand and Australia with Noel saying, “We, NGHFB, are beside ourselves. The Joshua Tree 2017 Tour was some of the most fun we ever had. It will be both an honour and a pleasure to share the stage with our friends and comrades once again. It’s gonna be a ripper!!!!!”.

Released to universal acclaim on 9th March 1987 and featuring hit singles “With Or Without You”,“I Still Haven’t Found What I’m Looking For” and “Where The Streets Have No Name”, The Joshua Tree went to #1 in the U.K, Ireland and around the world, selling in excess of 25 million albums, and catapulting Bono, The Edge, Adam Clayton and Larry Mullen Jr “… from heroes to superstars” (Rolling Stone).

The Joshua Tree Tour is a celebration of the original album and tour of the same name undertaken by U2 in 1987 and features the complete album played in sequence along with a selection of highlights from U2’s extensive catalogue of songs. The innovative staging includes a specially commissioned series of haunting and evocative films from Dutch photographer, film-maker  and longtime collaborator Anton Corbijn – whose iconic photography accompanied the original recording  – in brilliant 8k resolution on a 200 x 45 foot cinematic screen, the largest high-res LED screen ever used in a touring show.

Bono said “It’s only taken me 30 years to learn how to sing these songs and it’s great to be able to say that I’ve finally caught up with the band. Our audience has given the Joshua Tree a whole new life on this tour. Doing these shows has been very special for us, a lot of emotion… From the despair of how relevant some of the dark songs still are, to the joy, pure fun of the staging… it’s quite a ride. And now we get to do it all over again. Auckland, Brisbane, Melbourne, Adelaide, Perth, Sydney, Tokyo, Singapore, Seoul… We’re coming for you”.

“We really, REALLY wanted to bring The Joshua Tree to New Zealand, Australia and Asia” added The Edge. “We promised we would and finally, now we can say that we will see you in November… It’s going to feel like a homecoming and we are very excited”.

The Joshua Tree Tour 2019 kicks off in Auckland on 8th November and will visit Brisbane, Adelaide, Melbourne, Sydney and Perth, before moving on to Singapore, Tokyo and Seoul. Tickets for the NZ/AU shows go on sale on Tuesday 11th June  2019 (times vary per city). subscribers will have first opportunity to purchase tickets starting Tuesday 4th June through Thursday 6th June with a 4 ticket limit (see for details).

In a first for any artist performing in New Zealand and Australia, and to ensure fans have the best access, stadium floor tickets for all the band’s NZ/AU shows will be paperless with delivery via mobile devices 72 hours prior to the applicable show. There will be an 8 ticket limit for general public sales.
In Japan reservations for subscribers will begin on Tuesday 4th June. Pre-orders via PIA and ePLUS begin Friday 14th June, and general sale for both performances will begin Saturday 20th July.  There will be a 4 ticket limit for subscribers and an 8 ticket limit for public sales.

In Seoul, the ticketing presale for subscribers will begin on Monday 10th June with tickets on general sale Wednesday 12th June. There will be a 4 ticket limit for subscribers and an 8 ticket limit for public sales.

Date and venue information for the Singapore show soon to be announced.

08 November              Auckland, NZ              Mt. Smart Stadium
12 November              Brisbane, AU              Suncorp Stadium
15 November              Melbourne, AU            Marvel Stadium
19 November              Adelaide, AU               Adelaide Oval
22 November              Sydney, AU                 Sydney Cricket Ground
27 November              Perth, AU                    Optus Stadium

04 December              Tokyo, JP                    Saitama Super Arena
05 December              Tokyo, JP                    Saitama Super Arena
08 December              Seoul, KR                   Gocheok Sky Dome

For complete tour and ticket information, visit:

warcinfo:
isPartOf: CC-MAIN-2020-05
publisher: Common Crawl
description: Wide crawl of the web for January 2020
operator: Common Crawl Admin (info@commoncrawl.org)
hostname: ip-10-67-67-129.ec2.internal
software: Apache Nutch 1.16 (modified, https://github.com/commoncrawl/nutch/)
robots: checked via crawler-commons 1.1-SNAPSHOT (https://github.com/crawler-commons/crawler-commons)
format: WARC File Format 1.1
conformsTo: http://iipc.github.io/warc-specifications/specifications/warc-format/warc-1.1/


WARC-Identified-Payload-Type: text/html

text:
Enable Enterprise Connections

Enable Enterprise Connections

This guide will show you how to enable enterprise connections for applications using Auth0's Dashboard.

To enable your enterprise connection, you should have already set it up.

  1. Navigate to the Connections > Enterprise page in the Auth0 Dashboard, and click on the connection type to view.

Select Connection Type

  1. Click the name of the connection to view.

Select Connection

  1. Click the Applications tab, and enable or disable the connection for the appropriate application(s).

Enable Connection for Applications


text:
Tag Archives: Inspiration

The origins of a memoir

Until the day before I actually began working onThe Primal Contradiction”, I had never in my life thought seriously about sitting down and writing a book.

I was supposed to tell my story in this way, describing everything about my search for the truth.

I was supposed to tell my story in this way, describing everything about my search for the truth.

The immensity of such a project seemed unattainable to me, well beyond anything I believed I was even capable of. Early in the morning on that day, however, I earnestly asked for help, for a way to be lifted from the everydayness of the mundane existence I seemed trapped in, neither knowing the reason why nor having the faintest inkling of what the answer might be that I was searching for. And then, all at once, I clearly perceived the message unfold within my awareness.

I knew my direction had been pointed out to me and that, along the way, others’ perceptions would need to be considered before my own. I was supposed to tell my story in this way, describing everything about my search for the truth. Consequently, I knew that I would be doing exactly what I had always wanted yet feared to do: reveal exactly what had happened to me more than thirty-five years ago.

As a young boy, I grew up believing that my observations were sound, that interpretations and classifications were important. I was overflowing with personal opinions, committed to upholding a system that I employed to evaluate everything that was experienced in life. However, at one point when I was a young adult, the hard-and-fast manner in which I had always perceived was suddenly and completely transformed by a power I had never known of before. All of my condescending thoughts and behaviors came to an abrupt end, and the powerfully deceptive preoccupation with self-will allowed me to go free.

Stripped of the familiar, predictable pattern of thinking that I had always known, I was abruptly suffused with a sense of awareness so foreign that I was forced to find a way to exist in a world I had previously not known. I had to let go of nearly everything I believed was true about human nature and adopt a new position from which to view the world. Almost immediately afterward, I began learning a way to be, discovering a method of living that alleviated the painful affliction of self-centered arrogance along with its devastating compulsions of prideful disdain and indignation.

Because of having lived through such episodes of personal transformation so long ago, I was ultimately able to see the truth about myself and finally did realize that I needed to share some of these extraordinary stories with others—perhaps even provide new understanding or grant a measure of insight to another. When I began writing, a mysterious, intense power subsequently pulled me through each of the chapters, enabling me to remember circumstances that I had forgotten long ago while encouraging me to maintain my focus as well as follow its direction. All along the way, it helped me to weave through the labyrinth of memories and recall the specific details that precisely describe the experiences garnered during a significant portion of my lifetime.


text:
Why is the coefficient of drag of a straight wing lower than the coefficient of drag of a swept back wing at higher supersonic speeds (above, say, Mach 2)?

  • 3
    $\begingroup$ Related, possible duplicate. $\endgroup$ – Steve V. Feb 10 '16 at 1:56
  • 2
    $\begingroup$ @fooot, that question is about low speed, but this one is about high speed. $\endgroup$ – Jan Hudec Feb 10 '16 at 6:47
  • 3
    $\begingroup$ By "high mach numbers" you mean transsonic (say ~M0.7–M1.5), high supersonic (M2–M5) or hypersonic (>M5)? $\endgroup$ – Jan Hudec Feb 10 '16 at 6:56
  • 2
    $\begingroup$ At high supersonic speeds (M2-M5) $\endgroup$ – Adder Feb 10 '16 at 17:26
  • 2
    $\begingroup$ @SteveV.: Honestly, this is no duplicate. This is not about transsonic aerodynamics, but solid super- and near hypersonic speed. Now sweep becomes a liability, which goes counter the supposedly "original" answer. Please reopen! $\endgroup$ – Peter Kämpf Feb 10 '16 at 21:50

Mark is right when he says that there is no induced drag at supersonic speeds, but it is an invitation for misunderstandings. Induced drag is replaced by lift wave drag, and all what happens is that aerodynamicists choose to use two different names for basically the same effect: Air gets pushed down.

As usual when I post a long answer, I was not quite happy with the existing answer(s). Now I have some time and try to give a better answer.

First, why does the straight wing work better only at very high Mach numbers (> 2.0)? Because at lower supersonic speed a swept wing gives overall better performance. The sweep angle $\varphi_0$ must be high enough to allow for a subsonic leading edge (Mach < $\frac{1}{cos\varphi_0}$). Then the flow around the leading edge is subsonic and creates a suction area when accelerating around the nose contour. This suction helps to reduce drag - after all, this same suction is why a subsonic airfoil in inviscid flow has no drag. Edward C. Polhamus did a lot of research on this at NACA Langley and published several papers with equations for calculating the suction force.

Once you fly faster than Mach 2, the sweep angle for a subsonic leading edge rapidly gets too high for acceptable subsonic flight, and an unswept wing becomes the better alternative since you need to accept a supersonic leading edge. Examples are the wing of the F-104 or the canard of the XB-70.

Now for the airfoil drag at supersonic speed. Because it is easiest to explain, I select a rhombic cross section: Rhombic airfoil in symmetric supersonic flow

Rhombic airfoil in supersonic flow at zero angle of attack (own work). The plus sign denotes higher pressure, the minus sign lower pressure than ambient. By selecting a rhombic airfoil, the flow is very easy to determine because the pressure only changes when the local contour gradient changes. The two compression shocks create the typical sonic boom when arriving at the ground. Note that this airfoil already creates pressure drag even at zero lift. Any airfoil thickness greater than zero and any airfoil camber will cause this type of drag where the forward-facing areas see higher pressure and the rear-facing areas experience suction. This type of drag is called wave drag. It can only be minimized by minimizing the relative thickness of whatever is supposed fly at supersonic speed.

When the angle of attack is increased, this airfoil begins to create lift. Now the compression by the lower forward shock becomes stronger and that by the upper forward shock becomes weaker. The expansion fan is the same again on both sides, so the upper rear half experiences less pressure than the lower rear half. I tried to symbolize this by the amount of plus and minus signs: Rhombic airfoil in supersonic flow at an angle

Note that the pressure difference is constant over chord, so the center of pressure is at 50% of chord length. Note also that the lift vector is perpendicular to the chord line. Since lift is defined as the force perpendicular to the direction of the undisturbed air, supersonic lift always carries a drag component which is proportional to the angle of attack - there is no suction at the nose to alleviate this! The wave drag of the airfoil at zero angle of attack still comes on top, so we have a shape-dependent wave drag and a lift-dependent wave drag component. This lift-dependent wave drag replaces the induced drag of subsonic speeds. If we compare the magnitude of both, we find:

Subsonic: $c_{Di} = \frac{c^2_L}{\pi\cdot AR\cdot\epsilon}$

Supersonic formula for 2D flow: $c_{{DW}_L} = c_L\cdot\alpha$

This doesn't look so similar, so let's now express the angle of attack $\alpha$ by the lift coefficient divided by the lift curve slope:

$$\alpha = \frac{c_L}{c_{L\alpha}} = \frac{c_L}{\frac{4}{\sqrt{Ma^2-1}}\cdot\left(1 - \frac{\lambda}{2\cdot AR\cdot\sqrt{Ma^2-1}}\right)}$$

and the lift wave drag component becomes $c_{{DW}_L} = \frac{c^2_L}{\frac{4}{\sqrt{Ma^2-1}}\cdot\left(1 - \frac{\lambda}{2\cdot AR\cdot\sqrt{Ma^2-1}}\right)}$

Now let's compare the F-104 wing, which has an aspect ratio $AR$ of 2.45 and a taper ratio $\lambda$ of 0.385: If we plug in the parameters and adjust $\epsilon$ such that both sub- and supersonic lift-dependent drag coefficients agree, $\epsilon$ would need to be 0.89 at Mach 1.2, 0.58 at Mach 1.4 and 0.31 at Mach 2.0. The dramatic rise of lift wave drag over Mach is caused by the reduction in the lift curve slope over Mach.

For slender bodies the lift curve slope is $c_{L\alpha} = \frac{\pi\cdot AR}{2}$ and the lift wave drag component becomes $c_{{DW}_L} = 2\cdot\frac{c^2_L}{\pi\cdot AR}$. For slender bodies the supersonic $\epsilon$ is 0.5, regardless of Mach.

The important conclusions from this for wing selection are:

  • Sweep does no longer help once the leading edge is supersonic.
  • Lift wave drag continues where induced drag drops off. Lift always causes drag.
  • For a supersonic wing the aspect ratio is of minor importance.

Now back to the original question: Once the leading edge is supersonic, sweep is no longer helpful. Now the best wing is straight, because it will need the lowest wing area to create the required lift at subsonic speed. At supersonic speed its lower area will translate into lower friction drag, making it better than comparable delta or swept wings.

  • $\begingroup$ I really like the clarity of your illustrations. Do you have any links for further readings (and if not, I think you should publish a book compiling your answers)? $\endgroup$ – Manu H Feb 26 '17 at 8:52

For a given lift coefficient, boundary layer drag is smaller for the straight wing configuration, and lift-induced drag is larger for straight wing. These conflicting effects may give an advantage to straight wing at low subsonic speeds.

At speeds of about Mach 0.8 you begin to get wave drag because the flow over the wing is not uniform, and in some regions you have supersonic flow. The wave drag is much less for swept wings, roughly in proportion to the aspect ratio. So when you are trying to push the plane to Mach 1, swept wings make your job easier.

At Mach 1 and a bit higher more and more of the wing region experiences supersonic flow, and the shock drag is dominant. Again, swept wings have a huge drag advantage (not to mention a control advantage).

But pretty soon, certainly by Mach 2, both wings have the same amount of wave drag, and the shock drag becomes less important as the region near Mach 1 disappears. And now we come to our first observation, about boundary layer and lift-induced drag roughly balancing. Except --

At supersonic flow there is no lift-induced drag

This is because the "wake cannot be felt upstream." More accurately, the penalty associated with turning the flow to generate lift is captured over the wing surface and what happens downstream of the wing cannot affect the flow over the wing because "knowledge" of what happens downstream propagates at the speed of sound.

So we have to remove, from our calculations for each type of wing, the lift-induced drag, which had been greater in the straight wing. And this makes the straight wing drag coefficient lower at moderately high supersonic speeds, compared to the swept wing.

I may be wrong here because fluid dynamics is famous for introducing subtle effects that nobody would have anticipated, but I believe this issue is understood and the trade-off mentioned is the heuristic reason.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.


text:
RV Refrigerator Temperature Monitor

I quickly learned that RV refrigerators REALLY suck. I already knew that my spare refrigerator at home in my garage in Florida suffered in the 90 degrees + heat.

But what I didn’t know is that RV refrigerators use a different technology than a home compressor fridge.

In a nutshell, the freezer is generally marginally adequate but the main storage is not even close. In really hot weather it cannot maintain a safe temperature.

That said, if you go to extraordinary lengths you can learn to (barely) live with it. The rules are:

  • Only put stuff that’s already cold in the refrigerator
  • When you open it immediate shut it
  • The more stuff (to a point) inside the better
  • The 12V setting provides barely enough to keep it cool so if you plan on opening it switch to propane or AC.
  • Continuously monitor the tempature

The last is achieved with this little amazing gizmo. You put these wireless monitors in the refrigerator and can watch the temperature continuously. You can even set an alarm so you will know when it’s stressing.

I’ve include an Amazon link below. Note that the AA Lithium batteries are required for the sensors for best performance in the cold. The remote temperature display uses AAA batteries of any kind but I chose Lithium also for longer life.

This gadget has worked out great. At least now I know when my fridge is dangerously warm because I parked the RV in the sun or simply put warm stuff in it.

I still hate the RV refrigerator though. I wish they had made it half the size with twice the cooling so it would work properly in the sun.

(Paid Links)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.


text:
Lena Hellblom Sjögren vs. The Swedish Psychology Association

What happened in the case of the Swedish Psychological Association, SPA vs LHS, Lena Hellblom Sjögren, accused of supporting the “pedophile theory called PAS”?

A  new book by Lena Hellblom Sjögren, LHS, was published  in 2012: The child´s right to family life. 25 Swedish case studies of parental alienation.

This book was withdrawn in spring 2013. The smearing of LHS and her work had then intensified.

No one in Sweden officially criticized the fact that a well-known big publishing house (Studentlitteratur) withdrew a book they had published, by  referring to “controversies” ,  above all to the (unjustified) decision without any motivation to exclude LHS from the Swedish Psychological Association 7 months after she had exited the union at her own request.

LHS exited her union, the Swedish Psychological Association,  SPA, in November 2011 . The background for that had to do with SPA´s resistance to learn anything about parental alienation and to investigate properly by reading LHS two investigations that had been reported to the ethical board.

In June 2012 LHS  received a letter by post with a decision  from the board of SPA telling that they had decided to regard LHS as a member, and that they had decided to exclude her. There was no motivation or explanation for these decisions.

In  the shift of January/February 2013 someone told LHS  that on SAPs website there was a defaming text on 5 pages about LHS and her work. This text was called a statement from the ethical board , sanctioned by the board of SAP. It was a text that never had been presented to LHS.

This text of defamation that was not substantiated was quoted in every court session LHS was called to since, used to argue for not paying any attention to her  investigation in that case, or to her expertise witness on parental alienation.

LHS sued SPA. There was a preparatory meeting in the district court of Stockholm in June 2014. It was decided that there should be a court session in December.

The judge also demanded  the SPA lawyer to write down the explanation for their exclusion decision. He after some time instead suggested to settle. In a court decision based on the settlement  made between LHS´s lawyer and the SPA´s  lawyer it says that SPA´s  decision is without effect  because it was not motivated.

A detail LHS wants to give you is what PAS was called by an Appeal court in Sweden recently when LHS had sent them the bibliography made by professor William Bernet on literature about parental alienation. It was called the PARENTAL ABDUCTION SYNDROME  in their listing of documents . It might be something to consider in the most severe cases as a descriptive label ?

If you have any questions or comments you are welcome to contact

Lena Hellblom Sjögren PhD, licensed psychologist,Testimonia KB, mail@testimonia.se

Mobile: +46 709 88 88 68

Some more details on the matter (written in spring 2013):

I had been criticized regarding two cases  I had investigated where the children without justification had been taken into control by one parent and also had been influenced to reject the parent they were only allowed to meet occasionally,
My resignation as a member of the Swedish Psychological Association, due to their total lack of interest to learn anything about parental alienation, dated the 11th of November 2011 was accepted in a letter dated the 17th of November 2011. I decided that I did not any longer want to me a member after having tried but been refused to have the statements I had done read by the members of the Ethical board in the Swedish Psychological Association.

After half a year, in the beginning of June 2012 I received a formal letter from the Swedish Psychological Association informing me shortly that
The board of the Swedish Psychological Association had the 31st of May 2012 decided that I was to be considered a member of the Swedish Psychological Association, and that
The board had decided to exclude me as a member.

There was no information why.

After yet an another half year, on the 30th of January in 2013 a person in a parent´s organization called and asked if I had seen that the Swedish Psychological Association on its website had what this person called slander of me and my work. I didn´t know anything about that, I looked up the link I had been given and read what was called a statement from the Ethical board of the Swedish Psychological Association. It was 5 pages of unsubstantiated denigration and false information, with no mentioning of parental alienation, ending with a recommendation to exclude me as a member of the Swedish Psychological Association.

This document, that never had been sent to me, has been cited in courtt and also in verdicts in both criminal and civil cases where I have done investigations. Those who have cited this web site published statement from the Swedish Psychological Association have argued that my work is worthless, that I am unethical, and my investigations ought not to be considered at all.
A judge, a layman judge in a lower court in Stockholm, published a statement on a blog, just after I had witnessed on the 30th of May 2013. This was a case investigated by me in 2008 after which two courts had given sole custody to the father to help the 4 children to keep contact with both parents, but the mother has since then kept the children. The layman judge, a witness for the mother, called the theory of parental alienation a pedophile theory and asked how the publishing house, Studentlitteratur, that in 2012 published my latest book “The child´s right to family life. 25 Swedish case studies of parental alienation” could have published such a book in defense for pedophile fathers by an author who gets well payed by pedophile fathers to help them.

I forwarded this text to the editor responsible for psychology, whom I have had a good cooperation with when producing my book, thinking that Studentlitteratur would take action against the slander against them. Instead I got an email explaining that the publishing house had, because of the controversies and that they didn´t want to take side, decided to withdraw my book.
I asked to have a formal decision and the arguments behind such a shocking decision. The one with legal responsibility in the publishing house wrote me an email saying that they had been concerned when taking part of the statement regarding ethical issues from the Swedish Psychological Association and therefore had made their decision to withdraw my book.
9-12 July 2013 the Swedish Psychological Association will host an international conference, the 13th European Congress of Psychology.
There will be no mentioning of children being damaged, often for life, when separated from a parent and influenced to reject that parent without any substantiated cause.
After I had managed in 2008 , after years of efforts, to have an article published of the damaging effects of separating a child from a loved and loving parent and influencing the child to think that it is the child´s own will to reject that parent, in the magazine for the Swedish Psychological Association, the only reaction was from a child psychiatrist. He wrote,: don´t believe a word of what Lena Hellblom Sjögren says.
I feel confident that sometimes in the future this kind of psychological abuse of children will be accepted also in Sweden.

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut /  Ändra )

Du kommenterar med ditt Google-konto. Logga ut /  Ändra )

Du kommenterar med ditt Twitter-konto. Logga ut /  Ändra )

Du kommenterar med ditt Facebook-konto. Logga ut /  Ändra )

Ansluter till %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.


text:
Sorelle & co. Cafe

On Saturday morning, I had the pleasure of eating at the adorable Sorelle & co. Cafe at its location in Maple, a city North of Toronto.

I had heard a lot of good things from friends about this bakery & cafe, and about how aesthetically beautiful the interior of it was. Two of my best friends and I decided to try it out, and we arrived around 10 am just as it was opening.

One thing that really stood out to me about this bakery is that everything that is sold there is gluten free. I’m not gluten free myself or anything, but I’ve tried recently to reduce my gluten intake as I have a very mild gluten sensitivity and tend to get a bit bloated when I eat bread/pasta which is hard when you’re Italian.

The cafe is in this gorgeous white clapboard house that looks like something you’d see in a quaint seaside town rather than in a plaza, and it’s outside is abundant with boxes of beautiful white and pink flowers and cute little wrought iron tables and chairs.

My outfit that day; which was this romper from Urban Outfitters

One of my friends and I enjoying the sun outside of the cafe

The inside of the cafe is gorgeous- large chandeliers on high ceilings, beautifully decorated walls, and lovely patterned sofas. Everything is very modern and chic in shades of white marble and light pink.

And the bakery display was mouth watering: dozens of flavours or donuts, cupcakes, muffins, scones, brownies, cookies, and cake.

One of my friends decided on a blueberry scone, the other ordered a caramel tarte, and I decided on a chocolate crumble cookie. They had a great selection of tea blends, and coffee drinks, and I had a vanilla roobois tea over ice, and my friends had iced drinks as well.

Honestly, I had been expecting gluten free pastries to be very pricey, but for the three of us, 3 pastries and 3 generous sized iced coffee/tea drinks came to about 24 Canadian dollars- which is honestly not terrible considering the prices at places like Starbucks which have a much lesser variety of pastries let alone those that are gluten free.

I really enjoyed the chocolate crumble cookie, and it was very tasty and just the right amount of tender in the middle. My friends also really enjoyed their food as well, and I also really enjoyed my iced tea. The decor is beautiful and the atmosphere is very warm and inviting. I’m just sad that I didn’t order more pastries to try, so I will definitely be returning.

2 thoughts on “Sorelle & co. Cafe

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s


text:
From Our Correspondent: Combat and Paintball, June 4, 2016
Written by KittenWithClaws
Combat is a world created by OzySEO and Iao Moonshadow that came into being during a conversation between the two at MaxPoly’s Birthday Party. From there, Ozy and Iao became partners that combined their skills as award winning builders to create the world we fight in today.
While Iao owns and operates the world along with advertising the competitions, Ozy created and programed the games. Ozy created two games that can be played all day and all night. First is the Combat Game on Battle Contest, which has an area that takes up 3/4th’s of the world, on Saturdays at 9 pm VRT. This game runs a special 1 hour round with prizes of in-game cash and MyAW points that can go towards many different things. The second game is Paintball, which takes up the final quarter of world space, open 24/7 except for during the combat contest. This part of the world also has monthly elimination rounds that offer a Combat Credit pay out for the top two winners.

If you come in as a new player, you’re already armed with basic weapons fully loaded and ready to shoot as soon as you exit Ground Zero. You also arrive with $500 Combat Credits and a full health bar. Before you go shooting your gun off, make sure to grab some extra ammo so you don’t run out, and take a run through the firing range, sniper range, and the Zombie run where you can earn more credits that can go towards many things. With credits you can buy new weapons that can shoot even farther, more ammo so you can shoot longer, and armor so you can get shot without getting critically hit for longer.

Keep in mind, there are only two locations where you can get armor and the most advanced weapons. Look for the Future Tech Corp building on the west side of the combat zone or the Future Tech outlet in the mall at the center. Also, if you’re ever injured yet survive, look for the medical building at each side of the battle zone. Along with the health buildings there are weapons shops where you can buy basic weapons and extra ammo.

Image“Make sure to repair your armor,” is the recommendation of one of the top players, Grell Sutcliffe; a good tip to keep you alive, even after receiving a critical hit in battle. As a top player, here’s Grell’s recommendation for playing: “Sniping isn’t for everyone, but if no one comes around for a bit, don’t feel bad about leaving it to join in on the streets.”

Though this weekend had few people during the battle due to a change in time, it was still an intense battle. Also held was the monthly Paintball elimination game, a set of three rounds wherein the winners of the first two battle it out in a third. Again, very few attended the paintball game but the final round was intense, filled with back and forth splatting.

Let’s start with the Combat Game on Battle contest. This round started with only four players in the world aside from Iao; Toxor, Grell Sutcliff, KittenWithClaws, and Beauty. These four were eventually joined by Iao Moonshadow and Hydrogen.

First blood went to Toxor, a critical hit landing on Kitten early in the game. Toxor also took second blood, getting in the critical hit first between him and Grell. Both girls got their revenge though, each taking out Toxor once after a volley of shots.

A world hiccup interrupted the game for a moment, teleporting everyone out of the world before dropping them off at their homes. After the minor interruption Toxor hit Grell a second time, leading the group by two. Grell hit Toxor three times in a row to take the lead soon after that, and then Kitten hit Grell to start in the race to the top.

After a volley of shots fired and kills made, broken by a temporary leave of absence for Toxor, Kitten takes a big lead, jumping up to 8 kills over Grell’s 6 and Toxor’s 3. At almost half way through the game it looks as though Kitten might steal the win again.

Another 20 minutes were filled with volleyed shots back and forth until, in the last 10 minutes of the game a new player, Hydrogen, joined the game, getting the hang of it fast and landing a critical hit on Kitten. In the end, like so many games before, Kitten won with 18 kills, Grell taking second with 10, and Toxor taking third with 5.

After a brief pause where prizes for the game were paid out it was time for the Paintball Monthly Elimination game. Paintball is run a bit differently, while Combat makes it so that you potentially have to hit another player multiple times, depending on their armor and health, in paintball the player is reset each time they’re hit. Get hit ten times and you’re out till the next round.

Round one had 4 players, Hydrogen, LaytonRonpa, Kitten, and Mike Scarn. After some technical difficulties the first round was under way.

The first hit was Kitten, getting splatted by Layton almost right after the round started. There was plenty of back and forth splatting between all players, one hitting then getting hit in the chaos. Players would get revenge soon after being hit then get hit by another, it was almost too hard to keep track of.

ImageThe first major event was Kitten losing her touch and being eliminated at 12 minutes in by Hydrogen. Mike soon dropped out, getting stuck to often to be able to play. Layton was the final casualty at Hydrogen’s hands, getting eliminated just two minutes after Kitten. This declared Hydrogen as the winner of round one and guaranteed his participation in the fiery final round.

Round two only had Kitten and Layton playing, Hydrogen sitting out till the third round and Mike still experiencing difficulties. The two entered and waited for the game to start. The round was over rather fast, Layton landing only a few hits before Kitten eliminated her.

Round three was a Hydrogen verses Kitten super round. Both are strong players and this is how the battle went down.

Hydrogen was the first to get hit but he quickly got his revenge, hitting her back the next time they met. There was lots of back and forth, both players seeming to have the upper hand at times. Hydrogen landed 6 hits before Kitten eliminated him and took the title of June’s Paintball Elimination winner.

And that concludes June 4th 2016 events in the world Combat. Congrats to all players for a good round that presented new challenges to everyone. Hope to see you this Saturday at 9 pm VRT in Combat world for the next Combat Game on Battle Contest.

Linking to this Article

BBCode: [url=http://www.awportals.com/aw/articles/article_352/]From Our Correspondent: Combat and Paintball, June 4, 2016[/url]
Awportals.com is a privately held community resource website dedicated to Active Worlds.
Copyright (c) Mark Randall 2006 - 2020. All Rights Reserved.
Awportals.com   ·   ProLibraries Live   ·   Twitter   ·   LinkedIn


text:
How do I create an Amazon QuickSight Enterprise edition account?

Last updated: 2019-07-18

How do I create an Amazon QuickSight Enterprise edition account?

Amazon QuickSight offers Standard and Enterprise editions. For more information about Standard and Enterprise editions, see Different Editions of Amazon QuickSight.

Note: If you use AWS Directory Service for Microsoft Active Directory, create three groups before completing the following steps: one group for administrators, one for readers, and one for authors. For more information, see Managing User Accounts in Amazon QuickSight Enterprise Edition.

  1. Open the Amazon QuickSight console, and then choose Sign up for QuickSight.
  2. Under Edition, choose Enterprise, and then choose Continue.
    : To sign up as an educator, a student, or as an existing AWS user, see Setting Up Amazon QuickSight.
  3. Under Edition, choose Use Role Based Federation (SSO) or Use Active Directory. If your directory is not listed, choose Refresh list.
  4. Enter your QuickSight account name and Notification email address, and then select your QuickSight capacity region.
  5. To enable autodiscovery of data from other AWS services, choose the AWS service that you want Amazon QuickSight to visualize. For more information, see Allowing Autodiscovery of AWS Resources.
  6. After you create or select the groups and users, choose Authorize, and then choose Finish.
    Active Directory users aren't automatically notified when they're added to an Amazon QuickSight group.


text:
Ayende @ Rahien

Oren Eini aka Ayende Rahien CEO of Hibernating Rhinos LTD, which develops RavenDB, a NoSQL Open Source Document Database.

You can reach me by:

+972 52-548-6969

Posts: 6,947 | Comments: 49,477

filter by tags archive
time to read 2 min | 286 words

imageA fun feature we have back in RavenDB is the ability to run RavenDB as part of your own application. Zero deployment, setup or hassle.

The following is the list of steps you will need:

  • Create a new project (.NET Core, .Net Framework, whatever).
  • Grab the pre-release bits from MyGet.
    Install-Package RavenDB.Embedded -Version 4.1.0 -Source https://www.myget.org/F/ravendb/api/v3/index.json
  • Ask the embedded client for a document store, and start working with documents.

And here is the code:

This is it. Your process has a dedicated RavenDB server running which will run alongside your application. When your process is done, RavenDB will shutdown and nothing is running. You don’t need to setup anything, install services or configure permissions.

For extra fun (and reliability), RavenDB is actually running as a separate process. This means that if you are debugging an application that is using an embedded RavenDB, you can stop in the debugger and open the studio, inspecting the current state of the database, running queries, etc.

You have the full capabilities of RavenDB at your disposal. This means being able to use the studio, replicate to other nodes, backup & restore, database encryption, the works. The client API used is the usual one, which means that if you need to switch from running in embedded to server mode, you only need to change your document store initialization and you are done.

We are also working now on bringing this feature to additional platforms. You’ll soon be able to write the following:

This is a Python application that is using RavenDB in embedded mode, and you’ll be able to do so across the board (Java, Node.js, Go, Ruby, etc).

time to read 2 min | 338 words

imageDatabase holds data for long periods of time. Very often, they keep the data for longer than single application generation. As such, one of the tasks that RavenDB has to take care of is the ability to process data from older generations of the application (or even from a completely different application).

For the most part, there isn’t much to it, to be honest. You process the JSON data and can either conform to whatever there is in the database or use your platform’s tooling to rename it as needed. For example:

There are a few wrinkles still. You can use RavenDB with dynamic JSON objects, but for the most part, you’ll use entities in your application to represent the documents. That means that we need to store the type of the entities you use. At the top level, we have metadata elements such as:

  • Raven-Clr-Type
  • Raven-Java-Class
  • Raven-Python-Type
  • Etc…

This is something that you can control, using Conventions.FindClrType event. If you change the class name or assembly, you can use that to tell RavenDB how to treat the old values. This require no changes to your documents and only a single modification to your code.

A more complex scenario happens when you are using polymorphic behavior inside your documents. For example, let’s imagine that you have an Order document, as shown on the right. This document has an internal property call Payment which can be any of the following types:

  • Legacy.CreditCardPayment
  • Legacy.WireTransferPayment
  • Legacy.PayPalPayment

How do you load such a document? If you try to just de-serialize it, you’ll get a deserialziation error. The type information about the polymorphic property is encoded in the document and you’ll need these legacy types to successfully load the document.

Luckily, there is a simple solution. You can customize the JSON serializer like so:

And the implementation of the binder is straightforward from that point:

In this manner, you can decide to keep the existing data as is or migrate it slowly over time.

Using GOTO in C#

time to read 2 min | 309 words

After talking about GOTO in C, I thought that I should point out some interesting use cases for using GOTO in C#. Naturally, since C# actually have proper methods for resource cleanups (IDisposable and using), the situation is quite different.

Here is one usage of GOTO in RavenDB’s codebase:

This is used for micro optimization purposes. The idea is that we put the hot spots of this code first, and only jump to the rare parts of the code if the list is full. This keep the size of the method very small, it allow us to inline it in many cases and can substantially improve performance.

Here is another example, which is a bit crazier:

As you can see, this is a piece of code that is full of gotos, and there is quite a bit of jumping around. The answer to why we are doing this is again, performance. In particular, this method is located in a very important hot spot in our code, as you can imagine. Let’s consider a common usage of this:

var val = ReadNumber(buffer, 2);

What would be the result of this call? Well, we asked the JIT to inline the method, and it is small enough that it would comply. We are also passing a constant to the method, so the JIT can simplify it further by checking the conditions. Here is the end result in assembly:

Of course, this is the best (and pretty common for us) case where we know what the size would be. If we have to send a variable, we need to include the checks, but that is still very small.

In other words, we use GOTO to direct as much as possible the actual output of the machine code, explicitly trying to be more friendly toward the machine at the expense of readability in favor of performance.

time to read 2 min | 204 words

One of the features that RavenDB exposes is the ability to get results in match order. In other words, you can write a query like this:

from Employees
    boost(Address.City = 'London', 10)
or  boost(Address.City = 'Seattle', 5)
order by score()
include explanations()

In other words, find me all the employees in London or Seattle, but I want to get the London employees first. This is a pretty simple example. But there are cases where you may involve multiple clauses, full text search, matches on arrays, etc. Figuring out why the documents came back in the order that they did can be complex.

Luckily, RavenDB 4.1 give you a new feature just for that. Look at the last line in the query: “include explanations()”. This will tell RavenDB that you want to dig into the actual details of the query, and in the user interface you’ll get:

And the full explanation for each is:

time to read 3 min | 447 words

Following up on my previous post, I was asked about the use of GOTO in C for error handling.

I decided to go and look at a bunch of C code bases, and it took me no time at all to find some interesting examples of this approach.

Below, you can see a small portion from a random method in the Sqlite codebase. Sqlite is considered to be one of the best C code bases out there, in terms of code quality, number and thoroughness of tests and the quality of the project as a whole. As such I think it is a good candidate for a sample.

Here you can see there there is the need to free some resources and at the same time, handle errors. This is routinely handled using a cleanup code at the end of the function that error clauses will jump to if needed.

Note that this is very different from “GOTO considered harmful”. That article talked about jumping to any arbitrary location in the program. C (and all other modern languages) limit you to jump around only inside your own method. Even though methods are quite long in the Sqlite codebase, it is very easy to follow what is going on there.

Here is another example, which is a lot more complex. I have taken it from the Linux kernel code:

Again, I had to redact a lot of code that actually do stuff to allow us to look at the error handling behavior. Now you can see something that is a lot more complex.

There are actually multiple labels here, and they jump around between one another in the case of an error. For example, if we fail to allocate the cifs_sb we jump to out_nls, which then jump to out.  Failure to get the root will jump us to out_super and then fall into out. For out_free, it falls to out_nls and then jump to out.

In both the Sqlite example and the Linux example, we have two separate and related responsibility. We need to do resource cleanup, but that is complicated by the different stages that this may go through in the function. Given that, GOTO cleanup is the best option available, I think.

There are various defer style options for C, libdefer and defer macro looks better. But both have some runtime costs. I like the defer macro better, but that won’t work on MSVC, for example, as it require language extension.

time to read 10 min | 1947 words

If we could code for the happy path only, I think that our lives would have been much nicer. Errors are hard, because you keep having to deal with them, and even basic issues in error handling can take down systems that are composed of thousands of nodes.

I went out to look at research around error handling rates, and I found this paper. It says that about 3% of code (C#, mind) is error handling. However, it counts only the code inside catch / finally as error handling. My recent foray into C allow me another data point. The short  version, with no memory handling is 30 lines of code, the long version, with error handling, is over a 100.

If I had to guess, I would say that error handling is at least 10 – 15 %, and I would be surprised by 25 – 30%. In C# and similar languages, a centralized error handling strategy can help a lot in this regard, I think.

Anyway, let’s explore a few options for error handling:

The C way – return codes. This sucks. I think that this is universally known to suck. In particular, there is no rhyme or reason for return codes. Something you need to check for INVALID_HANDLE_VALUE, sometimes for a value that is different from zero. Sometimes the return code is the error code. In other times you need to call a separate function to get it. It also forces you to have a very localized error handling mode. All error handling should be done all the time, which can easily lead to either a single forgotten return code causing issues down the line (forgetting to check fsync() return code got data corruption in Postgres, for example) or really bad code where you lose sight of what is actually going on because there are so much error handling that the real functionally went into hiding.

The return code model also doesn’t compose very well, in the case of complex operations failing midway. It doesn’t provide contextual information or allow you to get stack traces easily. Each of this is important if you want to have a good error handling strategy (and good debugging / troubleshooting experience).

So the C way of doing things is out .What are we left? We have a few options:

  • Go with multiple return codes
  • Rust with Option<T>, Result<T>
  • Node.js with callbacks
  • C# / Java with Exceptionsmuch

Let’s talk about the Go approach for a bit. I think that this is universally loathed as being very similar to the C method and cause a lot of code repetition. On the other hand, at least we don’t have GetLastError() / errno to deal with. And one advantage off Go in this regard that the defer command allow you to much more cleanly handle state (you can just return and any resource will be cleaned up). This means that the code may be repetitive to write, but it is much easier to review.

The problem with this approach is that it is hard to compose errors. Imagine a method that needs to read a string from the network, parse a number from the string and then update a value in a file. Without error handling, this looks like so:

I haven’t even written the file handling path, mostly because it got too tiring. In this case, there are so many things that can go wrong. The code above handles failure to make the request, failure to read the value from the server, failure to parse the string, etc. With a file, you need to handle failure to open the file, read its content, parse them, do something with the value from the server and file value and then serialize the value back to bytes to be written to the file. About every other word in this previous statement require some form of error handling.  And the problem is that when we have complex system, we don’t just need to handle errors, we need to compose them so they would make sense.

EPERM error from somewhere is pretty useless, so having the file name is huge help in figuring out what the problem was. But knowing that the error is actually because we tried to write to save the data to the on-disk cache give me the proper context for the error.  The problem with errors is that they can happen very deeply in the code path, and the policy for handling such errors belong much higher in the stack.

Rust’s approach for errors is cleaner than Go, you don’t have multiple result types but the result is actually wrapped in a Result / Option value that you need to explicitly handle. Rust also contain some syntax sugar to make this pretty easy to write.

However, Rust error handling just plain sucks when you try to actually compose errors. Imagine the case where I want to do several operations, some of which may fail. I need to report success if all has passed, but error if any had errored. For a bit more complexity, we need to provide good context for the error, so the error isn’t something as simple as “int parse failure” but with enough details to know that it was an int parse failure on the sixth line of a particular file that belong to a certain operation.

The reason I say that Rust sucks for this is that for consuming error, things are pretty simple. But for producing them? The suggestion to library authors is to implement your own Error type. That means that you need to implement the Display trait manually, you need to write a separate From trait for each error that you want to compose up. If your code suddenly need to handle a new error type, you deal with that by writing a lot of boiler plate code. Any change in the error enum require touching multiple places in the code, violating SRP. You can use Box<Error>, it seems, but in this case, you have just “an error occurred” and it is complex to get back the real error and act on it.

A major complication of all the return something option is the fact that they usually don’t provide you with  a stack trace. I think that having a stack trace in the error is extremely helpful to actually analyzing a problem and being able to tell what actually happened.

Callbacks, such as was done with node.js, are pretty horrible. On the one hand, it is much easier to provide the context, because you are called from the error site and can check your current state. However, there is only so much that you can do in such a case, and state management is a pain. Callbacks have proven to be pretty hard to program with, and the industry as a whole is moving to async/await model instead. this give you sequential like mechanism and much better way to reason about the action of the system.

Finally, we have exceptions. There are actually several different models for exceptions. You have Java with checked exceptions, with the associated baggage there (cannot change the interface, require explicit handling, etc). There is the Pony language which has “exceptions”. That is really strange choice of implementation. Pony has exceptions for flow control, but it doesn’t give you any context about the actual error. Just that one happened.  The proper way of handling errors in Pony is to return a union of the result and possible errors (similar to how Rust does it, although the syntax looks nicer and there is less work).

I’m going to talk about C#’s exceptions. Java’s exceptions, except for some of them being checked, are pretty much the same.

Exceptions have the nice property that they are easily composable, it is easy to decide to handle some errors and to pass some up the chain. Generic error handling is also easy.  Exceptions are problematic because they break the flow of the code. An exception in one location can be handled somewhere completely different, and there is no way for you to see that when looking on the code. In fact, I’m not even aware of any IDE / tooling that can provide you this insight.

In languages with exceptions, you also can have exceptions pretty much at any location, which mean that you need to write exception-safe code to make sure that an exception don’t leave your code in an inconsistent state. There is also a decidedly non trivial cost of exceptions. To start with, many optimizations are mitigated by try blocks and throwing exceptions is often very expensive. Part of that is the fact that we need to capture the oh so valuable stack trace, of course.

There is also another aspect to error handling to consider. There are many cases where you don’t care about errors. Any time that you have generic framework code that calls to user code. An HTTP Handler is a good example of that. You call the user’s code to handle the request, and you don’t care about errors. You simple catch that error and return 500 / message to the client. Any error handling strategy must handle both scenarios. The “I really care about every single detail and separate error handling code path for everything” and “I just want to know if there is an error and print it, nothing else”.

In theory, I really love the Rust error handling mechanism, but the complexity of composability and generic handling means that it is a lot less convenient to actually consume and produce errors. Exceptions are great in terms of composability and the amount of detail they provide, but they are also breaking the flow of the code and introduce a separate and invisible code paths that are hard to reason about in many cases. On the other hand, exceptions allow you to bubble errors upward natively and easily, until you get to a location that can apply a particular error handling policy.

A good example from a recent issue we had to deal with. When running on a shared drive, a file delete isn’t going to be processed immediately, there is a gap of time in which the delete command seems to have succeeded, but attempting to re-create the file will fail with EEXISTS (and trying to open the file will give you ENOENT, so that’s fun). In this case, we throw the error up the stack. In our use case, we have this situation only when dealing with temporary files, and given that they are temporary, we can detect this scenario and use another file name to avoid this issue. So we catch a FileNotFoundException and retry with a different file name. This goes through four of five layers of code and was pretty simple to figure out and implement.

Doing that with error codes is hard, and adding another member for the Error type will likely have cascading implications for the rest of the code. On the other hand, throwing a new exception type from a method can also break the contract. Explicitly in languages like Java and implicitly in languages like C#.  In fact, with C#, for example, the implied assumption is always: “Can throw the following exceptions for known error cases, and other exceptions for unexpected”. This is similar to checked exceptions vs. runtime exceptions in Java. But in this case, this is the implicit default and it gives you more freedom overall when writing your code. Checked exceptions sounds great, but they have been proven to be a problem for developers in practices.

Oh well, I guess I won’t be able to solve the error handling problem perfectly in a single blog post.

time to read 2 min | 344 words

When we get bug reports from the field, we routinely also do a small assessment to figure out why we missed the issue in our own internal tests and runway to production.

We just got a bug report like that. RavenDB is not usable at all on a Raspberry PI because of an error about Non ASCII usage.

This is strange. To start with we test on Raspberry Pi. To be rather more exact, we test on the same hardware and software combination that the user was running on.  And what is this Non ASCII stuff? We don’t have any such thing in our code.

As we investigated, we figured out that the root cause was that we were trying to pass a Non ASCII value to the headers of the request. That didn’t make sense, the only things we write to the request in this case is well defined values, such as numbers and constant strings. All of which should be in ASCII. What was going on?

After a while, the mystery cleared. In order to reproduced this bug, you needed to have the following preconditions:

  • A file hashed to a negative Int64 value.
  • A system whose culture settings was set to sv-SE (Swedish).
  • Run on Linux.

This is detailed in this issue. On Linux (and not on Windows), when using Swedish culture, negative numbers are using: ”−1” and not “-1”.

For those of you with sharp eyes, you noticed that this is U+2212, (minus sign), and not U+002D (hyphen minus). On Linux, for Unicode knows what, this is used as the negative mark. I would complain, but my native language has „.

Anyway, the fix was to force the usage of invariant when converting the Int64 to a string for the header, which is pretty obvious. We are also exploring how to fix this in a more global manner.

But I keep coming back to the set of preconditions that is required. Sometimes I wonder why we miss a bug, in this case, I can only say that I would have been surprised if we would have found it.

time to read 5 min | 903 words

imageOne of the major features coming up in RavenDB 4.1 is the ability to do a cluster wide transaction. Up until this point, RavenDB’s transactions were applied at each node individually, and then sent over to the rest of the cluster. This follows the distributed model outlined in the Dynamo paper. In other words, writes are important, always  accept them. This works great for most scenarios, but there are a few cases were the user might wish to explicitly choose consistency over availability. RavenDB 4.1 brings this to the table in what I consider to be a very natural manner.

This feature builds on the already existing compare exchange feature in RavenDB 4.0. The idea is simple. You can package a set of changes to documents and send them to the cluster. This set of changes will be applied to all the cluster nodes (in an atomic fashion) if they have been accepted by a majority of the nodes in the cluster. Otherwise, you’ll get an error and the changes will never be applied.

Here is the command that is sent to the server.

RavenDB ensures that this transaction will only be applied after a majority confirmation. So far, that is nice, but you could do pretty much the same thing with write assurance, a feature RavenDB has for over five years. Where it gets interesting is the fact that you can make the operation in the transaction conditional. They will not be executed unless a certain (cluster wide) state has an expected value.

Remember that I said that cluster wide transactions build upon the compare exchange feature? Let’s see what we can do here. What happens if we wanted to state that a user’s name must be unique, cluster wide. Previously, we had the unique constraints bundle, but that didn’t work so well in a cluster and was removed in 4.0. Compare exchange was meant to replace it, but it was hard to use it with document modifications, because you didn’t have a single transaction boundary. Well, now you do.

Let’s see what I mean by this:

As you can see, we have a new command there: “ClusterTransaction.CreateCompareExchangeValue”. This is adding another command to the transaction. A compare exchange command. In this case, we are saying that we want to create a new value named “usernames/Arava” and set its value to the document id.

Here it the command that is sent to the server:

At this point, the server will accept this transaction and run it through the cluster. If a majority of the nodes are available, it will be accepted. This is just like before. The key here is that we are going to run all the compare exchange commands first. Here is the end result of this code:

We add both the compare exchange and the document (and the project document not shown) here as a single operation.

Here is the kicker. What happen if we’ll run this code again?

You’ll get the following error:

Raven.Client.Exceptions.ConcurrencyException: Failed to execute cluster transaction due to the following issues: Concurrency check failed for putting the key 'usernames/Arava'. Requested index: 0, actual index: 1243

Nothing is applied and the transaction is rolled back.

In other words, you now have a way to provide consistent concurrency check cluster wide, even in a distributed system. We made sure that a common scenario like uniqueness checks would be trivial to implement. The feature allows you to do in-transaction manipulation of the compare exchange values and ensure that document changes will only be applied if all the compare exchange operations (and you have more than one) have passed.

We envision this being used for uniqueness, of course, but also for high value operations where consistency is more important than availability. A good example would be creating an order for a seat in a play. Multiple customers might try to purchase the same seat at the same time, and you can use this feature to ensure that you don’t double book it*. If you manage to successfully claim the seat, your order document is updated and you can proceed. Otherwise, the whole thing rolls back.

This can significantly simplify workflow where you might have failure mid operation, by giving you transactional guarantee around the whole cluster.

A cluster transaction can only delete or put documents, you cannot use a patch. This is because the result of the cluster transaction must be self contained and repeatable. A document modified by a cluster transaction may also take part in replication (including external replication). In fact, documents modified by cluster transactions behave just like normal documents. However, conflicts between documents modified by cluster transactions and modifications that weren’t made by cluster transaction are always resolved in favor of the cluster transactions modifications. Note that there can never be a conflict between modifications on cluster transactions. They are guaranteed proper sequence and ordering by the nature of running them through the consensus protocol.

* Yes, I know that this isn’t how it actually work, but it is a nice example.

time to read 2 min | 277 words

One of the things that we do in RavenDB is try to expose as much as possible the internal workings and logic inside RavenDB. In this case, the relevant feature we are trying to expose is the inner working of the query optimizer.

Consider the following query, running on a busy system.

This will go to query optimizer, that needs to select the appropriate index to run this query on. However, this process is somewhat of a black box from the outside. Let me show you how RavenDB externalize that decision.

You can see that there were initially three index candidates for this. The first one doesn’t index FirstName, so it was ruled out immediately. That gave us a choice of two suitable indexes.

The query optimizer selected the index that has the higher number of fields. This is done to route queries from narrower indexes so they will be retired sooner.

This is a simple case, there are many other factors that may play into the query optimizer decision, such as when an index is stale because it was just created. The query optimizer will then choose another index until the stale index catch up with all its work.

To be honest, I mostly expect this to be of use when we explain how the query optimizer work. Of course, if you are investigating “why did you use this index and not that one” in production, this feature is going to be invaluable.

time to read 3 min | 533 words

You can read the full details here. The short of it is that we discovered a security vulnerability in RavenDB. This post tells a story. For actionable operations, see the previous link and upgrade your RavenDB instance to a build that includes the fix.

  • June 6 – A routine code review inside RavenDB expose a potential flaw in sanitizing external input. It is escalated and confirmed be a security bug. Further investigation classify it as CRTICIAL issue. A lot of sad faces on our slack channels show up. The issue has the trifecta of security problems:
    • It is remotely exploitable.
    • It is on in the default configuration.
    • It provide privilege escalation (and hence, remote code execution).
  • June 6 – A fix is implemented. This is somewhat complicated by the fact that we don’t want it to look like a security fix to avoid this issue.
  • June 7 – The fix goes through triple code review by independent teams.
  • June 7 – An ad hoc team goes through all related functionality to see if similar issues are still present.
  • June 8 – Fixed version is deployed to our production environment.

We had to make a choice here, whatever to alert all users immediately, or first provide the fix and urge them to upgrade (while opening them up to attacks in the meanwhile). We also want to avoid the fix, re-fix, for-real-this-time cycle from rushing too often.

As this was discovered internally and there are no indications that this is known and/or exploited in the wild, we chose the more conservative approach and run our full “pre release” cycle, including full 72-96 hours in a production environment serving live traffic.

  • June 12 – The fix is now available in a publicly released version (4.0.5).
  • June 13 – Begin notification of customers. This was done by:
    • Emailing all RavenDB 4.0 users. One of the reasons that we ask for registration even for the free community edition is exactly this. We want to be able to notify users when such an event occur.
    • Publishing security notice on our website.
    • Pushing a notification to all vulnerable RavenDB nodes warning about this issue. Here is what this looks like:
  • Since June 13 – Monitoring of deployed versions and checking for vulnerable builds still in use.
  • June 18 – This blog post and public notice in the mailing list to get more awareness of this issue. The website will also contain the following notice for the next couple weeks to make sure that everyone know that they should upgrade:

We are also going to implement a better method to push urgent notices like that in the future, to make sure that we can better alert users. We have also inspected the same areas of the code in earlier versions and verified that this is a new issue and not something that impacts older versions.

I would be happy to hear what more we can do to improve both our security and our security practices.

And yes, I’ll discuss the actual vulnerability in detail in a month or so.

No future posts left, oh my!

  1. Webinar (2):
    15 Jan 2020 - RavenDB’s unique features
  2. Challenges (2):
    03 Jan 2020 - Spot the bug in the stream–answer
  3. Challenge (55):
    02 Jan 2020 - Spot the bug in the stream
  4. re (26):
    27 Dec 2019 - Writing a very fast cache service with millions of entries
  5. Voron’s Roaring Set (2):
    11 Nov 2019 - Part II–Implementation
View all series

Main feed Feed Stats
Comments feed   Comments Feed Stats


text:
You are currently browsing the tag archive for the ‘Logo Design’ tag.

Everybody said a post on RSS would increase traffic to my blog, so here goes…

RSSlogoIs it only I?

REC, 1986, Election season. There are not many things I would like to remember from that period of blood, sweat and tears except perhaps the deep bonds of friendship we forged under fire…and my first logo.

Flashback: After the suspension/ police action that happened in our first year, it was rumoured that politicos refused to help sort out the issue because the student-body was apolitical. Anyway, soon after that NSUI and SFI units were formed in REC, and nothing would ever be the same again.

I was in B224 during the period, with Paramu, Jackie and Binod Ramakrishnan. I was a little upset about this whole politics thing, and one evening while Paramu was mugging, I had this – to use a Sangham phrase – sudden brilliant idea, ‘Let us start a movement to fight party politics in campus…Engineering Students Council Against Political Exploitation, ESCAPE for short, the tagline would be ‘Escape with us” and the logo, the letters e-s-c-a-p-e stacked to form a stairway to heaven…’

I don’t remember what exactly Paramu’s response to my idea was, but it was something on the lines of ‘smirk!’ (expression of disgust, said out loud, not a facial expression). But that very evening we were called to Thadian Vinod’s room, and briefed about the launch of…a movement that fights party politics in campus. I told him about Escape, Thadian told me the objective was not to form another party…RIP Escape.

We fought two elections under Thadian, unofficially called Anti-Pols (the world referred to us as Andi Poliyans). By the time we reached the final year, we adopted a less-confrontational name, Non-Pol, and during the election season I created the Non-Pol logo, and not that anybody cared, the logo grid.

Over the years I have had the good fortune to moonlight as a graphic designer and create logos for products, events, awards, etc. Here are my personal favourites…

CD Check Valve. Inspired by the product. Sajeev helped refine the logo. Thanks.

Theme for 2007-08. We had the budget confab in Manali. The logo combines the contours of the hills and a growth graph (The rhyme would work only in Australia)

Logo for silver jubilee stockists. The letters 2 and 5 merge to form a valve icon.

Event logo. Started as a scribble on a napkin…

Face-to-Face. Customer Interface Programme. I was trying to fit the two Fs together and the ‘2’ suddenly popped up and hit me.

Top Posts

Blog Stats

  • 86,640 hits
January 2020
« Feb


text:
looking for ttc buddy?

Discussion in 'Trying To Conceive' started by RedRose19, Apr 12, 2010.

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice


text:
Está Bien Ser Distinto

View cart “No Hay Nada Como Compartir” has been added to your cart.

0 out of 5
Time: 6:11min

Spanish version of this classic book . A story that teaches little ones  not to judge others, because they look different.

Author Information

Benedict Coulter

Benedict Coulter was born and raised in Paris, France where his father was a novelist. Benedict has written twenty children's book and is already working on his next one.

There are no reviews yet.

Be the first to review “Está Bien Ser Distinto”


text:
Event: Left Lane Loafer
Event Date/Time: December 07, 2019 13:40:00 pm
Location: Florida, United States
Vehicle Make/Model: Everest Semi truck/Semi truck
Event Description: Going south on the highway this semi truck is going on the far left lane (not the express) where there’s a sign that reads “NO TRUCKS”. Drivers who drive these type of vehicles should never ride on the left lane. They are a liability to everyone around them.
Driver Description: Chooses to drive his semi truck on the far left lane of a congested highway


text:
John Deere Longhorn Hoodie Small

Regular price $49.00

Size Small only available

John Deere fleece hoods are crafted from a premium cotton/polyester blend for a soft and more breathable feel.

This Burnout Hoodie has that soft, comfy "favorite sweatshirt" look that's very in style right now. When you put it on, you'll feel like you've had it for years... it's got the relaxed fit and feel you'll love. Plus, the styling of this casual, comfortable Hoodie is trendy, but classic.

True to size fit

Small has 40" chest

Feature tagless neck labels for ultimate comfort. The front of this sweatshirt features a longhorn skull.

60% cotton, 40% polyester.


text:
Breakfast Bars with Hazelnut Butter (Clean, paleo, vegan, gluten-free, healthy!)

Guys, summer may actually be coming! I know this because my kitchen was HOT while I was baking. To be clear, I am no where near complaining, espeically since we only get a small handful of warm days in Chicago each spring. However, if this keeps up next week may be a no-bake week 🙂

One of my summer addictions is iced coffee with hazelnut flavored syrup. Not the cleanest of treats, I realize, but I just LOVE me some hazelnut.

I decided to combine a few of my favorite things so I could have an excuse to bake with something Hazelnut flavored. The recipe itself is pretty basic and forward, and if you don’t like hazelnut you can easily swap out regular peanut butter, cashew butter, almond butter, or anything else! However, Justin’s Chocolate Hazelnut Butter really is the jam. I would even say it makes the recipe worth it.

This recipe is suitable for almost anyone – no flour, no eggs, no butter, and no dairy! Not too shabby.

Let’s do it!

  • 2 1/2 cups of gluten free oats ground into flour, or almond flour
  • 1/2 teaspoon baking powder
  • 1/2 teaspoon baking soda
  • Pinch of Himalayan sea salt
  • 3 extra ripe bananas (PS If you don’t have ripe bananas, did you know you can actually ripen fresh bananas in the oven?? Genius)
  • 2 teaspoons vanilla
  • 1/2 cup Agave
  • 1/2 cup unsweetened applesauce
  • 1/4 cup melted coconut oil
  • 1/4 cup cocoa
  • 1 packet of Justin’s Chocolate Hazelnut Butter

How to:

  • Preheat oven to 350 degrees, and spray a 8×8 pan with EVOO spray.
  • In a medium bowl, mix together dry ingredients (flour, baking powder, baking soda + salt) and set aside.
  • In a Vitamix or food processor, blend together bananas, agave, vanilla and applesauce.

  • Combine wet + dry ingredients in a medium bowl and mix well.

  • Spread batter into pan and bake for 15 minutes, or until edges are golden brown.

  • Make chocolate drizzle by combining coconut oil with cocoa and drizzle over the pan. (This part is optional, but I feel like the bitterness of the chocolate is actually a nice compliment to the sweetness of the hazelnut butter.)

  • Also optional (but definitely worth it!) cut the corner of the Hazelnut Butter packet and spread across the bars.

  • Final step: DEVOUR these 🙂 YUM!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s


text:
Forever young lifetime warranty

“A Bamboozle floor is a lifetime choice, so we back it up with a warranty to match … Lifetime cover – Bamboozle Bamboo Flooring Lifetime Warranty”

Bamboozle Bamboo Flooring Lifetime Warranty

After all, that’s the greatest advantage of purchasing a Bamboozle bamboo floor … total peace of mind! For as long as you retain ownership of your home, we’ll warrant your floor with our Bamboozle Bamboo Flooring Lifetime Warranty. That means, you can be sure your floor is going to continue to impress for as long as you’re on it. Drop us a line if you’d like all the details, otherwise we’ll provide them for you when drafting your flooring proposal.

Bamboozle bamboo flooring is exclusively available from Lifewood. Visit the Lifewood family in the award-winning timber flooring showroom in Perth, to experience and visualise how an amazing floor can transform your life. We aim to make buying bamboo and timber floors easy, enjoyable and convenient - all you have to do is choose something beautiful and Lifewood will do the rest.

Australia-wide, directly contact Morgane and Tony for this personalised Lifewood advice and service.
Morgane:  (08) 9445 9011
Tony:  (08) 9445 9011

Phone   (08) 9445 9011
Showroom   18 Hector Street West
Osborne Park,  Western Australia 6017

© Copyright 2018