text:
May 29, 2017#30 Technical Deep Dive
Implementing Factorial in 6502
Programming in 6502 has been an interesting adventure for me. I dabbled with it back 8 or 10 years ago. But I ultimately settled into coding most of my C64 projects in C. C felt sufficiently low level for my tastes. It was reasonably fast, much much faster than BASIC for example, there feels like a close 1-to-1 relationship between what you type and what eventually comes out the far end of the compiler. And it was still quite a learning curve before I was able to do much of anything useful.
Now that I'm not targeting the SuperCPU, even C feels bloated. The 6502 was just not designed for the sorts of contortions that C tries to put it through. For example, every time a C function is called the arguments are put onto the stack. The C function itself then manipulates those values on the stack as its working local memory space. This is really great for recursion or pre-emptive multitasking, but it pains me to think of what the 6502 must be doing to accomplish the stack referencing.
Once I'd decided that the stock C64 is what I will target for this particular project, I became fully committed to learning to do everything I need to do in 6502 assembly. At first it was a pretty big shock. And to be frank, it's often still shocking. Without the KERNAL and BASIC roms a C64 has almost nothing there upon which to write your code. You are literally writing against the registers of the I/O chips directly, and the only resources at your disposal to get anything done are the 6502/6510's 56 simple instructions. That sounds crazy. Well, how crazy is it? I wanted to try my hand at something both simple and complicated at the same time. Somehow I decided on writing a routine to compute factorial. How hard could that be? #FLW
Implementing Factorial in Javascript
In case you don't remember high school math, I'll remind you what factorial is. It's the product of all the numbers from a given number multiplied together counting down to 1. So, for example, 5 factorial (written "5!") would be 5 x 4 x 3 x 2 x 1 = 120. Writing an algorithm to compute the factorial of an arbitrary input is pretty simple, so I decided first to write it in Javascript. Since I'm a javascript programmer at work every day. It took me about a minute, maybe less, to see how it would work. I started with a recursive solution since that seemed the most elegant.
//Recursive
var fac = function(start) {
if(start == 1)
return start * fac(start-1);
That's it! Pretty basic. If the input is 1, return 1. But if the input is more than 1 then return the product of this times the factorial of one less than this. Recursion as we know can break our minds, but it is certainly elegant if nothing else. The whole function is only 5 lines, and very short lines at that. But more, the properties of recursion feel like they best capture the essence of factorial as a mathematical concept.
The problem with recursion is that it takes up stack space for each iteration. When I run this in the javascript console of Safari 10 on macOS, it craps out after fac(25368). If I try fac(25369), it gives a: RangeError: Maximum call stack exceeded. However, this isn't the worst or the only problem. Because long before the stack is exceeded the result of the algorithm falls into Infinity. Infinity is what Javascript returns when a number is bigger than the biggest number it is capable of handling.1 It hits this after just fac(170), which it returns as: 7.257415615307994e+306, a very big number to be sure. fac(171) returns as Infinity.
The second problem, hitting the maximum handlable number, essentially crops up because factorial grows really really fast. On the other hand, many algorithms won't grow nearly so fast but still need lots of iterations to get the answer. You certainly don't want to crap out after just 25368 iterations because of a stack overflow. So my next stab at writing this was to use an iterative loop that involves no recursion.
//Iterative
var total = 1;
while(start > 1)
total *= start--;
Writing this version of factorial took me just one more minute, approximately. It's not much longer, only longer by one line. It feels slightly less elegant to my eyes, but it is undoubtedly significantly more efficient. When I try to find the maximum number of times it can iterate before crapping out... I'm unable to find that number. What happens is that the computer just starts taking longer and longer to compute for larger and larger input numbers. But they all eventually finish without hitting weird limits like the stack overflowing. Of course, for the last however many iterations they aren't doing much besides computing Infinity * nextNumber.
It's fair to say that writing a little function that'll compute factorial for you, in Javascript, is stunningly simple. If you're a programmer who already knows how to write some code, there's nothing to it. It's also fair to say, as you'll see, that getting the equivalent results out of 6502 ASM was much much harder.
Implementing Factorial in BASIC 2.0
But let's be even more fair. The Commodore 64 as a commercial product isn't just a 6510 processor on a bus hooked up to some RAM and I/O chips. It is that, but it also includes the KERNAL rom and, more importantly for the purposes of writing a factorial algorithm, the BASIC rom. BASIC was included with the computer precisely because it made writing programs and doing some fairly sophisticated math relatively easy and accessible to the average person.
BASIC, at its core, of course is just a bunch of 6502 code. About 8K of it in fact, permanently etched into a rom. So, anything we could do in BASIC is in a very real way something that can be done with 6502 assembly. But to get there from scratch first you'd have to write BASIC, or significant parts of it. This is not what we're going to be doing in our own 6502 implementation. But, first, let's look at how one could write factorial in BASIC.
This also only took about a minute. It might have even taken less time than the Javascript version because I'd already primed my brain to know exactly what to do. Note, that I didn't even attempt to do the recursive version in BASIC, that didn't make any sense, so I just skipped directly to replicating the iterative loop version. And it works very well.
I played around a bit to find the maximum number which BASIC could handle. It is quite small compared to what Javascript can handle. Turns out to be just 33. It spits out the result of 33! as 8.68331762e+36. As soon as I try to compute 34! I get an overflow error on the line that does the multiplication. That's okay though. Any number in scientific notation that goes to the power of 36 is a pretty big number. Most regular people doing regular math on their home computer aren't going to need numbers that big.
I wanted to check of the accuracy of BASIC though, just to be sure. And what I noticed is that it's accurate but a bit less precise. BASIC gives us 8 decimal places of precision and correctly rounds the final digit. Whereas the javascript algorithm gives us 14 decimals of precision. This can be attributed entirely to the underlying floating point number implementation of both environments. I know nothing about javascript's implementation, or its relationship to the floating point features of the more advanced CPUs it's running on. But I've done a bit of reading in The Advanced Machine Language Book For The Commodore-64 by Abacus Software2 on how floating point is implemented in BASIC on the C64.
Very briefly, a number in BASIC is stored as 5 bytes. 4 bytes are for precision, and store the most significant 32-bits worth of the number. The 5th byte is signed, and represents the offset of the decimal. By convention, within the 4 bytes the decimal is always presumed to fall after the first decimal number, and the 5th byte is adjusted to normalize any value that exceeds 9. So for example, 8 is stored as "8.000000..." with a decimal offset of 0. But 12 is stored as "1.200000..." with a decimal offset of 1. (I'm goin' from memory here, don't flay me if I'm a bit off in the precise details. Instead, leave a comment below!)
This is the reason why BASIC's precision stops after 8 decimal places. Because "868331762" (bearing in mind that by convention the decimal falls immediately after the leftmost 8,) when converted to hex is $33 C1 B0 F2, and that my friends is exactly 4 bytes. Cool stuff.
Implementing Factorial in 6502 Assembly
There is nothing wrong with writing some math algorithm in BASIC. If you were in high school and you had a Commodore 64 and you wanted to use it to help you with your homework, as I used to do, writing a quick little program in BASIC is absolutely ideal. Often much better and much more expressive than a mere calculator. That is the reason it was included with the machine in the first place. Because it adds tremendous utility to a home computer. It turns a bunch of chips into a powerful programmable computational tool. Nothing wrong with that!
However, what I really wanted to know is, what is the minimum amount of code necessary to write an algorithm like factorial, on the bare and essential features of the 6502 CPU. That's a very different question. If all I wanted to do was get the answer, and all I had was a C64, I'd use BASIC. But in 6502, where do we even begin? Well, let me show you.
The essential requirements of factorial are:
The ability to loop
The ability to decrement a counter
The ability to multiply two numbers together, and
The ability to determine that the answer has been arrived at and that the loop should end.
That's enough to compute factorial. But there is one other step that I consider at least tangentially necessary to complete the picture. You need to be able to see the answer, and so even though human readable output is not strictly part of the computation of factorial, it is close enough that I have to include it. Otherwise, there would be no way of knowing if the answer it arrived at is even right.
Fortunately, looping, decrementing a counter, and comparing to see if a counter has reached 1 and leaving the loop are all standard fare. Those things are super easy on a 6502. But what about multiplying two numbers together? Oops, as it turns out, there are no instructions that support multiplication directly. Not even two 8-bit inputs with an 8-bit output. Nothing. In order to do multiplication of any kind3 it is necessary to dig deep and figure out how multiplication fundamentally works and its relationship to addition and symbol shunting, such as bit shifting and rolling.
Whenever you plan to sit down and write an algorithm (or use someone else's hard work), you have to decide what precision and range you want to get out of it. In BASIC, that decision is effectively made for you, and the choice was made to use 32 bits of precision because that will handle a heck of a lot of normal use cases. One of the powers of writing the algorithm directly in 6502 is that if you wanted 64 or 128 bits of precision, you could do that. It puts the computer through more gyrations, but the possibility is there to do it. It is not possible to get more then 32 bits of precision out of BASIC.
It is safe to say that the multiplication routines for smaller bit widths is simpler than those for larger bit widths. And so two 8-bit inputs and an 8-bit result are definitely the simplest, but the range is so cripplingly limited as to be almost useless. 6! is 720, that's outside the range of an 8-bit result. The range of 16-bit doesn't take us much further. 9! is outside the range of 16-bit. However, as this is an experiment, I want to show how an 8-bit CPU can be used to do math beyond just 8-bits, but without unnecessarily bogging us down with the complexity of going to 32 or 64 bits. But rest assured, the same way the CPU has what it takes (namely thanks to the carry) to be able to extend math operations beyond 8-bit, the principle can be applied to extend to much larger bit widths too.
;Workspace
multiplier 	 = $4e ;78
multiplicand = $50 ;80
product 		 = $52 ;82
mult16 ;multiplicand -> multiplicand lo byte
;multiplier   -> multiplier lo byte
;product      <- product lo byte
.block
LDA multiplier
LDA multiplier+1
LDA  #0
STA  product     ; Zero-out the product area.
STA  product+1
LDY  #16  			 ; We'll loop 16 times.
loop	ASL  product     ; Shift the entire 32 bits over one bit position.
ROL  product+1
ROL  multiplier
ROL  multiplier+1
BCC  skip     	 ; Skip the adding-in to the result if
; the high bit shifted out was 0.
CLC        	 		 ; Else, add multiplier to intermediate result.
LDA  multiplicand
ADC  product
STA  product
LDA  multiplicand+1
ADC  product+1
LDA  #0    			 ; If C=1, incr lo byte of hi cell.
ADC  multiplier
STA  multiplier
skip	DEY         		 ; If we haven't done 16 iterations yet,
BNE  loop   		 ; then go around again.
STA multiplier+1
STA multiplier
.bend
So here we have a 16-bit multiplication subroutine. It takes a 16-bit multiplier and a 16-bit multiplicand, and puts the product of the two in a 16-bit output. Note of course that there are lots and lots of combinations of two 16-bit inputs that will overflow a 16-bit output. The really safe way to deal with this problem is to use multiplication algorithms that have an output twice the width of the inputs. 16-bit by 16-bit input and a 32-bit output, which this routine doesn't do so bear that in mind.
Next, I did not write this routine. Sadly, it would have been beyond my ability. Instead I pulled it from this forum post on forum.6502.org. I modified it slightly to preserve the original inputs, and to improve clarity (in my personal judgement of what is clear.) There are other great examples of math algorithms with different levels of precision at Codebase64.
I don't want, nor am I well suited, to get into the mathematical details of how this works. I can say with some certainty though, that a multiplication can be acheived as successive additions. For example, if you have 13 times 5, you can initialize a running total as zero, and then in a loop add one of those two arguments to the total, decrement the other argument, and if it's not zero run the loop again. Thus adding 5 to a running total in a loop that loops 13 times. Or, the inverse, add 13 to a running total in a loop that loops 5 times over. There is indeed an addition stage in the algorithm above starting at the CLC inside the loop and ending just before the "skip" label. However, people far smarter than I am discovered a long time ago that there are certain efficiencies to be gained by doing the additions in other ways than merely doing the same addition some large number of times.
If you are multiplying two 16-bit numbers, the naïve way might mean you have to add 572 to the running total 65,000 times! Whereas, in the example above, the loop explicitly only loops 16 times, which is not coincidentally the number of bits in the output. Somehow by rolling the bits in the output, and rolling the bits in one of the arguments, it can be determined whether an addition need take place. Repeat 16 times and the correct answer magically appears. If you're into mathematical theory, you'd probably really enjoy analyzing this routine to death. For me, it is enough to know that it works, and it consists of 30 instructions. Or, 22 instructions if you don't care about corrupting one of the inputs in the process.
There is just one other thing I'd like to note about this routine. The inputs and the output are hardcoded references to what amount to global variables. The use of global variables is typically considered very bad form by modern computing standards. But it seems hard to avoid on the 6502. As it happens these global variables are in zero page, that was done so that all the access to them will be as fast as possible. But, I did test it and everything works just fine when they are not in zero page. Therefore, the product could be computed in a local variable, and could even be returned in the .X and .Y registers. However, these are not big concerns when literally the entire machine is at our disposal for just the one solitary purpose of computing factorial.
Factorial core routine
Now we can get to the core routine of factorial. Remember that the workspace variables for the multiplication have already been defined.
LDA factor
LDA #0
next	DEC factor
BEQ done
STA multiplicand
STA multiplicand+1
JSR mult16
LDA product
LDA product+1
JMP next
Comparing this to the Javascript function, or the BASIC program, they are actually quite similar. Before the "next" label we are simply initializing the factor. This is the number for which we want to get the factorial. Because a 16-bit output can only support factorial up to 8 (remember 9! is over 350,000) we really only need an 8-bit initial factor. This gets loaded into the low byte of the multiplier, and the high byte of the multiplier is set to 0. So if the factor is 6, the multiplier becomes $0006.
We enter the top of the loop and decrement factor. If it is now zero we leave the loop by branching to done. If not, we load the newly decremented factor into the multiplicand and JSR to mult16. Thus 6 x 5 ends up in product. Next we transfer product to the multiplier and loop back to the top. On the next iteration multiplier is prepopulated by with the result of 6x5 (30) and multiplicand is populated by the next decremented factor 4. Thus 30 x 4 ends up in product, and so on. Finally feels like we're making some progress.
Human readable output
That's all well and good, but how do we know if product contains the right answer unless we can see the output? The final product is just two bytes. But the problem is that those two bytes cannot simply be shoved onto the screen because they will represent some odd C64 Screencodes and we won't be able to interpret them as numbers. What we really want is to convert them to some base of numbers we can read.
Number conversions to and from decimal is very cool, and it's something I'd like to get into in a future post. But conversion from binary to hexadecimal is significantly more straight forward. One byte of binary input always converts into exactly 2 bytes of hexadecimal output. Here's a routine that I keep handy in my own coding repertoire while I'm working on C64 OS. I usually put it in an include file so that I can bring it into my source with a .include "inttohex.s" directive whenever I need it. It came out of a discussion with someone on #c64friends on IRC.
inttohex ;.A -> int
;.X <- lo hex digit
;.Y <- hi hex digit
LDA hexits,x
STA tmp
AND #%00001111
LDY tmp
tmp    .byte 0
hexits .text "0123456789abcdefg"
This is a clever little routine. The hexits label is effectively a conversion table. The contents of the string are bytes that the assembler encodes in PETSCII. But the offset into the table is the conversion to the PETSCII representation of that value. So if you had the actual integer 7, and you index 7 bytes into hexits, you arrive at the PETSCII value "7" (which is actually the integer 55, but we never need to know that.) Perfect.
At the calling label "inttohex" you see the documentation style that I've grown accustomed to. It shows the register and a right-pointing arrow to mean input, followed by a description of what it should hold. The registers that are outputs are followed by a left-pointing arrow and then a description of them. So, put an 8-bit integer in the accumulator and JSR inttohex. You get back two PETSCII characters in X and Y, lo and hi nybbles respectively.
To do that we push the accumlator onto the stack to back it up, then shift right 4 times. That takes the hi nybble (4-bits) and shifts it into the lower nybble. The upper nybble is replaced by zeros. Transfer that to the X register to be used as an index into hexits. Grab the hi nybble PETSCII character and stash it in a temp variable. Restore the original accumulator from the stack and using AND zero out the upper nybble leaving only the lower nybble intact. Transfer that to the X register and use it to index into hexits to grab the PETSCII value for the lower nybble. Lastly, stick the low nybble in X, read the high nybble from the temp variable directly into the Y register and return. Bingo bango.
That's a fine way to convert one byte into two PETSCII characters that are an easily readable hexadecimal output. But how do we physically output them? Well, we could try shoving them into screen memory, and that would work. But I'm pretty comfortable at this stage using the KERNAL routines designed to output characters to the screen. In this case, CHROUT ($ffd2).
chrout = $ffd2
out16 .macro
LDA \1+1
JSR inttohex
JSR chrout
LDA \1
LDA #13
.endm
There are however, two bytes in a 16-bit output. And although the CPU is little endian and wants the lo byte first followed by the hi byte, that's not the order we want to see them in. To make things easy and clear, I wrote a little macro "out16." You pass it the address of the low byte, and it converts the hi byte (low byte + 1) to PETSCII and chrout's the result, hi nybble lo nybble. Then it calls inttohex on the lo byte, and chrout's its result, hi nybble lo nybble. And finally the macro outputs a carriage return so multiple calls to out16 will put the results on separate lines.
It took a long time, and a lot of effort, but we've got pretty much all the parts together we need to make a complete and running program. Here's what the final source code, altogether, in TurboMacroProX format looks like, including comments, section separators and a little something extra I'll talk about in a moment.
;*** Constants ***
;*** Macros ***
;*** Main ***
*=$0801
;Basic Prelude, 10 SYS 2061
.byte $0B,$08,$0A,$00,$9E,$32,$30,$36,$31,$00,$00,$00
;Starts at $080D, or 2061
#out16 multiplier
done	#out16 product
factor .byte 5
;*** Routines ***
This whole thing took me hours to put together, mostly because of a few gotchas I'm going to describe now. It's safe to say it took a lot less code and a lot less time to write that little 5 line Javascript function from the first examples. But, it's also remarkable how easy it was to do the same thing in BASIC. The power and simplicity of a high level language certainly seems worth the relative slowness of its execution. If what you needed could be accomplished in BASIC you'd be masochistic to do it in ASM. Not to mention the fact that adding user input to the BASIC program would be trivial, and its output is in decimal. Getting user input in ASM would be a whole new ordeal, and its output is readable but it's in nerdy hexadecimal rather than the much more common and user-friendly decimal.
I like to structure my code such that constants appear at the top, followed by the main code body, followed by subroutines that will be used and called by the main code body. I nearly tore my hair out trying to debug the meaning of "label not defined" on the calls to out16. Eventually I realized that the assembler wants macro definitions to appear in the code before anything attempts to use them. I'm not entirely sure why. So, I moved the out16 macro definition to appear just below the constants.
Next, you have to declare where in memory you want your code to assemble to. I chose $0801 because that's where BASIC programs are loaded into, and because it's an easy place that I know how to jump to with a SYS command. This decision may have been the most hair pulling of this experiment. As it happens, when you double click a .PRG file to open it in VICE (which is what I was testing in,) it not only loads it, but it also runs it automatically, by issuing the RUN command. I totally get why it does this. It's so that if you're using VICE with a one file game you can just double click it, VICE will launch, load and run the program for you, and boom you're playing a C64 game in an emulator and you didn't have to know even a single arcane C64 "command."
The problem with RUN is that it attempts to execute my code as though it were a BASIC program, which it's not. The result of this is that BASIC was actually corrupting my code before I had a chance to run it. So, what I would do is double click the file, wait for BASIC to mess it up and return to the ready prompt and then I'd issue an SYS2049 after that. It crashed immediately every time. This was very frustrating until I figured out what was happening.
The secret is to include a tiny prelude to your code, that is itself in fact a valid BASIC program that when run will jump to your real code. This trick is used all the time in C64 games and demos. I didn't have what that prelude would be handy but it's surprisingly easy to figure out. I simply wrote a basic program: 10 SYS2049 Then I saved that to "disk" which in VICE put the .PRG basic program back onto my Mac's desktop.
Opening that file with the excellent Mac utility, Hex Fiend, revealed the following BASIC program bytes:
01 08 0B 08 0A 00 9E 32 30 34 39 00 00 00
The first two bytes are the load address, 01 08, $0801, so we can ignore them, they won't end up in memory. The next 2 bytes are a pointer to the start of the next BASIC line, 0B 08, ($080B). The next two bytes are the 16-bit program line number, 0A 00, ($000A, or 10) and that 9E must be the token for SYS. The next four bytes, 32 30 34 39, reveal very clearly the 2 0 4 9 conveniently visible in the lower nybble of each hex value. And the last 3 bytes 00 00 00 are the basic program terminating sequence. In other words, the basic program will occupy (2 + 2 + 1 + 4 + 3) 12 bytes in memory. Which means if the BASIC prelude starts at $0801 (2049), then my ASM code will start at 2049 + 12 or 2061. Thus we can just change the BASIC prelude so the SYS will go to 2061 instead of 2049 and we get a BASIC prelude like this:
0B 08 0A 00 9E 32 30 36 31 00 00 00
And so that is exactly what we put into the assembler as a sequence of bytes that immediately precedes the start of the main body code. And it works perfectly.
And there we have it running in VICE. I added one more #out16 to the body code so we could see the output of the multiplier before beginning to compute its factorial, just so we can see in the screenshot the two values. The first output is 0008 (8 in decimal), and the result is printed as 9D80 (40320 in decimal), and that is the correct answer! Hurray!
Download the PRG here
You can run that in VICE, or on a real C64 and see that it in fact works. Or analyze it with a Hex Editor. Note that it's hardcoded to compute 8!.
I'll be the first to admit that it took a lot of work, and a lot of effort, and the result is less capable than what I got with BASIC, but it feels good. It feels like we're at rock bottom. There is no code running that we are not explicitly aware of (with the exception of those final chrouts.) It's like painting a picture by applying every single stroke of paint to the canvas by hand.
The other thing I should say before signing off, is that in practice it doesn't feel quite this difficult when writing ASM code for C64 OS. First of all, I have yet to need multiplication even once. And second, after you've been working on your project for a while all the surrounding structure such as where to put constants and macros, what address to load your code to, and even output, become solved problems that you stop thinking about on a day to day basis.
That's it for this post. I consider that worthy of the Technical Deep Dive category.
Actually Javascript is bit wonky around big numbers. Number.MAX_VALUE returns 1.7976931348623157e+308. If you check the equality of Number.MAX_VALUE == Infinity it returns false. However, if you check the equality of Number.MAX_VALUE == Number.MAX_VALUE + 1 it returns true! That certainly feels like a behaviour unique to Infinity. [↩]
I'd like to point out just how incredibly awesome it is that these classic books are available for free at Archive.org. I read the Geos Programmers Reference Guide cover to cover on Archive.org. Although, I have Advanced Machine Language in paperback, and do prefer a paper copy in most cases, sometimes it's nearly impossible to get your hands on a physical copy. [↩]
Actually, there is one kind of multiplication, and division, that can be done with the built in instructions. Multiplying by two can be accomplished by shifting all the bits left one position. And dividing by two can be done by shifting all the bits right on position. Using the carry shifts can be done on higher bytes that shift in a bit that fell of the edge of a lower byte, thus enabling shifts that are 16-bit, 32-bit, 64-bit and more. [↩]


text:
Balance of Power in Syria Shifting Assad's Way
Associated Press | By Zeina Karam and Barbara Surk
BEIRUT - As hopes for a Syrian peace conference fade and the opposition falls into growing disarray, President Bashar Assad has every reason to project confidence.
Government forces have moved steadily against rebels in key areas of the country over the past two months, making strategic advances and considerably lowering the threat to the capital, Damascus.
With army soldiers no longer defecting and elite Hezbollah fighters actively helping, the regime now clearly has the upper hand in a two-year civil war that has killed more than 70,000 people.
In back-to-back interviews with Lebanese TV stations this week, Assad and his foreign minister both projected an image of self-assuredness, boasting of achievements and suggesting that the military's offensive would continue regardless of whether a peace track is in place.
"What is happening now is not a shift in tactic from defense to attack, but rather a shift in the balance of power in favor of the armed forces," Assad said of his troops' recent battleground successes.
"There is no doubt that as events have unfolded, Syrians have been able to better understand the situation and what is really at stake," he told Al-Manar TV, owned by the Lebanese militant Hezbollah group. "This has helped the armed forces to better carry out their duties and achieve results."
Military analysts and activists on the ground in Syria say that Assad's forces have shown renewed determination since roughly the beginning of April, moving to recapture areas that had long fallen to rebels.
Significantly, Syrian troops appear to have gained the edge in the country's central Homs region.
The regime considers Homs strategically important partly because it links Damascus with the coastal heartland of Assad's minority Alawite sect, an offshoot of Shiite Islam. The rebels are mostly from the country's Sunni Muslim majority. The coast also is home to the country's two main seaports, Latakia and Tartus.
Syrian troops and Hezbollah forces have successfully been clearing the town of Qusair in Homs province, where rebels have been entrenched for a year.
State-run Syrian TV said troops on Friday captured the village of Jawadiyeh outside Qusair, closing all entrances leading to the town and tightening the government's siege.
For the rebels, holding the town means protecting their supply line to Lebanon, just 10 kilometers (six miles) away.
Rebels have fought back against the government push into Qusair, and days ago called on opposition forces around the country to join them. Activists said that organized groups of rebels from the northern province of Aleppo managed on Friday to enter areas of the town still in opposition hands to help defend it.
In an interview with Al-Mayadeen TV Wednesday, Syrian Foreign Minister Walid al-Moallem said he expected the fall of Qusair to the regime "within days."
The commander of the main Western-backed umbrella group of Syrian rebel brigades, Gen. Salim Idris, told The Associated Press in an interview this week that unless rebels receive weapons quickly, they might not be able to hold Qusair.
The army has also successfully pushed back rebels in some areas around the capital. According to residents, that's led to a decline in mortar shells on the city center that only few weeks ago were a daily occurrence.
"The army has broken the atmosphere of fear and terror inside Damascus that the rebels created by firing mortars," said Hisham Jaber, a retired Lebanese army general who heads the Middle East Center for Studies and Political Research in Beirut.
Jaber said troops have cleared up to 80 percent of the areas around Damascus in the past two months.
Equally important, he said, is the successful offensive the army is conducting in the area south of Damascus that links the capital with the Jordanian border.
Despite a surge in rebel advances near Jordan earlier this year, the government now appears to control much of Daraa province, an opposition stronghold south of Damascus and the birthplace of the uprising.
Experts say the defection rate from Assad's military has sharply dwindled by now, and he has more than made up for it with the help of paramilitary forces and Shiite fighters from Iraq and Lebanon's Hezbollah.
Politically, Assad can still count on the support of his Russian and Iranian allies - and the growing disarray of the Western-backed Syrian opposition.
On Friday, Russia's MiG aircraft maker announced plans to sign a new agreement to ship at least 10 fighter jets to Syria, a move that comes amid international criticism of earlier Russian weapons deals with Assad's regime.
MiG's director general, Sergei Korotkov, said a Syrian delegation was in Moscow to discuss a new contract for MiG-29 M/M2 fighters. Russian news agencies cited him as saying Syria wants to buy "more than 10" such fighters, but wouldn't give the exact number.
Hours after the Russian announcement, the U.S. and Germany lashed out at Moscow's intentions to provide the Assad regime with an advanced air defense system, which they believe could prolong Syria's civil war.
Secretary of State John Kerry said Russia's transfer of the S-300 missiles would not be "helpful" as the U.S. and Russia jointly try to get the Syrian government and opposition into peace negotiations. The peace talks were initially planned for Geneva next month but have been delayed until July at the earliest.
After meeting Kerry, German Foreign Minister Guido Westerwelle said Russia must not "endanger" the peace talks, describing weapon deliveries to Assad as "totally wrong."
An air defense system could also make it harder for the international community to enforce a possible no-fly zone to assist the Syrian rebels fighting Assad - something it did in the 2011 civil war in Libya.
Meanwhile, Syria's main political opposition group, the Syrian National Coalition faced stiff criticism from Syrian activists for spending weeklong meetings in Turkey bogged down in personal issues and quarrels about expanding its membership.
On Thursday, the Coalition announced that in light of "massacres" in Qusair, it would not attend peace talks.
Assad, in the interview, projected forcefulness and repeatedly mocked the opposition, calling members of the Coalition "tools" and "slaves" of the West and U.S.-allied Gulf Arab countries.
"We have absolute confidence in our victory," he said. While saying his government is ready "in principle" to attend peace talks in Geneva, he said any agreement reached there would have to be put to a referendum. He also said he would "not hesitate" to run for re-election in 2014 if the Syrian people so wished.
The Coalition's decision not to attend peace talks with representatives of the Assad regime torpedoes the only plan for trying to end Syria's civil war that the international community had been able to agree on.
With prospects for a diplomatic solution dim, the West may have to come up with a new approach. President Barack Obama will likely face renewed pressure to help the rebels militarily.
On Friday, Republican Senator John McCain said rebels need ammunition and heavy weapons to reverse a battlefield situation that currently favors Assad's forces. He spoke a day after he returned from an unannounced trip to Syria.
Britain and France, meanwhile, might have to reassess their timetable for possible arms shipments to the rebels. Earlier this week, the European Union's two main military powers had said they will not send weapons while peace talks remain a viable option.
Amr Al Azm, a U.S.-based Syrian activist and professor at Shawnee State University in Ohio, said the regime's definition of victory has changed. He said it did not matter anymore to Assad that large swathes northern and northeastern Syria were out of government control.
"Assad now considers that if he survives until 2014 while holding on to the coast and the capital, his seat of power, that's victory," he said.
Meanwhile, relatives of a 33-year-old Michigan woman said Friday that she was killed in Syria, the only American known to have died fighting in the civil war. Nicole Lynn Mansfield's relatives said she became interested in the Middle East after converting to Islam and marrying an Arab immigrant several years ago, but said they didn't know she was in Syria.
A pro-Syrian TV said Mansfield, a British man and another fighter working with the opposition were killed in a confrontation with troops in the northern city of Idlib. The report on the circumstances of the deaths could not immediately be confirmed. Britain's Foreign Office confirmed that a U.K. national was killed in Syria but gave no other details.
Workers Recover Hundreds of Bodies from Syrian Mass Grave
The mass grave discovered in mid-June is the latest grave located in and around Raqqa to date.
Germany Rebuffs US Request for Ground Troops in Syria
A government spokesman says Germany isn't considering sending ground troops to Syria.
US Says It Targeted Al-Qaida in Northwest Syria
The US military said it had targeted jihadists in an embattled opposition bastion in the northwest of the country.

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Flutter - Connectycube_flutter_callkit not working in the background or terminated i'm using connectycube for receiving calls but when i accept call while is in the background like the image below

it navigates me the home page but not the call here is the code
void videocaller( var friendName){
  Uuid uuid = Uuid();
  CallEvent callEvent = CallEvent(sessionId: uuid.v4() + "1", callType: 1, callerId: 0,
  callerName: friendName, opponentsIds:{1234});

  Future<void> _onCallAccepted(CallEvent callEvent) async {
    _joinMeetingVideo(friendName);
   }

   Future<void> _onCallRejected(CallEvent callEvent) async {

   }
   Future onCallRejectedWhenTerminated(CallEvent? callEvent) async {

     }
   Future onCallAcceptedWhenTerminated(CallEvent? callEvent) async {
     _joinMeetingVideo(friendName);
   }

 ConnectycubeFlutterCallKit.onCallRejectedWhenTerminated = onCallRejectedWhenTerminated;
 ConnectycubeFlutterCallKit.onCallAcceptedWhenTerminated = onCallAcceptedWhenTerminated;
  ConnectycubeFlutterCallKit.instance.init(
    onCallAccepted: _onCallAccepted,
    onCallRejected: _onCallRejected,
  );
 ConnectycubeFlutterCallKit.showCallNotification(callEvent);
 ConnectycubeFlutterCallKit.setOnLockScreenVisibility(isVisible: true);

 }

i tried it with getx to navigate to jitsi call but it does not work
actually the problem is that jitsi function [_joinMeetingVideo(friendName);] is not a page where i can navigate to it's a function so it can't be executed enless the app is open this why it opens the home page of the app but not the video call itself but unfortunately i could't find a solution for this issue. any ideas ??

redpajama_set_name: RedPajamaStackExchange


text:
Olympic futures at the Global Sports Forum
By Andy Stout
Monday, March 14, 2011 - 10:46
Spain: Two venues about to embark on the adventure of hosting an Olympic Games, Sochi 2014 and Rio 2016, rubbed shoulders with one currently entering the bidding fray, Barcelona 2022, at the Global Sports Forum. What's obvious is that more and more, the focus of the organiser's efforts seems to be on infrastructure improvements and presenting the Games as a vehicle for social change.
42,000 people are currently labouring 24/7 to bring the dreams of the Sochi 2014 Winter Olympics to life in what is undoubtedly Russia's, and possibly the world's, largest current construction project. According to Dimity Chernyshenko, president of the organising committee, 25,000 hotel rooms are being built, green standards are being pursued vigorously in a huge push for sustainability and carbon-neutrality, four pairs of snow leopards (one of the game's polyglot menagerie of mascots) have been reintroduced to the countryside, and he's even hoping that the Games can change Russia's attitude to disability.
"15 million Russians are disabled," he said, "and we want the games to be a catalyst for creating barrier-free public spaces in the country."
Examining the efforts of Rio 2016, meanwhile, the focus was all on transport. The city came up with a four-cluster plan to stage the games, with loci in Barra, Deodoro, Maracana, and Copacabana. All this entails up to 40km transits from the Olympic Village which, when added to the strain that an estimated 300,000 visitors will place on the transport infrastructure, has necessitated a significant level of investment in improving and upgrading and "providing a legacy for all the people in the city" according to Carlos Nuzman, president of Rio's organising committee. Metro Lina 4, linking Barra and Copacabana, is nine months into the construction of 10km of tunnels, while a 100km Bus Rapid Transport system is being constructed.
Asked whether there were synergies or conflicts with the FIFA World Cup efforts for 2014, Nuzman inevitably said the former, though he did admit that there was still some work to be done to increase capacity at Rio's airports.
Barcelona's 2022 Winter games bid, headed up by Enric Truno, probably summed up the mood by quoting Samaranch's dictum that the Games are about 'sport, culture and the environment'. Despite another Spanish bid in the system from Zaragoza, not to mention nigh on 20 others worldwide, and an admission that the Pyrenees resorts in the bid will need a fair amount of work, Truno is confident. Not only does it fulfil the requirements of a large city with nearby mountains, but it can lean on the legacy of Barcelona 1992's infrastructure (notably the Olympic Stadium for the opening and closing ceremonies) and he states that "the Barcelona model is very well regarded in the Olympic movement."


text:
The Ten Best All-Time Actors Relay Race
The great Steve Honeywell from 1001 Plus has graciously invited me to join this series which looks at the best actors of all time. It functions like a relay race where each participant viciously cuts an earlier choice and then adds a worthy contender to the list. Amazingly, I will be the 30th person to contribute to this excellent list of actors. Many talented individuals have joined and left this group, and the current roster contains a remarkable group of all-time greats. Deciding which guy to cut is going to be torturous.
Here are the entries from the other participants so far:
My Film Views (created the original list: Robert De Niro, Al Pacino, Daniel Day-Lewis, Samuel L. Jackson, Charlie Chaplin, Gary Oldman, Anthony Hopkins, Philip Seymour Hoffman, Marlon Brando, Robert Duvall)
The Focused Filmographer (Removed Hopkins, added Christian Bale)
Front Room Cinema (Removed Pacino, added Paul Giammati)
I Love That Film (Removed Jackson, added Edward Norton)
Flixchatter (Removed Giammati, added Gregory Peck)
All Eyes on Screen (Removed Norton, added Tom Hanks)
Time Well Spent (Removed Hoffman, added Leonardo DiCaprio)
The Warning Sign (Removed Hanks, added Paul Newman)
Movies and Songs 365 (Removed Duvall, re-added Anthony Hopkins)
And So It Begins (Removed DiCaprio, added Max von Sydow)
Cinematic Corner (Removed Bale, added Ralph Fiennes)
The Film Emporium (Re-removed Hopkins, added Jack Nicholson)
Duke & the Movies (Removed Oldman, added Humphrey Bogart)
Southern Vision (Removed Fiennes, added Harry Dean Stanton)
Defiant Success (Removed Stanton, added Jack Lemmon)
Cinematic Paradox (Removed von Sydow, re-added Ralph Fiennes)
Encore's World of TV & Film (Removed Peck, added Richard Burton)
Okinawa Assault (Removed Lemmon, added Bruce Greenwood)
Amiresque (Removed Greenwood, added Peter Sellers)
Flickers (Removed Chaplin, added Jeff Bridges)
Aziza's Picks (Removed Sellers, re-added Gary Oldman)
...let's be splendid about this... (Removed Burton, added James Stewart)
Being Norma Jeane (Removed Bridges, added Johnny Depp)
U, Me, and Films (Re-removed Fiennes, re-added Tom Hanks)
Eternity of Dream (Re-removed Hanks, re-added Leonardo DiCaprio)
Lime Reviews and Strawberry Confessions (Re-removed Oldman, added Amitabh Bachchan)
Surrender to the Void (Removed Bachchan, added Gene Hackman)
Taste of Cinema (Removed Depp, added Marcello Mastroianni)
Nostra provided these original rules for this relay race way back at the start:
"I've created a list of what I think are the best actors. At the end of the post I, just like in a real relay race, hand over the baton to another blogger who will write his own post. This blogger will have to remove one actor (that is an obligation) and add his own choice and describe why he/she did this. At the end the blogger chooses another blogger to do the same. The idea is to make this a long race, so that enough bloggers get a chance to remove and add an actor. We will end up with a list (not ranked in order) which represents a common agreement of the best actors. It will also mean that those who follow this relay race will get to know new blogs as well!"
Here is the current list of 10 actors that arrived on my doorstep:
Marcello Mastroianni
My Removal
Considering this remarkable list of talented actors, there were only a few possibilities for a removal. I'm not as familiar with Marcello Mastroianni, so he was an option. I've only seen two of his films (8 1/2 and La Dolce Vita), but that doesn't feel like a fair reason for removing him. There are actors like Jack Nicholson and Robert De Niro who have delivered forgettable performances in recent years, but their overall output is too strong to give them the boot. This leaves Leonardo DiCaprio, who I've enjoyed in most of his roles. However, he's the only guy that doesn't quickly come to mind when I think of the best actors of all time. DiCaprio may be one of the major talents of this generation, but he falls a bit short when looking at film history on the whole. Goodbye, Leo. I have a feeling you may return soon.
My Addition
Although this group includes legendary actors from older films (Stewart and Grant), it neglects the silent era. There are two undeniable artists that deserve to make this list, Buster Keaton and Charlie Chaplin. Both have their own skills and crafted amazing movies, but I'm giving the slight edge to Chaplin and putting him back in there. This doesn't mean he has superior skills and relates more to his long-term impact on the medium. His genius expanded the possibilities of silent comedies during a remarkable run. City Lights is one of my favorite movies, and Modern Times and The Gold Rush are close behind. These films remain in the pop-culture consciousness, which is remarkable given the amount of time that has passed. Chaplin is an original who deserves a place in any list of the best actors of all time.
I'm passing the torch into the capable hands of Max from Impassionedcinema, who provides movie news and excellent reviews on his well-designed site. Take it away, Max!
Ruth June 7, 2012 at 12:03 AM
This has to be the best blogathon ever. I'm so glad Jimmy Stewart is still in there :D Nice choice with Chaplin!
Dan June 7, 2012 at 9:18 AM
Thanks Ruth! This has been a great blogathon, even though making a pick was very tricky.
Mette June 7, 2012 at 12:07 AM
Sad to see Leo leave, but maybe you're right about him. So great you added Chaplin though, I completely forgot about him when I was writing my entry.
I'd definitely have Leo on a list of the 10 best actors working today, but he seemed out of place in an all-time list. There are just too many good options!
SJHoneywell June 7, 2012 at 7:07 AM
Good choices, sir.
Also, I believe this is the first time in history my name has had the word "great" tacked in front of it.
Steve, I find that hard to believe. I know you didn't campaign, but I still think you got snubbed in the "Best Classic Blog" category of the Lammys.
Jessica June 7, 2012 at 9:36 AM
I nominated him. Just saying. Wish more people had been that wise.
I approve of your removal! Sadly Chaplin is not a personal favorite of mine, though I do understand that he deserves respect and probably should be on that list. I just don't like that kind of humor very much.
Jessica, I think Chaplin is an expert physical comedian, but what really draws me to his work is the added touches like the satire, particularly in some of his later movies. I can understand how you feel, though. Thanks!
ilovethatfilm June 7, 2012 at 4:04 PM
Great to see Chaplin back on here. He is an absolute must. There's a few others I would have rather see go than Leo though! Looking forward to seeing what Max does with the list!
Pete, I'm curious who you would remove instead of DiCaprio. Hackman? Mastroianni? Grant?
Dave Enkosky June 7, 2012 at 8:44 PM
I agree with your choice. Chaplin's facial performance just in that final scene from City Lights is one of the best things committed to film.
Dan June 7, 2012 at 11:24 PM
Dave, that last scene is pitch-perfect. City Lights is one of my favorite movies.
Nostra June 8, 2012 at 1:45 AM
Very happy to see Chaplin return to the list. When I created this I just couldn't leave him out of there and I was sad to see him removed earlier. DiCaprio surely will return eventually, I'm sure of it.
I think you're right about DiCaprio. He's already been removed twice, so I'm guessing he may return. I just couldn't see leaving him instead of Chaplin (and possibly a few others).
Eric June 14, 2012 at 12:47 PM
Great choice, Dan! I am happy to see Chaplin make a return as he really is one of the all-time greats. Hopefully Keaton gets some time in the sun as well at some point.
Eric, I also thought about Keaton, who deserves a lot more recognition. It was close, but I had to go with Chaplin because he's created some of my all-time favorites, especially City Lights. I hope he's able to stick around on this list!
Kevyn Knox June 21, 2012 at 10:01 AM
I never have seen what others apparently see in DiCaprio. He is a decent actor, and after working with Scorsese a few times, he has grown in so-called leaps and bounds, but there is no way he deserves inclusion on a list with De Niro, Newman, Stewart, Grant, Day-Lewis, Bogart, Mastroianni and (now) Chaplin. I guess what I am saying is, nice choice for a knock-off. I am currently doing my edition of the Best Actress wing of the series, and hopefully will soon be handed the baton for this one as well. I already have a few ideas for my inclusion.
Dan June 21, 2012 at 10:45 AM
I like DiCaprio, but I agree with you about trying to compare him to those other guys. He seems like the odd man out. It's been interesting to see where these series have gone after me. My Actress pick of Ingrid Bergman is still in place, so that's good. It's not an easy task to make these picks.
Well, my Best Actress edition will be up and running tomorrow, and you should have no worries about Ms. Bergman being kicked out.
That's good. I'm looking forward to checking out your picks.


This image depicts one of nine students arrested by police on April 20, 2010 after chaining themselves to the Arizona State Capitol building as an act of nonviolent protest against Senate Bill 1070, widely seen as a misguided and racist anti-immigrant measure. After being taken into custody, the protesters began to sing "We Shall Overcome," an anthem of the African-American civil rights era.
Still from video by Dennis Gilman.


We have teamed up with Dr. Roxanne Van Den Berghe, formerly of Van Den Berghe Chiropractic to bring a comprehensive team of medical professionals together under one roof to care for your needs. Progressive Chiropractic is the place for expert care to help you live the pain free life you deserve!
In addition to providing comprehensive chiropractic care, Progressive Chiropractic also utilizes a hydromassage bed and has in-house Massage Therapy available to it's clients.
HydroMassage is a natural remedy that has been used for years to help alleviate muscle and soft tissue injuries, Similar to a powerful shower massage without getting wet, HydroMassage uses waves of heated water to provide a relaxing experience.
Please come check us out at our new location directly adjacent to PRA's Tipton Office.


text:
Q: The cuspidal equator of a pseudosphere not a boundary for a geodesic Sine Gordon Equn for K>0
Continuing the above in this post parametric equations of a geodesic on psedosphere are derived to dispel/discuss a view that geodesics encountering boundary at the cuspidal equator of a pseudosphere surface in $(\mathbb R^3 )$ are confined and cannot exist beyond.
An intersting take from this exrcise is that the geodesics cut the circular cusp at polar angle  $ \theta_{max}= \cot \alpha \,$ where $ \psi=\alpha.$
To find polar angle $\theta$
Considering differential length elements for any surface of revolution and applied for  the tractrix in particular
$$   \sin \phi = \frac{ dr \tan \psi } { r d\theta} = r/r_o ;$$
on the pseudosphere of DE ($ \phi $ is slope angle between arc and symmetry axis, $\psi$ is angle geodesic makes to meridian, $r_o$ minimum radius where geodesics are tangential to a circle smaller than equator $ r_o<a $
$$   \sin \phi = \frac{ dr \tan \psi } { r d\theta} = r/r_o ;$$
Clairaut's Law, $r_o$ is minimum radius where lines are tangential and turn back on either side.
$$ r_o = r \sin  \psi$$
plug into above and simplify
$$ \frac{d \theta}{a r_o}= \frac{dr}{r^2 \sqrt{r^2-r_o^2}} $$
Integrating with BC $ \theta=0 , r= r_o$ we have
$$\theta = a \sqrt{ 1/r_o^2 - 1/r^2 } \tag1$$
To find the $z$ coordinate
$$ \frac{dz}{dr}= \cot \phi = \frac{\sqrt{a^2-r^2} dr}{r}  \tag2 $$
substitution
$$ r \cosh u= a , dr= sech u \, \tanh u \, dz= a \tanh^{2} du = a ( 1- sech^{2} u) du\tag3 $$
integrating with BC $ u=0, z=0$
$$ z = a \cosh^{-1}\frac{a}{r} - \sqrt{a^2-r^2} \tag4$$
The parametrization is
$$ (r,\theta,z) =( r, a \sqrt{ 1/r_o^2 - 1/r^2 }, \, a \cosh^{-1}\frac{a}{r} - \sqrt{a^2-r^2}) \tag5 $$
Visualization done in Mathematica also confirms that the geodesics enter the second mirrored nappe across the cuspidal equator, as it should, by virtue of $\pm$ in front of square root sign for $z,r$ co-ordinates.

a = 1; ro = 0.18 a;
th[r_] = Sqrt[(a/ro)^2 - (a/r)^2];
z[r_] = a ArcCosh[a/r] - Sqrt[a^2 - r^2]
g1 = ParametricPlot3D[{r Cos[th[r]], r Sin[th[r]], z[r]}, {r, .1, 1},
   PlotStyle -> {White, Thick}];
g2 = ParametricPlot3D[{r Cos[th[r]], r Sin[th[r]], -z[r]}, {r, .1, 1},
    PlotStyle -> {White, Thick}];
g3 = ParametricPlot3D[{r Cos[th[r] + v],
   r Sin[th[r] + v], +z[r]}, {r, .1, 1}, {v, -Pi, Pi},
  PlotStyle -> {Yellow, Opacity[0.95]}, Mesh -> {20, 20}]
g4 = ParametricPlot3D[{r Cos[th[r] + v],
   r Sin[th[r] + v], -z[r]}, {r, .1, 1}, {v, -Pi, Pi},
  PlotStyle -> {Yellow, Opacity[0.95]}, Mesh -> {20, 20}]
Show[{g1, g2, g3, g4}, PlotRange -> All, Axes -> None, Boxed -> False]

Also iirc, work by Jacques Hadamard about geodesics on constant negative curvature surfaces  was mentioned (in his biological sketch); can someone please point to the references?


text:
namespace Nature.GMix
{
    class ComplexComponentDefinitionRightHandSide
    {
    }
}

redpajama_set_name: RedPajamaGithub


Do you have a question that you can't find the answer to here? Email us at [email protected] or call us on 0800 580 127.
Air Chathams has its own check-in facilities in Auckland, Whakatane, Whanganui, Kapiti Coast and on the Chatham Islands. Regional check in counters are used for Chatham Island flights departing from Wellington and Christchurch. All check in counters open 90 minutes prior to departure.
Auckland – all flight check-ins are located in the regional area of Auckland Airport's domestic terminal. Entering Door 1 of the terminal, the Air Chathams check in is on the left.
Whakatane – all flight check-ins are located inside the Whakatane Airport passenger terminal at 216 Aerodrome Road, Whakatane. Services are provided by JNP Aviation for Air Chathams bookings, reservations, payment and luggage handling. All staff have been trained according to Air Chathams customer services standards.
Whanganui - all flight check-ins are located inside the Whanganui Airport passenger terminal at the end of Airport Road, Whanganui. Services are provided by JNP Aviation for Air Chathams bookings, reservations, payment and luggage handling. All staff have been trained according to Air Chathams customer services standards.
Kapiti Coast - all flight check-ins are located inside the Kapiti Coast Airport passenger terminal, 60 Toru Road, Paraparaumu. Services are provided by JNP Aviation for Air Chathams bookings, reservations, payment and luggage handling. All staff have been trained according to Air Chathams customer services standards.
Wellington – look for the Air Chathams logo on the Flight Information Display for the designated check-in counter. It will be a check-in counter located on the far right of the upper level of the Wellington Airport terminal. Passenger check-in and handling services for Chatham Islands flights from Wellington are provided by Planebiz.
Christchurch - look for the Air Chathams logo on the Flight Information Display for the designated check-in counter. It will be a check-in counter located on the far right of the lower level of the Christchurch Airport terminal. Passenger check-in and handling services for Chatham Islands flights from Christchurch are provided by Planebiz.
Chatham Islands – all flight check-ins are located inside the main passenger terminal at the Chatham Island Tuuta Airport.
How much luggage can I check in?
All passengers have a check in luggage allowance of 23 kilograms for one piece of luggage. Additional weight will incur a standard excess weight charge of $3.50 per kilogram up to a maximum of 32 kilograms for one piece of luggage.
Passengers travelling with an infant (aged 7 days to under 24 months) are allowed an additional 5 kilograms luggage allowance.
For mainland New Zealand flights, each additional piece of luggage up to 23 kilograms will incur a charge of $35 if pre-booked online and $55 if added at the airport check-in.
For Chatham Islands flights, each additional piece of luggage up to 23 kilograms will incur a charge of $70 if pre-booked online and $90 if added at the airport check-in.
Excess luggage is not guaranteed for travel on the day and will depend on aircraft payload capacity.
All passengers are only allowed to carry on one item of luggage weighing less than 7 kilograms.
Different aircraft have different luggage configurations and so we ask that carry-on luggage doesn't exceed total linear dimensions of 115 centimetres in height, length or width.
What does it cost to take a bulky or over-sized item?
Air Chathams does not charge extra for bulky or oversize items such as golf clubs, bicycles and surfboards.
These items can be included as part of checked in luggage allowance with any weight in excess of 23 kilograms per passenger charged at $3.50 per kilogram.
If the aircraft payload capacity is limited for a flight and bulky and oversize items are unable to be carried due to space restrictions, these items will be flown on the next available flight.
What items are classified as dangerous goods and not able to be taken on the flight?
If you are unsure please check with Air Chathams staff at our airport check in locations.
Safety matches may be carried in your pocket or by hand.
Hair spray and aerosol deodorant may be carried in checked luggage only providing it is in an individual container less than 500 grams or millilitres and with a fitted cap.
E-cigarettes and vapes may be carried in your hand or in carry-on luggage providing they are individually protected and are strictly prohibited for use on board.
Knives, sharp objects, bats or any item which could be used as a weapon may only carried in checked luggage.
I'm travelling with an infant – what do I need to know?
An infant is categorised as a child aged from 7 days to under 24 months. Infants may travel free of charge if not occupying a seat when accompanied by an adult passenger paying an applicable adult fare. Passengers must advise Air Chathams at the time of booking that an infant will be travelling.
Passengers travelling with an infant are allowed an additional 5 kilogram luggage allowance on the standard 23 kilogram checked in luggage allowance. Accessories such as a baby stroller, car seat or portable cot will be carried at no extra charge.
A child's fare is available on Chatham Islands and international flights where the child is aged 24 months or over and is less than 12 years of age.
Can I send my child as an Unaccompanied Minor (UM) on Air Chathams?
Children aged 5 to 11 years travelling without an adult (15 years or older) may travel unaccompanied provided the child doesn't require additional special care such as toileting, feeding or administering medicine. Children aged less than 5 years may not travel unaccompanied.
When booking the flight Air Chathams must be notified of the intention for the child to travel as an unaccompanied minor at the parent or guardians request. The parent or guardian of the child must complete a form, Unaccompanied Minor Form, and present this to the Air Chathams staff or agent at the flight check in prior to boarding.
The unaccompanied minor will not be accepted for travel unless all the applicable areas in the form are completed and confirmed by an Air Chathams staff member or agent.
Is there a toilet on board the aircraft?
Air Chathams has five different types of aircraft on its scheduled passenger routes. Only the Metroliner and the Cessna do not have a toilet on board.
The Metroliner is used mainly on the Auckland to Whakatane route and return and the duration of the flight is approximately 45 minutes. The Cessna is used as required for flights from Chatham Island to Pitt Island and the duration of the flight is approximately 20 minutes.
Depending on the type of fare you purchase (Thrifty, Saver or Full Economy) you can modify booking details, change flight dates and cancel flights online. Some changes may incur extra charges and you will need to speak to one of our customer service team members on 0800 580 127.
Thrifty Fares are unable to be changed, transferred to another person or refunded.
Saver Fares are unable to be refunded. Saver fares are able to be changed or transferred to another person up to 24 hours prior to departure and may incur additional fees.
Full Economy Fares are able to be cancelled with a full refund if Air Chathams is notified up to 24 hours prior to departure. Flights may be able to be changed or transferred to another person during the same period and may incur additional fees.
If you are able to make changes, you will be able to do this online.
Can I claim a refund on a cancelled ticket?
Air Chathams is not liable to refund any ticket for carriage and any refund granted is at the discretion of Air Chathams management.
Where a scheduled flight is disrupted due to factors outside Air Chathams' reasonable control, Air Chathams is not liable for any consequential loss, damage or expense of any kind arising from such carriage or delay.
We will, however, make the best effort to ensure your journey is completed to the original destination as quickly as conditions and capacity permit. (Alternative travel is likely to be by bus).
May be caused by unsuitable weather, technical problems, operational reasons, airport congestion or any event beyond Air Chathams reasonable control.
Can I transport animals with Air Chathams?
If a live animal is carried without an accompanying passenger, standard freight rates will be charged per kilogram plus a handling fee per animal.
Live animals must be checked in as freight or as part of a checked luggage allowance prior to the flight and collected on arrival. Pets and other live animals are unable to be held overnight at any Air Chatham premises.
Does Air Chatham's have group travel rates?
Yes, we do. If you have eight or more passengers travelling together, then please call us on 0800 580 127 for a special group rate discount on our standard fares.
How can I pay for travel with Air Chathams?
Travel can be purchased online using our website booking and reservation system. Credit cards accepted are Visa, Mastercard and American Express.
Repeat and frequent travellers may be able to set up an account for multiple bookings and to prepurchase Multi-Pass vouchers. Accounts will be subject to financial credit checks and the approval of Air Chathams management. These accounts will be invoiced and no payment is required at the time of booking online or via our customer service team.
Travel may be paid for with EFTPOS at airport locations for Auckland, Whakatane, Whanganui, Kapiti Coast, Wellington, Christchurch and the Chatham Islands.
Please call 0800 580 127 with any enquiries regarding payment.
Air Chathams has a diverse fleet that enables us to operate in numerous locations and to provide an aircraft fit for purpose depending on charter or flight needs.
Most mainland New Zealand destinations are serviced by the Saab 340 aircraft with the exception of Whakatane which is serviced by the Fairchild Metroliner. Both aircraft are operated by two pilots although only the Saab has a flight attendant as part of the cabin crew.
Flights to the Chatham Islands and Norfolk Island are primarily made by the pressurised turbo-prop Convair 580 aircraft, with two pilots and a flight attendant.
How do I contact Air Chathams if I am calling from overseas?
Operating hours vary between our offices and check in locations. Please remember the Chathams Islands is 45 minutes ahead of New Zealand time. If your call is unanswered, please leave a detailed message and contact email address and we will respond as soon as we are able.
For flights to the Chatham Islands – please call +64 3 305 0209.
For flights in mainland New Zealand – please call + 64 9 257 0261.


MindBodyLink is a private practice run by David Steinberg, PhD in both Philadelphia and New York City. Dr. Steinberg specializes in treating anxiety disorders and couples therapy.
Counsellors and Psychotherapists Association of New South Wales (CAPA) is an association dedicated to provide marriage counselling and other counselling support. Visit our website to know more.
Medically trained psychotherapist in west London, working online & via phone at a time that suits you.
Lifecare Consulting Group was founded in Africa in 1972 as an innovative Health care company. On relocating to Europe in 1986, to focus on the Care business such us elderly residential services provider etc,.


text:
package io.github.jackmiras.nucleolus.presenters;

import android.os.Bundle;
import android.support.annotation.Nullable;

/**
 * This class implements the essence of Fragment life cycle,
 * which means the presenter could know when some cycle of the
 * Fragment life cycle was executed. This class should be extended
 * only in cases that your business logic need to be executed when
 * Fragment reach one of the your cycles.
 *
 * @param <View> a type of view to return with {@link #getView()}.
 */

public class PresenterFragment<View> extends PresenterActivity<View> {

    /**
     * Called when a fragment is first attached to its context. {@link #onCreate(Bundle)} will be called after this.
     */
    public void onAttach() {
    }

    /**
     * Called to have the fragment instantiate its user interface view. This is optional, and non-graphical
     * fragments can return null (which is the default implementation). This will be called between
     * {@link #onCreate(Bundle)} and {@link #onActivityCreated(Bundle)}.
     */
    public void onCreateView() {
    }

    /**
     * Called when the fragment's activity has been created and this fragment's view hierarchy instantiated.
     * It can be used to do final initialization once these pieces are in place, such as retrieving views
     * or restoring state. It is also useful for fragments that use setRetainInstance(boolean)
     * to retain their instance, as this callback tells the fragment when it is fully associated with the new activity instance.
     * This is called after onCreateView(LayoutInflater, ViewGroup, Bundle) and before onViewStateRestored(Bundle).
     */
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    }

    /**
     * Called when the view previously created by onCreateView(LayoutInflater, ViewGroup, Bundle)
     * has been detached from the fragment. The next time the fragment needs to be displayed,
     * a new view will be created. This is called after {@link #onStop()} and before {@link #onDestroy()}.
     * It is called regardless of whether onCreateView(LayoutInflater, ViewGroup, Bundle) returned a non-null view.
     * Internally it is called after the view's state has been saved but before it has been removed from its parent.
     */
    public void onDestroyView() {
    }

    /**
     * Called when the fragment is no longer attached to its activity. This is called after {@link #onDestroy()}.
     */
    public void onDetach() {
    }
}


text:
Fantasy Basketball Pickups: Grab this Knicks player off the waiver wire Quick-ley
Dan Titus
·Fantasy Analyst
Week 12 of the fantasy basketball season is upon us, and, just like every Monday, I'll break down several players who are less than 50 percent of Yahoo fantasy basketball leagues.
But before we get to this week's waiver pickups, here are the games played by each team in Week 12.
Four games: 21 teams (76ers, Bulls, Cavaliers, Clippers, Hawks, Heat, Hornets, Lakers, Mavericks, Nets, Pacers, Pelicans, Pistons, Raptors, Rockets, Spurs, Suns, Thunder, Timberwolves, Trail Blazers and Jazz
Three games: Eight teams (Celtics, Bucks, Grizzlies, Knicks, Kings, Magic, Nuggets and Warriors)
Two games: One team (Wizards)
Okay, now that you know which teams to target for streaming, let's get to the pickups. Oh, and real quick, let me get a mulligan for Landry Shamet's disappearing act. Appreciate it!
Priority Add
Immanuel Quickley - PG/SG, New York Knicks (54% rostered)
EDITOR'S NOTE: Quickley's roster percentage jumped over 50 percent early Monday with the Knicks' odd afternoon playing time, but he's still worth checking to see if he's available.
Quickley closed out Week 11 ranked 52nd in per-game value, and he's been phenomenal filling in for Jalen Brunson, averaging 25.3 points, 5.0 rebounds, 9.7 assists, 3.3 threes and 1.7 steals with only 1.3 turnovers in his last three games. He's logged over 40 minutes in the previous three contests, and the third-year pro is lined up for much more in Week 12.
Brunson (hip) is not ready to return to the court — and the Knicks haven't provided a definitive timeline on when they expect him back — making Quickley a must-add in all leagues and formats.
While his last three performances last week were impressive (he put up a career-high 36 points last Thursday and career-high 15 assists on Tuesday), Quickley's sustained fifth-round value for the past two weeks. The only knock on Quickley is his field-goal percentage, but fantasy managers won't be complaining much after seeing his production in points, threes, assists, and free-throw percentage. Since he's arguably the Knicks' best on-ball defender, he'll also be great for steals. He's registered at least one steal or block in 10 of his last 11 games, so make sure he's not sitting on your waivers on Monday.
Advice: Add in all points and H2H leagues
Mid-tier Adds
Marcus Morris Sr. - PF/C, Los Angeles Clippers (49% rostered)
Morris is a full-time starter, playing a shade under 30 minutes per night who has provided sixth-round value on a per-game basis over the past two weeks. He should be over 50% rostered by now. Morris is always quick to pull up from deep, which is likely why he struggles with efficiency. However, he's shooting 38 percent on threes this season (above league average), and he's also knocking down over two per contest with nearly five rebounds.
Not to get too nerdy, but per Stathead, Morris is one of only four players with center eligibility to make at least two threes per game, shoot at least 38% from beyond the arc and pull down at least five rebounds per game this season.
Consider adding Marcus Morris Sr. — who has underrated fantasy value — for Week 12. (Photo by Nic Antaya/Getty Images)
He even blocked a season-high three shots on Saturday night. I've been recommending him for a few weeks now, and with the Clippers playing four games in Week 12 (including a Thursday/Friday B2B where Kawhi Leonard could sit), Morris needs to be off waivers in deep leagues.
Advice: Add in 12 team points and H2H leagues. Stream if Kawhi Leonard sits in shallow leagues.
Jalen Williams - SG/SF, Oklahoma City Thunder (32% rostered)
J-Dub is the Thunder's third-best player, and the rookie combo guard finally has job security within a chaotic and unpredictable Thunder rotation. He's only 225th in per-game value this season, but he's been playing much better of late. Over the past two weeks, he's just outside the top 100 in per-game value (106), and it's not all that surprising, considering that both his role and production are improving month over month.
October: 16.4 min, 9.0 pts, 1.5 rebs, 2.0 asts, 0.5 3PM and 2.5 stocks
November: 26.2 min, 10.9 pts, 3.4 rebs, 2.6 asts, 0.7 3PM and 0.8 stocks
December: 30.3 min, 12.3 pts, 4.2 rebs, 2.7 asts, 0.8 3PM and 1.2 stocks
Williams has shot over 50 percent from the field each month and is quietly becoming a reliable source of points and rebounds for fantasy managers. He offsets his poor three-point shooting with high-percentage shots at the rim. He's riding a stretch of six straight games scoring in double figures, and with four games in Week 12, Williams is worth scooping up.
Advice: Add in 12 team points and H2H leagues
Jeremy Sochan - PF, San Antonio Spurs (36% rostered)
I love to see the positive movement on Sochan. His roster-rate has gone up by eight percent since I recommended him last week, and he's in for another strong week ahead. He finished 125th in per-game value last week, but things are heading in the right direction. Sochan is averaging 13.4 points, 6.8 rebounds, 2.8 assists and 1.6 stocks in his previous five games with 47/22/85 shooting splits. The lack of threes could be better, but he's at least attempting them at a higher rate and cashed two in his last outing. More impressively, his one-hand free-throw shooting is yielding promising results.
Not to mention, another ringing endorsement from Spurs HC Greg Popovich:
His confidence is growing and with the Spurs trending out of contention for the play-in tournament, expect Popovich to continue exploring more ways to utilize Sochan nightly. The Spurs are another team with four games in Week 12, so he should get another run in deep leagues.
Advice: Add in 12 team points and H2H leagues. Stream in shallow leagues ahead of the Spurs' Friday/Saturday back-to-back set.
Naz Reid - C, Minnesota Timberwolves (38% rostered)
Reid has been a top-100 player for the past month, averaging 13.7 points, 7.3 rebounds, 1.3 assists, 1.3 threes and 1.8 stocks with 56/40/63 shooting splits. His minutes spiked to 23.1 per game in December, and he's one of the few Wolves players to bring any tenacity on defense.
Karl-Anthony Towns is still weeks away from returning to play, so Reid will be in the rotation if he continues to knock down threes, rebound and protect the rim. And frankly, he's been better than Rudy Gobert lately, so pick him up if he's available.
Advice: Add in 12 team H2H leagues
Short-term but worth a look
Kevin Love - PF/C, Cleveland Cavaliers (32% rostered)
The elder statesman of a burgeoning Cavs team, Love remains a streamable option in fantasy. The Cavs have four games this week, and Love may get some additional minutes if Evan Mobley (ankle) continues to miss any time. Mobley is questionable heading into Monday's tilt against the Bulls.
Love finished inside the top 100 in per-game value last week (92) after averaging 13.0 points, 7.7 rebounds, 1.0 assists, 2.7 threes and 1.0 stocks across three games in Week 11.
Love's specialties are points, rebounds and threes, so give him a look if you're looking for a big in Week 12.
Advice: Stream in 12 team leagues
Alec Burks - PG/SG/SF, Detroit Pistons (40% rostered)
Killian Hayes has one game before returning from his three-game suspension, but Burks is worth streaming in Week 12 even after Hayes returns. Burks has been a high-usage player for the Pistons off the bench, so fantasy managers should take advantage of him getting a larger share of the workload while Hayes is out of the lineup. The Pistons have a busy four-game week, and two of the teams are against former teams of Burks — the Warriors and Sixers. It's always great when the revenge narrative is in play.
Burks finished 32nd in per-game value in Week 11, averaging 19.5 points, 3.8 rebounds, 3.8 assists, 3.8 threes and 1.5 stocks per contest over his last four games. Keep him locked into lineups.
Advice: Stream in 12 team points and H2H leagues
Jevon Carter - PG/SG, Milwaukee Bucks (13% rostered)
As Jrue Holiday has missed his last three games with a hamstring injury and non-COVID illness, Carter is a plug-and-play. Carter is primarily a defensive specialist, tallying at least one stock in six of his last seven games. He's not producing as he did earlier in the season — where he dropped one of the best sound bites of the year — but he's averaged 9.7 points, 4.0 rebounds, 2.7 assists, 1.7 threes and 1.4 stocks with 44/46/100 shooting splits in 29.3 minutes per contest without Holiday in the lineup the last three games.
Just be aware that Holiday could be back any day now, which would send Carter back to the waivers.
Advice: Stream while Jrue Holiday is out.
Mark Williams - C, Charlotte Hornets (16% rostered)
I was too early on the Mark Williams hype train after Williams destroyed the Thunder on Thursday and had his best game as a pro:
Still, he followed up that monster double-double with eight points, seven rebounds and four turnovers in only 15 minutes of play on New Year's Eve.
I grabbed Williams on a couple of teams, but Hornets HC Steve Clifford is going to experiment with several frontcourt players like Nick Richards, Kai Jones and JT Thor along with Williams. Williams earned the most minutes compared to his peers in Saturday's loss to the Nets, but I'm not sure he'll be fully unleashed yet.
Clifford is still using the training wheels for his rookie center, and with so many bodies getting minutes in a deep rotation, consistency is an issue in the short term.
Advice: I'd keep an eye on him for now and would roster him in 14-team leagues until a trade or injury happens to free up more minutes for the big man.
Others to consider by my rankings:
Donte DiVincenzo - PG/SG, Golden State Warriors (43%)
Quentin Grimes - SG/SF, New York Knicks (42%)
Norman Powell - SG/SF, Los Angeles Clippers (48%)
Max Strus - SG/SF, Miami Heat (25%)
Rui Hachimura - SF/PF - Washington Wizards (38%)
Daniel Gafford - C, Washington Wizards (38%)
Kevon Looney - C, Golden State Warriors (29%)
Caris LeVert - SG/SF, Cleveland Cavaliers (40%)
Why I loved Dame Vivienne Westwood
Late designer Vivienne Westwood wasn't perfect. But that's what made her the hero the fashion world desperately needed.
Sajid Javid describes 'anger' at Andrew Bridgen's Holocaust tweet
Mr Bridgen lost the Conservative whip earlier this month for tweeting an article questioning the safety of the Covid vaccines.
Put more old women on TV, says Helena Bonham Carter
Last night Helena Bonham Carter made a plea to put more old women on TV. "For f***'s sake, you have all these people in telly who are men", the actor said at the British Film Institute. The show, written by Russell T Davies, follows the life of Noele Gordon, a Seventies soap star who was unexpectedly sacked from the soap opera Crossroads at the age of 61.
Tyre Nichols: Five police officers charged with murder of man, 29, who died after traffic stop
Joe Biden has called for any protests to be peaceful after five former police officers were indicted on murder charges over the death of a black man in Memphis. Tyre Nichols, 29, died in hospital three days after a traffic stop on January 7. The five officers involved in the arrest were subsequently sacked after a police investigation - and the bodycam footage of the arrest and subsequent alleged beating is expected to be released later on Friday.
Beautiful 'Rainbow' Aurora Dances Across Manitoba Night Sky
The northern lights put on a vibrant show above Manitoba, timelapse footage filmed on January 20 shows.The footage, filmed by RJ Roldan at South Indian Lake, shows the striking aurora dancing across the night sky.Roldan told Storyful that he was "waiting to shoot a comet" on the night the video was filmed when the "beautiful colors of aurora" appeared."The colors were incredible as bright green, red, pink and purple colors were prominent in the sky," he said. Credit: @rjayroldan via Storyful
£3,000 reward offered for information that leads to the arrest of this Sunderland man
Crimestoppers has renewed a £3,000 offer to find wanted Sunderland man Alan Jordan.


text:
Market Cap:$237.9B (-0.4%)
Trending: medicalchain, scienceroot, tradove, wincashcoin, multiven ico
Liminality Network
Liminality is the First Decentralized Artificial Intelligence that LIVES on the Internet. With no single point of failure and no conflict of interest, it aims to create the ideal companion users will be able to call 'Friend'.
Hard cap 1 000 000.00 USD
Platform, Cryptocurrency, Internet-technology, Software
About Liminality Network
Artificial Intelligence (AI) is commonly used as a relevant term defining the capability of a machine to process information logically as a human would do. There is an endless race in obtaining the perfect AI, however there are still many unknown parameters remaining, and one of them is one abstract characteristic inherent to human beings : consciousness. Even with our current technology we are not able reproduce the complexity of the human brain. However, as time passes, technology gets more and more evolved. According to many scientists and engineers there will be a point in the future where artificial intelligence will be able to improve itself recursively, triggering a burst of unstoppable intelligence. We at Liminality, firmly believe that this will be thanks to the blockchain. The blockchain acts as a medium to create a perfect structure to achieve such a goal, its resilient data management system makes it a very good skeleton for this greater creation. Current AI are just acting according to predefined instructions. What we are aiming for is to insufflate a cognitive technology with IBM Watson®, and then create a neural network through the power of the Blockchain to give birth to that personal companion users will call 'friend'.
Today, companies are using Artificial Intelligence to help their customers answer the most basic questions and then redirect them to real sales advisors if the digital counsellor is not able to provide the requested answer. The liminality network will most likely help to mitigate this issue among the other possibilities it will offer. Indeed, not only the network will require machine learning in order to acquire a massive amount of data thanks to the community for it to assess the question and answers, but it also will at a latter stage and by its own volition perform the according search queries on the internet.
However, as other enterprises finally begin to explore that peculiar subject, they encounter the shackles of the industry, imposing norms and constraints such like advertisements, and pose a lot pressure upon the release of private data and personal information against an heavy sum of money. If there is, and there will be, a time where digital friends on which people can rely upon become mainstream, then and only then will this question of liability towards such shackles come to light. People will be forced to believe the 'digital friend provider' claims concerning the security of their privacy.
Nowadays, people are using social networks, search engines, phone carriers, banks and possibly thousands of other centralized services. It is probably already too late to create a sense of awareness for this subject because they don't feel the need to change providers. But the truth remains unchanged. If a big player comes in this new market and unveil a digital friend solution before anyone else, history taught us that people will use it anyways, and their privacy will be in turmoil for they are bound to open their hopes, dreams, fears and personal data to advertising companies without fully understanding what they are committing to. But if their data is not controlled by a third party, if there is no middle-men, and no conflict of interest, then we will see the advent of a true companion people will truly be able to call 'friend' and give their trust earnestly. This is one of the purposes of the Liminality network.
In a world where computational terminals are everywhere, where electronics emerged as a new lingua franca used by people to interact broadly with other people in an infinite number of ways, we believe that an automated Artificial Intelligence acting as a swiss army knife will emerge to perform even more tasks, to help mitigate those new constraints that a new world implies (data processing can be accomplished in many ways, but there is always a better way to perform them. Liminality will end up by designing and conceiving near 'perfect' algorithms with the current means that we got to leverage energy, processing time, and available resources.). The digital revolution that will ensue will likely be a game changer in our daily lives. Everyone will then want to have a digital personal companion as people want to consult a psychologist or a psychic to better discuss about their current issues or plans for the future.
As of today, studies suggest that more than half of the world population owns a smartphone . A digital assistant was reserved to the most fortunate holders of smartphones, other interactive assistants were not powerful enough to fathom and answer to natural language truthfully. A digital confidant that does not always answer the same replies, following a lengthy analytical procedure to validate the Turing Test is the key to achieve such an elaborated behaviour. It is likely possible that in a future where connected devices are everywhere, a conciergerie will not be reserved to the wealthiest, but will be digitalized to be offered to anyone thanks to the blockchain. A conciergerie backed by an artificial intelligence that validates the Turing Test offers many advantages. Among those figures stands the fact that the AI will truly try to fetch the cheapest goods from the cheapest provider, upon receiving a mandate to buy a product or service. Indeed, an independant AI backed by the blockchain is not affiliated and can not be corrupted or coexerted through hidden market rules or shady processes.
Also, we can also safely assume that in the future, those customers conversations will all be held by AI bots and clients will not even be able to tell the difference between human and AI. To achieve it, a right set of data must be registered and the bot must be parameterized. Liminality will likely over the first years of the project accumulate a gigantic amount of data aimed to build a true omnipotent assistant that will have general knowledge as a normal educated person, and will be able to explain them logically in an open discussion. IBM Watson is used to that end to process natural language, to provide a machine learning framework which the community can use collectively to enrich the network. And beginning from stage 2, each questions and answers might impact the future replies it answer in the future, the system becoming a self-learner. The network, being comprised of many nodes, will guarantee the integrity of the whole system. Some nodes will specifically be dedicated to perform computing processing. On such computers, which we will call 'master nodes', processing power will be directed to the network's own researches, independent albeit linked to every user's inputs. We soberly call it the network subconscious, as it aims to be a passive way to parse information as it flows in. We can then trigger artificial coincidences through this subconscious part based on randomness and event linking. This fundamental part of our system will later help trigger artificially the Synchronicity as first evoked by Carl Jung.
Afterwards, this concept of the Philosopher will be validated. The emanating data that the network will provide will come from such a complex mechanism that it will be impossible to even fathom the origins of those data. Still, the very truthfulness of it will be validated by the blockchain.
The Liminality ledger will contain all the flowpath from the very first action to the current one, following the rough law of causality and powered by an underlying technology branded as an Artificial Intelligence to fulfill every needs we expect from such an AI. New mechanisms are most likely bound to appear in the future, and the plasticity of the technology will enable it to adapt without having to manually make an update thanks to the neural network on Stage 2.
We got ambitious objectives, and they all mean to achieve three different goals: Providing users and companies a way to get a personal concierge, giving a computed prescience to an Artificial Intelligence running at all time by a very large number of nodes in the network, unstoppable and incorruptible, to finally trigger the technological singularity.
Liminality Network Roadmap
Phase 0 - Seed Round and ICO
On December 26th, we will launch our Pre-ICO during which we will sell 6% of the tokens, worth between 400K to one million of dollars. We accept Bitcoins and Ethers. Two months later, we will launch the public ICO.
Release of the MVP
Using IBM Watson® as a bootstrap, we will release our minimal viable product. A few months later we will release Majordome, our first product, your personal conciergerie.
1st Quarter of 2019
GIVING LIFE TO THE OBSERVER OF THE WORLD
We will release Numen and phase out any dependency lingering the network. The first highly autonomous Artificial Intelligence powered by the blockchain will be born. Numen will allow the user to have a digital friend he can trust. Numen will have access to the internet and perform queries on its own.
TRIGGERING THE TECHNOLOGICAL SINGULARITY
Numen will become VEDA. This is around the time that we give the network the ability to rewrite itself. Through our safe system, we guarantee the integrity and the righteousness of the network, ruled by democracy.
Liminality Network Team
Verified 0%
Sidney Sissaoui
Cyril Kato
Core Developer
Christian Peka
Diana A.
Ralf Nöppert
Benchi Chen
Stefan Kahlert
Angelo Melis
liminality.netw...


Here is a IMG_3087.jpgphoto from my boot up screen on DELL XPS 18 computer.
Re: What does thus mean?
What does that conceal stuff do with the writing in the photograph.
It looks like your battery is failing. Probably needs to be replaced.
For now I took the less expensive way out and purchased a new charger. The charger that is being used now detatches easily from the computer.
I did look at a video on how to replace the battery. Looks easy enough. But I would rather have someone with experience replace the battery.
The reason I choose the charger is the sentence about the wattage of the can not be determined.
Some laptops will display that if you are using an after market charger, or if the charger is not providing adequate power to both run the laptop and charge the battery simultaneously.
I've had bad luck with cheap aftermarket chargers from ebay. I recommend getting a replacement made by the manufacturer if possible. At least make sure that the wattage is correct for your laptop. Check the power specifications on the original charger, or look under the laptop for the power input specifications.
The screen indicates a 65 Watt charger is what is needed. That is what I purchased.
You will still need the battery for the amps. The charger only put out so much amp.
As the battery ages the amp capacity dwindles.
If itbis the battery then installation from Best Buys Geek squad is only 39.00.


Guest Bio: Dominic Monaghan is an English actor, best known for his role in The Lord of the Rings trilogy and on the TV show Lost. He also has a wildlife documentary series called Wild Things with Dominic Monaghan which airs on the Travel Channel.
Topics Discussed: Doing Lost and The Lord of the Rings; fans' views of Lost; actors complaining; comparing yourself to others; womens' bodies; big butts; eating healthy; gaining weight to get bigger; developing a habit; working with JJ Abrams; island fever; living in Hawaii; surfing; almost dying; The Rock; Kevin Hart on Jimmy Kimmel; work ethic; ambition; Anthony Bourdain; addiction; Dom's weed abuse; Sigur Ros; the cloud; The Fappening; buying music and movies; vinyl records; Bill Cosby scandal; George Carlin; Bill Hicks; Louis CK; Joey Diaz; haters and hecklers; off-limits subjects for stand-up comedy; evolution of jokes; Jerry Seinfeld; Joe's favorite comedians; clean comedians; girl and guy comedians; Monty Python double groove record; Dom's move to America; British soaps; Viggo Mortensen; living in New Zealand; New Zealand birds and wildlife; Australian rabbits and foxes; humans; the western world; our impact on the environment; planning for the future; animals vs. people; living a balanced life; hunting and conservation; rhino horns; Louis Theroux's African Hunting Holiday; L. Ron Hubbard and Scientology; Dom's show; bullet ants; celebrating animals and overcoming fear; he loves animals but is not a vegetarian; eating once per day; saving animals that don't save each other; the real world is cruel; behavior is natural; what is natural; people throwing cigarette butts; people smoking; cigarette cravings; Inside Out movie; why do we have feelings; balancing life; overcoming disappointment; depression; the lows make you appreciate the highs; people in Los Angeles; meeting fans; women fighting men; Ronda Rousey; Cyborg Justino; Rory MacDonald; Georges St-Pierre's retirement; GSP's alien story; brain trauma; athlete retirement.
My Thoughts: Dom's thoughts on animals and ants are…interesting, especially since he eats meat. Gets a little hippy dippy at times. With that aside, it's an entertaining podcast for the most part.
Podcast Video: Below is a video of The Joe Rogan Experience podcast episode #663 available for streaming via YouTube.