Bull-Pine-Gopher Snakes Forum
Pacific gopher snake breeding basics?
Yeah I know I’m asking a lot of questions here, I just found this site today so I’m getting it all out! ^^;
I’m looking at gopher snakes for sale and there’s this one guy selling Captive Bred & Born 07’ amelanistic pacific gophers. He’s got a deal on a female/male pair and says that they’re ready to cool/breed this year as a high color pit project. They look very healthy in pictures, of a good weight.
In my opinion, they’re still a bit pricy. He’s selling the pair for $400. What’s your opinion on how much a deal like that should cost? I want to know if I’d be getting ripped off or not.
I’ve never bred before and I’m still looking around for research. If someone could be so polite and tell me....everything? x) I’m serious though, any and all hints/tips/stories/experiences/links to informative websites etc etc are really appreciated! Even things you think would be common sense, I just want to make sure I don’t miss anything at all!
I’ve got the basic idea, but nothing specific on gophers. Are they an easy snake to breed when compared to others or is there another you’d recommend for a first time breeder? I’m hoping to use them as my first kinda as "practice" for when I breed my woma python in two or three years...
Could you give me a list of things I would need?
Two separate completely furnished enclosures for each parent right? Do I need a third for them to mate/lay eggs in or does that just happen in the female’s tank? Also what kind of incubator do I need and what is needed to warm it?
THANKS GUYS! ANY HELP IS APPRECIATED!
Message To: Just Curious~ In reference to Message Id: 2203702
Pacific gopher snake breeding basics?
By; Del Alspaw
Kern Reptile Research Center
Pituophis “pit-chew-o-fuss” is a genus of North American snake species that has many common names. It is called: Bull snake, Gopher snake, or Pine snake commonly through out America. I began working with pituophis when I decided to take up captive breeding. I wanted a species that was hearty and inexpensive. As I began to work with these animals I became more and more fascinated with this remarkable species. They display an awareness of the surroundings they live in that is uncommon among snakes.
I have discovered that pituophis is one of the few species left that still maintains clean lineage back to it’s wild ancestors. Most color morphs as well as what is known as “local specific” specimens can be traced back to their wild beginnings. I have also learned that true “pituophis people” are very particular about where and who they acquire animals from. I am breeder of both local specific and color morph specimens. Let me put you in the correct frame of mind by giving you the following examples and information before we get into the breeding side of things. Local specific specimens have pin point data as to their location in nature. This is a sort of premium status among collectors giving them a greater value in their eyes. Some color morphs pituophis command a lower price than some local specific types due to the fact that some breeders have bred a particular morph trait into their breeding colonies. By taking an albino or normal phase bull snake from Colorado and breeding it with a normal looking bull snake from Texas you have created an unfavorable animal by most pituophis peoples standards. However if you have an albino or normal phase Colorado bull snake and you breed it with a normal looking Colorado bull thus introducing the albino morph into that line but maintaining the locality purity, you have a more acceptable lineage. Now let’s say for the sake of example you breed a Pacific gopher snake (p. c. catenifer) with a Northern pine snake (p. m. melanoleucus) then you have committed a cardinal sin. Your reputation will be flawed in the eyes of most pituophis people and your live stock will be almost worthless. My advice is to stick with known lines and morphs that come from reputable breeders.
Let’s cover some legal aspects of the hobby. Most states require some form of permits for owning, breeding, collecting, and/or selling of reptiles native to that state. Other states require permits for any type of reptile ownership, commerce or breeding regardless if it is native or not. So please check you local laws before starting a project because it will save time and money in the long run. A plus to having permits for native species is that is also adds a pedigree status to the animal because now it’s capture data is listed in state records. Most people with permits have excellent husbandry habits since that state may have surprise inspections on the breeder and require yearly records to be submitted to the state. In California you must have a valid state-fishing license to hunt native reptiles plus an additional permit if you plan to captive produce natives for commercial and/or non-commercial purposes. I also can’t stress enough the importance of keeping records even if they are not required by your state. Keep track of everything about your animals, for example some of the items I regularly track are age, origin, history, any hidden traits such as het. for albino etc, feeding dates, feed items, shed dates, growth rates, breeding dates, brumation dates, offspring production and health problems and treatments.
Age and size
Let’s say you just got your hands on a cool pair of hatchling bull snakes. The female needs to be a minimum of three years old before breeding should be allowed. With some pituophis it is more of a size issue than age. Like with Black pines (p. m. lodingi) their eggs are so large that it is sometimes better to wait an extra year in order to get the females size up to par. Snakes that are to small or “power fed” in order to reproduce faster often become “egg bound” add this to the several other known complications and this can be very costly to you and the snake. A good rule of thumb is make sure your female is past the three-year mark, and adult in size. Some males will breed in two years though with very little side effects. Males will also be smaller most of the time. Pituophis will reproduce most of their lives. I have heard of breeders in excess of twenty years of age.
Feeding and diet
I have discovered that most pituophis have a very good appetite and will eat live or thawed food items without much concern on the owner’s part. The question what to feed your growing and/or breeder pituophis. I maintain mine on a primary diet of rodents. I feed them mice or rats that are about twice the size as the snake’s head. Large snakes get two or three of these and smaller only gets one. I also supplement them with baby chicks every so often just for a change plus pituophis seem to relish them. I have found that baby chicks can stimulate their feeding reactions when they don’t seem to be interested in rodents due to pre or post brumation cycle etc. It should be noted that a diet of only rodents is an acceptable diet, where a diet consisting only of chicks is not, chicks should be used only as a supplement. Also steer clear of tap water; try to use bottled or filtered water to avoid all the chemicals found in municipal water supplies. When feeding “captive produced” animals always remember that they have not been exposed to the same elements as animals in nature so it is not recommended to feed your captive a wild caught lizards, birds or rodents.
Housing of breeding stock
Pituophis do require a good amount of room in their enclosures. My males do fine in single level cages that are about 36 inches long x 18 inches wide x 6 inches tall. The females are in cages that are “bi-level”. This works out well because I use the bottom level as the “nest box”. These cages are about 24 inches square, the bottom level is 6 inches tall and the top level is about 14 inches tall. There is a 2 ½ diameter piece of p.v.c. pipe that connects two levels and allows the snake to crawl to either level with ease. I place the water dish and food items in the top level and the snake comes up from the bottom and feeds/drinks almost replicating nature in some fashion. The bedding we use is a sterilized hardwood chip product that we prefer over the usual aspen bedding found in most pet stores. However the aspen shavings, newspaper, and paper towel also work well.
I prefer the term brumation to hibernation because pituophis don’t actually hibernate. They stay somewhat active during their winter recluse. I find that it’s more of the light cycle they react to than temps. so I keep my pituophis in total darkness during their whole brumation cycle. Our brumation chamber is basically a large wood crate lined with 1 inch styra-foam that has a heat element in set up to come on when the temp dips below 46 degrees. We place our breeders in plastic containers with ventilation holes and a small dish of water. To save space and give them the feeling of a more natural like den you can put several males in one container and females into another. Also place an extra amount of bedding in the container, as the snakes will like to burrow into it. We stack all these containers in the chamber close it up, only opening it to check the snakes every 3 weeks. To actually start the brumation cycle I drop their temp a few degrees each day. I don’t allow their temp to drop lower than 46 degrees, 51 being ideal. I keep them down in this range for ten to eleven weeks. When I bring them out I gently increase their temps a few degrees each day until they are back to about 73 to 78 degrees.
Now that you have your pits up to normal 78-degree temp ranges let’s start feeding them. I feed mine every 6 to 10 days feeding the males less often than the females. Once you have brought them out of brumation feed them regularly until they begin their post brumation shed cycle. After the post brumation shed, put the female and male together. I keep them together for 3 days then I separate them, feed them. After 3 days of digesting I place them back together for another 3 days and repeat the process. I alternate witch cage I place the breeders in, sometimes the male goes in her cage and sometimes I do it the other way. The male may stop feeding until after the female sheds again thus ending the breeding season. Once the breeding season ends and the male starts eating again be sure to get good amount of weight back on in time for the next brumation cycle.
Pre-egg laying care
The female should be fed every 4 to 6 days after the breeding season ends. Once you know she is gravid then as time to lay grows near cut down on the size of the food slightly but not the frequency. She should begin to show signs of egg production shortly after she sheds. As she begins to swell try not to disturb her very much, keep her warm, clean and calm. Once she starts hanging out in the nest box check check here every day for eggs. The ball park time for egg laying is 30 to 45 days after copulation. Try to provide the female a warm spot on the floor of about 85 degrees to aid in her egg development.
Nesting and egg laying
As I said earlier I use the lower level of my cages to create a nest box for the female to lay her eggs in. The lower level is actually a kitty litter tray. Once I see the female begin to roam the cage as if she is looking for something I remove the bedding substrate and replace if with damp green moss that you can get from your gardening store. The female will almost immediately go into the box and begin to nest.
I have found that green moss works much better than vermiculite as a nesting and incubation substrate. I take the moss and mist it until it is nice and damp but not dripping wet. I then place it in the nest box. Be sure to check every day or so and mist it if it seems dry. The female may not be very happy about all the misting so when the time draws near refrain from it. Within a few days the female will lay her clutch of eggs in the nest box. Once they have been laid you must move them to the incubator before the eggs dry out.
I keep the eggs in plastic containers with 1/8-inch holes punched about every inch or around the top edge. I fill it with about an inch of damp (not dripping) green moss, place the eggs inside sitting basically in the same position as when laid, then cover them with about another inch of damp moss, and close the lid. If the eggs are stuck together DO NOT try to separate them! I have found that green moss has a much better fungicide action than does vermiculite type products. Moss also suspends the eggs with less substrate contact to the shell thus allowing more airflow around the egg. Eggs can die if placed in vermiculite that is to damp thus causing over absorption by the egg. I then place this container inside a larger plastic tub that has holes too. I fill this container with about an inch of water so to keep the humidity up in the egg container. Once I have the incubator all set up I place it all into a dark warm area that stays around 78 to 84 degrees most of the time. The eggs also seem to develop better with a bit of variation in the incubation temp. The warmer the temp the sooner the eggs will hatch so figuring the exact hatch date can be a challenge so I take the easy way out and stick with the 50 to 70 day rule.
John Cherry – Cherryville Farms states; “We use a closed airtight box with a vermiculite/perlite mixture with the eggs half way down. The vermiculite/perlite is dampen to the point where when squeezed in the hand it clumps together, but no water runs out. Adding a little perlite to the mix at a ratio of 20% perlite will loosen the media. The box is opened every 5 days to check for moisture content, mold etc. The eggs are placed about an 1 ½” apart in the rubber maid sealed boxes. If moisture is needed spray distilled water on the sides of the box rather than on the eggs. We incubate at 82 – 84 degrees and do not use an incubator, rather we use a small open air (an old bathroom actually) room in our facility where we regulate the temp using a space heater on a thermostat. Using this technique we have had 98.64 % hatch in the last five years with over 11,700 animals hatched.”
These opinions only prove that there are several different ways to achieve the same results the trick is find what works best you and your area.
This article is intended for the beginning herpetologist/herpteculturist who is interested in captive breeding. I feel that pituophis are the perfect species beginners as well as the advanced herpetologist. Their attitude, size, and heartiness make them the ultimate pet as well as a breeding project. Keep good notes and records and you will begin to see patterns and cycles that are quite fascinating. Nothing is more rewarding as when you begin to see your own ideas, creations, and predictions come to pass. Get involved your local reptile club, zoo, etc. too and help inform and educate the public about these and all the other wonderful reptiles and how necessary they are for the survival of our planet.
Special thanks to;
Terry Parks, John Ginter, Bart Bruno, Terry Vandeventer, Gerry Salmon, Gary Ballam, Glen Fankhauser, Terry Lilley, Steve Weissman, John Cherry, John Meltzer, Mike Waters, KJ Lodrigue, and all the others.
Message To: Greatballzofire In reference to Message Id: 2203765
Pacific gopher snake breeding basics?
THANK YOU SO MUCH! That was very helpful! ^^


Daniel has a string s, consisting of lowercase English letters and period signs (characters '.'). Let's define the operation of replacement as the following sequence of steps: find a substring ".." (two consecutive periods) in string s, of all occurrences of the substring let's choose the first one, and replace this substring with string ".". In other words, during the replacement operation, the first two consecutive periods are replaced by one. If string s contains no two consecutive periods, then nothing happens.

Let's define f(s) as the minimum number of operations of replacement to perform, so that the string does not have any two consecutive periods left.

You need to process m queries, the i-th results in that the character at position xi (1 ≤ xi ≤ n) of string s is assigned value ci. After each operation you have to calculate and output the value of f(s).

Help Daniel to process all queries.


5 Year Member
- Nov 24, 2014
- Location (City and/or State)
- UK Sheffield
I agree totally, there is always more than one way to achieve the same result.So far I don't recall mentioning Red-foot Nerd at any point in this thread. At least not in a negative way.
But in answer to your question yes, speaking in absolutes---saying that 'this is the only way to achieve natural looking captive raised tortoise' or 'you must follow my direction or your tortoises will look screwed up' and things like that, is misleading simply because such statements aren't true. It also puts an unnecessary fear into a new keepers head.
Many, many keepers have achieved perfectly natural looking captive raised tortoises without following any specific care sheet directive--either Red-foot Nerd's or anyone elses. But I would quickly add that care sheets can be, and generally are beneficial.
However there are certain areas that when someone shows exactly how they did it, it is comforting for the newbie.
Reds eat just about anything, the combinations of dietary method is quite daunting to the newbie. This aspect of redfoot keeping outways most other species regarding options. If I had a panda the diet would be spot on, it only eats bamboo.(I think)
I've had my juvies for about 17months now, I thumbled through trying to work out what diet In what proportions is the best. Im finally set on a routine. Is it right, I don't know until I see the results in years to come.
Now, if I had seen redfootnerds method on feeding which is quite specific in what and when to feed, it would have cut out a lot of experimenting on my part. I've no doubt at all that you or other experts have slightly different feeding methods.
All these different and correct methods of feeding would help a newbie immensely.
Just a long list of ok foods is good, but does not help with quantities.


Blazing fast CI with pytest-split and GitHub Actions (via) pytest-split is a neat looking variant on the pattern of splitting up a test suite to run different parts of it in parallel on different machines. It involves maintaining a periodically updated JSON file in the repo recording the average runtime of different tests, to enable them to be more fairly divided among test runners. Includes a recipe for running as a matrix in GitHub Actions.
- Interesting ideas in Observable Framework - 3rd March 2024
- Weeknotes: Getting ready for NICAR - 27th February 2024
- The killer app of Gemini Pro 1.5 is video - 21st February 2024
- Weeknotes: a Datasette release, an LLM release and a bunch of new plugins - 9th February 2024
- LLM 0.13: The annotated release notes - 26th January 2024


I did a little experiment comparing C++ STL map with AWK associative array in counting word frequency of large text files. The result is astonishing: AWK associative array is about 6 times faster than the C++ code!
At first, I put my eyes on the C++ code that splits a line into words. I tried STL istringstream, C strtok_r, and a string splitting trick that I learned in Google. However, these choices do not affect the efficiency saliently.
Then I realized the lesson I learned from parallel LDA (a machine learning method, which has been a key part of my research for over three years) — map is about 10 times slower than map. I found that this issue has been thoroughly explained by Lev Kochubeevsky, principle engineer at Netscape, in 2003. Unfortunately, seems no improvement to STL string emerged since then.
On the other hand, I highly suspect that AWK, an interpreted language, implements a trie-based data structure for maps with string-keys.


I am trying to connect Apache Cassandra nodes into a ring. They are not Datastax versions, but Cassandra 1.2.8 from the Apache website. When trying to add one as the seed of the other I get following exception:
Unable to find compaction strategy class 'com.datastax.bdp.hadoop.cfs.compaction.CFSCompactionStrategy'
Before that I change the "listen_address" and "rpc_address" to local IP address of each node. Next step I add one IP as a seed to another node. The nodes start up, an exception is printed but both nodes run fine until restart. After restarting either node the exception is printed and nodes do not run.
This is very strange - I do not have any DSE components.


Thank you for considering my question. It is a very simple question. But it is one I need to find the answer to for something I am working on.
The question is this:
Is it conceivably, morally, imaginably POSSIBLE for there ever to be more primes from n to 2n than from 0 to n. Like, for example, could there be more primes from 18 to 36 than from 0 to 18 (of course, we know it's not true in this particular case, but I want to generalize it.)
Yes, it seems counter-intuitive to imagine that this would be the case. Yes, it smacks in the face of our immediate reason. But can it be PROVEN? HAS it been proven? And proven by whom?
I couldn't for the life of me try to prove it myself.
It might involve assuming a zero derivative for pi(n), which might be logarithmic. But we know only that it's close to some logarithmic function n/(ln n). Not that it's in fact a logarithmic function itself (or DO we?).
This would be the last step in a very important theorem I am working on. Please keep in mind that I have no degree in anything and have no formal training in mathematics. So any gaping holes in my knowledge should be made understandable to you.


14 hours (usually 2 days including breaks)
The Python programming language is becoming more and more popular among Matlab users due to its power and versatility as a data analysis tool as well as a general purpose language.
This instructor-led, live training (onsite or remote) is aimed at Matlab users who wish to explore and or transition to Python for data analytics and visualization.
By the end of this training, participants will be able to:
Format of the Course
Course Customization Options
Setting up a Python Development Environment for Data Science
The Power of Matlab for Numerical Problem Solving
Python Libraries and Packages for Numerical Problem Solving and Data Analysis
Hands-on Practice with Python Syntax
Importing Data into Python
Converting an Existing Matlab Application to Python
Common Pitfalls when Transitioning to Python
Calling Matlab from within Python and Vice Versa
Python Wrappers for Providing a Matlab-like Interface
Summary and Conclusion
Teaching style and ability of the trainer to overcome unforeseen obstacles and adopt to circumstances. Broad knowledge and experience of the trainer
Overall good intro to Python. The format of using Jupyter notebook and live examples on the projector was good for following along with the exercises.
We are looking to expand our presence in Brazil!
If you are interested in running a high-tech, high-quality training and consulting business.Apply now!


Monty Python's SPAMALOT
The Pinckney Players present SPAMALOT
Lovingly “ripped off” from the classic film comedy Monty Python and the Holy Grail, SPAMALOT tells the legendary tale of King Arthur and his Knights of the Round Table, and features a bevy of beautiful show girls, not to mention cows, killer rabbits and French people.
Tickets available March 11 at Busch’s Valuland or the Community Education Office in Pinckney and Brighton Tux Shop in Brighton. You can also reserve tickets now online at pinckneyplayers.com
Created by Pinckney13
2130 Rte 36
Pinckney, MI 48169


A positive integer is called composite if it can be represented as a product of two positive integers, both greater than $$$1$$$. For example, the following numbers are composite: $$$6$$$, $$$4$$$, $$$120$$$, $$$27$$$. The following numbers aren't: $$$1$$$, $$$2$$$, $$$3$$$, $$$17$$$, $$$97$$$.

Alice is given a sequence of $$$n$$$ composite numbers $$$a_1,a_2,\ldots,a_n$$$.

She wants to choose an integer $$$m \le 11$$$ and color each element one of $$$m$$$ colors from $$$1$$$ to $$$m$$$ so that:

- for each color from $$$1$$$ to $$$m$$$ there is at least one element of this color;
- each element is colored and colored exactly one color;
- the greatest common divisor of any two elements that are colored the same color is greater than $$$1$$$, i.e. $$$\gcd(a_i, a_j)>1$$$ for each pair $$$i, j$$$ if these elements are colored the same color.

Note that equal elements can be colored different colors — you just have to choose one of $$$m$$$ colors for each of the indices from $$$1$$$ to $$$n$$$.

Alice showed already that if all $$$a_i \le 1000$$$ then she can always solve the task by choosing some $$$m \le 11$$$.

Help Alice to find the required coloring. Note that you don't have to minimize or maximize the number of colors, you just have to find the solution with some $$$m$$$ from $$$1$$$ to $$$11$$$.


SQL 2016 – It Just Runs Faster Announcement
SQL Server According to Bob
JUNE 3, 2016
SQL Server 2016 ‘It Just Runs Faster’ A bold statement that any SQL Server professional can stand behind with confidence. My development collogues and I are starting a regular blog series, outlining the vast range of scalability improvements, allowing SQL Server 2016 to run across a wide array of hardware configurations, faster and better than previous releases of SQL Server. Try SQL Server 2016 Today. SQL 2016 – It Just Runs Faster: DBCC Scales 7x Better.


Some of my favorite insight on the topic comes from a post by John Allspaw. In the post, he states that in order to learn from a mistake without inhibition, there must be not only complete trust but also no fear of retribution. I take this view to heart and I'm a devoted defender of the concept.
However, I feel like the view comes with a few provisos. There is possibly a greater philosophy at play in the question. What really got me thinking about this was one of the stories I heard at the conference. The story was about a site outage caused by a technician on the customer support team running a tool written by the dev team, which was known to have a very high risk of causing site outages. The technician had been trained in how to use the tool and, according to the story teller, knew full well the consequences of his actions. So, for the company it was a straightforward decision to fire him. ...Or was it?
If you read about human error, you learn that situations within a system and organization can foster human errors. This is often the first explanation of a failure induced by a human. In our investigation here, it's difficult to imagine any resident situation in the system or org which would have fostered a technician to *knowingly* induce an adverse outage of the application he was paid to support. So, that lead me next to consider that perhaps the technician felt running the script would have no connection to an outage. But again, having been fully trained in the consequence of the script, this felt unlikely. Perhaps a final explanation might be that the technician felt the risk of outage justified the outcome of running the tool. Maybe; but from the storyline, it didn't seem like that was a likely decision.
So, were the theories about human error just somehow inapplicable to this situation?
That's when I realized something about each of the questions. I realized that they were posited on the assumption that the technician was qualified for and satisfied with his job. I realized that if the technician didn't care about his job or hated his boss, then all of my thinking was flawed. All the explanations are based on the belief that the technician wants what is best for the company. If he had no thought for the success of the company, then it would make easy sense for him to take the shortest path to accomplishing an immediate goal despite negative side effects. So, rethinking the first question -- could an organizational, non-technical situation foster human errors? Yes, I believe so. A non-technical situation could certainly foster feelings of dissatisfaction or frustration resulting in a technician who didn't care about the outcome of running a tool that would solve his immediate problem, but potentially cause a site outage.
Excellent! So, the key to success is maintaining an inspired work force, right? Partly, yes; but not exactly.
For the Workforce
If the company is fostering a disgruntled workplace, then the solution is straightforward: keep them happy and inspired. But, what if your employees are happy? How could the tech's actions be explained?
The next idea that occurred to me was perhaps it wasn't the organizational situation at all, but actually the employee himself. What if the employee was generally just a disgruntled or careless person? DevOps and other strong cultures are built upon trust, but that trust needs to be built on the prerequisite that you hire the right people. If poor hiring choices are made, the whole ecosystem breaks down.
A Different Type of Outage
As it turns out, although hiring the right people is such an important task to do well, it's often underdone and rushed. And why? For the exact same reasons we end up with technical debt: urgency. If we've learned anything from technical debt, we know that we create it to solve an immediate problem, but that solution leaves us in a much worse long term situation. If we know this is true, then maybe we should treat firing an employee the same way we treat a site outage. Specifically, we should postmortem all the steps that lead up to hiring: the phone screen, the recruiter's notes, the interviews, the round-up, the closing. I think that if firing were treated as a much costlier action, then perhaps hiring would be conducted with a much higher bar. Ultimately, in the case of the fired technician, perhaps the fault lays more with the hiring manager for putting the tech in the situation to use the tool at all.
So, to bring it back to the original question: would you ever fire anyone who caused an outage? My answer is a lot more complicated now. I will continue to apply the concepts of human error and would never fire an employee only because of an outage. Would I fire an employee who consistently underperforms, is habitually unhappy and careless, costs more than he or she produces, continues to fail at personal performance improvement plans, and is uninterested in other roles within the company? Very possibly. Whatever the case, if an engineer is fired for any reason, I want to postmortem how we came to the situation, starting with the initial phone screen in the hiring process.
What metrics can drive improvement?


DZY loves planting, and he enjoys solving tree problems.

DZY has a weighted tree (connected undirected graph without cycles) containing n nodes (they are numbered from 1 to n). He defines the function g(x, y) (1 ≤ x, y ≤ n) as the longest edge in the shortest path between nodes x and y. Specially g(z, z) = 0 for every z.

For every integer sequence p1, p2, ..., pn (1 ≤ pi ≤ n), DZY defines f(p) as $$\min_{i=1}^{n} g(i,p_i)$$.

DZY wants to find such a sequence p that f(p) has maximum possible value. But there is one more restriction: the element j can appear in p at most xj times.

Please, find the maximum possible f(p) under the described restrictions.


Hasta la (Windows) Vista baby.
There's nothing quite as futuristic as Skynet in this brilliant 8-bit (with quite a bit of 16-bit) video game reimagining of the classic 1991 movie Terminator 2: Judgement Day, created by the amazing Dutton brothers at Cinefix.
Unusually for the titles Cinefix normally tackles, Terminator 2 did actually get its own 8-bit and 16-bit game versions at the time - so for fairness, we've included them too. But the Cinefix version is done and dusted in just over three minutes, so it's a lot quicker to get to that final tearjerking scene.
Hopefully they'll do a version of the new movie: Terminator (Sega) Genisys.


What you did took not only courage, but self-respect and respect for your partner. Boundaries are kind of alien to CSA survivors, and definitely alien to alcoholics. Defining your boundaries and sticking to them is a HUGE step. Keep up the good work buddy. Err...sorry, I didn't realize you were female. No offense.
Edited by Jude (04/22/13 11:13 AM)
"In the burning Heart, Just about to burst
There's a quest for answers, An unquenchable thirst
In the darkest night, Rising like a spire
In the burning heart, The unmistakable fire"Survivor


I am trying to build an RFID system that will help with data collection for my research. What I need is for a timer to start when a race start gate drops, and then, when an athlete moves through the start gate, for the timer to stop. This will tell me how long it takes from when the gate drops until the RFID sensor (placed on the person's hip) passes through the gate. I think I am basically looking to make a simple RFID race-timing system, but it needs to be cost-effective and there is no need for long-range reading at all. I don't need it to provide live timing—I can use Microsoft Excel afterward to pull the data out that I want. I am pretty new to RFID, so if there is any way to be pointed in the right direction, or if there is specific equipment I should use, that would be very helpful.
= = =
The big question is how close the tag can be to the reader antenna. Race-timing systems originally put tags on sneaker laces and readers on the ground, so the tags could be within a foot (no pun intended) or so of the reader antenna. If you can use that system, or if you can guarantee that an RFID wristband on the subject's wrist can get within 1 to 3 feet of the reader, you can use a low-cost HF reader module, which is available on the Internet. You will need antennas, cables and software that will take the data from the reader and enter it into your database.
If you cannot guarantee the subject's tag will be within 1 to 3 feet of the reader, you will need to use a passive UHF RFID system. You can also buy these on the Internet. Again, you will need antennas, cables and software that will take the data from the reader and enter it into the database. A simple search for "HF RFID reader" or "UHF RFID reader" will turn up a variety of online purchase options.
Founder and Editor


The king of some country $$$N$$$ decided to completely rebuild the road network. There are $$$n$$$ people living in the country, they are enumerated from $$$1$$$ to $$$n$$$. It is possible to construct a road between the house of any citizen $$$a$$$ to the house of any other citizen $$$b$$$. There should not be more than one road between any pair of citizens. The road network must be connected, i.e. it should be possible to reach every citizen starting from anyone using roads. To save funds, it was decided to build exactly $$$n-1$$$ road, so the road network should be a tree.

However, it is not that easy as it sounds, that's why the king addressed you for help. There are $$$m$$$ secret communities in the country, each of them unites a non-empty subset of citizens. The king does not want to conflict with any of the communities, so he wants to build the network such that the houses of members of each society form a connected subtree in network. A set of vertices forms a connected subtree if and only if the graph remains connected when we delete all the other vertices and all edges but ones that connect the vertices from the set.

Help the king to determine if it is possible to build the desired road network, and if it is, build it.


How to register an account on GitLab. To prevent spam, new accounts are locked until approved by an admin or the approver bot. You can also file an unlock request to expedite access.
Support: mw:GitLab, how to host a project on GitLab, #wikimedia-gitlab on libera.chat, #GitLab on Phabricator.
This change adds a .gitlab-ci.yml using kokkuri to build and publish the blubber image.
It seems the blubber config should stay in the .pipeline folder (similar to old pipeline lib).


Going nuts trying to get a new ASUS external monitor to work via HDMI cable with my Dell laptop. The Intel Graphics control panel recognizes the connection to the external monitor, identifies it correctly by brand and model, and allows me to adjust all the settings I would expect: refresh rate, resolution, output to clone/extended/laptop only/monitor only, etc. I can even move the mouse over to the extended monitor, take a screenshot, and see what the laptop 'thinks' it's displaying to the monitor. It's just that the monitor is blank, telling me HDMI1 (or HDMI2) NO SIGNAL.
Here's what I know / have tried
- Dell Inspiron 15R 5521
- Windows 10 with latest updates (today in fact)
- ASUS VE 278 LCD monitor
- Graphics Driver is Intel HD 4000 v10.18.10.4653
- I have uninstalled the above driver, deleted driver files, downloaded new files from Intel's website, and reinstalled the driver
- I've verified that the HDMI cable and ASUS monitor are functioning properly by attaching them to a different laptop
- I've verified that the Dell laptop in question has the same problem with a different external monitor
- I have not verified whether or not the Dell laptop in question will successfully display to an external monitor using a VGA connection (I'm ordering an HDMI-VGA adapter after I hit 'post' on this post.)
- I've tried every combination of power off/on, reboot, plug cable in, turn monitor off/on. Dozens of times. To the point that my lovely fiance questions my sanity.
- Here's the weirdest symptom that I've not seen in any of the research I've done on this issue: When I changed the refresh rate to 50p hz (not 50i hz), the Asus monitor showed a distorted, flickering display. I could see a crappy image of what was supposed to be there, take a normal screen shot, etc. This only happened at 50p, not 50i, 59p/i, or 60p/i. To kick the weirdness up a notch: After uninstalling/reinstalling the driver, THIS STOPPED, so now I just have a blank monitor. I mean the weird 50p behavior in this bullet stopped. Everything else is still as described.
- Intel's diagnostic utility text file attached.
- Between uninstall/reinstall of the Intel driver, I tried plugging the monitor in while the system was using the built-in graphics capability. My laptop wouldn't recognize it at all.
Edit: Device manager 'monitors' is showing two Generic PnP Monitors. There should be just one generic PnP monitor plus the external monitor.
Edit2: Which is apparently normal as indicated by a little further research. Counter-intuitive, but normal.


Little penguin Polo likes permutations. But most of all he likes permutations of integers from 0 to n, inclusive.

For permutation p = p0, p1, ..., pn, Polo has defined its beauty — number $$(0\oplus p_{0})+(1\oplus p_{1})+\cdots+(n\oplus p_{n})$$.

Expression $$x \oplus y$$ means applying the operation of bitwise excluding "OR" to numbers x and y. This operation exists in all modern programming languages, for example, in language C++ and Java it is represented as "^" and in Pascal — as "xor".

Help him find among all permutations of integers from 0 to n the permutation with the maximum beauty.


What are you in trouble? Are you worrying about Cisco 200-125 certification test? It is really difficult to pass CCNA Routing and Switching 200-125 exam. But, you don't have to be overly concerned. As long as you choose appropriate methods, 100% pass exam is not impossible. What are the appropriate methods? Choosing Examgood 200-125 CCNA v3.0 exam subject matter is the best way. Now many IT professionals agree that CCNA Routing and Switching 200-125 exam certificate is a stepping stone to the peak of the IT industry. Examgood is the that has been known to learn IT technology.
Senior IT experts in the Examgood constantly developed a variety of successful programs of passing Cisco certification 200-125 exam, so the results of their research can 100% guarantee you Cisco certification 200-125 exam for one time. Examgood 200-125 CCNA v3.0 exam subject matter are very effective and many people who have passed a number of IT certification exams used the practice questions and answers provided by Examgood.
Thus they can obtain a better promotion opportunity in the IT industry, which can make their wages and life level improved. But in order to pass Cisco certification 200-125 exam many people spent a lot of time and energy to consolidate knowledge and didn't pass the exam. This is not cost-effective. If you choose Examgood product, you can save a lot of time and energy to consolidate knowledge, but can easily pass Cisco certification 200-125 exam. Because Examgood specific 200-125 CCNA v3.0 exam subject matter can help you 100% pass the exam.
Share some CCNA Routing and Switching 200-125 exam questions and answers below.
A network interface port has collision detection and carrier sensing enabled on a shared twisted pair network. From this statement, what is known about the network interface port?
A. This is a 10 Mb/s switch port.
B. This is a 100 Mb/s switch port.
C. This is an Ethernet port operating at half duplex.
D. This is an Ethernet port operating at full duplex.
E. This is a port on a network interface card in a PC.
A receiving host computes the checksum on a frame and determines that the frame is damaged. The frame is then discarded. At which OSI layer did this happen?
D. data link
Which of the following describes the roles of devices in a WAN? (Choose three.)
A. A CSU/DSU terminates a digital local loop.
B. A modem terminates a digital local loop.
C. A CSU/DSU terminates an analog local loop.
D. A modem terminates an analog local loop.
E. A router is commonly considered a DTE device.
F. A router is commonly considered a DCE device.
Which three statements accurately describe Layer 2 Ethernet switches? (Choose three.)
A. Spanning Tree Protocol allows switches to automatically share VLAN information.
B. Establishing VLANs increases the number of broadcast domains.
C. Switches that are configured with VLANs make forwarding decisions based on both Layer 2 and Layer 3 address information.
D. Microsegmentation decreases the number of collisions on the network.
E. In a properly functioning network with redundant switched paths, each switched segment will contain one root bridge with all its ports in the forwarding state. All other switches in that broadcast domain will have only one root port.
F. If a switch receives a frame for an unknown destination, it uses ARP to resolve the address.
A network administrator is verifying the configuration of a newly installed host by establishing an FTP connection to a remote server. What is the highest layer of the protocol stack that the network administrator is using for this operation?
F. data link
If you are still hesitate to choose our Examgood, you can try to free download part of Cisco 200-125 certification exam questions and answers provided in our Examgood. So that you can know the high reliability of our Examgood. Our Examgood will be your best selection and guarantee to pass Cisco 200-125 certification. Your choose of our Examgood is equal to choose success.If you use the training material we provide, you can 100% pass the exam. Examgood 100% guarantee you to pass Cisco 200-125 exam.


Mr. Chanek lives in a city represented as a plane. He wants to build an amusement park in the shape of a circle of radius $$$r$$$. The circle must touch the origin (point $$$(0, 0)$$$).

There are $$$n$$$ bird habitats that can be a photo spot for the tourists in the park. The $$$i$$$-th bird habitat is at point $$$p_i = (x_i, y_i)$$$.

Find the minimum radius $$$r$$$ of a park with at least $$$k$$$ bird habitats inside.

A point is considered to be inside the park if and only if the distance between $$$p_i$$$ and the center of the park is less than or equal to the radius of the park. Note that the center and the radius of the park do not need to be integers.

In this problem, it is guaranteed that the given input always has a solution with $$$r \leq 2 \cdot 10^5$$$.


|MainUser InterfaceFile MenuConnect Application...
Browser to Connect Application
on the Microsoft® Windows® and on the Mac OS® X platform you will get the system
file browser instead of the browser described on this page!
This file browser can be used to locate the executable file of an
application program which shall be connected to the
Such an application can use uDraw(Graph) as a user interface
One application is the
which is part of the distribution package.
The browser has two views, one for the directories and one for
the files in the current directory.
The current directory is the one shown in the "Selection" field.
To navigate through the directories, double-click on the elements
in the directory view.
By clicking on "..", you move back to the parent directory.
To choose a file, either select it in the file view and press the
"Connect" button or simply double-click it.
The browser beeps when you try to access a file or directory for
which you do not have permissions, or when the specified file does
After pressing connect, a
will appear where the command-line options and the connection
type can be specified.
Dialog Elements of the File Browser
Shows the filter expression currently applied to the file view.
The filter can be selected either with the "Types" option button or
by manually typing wildcards or regular (shell) expressions here.
A list to show the directories inside the current directory
(which is displayed in the "Selection" field). Double-click
on the list elements to navigate through the directories.
".." moves to the parent directory.
A list to show the executable files inside the current directory
(which is displayed in the "Selection" field).
Select one of the list elements and press the "Connect" button to
start a particular uDraw(Graph) application program.
You can accelerate this by double-clicking a file.
Used to go back to a previously visited directory or to the
home directory of the user.
Used to reduce the number of elements in the Files view.
You can choose to see all files (default), only the graph
files or only the status files.
Select this check button to see hidden files and directories.
This text entry field shows the current selection which is modified
when you browse through the directories. The browser usually suggests
an appropriate initial selection. You can also edit the "Selection"
field by hand: if the entered selection is a directory, the browser
will move to that directory, otherwise the specified file is opened
Push button to connect the executable file specified in the "Selection"
The file must exist to proceed with the load operation, otherwise
the browser beeps.
Push button to close the file browser without performing any action.
Push button to start the
online help system
with this page.


Keshi is throwing a party and he wants everybody in the party to be happy.

He has $$$n$$$ friends. His $$$i$$$-th friend has $$$i$$$ dollars.

If you invite the $$$i$$$-th friend to the party, he will be happy only if at most $$$a_i$$$ people in the party are strictly richer than him and at most $$$b_i$$$ people are strictly poorer than him.

Keshi wants to invite as many people as possible. Find the maximum number of people he can invite to the party so that every invited person would be happy.


|C H A P T E R 2|
Important Operating Information
This chapter contains important information related to the operation of your Sun MTP system. It contains the following topics:
You must set the KIXSYS and TMPDIR environment variables before performing any tasks related to Sun MTP.
The TMPDIR environment variable must be set in your system environment for Sun MTP. If the TMPDIR variable is not set, some of your transactions might not work properly.
To verify that the environment variable is set, type the following command at a shell prompt:
If no value is returned, you must set this environment variable in your region setup script. Set it to the directory where temporary files are saved.
You must include the $UNIKIX/lib directory when setting the LD_LIBRARY_PATH environment variable, otherwise the region will not start.
You only need to set the KIXBTCH environment variable if you are using standard batch. If your region uses Sun MBM for batch processing, you do not need to set $KIXBTCH. On startup, Sun MTP checks the VSAM Configuration Table (VCT), and if there is a Y in the Connect to Batch field, it does not check that $KIXBTCH is set.
When you execute the kixinstall utility, a check is performed to ensure that you are using a compatible version of the Solaris operating system. If the version of Solaris is earlier than release 8, the following message is displayed:
The way Sun MTP stores the path names to VSAM files has changed. Now, the full path name to a VSAM file is stored in its file control block. This change has the following impacts:
Changes made to Sun MTP in this release to improve the performance of main memory TSQs are documented in this section.
The Sun MTP default behavior is to write temporary storage queue (TSQ) information to disk (auxiliary storage). You can override this behavior by using the
-TM option to unikixmain at region startup. The M argument instructs Sun MTP to write TSQ information to memory (main storage). You can also use the MAIN option on the WRITEQ TS command to override the default behavior.
In releases prior to 8.0.1, when an item was written to a TSQ, Sun MTP allocated memory for the item from the pool of shared memory. When the queue was deleted, the memory was returned to the pool. The allocation and deallocation of memory for each TSQ item could incur a significant amount of memory management overhead.
The changes made in this release enable you to tailor your region's use of shared memory for TSQs.
You can reduce memory management overhead by specifying a TSQ block size at the time the region is started. This causes Sun MTP to allocate that size block at the time the queue is created and the first item is written. On subsequent writes, Sun MTP simply allocates space for an item from this block; no shared memory overhead is incurred after the first write. When the block becomes full, additional blocks are allocated as needed (requiring a shared memory allocate) to hold all of the queue items. When the queue is deleted, any blocks that had been allocated to that queue are put on a free list and can be used by other TSQs. The free list implementation removes the overhead of returning space to shared memory. Current queues, or queues created in the future, can use the memory blocks from the free list, which might even eliminate the initial allocation of a memory block if one is found in the free list. See Reallocating Blocks From the Free List.
Sun MTP now supports block sizes of 512 bytes, 1 kilobyte (Kbyte), 2 Kbytes, 4 Kbytes, 8 Kbytes, 16 Kbytes, and 32 Kbytes. If you specify the -TM option to unikixmain at startup, the default block size for TSQ data is 512 bytes. You can override the default size by also specifying the -q startup option.
The valid values for the -q option are: -q1 for 1-Kbyte blocks, -q2 for 2-Kbyte blocks, -q4 for 4-Kbyte blocks, -q8 for 8-Kbyte blocks, -q16 for 16-Kbyte blocks, and -q32 for 32-Kbyte blocks.
The following table shows the results of using various combinations of the startup options and the WRITEQ TS command with the MAIN and AUXILIARY options.
TSQ items specified in the WRITEQ TS...MAIN command are written to in-memory queues using the default 512-byte block size, or a size large enough to hold the item. Other TSQ items are written to disk.
TSQ items specified in the WRITEQ TS...MAIN command are written to in-memory queues using the block size specified in the -q option, or a size large enough to hold the item. Other TSQ items are written to disk.
Sun MTP must allocate a new block of memory for TSQ items if there is no space in the existing blocks allocated to the queue, and there are no free blocks in the free list. If the record size is greater than the region's configured block size, a size large enough to hold the record being stored is allocated.
Sun MTP never splits items across memory blocks. Therefore, if a 100-byte item is being written, and no memory blocks allocated to the queue have 100 bytes available, a new block is allocated to contain the item. Depending on the size and mix of items written to a queue, some virtual address space in the memory blocks might not be used. For example, if a 512-byte block size is used, and the item size is 100 bytes, five 100-byte items, or 500 bytes can be written to the block. This leaves 12 bytes within the block that cannot be used, unless an item of 1 to 12 bytes is written.
Sun MTP maintains separate free lists for each of the different block sizes. Blocks are allocated from the free lists in the following ways:
Sun MTP correctly handles any size queue item, up to the maximum size of 32 Kbytes. If an application attempts to write a queue item greater than 32 Kbytes, an error is issued.
Before choosing a block size, you must analyze the application's use of temporary storage queues. Consider the number of queues and the total size of each to determine the total amount of space required and the best queue size.
The following examples describe why certain block sizes are appropriate for certain application environments:
The kixdump -q command displays information about the active temporary storage queues, including the queue name, the queue type (auxiliary or main), the total size of the queue, the last item read from the queue, the last item written to the queue, the number of active items, and the first available item number. If the queue type is main, additional information about the data blocks allocated to the queue is also displayed. This includes the address of the data block, the pointer to the next data block for the queue, the pointer to the available or free space in the block, the number of bytes available in the block, the maximum item size (in bytes) in the block, the count of items contained in the block, the total unused space (in bytes) in the block resulting from rewrite activity, and the block size in bytes.
The TSQ enhancements made in this release increase the use of operating system semaphores. If your runtime environment is set to use semaphores (the Sun MTP default), rather than Solaris mutexes, you or your system administrator must review the semaphore values in the /etc/system file to ensure that they are sufficient. TABLE 2-2 describes the affected semaphores and provides examples for setting the correct values.
Sun MTP dynamically creates a TSQ the first time it is named in a WRITEQ TS command. You can also predefine TSQs in the Temporary Storage Table (TST); these queues can be local or remote. There is no limit to the number of TSQs you can define in the TST. Each TSQ can contain 32,768 records, and each record can contain up to 32,768 bytes of data.
Because main temporary storage requires more memory than auxiliary storage, use it primarily for small queues that have short lifetimes or are accessed frequently. If your application writes large amounts of data to TSQs, and the data have a relatively long lifetime or are accessed infrequently, consider using auxiliary temporary storage.
TSQs written to auxiliary storage can be defined as recoverable, but not queues in main storage.
If an attempt is made to write to an ESDS file that is larger than 4 Gbytes, Sun MTP now returns an error to the calling program.
If the ESDS file is 4 Gbytes in size or greater, INVREQ is set and RESP2 is set to 1.
Limitations on the number of TCP/IP and SNA sessions that can exist for a region were not documented.
The number of TCP/IP sessions is controlled by the TCPRTERM and TCPSTERM environment variables.
The number of SNA sessions are controlled by the DCLRTERM and DCLSTERM environment variables.
When configuring terminals in the 3270 Devices portion of the Terminal Control Table, be aware that the Host Name and Port Number fields on the Host & Port screen are applicable only for terminals that access the region by means of the TPS PU4/5 server software (unikixtrin process). These fields are ignored for all other terminal definitions.
The behavior of socket client connections has changed. The socket protocol specifies that the socket client connect and then send the initial socket message. If this initial send is never done, the socket remains in the control of the unikixsock process forever, or until the socket client disconnects. This can cause the region to behave abnormally.
A new environment variable, KIXSOCKET_TIMEOUT, enables you to specify the amount of time to wait for the socket data before disconnecting the client. You must set this environment variable before starting the Sun MTP region. For example:
The value 10 indicates that the unikixsock process will wait 10 seconds for the socket data before disconnecting the client.
In Sun MTP releases prior to Release 8.0.0 patch 7, the kixbms utility incorrectly generated the placement of the named attribute fields in COBOL and PL/I copybooks.
For example, you might have coded your programs (PLI and COBOL) that address map attribute field names to compensate for this:
Now, if you regenerate the map copybook using kixbms, you will also need to change your program reference to map attribute fields. For example, you would have to change the above example to:
If you do not use the above style of qualified data-name referencing of map attribute field names in PL/I or COBOL programs, regenerating a map copybook should not require any programming changes.
The kixtran utility has changed to accommodate different user permissions. The kixtran utility creates an error file in the $KIXSYS directory named unikixepi.err.pid, where pid is the process ID of the kixtran process. If the user executing the kixtran utility does not have permission to write to $KIXSYS, the utility tries to create the file in the user's current directory. If it cannot, the errors are sent to standard error (stderr).
Caution - Make sure to set the appropriate permissions on Sun MTP system transactions. Sun MTP provides transaction security by means of the Program Control Table (PCT) and the Sign-On Table (SNT). Or, you can use Sun MSF external security management to secure your transactions. Refer to the Sun Mainframe Transaction Processing Software Administrator's Guide for information about both security models.
In prior releases of Sun MTP, when .bms, .sgu, and .map files were generated by the Screen Generation Utility (SGU), the file permissions were set to read/write for the owner (user who started the region) and read for the group; no permissions were granted for others. Now, the file is created with the permissions allowed by the user that started the region. For example, if the user that started the region has a umask of 003, the file will be created with the following permissions: read/write for owner and group, and read for others.
A dataset that is defined as remote in the File Control Table (FCT) will not be counted as an alias. A remote dataset contains a value in the SysID field on the Remote Characteristics screen of the FCT.
A dataset whose Filename field is blank in the FCT is not counted as an alias.
Previously, the application name configured in the System Initialization Table (SIT), was used as the prefix on all external security manager (ESM) resource access check calls. Because this approach was incompatible with how CICS prefixes resource names with its ESM (RACF), customers with existing CICS/RACF-prefixed resource names would not be able to directly migrate to Sun MTP Secure.
Now, the resource name prefix is formed by taking the UNIX user ID that started the region as the prefix and adding a period (.) to it.
If you are using Sun MTP and Sun MBM together, and you find it necessary to completely restore the region's $KIXSYS directory from a backup, you must also resynchronize the subsystem and region so that they can reconnect. Follow this procedure:
1. Shut down the Sun MTP region.
2. Restore the $KIXSYS directory.
3. In Sun MBM, start BAM.
4. On the BAM main menu, choose option 3, Applications & Subsystems.
5. On the Applications & Subsystems menu, choose option 4, Update a Subsystem.
6. Enter the number of the subsystem to update.
7. On the Update menu, choose option 2, Change MTP Region.
8. Type the path name of the $KIXSYS directory and press Return.
If the screen already displays the correct path name, just press Return.
9. When the confirmation screen is displayed, press Return.
10. Exit BAM.
11. Restart the Sun MTP region.
This section describes products or functionality no longer supported by Sun MTP.
Refer to the Sun Mainframe Transaction Processing Software Configuration Guide for information about configuring recovery.
Use the following conversion tables for either double-byte character sets (DBCS) or single-byte character sets (SBCS). The tables are located in the $UNIKIX/lib directory.
The following tables, which are also located in the $UNIKIX/lib directory, provide support for the Euro symbol:


#ifndef _COMMON_JANKPAD_
#define _COMMON_JANKPAD_

#include "types.h"
#include "macros.h"

#define PI	3.1415927f	//3.14159265358979323846
#define enemyCount 18	// Total number of enemy
#define maxEnemy 	32 // Max number of enemy on screen
#define maxCollision	32	// number of segment to check for collision

#endif //_COMMON_JANKPAD_


- 15th Nov 2023
- 21:51 pm
The Map interface in Java represents a collection of key-value pairs, with each key paired with a matching value. This data structure enables efficient value retrieval based on their related keys. The Map interface does not support duplicate keys and only one null key with multiple null values.
Key Features Map in Java
The Map interface's key features are as follows:
- Key-Value Association: Each key in the Map is assigned a value. Keys act as unique identifiers and are used to get the values associated with them.
- Implementation Training: Java supports several Map implementations, including HashMap, TreeMap, LinkedHashMap, and ConcurrentHashMap, each having unique attributes and use cases.
- Methods and Operations: Map interface methods such as put(key, value), get(key), remove(key), containsKey(key), and size() enable insertion, retrieval, deletion, and key existence testing.
It allows you to iterate over entries by utilizing the keySet(), entrySet(), or values() methods.
Because of its excellent O(1) average-case performance for common operations, the HashMap implementation is frequently used for general-purpose key-value storage. TreeMap keeps items in sorted order, but LinkedHashMap keeps insertion order.
Map interfaces are widely used in applications such as databases, caching systems, and whenever key-based data retrieval or association is required. They provide a versatile and efficient method of storing and managing key-value pairs in Java.
Characteristics of Map interface in Java
The Map interface in Java has numerous distinguishing features:
- Key-Value Pairs:
Maps are made up of key-value pairs, with each key corresponding to a certain value.
The linked value is accessed via the key, which must be unique inside the Map. Multiple keys, however, can map to the same value.
- Key Uniqueness:
Each key in a Map is unique; duplicate keys are not permitted. If an existing key is added, the prior mapping is replaced with the new one.
- Null Key and Multiple Null Values:
A Map can have a single null key.
It may store numerous null values and correlate duplicate null values with distinct keys.
- Variety of Implementations:
Java provides a number of Map interface implementations, each with its own set of attributes, performance, and behaviors.
HashMap, TreeMap, LinkedHashMap, and ConcurrentHashMap are examples of popular implementations.
- Iterating Over Entries:
Using methods like entrySet(), keySet(), or values(), map interfaces allow iteration over entries, keys, or values.
- Efficient Data Retrieval:
Maps allow for the quick retrieval of values based on their keys, making them a more efficient way to store and access key-based data.
- Flexibility and Use Cases:
Maps are commonly employed in scenarios requiring associative arrays, key-value pairs, or dictionary-like structures, such as databases, caching mechanisms, or applications requiring quick data retrieval based on keys.
Understanding these qualities aids in the selection of the suitable Map implementation depending on individual use cases, performance constraints, and data store and retrieval functionalities in Java programs.
Important methods in Java Map
Below are some important methods in the Java Map interface:
- put(K key, V value):
Inserts a key/value pair into the map. If the key already exists, the previously associated value is replaced with the new value.
Returns the key's previous value or null if the key was not previously existent.
- get(Object key):
- Returns the value associated with the given key. If the key is not found in the map, it returns null.
- remove(Object key):
Removes the key and its corresponding value from the map.
Returns the value associated with the deleted key, or null if the key was missing.
- containsKey(Object key):
Determines if the map includes the supplied key. If the key exists, returns true; otherwise, returns false.
Returns a Set view of all the keys contained in the map. This set allows iterating through the keys.
Returns a Set view of the key-value mappings in the map. Each entry is represented as a Map.Entry containing both the key and its associated value.
Returns a collection view of all the values present in the map. This collection allows iterating through the values.
These methods are essential for maintaining and altering data within a Map, allowing for key insertion, retrieval, and removal, as well as offering views of keys, entries, and values for iterating over the map's content.
Types of Maps in Java
In Java, various Map implementations are available, each designed with specific characteristics and purposes. Here are some types of Maps:
HashMap is a Java implementation of the Map interface that stores key-value pairs in a hash table. It allows for quick access and retrieval operations, with an average-case complexity of O(1) for typical operations like put and get. HashMap supports one null key and numerous null values, does not keep insertion order, and is unsynchronized, making it inappropriate for concurrent settings. Because of its efficiency and speed in discovering and manipulating items, it is commonly used for general-purpose key-value storage, making it excellent for applications requiring quick retrieval of data based on keys.
TreeMap is a Java implementation of the Map interface that stores data in a Red-Black tree. It keeps elements in sorted order based on keys, allowing for quick retrieval of sorted elements. TreeMap does not support null keys, but it does support multiple null values. It provides range views for key intervals and is especially handy when a sorted collection of key-value pairs is required. Its ordered nature makes it useful for applications that need data retrieval in sorted order. However, because to the added sorting complexity, its operations are somewhat slower than HashMap.
In Java, LinkedHashMap is a Map interface implementation that extends HashMap. It preserves the order of insertion, allowing for predictable iteration order in accordance with the insertion sequence. Each item keeps a doubly linked list, which ensures that the order in which elements were put is kept. LinkedHashMap, like HashMap, allows for one null key and numerous null values. It's useful when iteration order is critical, since it ensures elements are accessible in the same order they were put. This approach combines the rapid access of a hash table with the predictable iteration order, making it appropriate for applications where insertion order must be maintained.
ConcurrentHashMap in Java is a synchronized and thread-safe Map interface implementation built for concurrent access. It enables numerous threads to conduct read and write operations concurrently without blocking, resulting in high concurrency. ConcurrentHashMap does this by segmenting the map and enabling various threads to access separate portions concurrently. It avoids locking the entire map for read operations, which improves efficiency and performance in concurrent situations. It allows some changes to happen without synchronization, increasing throughput and making it an excellent choice for applications that require thread safety and performance in cases where many threads are altering the map at the same time.
Each Map implementation has unique features and benefits, allowing developers to select the best one depending on needs like as efficiency, concurrency, ordering, or particular use cases requiring enums. Understanding the features and behavior of different Map implementations is critical for picking the best-fit Map for a particular job.
Here are various types of maps in Java along with brief explanations in a tabular format:
|Implements the Map interface using a hash table, offering quick retrieval and insertion. Allows one null key and multiple null values.
|Implements the NavigableMap interface using a Red-Black tree, maintaining elements in a sorted order. Useful for range-based queries and sorted key-value pairs.
|Extends HashMap with an additional feature of maintaining the insertion order, useful for iteration in the order in which entries were added.
|Implements a thread-safe map using a hash table, providing concurrency without the need for external synchronization.
|Specifically designed to use enum type as keys, offering a highly efficient map implementation when keys are enum constants.
|Implements a hash table using weak keys, allowing keys that are only weakly referenced, useful in scenarios where cached entries are no longer needed.
These different map implementations in Java serve specific purposes and have unique features catering to various requirements. Choosing the right map type is crucial based on factors such as performance, iteration order, concurrency, and the nature of keys to be used within the map.


Nanami is an expert at playing games. This day, Nanami's good friend Hajime invited her to watch a game of baseball. Unwilling as she was, she followed him to the stadium. But Nanami had no interest in the game, so she looked around to see if there was something that might interest her. That's when she saw the digital board at one end of the stadium.

The digital board is n pixels in height and m pixels in width, every pixel is either light or dark. The pixels are described by its coordinate. The j-th pixel of the i-th line is pixel (i, j). The board displays messages by switching a combination of pixels to light, and the rest to dark. Nanami notices that the state of the pixels on the board changes from time to time. At certain times, certain pixels on the board may switch from light to dark, or from dark to light.

Nanami wonders, what is the area of the biggest light block such that a specific pixel is on its side. A light block is a sub-rectangle of the board, in which all pixels are light. Pixel (i, j) belongs to a side of sub-rectangle with (x1, y1) and (x2, y2) as its upper-left and lower-right vertex if and only if it satisfies the logical condition:

((i = x1 or i = x2) and (y1 ≤ j ≤ y2)) or ((j = y1 or j = y2) and (x1 ≤ i ≤ x2)).

Nanami has all the history of changing pixels, also she has some questions of the described type, can you answer them?


I started a book yesterday that my friend Marco mentioned on his blog, Notes from Normalcy. Leonard Cohen's Book of Longing. I bawled my eyes out reading it. Maybe it was because I was sick, or because there was a full moon or maybe just because the writing struck bone. Writing rarely does that to me anymore.
I'm tired, tired tired. My body is fighting something. I'll let it fight while I sleep.


unreal engine expert ( for long term)
Budget ₹750-1250 INR / hour
more info will b shared in chat
3 freelancers are bidding on average ₹6042/hour for this job
Are you looking for someone who can turn your Game idea into reality? Then you have come to the right Place. I am a professional game developer with an experience of over 5 years of Game Development on HTML, CSS, Java More
I have great experience using Unreal Engine. I already have a game launched on Steam. Visit my Linkedin for more about my experience in the field.


FortiGate Next Generation Firewall utilizes purpose-built security processors and threat intelligence security services from FortiGuard labs to deliver top-rated protection and high performance, including encrypted traffic.
Guest users in FSSO are those who are unknown to the Windows AD or Novell network and servers that do not logon to a Windows AD domain. To enable guest access in an FSSO security policy, an identity-based policy assigned to the built-in user group SSO_Guest_Users is added.
However, sometimes unauthenticated users are not considered guest users. When the FortiGate receives traffic that has not been identified by FSSO, it checks first whether the traffic matches any policy without guest access enabled. If any such policy exists, above or below the guest policy, the traffic will be allowed or denied accordingly as unauthenticated user. Only if no such policies exist will the traffic be identified as guest and allowed through the guest policy.
Policy #1: Allow authenticated users out to the internet. Policy #2: Allow FSSO Guest users out to the internet. Policy #3: Deny all traffic to the internet.
In this case, traffic that is not authenticated to FSSO will match policy #3 and be blocked, since this policy does not have any authentication enabled. If policy #3 were removed, then the traffic would be identified as guest and allowed through.


I am preparing to start building a Mill Creek 16.5 from plans, not from a kit, so I'll be cutting my own panels out of the plywood sheets instead of using pre-cut ones.
I've been doing quite a bit of research before starting and wanted to aske if it is reccomended to stagger where the joints are in the panels (like reversed) so that they don't all line up.
I've seen it done both ways so, i have no idea what is correct.
Is this a serious structural issue or am I worried about nothing? I'd hate to have them line up and have my bow fall of sometime.
The appearance of the location of the seams/joints is not an issue since I will be painting the hull.
thanks for the help/advice,
West Sacramento, CA


About Henry Lim
- 👋🏻 I am Henry Lim. My Chinese name is 林亨力, and it is pronounced as lín hēng lì.
- 🍼 I was born and raised in Johor Bahru, a city located at the southern tip of the Malay Peninsula.
- 🇩🇪 I am currently working for a tech company as a frontend engineer in Berlin, Germany since early 2022.
- 🇹🇭 I was working for a software house as a front-end web developer in Bangkok, Thailand from 2018 to 2021.
- 🇲🇾 I taught college students coding fundamentals and web development at The One Academy in Malaysia back in 2018.
- 🥑 I am a Google Developer Expert (GDE) in Web Technologies since 2018. I was one of the youngest GDE in the region.
- 💻 This website is built using Nuxt.js and TailwindCSS.
- 🛠 I don't like jQuery and Bootstrap, but for some reason, I like TailwindCSS (JIT is awesome!).
- 😷 I developed a COVID-19 dashboard for the people of Malaysia as a pro bono project. Over four million users visited the page on the launch month. It was featured on major news outlets in Malaysia.
- 💉 I developed the Malaysia Vaccine Tracker Twitter Bot. It has more than 13,000 followers including prominent politicians, journalists, and more.
- 🎛 I developed a remote control web app for Google Slides called Remote for Slides. Used by hundreds of thousands of people worldwide. It was featured on The Next Web.
- 🎖 I won a Moto 360 smartwatch and a Raspberry Pi from Firebase Static Showdown Hackathon in 2016.
- 🕹 I won a free ticket to Google I/O 2017 from a Firebase's Alternate reality game in 2016.
- 🏆 I won a Google Wifi and a few hundred dollars of Google Cloud Credit from the Firebase AppFest Hackathon Malaysia in 2017.
- 🤪 I love to build useless stuff like How Many Days Since Henry Got His Haircut, Nothing PWA, and more.
- 💈 I haven't had a haircut for more than
300 days1 year (since December 2020).
- 🍎 I love Google, but I use iPhone and MacBook (Don't ask me why).
- 🚀 I love aviation and rocket science. I used to play Microsoft Flight Simulator X on my old, slow laptop in the past. Now I am playing Microsoft Flight Simulator 2020 on my Xbox Series S.
- 🛩 I have a very long list of every flight I've ever been on, since birth. And I flew with AirAsia more than 50 times.
- 🧳 I once flew to San Francisco, and Hong Kong Airlines left my luggage on another side of the world.
- 🦖 I love T-Rex, and I once wore a T-Rex costume at the hottest place on earth: Death Valley National Park.
- 🐥 I love to share weird stuff on my social media, like this, this, and this.
- 👕 My wardrobe is full of free t-shirts and hoodies from tech conferences.
- ☕ I love money (Who doesn't?). You can support me on Patreon, this will motivate me to build more cool stuff.
- 🇲🇾 Malaysian food is better than Singaporean food.
- Student nets elusive Firebass for ticket to Google’s I/O 2017 · Digital News Asia
- 解码通关 · Oriental Daily 東方日報
- Tech savvy guys step up · The Star
- MOH launches COVIDNOW portal, provides more granular COVID-19 data including vaccine adverse effects · SOYACINCAU
- Khairy Launches Covid-19 Dashboard To 'Lift Veil Of Secrecy' · CodeBlue
- COVIDNOW: The New National COVID-19 Statistics Website Is Now Live · Lowyat.net
- 4年轻人不收费 义务创建卫部新网站COVIDNOW · Oriental Daily 東方日報
- 卫部 'COVIDNOW' 幕后功臣 4年轻人分文不取义务创建 · Sin Chew Daily 星洲日報
- Heroes lift Covid 'veil of secrecy · New Straits Times
- Promoting behavioural change · The Star
- COVIDNOW: The Team Behind Malaysia’s Coronavirus Data Transparency · Tatler Asia
- COVIDNOW portal reflects 'whole-of-society' approach · New Straits Times
- Developers of COVIDNOW website committed to helping pro bono as long as they’re needed · Malay Mail
- 新冠又一年 COVIDNOW质量不逊于外国 卫生部: 国人应自豪 · China Press 中國報
- CPRC: COVIDNOW提供基准 或公布更多疾病数据 · Sin Chew Daily 星洲日報
- COVIDNOW提升透明度 人民轻易掌握数据信息 · The Malaysian Insight
- COVIDNOW an unprecedented level of transparency for govt · The Malaysian Insight
- COVIDNOW: Making Sense Of The Pandemic · CodeBlue


Polycarp is designing a level for a game. The level consists of $$$n$$$ segments on the number line, where the $$$i$$$-th segment starts at the point with coordinate $$$l_i$$$ and ends at the point with coordinate $$$r_i$$$.

The player starts the level at the point with coordinate $$$0$$$. In one move, they can move to any point that is within a distance of no more than $$$k$$$. After their $$$i$$$-th move, the player must land within the $$$i$$$-th segment, that is, at a coordinate $$$x$$$ such that $$$l_i \le x \le r_i$$$. This means:

- After the first move, they must be inside the first segment (from $$$l_1$$$ to $$$r_1$$$);
- After the second move, they must be inside the second segment (from $$$l_2$$$ to $$$r_2$$$);
- ...
- After the $$$n$$$-th move, they must be inside the $$$n$$$-th segment (from $$$l_n$$$ to $$$r_n$$$).

The level is considered completed if the player reaches the $$$n$$$-th segment, following the rules described above. After some thought, Polycarp realized that it is impossible to complete the level with some values of $$$k$$$.

Polycarp does not want the level to be too easy, so he asks you to determine the minimum integer $$$k$$$ with which it is possible to complete the level.


Windows 8 Uses Metro Interface and all apps are created to suit the Interface. It tickles me again to try making a Windows 8 App with the Official Microsoft’s Developer Tool- Visual Studio Express 2012. Today, We’ll be learning the basics of the Interface Builder and other necessary information. I’ve just Installed Windows 8 on a Virtual Machine so I won’t be making a lot of Windows tutorials after this. You can buy the Software or get the trial version of Microsoft Visual Studio Express 2012 from here. Watch the video below and let me know if you have any questions.


Little girl Tanya is learning how to decrease a number by one, but she does it wrong with a number consisting of two or more digits. Tanya subtracts one from a number by the following algorithm:

- if the last digit of the number is non-zero, she decreases the number by one;
- if the last digit of the number is zero, she divides the number by 10 (i.e. removes the last digit).

You are given an integer number $$$n$$$. Tanya will subtract one from it $$$k$$$ times. Your task is to print the result after all $$$k$$$ subtractions.

It is guaranteed that the result will be positive integer number.


Udemy Low Poly Landscapes
- [Numpad .] - Frame selected objects.
- [Home] - Frame all.
- [X],[Y],[Z] - Constrain transform along axis.
- [Shift X],[Shift Y],[Shift Z] - Constrain transform along plane.
- [F3] - Opens command palette. Can search by name.
- [Tab] - Switch between object and edit modes.
- ,, - Switch between vertices, edges and faces modes.
- [L] - Select linked objects.
- [P] - Separate meshes into different objects.
- [J] - Join separate objects into a single one.
- [Ctrl X] - Dissolve selected.
- [Ctrl Alt Numpad 0] - Move selected camera to current view.
- Framing objects
- Moving camera around
- Adding/removing objects
- Transforming objects
- Creating/Destroying workspaces
- Creating/Destroying docked windows
- Shading view
- Shader node editor
- Creating materials
- Using existing materials
2. Basic Modelling
9. Basic House
Blocking out the shapes to have an idea before adding detail.
Using sketches and 2d images as references makes it easier.
Adding image editor to the workspace is interessant.
Start out of a box, scale to proper size.
Multiple ways to create the pointy top. Extrude top face (Key [E]) and merging top vertices together (Key [M]).
Overlays -> Statistics: Shows vertex/faces etc are selected.
Scale down bottom face to give a more cartoony cottage shape.
10. The Base & Trees
Make sure you are in object mode when adding new shapes.
Separate objects by selecting linked mesh if they are merged together by accident.
Add cilynder and select amount of vertices before closing the add menu. That's permanent.
To create "bowl" shape on top: Extrude top face, then scale it down to create curved surface.
After moving/rotating object, use local transforms to transform object without deforming it
Add trees by combining cilynders, cones and icospheres.
11. Loop Cuts
Toggle X-Ray with [Alt Z]. Makes it easier to edit objects.
Box-select vertices to adjust height. Or [F3] -> Select edge-loop. [Alt Left Click] Also select edge-loops.
Loop cuts [Ctrl R] objects to create a new loop around the object. Ideally work out with rect objects for that reason.
[Right-click] to cancel edge-loop position and set on default positions.
Delete edges -> Also removes the faces they compose.
Dissolve edges -> Delete edges but keep the faces.
12. Separating Objects
When selecting faces in x-ray mode, you need to click closer to the center point.
Select roof faces, and duplicate using [Shift D]
Separate them using [P]
13. The Mirror Modifier
Modifiers change object without actually applying changes to the mesh. Can be configured without losing information.
Stack on top of each other.
Modifiers act relative to the origin (local coordinates).
With tool settings enabled (view->tool settings) you can enable options menu.
In options menu, you can change so transform only affect object origin. Use this to move object origin around.
"Mirror Object" options let you select a different object to use it's origin as reference.
Clipping prevents object from overlapping past the mirror. Also glues vertices that touch the mirror. Disable to unglue.
14. More Mirrors
You can mirror in more than one axis with the same mirror.
Toggle Local View (Pressing [Numpad /]) to edit single object centered and hiding other objects.
Since top part of the house is kinda simetric, add X and Y mirrors
Knife tool [K] to create new edges. If cut wrong and create new vertices, can use merge [M] to fix it.
15. The Solidify Modifier
So far rooves are planes. To add volume, another modifier: Solidify
Thickness and Offset adjustable.
Visibility can be toggled.
On cage - Show vertices as if modifier is applied. Helps selecting original vertices, but as if they were in the final position. Also work with mirror, but commands are still relative to the actual vertice.
Solidify values are scaled with the object. Applying the scale makes the object with scale 1,1,1. [Ctrl A]
Applying modifier changes the mesh permanently. Good for making further changes without the modifier constraints.
16. Destructive Modelling
Small shifts into edges and vertices to increase randomness.
Select vertes in-between two vertices: [Ctrl Click]. Also work for edges and faces.
Apply mirror modifier to edit asymetrically.
Applying modifier is a destructive modelling since you lose your original model.
17. Modelling the Beams
Apply same techniques as before: Add new shape, start from cube, scale and divide loops etc. Duplicate to add another beam to the top part of the house.
Rotate object in object mode if you intend to use local axis when moving things locally.
Make sure object parts are not sticking out of the model while doing so.
18. Efficient Modelling
Create remaining beams using cube extrusion technique.
Be careful with double extrusion, this creates faces with area 0.
Select whole mesh, press [M] to merge -> Merge by distance.
Scaling can distort shapes. Still possible to scale by the normals. Select shape then [Alt S]
Enable normal visualizations: Overlays -> View Normals
[Shift N] to re-calculate normals. Possible to flip then inside.
19. The Knife Tool
Use knife tool [K] to cut out window and door shapes into the house faces.
Avoid non-planar N-gons. When they get triangulated things can get weird.
While cutting, you can press [E] to start out a new shape before applying.
Cut out faces to divide n-gons into quads if you plan to delete portions of a face. Enforce triangulation happens in a controlled manner.
20. The Window Frames
Multiple ways, like extruding out multiple times until achieving the desired shape.
Duplicate [Ctrl D] window and door edges like we did with the roof. Then extrude [E] and scale [S] to create volume.
When using volume modifier, make sure normals are facing in the right direction.
If whole shape is duplicated, you can delete Only Faces to keep the edge loop.
Face direction visualizations, show blue when facing you, red when facing backwards.
21. The Door
Just exercizing what I learned in previous lessons.
22. The Pipe
Extrude + right click to cancel movement, then Scale to make a shorter connection.
Extruding + moving or rotating the extruded face can cause distortion.
Can get better results with bevel command. Create rough shape then [Ctrl B] on edge-loops to create intermediates.
To create a pipe-joint from a edge-loop, bevel->extrude->scale by normal
Creating the tip with same technique. Scaling top vertices down to 0 -> keep topology, can still select face-loop.
Merge vertices by distance when finished.
If it does not look low poly enough, select even edge-loops alongside the desired axis, and [Ctrl X] to dissolve them.
23. The Lamp
Pressing Z to swap around render modes
Instead of extruding and then scaling a face down, we can use inset instead [I]
If multiple faces are selected, it can look weird. Pressing [I] again will toggle to individual face mode.
Then extrude the inset faces and scale them down by normal.
3. The Landscape
24. The Triangle Tree
Hide objects with [H] or all objects with [Shift H] and Unhide with [Alt H]
Sculpting tab adds a lot of new tools. Multiple brushes e.g. grab brush.
Three categories of brushes, blue red and yellow.
Blue add or subtract from the mesh. Red smooth out things, and yellow deforms it.
Holding shift activates smooth brush. You can change smooth intensity in that brush properties.
Decimate modifier reduces the face count. Good to add variation to modified shapes.
Creating 3 random blobs from ico spheres to make the tree.
Select object, press [.] will highlight the object in the outliner.
Holding [Ctrl RMB] can let you select objects using the lasso selection.
[M] to move object into collection.
Collections can be moved around and nested in the outliner.
Labelling and naming objects, and organization is a matter of how your work pipeline work.
26. The Round Tree
Creating branch in trunk: Extrude multiple faces and round things up a bit.
Alt: Extrude one face, and use loop cut to make it rounder.
Proportional editing [O] lets you drag adjacent vertices when dragging. Circle of influence can be adjusted with [Mouse Wheel]
Remesh: Useful when sculpting and do not have enough vertices. Use voxels.
[Shift A] to scale voxels and have a preview of their sizes.
Use decimate to bring the vertex count back to close the original.
27. The Base
Separate the top face from the bottom. Select center face and press [Ctrl +] to grow selection. [Ctrl -]] to shrink selection.
Boolean modifier to cut out a hole to make the pond. Need another shape to be the cutter.
Object properties in the cutter -> Viewport Display -> Display as: Wireframe. Now you can see the cut.
Can click on the camera icon in the outliner window to not render the cutter.
If modifier is not applied, make sure everything is selected (including cutter) when moving shapes around.
29. Paving & Rocks
Snapping tools to snap one object into the other. E.g. face, rotation to target.
Can snap individual vertices as well.
30. Grass & Plants
[Alt D] creates an instance copy (Duplicate Linked). Changes made in any instance is mirroed to the original object.
Select -> Select linked to select all objects created from linked duplicates.
Can use plane and intersect boolean to create water surface.
31. More Plants
Make origin in the base of the leaf, and link duplicate leaves make creating the plant shape faster.
[Shift S] helps setting the cursor to a specific vertex or selection. Then move origin to cursor position.
[Shift R] repeats last rotation action
Create face on edge-loop: [F]. With edit mode and face mode selected, you can right click object and "poke faces" to subtivide n-gons.
Holding control to snap.
Hint from design: To fill up spaces nicely, use around 3 copies of an object.
33. Adding Color
Back to shading tab.
Picking right color right away can be tricky due to lighting. Over time practice will help predict results.
[Ctrl L] to link object materials.
Creating around 3 color variations for repeated objects to make it more random.
Change roughness to make it more/less metalic.
34. Adding Multiple Materials to Objects
Create new material slots in the object.
Assign material slot by selecting faces in edit mode.
Change emission to make glowing windows and lamp.
For the ground part to work, we need to apply the decimate modifier to assing material to specific faces.
35. Cyvles vs Eevee
Pressing [Keypad 0] shows a preview of the render in the camera perspective.
Render properties tab to change render configurations.
Eevee: More flat, faster local lighting rendering.
Cycles: Ray-tracing based rendering.
We can enable some things to make Eevee look more realistig. E.g. enable Bloom to make lighting look better.
Add denoiser to make Cycles look better (takes more time).
Material preview mode uses Eevee, but has lighting setup.
In shading editor, select World instead of object to change world material.
We can use HDRI to light up scenes. Can get some from polyhaven.com.
[Shift A] to add an environment texture and hook it up to Background.
36. Adding Lights
Disable background added by HDRI: Render properties -> Film -> Transparent
Adding point lights to windows and lamp can simulate light for Eevee.
Sun light to add shadows and light to all elements.
Play around with light properties to achieve desired effect.
37. Creating Atmosphere
Using a grayish HDRI helps with settling with object colors.
Picking up more vibrant colors help to add atmosphere. Nice when sun matches the scene sun position.
Sun color change mood. Early morning: blueish, late evening: orangeish.
Adding more suns to give different moods.
Blue light technique keeps things darker, but still allows you to see.
Round some edges using bevel, and use bevel and knife tool to create gaps in the ceiling.
[G G] will do edge-slide when editing vertexes.
[Ctrl B] to start bevel on vertex, then [V] to take a chip off the edge. [Ctrl Shift B] does the same.
When selecting 2 opposite vertices in a newly created face, we can press [J] to join those vertices and split the face in two.
39. Render & Composition
View options -> View Lock -> Lock camera to View -> When pressing [Numpad 0] you can drag camera around with the view. Makes it easier to position camera.
Possible to add background using compositor. Compositing tab and use nodes.
Can add a background with an image node, and mix it with Mix node. Add viewer node to preview the result. Use render alpha as factor to blend images.
Pressing [M] can "Mute" a node and see the difference it makes.


A framework is provided to develop R packages using 'Rust' <https://www.rust-lang.org/> with minimal overhead, and more wrappers are easily added. Help is provided to run 'Cargo' <https://doc.rust-lang.org/cargo/> in a manner consistent with CRAN policies. Rust code can also be embedded directly in an R script. The package is not official, affiliated with, nor endorsed by the Rust project.
|Author||David B. Dahl [aut, cre] (<https://orcid.org/0000-0002-8173-1547>)|
|Maintainer||David B. Dahl <email@example.com>|
|License||MIT + file LICENSE | Apache License 2.0|
|URL||https://github.com/dbdahl/cargo-framework (repository) https://raw.githubusercontent.com/dbdahl/cargo-framework/main/cargo/inst/doc/Writing_R_Extensions_in_Rust.pdf (paper)|
|Package repository||View on CRAN|
Install the latest version of this package by entering the following in R:
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.